蓝点通用管理系统 > 教程

阅读更多教程类文章 ≫

第一章 简介

 

蓝点通用管理系统,是什么?

蓝点通用管理系统 ,是一个可自定义数据管理、流程审批、信息发布等功能的,简单灵活的在线管理系统。

系统可安装到单机、局域网、云服务器/虚拟主机等环境,通过电脑或手机浏览器登录操作。

系统提供了自定义字段、表单、流程、版式等自定义能力;提供了六种视图作为数据展现和统计分析功能;提供了消息/短信/微信/邮件/评论/提醒等沟通功能;提供了信息中心用于发布通知/文档/新闻,或用作论坛;提供了灵活的权限管理机制;提供了自动发送报表/图表、定时流程、自动结转、自动备份等自动化功能;提供了导入导出、微信接入、API接口等对外交互能力。

通过导入或设计模板,系统可实现诸如客户管理、OA系统、ERP系统等各种管理需求。


 

系统界面概览

系统主界面如上图所示,分三个区域:

1. 顶栏。主要包括Logo区、功能图标区、搜索条等。可在系统设置中更换Logo,修改系统名称,添加自定义图标等;

2. 左侧栏。主要放置一些导航性版块或搜索版块。点击B处图标,可自定义左侧栏,添加新的版块、隐藏版块,或调整版块顺序等。调整好之后可以保存为版式,并可为不同角色设置不同的默认版式。点击A处图标,可隐藏/显示左侧栏。

3. 主窗口区。这里默认显示的是首页,首页的版块也可以自定义添加、拖动或删除。点击C处图标即可管理首页的版块,或保存版式,以及为不同角色设置不同的默认首页版式。

D处图标,集中了系统绝大部分的功能菜单,例如浏览、添加、搜索、切换视图、发送消息等。

系统没有前台后台之分,用户登录后能做哪些操作是由其权限决定的,比如,管理员能看到管理图标,普通用户则不能。

 

技术特性

  • 软件架构类型:B/S架构
  • 软件开发环境:Visual Studio 2022
  • 软件开发语言:C#
  • 安装运行环境:Windows操作系统,安装.Net 4.5.2或更高版本
  • 支持的数据库:Access、SQL Server 2005~2022/Express
  • 软件 API接口:RESTful Web API
  • 支持的浏览器:Chrome、Firefox、Edge、IE11等现代浏览器;360等浏览器请使用极速模式
  • 客户端分辨率:推荐1024×768以上显示分辨率,最低支持320×640分辨率

 

安装和更新

从官网 https://landian.cc 下载安装包,解压后,双击setup.exe,根据向导完成安装。

如果安装失败,可以双击setup_uws.exe,运行基于UltiDev Web Server 的安装。

安装本软件的电脑,称为服务器,而通过系统网址来打开进行操作的电脑或移动设备,称为客户端。客户端不需要安装本软件,使用浏览器输入系统网址来打开操作,详见软件帮助中"常见问题解答"第一条。

该软件本质上是一个Asp.net 程序,因此熟悉IIS者也可以直接将安装包中Source文件夹复制到适当位置,在IIS中配置为一个网站来运行;对于虚拟主机,可将Source中的文件上传到wwwroot目录下,Asp.net版本选择V4.0,32位兼容模式。详见帮助中"常见问题解答"第二条。

要更新软件,进入系统管理 - 关于本系统,在"软件更新"处检查更新,选择版本后点"更新"按钮;或下载更新包进行离线更新。

最新安装包下载:https://landian.cc/download/ims.rar
累积更新包下载:https://landian.cc/download/update.zip

作为系统的服务器,普通PC也可以,但建议选择一台性能较好的电脑或专门的服务器,推荐12G以上内存,固态硬盘,Windows 2016/2019 Server操作系统。服务器最好不要兼办公用途。

 

该选择哪种数据库?

安装完成后首次打开,会进入选择数据库的界面,可选择 Acces 或 SQL Server 数据库。管理员也可以随时切换数据库(系统管理 > 系统维护 > 其它 > 切换数据库)。

两种数据库的区别:
Access:系统内置的默认数据库,小巧方便,但性能相对较差,尤其是数据量较大或设计比较复杂的情况下。
SQL Server:性能好,容量大,但需要单独安装。仅企业版或旗舰版授权支持。

可以使用系统安装包"工具"文件夹中的 sqlsetup.exe 来自动安装 SQL Server 数据库及其管理工具,或手工下载安装:

SQL Server 2019 Express
SQL Server Management Studio(SQL Server 管理工具)最新版

Access 与 SQL Server 不兼容,数据无法自由迁移,因此最好一开始就选择好数据库类型。如果确实需要在二者间切换,可以在数据中心右键,备份所有数据,再在切换后,从备份中恢复,这样可以迁移模板及数据(公式字段要修改,因为两种数据库的函数和语法不同),但其它如用户、权限、信息中心等都无法迁移。

 

系统搭建基本流程

一个管理系统的设计和应用,大致包含以下方面:

 

如何快速入门?

先看看三分钟入门,或登录在线演示浏览观摩,然后尝试针对一个简单的需求进行模板设计和测试,根据"输入、浏览、搜索"等过程的体验和需求,不断改进和调整,就能很快上手了。

也可以从在线模板库下载应用模板导入系统中来学习和修改。

使用中有疑问,可点就近的帮助按钮、问号图标,或左侧的实时帮助,来查看相关说明。新用户操作时,右下角有时会弹出相关的指导,应注意看看(这些信息最多显示两次,可在帮助中重置显示次数,或禁用弹出式帮助)。

另外,浏览一下系统设置中各个选项;浏览一下各个页面,了解其中各种按钮或菜单项的作用;浏览一下帮助中的"常见问题解答"。这样,以后需要什么功能时,就能知道在什么地方设置。

完成基本设计后,可通过以下途径实现关联和联动,使之更方便实用:

 

系统功能的从无到有,从点到面,是一个渐进的过程,不要被厚厚的需求文档给吓到了。先建立最简单和基本的模板,然后多次重复"设计-测试-修改设计"的过程,直到一个相对独立的功能块成熟,就可以先上线这部分功能,后续再逐渐扩展。系统设计和完善的过程,也是一个伴随管理思想的梳理、反思和优化的过程,二者互相磨合和改进,使企业的管理水平和效率呈螺旋式上升。

 

 

第二章 基本概念

 

服务器/客户端

安装运行本系统的电脑,称为服务器;通过浏览器来访问本系统的设备,称为客户端。

 

模板

任何要管理的事物都是以模板为基础的。模板定义了其各种属性,如名称、规格、重量之类,这些属性被称为"字段"。
模板相当于一个数据表的框架,一个字段就是表中的一列;而表中的一行,称为一条"记录"。如下图所示:

 

目录

类似于Windows的文件夹,目录是对文件或数据的一种分类组织形式。它是系统虚拟的结构,与电脑中的文件夹无关。目录中可以放置数据记录,也可以上传文件。

模板设置中,可以设置默认保存目录,或不关联到目录。在表格视图,可以将记录批量移动到某个目录。

数据记录放到目录中,主要是便于分类查看,但由于过滤器、数据树、左侧栏自定义链接或树结构等功能也可以实现分类查看,因此通常将模板保持默认的"不关联到目录"即可。

 

视图

视图,是数据的一种表现形式,不同视图可以用不同形式来展现同一批数据。浏览数据时通常以默认视图展现,可随时切换其他视图。

不论以哪种方式(浏览、搜索、过滤器、链接等)打开一批记录后,切换各个视图,都会以相同的方式和条件来读取数据。因此,如果期望在图表或报表中切换数据统计范围,应该先按需要筛选出数据,再切换到图表或报表视图;或使用快搜功能,直接以指定视图呈现搜索结果。
可以在模板设置中指定默认视图;可以在左侧栏切换视图,或添加自定义版块加入链接,以指定视图显示指定数据。

 

版式

同一个页面(例如详情视图、表格视图、编辑页面等)的不同显示样式,称为版式。可以添加多个版式,并为不同角色或条件指定不同的默认版式。

 

变量

变量,不是一个静态的值,而是根据当时情况动态取值。例如,"当前用户名"这个变量,用户张三操作时,它代表张三,李四操作时代表李四。

变量类型字段是在添加或更新记录时确定值;条件或版式等使用的变量则是在浏览时实时取值。

变量的一个应用实例,是在权限设置时,限定用户只能浏览自己添加的记录,条件可设为:[创建人] 等于 $UserName$
变量代码含义
$Now$当时时间
$UserName$操作者用户名
$UserRealName$操作者真实姓名
$UserUnit$操作者所属机构。可用 $UserUnit2$ 这样的代码表示其直系机构第2层的机构名,依此类推
$UserIP$操作者的IP地址

 

过滤器

过滤器,就是一组预设的条件。每个模板都可以设置多个过滤器,用于浏览时筛选数据(即只显示符合条件的记录),或在查询等条件设置中引用。

 

保密级别

保密级别表示数据的保密程度,从低到高为0~10共11个级别。在设置浏览权限时,也有相对应的11个浏览权限级别,只有当浏览权限级别高于或等于保密级别时才能查看(除非有编辑权限)。

 

 

 

第三章 模板设计

 

3.1 概述

系统的数据管理功能,是以模板为基础的。模板确定了要管理哪些字段(例如通讯录,需要确定姓名、电话、地址等字段),以及相关的各种界面和功能。

要添加一个模板,进入设计中心,右键,添加模板,输入名称即可:

 

在设计中心点击模板图标,进入模板设计页面,逐一添加所需要的字段:

可以拖动字段名称调整顺序,这也是相关的输入和浏览页面的默认字段顺序。
可双击字段行进入编辑;可将字段拖到"添加字段"按钮来复制字段。

添加字段后,系统会自动生成数据录入、浏览、搜索等页面。可以从以下途径来添加、浏览或搜索数据:

1. 从左侧栏导航区的添加、浏览、搜索标签下,点击链接;
2. 在上图中点"数据中心",打开后在模板图标上右键,可打开、添加,或搜索数据;
3. 点击页面右下角图标,从菜单中执行相关操作;
4. 自定义左侧栏,添加一个版块并加入该模板的相关链接,从而可点击链接执行操作。

 

为了使用起来更方便,还可以对模板作一些设置,如:

  • 模板基本设置 包括默认视图、默认排序方式等;
  • 数据保护设置 可设置禁止浏览、编辑、删除等;
  • 数据提醒设置 可设置定期检查,满足条件时通知指定人员;
  • 数据生成设置 利用其它数据来自动生成记录,如,用供应商记录生成供应商评价表;
  • 自定义操作 添加自定义按钮,点击时执行预设的数据修改动作;
  • 模板关系设置 可添加子模板,实现一对多或一对一的数据关系;
  • 流程设计 为需要多步骤处理的事务设计处理流程,即建立各个步骤并指定其处理人和权限等;
  • 权限设置 指定不同角色对该模板数据的浏览或编辑等操作权限。
     
在设计中心,可分别在空白处或模板上点击右键,看看有哪些可用的功能。例如:可以复制模板、导入或导出模板、利用Excel文件自动生成模板等。管理员也可以拖动模板调整顺序。
可以从在线模板库下载需要的模板,在设计中心导入来学习和修改使用。


 

3.2 字段类型

添加字段时指定适当的类型非常重要,因为系统的许多功能是根据字段类型和设置自动处理的。不正确的字段类型将导致一些让人困惑的现象,例如,身份证号码,如果用数字类型,将显示为"5.12E17"这种样子,实际上应该用文本类型;年龄,如果用文本类型,排序时将出现"9"岁大于"10"岁的现象,这是由于系统是按文本排序而非按数值排序。

系统目前有以下 14 种数据类型:
 

文本

即普通的文本数据。如,姓名、地址。

数字

只允许输入数字值。如,年龄、身高。

如果是 Access 数据库,数字字段存储精度为15位整数及4位小数;对于 SQL Server 数据库,存储精度为18位整数及10位小数。
日期时间

用于时间类型的值。如,生日。

单选列表

预设多个选项,输入时选择其一。如,性别。

多选列表

预设多个选项,输入时选择一个或多个。如,兴趣爱好。

是否

只有肯定和否定两种情况之一。如,婚否。

公式

通过某种运算来得到一个值。公式中可以引用本模板的其它字段,如:提成额=销售额×0.15。

公式字段常用于对同一条记录中的一个或多个字段进行计算,它不会出现在数据输入界面,其值是在浏览时动态计算得到的。
查询

从指定模板按指定条件进行查询来得到一个值。

查询字段不会出现在数据输入界面,其值是在浏览时动态计算得到的,并随数据源变化而变化(若不希望这样,应使用文本等类型,配合"输入提示"的"自动填充"功能,在输入时取值)。查询字段常用于对多条记录的同一个字段进行计算取值。
图片

用于存放图片。如,人事档案模板的"照片"字段。支持的图片格式:jpg,gif,png,bmp,tif,emf,wmf,ico。

文件

用于存放文件。如,产品说明书。支持的文件类型取决于系统设置中"允许上传的文件类型"。

链接

用于设置内部链接或外部链接。如,供应商模板的"网站"字段。内部链接是指链接到系统内某个页面的链接,如:info.aspx?id=1;外部链接指各种互联网链接,如:https://baidu.com。

自动编号

用于自动生成一个编号。在添加记录时,系统会自动根据编号规则来生成编号,而不用手工输入。通常用于确保每条记录有个唯一的编号,并可通过该编号与其它模板间建立起某种关联。

特殊文本

用于记录电话号码、邮箱地址、QQ号等特殊的文本类型。这种类型的字段值在录入时会有相应的验证,防止输入不符合规则的数据,在浏览时会呈现为链接,点击可执行发送手机短信、邮件、QQ消息等相应的任务。

变量

变量类型的字段,在录入时不会出现,它的值是在保存时由系统自动根据当时的情况来确定的。比如,当时录入人员的用户名、时间等。

签名

用于记录用户的手写签名。签名时,系统会记录签名者的用户名和签名时间等信息。

 

 

3.3 字段选项
默认值

在添加记录时,默认值会作为字段的初始值。如,人事档案的"健康状况"默认值可设为"健康"。 默认值也可使用变量,如:$Now$

日期时间类型字段,还可以用数据库日期函数表达默认值,如( SQLServer 语法):DateAdd(yy,1,getDate()),将当前时间加一年。
保密级别

指定字段的保密级别。用户如果的浏览权限级别低于该保密级别,字段将不可见(除非对该字段有编辑权限)。

必填字段

指定在编辑时是否必须输入该字段。如,人事档案的"姓名"字段通常为必填字段,而"特长"字段则应该是可填可不填。

不允许重复值

指定是否允许该字段在不同记录中存在相同的值。如,学生的"学号"字段应勾选该项,而"成绩"字段则不应该勾选。

内容长度

指定该字段最多允许输入多少个字(中英文不论)。"0"或留空表示不限字数。建议设为可能的最大长度值。

内容长度是一个重要选项,系统将根据它来决定该字段是否能作为关联字段、分组字段等,以及默认的编辑框大小和列宽度等等。如果该字段将用于某种关联或条件匹配,建议长度设置不超过255。
使用编辑器

指定在输入时是否使用编辑器,以便支持设置字体、颜色,插入图片等功能。

查询

为查询类型字段设置取值条件和方法。即,对指定模板满足条件的数据,按指定方法来取得一个值,作为该字段的值。如,人事档案中的查询字段"平均工资",可从工资发放记录中取平均值:

输入提示

输入提示,类似于在搜索引擎输入关键字会产生提示列表的效果,用于从系统现有数据中提取一个列表供选择。如,可以为供货记录模板的"供应商"字段设置输入提示,从"供应商"数据中提取公司名称:

这样,在输入时就会出现一个下拉列表供选择,输入关键字将动态更新列表以匹配关键字:

链接

如果设置了链接,在浏览时该字段将显示为一个链接,点击将打开预设的链接目标。该功能通常用于链接到关联的数据,例如在客户名称上设置链接,用于查看客户的投诉记录。

公式

设置公式字段的公式。在公式中,可用"[字段编号]"的形式引用模板中的其它字段,字段编号可从"可引用字段"列表中选择;也可以使用数据库所支持的函数。请参考:Access 数据库常用函数SQL Server 数据库常用函数

候选项

为单选列表、多选列表字段预设选项。输入时,从这些选项中选择一项或多项。

添加选项时,可连续输入,每一项输入后回车即可添加到列表。可以拖动选项来调整顺序。
输入规范

用一个正则表达式,来限制输入的数据,确保其符合要求。如"^\w{6,8}$"表示要求六到八位的字母或数字。对于数字字段,还可像这样限制输入的数值范围:
1,99:输入的数值X必须在1≤X≤99这个范围;
10,:输入的数字必须大于等于10。

输入说明

填写一段说明文字,在输入该字段时,会以问号图标或悬浮显示等方式,给用户以指导或提示。

隐藏

指定该字段是否在浏览时不可见。该选项不影响输入时的可见性。模板的标识字段不受此设置影响。


 

 

第四章 数据管理

 

4.1 数据输入

建立模板后,可通过以下途径来添加数据:

  1. 从左侧栏导航区的"添加"标签页下,点击模板名称链接;
  2. 在左侧栏导航区的"数据中心"右侧,点"添加",然后点击该模板按钮;
  3. 从页面右下角图标的菜单中,点"添加",然后点击该模板按钮;
  4. 在左侧栏添加自定义版块,其中添加元素或树形结构,并选择适当的链接,从而可通过该链接进入。

 

经典版式

默认进入的是"经典版式"的数据输入页面。如下图所示:

 
经典版式是系统自动生成的,对模板有完全控制权限者(以下称模板管理员)可拖动字段名称调整顺序,并自动实时保存。
 
经典版式会自动响应模板中字段的增减,自定义版式则需要手工添加或删减版式中的适当内容。也就是说,如果新增了字段,它不会出现在自定义版式中,而是需要在版式中手工添加,或者重新添加一个自动生成的新版式。
对于图片/文件类型字段,不光可以点击虚线框来选择一个或多个文件上传,还可以直接将文件拖到上传区域来上传,或点击一下该区域后按 Ctrl+V 来粘贴截图。 
输入时,可用键盘的上下键在不同行之间移动光标 ;回车可直接保存。将"保存后"选项设为"新建",可实现连续输入。
如何快速添加数据?
1. 点击右上角"导入",可选择一条相似的记录来填充表单,然后修改后保存;或在浏览某条记录时,进入编辑状态,然后点"另存"按钮,实现类似复制的效果。
2. 也可从 Excel 批量导入数据:在右上角"导入 Excel"处右键,可下载一个只有表头的 Excel 模板文件,在其中整理好数据后,单击"导入 Excel",选择这个文件,即可将数据导入系统。

 

多行录入版式

多行录入版式类似于 Excel 的界面,可以一次性添加多条记录。如下图所示:

多行录入版式的基本操作:

  1. 模板管理员可在标题行拖动列调整顺序,拖动列边界线调整列宽度,并自动实时保存。点"版式"按钮,选"显示/隐藏列",可确定要显示哪些列;
  2. 在左侧的数字序号列,可点击选中行;按住 Ctrl 键点击可选择多行;按住 Shift 键点击或鼠标拖动也可选中多行;
  3. 在已选中行的序号列上右键,可执行复制、剪切、删除、清空等操作;在未选中行的序号列上右键,可执行粘贴、插入等操作;
  4. 在标题行第一个单元格点击,可选中所有行,最后一个单元格上点击可删除所有行;
  5. 左下方加号图标,点击可添加一行,右键可添加多行;
  6. 点击左下方省略号图标,可从 Excel 文件导入数据,或从设置为生成来源的数据中选取;
  7. 在表格单元格中,可用键盘方向键或 Tab 键跳转,按回车键跳到下一行(没有下一行则新增一行);
  8. 鼠标移到单元格,拖动右下角出现的图标,可进行纵向填充;如果是数字值,按住 Ctrl 键拖动,可按序列填充;
  9. 有输入提示功能的单元格,可以双击弹出选取对话框。


点击"版式"按钮 - 扫码设置,可针对扫码输入进行设置:

 

即使不需要扫码输入,也可以利用该功能,实现简单的自动实时计算。

 

自定义版式

在数据输入页面,点"版式"按钮 - 版式管理,即可进入添加自定义版式的页面。在这里,可以类似 Word 那样进行自由的排版,将字段拖放到适当位置,输入时该位置就会出现相应的文本框或下拉列表等。

如上图所示,浅黄色区块为字段占位块,浅绿色区块为关联表的占位块,其它地方可以自由填写内容或设置格式。

两种操作模式:

拖拽模式

拖拽模式主要用于操作字段或关联表,在该模式下可以:

  1. 拖动占位块的位置,包括从右侧列表拖入编辑区,或从编辑区拖回右侧列表;
  2. 勾选占位块中的选框,使其以"块元素"显示(在所在区域独占一行),反之以"行内元素"显示;
  3. 选择关联表占位块中下拉列表,以设置输入时该表的初始行数;
  4. 鼠标移到占位块右边缘或下边缘,可拖动边线调整其宽度或高度(仅长文本或启用编辑器的字段可调整高度)。
编辑模式

编辑模式主要用于编辑除占位块外的其它内容,如文字、图片、表格等。

双击版式区域,可快捷切换操作模式;编辑模式下,从右侧拖动元素时将自动进入拖拽模式。
直接拖入版式区的占位块,是自动确定宽度和高度的。在调整了宽度或高度后,如果想恢复默认尺寸,可在拖拽模式下将其拖入右侧列表再重新拖回版式区。


使用表格进行排版:

可在编辑模式下插入表格,并将占位块拖入表格适当位置。在表格中右键,表格属性 - 高级 - 样式类,可设置表格的样式类:

  • (无)不显示边框线
  • normal表格框线显示为细线条
  • hr仅显示每行的下边框线
  • grayline灰色表格框线
  • blackline黑色表格框线
将表格宽度设为百分比值,如100%,将按其所在位置宽度自动确定表格宽度;要确定各列宽度,应设置第一行的单元格宽度,此时建议至少留一列不设宽度,这样该列将自动占据剩余空间,而不会导致表格宽度超出所在区域。
添加新版式后,可点击"自动生成"按钮,在系统自动生成的版式上进行修改,将大大提高效率。


设置保存后的动作:

点击"管理版式"按钮,点"设置保存后动作",可预设编辑页面保存后执行什么动作。可指定"由操作者决定"(操作时选择并记忆),或跳转到某个页面等。跳转的目标页面地址,可使用外部网址或系统内部页面地址。在首页"个性化"对话框,点"生成二维码",可获取页面地址。
 

 

4.2 数据浏览

 建立模板并输入或导入数据后,可通过多种方式来查看这些数据:

  1. 从左侧栏导航区的"浏览"标签页下,点击模板名称链接;
  2. 在左侧栏导航区的"数据中心"右侧,点"浏览",然后点击该模板按钮;
  3. 从页面右下角图标的菜单中,点"浏览",然后点击该模板按钮;
  4. 在左侧栏添加自定义版块,其中添加元素或树形结构,并选择适当的链接,从而可通过该链接进入;
  5. 通过搜索、过滤器、字段链接等方式打开数据。


打开数据后,会以默认视图显示(可在模板设置中指定默认视图),可随时通过左侧栏的"数据视图"菜单切换视图(也可在"视图"版块,或页面右下角图标的视图菜单中切换)。

不同视图有不同的显示方式和功能,可按需切换:

  • 表格视图以表格方式显示数据,并具有筛选、排序、删除和编辑等功能;
  • 详情视图以单条记录的详情方式显示数据,可在不同记录间跳转,支持自定义版式;
  • 缩略视图以缩略图方式显示记录;
  • 概要视图显示记录的概要信息。可自定义显示内容和格式;
  • 图表视图以柱状图、折线图等方式显示数据的统计图表;
  • 报表视图显示数据的统计报表。
     
无论哪种方式打开数据,这种打开方式和条件会被记忆,此后,不管切换到哪个视图,都是以相同的方式和条件来读取数据,直到下一次打开数据。因此,可以认为各个视图都是显示的同一批数据(如果期间没有添加、删除或修改),或者说,各个视图都是对同一批数据的不同呈现方式。
表格视图、图表视图和报表视图只能用于同一模板的数据,因此如果搜索结果涉及不只一个模板的数据,这三个视图将不可用。
表格视图是唯一具备数据筛选功能的视图,筛选操作同样会更新到系统记忆中,后续切换视图也是针对筛选后的数据。

 

4.2.1 表格视图

 表格视图以表格方式呈现数据,并可进行筛选或批量操作,是一个功能强大的也最常用的视图。如下图所示:

表格视图基本操作

  • 拖动标题行列名称,可调整顺序;拖动列边界线可调整列宽度;
  • 点击标题行列名称链接,可按该字段排序,再次点击则反序排序;
  • 勾选每一行前面的选框,可选中该行。也可以直接点击某一行来选中该行;
  • 点击标题行前面的选框,或双击页面空白处,可全选或取消全选;
  • 点击每一行选框右侧图标,或在该行右键,弹出针对该行的操作菜单;
  • 双击某行,可就地编辑,或打开详情视图等,具体取决于右键菜单中"双击"设置(该选项自动记忆);
  • 点击"批量操作"按钮,可对当前选中的或当前打开的所有记录进行批量更新或删除等操作;
  • 表格左下角下拉列表,可选择让表脚显示合计或平均值等;
  • 表脚字段名上点击,可从菜单中执行排序、隐藏等操作;
  • 表格右下角,可设置每页显示数量;
  • 点击"筛选"按钮,可从当前结果中或全表中筛选数据;
  • 点击"版式"按钮,可将当前表格的显示设置保存为一个版式。可随时切换版式,或设置不同人员的默认版式。
     
版式保存了哪些内容?
表格视图的版式包括了各列的顺序、宽度、显示与否,以及表格的样式、每页显示数量、是否在顶部显示过滤器和搜索栏、是否显示溢出内容、表脚的显示内容、图片字段显示方式(缩略图/链接)等。

 

表格视图高级操作

1. 切换样式

点击"更多"按钮 - 切换样式,可将表格在两种样式风格间切换(一种传统样式,一种每行只显示横线)。

2. 显示/隐藏列

点击"更多"按钮 - 显示/隐藏列,可决定表格中显示哪些字段。

3. 条件格式

点击"更多"按钮 - 条件格式,可设置为不同条件显示不同样式。比如,将待处理投诉置顶并显示为红色。

4. 显示溢出内容

默认情况下,部分字段如果超出了单元格宽度,会以省略号显示。点击"更多"按钮,勾选"显示溢出内容",可使之全部显示出来。

5. 显示过滤器按钮

点击"更多"按钮,勾选"显示过滤器",会将预设的过滤器显示到表格上方,点击将显示符合该过滤器条件的数据。若选择了不只一个过滤器,它们将叠加生效。

过滤器是预设的一组搜索条件。可在数据中心,模板上右键 - 过滤器,去添加或管理过滤器。

6. 显示搜索栏

点击"更多"按钮,选择一个预设的搜索版式,会在表格上方显示相应的搜索栏。搜索版式可在搜索页面添加,其实质就是指定用于搜索的字段。

7. 显示悬浮搜索框

在"筛选"按钮上右键,或"更多"菜单中点"就地搜索",会在右上方弹出高级搜索框。

8. 快速翻页

有不只一页数据时,可按键盘上的左右方向键,或向上/向下翻页键快速翻页。

9. 只查看选择的行

选中部分记录后,左下角会出现"查看所选"按钮,点击将筛选出这些行来。

10. 查看他表中相关数据

在表脚的字段名上点击,菜单中选"包含的…",可以打开其他表中指定字段包含了当前该字段中数据的记录,例如,在产品表的供应商字段,可通过这种方式打开供应商表中的这些供应商记录。

11. 让图片字段显示缩略图

在表脚的图片字段名称上点击,可从菜单中切换显示方式(缩略图/链接)。

12. 设置双击动作

在表格行上右键,可指定双击时要执行的动作,例如:打开、就地编辑等。该设置会自动记忆。

就地编辑时,可在文本框或下拉列表等输入元素上直接回车进行保存。

13. 拖动选择多行

从表格左侧的非数据列拖动鼠标,到任一行任意位置松开鼠标,即可批量选中鼠标经过的行。

14. 添加自定义操作

在模板设置 - 自定义操作,可为表格视图添加自定义操作按钮,点击时按预设方式更新记录。

 

4.2.2 详情视图

表格版式

详情视图的表格版式,如下图所示:

它是系统自动生成的一个版式,它会自动响应模板中字段的增减,并自动处理字段的就地编辑功能,自动适配屏幕宽度(例如手机等窄屏幕时,页面会由双列布局变为单列布局)。

表格版式的排版

点击"版式"按钮 - 版式管理,即可在"表格版式"标签页下,拖动字段调整位置。需要隐藏的字段,拖入回收站。调整完毕点"保存"按钮保存。


 

自定义版式

在上图的版式管理页面,切换到"自由排版"标签页,即可添加或管理自定义版式:

使用自由排版,可以像在Word中那样灵活地编排内容和格式,其中可插入字段代码或变量代码占位,这些代码在浏览时会被替换为对应的值。

字段和变量的代码可以在右下方"代码速查"处查询。

在添加一个新版式时,可以选择一种初始化方式,以自动生成或复制一个现有版式,然后在此基础上进行调整。

可在编辑器中插入多标签页(选项卡)来分区组织内容、插入分页符控制打印分页。
在模板中添加或删除字段后,自定义版式不会自动变化,需要手工调整。可以添加一个版式,初始化为一种自动生成的版式,再进行修改,以提高效率。

用自由排版显示关联数据

先在左下方定义查询(用于获取相关的数据),然后在版式中插入代码来显示查询结果(假设查询为$D0):

  • $D0.Table以表格显示查询结果(可用 $D0.Report.Clear 形式指定忽略条件格式)
  • $D0.Report以报表展示查询结果(可用 $D0.Report.报表名 形式指定使用哪个报表)
  • $D0.Chart以图表展示查询结果(可用 $D0.Chart.图表名 形式指定图表)
  • 插入一个表格,在标题行下一行每个单元格中引用该查询,如 $D0.[F923D].R,将为每条记录生成一行(可用 $D0.No 显示序号);
  • 用形如 $D0.[F923D] 的代码,显示查询结果中字段"F923D"的值。默认只显示第一条记录,可添加".R"以显示所有值,如 $D0.[F923D].R
  • 用形如 $D0.[F923D].Sum 的代码,显示查询结果中指定字段的统计值。Sum 可替换为:

Sum合计
Avg平均值
Max最大值
Min最小值
Var方差
Stdev标准偏差
Count计数
Distinct以顿号分隔的不重复值

可在查询定义界面对 $D0.Table 的表格进行设置,包括控制显示的字段,字段顺序、列宽和对齐方式等。

使自定义版式支持就地编辑

表格版式支持就地编辑,浏览时可双击字段值进行修改。自由排版要实现这种功能,需在版式编辑框中点"源码"按钮,切换到源码状态,找到字段代码所在的HTML元素,如:
<td>姓名</td><td>[F92N7]</td>
在起始标签中添加fid属性,如:
<td>姓名</td><td fid="35">[F92N7]</td>
这里的"35"是指字段的ID,就是"代码速查"处显示在字段名后面括号中的数字。
这样保存后,浏览时就可以双击所显示的字段值来编辑了。

不论字段代码放在什么地方,都可以通过在包含它的HTML标记中添加fid属性支持就地编辑。以 $D0.Table 形式显示的数据,系统会自动添加就地编辑功能。
只有可以编辑的字段类型,并且有权限的情况下,就地编辑功能才会生效。

字段的特殊显示格式

默认情况下,版式中的字段代码在浏览时将按正常方式显示值。但有些字段也可以在查询代码时,选择以下特殊格式:

  • 条形码/二维码将字段值显示为条形码或二维码
  • 大写数字如,4520将显示为"肆仟伍佰贰拾"
  • 原始图片按原始尺寸显示图片(而不是缩略图)
  • 仅显示首图图片字段有多个图片时,只显示第一张图片
  • 横排选项将单选列表或多选列表字段的所有选项都显示出来,横向排列
  • 竖排选项将单选列表或多选列表字段的所有选项都显示出来,竖向排列
     

关于条形码和二维码

条形码和二维码,是按照一定的规则编码产生的用以表达一组信息的图形,是广泛应用于商业、物流等领域的一种自动识别技术,具有输入快、成本低、可靠性强等优点。以下介绍几种主要的条码类型:

  • EAN码是国际通用的符号体系,表达一组固定长度的数字,主要用于商品标识;
  • CODE 39/128码为目前国内企业内部自定义码制,可编码不定长的数字和字母;
  • QR Code一种二维码,其信息容量大、可靠性高、可快速识别、保密防伪性强,可表示字母、数字和汉字。
不同条码类型有不同的规范,不符合规范的文本不能生成条码图形,或者会被程序自动纠正(如"1234567890123",采用EAN-13编码,最后一位会被修改为8)。

关于条码的更多知识…

高级技巧

  • 系统对详情页限制了宽度,若想取消限制,可在外挂样式中添加一行:#detail body{max-width:100%},或在版式源码前面添加一行:<div style="width:1500px">,在最后添加一行:</div>
  • 若希望有些内容在浏览时隐藏,仅打印出来可见,可使用"forPrint"样式类。如(源码):
    <p class="forPrint">这一段打印出来才能看到!</p>
  • 反之,若希望浏览时可见,打印时隐藏,可使用"forScreen"样式类。如(源码):
    <p class="forScreen">这一段不会打印出来!</p>
  • 以 $D0.Table 形式分页显示查询结果时,若希望每页产生固定的表头/表脚,请在版式中添加表头/表脚模板,设置其样式类为 paging-header 或 paging-footer。如:<p class="paging-header">...</p>
  • 若想在版式源码中写脚本,由于系统脚本框架是最后加载,因此直接调用 jQuery 等函数会因其尚未加载而报错。可如下处理:
    <script>
    var pageReady = function () {
            //这里写代码
    };
    if (document.readyState === "complete" || (document.readyState !== "loading" && !document.documentElement.doScroll)) {
            pageReady();
    } else {
            document.addEventListener("DOMContentLoaded", pageReady);
    }
    </script>
  • 更多有用的样式类,请查看常用样式类

 

 

4.2.3 缩略视图

 缩略视图以缩略图方式显示数据记录:

在模板设置中,可指定缩略图字段、标识字段(显示在缩略图下方的内容)和概要字段(鼠标悬浮显示的内容)。

 

操作要点

  • 点击缩略图,可打开其详情视图;
  • 在缩略图上右键,可执行编辑、删除等操作;
  • 在空白处右键,可执行排序等操作;
  • 鼠标移到缩略图上,点击中间的播放图标,进入幻灯模式;
  • 在幻灯图片上点击可切换到下一张;右键点击打开原图;按键盘上下键旋转图片;
  • 超过一页时,可按键盘上的左右方向键,或向上/向下翻页键快速翻页。

 

 

4.2.4 概要视图

 概要视图显示记录的概要信息。可自定义要显示的内容和格式:

模板管理员可以在概要视图任一项,点击右侧悬浮的齿轮图标,对显示版式进行设置。如上图所示,可选择以下几种版式:

  • 默认类似于百度的搜索结果,系统自动提取一些主要字段来显示;
  • 链接每条记录显示为一个链接,以标识字段作为内容;
  • 自由排版与详情视图的自由排版相同,可自定义版式内容和样式,插入字段代码占位;
  • 详情视图选取一个详情视图版式。
     
自由排版时,可以在编辑框右下角选择一个现有版式来初始化,再在此基础上进行调整。
选择"详情视图"的"默认版式",每个人打开时会用自己的默认版式来显示,这与详情视图是同步的,受默认版式规则的影响。
选择详情视图版式,在打印时,每一项后面会分页,从而可实现批量打印的效果。
概要视图同样可以按键盘上的左右方向键,或向上/向下翻页键来快速翻页。

 

 

4.2.5 图表视图

 图表视图用于对当前的数据生成柱状图、折线图等统计图表:

在图表下方指定图表类型、分组字段(横坐标)、统计字段(纵坐标),统计方法及排序方式后,点击"生成图表"按钮,即可生成相应的图表,然后点"图表操作" - 保存为…,可将当前图表设置命名保存,以后可随时切换该图表来查看,或将其设为默认图表。

多个统计字段时,可否调整顺序?
图表最多可选择5个统计字段。有多个可统计字段时,可用鼠标拖动调整顺序,以确定它们在图表中的顺序。图表的排序设置"升序"或"降序",是根据第一个统计字段来排序的。
如何自定义分组区间?
按数字或日期字段分组时,可选择自动分组(日期时间字段还可选择按年、按月等分组方式)、按所有值分组,或手动分组。若选择手动分组,可在后面输入分隔值序列,以逗号分隔。例如,要以五年为一个单位来统计销售收入,假设数据在2010~2022年之间,那么可以输入"2015-1-1, 2020-1-1",表示将2015年1月1日以前的作为一段,到2020年1月1日之间的作为一段,最后的作为一段。
对于柱状图/折线图/散点图,系统会根据所在空间大小及分组数量自动确定每一项的宽度,如果该宽度太小,会隐藏纵坐标上的数值;对于环形图/漏斗图,系统会将占比小于1%的项合并到"其它"项。

 

 

4.2.6 报表视图

 报表视图以报表形式展现数据的统计结果:

报表的设置,主要是指定分组字段和要显示在报表中的字段。生成报表后,可以点"报表操作" - 保存为…,将当前报表的设置命名保存。以后就可以直接切换该报表来查看统计数据,或将其设为默认报表。

报表设置中勾选显示的字段,数值型字段将被统计且靠右显示(可在"统计方法"处排除无需统计的字段),其余字段仅当勾选了"显示明细"才会显示,且位列分组字段与统计字段之间,分组字段总是显示在左侧。在此前提下,可通过拖动字段来调整顺序。
在生成的报表中,可用鼠标拖动标题行单元格的右侧边线调整列宽,调整好之后,可保存报表。

报表脚注

报表脚注,就是显示在报表下面的内容,比如审核人、打印时间、报表的说明等。可使用全角空格占位,支持变量,如 $UserRealName$ 表示操作人名称,$Now$ 表示当时时间。

分组区间的边界值如何处理?

数字或日期字段,可以设置自动或手动分组,这种情况下,除了最大的一组外,每组均包含左边界值,不包含右边界值。如12~100,100~500,500~678,这三组中,第一组不包含100,第二组包含100但不包含500,第三组则包含了500和678这两个边界值。

跨表统计

通过在模板关系中添加组合,可以组合其它相关表的数据来生成报表。详见:组合

 

 

4.2.7 目录

目录是一种对数据记录进行分类查看的组织形式。数据本身是存储于数据中心的数据表中的,无论归属到哪个目录,都可以从这个表或其它非目录方式打开查看(只要有权限)。模板设置中可以设置数据是否关联到目录,在数据中心或表格视图,可以将数据从原来的目录移动到指定的目录(但并不会从数据表中移除)。

目录中,还可以直接上传文件和图片,起到类似共享文件夹的作用。
 

如何设置目录权限?

如果启用了目录权限控制,系统管理员或对目录有完全控制权限的人,可以打开目录后,在空白处右键 - 权限,然后在弹出对话框中分别选择角色并设置其权限。要对子目录设置权限,请在目录图标上点击右键 - 权限。

如果未启用目录权限控制,则对任一模板有添加记录权限的人员,以及管理员,都可以创建目录,和删除空目录。
 

目录权限与模板权限有什么关系?

目录权限只是控制是否允许在其中添加记录、文件、子目录,对目录中的记录的权限,是由模板权限决定的。
 

如何对目录中的内容进行排序?

在目录中空白处右键 - 排序,选择排序字段即可。如果再次用同一字段来排序,则会以相反的顺序排序。
 

技巧

  • 若有权限,可将文件拖入目录窗口自动上传,或点击空白处按Ctrl+V粘贴截图/图片。
  • 若有权限,可将目录中的对象拖拽到某个子目录上,将其移入该目录。
  • 在需要翻页浏览时,可使用键盘快捷操作。方向键→或PageDown键翻到下一页;方向键←或PageUp翻到上一页;Home键到第一页;End键到最后一页。
  • 直接单击缩略图可打开其详细信息页面;单击缩略图中间的悬泘图标,可查看其较大尺寸的图片,并进入幻灯显示状态。
  • 可以拖动目录来调整其顺序,管理员的操作结果将作为系统默认的顺序,普通用户的调整则仅应用于本人。

 

 

4.2.8 文件预览

系统中上传的文件,部分格式可以在线预览:


 

文件预览支持的格式和条件

  • 图片格式:.jpg、.jpeg、.gif、.png、.bmp
  • 文本格式:.txt、.htm、.xml
  • 音视频格式:.mp3、.mp4、.m4a、.m4v、.oga、.ogv、.ogg、.webm、.wav。部分格式需浏览器支持HTML5,并支持文件的编码类型
  • Office文档:.docx、.doc、.xlsx、.xls、.pptx、.ppt、.docm、.xlsb、.ppsx、.pps等。要求有互联网连接,且可以从互联网访问系统;Word 和 PowerPoint 文档须小于10MB;Excel 须小于5MB
  • PDF格式:主流浏览器支持
  • 其它格式:暂不支持,只能下载后打开查看

 

Office文档无法预览?

在满足上述条件的情况下,如果Office文档还是无法预览:

  • 若主机地址为IP地址形式,请使用域名形式的地址;
  • 若地址中包含端口号,可能会预览失败,请考虑改为默认的80端口;
  • 需确保系统设置中“系统互联网访问地址”设置正确;
  • 若系统安装在内网,可能会因路由器安全规则阻止而失败;
  • 如果使用"Google 预览"失败,可能是被国内网络屏蔽,建议使用 Chrome 或 360 极速浏览器并安装"谷歌访问助手"插件;
  • 使用 Chrome 浏览器且安装了 Chrome Office Viewer 插件,可点击"打开"按钮,直接打开查看。

 

 

4.2.9 打印、导出和备份

 打印

详情视图等许多页面都有打印按钮,点击即可调用浏览器的打印功能进行打印。也可以考虑专门创建适合打印的版式,在需要打印时切换到该版式来打印。

建议打印时在选项中取消页眉页脚,并勾选"背景图形"(或"打印背景"),以免打印出来没有图片或表格线。
没有打印按钮的页面怎么打印?
没有打印按钮时,可以在新窗口或新标签页中打开该页面,然后从浏览器菜单中执行打印。

 

导出

导出功能,有两种操作,一种是导出页面,一种是导出数据。下图为表格视图的两种操作界面:

导出页面

导出页面,是将当前页面显示的内容导出为Pdf、Jpg等格式文档,如上图右侧对话框所示。

有两种Pdf格式,一种是图片形式的Pdf,一种是图文格式的可复制内容的Pdf,可根据需要来选择;
导出的Word和Excel格式文件,本质上是一种Html格式,打开时会由Word和Excel软件自动转换,转换后的格式可能有偏差,需要进一步手工调整。
导出对话框中选中"发送"再点击文件格式图标,会进入发送消息/邮件的界面,并将导出的文件作为附件;也可以点击"编辑后发送…",进入发送界面后,可以修改内容之后再发送。
如果系统设置了互联网访问地址,导出对话框中还会出现页面分享按钮,用于分享到微博或微信等。
导出数据

在表格视图下方,点击"批量操作"按钮,可在弹出的对话框中点"导出Excel"来导出数据;如果有权限,也可以在数据中心,模板上右键 - 数据管理,来导出数据。

导出的数据可用于再导入到系统中,但导出页面的文件不能用于导入。
表格视图导出的Excel文件只包含了当前显示的字段(因此可通过"显示/隐藏列"来控制要导出的字段);数据中心导出则包含了所有有浏览权限的字段。
可以在模板的"数据保护"设置中禁止打印和导出,这样可以在一定程度上(不是绝对)限制用户打印或导出页面。
模板化导出

可以用 Word 或 Excel 排版作为模板,其中用字段代码占位。在详情视图的导出对话框,有权限者可以上传模板文件,然后就可以用来导出 .docx 或 .xlsx 格式的文件。也可以在表格视图的批量操作对话框,将选择的记录批量导出为一个一个的独立文件。例如,将所有员工信息,分别导出为员工简历表。

字段代码可以在详情视图排版页面查询(暂不支持特殊格式代码),也可以用一个表格,以 $D0.[F23DP] 这种形式来显示关联数据。

 

备份

在数据中心,可以在模板上右键 - 数据管理,来备份数据,也可以勾选要备份的模板后,在空白处右键 - 备份选中数据,来备份多个模板的数据。

备份文件会包含模板、数据,以及相关的图片和文件,但数据文件和模板文件是系统专有格式,只能用于在本系统中恢复数据。
 数据备份时可以设置密码,但请一定保存好密码,忘记密码后数据不可恢复!
数据备份和系统备份(系统管理 - 系统维护 - 备份和还原)是两回事,前者只针对模板及其数据,后者则是整个系统的完整备份,包含了所有的数据和文件。

 

 

 可通过多种方式搜索数据:

  1. 左侧栏导航区的"搜索"标签页下,点击模板名称链接;
  2. 左侧栏导航区的"数据中心"右侧,点"搜索",然后点击该模板按钮;
  3. 左侧栏导航区的"数据中心"右侧,点击"快搜";
  4. 进入数据中心,在模板图标上右键,点"搜索",或"筛选";
  5. 从页面右下角图标的菜单中,点"搜索",然后点击该模板按钮;
  6. 在主界面右上方搜索框中搜索;
  7. 点击主界面上方的搜索图标进入搜索;
  8. 在高级搜索页面,指定搜索条件并保存为搜索版式,然后自定义左侧栏,添加搜索版块。此后就可以在左侧栏快速搜索;
  9. 在表格视图,可通过"筛选"、"就地搜索",或顶部的过滤器按钮或搜索栏进行搜索;
  10. 在左侧栏添加自定义版块,其中添加元素或树形结构,并选择适当的链接,从而通过该链接打开搜索。
     
搜索结果将以默认视图展现。涉及到多个模板的搜索结果,以概要视图展现。
搜索结果受限于浏览权限,没有权限的数据是搜索不到的。

 

4.3.1 高级搜索

 高级搜索,可设置最多八个条件来进行搜索,或将搜索条件保存为过滤器/版式/快捷方式:

条件组合逻辑

多个条件之间是按序组合的,每一个条件都通过其上方的"并且"或"或者",来与之前的条件(它们作为一个整体)相组合。如:颜色为蓝点,或者颜色为红色,并且价格大于100元,表示搜索这两种颜色的价格高于100元的记录。
 

搜索示例

假设要在"通讯录"中搜索姓张或姓王的成年人,那么可以如下设置:
"姓名"始于"张"
 或者
"姓名"始于"王"
 并且
"年龄"大于"18"

 

日期字段搜索示例

  • 在[上][月]搜索上个自然月内的记录
  • 在[未来][2][周]从此时此刻开始的接下来2周时间内
  • 在[过去][2][月]从此时此刻开始倒推两个月的这段时间内
  • 在[之前][2][月]本月之前的两个自然月内
  • 等于[2021年5月]2021年5月的记录
  • 等于[2021]2021年的记录
  • 介于[2021年12月1日 2021年12月5日]匹配“2021-12-1 0:00:00 至 2021-12-5 23:59:59”的记录
  • 止于[2021年7月]匹配截止到 2021-7-31 23:59:59 的记录
  • 大于[发货时间]搜索晚于发货时间(此处应填写发货时间字段的代码)的记录
     

在条件中使用代码

条件中可以使用字段或变量代码(可在下方查询)。例如,有支出和收入两个字段,想搜索支出大于收入的记录,条件中就可以填写收入字段的代码;想搜索本部门的记录,可设置条件:"部门"等于"$UserUnit$"(该变量表示操作者所在机构的名称,其值因人而异)。

要获取非直属机构名称,可用"$UserUnit2$"这样的代码,表示取用户直系第二层机构的名称(组织机构顶层为0)。

 

保存搜索条件

如果有权限,可点"保存"按钮,将当前的条件设置保存为公共的过滤器,或私有的快捷方式,或搜索版式。
 

什么是搜索版式?

搜索版式,是将搜索条件保存下来,并指定其中哪些条件由搜索时指定(其余条件按当前设置)。在使用该版式搜索时,只显示需要填写的条件,并将用户输入的关键字植入到预设的条件中进行搜索。

搜索版式,相当于是一个确定了占位条件的过滤器,只不过占位条件是在搜索时指定的,这就比过滤器多了灵活性而少了便捷性。

例如,版式中设置了两个条件:审核状态为"是",并且日期在某个时间段,保存版式时若将第二个条件勾选为搜索时指定,那么在搜索时,只会让用户指定起止日期,搜索结果就是这个时段内的已审核记录。

搜索版式主要用于显示在表格视图上方,或添加到左侧栏,或在快搜时使用,从而方便搜索。

 

技巧和说明

  • 无关键字搜索如果不输入关键字,表示搜索该字段为空的记录。
  • 日期字段搜索对于日期时间字段,可使用“在上(月/周/季/年/日)”之类的模式进行快速搜索。
  • "介于"模式使用"介于"模式,表示搜索指定字段介于这两个值之间(并包含这两个值)的记录。
  • "始于/止于"模式对于日期时间和数字类型,"始于/止于"可理解为大于等于和小于等于(如"生日"始于1980,表示搜索1980年1月1日后出生的人员);对其它类型,则表示以指定的关键字开头或结尾(如"姓名"始于"李",表示搜索所有姓李的人员)。
  • "包含/不包含/始于/止于"模式下如果用字段代码作为条件,则当该字段包含 !#%-_[*? 这些字符时,可能导致条件匹配不准确。
  • "包含/不包含"模式下多选列表/用户名/机构名字段、允许多项输入的输入提示字段,将执行完整匹配。如"abc,def",将认为不包含"ab",但包含"abc",在这种情况下,可在关键字前添加下划线"_"来指示进行模糊匹配

 

     

    4.3.2 快搜

     快搜,是使用预设的过滤器或搜索版式进行搜索,可直接呈现搜索结果的图表、报表或指定视图:

    上面的四个下拉框依次是:选择模板、选择结果视图、选择相应视图下的版式或图表/报表、选择过滤器或搜索版式。

     

    生成链接

    管理员可点"生成链接"按钮,得到预设了视图或过滤器/搜索栏的页面链接,可将链接添加到左侧栏或其它地方,方便操作。链接中指定了视图/过滤器/搜索栏,则页面中将不显示相应选项;未指定的项,由用户在操作时选择。

     

     

    4.3.2 综合性搜索

     点击顶栏的搜索图标,将打开类似搜索引擎的综合性搜索界面:

    搜索框上方的第一个下拉框,是选择搜索范围。如果选择"数据中心",将在所有有权限的模板中搜索;如果选择某个模板,则搜索该模板的数据,此时将在所有字段中搜索,也可在右侧下拉框中选择具体的字段,此时搜索框将具有输入提示功能。

    搜索框下方,可勾选"限定目录"选项,从而只搜索指定目录中的数据。

    这里的搜索方式和选项会自动记忆,下次打开时,默认按相同的搜索方式。

     

    技巧和说明

    • 指定搜索范围指定一个具体的搜索范围,不但搜索更准确快速,而且会有自动完成功能给予辅助。
    • 无关键字搜索如果不输入关键字直接点搜索按钮,那么:若搜索范围指定为"数据中心"或"信息中心",将会进入数据中心或信息中心;若指定了某个模板,则会打开这个模板的数据;若同时还指定了字段,关键字留空则表示搜索该字段内容为空的记录。
    • 多关键字搜索如果搜索范围为"数据中心"或某个模板,输入以空格分隔的多个关键字,如"A B",则当搜索模式为"包含"模式,表示包含A或B;若是"包含全部"模式,表示既包含A又包含B;若是"不包含",表示既不包含A也不包含B;若是含有"等于"二字的模式,则不按空格拆分,而作为一个整体进行匹配。
    • 日期字段搜索对于日期时间类型字段(遵循"2021年5月等于2021年;2021年包含2021年5月"这样的逻辑),关键字"2021-2-8"匹配当天24小时内这一时间段,"2021-2"匹配整月,"2021"匹配整年。如,可以输入"2021-2"来搜索2月份的订单。可点击输入框上面的日历图标选择日期,或从提示列表(其中包含当天、当月第一天等特殊日期)中选择。如需指定精确的时间,可按"2021-03-21 12:53:00"这种格式输入。
    • 是/否型字段搜索对于"是/否"类型字段,可输入"是/Yes/1/True"表示"是";"否/No/0/False"表示"否"。
    • "介于"模式使用"介于"模式,可输入以空格分隔的两个关键字,表示搜索指定字段介于这两个值之间的记录。如,可输入"18 50"来搜索年龄在18到50岁的人员;输入"2019 2021"来搜索2019年初到2021年底之间签订的合同。
    • "始于/止于"模式对于日期时间和数字类型,"始于/止于"可理解为大于等于和小于等于(如"生日"始于1980,表示搜索1980年1月1日后出生的人员);对其它类型,则表示以指定的关键字开头或结尾(如"姓名"始于"李",表示搜索所有姓李的人员)。
    • "包含/不包含"模式下,多选列表/用户名/机构名字段、允许多项输入的输入提示字段,将执行模糊匹配。如"abc,def",将认为包含"ab"。

     

     

    4.4 版式管理

    表格视图、详情视图、数据输入、数据搜索、左侧栏、首页等都有版式的概念,图表视图和报表视图虽然没有叫做版式,而是分别称为图表和报表,但它们本质上是相同的,相应的规则和管理方法也相同。下面以详情视图为例,看看版式管理的方法:

    版式管理,主要包括对版式(或图表/报表)的更名、删除、设置默认版式等操作。可以先在版式列表中设置一个全局的默认版式,有特殊需求的情况,再在下面添加默认版式规则,其优先于全局的默认版式设置,且越是新添加的规则优先级越高。
     

    默认版式规则

    有时候,我们希望在不同情况下,或对于不同的人,使用不同的版式来显示。这就需要设置默认版式规则,它用于确定在哪种情况下默认使用哪种版式。

    例如,对于"报价单"详情视图,可设置默认版式为"报价单版式",然后添加一条默认版式规则,指定当"状态"为"已下单"时,使用"订单版式"。

    系统在确定使用哪个版式时,会从默认版式规则最后面开始逐个往上检查,选择第一个匹配的规则所指定的版式,如果没有,则使用全局设置的默认版式。用户浏览时手工选择的版式则优先于任何默认版式设置。
    如果勾选了"禁止普通用户切换版式",则普通用户(对模板没有完全控制权限者)将不会显示版式切换按钮(除非流程中给定了版式管理权限)。

     

     

    第五章 模板设置

     

    5.1 基本设置

    在设计中心,模板上右键 - 设置,打开模板设置对话框:

    默认视图

     指定默认的数据视图。移动端可以单独指定,未指定则使用相同的默认视图。

    默认过滤器

    默认过滤器,指直接打开该模板数据时,默认使用的过滤器。通常应设为"无"。
    通过搜索或链接等方式打开时,不会应用默认过滤器。

    默认排序方式

    指定默认的数据排序字段和排序方向。

    默认保存目录

    指定新添加的记录默认保存在哪个目录,以及是否关联到目录。如果设为不关联到目录,则数据不存在于任何目录中。

    如果指定了默认保存目录,在经典版式添加记录时,可修改保存目录;也可以在表格视图中,批量操作,将记录移动到某个目录。
    缩略图字段

    选择一个图片字段作为缩略图字段。缩略视图或目录中,每条记录将使用该字段的第一张图片作为缩略图。

    标识字段

    指定一个字段来代表记录的名称,便于识别。它将显示在缩略图下方,并作为详情页的默认标题。

    概要字段

    概要字段,主要用于缩略图上鼠标掠过时显示记录的基本信息。概要视图的默认格式也会将概要字段显示在前面。

    组合唯一字段

    组合唯一字段,指多个字段组合起来唯一地标识一条记录。组合的值不允许重复。
    如,不同城市可能有相同的电话号码,但加上区号后,就不会重复了。区号和电话号码,就是组合唯一字段。
    通常无需设置此项,除非确有必要。

    数据有效性验证

    勾选并设置验证条件后,录入或编辑的数据必须符合预设的条件才认为有效,否则不予保存。

    启用数据结转

    启用后,可设置定期自动或手动将数据或统计结果结转到另一个表中。详见:数据结转

    注:V27版已将结转功能转移到“生成”标签页下,并支持添加多个结转。
    允许评论

    如果勾选,在每条记录下面,用户将可以发表评论。

     

     

    5.2 数据结转

    结转,就是将日常流水式的数据定期转移到另外的表中,以便于核算、封存数据,并减少当前表中的数据量。例如,员工计件工资,按月度结转,可以将统计数据结转到工资发放表,将明细记录结转到历史数据表。

    结转统计结果将待结转数据进行统计,把统计结果作为一条记录添加到指定的模板数据表中。需设置要统计的字段和计算方法,以及对应到目标表中的字段。

    结转源数据将待结转的记录按所设定的字段映射关系逐一生成到指定的目标模板数据表中。

    若指定了结转时机,则仅在所指定的时段内可以执行结转,否则随时可结转。
    若设置了自动结转,系统将在进入结转时机后三分钟内开始执行。因此,如果想每天9点自动结转,可以将结转时机设为“每天最后15小时”。

     

    操作权限

    用户需满足以下权限要求,才能执行结转:

    • 对待结转模板有浏览权限,且未被数据保护设置"禁止浏览";
    • 对结转目标模板有添加记录权限;
    • 如果指定了"结转后删除源数据",则对待结转模板要有数据管理权限(允许添加记录且未"禁止编辑或删除他人添加的记录"),且未被数据保护设置"禁止删除"。

     

    同步结转

    同步结转,即同时自动结转其它模板的数据。对于子模板,将结转关联数据,非子模板则由结转条件决定。因此,如果子模板设置了结转条件,或非子模板未设置条件,将不能被设置为同步结转。

    被设置为同步结转的,不能单独执行结转操作,除非它也设置了同步结转其它模板。

    父子关系的一对模板,如果都设置了结转,建议在主模板上设置同步结转子模板数据,以保持数据同步性和完整性。

     

     

    5.3 模板关系

    模板关系,指不同模板的数据之间的关联关系,包括:

    一对一如供应商和供应商收款信息;
    一对多如产品与产品投诉记录;
    多对多如学生与选修课程。
     

    以订单管理为例,它涉及到订单的基本信息和订单中的商品清单,我们也许会考虑用一个订单模板来管理,但实际上应该分为"订单"和"订单明细"两个模板,才便于对商品明细的录入和统计,这二者就是一对多的(父子)关系,它们通过订单号关联:

    建立起了这种模板关系之后,在订单录入和浏览时,就可以方便地对其相关的商品明细进行增删操作了,也可以在详情页面通过查询来获取并显示这些明细记录。
     

    如何建立模板关系?

     方法一

    分别建立主模板和子模板后,在设计中心,主模板上右键 - 设置 - 关系 - 添加子模板。如上图所示,指定二者的关联字段及相关选项即可。

    关联字段的要求:必填字段、长度不超过255、不使用编辑器。主模板的关联字段还要求"不允许重复值"。满足这些条件的字段才会出现在关联字段列表中。如果后续修改了关联字段,导致其不再满足这些要求,模板关系将自动失效。

    模板关系的部分选项说明:

    同步更新关联字段即主模板中关联字段修改时,将同时修改子模板中相应记录的关联字段值,使之保持同步。如果不勾选该项,那么主模板中关联字段的修改将导致子模板中原有关联记录丢失关联,因为二者的关联字段不再匹配。

    同步删除关联记录当主模板记录删除时,自动从子模板中删除其关联的记录。

    同步添加关联记录当添加主模板记录时,自动在子模板中也添加一条对应的新记录,该记录带入了关联字段值。如果希望能自动带入更多字段值,请在子模板上添加"生成"设置,添加二者间的字段映射关系。勾选了该项,意味着二者之间是一对一关系,主模板记录将不允许添加更多的子模板记录。

    必须填写关联记录在添加主模板记录时,如果版式中有子模板输入界面,则必须填写子模板数据才能保存。该选项并不能保证主模板记录一定存在对应的子模板记录。

    添加模板关系后,在主模板的经典版式输入页面,将自动出现子模板的多行录入版式界面。

    满足条件时锁定关联记录指定当主模板记录满足预设条件时,锁定其对应的子模板记录,不允许再修改、删除和添加。 

    方法二

    在设计中心,空白处右键 - 高级 - 添加主从模板,可以一次性建立起主模板和子模板,以及它们的关联字段,并自动建立起模板关系、版式和查询定义。如果输入多个子模板名称(逗号分隔),还可以同时创建多个子模板。
     

    在添加子模板时,勾选"同步添加关联记录",即为一对一关系。
    多对多关系,通常无需在模板上设置模板关系,或者在一方设置另一方为子模板,甚至也可以互相设为子模板。可根据需要选择一种最合适的方式。如果不设置模板关系,可以通过在详情视图版式中定义查询来获取和显示另一方的关联数据;在录入数据时,也可以在自定义版式中拖入另一方的模板占位标记,从而可以在同一页面输入这两个模板的数据。

     

    数据同步

    在子模板列表中,可点击右侧的同步图标来对子模板进行数据同步处理:

    • 对于"同步删除关联记录"的子模板,如订单模板和订单商品明细模板,"同步"操作可从后者删除已经不存在的订单的明细记录;
    • 对于"同步添加关联记录"的子模板,如员工信息模板和员工配偶信息模板(属一对一关系),"同步"操作可参照前者每条记录,检查后者是否存在相对应的记录,没有则自动添加,以确保每条员工记录都有一条对应的员工配偶记录。 
       
    同步功能具有很高的优先权,会忽略重复性控制和数据保护约束。同步添加关联记录,只要求对子模板有任意编辑权限;同步更新关联字段,不要求任何权限。
    同步删除关联记录时,受到数据保护"禁止删除"的,以及被其它父模板"满足条件时锁定关联记录"的,将不会删除。

     

    组合

    组合,用于将其它表的相关数据组合到当前表中,从而实现跨表统计和分析。如,将订单数据组合到客户的报表中,查看客户的订单统计。

    设置组合,只需指定关联字段和要组合的字段即可,这些组合过来的字段,可在报表视图参与生成报表。

    在报表中使用组合的字段时,对组合的表会忽略权限和数据保护限制,并且如果是一对多关系,一条记录与它匹配的N条记录组合将产生N行。例如,产品表组合了库存表,后者包含同一产品不同颜色的出入库记录,那么组合颜色字段后,若某产品存在3种颜色,就将会产生3行明细记录,这3行中只有组合的字段是不同的。

     

    5.4 数据保护

    数据保护,用于对数据进行编辑或删除等方面的操作限制。其凌驾于权限设置之上。

     

     

    5.5 提醒

    提醒,是在满足某种条件时,通过指定的方式对指定的用户进行通知。可指定提醒的方式、条件、对象和时机:

    部分选项说明

    检查时机

    指定在什么时候检查数据(有满足条件的数据则提醒)。可设置定期检查,或添加/更新数据时检查。

    已提醒的记录未修改就不再提醒

    若勾选,则提醒一次后,这些数据就不再提醒了,除非有修改。

    单条记录则包含其所有字段数据

    如果符合条件的记录只有一条(通常是在不设条件的情况下,指定添加数据时提醒),则提醒内容中将显示所有字段的内容(忽略字段权限)。

    附带发送

    指定发送提醒消息时,同时附带这些数据的统计报表/图表,或详情页面(仅第一条)。例如,每月自动提醒,发送订单统计报表。

    在提醒列表中,取消前面的选框,可停用该提醒,以后需要时再选中即可重新启用。
    系统执行提醒检查时,是以系统身份,而不是按收到提醒的用户身份来运行,因此会忽略权限限制,用户打开提醒链接看到的记录数量,可能少于提醒的数量,"附带发送"功能,在生成报表/图表/详情页面时,也是忽略权限限制的。

     

    示例

    实现到期前提醒提醒条件设置为:到期日期【在之后…】一日,即可实现提前一天提醒。

     

    5.6 生成

     生成,即利用现有数据来产生新的数据。通过指定两个模板间的字段对应关系,即可用一个模板的记录来生成另一个模板的记录。例如,用员工信息生成职称评定申请表,或选择产品生成报价单。

    生成方法的设置,就是指定源数据与本模板的字段对应关系,从而在浏览源数据时,可以选择记录来提取这些字段生成新的数据记录。

    设置后,在源数据表格视图,可以从某一行右键菜单中生成,将自动提取映射的字段内容进入编辑状态,完善表单后保存为新记录; 也可以从"批量操作"对话框中点生成按钮,用选中的记录来生成。如果目标模板有父模板,则后者对应的生成按钮,可以打开父表单录入页面,选中的源记录将生成为其子表单记录,如下所示:

    设置了生成功能后,也可以在多行录入界面点击表格下方的省略号图标,从源表选取数据。

     

    部分选项说明

    浏览源数据时,允许…

    用于控制显示哪些生成按钮或菜单项(有父模板的可显示生成父表单的按钮,用于弹出父表单编辑界面,而所选的源数据则生成为其子表单记录)。

    生成为编辑状态

    从菜单或链接生成时,是将源数据提取并填充到目标表单供完善后保存。但从“批量操作”中生成目标记录时是直接生成,不会进入编辑状态。勾选该项后,批量操作对话框中只会出现生成父表单的按钮。

    生成后删除源数据

    勾选后,生成操作完成后将删除所用到的源数据记录。

     

    应用示例

    1、有员工信息表员工职称评定申请表,在后者设置生成方法,将员工基本信息字段添加映射。生成时,可以为单个员工生成申请表,在填写其余内容后保存并打印;也可以批量生成一批员工的申请表,使用概要视图(设为使用详情视图格式)批量打印后发给员工自己填写其余内容。

    2、有产品报价单及其子表报价产品明细,在报价产品明细表上设置生成,将产品表的名称、规格等字段映射到对应字段。这样,在浏览产品时,选择一批产品,点“生成报价单”,就生成为报价单明细记录了,只需填写报价单表单并保存即可(如上述截图所示)。也可以在批量操作对话框中将选择的产品添加到已有的某个报价单。

    3、有报价单及其子表报价产品明细订单及其子表订单产品明细,设置“报价单→订单、报价产品明细→订单产品明细”的生成映射,就可以在浏览报价单时方便地将其生成为订单。

    4、有值周安排表,设置从本模板生成(不添加字段映射),可以在浏览时,选择几行来生成新的一周值周安排(相当于复制记录)。

    5、有报价单及其子表报价产品明细,分别设置从本模板复制记录。这样,就可以用某个现有的报价单来生成新的报价单(相当于分别复制原报价单及其明细记录)。

     

     

    5.7 自定义操作

    自定义操作,用于定义一个命令,在数据浏览界面呈现为一个按钮,点击时将执行预设的动作。比如:

    上图示例,添加了一个"完成"操作,用于将报价单的"状态"设为"已完成"(操作条件为:"状态"不等于"已完成")。
     

    部分选项说明

    动作

    指定将某字段设为某值。

    提示

    指定操作时的确认消息。

    授权

    指定允许执行该操作的角色。

    仅用于符合条件的记录

    指定适用于该操作的条件。不满足条件的记录,不会出现操作按钮。

     

    说明

    • 为字段设定的值,可使用变量。在执行操作时,变量会替换为相应的值。如:$UserName$于$Now$确认
    • 为字段设定的值,可以使用字段代码,并可使用公式语法对字段进行运算或函数处理。如,将字段[F73K]设为:[F73K]+1,将实现数值递增。
    • 一旦使用了字段代码,系统即视为公式,应遵循公式语法。如:'$UserName$ 确认成本:' + [F9SU]
    • 若使用公式语法,自定义操作会忽略字段的输入规范;单选/多选列表、链接类型字段,不支持使用公式语法。
    • 代码对应的字段若没有值,则对于数值类型将视为0,对于文本类型将视为空文本。
    • 自定义操作会忽略字段输入提示的"只接受数据源的值"选项。
    • 自定义操作会忽略模板权限设置,但受制于数据保护设置。即,只要没有将数据保护设为"禁止编辑",就可以操作,无论是否有编辑权限。可以设置为忽略数据保护,详见:更多设置。
       
    自定义操作可实现简单的审批功能,例如:合同模板中有"审核状态"字段(默认值为"未审核",不给任何人编辑权限),添加一个自定义操作"审核",授权给相应角色,并指定条件为未审核的记录,这样,被授权的人员就可以随时在表格视图或详情视图进行审核了。

     

     

    第六章 用户、角色和权限

     

    用户,包括管理员建立的用户和自行注册的用户(如果允许注册)。角色,是一类用户的统称,如公司领导、销售员、供应商等。权限是设置给角色的,用户归属于某个角色就拥有了这个角色的权限。

    一个用户可以设为多个角色,其权限将是这些角色权限的叠加。

     

    6.1 用户管理

    管理员,或具有用户管理权限的用户,可以通过顶栏的系统管理或用户管理图标,进入用户管理页面:

    在左侧组织机构树上点击任一机构,此时会在右侧列出该机构下的机构和用户。在右侧空白处右键,可从菜单中添加机构或用户。

    可拖动用户或机构到某个机构图标上,将其移入该机构(或通过右键剪切后,进入目标机构粘贴)。

    添加用户时,只需输入用户名,那么用户的密码等信息如何处理呢?实际上,添加一个新用户时,采用的是默认用户信息,添加后,可用该用户身份登录系统,点右上角用户图标来修改自己的密码和个人信息。在新用户登录之前,管理员可修改用户的个人信息。
    点击左侧的"设置默认用户信息",可修改初始密码等默认用户信息。该操作影响之后添加的新用户,不影响现有用户。
    系统设置中如果勾选"允许用户注册",则登录页面会出现注册链接,点击可自行注册用户。此时将由用户填写密码和其它个人信息,而不是采用默认用户信息。系统设置中同样可设置新用户的默认角色,以及启用哪些个人信息字段。
    用户管理中添加的新用户,以及被重置密码或自行找回密码之后,登录时将被要求修改密码。
    如果系统使用 SQL Server 数据库,当用户登录时输入错误密码超过一定次数,用户将被锁定,第二天自动解除锁定。Access 数据库没有用户锁定功能。
    系统设置中,可指定是否允许一个账号在不同地方重复登录,如果不允许,先登录的会被强制注销(移动端和电脑端可同时登录),但可以建立一个名为"公共帐户"的角色,设为该角色的用户,可以重复登录且不允许修改密码。

     

    如何建立组织机构树?

    所谓机构,就是类似部门、科室之类的内部组织单元。用户管理中,应按实际的组织结构来建立各个机构,以及机构中的人员(用户)。组织机构主要用于在流程中确定相关人员,例如,可指定某步骤的处理人为发起人的部门负责人,或某机构下所有人员。
     

    组织机构级别称谓

    点击左侧的"设置组织机构级别称谓",可设置各个机构层级的名称,这有助于直观地描述和定位机构。例如,在流程设计中指定处理者时,可指定为发起人的"部门"负责人,系统就能准确地找到"部门"是哪一层的机构,从而确定其负责人是谁。

    请按从上到下的顺序填写各个级别的称谓序列,确保与机构设置相匹配,以逗号或顿号分隔。如:集团、公司、部门、科室、小组。
     

    用户管辖级别的确定

    机构中的的普通成员,虽然与负责人位于同一机构,但他们是负责人的下级;用户"分管"机构选项,同样是用于确定管辖范围的。

    管辖范围的确定,主要是用于流程中确定相关人员。例如,某步骤的处理者可能设为"交办人"的"直接下级",或"部门"直属成员。

    分管的机构,是指机构中非负责人用户所管辖的下级机构。例如部门经理的助理,其不是负责人,但仍可能管理部分下级机构。
    下级机构的负责人,是否算作本机构的直接成员,系统设置中有相应选项控制。

     

     

    6.2 角色管理

    角色,可以理解为用户类别,或者是系统中的一种身份。系统中的各种权限都是授予给角色的,管理员只需把用户设置为适当的角色,该用户就具有了这个或这些角色的权限。

    管理员可点击顶栏的系统管理图标 - 角色管理,来添加、删除角色,或者为角色设置权限:

    系统管理员角色只是系统预置的一个普通角色,它的"系统管理"权限也是可以取消的。但至少要有一个角色具有系统管理权限。
    信息中心的浏览权限级别,是与信息发布时指定的密级配合生效的,只有浏览权限级别等于或高于密级时才可浏览。

     

    模板权限

    角色对于各个模板的权限,需要在设计中心,模板右键 - 权限,来单独设置:

    在上图中,可分别选择各个角色,来查看或设置其权限,都设置好之后,点确定按钮生效。

    模板在创建后默认仅创建者和管理员有完全控制权,其他用户没有任何权限。在明确设置权限后,创建者不再具有特权。
    如果勾选了"完全控制",则可对模板和数据进行任何操作,如修改模板设计、备份和清除数据等。
    浏览权限

    即查看数据的权限。具体又分为0~10共11个级别,与数据的保密级别相对应,只有浏览权限高于或等于保密级别,才能查看。如图示:

    在此基础上,还可以勾选"仅允许浏览符合条件的记录",来进一步限定浏览范围,如:限制用户只能查看自己添加的记录,条件设为:[创建人] 等于 $UserName$

    编辑权限

    指定是否允许录入或编辑数据,以及可编辑哪些字段。

    如果对一条记录有编辑权限,则无条件具有浏览权限;如果某字段保密级别高于浏览权限级别,则浏览时看不到该字段内容,但对该字段有编辑权限则例外。
    评论权限

    查看、发表和删除评论的权限。仅当模板设置中"允许评论",才会出现该选项。

    流程权限

    创建了流程的模板,流程运行中的权限由流程设计中指定。流程"开始"步骤指定的"处理者",才能发起该流程。

    创建了流程的模板,权限设置处将出现"流程外操作表单数据"选项,设为只读或允许时,才能在流程外查看或操作(受下方权限设置的控制);设为禁止时,将只能在事务中心以流程模式查看和处理。

     

     

    第七章 流程

    流程,就是一项需要多个步骤来有序处理或协作的事务,例如文件审批,费用报销等。

    本系统中,流程是依附于模板的,模板负责流程运转过程中的表单数据采集和展现,流程则负责控制流转的各个节点,及其处理人员和权限等。

     

    7.1 流程设计

    在设计中心,模板右键 - 设置,切换到"流程"标签页,点击"创建流程",即可开始设计流程:

    关于流程,请首先记住两个要点:

    • 流程开始节点指定的处理者,才能发起该流程。
    • 流程设计的修改,不影响之前已有的流程事务。发起流程时,会保存当时的流程设计版本,并应用于整个流程,不受后续流程设计变更的影响。

     

    术语

    步骤

    流程中的每一个处理环节,就是一个步骤,在设计中也叫"节点"。

    交办人

    提交流程事项给本步骤的人,亦即上一个步骤的最终处理人(他让流程流转到本步骤)。

     

    步骤类型

    审批/确认

    这种步骤有肯定和否定两种处理结果,通常意味着同意或不同意。

    事务处理

    这种步骤就是一项工作任务,只有"完成"这一种处理结果。完成之前,执行人可以报告完成进度。

    抄送

    类似于邮件抄送,这种步骤主要用于告知相关人员。它不能添加后续步骤。
     

    操作要点

    • 在任一节点上点右键,可添加或指定其下一步骤;
    • 点击节点,可对该步骤进行设置;
    • 拖动节点,可调整位置;
    • 点击节点连接线,可设置该路径的流转条件,满足条件才能流转到它指向的步骤。
       
    对于"审批/确认"类型步骤,无论处理结果是肯定还是否定,都意味着完成了该步骤的处理,将按设计的路径往下流转。如果需要在否定操作时走不同路径,需在设计时明确指定,或使用"拒绝时否决流程"选项(使流程回到发起人,成为"未提交"状态)。
    节点权限中设置的表单编辑权限,仅在流转到当前步骤时有效;对流程的删除、评论等权限则随时有效。
    如果流程需要填写子模板表单,则当子模板设置为引用流程表单模板权限时,按流程设计中的权限规定控制,否则按子模板的权限设置控制。
    各步骤"通知"设置中的"流程参与人",未包含流程发起人。

     

    7.2 流程运行和管理

    创建流程之后,可从以下途径发起流程:

    • 点击顶栏"事务中心"图标,打开后点"发起流程"按钮;
    • 从左侧栏"事务"版块点"发起流程"链接;
    • 在首页,点击"发起流程"图标。
       

    发起流程页面,列出了所有本人可发起的流程(即本人是开始节点"处理者"的流程)。点击某个流程,进入流程表单填写界面:

    流程提交后,将进入下一步处理人员的"待办事项"中。发起人也可以进入事务中心,来查看和管理自己发起的流程,以及自己的待办事项和已完成事项:

    上图"我发起的事务"中,右侧的操作图标,以最后一行为例,分别是:查看流程状态图、转办(即改变某步骤的处理人)、暂停、删除流程。

     

    计划任务

    计划任务,用于按指定的时间周期自动重新发起指定的流程。

    点击"计划任务"按钮,在"添加计划"处,选择或输入自己发起的某个流程,点"添加"按钮。添加到列表后,再点编辑图标,可修改计划的时间周期等设置。

    系统自动重发的流程,会采用原有流程设计版本,及原有的数据表单(但自动编号/变量类型字段会更新)。
    计划任务执行达到预定次数后,会自动删除;如果计划任务执行失败,可在系统日志中查看原因。

     

     

    第八章 信息发布和沟通
    8.1 信息中心

     信息中心,是系统中用于发布新闻、公告/通知、技术文档等内容的一个功能,由于其支持评论,也可作为论坛使用。

    系统设置中可自定义信息中心的名称和栏目,以及文章和评论是否需要审核等。
    有信息中心管理权限者,可将文章置顶或删除。

    从顶栏点击信息中心图标,或从左侧栏信息中心版块点击链接,以及从页面右下角快捷菜单,都可以进入信息中心。

     

    信息发布

    有发布权限者,可在信息中心点击"发布"按钮,来发表文章:

    上传附件时,不光可以点击虚线框来选择一个或多个文件上传,还可以直接将文件拖到附件这一行的区域,或者点击一下该区域后按 Ctrl+V来粘贴截图。
    接入微信公众号/企业微信之后,也可以通过微信消息的方式来发布信息。

     

    术语

    摘要

    用于概述主要内容的一段文字。摘要内容将显示在文章列表中,方便浏览时了解大致的内容。

    标签

    标签是一种开放式分类方式。可将自己发布的文章加上一个或多个标签,以便浏览者能方便地找到相关的文章。

    密级

    用于确定文章的保密程度,只有浏览权限级别不低于该级别的用户,才能浏览。如果设为"仅本人可见",则其他任何人都看不到该文章。

    置顶

    置顶,就是将文章固定显示在文章列表的前面。无论怎样排序,置顶的信息都会排列在未置顶的之前。

     

     

    8.2 消息

    消息,是系统预置的一个类似内部邮件系统的功能模块,用于系统内部用户之间的交流。提醒功能和流程通知功能,如果选择了"消息"方式,也会以"系统"身份给用户发送消息。

    系统中,以链接形式显示的用户名,都可以直接点击来给该用户发送消息。

    有消息发送权限者,可点击顶部"消息"图标,或左侧栏"发送讯息" - 消息,或者页面右下角菜单,进入消息发送界面。直接点击左侧栏的"发送讯息"链接,则可以选择发送方式,其界面与发送消息或邮件是相似的:

     

     

    8.3 邮件发送

     邮件发送功能,需要先在系统设置中设置好发件邮箱的服务器信息,系统发送邮件时,会以该邮箱身份,通过这些信息连接邮件服务器并提交发送。本系统不具有邮件接收功能。
     

    邮件发送设置

    进入系统管理 - 系统设置 - 邮件发送设置。在这里设置发送邮件所必需的一些信息。"发件邮箱地址"及"发送者的名称"分别填写发送邮件所用的邮箱及发送方的名称,其余选项可向该邮箱的服务提供商咨询,或查阅其在线文档中关于SMTP设置的部份。

    请确保邮箱开启了SMTP服务;如果邮箱设置了使用授权码登录第三方客户端,则上图中应使用授权码作为密码。请登录邮箱网页版,检查这两项设置。 参考:QQ邮箱设置网易邮箱设置

     

    邮件发送

    与发送消息的操作路径一样,可通过多种途径打开邮件发送界面(与发送消息界面相似,此处不再放置截图),然后输入收件邮箱,或从右侧选择用户(系统会自动获取其对应的邮箱),输入主题和内容即可发送邮件。

    如果有批量发送权限,在表格视图有"特殊文本 - 电子邮箱"字段时,其批量操作对话框将出现邮件发送框,可以为当前表格选中的或所有的邮箱发送邮件。

     

     

    8.4 短信发送

    进入系统设置,切换到"功能"标签,可启用和配置短信发送功能。短信账号和充值相关事宜,请通过官网联系客服咨询和办理。

    与发送消息一样,可通过多种途径打开短信发送界面,此处不再截图。如果有批量发送权限,发送的手机号码可以输入多个,以逗号或换行分隔。

    启用短信功能后,可以在系统设置 - 自定义登录页,启用短信验证登录功能,使用户可通过短信验证码登录系统;同时,用户个人信息中的手机号也将会要求验证。
    启用短信功能后,用户找回密码时,默认将以短信方式发送临时密码。可在系统设置 - 更多设置,修改此默认行为。

     

     

    8.5 微信接入

    微信接入,是将系统与微信公众平台对接,从而可以给用户发送微信消息,或响应用户的微信查询等操作。

    微信公众平台包括服务号订阅号企业微信等,主要用于企业或组织面向公众提供信息发布、通知、响应用户查询请求等。了解更多:微信公众平台几种公众平台对比和区别

    由于需要与微信服务器双向交互,系统必须能够访问互联网,且能被互联网访问,并设置了正确的"互联网访问地址",才能接入。

    进入系统设置 - 功能,勾选"微信功能",并点击旁边的"设置",进入微信功能设置页面:


     

    企业微信、服务号/订阅号,该如何选择?

    企业微信没有发送消息数量的限制,适用于企业内部;服务号/订阅号,发送消息给用户有数量限制,适合于面向客户或公众。二者的数据查询功能是一样的。
     

    企业微信接入步骤

    1. 注册企业微信

    2. 登录企业微信,点上方"通讯录",添加机构和成员,同时邀请被添加的成员加入。

    3. 点击上方"我的企业",记下CorpID值。

    4. 点击上方"企业应用" - "添加应用",输入名称等信息,点"创建应用",记下应用的 AgentId 和 Secret,再点"接收消息"处的"设置",填入URL(即本系统 weixin.aspx 页面的互联网地址,如:http://domain.com/weixin.aspx),并随机获取 Token 和 EncodingAESKey,暂勿保存。

    5. 在本系统启用微信功能,在微信设置界面,点"添加应用",输入名称和前两步得到的 CorpID、AgentId、Secret、Token 和 EncodingAESKey,点确定。再回到上一步的企业微信界面,点保存,完成配置。

     

    服务号/订阅号接入步骤

    1. 注册服务号/订阅号

    2. 登录服务号/订阅号,点右上方帐号图标,帐号详情,找到"原始ID",复制备用。

    3. 在左侧菜单栏,点"开发"下的"基本配置",将开发者ID(AppID)复制备用,生成开发者密码(AppSecret)复制备用。

    4. 在"服务器配置"处,点"修改配置",在 URL 处填入本系统 weixin.aspx 页面的互联网地址,如:http://domain.com/weixin.aspx,Token 处填入一个自己的密码,EncodingAESKey 处,点"随机生成","消息加解密方式"选"安全模式"。

    5. 在本系统启用微信功能,在微信设置界面,点"添加应用",输入名称并选择应用类型,再分别填入前两步得到的 AppID、Account(即第 2 步中的原始ID)、AppSecret、Token 和 EncodingAESKey,点确定。再回到上一步的服务器配置界面,点提交,成功后,点"启用"。

    启用服务器配置后,自定义菜单就被停用了。可以这样来重新启用:先停用服务器配置,再开启并设置菜单,再重新启用服务器配置,再点左侧的"添加功能插件",点"自定义菜单",开启。

     

    用户绑定

    用户绑定,就是建立起用户的微信身份和本系统中用户账户的对应关系。

    以上接入成功后,用户加入企业微信或关注公众号,发送任意消息,将返回一个包含"账户绑定"链接的消息,点击链接即可绑定或注册账户(如果系统设置中允许注册)。管理员可在用户管理页面解除用户的微信绑定。
     

    通过微信与系统交互

    绑定账户后,用户微信中就可以收到系统提醒或通知等消息了。此外,用户也可以主动发送消息:

    查询数据

    微信端可发送"Q"开始查询,输入"?"了解查询语法。如,输入"2.5 重庆",查询表2中字段5包含"重庆"的记录。如果关键字不是数字,可省略空格,如:2.5重庆。

    发布信息

    在微信中按"# 标题(换行)内容"的格式发送消息,即可在信息中心中发布。如:

    # 会议通知
    下午14:30,在第二会议室召开方案评审会议…

    若需指定发布的栏目,可在标题中加上"{栏目}",如:# {通知}会议通知

    发布内容支持 Markdown 语法,以简单的标记呈现丰富的格式。

    上传文件

    在微信功能设置的"选项"标签页中,可勾选"接收微信端发来的文件,存入目录",这样,用户就可以随时使用微信发送图片、语音或视频给企业微信/公众号,系统将自动存入指定目录。

    扫码登录

    只有企业微信和经过认证的服务号,可以使用微信扫码登录。设置微信接入后,可在系统设置中"自定义登录页面"启用该功能。

    对于企业微信,接入之后,需要在企业微信后台"应用管理"中,打开关联的应用,在"企业微信授权登录"处,设置"Web网页"的授权回调域,该域名应与本系统设置的"系统互联网访问地址"中的域名一致。

    对于服务号,需要在服务号后台的"功能设置"中设置"网页授权域名",并注册微信开放平台,创建网站应用,经审核后生效。
     

    免登录链接

    免登录链接,是将系统中的页面链接生成为微信中可自动登录系统的链接。这种链接通常用于作为微信公众平台的菜单,当用户打开时,将自动以绑定的身份登录系统,直到用户被删除、锁定,或解除绑定。

    要实现自动登录,对于企业微信,需在后台设置可信域名,即"接收消息"设置中URL的域名;对于已认证的服务号,需在后台点右上方帐号图标-功能设置,设置业务域名和网页授权域名,与系统的互联网访问地址的域名一致。
     

    说明

    • 系统中如果添加了多个微信应用,则后台设置中的URL需要加上ID作为参数,如:http://domain.com/weixin.aspx?app=Aedk;在系统中发送消息时,将使用默认的应用。
    • 在微信端发送图片时,建议选中"原图",以免图片被自动缩小。

     

    常见问题

    发送微信消息出错

    微信功能需要外网可访问系统,因此要确保在微信后台配置的回调地址是可以从外网访问的。

    微信中收不到企业微信消息

    如果安装了企业微信APP,它将接管来自企业微信的消息。可在其"设置-新消息通知-仅在企业微信中接收消息",关闭相关选项,个人微信就能收到消息了。

    服务号/订阅号发送消息出错,或收不到

    服务号/订阅号向用户发送消息,有以下条件和规则(因此不建议用于发送消息):

    • 经过认证的公众号,才有权限发送消息;
    • 需在公众号后台的"开发"-"基本配置"-"IP白名单"处,将本系统服务器IP地址加入白名单;
    • 每月最多发送 100 次消息,且对于每个用户,服务号每月仅可发送4条,订阅号每天仅可发送1条,超出后,即使显示发送成功,用户也收不到;
    • 未关注公众号的、被加入黑名单的、关注但未绑定账户的,不会收到消息;
    • 发送消息后会有所延迟,可以过几分钟再检查。

    redirect_uri参数错误

    这通常出现于从微信收到的消息中打开链接时。需要在企业微信的应用中"网页授权及JS-SDK"处设置可信域名,且可信域名必须已备案。

    redirect_uri需使用应用可信域名

    需要在企业微信的应用中设置可信域名,并且要和本系统设置的"系统互联网访问地址"中的域名一致。

    redirect_uri域名与后台配置不一致

    需要在服务号/订阅号中设置网页授权域名,并且要和本系统设置的“系统互联网访问地址”中的域名一致。域名要求已备案,不支持IP地址和端口号。

    Scope 参数错误或没有 Scope 权限

    微信扫码登录功能,如果使用的是订阅号,或未认证的服务号,将会出现该错误。请使用企业微信,或经过认证的服务号,并设置网页授权回调域名。

    怎样查询自己的账户绑定情况?

    在微信中发送消息"me"。

     

     

    第九章 系统管理

    管理员(即所属任一角色具有系统管理权限)可从顶栏点击系统管理图标,进入系统管理页面:

     

    9.1 系统信息

    上图中,在"关于本系统"标签页,包含了系统基本信息、软件注册和软件更新三部分内容。
     

    软件注册

    本系统授权方式分为注册码和加密狗两种方式。

    注册码

    注册码授权,是根据服务器硬件特征产生的唯一标识码(即机器码)来生成的授权码。购买软件并获得注册码后,填入"注册码"处点击注册按钮即可完成授权。

    由于注册码授权是与服务器绑定的,因此如果更换了服务器,授权就会失效;服务器更换CPU或主板也可能会导致注册码授权失效,但更换硬盘、内存等,或重装操作系统,不会产生影响。

    加密狗

    如果购买本系统时选择的是加密狗授权,将会收到一个U盘状的加密狗,将其插入服务器USB接口,然后在本系统的"系统维护- 其它",点击"重新启动系统"按钮,系统将会以该加密狗为绑定对象,因此机器码也会发生变化。提供此机器码得到相应的注册码并进行注册后,软件就可以随加密狗一起迁移,而保持授权有效。

    如果使用本地服务器,考虑到今后服务器的更换,建议选择加密狗授权;如果使用云服务器,则只能使用注册码授权。可通过本系统官网联系客服,代购云服务器,从而确保在云服务器硬件升级或变更机房导致授权失效后,可免费重新授权。

     

    软件更新

    在线更新

    如果服务器接入了互联网,可点击"检查更新",服务器将获取软件的最新版本信息,然后点击"更新"按钮,即可自动将系统更新到指定的版本。

    离线更新

    如果服务器没有接入互联网,可在"离线更新"处的"下载累积更新包"链接上右键,复制链接地址,在其它接入了互联网的电脑上下载更新包,再复制到服务器上,点旁边的"更新",选择更新包文件,系统会上传该更新包并进行更新。

    手工更新

    如果在线更新或离线更新失败,可按手工更新处的指导步骤来进行更新。

    通常可从任意低版本升级到最新版本,但如果版本跨度太大,也有可能更新失败,此时请联系技术支持;通常也可以从高版本更新到临近的较低版本,但如果跨度太大,也可能导致版本回退后程序出错。

     

     

    9.2 系统设置

    管理员可从系统管理中进入系统设置页面,对一些选项和功能进行设置:

     

    部分选项说明

    系统互联网访问地址

    如果系统是可以通过互联网访问的,那么此处应该填写其访问地址,例如:https://domain.com/。系统在生成某些链接地址(例如邮件通知中)时,以及微信接入等功能,都需要用到它。

    自定义顶部导航栏

    如上图中弹出对话框所示,可以为顶栏添加功能图标,以及启用背景图、更换Logo图标。

    更换logo后,用户浏览器需清空缓存才会生效。
    自定义登录页面

    设置登录页面的风格、功能和自定义内容等:

    风格可以选择几种不同风格的背景图片。

    想要使用自己的背景图?可以在系统 App_Themes\Default\images 文件夹中,找到现有的背景图片文件,替换为自己的背景图文件即可。然后浏览器清空缓存后刷新登录页面,就可以看到效果了。

    用户名指定登录界面是从列表中选择用户名,还是由用户自行输入用户名。

    当系统中用户数量较多时,系统会强制为输入用户名方式。

    启用验证码将在登录框中显示并要求用户输入图形验证码。

    自定义内容可以在登录框左侧和底部的两个虚线框中输入自定义的文字或图片等内容。

    通常,可以在登录框底部添加网站备案号链接,或版权信息。

    生成登录链接可以根据需要来生成有特殊功能的登录链接, 例如可指定默认登录方式、登录后的跳转页面等。

    允许重复登录

    指定同一账号是否可以同时在不同地方登录系统。如果不允许,则后登录者将导致先登录者被强制下线。

    如果在电脑端和移动设备上同时登录,系统不会认为是重复登录。
    允许匿名访问

    指定系统是否允许用户在不登录的情况下访问系统。无论是没有用户账号的人,还是有账号但没有登录的人,都属于匿名用户。

    如果允许匿名访问,可以在系统中为"匿名用户"角色设置权限;如果不允许,则用户访问任意页面,都会跳转到登录页。

    记录操作日志

    指定是否记录用户一些重要操作的日志。管理员可以在用户管理中查看用户的操作日志。

    需要审核

    指定信息中心的文章和评论是否需要审核,以及是否需要通知审核人员,和通知的方式。通知的对象,是具有信息中心管理权限的角色,如果没有,就通知系统管理员。

    接入微信并设置微信通知审核,是一种非常便捷的方式。当有新的文章或评论需要审核时,会发送消息到微信,并附带"通过审核、删除、查看原文"三个链接。
    栏目

    设置信息中心的栏目,多个栏目名称间以逗号","分隔,栏目与子栏目之间以"/"分隔。如:通知,新闻/国内,新闻/国际,技术

    工作日设置

    在默认工作日的基础上,添加特殊的调整规则,以符合实际情况,使系统在流程中能正确计算按工作日指定的处理时限。

    禁止自动弹出操作指导

    系统默认会对新用户在某些页面弹出操作指导(每个主题最多两次),用户可以在帮助中禁用,而此处设置则是一个总控开关,勾选后将对所有用户禁用弹出指导。

    限制上传文件大小

    对用户上传的文件大小作限制。在系统的配置文件 web.config 中,也对上传文件大小作了限制(默认是 2GB),如果要进一步放宽限制,需要同时修改这两个地方。

    web.config 中,涉及到两个选项:

    1. system.web/httpRuntime 的 maxRequestLength 属性,以 kb 为单位;
    2. system.webServer/security/requestFiltering/requestLimits 的 maxAllowedContentLength 属性,以 byte 为单位。
    通常不需要也不应该去修改 web.config 中的这个限制。
    限制上传图片宽/高不超过 xxx 像素

    限制用户上传图片的像素尺寸。该设置不影响以文件名义上传的图片文件,仅影响以图片方式上传的文件,例如图片字段中,或编辑器中上传的图片。

    当用户上传的图片超过该限制时,系统会自动处理该图片,以使其符合此项要求。

    缩略图加载原图以提高清晰度

    缩略图由于分辨率较低,其视觉清晰度也较低,尤其是在高分辨率屏幕上显示的时候。勾选该选项可以使系统加载原始图片来显示缩略图,清晰度提高了,但网络带宽占用增大,可能造成卡顿。

    以弹出框打开字段链接

    指定是以弹出框方式打开字段链接,还是在原窗口中打开。如果以弹出框打开,则字段链接的目标数据不会进入缓存,也就是说如果切换视图,看到的还是点击链接之前的那些数据;反之,则链接的数据会存入缓存,切换视图看到的就是链接到的这些数据了。

    允许上传的文件类型

    填写允许上传的文件类型扩展名,以逗号分隔,如:doc,rar,pdf,txt。未列入此处的文件类型,将不允许上传。

    模板保护设置

    启用模板保护,可以为指定的模板设置密码保护,在修改或导出模板时,将要求验证密码。此密码不可找回,请务必妥善保存。

    更多设置

    这里是一些不常用的设置项,需要在配置文件 web.config 中设置。用记事本打开系统主目录下的 web.config 文件,要添加一项设置,请在 <appSettings> 这一行下添加如下一行:

    <add key="Name" value="Value" />

    其中,Name为设置项名称,Value为该项设置的值。可用的设置项有:

    设置项描述可用的值默认值
    PasswordExpireDays密码有效期正整数(表示天数)0 (无有效期限制)
    PasswordResetAs重置密码方式default:默认密码
    random:随机密码
    random
    DefaultLoginWay默认登录方式default:用户/密码
    sms:短信验证
    weixin:微信扫码
    default
    PasswordFindTo找回密码时,消息发送方式
    注:可按优先顺序填写两个选项,逗号分隔。一种方式发送失败时将使用另一种
    sms:短信
    email:邮箱
    sms, email
    AutoLoginKey自动登录对接口令(自由设定)
    FullSearch是否允许直接搜索数据中心
    注:数据量较大时,搜索整个数据中心可能导致系统卡顿
    true:允许
    false:不允许
    auto:自动
    true
    SmsContentLog短信日志是否记录短信内容true:记录
    false:不记录
    false
    SynDelNoProtect子模板记录被同步删除时,是否忽略数据保护true:忽略
    false:不忽略
    false
    DiyActionNoProtect执行自定义操作时,是否忽略数据保护true:忽略
    false:不忽略
    false
    CachePageState是否缓存页面状态以提高加载速度。
    设为false可解决"操作过期……"问题
    true:缓存
    false:不缓存
    true

     

    说明

    • DefaultLoginWay:默认登录方式,须开启了相应功能并在自定义登录页面启用了该登录方式,才会生效。
    • PasswordFindTo:找回密码时的消息发送方式,必须开启并正确设置了相应功能,才会生效。

     

    功能

    工作流功能

    指定是否启用流程功能。如果不启用,事务中心将不可见,模板设置中也不会出现"流程"标签页。

    目录权限控制

    如果勾选此项,将可以设置用户的目录操作权限(创建、删除等);否则,对任一模板有添加记录权限的人员,以及管理员,都可以创建目录,和删除空目录。

    电子商务功能

    勾选并设置此功能后,将允许用户选购商品并提交订单。目前尚不支持在线支付。

    启用该功能后,还需要在商品模板上启用电子商务功能(设计中心 - 模板右键 - 设置)。用户浏览商品时,就可以将其加入购物车并提交订单了。
    短信发送

    设置短信功能,以支持从系统发送手机短信。详见"短信发送"一节。

    来电弹屏

    来电弹屏,是指有电话拨入时,系统自动弹出该来电号码相应的客户信息,及其历史来电记录。使用该功能,需要单独购买功能授权和相应的USB录音盒及配套软件,在正确设置并连接硬件设备后,有权限的人员在登录系统后即具有来电弹屏功能。更多信息,请看帮助中"来电弹屏"一节。

    微信功能

    设置接入企业微信或微信服务号/订阅号,以使系统可以发送微信消息给用户,或接受用户的微信查询、实现微信扫码登录等功能。详见"微信接入"一节。

    消息功能

    启用或关闭系统内置的消息功能。详见"消息"一节。

    收藏功能

    启用或关闭收藏功能。启用后,可将某条记录或信息中心某文章加入收藏;点击顶栏的搜索图标,切换到"收藏"标签页,可查看或管理收藏的项目。

    API接口

    启用或关闭 API 接口。启用后,可在系统中或外部的其它程序调用本系统接口,来实现数据查询、添加、更新、删除等功能。详见"API 接口"一节。

     

    用户信息

    在系统设置中切换到"用户信息"标签,可决定启用哪些用户信息字段,启用后,用户注册或更新个人资料时,将需要填写这些项目。

    自定义属性

    可添加最多三个自定义的用户属性,这些属性由管理员设置,可在条件或版式中以变量($UserAttr1$、$UserAttr2$、$UserAttr3$)表达。

    例如,可添加一个"标签"属性,管理员为某些用户将该属性设为"VIP",然后为某个模板添加过滤器,设置条件为:[类别] 等于 $UserAttr1$,这样,被标记为VIP的用户打开这个过滤器,看到的就是类别为"VIP"的记录。

     

    邮件发送设置

    设置系统发送邮件所使用邮箱的服务器信息,发送邮件时,系统将以该邮箱身份提交到它的发件服务器来发送。详见"邮件发送"。

     

     

    9.3 系统维护

    系统清理

    可清理垃圾文件、日志文件、缩略图缓存,以及匿名用户数据。

     

    备份和还原

    点击备份按钮,系统会生成一个完整的备份文件(包含程序文件、数据库和用户上传文件等)供下载;点击还原按钮,选定用于还原的备份文件,系统会自动上传并还原系统,还原后,系统与备份时的状态一致。

    如果系统中上传的文件和图片太多,备份功能会运行超时,这种情况下,需要改用手工备份:

    在系统主目录下全选所有内容,打包为一个压缩文件。如果使用的是 SQL Server 数据库,需要先在系统维护的"其它"中点击"下载调试数据"(此时无需下载),这会自动在 App_Data 文件夹下生成两个.bak格式的数据库备份文件;如果 SQL Server 数据库位于远程电脑,程序将无法自动备份数据库,需要手工备份并复制到  App_Data 下,再在主目录下全选后打包为压缩文件。

    系统的备份功能与手工备份其实是相同的逻辑,只不过是程序自动执行而已。如果服务器上安装了 Winrar,系统会调用它来执行压缩或解压,其效率高于系统本身以 zip 格式执行的压缩或解压,因此建议安装 Winrar。
    如果使用的是 SQL Server 数据库,且 App_Data 文件夹下存在数据库备份文件,那么会在还原按钮右边出现一个"还原数据库"按钮,点击就可以自动还原数据库。
    使用 SQL Server 数据库时,可以从较低的版本,如 SQL Server 2008,还原到较高的版本,如SQL Server 2019,但从较高的版本还原到较低的版本是不行的。
    自动备份

    自动备份,就是指定一个时机,程序自动定时生成备份文件并保存到指定的文件夹中,如上图所示。管理员可远程对备份文件进行删除、还原,或下载。
     

    系统开发

    编写外挂脚本或外挂样式,对系统进行额外的控制或处理。详见"高级开发"一章。
     

    其它

    重新启动系统

    重新启动系统,可清空系统缓存,重新加载需要缓存的数据,主要用于强制程序重新读取数据库或加密狗等情况。

    关闭系统

    关闭系统后,系统不再接受用户访问连接。要恢复运行,需要进入系统主目录,删除 app_offline.htm 文件。

    切换数据库

    将系统切换为使用不同的数据库。由于系统的用户、模板、数据、权限等都是存储在数据库中的,因此切换数据库相当于更换了一套完全独立的系统。如果以后再切换回当前数据库,系统会恢复到当前的状态。

    在 Access 与 SQL Server 数据库之间,数据是不兼容的,可以在数据中心通过右键菜单来备份数据,并在切换数据库后恢复到数据中心,这样可以迁移模板和数据,但用户、信息中心、权限和设置等其它所有数据都无法迁移,并且由于两种数据库的函数语法不同,公式字段的公式写法也可能需要修改。因此,建议一开始就确定好数据库类型,避免后续更换数据库的麻烦。
    软件的注册码是保存在数据库中的,并且不同类型和版本的数据库对应的注册码是不同的。因数据库版本变化导致的注册码失效,可以联系客服免费重新注册。
    压缩数据库

    清理数据库占用的无用空间,缩小数据库大小,并进行数据库优化。无需频繁使用该功能。

    查看系统日志

    系统会将一些重要事件或错误消息记入日志。如果使用中感觉有功能异常,例如设置的自动结转没有执行等,可以查看系统日志,看看是否有相关的错误消息,从而找到原因并解决问题。

    下载调试数据

    调试数据包含了数据库备份和一些系统基本信息,通常用于发送给开发团队调试和分析问题。尽管开发团队承诺仅用于调试,您仍然应当知晓——调试数据包含了系统的数据库,如涉及敏感数据,请勿发给任何不信任的人。

    如果想要单独备份数据库,也可以通过该操作实现。

     

     

    第十章 高级开发

    尽管本系统定位于无代码自定义管理功能,但对于有前端开发知识,或愿意花点时间尝试的人来说,只需要一点基本知识,就可以更灵活自如地控制各种细节,实现更好的用户体验或功能。

    本系统是 B/S 架构,也就是软件安装在服务器上,客户端通过浏览器来打开操作。服务器端返回浏览器操作所请求的页面,浏览器收到后,按指定的样式渲染页面内容,并执行脚本,最终呈现在用户面前——也就是网页。因此,网页是由这基本的三要素组成的:定义内容的 HTML、控制样式的 CSS、执行动作和交互的脚本 Javascript。

    HTML

    HTML 定义了网页的结构和内容,它由多种标签构成,如:

    <div id="box">
        <p id="tip" class="msg">这是一个段落</p>
        <button id="mybtn" class="btn">这是一个按钮</button>
    </div>
    

    标签通常由起始标签和结束标签成对构成,代表页面上的一个元素,例如链接、图片、段落等。学习 HTML

    CSS

    CSS 也就是样式表,它定义了元素的视觉样式,如:

    #box{width: 100%; height: 300px; background: gray}
    .msg{font-size: 14px; color: red}
    

    CSS 由选择器(确定应用于哪些元素)和样式定义(即大括号中的内容)组成。学习 CSS

    Javascript

    Javascript 负责对元素和样式进行处理,也可以响应用户的交互动作(例如点击),如:

    $("#mybtn").on("click", function(){
        alert("你点击了按钮!");
    });
    

    以上示例使用的是 jQuery 语法,它是系统内置的一个 Javascript 库。学习 Javascript学习 jQuery

    通常,可按F12键打开浏览器的开发者工具栏,查看页面元素结构及其ID等信息。也可在元素上右键 - "检查元素"。


    系统支持的开发功能包括:外挂脚本、外挂样式、API 接口。API 接口主要用于外部程序调用,但也可以在系统内由脚本调用。

    管理员点击顶栏系统管理图标,进入系统维护,切换到"系统开发"标签页,即可编写外挂脚本或样式:

     

    10.1 外挂脚本

    外挂脚本是一个 Javascript 脚本文件(js\plugin.js),用于对系统页面进行一些额外的处理。它会被每个页面加载运行;它不会被系统升级所覆盖。

    系统内置了 jQuery v3.6 脚本框架,因此可在外挂脚本中使用 jQuery。

     

    示例代码

    //页面加载后执行
    $(function () {
        //若是ID为8的模板数据录入页面
        if (getPage() == "edit.aspx" && getUrlParam("tid") == 8) {
            var items = {
                "是": "f_72, f_75", //用户选择"是"时,控制ID为f_72、f_75的元素可见性
                "否": "f_73"
            };
            BindToggle("C8", items); //使ID为C8的输入元素,输入不同值时隐藏不同元素
            BindToggle("C8", items, true); //ID为C8的元素,输入不同值时显示不同元素
            BindRequired("C9"); //ID为C9的元素如果可见,则要求必填
        }
        //ID为8的模板详情页,就地编辑某字段后,弹出另一字段就地编辑
        if ($("html").is("#detail.tid8")) {
            //fid为1的字段编辑后弹出fid为2的字段就地编辑;字段2编辑后再编辑字段3
            window.updateWith = { "1": "2", "2": "3" };
        }
        //首页,自动刷新所有图表/报表/看板
        if ($("html").is("#home")) {
            autoUpdateStats(null, 10);//null,全部刷新,可改为版块id,如"board,B_on3u";10为刷新间隔(秒)
        }
    });
    
    由于系统每个页面都会加载同一份外挂脚本,因此针对特定页面处理时,通常需要先判断当前页面是不是要处理的页面。

     

    jQuery 极简入门

    使用 jQuery 处理页面元素,通常有两个步骤:

    1. 定位要处理的元素jQuery 使用选择器语法来定位元素。可在页面元素上右键 - 检查元素,来查看相关 HTML 结构,如:

    <div id="box">
        <p id="tip" class="msg">这里是一个段落</p>
    </div>
    

    要匹配中间段落元素,可用 p#tip.msg 等选择器。为避免匹配其它的段落,可加以限定,如:#box p

    2. 利用选择器处理元素如,隐藏元素:$("#tip").hide();

     

    部分Javascript/jQuery函数/方法

    • getPage()获取当前页面文件名
    • getUser()获取当前操作者用户名
    • showMsgPop(msg)在右下角弹出消息
    • user(userName)弹出给指定用户发送消息/短信/邮件的界面
    • toCopy(src)复制指定元素的内容。参数可以是jQuery对象或选择器,或Dom元素
    • toPopup(url)弹出显示指定的页面/网址
    • toPrompt(title, onok)提示用户输入。参数:title,对话框标题;onok,点击确定按钮时执行的方法。
       示例:<a onclick="toPrompt('姓名:', function (name) {alert(name); return true;});">test</a>
    • toExportAs(selector, width, pageTitle, exclude)弹出导出对话框。参数依次为:要导出的元素或jQuery选择器、文档宽度、标题、要排除的元素或jQuery选择器
    • $(selector).hide()隐藏元素
    • $(selector).show()显示元素
    • $(selector).printIt()打印元素。示例:$("#msg").printIt({pageTitle: "通知", exclude: "div.footer"});,打印id为msg的元素(排除其中class为footer的div元素)
    • $(selector).qrcode()生成二维码。示例:$("#mydiv").qrcode({width:100, height:100, text:"http://baidu.com", background:"#ffffff", foreground:"#112244" });
    • addWaterMark(text)为页面添加水印文字
    • autoFont(selector)使指定元素的文字自动缩小以适配宽度
    • 获取变量值: $.get("get.aspx", { action: "getVar", "var": "UserUnit" }, function(res){ alert(res); });
    • 要求文本框必须输入了条件字段才产生输入提示:$(selector).attr("condrequired", "1");

     

    调用API接口

    若启用了 API 接口,可调用接口来读写数据。由于是在本系统内运行,因此无需考虑 API 登录等问题。

    下面演示,读取某条记录中某个字段的数值,并加 1 之后保存回去:

    $("#mybtn").on("click", function () {
        //读取数据
        $.ajax({
            url: "api/1/15",//接口:api/{模板ID}/{记录ID}
            type: "get"
        }).done(function (res) {
            var oldValue = res.data.fields[6]; //6 为字段ID
            var data = {
                "6": parseFloat(oldValue) + 1 //用parseFloat去除可能存在的数字单位
            };
            //更新数据
            $.ajax({
                url: "api/1/15",
                type: "put",
                data: JSON.stringify(data)
            }).done(function (res) {
                reloadPage();//仅用于表格视图和详情视图,无刷新更新页面
            });
        });
    });
    

     

    可选变量

    可添加以下变量以实现相应控制:

    • var syncFinder = true; //顶栏搜索框与当前打开的数据同步切换
    • var chartColors = ['#50c48f', '#f7b13f', '#4891fe', '#f5616f', '#26ccd8'];//自定义图表各指标颜色
    • var showChartTime = true; //图表上显示数据生成时间

     

    技巧

    • 注意:脚本中的逗号引号等,要用英文半角符号(除非是文本);引号中的引号要转义处理。
    • 编辑时,可按快捷键Ctrl+S保存。
    • 表格视图、详情视图、图表视图、报表视图和录入页面的html元素具有形如"tid123"的样式类,其数字部分为模板ID。脚本中可据此进行针对性处理,如:if ($("html").is("#table.tid3")) { ... }
    • 表格视图和详情视图,外挂脚本的处理可能会在页面内容刷新(比如表格视图翻页)后失效,但这两个视图会在每次内容加载后,尝试调用一个 pageUpdated 函数,因此可在该函数中写处理代码,如:
    if ($("html").is("#table.tid2")){//仅针对特定模板的表格视图
      window.pageUpdated = function(){
        //这里写处理代码
      }
    }
    

     

     

    10.2 外挂样式

    外挂样式是一个CSS样式文件(App_Themes\plugin.css),用于对系统界面样式进行一些特殊处理。它会被系统的每个页面加载。它不会被系统升级所覆盖。 请参考:CSS 教程

     

    示例

    • 修改顶栏底色#topbar #navbar{background: #003d5b !important}
    • 修改默认按钮颜色.btn{background: #6d7282}
    • 自定义打印时的链接颜色@media print{a{color: blue !important}}
    • 让详情页面宽度最大化#detail body{max-width: 100%}
    • 让指定元素不响应鼠标动作#xyz{pointer-events: none} /* 鼠标单击双击等都将没有反应 */
    • 修改模板图标#templets .t8 div:before{content: "\e67c";color: #1fc3ff} /* 8为模板ID,"\e67c"为选择图标时得到的图标代码"&#xe67c;"变换而来 */

     

    要点

    • 系统每个页面都会加载同一份外挂样式,所以针对特定页面的样式,需要在选择器中以该页面<html>元素的ID来限制作用范围,如,隐藏详情页面下方按钮:#detail #btnArea{display: none}
    • 为避免与内置样式冲突,建议为自定义的样式类名称添加一个前缀,如:my_btn。
    • CSS中用/* ... */的形式对代码进行注释,注释掉的代码不会生效。

     

    CSS 极简入门

    使用 CSS 设置页面元素样式,要用选择器来匹配目标元素。可以在页面元素上右键,检查元素,来查看元素及上下文 HTML 结构,如:

    <div id="box">
        <p id="tip" class="msg">这里是一个段落</p>
    </div>
    

    要处理中间段落元素,可用 p#tip.msg 等选择器。为避免选中其它的段落,可加以限定,如:#box p

    确定了选择器,就可以为它写样式规则了,如隐藏:#tip{display: none},或设置颜色:#tip{color: red}

     

    技巧

    • 注意:代码中的冒号分号等,要用英文半角符号。
    • 编辑时,可按快捷键Ctrl+S保存。
    • 表格视图、详情视图、图表视图、报表视图和录入页面的html元素具有形如"tid23"的样式类,其数字部分为模板ID。外挂样式中可据此限定样式应用范围,如:#detail.tid3 body{max-width: 100%}

     

     

    10.3 常用 CSS 样式类

    系统基础样式文件中定义了很多样式类,可以直接在版式或任意可使用编辑器的地方使用。像表格、图片等元素,可以在属性中设置样式类,其它如段落等元素,可在编辑器中切换到源码状态,为元素设置 class 属性,如:

    <p class="indent">这是一个首行缩进的段落</p>
     

    常用样式类

    • hide隐藏
    • forPrint仅打印出来可见
    • forScreen仅屏幕上可见,打印出来不可见
    • indent首行缩进两个字
    • pageTitle居中的较大字号的标题
    • highlight高亮显示,带圆角边框和背景
    • bluebox带边框的浅蓝色区域
    • left靠左显示
    • center水平居中显示
    • right靠右显示
    • larger字号增大10%
    • large字号增大33%
    • mtop_s距上方有微小间距
    • mtop_n距上方一行间距
    • mtop_l距上方两行间距
    • mbottom_s距下方有微小间距
    • mbottom_n距下方一行间距
    • mbottom_l距下方两行间距
    • btn按钮样式
    • corner具有圆角
    • textshadow有阴影的文字
    • ell将显示不完的字符以省略号显示(仅对指定了宽度的元素有效)
    • noselect文字不可选中
    • dead不响应鼠标动作,灰色显示
    • reset重置为系统默认基础样式
       

    用于表格的样式类

    • normal表格框线显示为细线条
    • hr仅显示每行的下边框线
    • grayline灰色表格框线
    • blackline黑色表格框线
    • noline无表格框线
    • seprow表格隔行变色
    • allhover鼠标移过行时变色
    • rowhover鼠标移过行时变色(首行除外)
    • noell显示溢出内容(默认情况下,内容较长的字段会隐藏单元格显示不完的内容)
       

    样式类组合使用

    同一元素可以使用多个样式类,用空格分隔,如:

    <button type="button" class="btn small">按钮</button>

     

    10.4 API 接口

    本系统提供 Web API,用于各种客户端通过HTTP请求来获取、修改、添加或删除数据信息。客户端通过URL定位资源,用HTTP方法(get-获取,post-新建,put-更新,delete-删除)描述操作。系统返回JSON数据。

    管理员进入系统管理 - 系统设置 - 功能,勾选"API接口"以启用接口,然后点"设置",填写以下参数:

    Key用于客户端发送请求时对相关参数进行签名,服务器使用其对参数和签名进行验证。该值对接口安全性起辅助作用,应尽量保密。

    允许以下域调用API默认只允许同域的程序代码调用API接口,若要允许跨域调用(如从 abc.com 调用),需指定调用方的域名,多个域用逗号分隔。留空表示不允许跨域调用,星号"*"表示允许任意域调用。

     

    API接口调用示例

    $.ajax({//发起异步请求
        url: "http://host/api/4/11",//请求的接口地址
        type: "get",//请求方式(get-获取,post-新建,put-更新,delete-删除)
        headers: getHeaders(),//请求头,含token等信息。getHeaders函数见帮助中的"Javascript 参考代码"
        data: {...}//请求参数。若不提供,可选参数视为未指定或取默认值,有必需参数则会报错
    }).done(function (res) {//请求完成。res为返回结果,其结构见各接口说明
        if (res.errcode == 0) {//请求成功
            //展示数据,此处略过
            if (res.token) {//如果token已超过20分钟,系统会更新并返回新的token(使其滑动过期)
                $.cookie("token", res.token.token, { expires: 30 });//将新token存入cookie,30天
            }
        } else {
            //服务器处理失败,显示消息...
        }
    }).fail(function () {//请求失败
        //显示错误消息...
    });
    操作失败时返回数据示例:
    {
        "errcode": 103,//错误代码。详见帮助
        "message": "没有权限"//错误消息
    }
    
    各个具体接口的介绍和示例,及更多相关信息,请看帮助中"API接口"一节。

     

     

    10.5 Access 数据库常用函数

    在公式字段的公式中,可以使用数据库所支持的函数。以下是 Access 数据库一些常用函数:
     

    日期函数

    • Now()返回当前时间(完整时间,包括年月日时分秒)
    • Date()返回当前日期
    • Time()返回当前时间(除去年/月/日的部份)
    • Year(date)返回日期的年份
    • Month(date)返回日期的月份
    • Day(date)返回日期的d部份,等同于DatePart使用d参数
    • CDate(exp)将字符串转化成为日期。如:CDate("2022/4/5")
    • DateAdd(datepart, number, date)将指定日期加上一段时间。如:DateAdd("d",1,Date()),将当前日期加上1天,其中d可以换为yyyy、m等
    • DateDiff(datepart, date1, date2)判断两个日期之间的间隔。如:DateDiff("d","2022-5-1",[生日]),其中d可以换为yyyy、m等
    • DatePart(datepart, date)返回日期的某个部份。如:DatePart("d","2022-5-1")返回1,即1号,d也可换为yyyy、m等
    • IsDate(exp)判断是否是日期值,是日期返回-1,否则返回0
    • Weekday(date)返回代表一星期中某天的整数(星期天为1,星期一为2...)。如:Weekday(Now())

     

    文本函数

    • Format(exp, format)格式化字符串。如:Format(now(),'yyyy-mm-dd')返回类似于"2022-04-03",Format(3/9,"0.00")返回0.33
    • UCase(exp)将字符串转换为大写形式
    • LCase(exp)将字符串转换为小写形式
    • Left(exp, length)取字符串左边指定数字的字符
    • Mid(string, start, length)取得子字符串。如:Mid("abc",1,2)返回"ab"
    • Right(exp, length)取字符串右边指定数字的字符
    • Trim(exp)去掉字符串两端的空格
    • LTrim(exp)去掉左边的空格
    • RTrim(exp)去掉右边的空格
    • InStr(string1, string2)查询子串在字符串中的位置。如:Instr("abc","a")返回1,Instr("abc","f")返回0
    • StrComp(string1, string2)比较两个字符串是否内容一致(不区分大小写)。如:StrComp("abc","ABC")返回0,StrComp("abc","123")返回-1
    • Space(exp)产生空格。如:Space(4)返回4个空格
       

    算术函数

    • Abs(exp)返回绝对值
    • Int(exp)将数字向下取整到最接近的整数
    • Rnd()返回一个0到1之间的随机数值
    • Sgn(exp)返回数字的正负符号(正数返回1,负数返回-1,0值返回0)
    • Sqr(exp)返回平方根值
       

    聚集函数

    • Sum计算字段的合计值
    • Avg取字段平均值
    • Count统计记录条数
    • Max取字段最大值
    • Min取字段最小值
       

    其它函数

    • IIF(exp1, exp2, exp3)根据表达式返回特定的值。如:IIF(2>1, "正确", "错误"),返回"正确"
    • Choose(exp1, exp2, ...)根据第一参数,返回后面字符串组的值。Choose(1,"a","b","c")返回a,将1改成2后返回b(第一个参数也可以是一个字段)
    • IsNull(exp)检测是否为null值,是null值返回-1,非null值返回0
    • IsNumeric(exp)检测是否为数字,是数字返回-1,否则返回0
       

    说明

    • 公式中判断空值的表达式:x is null。对于文本、特殊文本、单选/多选列表、链接等类型字段,由于其本质都是文本,所以还需判断空字符串,即:x is null or x = '',判断非空,则可以用:x > ''
    • 公式中引用数字字段运算时,如果该字段为空(null)值,则任何数字与其运算,结果都为null。为此,程序会将null值当作0处理,以符合常人思维。但如果公式中使用了IsNull函数,或"is null"条件,则认为用户已自行考虑null值,不再特殊处理。
    • 公式若涉及除法运算,应避免分母为0导致错误。如:iif([x] = 0, null, [y]/[x]),即分母为0时返回null。
    • 公式中表示是/否值:true表示"是",false表示"否"。如:iif(x > 0, true, false)
    • 用公式生成按钮示例:'<input type="button" class="btn" value="查看" onclick="return toPopup(''table.aspx?tid=6&fid=8&value=' & [23] & ''');" />'

     

     

    10.6 SQL Server 数据库常用函数

    日期函数

    • Getdate()返回当前日期
    • Year(date)返回日期的年份
    • Month(date)返回日期的月份
    • Day(date)返回日期的d部份,等同于DatePart使用d参数
    • DateAdd(datepart, number, date)将指定日期加上一段时间。如:DateAdd(dd, 1, Getdate()),将当前日期加上1天,其中dd可换为yy、mm等
    • DateDiff(datepart, date1, date2)判断两个日期之间的间隔。如:DateDiff(dd, '2022-5-1', Getdate())返回2022-5-1到今天差多少天,其中dd可以换为yy、mm等
    • DatePart(datepart, date)返回日期的某个部份。如:DatePart(dd, '2022-5-1')返回1,即1号,dd也可以换为yy、mm等
    • IsDate(exp)判断是否是日期值,是日期返回1,否则返回0
    • Convert()可用不同格式显示日期/时间。如获取"202212"形式的年月:Convert(char(6), Getdate(), 112)
       

    更多日期函数 
     

    文本函数

    • Upper(exp)将字符串转换为大写形式
    • Lower(exp)将字符串转换为小写形式
    • Left(exp, length)取字符串左边指定数字的字符
    • Right(exp, length)取字符串右边指定数字的字符
    • LTrim(exp)去掉左边的空格
    • RTrim(exp)去掉右边的空格
    • Space(exp)产生空格。如:Space(4)返回4个空格
    • Substring(exp, start, length)返回从字符串左边第start个字符起length个字符的部分
    • Replace(exp1, exp2, exp3)用exp3替换在exp1中的子串exp2
    • CharIndex(exp1, exp2)返回字符串exp1在exp2中出现的开始位置
    • PatIndex(exp1, exp2)返回模式exp1(可使用通配符)在exp2中出现的开始位置,没找到则返回零
       

    算术函数

    • Abs(exp)返回绝对值
    • Round(exp, length)返回数字表达式并四舍五入为指定的精度
    • Sign(exp)返回给定表达式的正 (+1)、零 (0) 或负 (-1) 号
    • Ceiling(exp)回大于或等于所给数字表达式的最小整数
    • Floor(exp)返回小于或等于所给数字表达式的最大整数
       

    聚集函数

    • Sum计算字段的合计值
    • Avg取字段平均值
    • Count统计记录条数
    • Max取字段最大值
    • Min取字段最小值
       

    其它函数

    • IsNull(exp, replacement)如果给定表达式计算为null,则返回指定的替换值,否则返回表达式结果
    • IsNumeric(exp)检测是否为数字,是数字返回1,否则返回0
    • Case When ... Then ... Else ... End根据不同情况来取不同的值。
    • 例1:case when score >= 90 then '优秀' when score >= 60 then '合格' else '差' end
    • 例2:case level when 1 then '菜鸟' when 2 then '大虾' when 3 then '砖家' end
    • 例3:case when province in ('北京','天津','上海','重庆') then '直辖市' else '非直辖市' end

    更多函数…

    说明

    • 公式中判断空值的表达式:x is null。对于文本、特殊文本、单选/多选列表、链接等类型字段,由于其本质都是文本,所以还需判断空字符串,即:x is null or x = '',判断非空,则可以用:x > ''
    • 公式中引用数字字段运算时,如果该字段为空(null)值,则任何数字与其运算,结果都为null。为此,程序会将null值当作0处理,以符合常人思维。但如果公式中使用了IsNull、NullIf函数,或"is null"条件,则认为用户已自行考虑null值,不再特殊处理。
    • 公式若涉及除法运算,应避免分母为0导致错误。如:[y]/nullif([x], 0),分母[x]为0时作null值处理。
    • 公式中表示是/否值:1 表示"是",0 表示"否"。如:case when x is null then 0 else 1 end
    • 用公式生成按钮示例:'<input type="button" class="btn" value="查看" onclick="return toPopup(''table.aspx?tid=6&fid=8&value=' + cast([23] as varchar(20)) + ''');" />'

     

     

    10.7 其它

    视图

    自己在数据库中编写视图,取代系统中模板所对应的表,可以实现一些特别灵活的功能。请参考以下文章:

    https://landian.cc/?p=26

    编写视图语句,一定要确保ID字段能唯一且固定地标识一条记录,每次执行 SQL 语句,记录的ID不会发生变化。否则会导致数据显示混乱,在数据搜索时也可能会得到不正确的结果。

     

    触发器

    SQL Server 数据库支持的触发器功能,可用于在对表执行插入、更新、删除操作时,自动执行预设的处理,例如,在系统中删除一条订单记录时,自动在日志表中添加一条记录。

    请参考:SQL Server 触发器
     

    视图和触发器功能,仅适用于对数据库比较熟悉的高级用户,不在系统技术支持范围内。请充分了解可能造成的数据风险,并进行足够的测试。

     

     

    第十一章 常见问题解答

    如何通过网络访问本系统?

    同一局域网中的电脑,无需安装该软件,使用浏览器输入系统的地址来访问。该地址可在帮助的"常见问题解答"第一条查看。

    如果服务器是自动获取IP地址,则IP会经常变化,导致客户端无法访问,因此请设置一个固定IP,或使用电脑名称代替IP地址来访问。

    若系统安装在内网,要从互联网访问,通常还需设置内网路由器端口映射,并使用花生壳等动态域名软件。但这种方式较复杂,速度和稳定性较差,因此建议使用云服务器,从而可随时随地用电脑或手机操作。
     

    如何将该软件安装在网站上,从而可以从互联网访问?

    如果使用云服务器,解压安装包后,双击 setup.exe 进行安装,完成时选中"允许其它电脑通过网络访问"。从互联网访问,可使用其IP地址加端口号的形式,如:http://60.247.100.252:88,也可以绑定域名后使用域名访问。

    如果使用虚拟主机(需支持 Asp.net),将软件安装目录或安装包 Source 下的所有文件上传到其根目录(通常是 wwwroot)下,并在后台管理中将 Asp.net 版本设为 V4.0,启用32位兼容模式,然后使用绑定的域名来访问。
     

    添加的新用户的密码是什么?

    由管理员添加的用户的密码默认是"landian"。可以在用户管理页面点击"设置默认用户信息",来修改默认密码,以及其它内容的默认值,之后再添加的用户将自动使用这些默认的用户信息。在新用户使用默认密码登录后,可以自己修改密码及个人信息。
     

    为什么在缩略视图中看不到缩略图?

    进入设计中心,在模板上点右键 - 设置,指定"缩略图字段"为需要显示的图片字段即可。
     

    为什么添加字段后,录入或浏览时看不到该字段?

    如果录入或浏览时的版式是自定义版式,而不是系统自动生成的版式(即录入时的"经典版式"、浏览时的"表格版式"),那么新增的字段不会自动出现在版式中,需要进入版式编辑页面手动添加。
     

    如何批量更新某字段的值?

    进入"数据中心",在该模板上点右键,选"数据管理",在"批量更新"处选择要更新的字段,并输入新的值,最后点"更新"按钮即可更新所有记录。如果只想更新一部分记录,可勾选"仅更新符合条件的记录",并设置好条件之后再点"更新"。也可以进入表格视图,筛选或勾选出需要更新的记录后,点"批量操作"进行批量更新。
     

    如何在录入某个字段时自动列出以前输入过的内容供选择?

    进入模板的设计界面,将该字段勾选"输入提示"选项,并设置数据来源为本模板的本字段。
     

    如何实现多级分类联动的输入提示?

    假设有大类、子类两级,则先建立分类模板并添加这两个字段,录入分类数据,如:A,a1;A,a2;A,a3;B,b1;B,b2;B,b3...。然后在要使用分类的模板中,大类字段勾选"输入提示",设置数据来源为分类表,取前20项大类;子类字段也类似,但需要在"筛选"处设置条件为"大类等于当前大类"(如下图)。这样,在录入子类时,会根据所选择的大类来提示其中的子类列表。

    下载"省市县三级联动示例",恢复到系统中查看效果及其设置。

     

    如何实现输入编号,自动取得对应的名称等属性?

    为每个需要自动取值的字段,在"输入提示"设置中指定筛选条件为"编号等于当前编号",并"取值"为编号最小的"第一项"名称(或其它字段),勾选"自动填充"。录入时,在输入编号后,这些字段将会自动获取到对应的值。
     

    查询字段和输入提示的"自动填充"功能有何区别?

    查询字段是在浏览时执行查询计算来取值,因此其值会随源数据的变化而变化;输入提示功能是用于在录入时辅助输入,自动填充的结果保存后不受源数据变化的影响(可用批量更新功能刷新值)。
     

    巧用输入提示功能

    允许多项输入可用指定分隔符来分隔多项值,并持续产生提示列表。如果在查询字段(或自由排版中定义的查询)的查询条件中对该字段使用"包含/不包含/包含于/不包含于"模式,则将按完整的某一项值来匹配,如"abc,def",不会认为包含"ab"。这个特点,某些情况下可用来保存一对多的对应关系,从而不必使用子模板。

    只接受数据源的值有时,希望用户只能从输入提示列表中选择值,而不允许输入其它无效的值,就可以使用这个选项,达到类似单选列表的效果,确保输入值的有效性。勾选了该项,则必须输入条件字段才会产生提示列表。
     

    如何能够快速打开类似"本周到期的合同"这类记录?

    进入高级搜索,设置条件,将类似"到期日期"这种字段设置为"本周",然后点击"保存" - 保存为过滤器,以后就可以直接打开该过滤器来查看了。
     

    怎样设置让用户只能看到自己录入的数据?

    进入设计中心,在模板上点右键 - 权限,为用户的角色设置浏览权限,勾选"仅允许浏览符合条件的记录",条件设置为"创建人"等于"$UserName$"。如果需要给予编辑权限,则再勾选"禁止编辑或删除他人添加的记录"。
     

    模板之间如何产生关联,有哪些关联性?

    • 主从关系主从关系的建立,会使系统在自动生成版式等方面提供便利,使得它们的数据录入和显示可以在同一界面实现。更多…
    • 版式中的自定义查询通过在详情视图版式中定义查询,可获取其它模板的相关数据,将查询代码插入到版式中可显示查询结果。更多…
    • 查询字段查询字段可在运行时从任意模板取单个值或统计值。更多…
    • 字段的输入提示输入提示可在输入时从任意模板取值,产生列表供选择。更多…
    • 字段链接可为字段设置链接,使得在浏览时可点击打开符合预设条件的数据。更多…
       

    如何复制记录?

    复制记录有以下方法:

    • 缩略视图,右键复制并粘贴;
    • 添加记录时,点右上角"导入"选择源记录导入并保存;编辑记录时,点"另存"按钮存为一条新的记录;
    • 将源记录导出为Excel文件,再重新导入追加数据;
    • 在模板设置对话框"生成"标签页设置生成方法,指定源数据为本模板。浏览时,在表格视图可勾选源记录,点"批量操作" - 生成。该方法对有子模板的情况会自动复制子模板关联记录,并且可在单条记录上右键生成,实现编辑后再生成的效果。
       

    如何将数据复制到另一个模板?

    可考虑以下方法,从A模板复制数据到B模板:

    • 将B模板设为A模板的子模板(勾选"同步添加关联记录"),执行同步操作。该方法只能复制关联字段;
    • 在B模板上设置生成方法,指定数据源为A,添加好字段映射,然后打开A的表格视图,批量操作,生成为B,即可将全部或选中的记录复制到B;
    • 在A模板上设置结转方法,勾选"将源数据结转到B"并添加字段映射,然后打开A的表格视图,执行结转。
       

    如何为自动编号类型字段重置起始编号?

    在记录删除后添加新的记录时,不会重复使用已删除记录的编号。只有当从"数据管理"对话框中清空所有记录时,自动编号的起始值才会重置,在有数据记录的情况下,想要从头开始编号,只能通过在模板设计界面中删除这个自动编号字段后重新建立一个相同规则的字段来实现,但这样会导致已存在的记录被重新编号,如果存在与其它模板中的记录的关联,将会使这种关联关系发生错乱。
     

    如何快捷地上传图片或文件?

    对于大多数浏览器,在文件上传区域,除了可以点击上传图标来选择一个或多个文件上传,还可以:

    • 拖拽文件到该区域;
    • 截图,然后点击该区域,按Ctrl+V键粘贴;
    • 从网页或Word等软件中复制图片,然后点击该区域,按Ctrl+V键粘贴;
    • 对于图片链接地址,若来自同域或允许跨域访问的网站,也可以复制并粘贴该地址来上传图片。
       

    如何批量导入图片或文件?

    如果某个模板包含有图片或文件类型的字段并且已经上传了至少一个文件,那么导出Excel时将会得到一个zip格式的压缩文件,其中包含了Excel和Files两个文件夹,分别用于放置Excel表和所涉及的文件。

    要批量导入,也是按这同样的文件夹结构来放置Excel和对应的文件,文件的名称和Excel表中对应字段中填写的名称(多个文件名用逗号分隔)相对应。在Excel数据录入完成且将相应文件放置到Files文件夹中后,将这两个文件夹选中并打包为zip格式压缩包,再在数据中心-模板图标右键菜单-数据管理-导入Excel,选择这个压缩文件即可开始导入。
     

    导出Excel时,能否不导出图片/文件字段所包含的文件?

    表格视图的"导出Excel"功能,只导出当前所显示的列,因此,可以先隐藏不需要的字段,再导出。
     

    经常报错"操作过期,请重新进入此页面操作"?

    一些页面会将部分数据存入服务器缓存,以减少网络传输量。当缓存失效,就会出现这个提示。可在配置文件 web.config 中禁用该特性,详见更多设置中的 CachePageState 项。
     

    如何解决"无效的公式或查询字段…无法确定Double值"或"遇到被零除错误"问题?

    这通常是由于公式字段中作为分母的字段未填写(或查询字段未取到值)或值为0,分母为0会导致数学错误。解决方法有:

    1. 将分母字段为空或为0的字段批量更新为非0值。
    2. 将公式改为:iif([x] = 0, null, [y]/[x])。即,如果字段[x]为0,则返回空值null,否则按正常逻辑相除。
       

    如何在首页显示图表/报表/目录等内容?

    在首页点击右上角的设置图标,可添加图表/报表、自定义版块、网页版块等。利用添加网页版块的功能,可以将系统中的某个页面添加到首页:在"添加网页版块"对话框中,点右下方的"获取内部页面地址",选择一个页面后,点"添加"按钮,即可将得到的地址填充到"网址"输入框中,勾选"尝试自适应高度"和"隐藏滚动条"选项后,点确定按钮即可。
     

    打印出来看不到缩略图?

    对于IE浏览器,应在"文件"菜单"页面设置"中勾选"打印背景颜色与图像";对于其它浏览器,通常是在打印对话框的"更多设置"中勾选"背景图形"。
     

    如何实现批量打印?

    可使用概要视图来实现批量打印。切换到概要视图后,点击任一项右边的悬浮图标,自定义显示格式,选择详情视图某个版式。这样,在打印时,会自动在每一项后面分页。
     

    如何禁止用户修改密码?如何允许帐户重复登录?

    如果系统设置中未勾选"允许重复登录",那么就不允许一个用户帐户在不同地方重复登录(先登录的会被强制注销),但可以建立一个名为"公共帐户"的角色,归属该角色的用户,可以重复登录且不允许修改密码。
     

    如何将一列中包含的值,分别生成为另一模板中的记录?

    可以在源数据模板上设置结转功能,将该字段设为统计分组字段,映射到目标模板中对应的字段,即可对源数据执行结转操作,快速将源字段中的值去除重复后,分别生成为目标模板记录。
     

    如何实现扫码通知?

    实现目标当他人用手机扫描二维码时,指定人员可以收到通知。例如,某民宿房东为避免深夜客人敲门影响他人,张贴了一个二维码,客人扫码后,房东即收到微信消息,给客人开门。

    实现步骤

    1. 创建模板,加入时间(变量"当时时间")等字段;
    2. 为模板设置权限,允许匿名用户添加记录。如果指定允许填写的字段,则用户扫码打开后可以填写,否则扫码将直接提交;
    3. 为模板设置提醒,指定提醒方式(消息/邮件/短信/微信)、提醒对象、提醒时机(添加数据时)等;
    4. 在首页-个性化,生成二维码,获取该模板添加记录的地址,生成为二维码;
    5. 打印并在适当场所(或网络上)张贴二维码。
       

    如何取得某字段不重复值的数量?

    思路一

    1. 用查询字段X,取该字段值等于本字段值的记录数量;
    2. 用公式字段Y = 1/X;
    3. 用查询字段Z,对Y进行合计,即得到结果。
       

    思路二

    1. 用查询字段X,取该字段值等于本字段值,且ID小于等于当前ID的记录数量;
    2. 用查询字段Y,取X=1的记录数量,即为结果。
       

    如何实现出库数量不能超过库存量这样的验证?

    模板设置中可以设置"数据有效性验证",即只有满足指定条件才允许保存。因此从逻辑上说,只要设置"出库数量"小于等于"当前库存量"即可。

    但是,由于通常是将库存量设计为查询字段,动态取值的,其值受到出库数量的影响,所以在保存一条商品的出库记录,系统执行验证时,得到的库存量已经是减去了本次的出库量了,从而达不到预期的效果。

    这种情况下,就需要添加一个公式字段对其修正,将查询的库存量加上本次出库量,才是本次出库之前的库存量,再将数据有效性验证条件改为"出库数量"小于等于这个公式字段,就可以了。
     

    关于公式和查询字段

    要对同一记录的多个字段进行计算,应使用公式字段;要对多条记录的同一个字段进行计算,应使用查询字段。公式和查询字段并不保存数据,而是在需要时实时计算取值,所以这两种字段不会出现在数据输入界面。
     

    用公式字段从身份证号提取生日

    公式写法:mid(身份证号,7,4)+'-'+mid(身份证号,11,2)+'-'+mid(身份证号,13,2)。记得把"身份证号"改为身份证号字段的代码,公式结果类型设为"日期时间"。
     

    如何用公式字段实现自定义按钮?

    公式示例:'<input type="button" class="btn small" value="查看" onclick="return toPopup(''table.aspx?tid=6&fid=8&value=' & [23] & ''');" />'

    公式目的是拼接出按钮的HTML代码。toPopup是一个预定义javascript函数,用于以弹窗打开指定地址的页面;table.aspx?tid=6&fid=8&value=x 这样的地址可打开指定模板中指定字段为指定值的记录,这里希望用字段[23]的值替代x,所以用&符号拼接起来;地址前后的单引号与公式外围的单引号冲突,所以要用两个单引号表示。注意:公式结果类型要设为"文本"。
     

    为什么报表/图表不能对百分比值进行统计?

    通常,百分比值是不应该用来进行合计或计算平均值的,因为这会给我们不符合预期的结果,产生误导。例如,甲乙两个班的学生人数分别为50和40,其中男生人数分别是20和32,那么男生占比分别为40%和80%,如果直接计算平均值,就是60%;而实际上计算总的平均值,应该是20+32/50+40,结果是57.78%。
     

    用链接参数执行搜索

    可为 view.aspx 页面指定参数来执行搜索。该方法可用于左侧栏自定义链接、首页网页版块、公式字段生成链接等。各参数如下:

    • tid搜索目标模板ID
    • filter过滤器名称
    • fid要搜索的字段ID
    • value搜索关键字。请参考:搜索关键字应用技巧
    • symbol条件匹配模式,配合fid和value使用。如:等于、包含等
    • f+字段ID筛选该字段为指定值的记录,如f28=china。该参数可使用最多5个,并可配合filter参数使用
    • view展现搜索结果的视图。表格视图、详情视图、缩略视图、概要视图、图表视图、报表视图分别为:Table、Detail、Thumbnail、Overview、Chart、Report

    参数值若包含中文或特殊字符,需进行URL编码。可在线URL编码,或用jQuery方法 $.url.encode(text) 来编码。一些链接示例:

    • view.aspx?tid=6&fid=8&value=abc 搜索指定表中指定字段等于值的记录
    • view.aspx?tid=6&fid=8&value=60&symbol=%e5%a4%a7%e4%ba%8e 搜索指定表中指定字段大于指定值的记录,symbol的值是经过URL编码的字符
    • view.aspx?tid=6&filter=ok&view=chart 搜索指定表中满足指定过滤器的记录,并用图表视图显示
    • view.aspx?tid=6&f28=china&f29=beijing 搜索指定表中ID为28的字段等于china、ID为29的字段等于beijing的记录

    也可对六个视图的页面(table.aspx,detail.aspx,thumb.aspx,summary.aspx,chart.aspx,report.aspx)使用以上参数搜索。如:table.aspx?tid=6&f28=china 搜索指定表中指定字段等于指定值的记录,用表格视图显示。
     

    用链接参数指定表单字段初始值

    可为录入页面 edit.aspx 添加参数来赋予字段初始值。如:edit.aspx?tid=2&f36=tony,表示将ID为36的字段初始值设为 tony。
     

    用链接参数匹配记录并进入编辑状态

    可为编辑页面 edit.aspx 添加参数来指定一个唯一性字段及其值,直接进入所匹配记录的编辑状态。如:edit.aspx?findby=22&find=123,进入字段22的值为123的记录的编辑页面。
     

    用链接生成条形码/二维码

    生成条形码/二维码的链接地址示例:barcode.ashx?type=code128&size=smaller&text=xyz,其中,type参数指定格式:

    • qrcode二维码(以下均为条形码格式)
    • code128CODE 128
    • code39CODE 39
    • code39extCODE 39 Extended
    • ean13EAN-13
    • ean8EAN-8
    • upcaUPC-A
    • upceUPC-E
    • codabarCodabar
    • jan13JAN-13
    • booklandBOOKLAND
    • isbnISBN
    • postnetPostNet
    • sta2of5Standard 2 of 5
    • ind2of5Industrial 2 of 5
    • int2of5Interleaved 2 of 5
    • usd8USD 8
    • ucc12UCC 12
    • ucc13UCC 13
    • code11CODE 11
    • code128aCODE 128-A
    • code128bCODE 128-B
    • code128cCODE 128-C
    • logmarsLOGMARS
    • upc2extUPC 2 Digit Ext
    • upc5extUPC 5 Digit Ext
    • telepenTELEPEN
    • mod_plesseyModified_Plessey
    • msi_mod10MSI Mod10
    • msi_mod11MSI Mod11
    • msi_2mod10MSI-2 Mod10


    size参数指定图形大小:

    • small
    • smaller较小
    • medium适中
    • larger较大
    • large


    text参数指定要生成条形码/二维码的文本内容,如果包含除字母和数字外的其它字符,需要作URL编码

    不同的条形码格式有不同的规则要求,不符合规则的内容无法生成;对于二维码,可添加参数ratio对图形大小作进一步缩放,如:&ratio=2。

     

    如何控制图片显示大小?

    在详情视图或概要视图的自定义版式中,将图片字段代码(选"原始图片"格式)插入到一个单元格或其它元素中,再设置所在元素的宽度,即可控制图片宽度。
     

    如何让单元格中省略显示的内容直接显示出来?

    表格视图,可点"更多"按钮,勾选"显示溢出内容";详情视图,可在版式中切换到源码状态,为其上级元素添加样式类noell,如:
    <div class="noell">$D0.Table</div>
     

    保密级别是什么意思,如何应用?

    数据的保密级别和用户的浏览权限是相对应的,分别有0~10共11个级别。用户只能查看保密级别不高于其浏览权限级别的内容(有编辑权限或完全控制权限除外)。比如,某用户对某模板的浏览权限为5级,那么他只能看到该模板的保密级别为0~5的记录,而高于5级的记录,以及不高于5级的记录中保密级别高于5级的字段,都无权浏览。
     

    导出或备份的文件,迅雷下载失败?

    这种情况下,可打开迅雷设置界面,在"高级设置" - 监视对象,取消"监视浏览器"选项,从而避免使用迅雷下载。
     

    要求用户注册时必须同意用户协议?

    将用户协议制作为HTML文件,命名为 agreement.htm,放置在系统主目录即可。
     

    如何强制用户下线(退出登录)?

    修改密码,或管理员重置密码,即会让当前登录该账户的用户退出登录状态。但绑定了账户的微信用户不受影响,除非删除或锁定用户,或解除微信绑定。
     

    如何清空浏览器缓存?

    通常,如果直接修改了系统目录下的文件,或软件升级后感觉有异常,可以清空浏览器缓存后刷新试试。

    • 对于 IE 浏览器,从"工具"菜单,"删除浏览历史记录",勾选"临时 Internet 文件和网站文件",取消"保留收藏夹网站数据",点"删除";
    • 对于 Google 浏览器,从菜单中找到"更多工具" - 清除浏览数据,时间范围选择"时间不限",勾选"缓存的图片和文件",点"清除数据";
    • 对于 Firefox 浏览器,从菜单中打开"历史" - 清除最近的历史记录,时间范围选"全部",勾选"缓存",点"确定";
    • 其它浏览器类似,请参考以上处理方法。
       

    有哪些性能优化方法?

    • 如果使用的是 Access 数据库,建议切换为 SQL Server 数据库;
    • 如果用的是 Express 版本 SQL Server,由于它在 CPU 和内存方面受限,建议使用企业版;
    • 尽可能减少模板中的查询类型字段;
    • 尝试减少每页显示数量;
    • 表格视图中,可隐藏暂时不需要查看的字段,或分为几个版式,分别显示部分字段;
    • 表格视图如果设置了"置顶"的条件格式,取消"置顶"选项试试;
    • 不使用查询字段,而是在详情视图使用自由排版来定义查询并显示查询结果;
    • 不使用查询类型,而用文本等类型,配合输入提示的"自动填充"功能,在录入时取值并保存下来(可用批量更新功能刷新值);
    • 不使用查询字段,而是在关联字段上设置链接,浏览时点击链接来查看原本想用查询字段来显示的数据;
    • 考虑将模板拆分,以减少单个模板中的查询字段数量。这种情况下,可将拆分出来的模板建立一对一关系(勾选"同步添加关联记录"),通过某个唯一性字段进行关联,还可以在子模板中设置生成方法,建立起与主模板间的字段映射,从而自动生成子模板记录中这些字段的值;
    • 在系统维护中执行"压缩数据库"试试(不必经常执行);
    • 服务器硬件配置升级。CPU 选择高主频比多核心更有效;
    • 浏览器推荐使用 Edge 或 Chrome,并确保网速畅通(可对比直接在服务器上操作的速度,以直观判断网速影响)。
       

    安全提示

    在确保服务器安全性的前提下,为了尽可能保障系统数据的安全性,请注意以下要点:

    你知道吗?

    • 可在高级搜索处保存版式,并自定义左侧栏将其添加为搜索版块,方便搜索;
    • 可为模板设置自定义操作,来实现简单的审核功能,或灵活的批量更新(因其支持公式语法);
    • 上传文件/图片,可尝试从电脑拖动一个或多个文件来上传,或点击上传区域后按Ctrl+V粘贴屏幕截图;
    • 有输入提示功能的文本框中,可输入第一个字的拼音首字母来快捷筛选。如,找姓张的人员,可按z;
    • 在多行录入页面,想实时显示表格中数据合计,可设置扫码输入功能来实现(即使不需要扫码);
    • 可以在首页添加看板版块,来显示重要的统计数据;可以在自定义首页对话框进入大屏模式。
       

    阅读更多教程类文章 ≫


    欢迎转载! 更多帮助,请访问官网,或联系技术支持。 更新时间:2023年11月22日