简介

该系统是2022.1.1开发,目的是解决数据太大时,PHP处理缓慢和超时问题。表单支持30多种类型的字段:文字、单选,多选、单图或多图上传,省市县区联动、日期时间、手写签名、表中表等。新增了逻辑表单,可设置用户选择不同选项,表单内容也不同。支持多单位填报,每个单位只能看到自己的数据,总管理员可管理和导出全部数据,可设置审核员对数据进行审核,审核通过锁定数据。可按模板生成word下载,如报名表、员工信息采集表等。可自定义公式,自定义统计模板,对数据进行统计导出。
后端语言:Golang
pc前端:Vue3+TypeScript
数据库:MySQL5.7-8.1 或 SQLServer2015-2017
移动前端和小程序:uniapp

演示站:https://go.dzbfsj.com/#/login H5前端:https://go.dzbfsj.com/h5 小程序:扫码查看

gh_dbb333bb4acc_258.jpg
最新技术栈

  1. 前端基于Vue3、Vite、TypeScript等最新技术栈开发;
  2. 后端使用golang语言,应对大数据和高并发访问,支持跨平台部署,如windows、mac和linux系统;
  3. 支持导入超大的Excel表,并可多次追加(每次不超过20万行);
  4. 支持导出100万行的超大Excel表,导出进度实时显示;
  5. 权限分配简洁易用,可设置多个数据管理员,实现多单位用户协同填报一个表;
  6. 移动端支持H5、小程序和安卓苹果APP,移动端可添加和管理数据,PC端支持用小程序扫码登录;
  7. 支持自定义公式模板,统计项目数据。

1.jpg
3.jpg

使用案例

Excel协同填报系统1.0使用场景示例

视频教程

Linux系统安装教程

因视频录制较早,现在的系统不需要自己注册账号和新建角色了,启动时会自动创建。
点击查看【youku】

windows系统安装教程

该视频在2核4g的笔记本虚拟机上录制,因此很卡,视频教程,嫌慢的可以拖进度条:
点击查看【youku】

移动端使用教程

创建一个填报项目,演示视频: QQ视频20220104162911.mp4 (34.37MB)

图文教程

因为宝塔面板使用人数最多,因此,该安装教程用宝塔来做示例。

Linux系统部署

默认发的源码是目前使用最多的64位linux系统下打包版本,部署时,只需要在宝塔面板新建一个站点,将源码包上传到网站根目录解压,修改配置文件的数据库和域名,设置一下反代规则即可。宝塔面板的操作具体如下:

新建站点

进入宝塔面板,点击网站,添加站点,输入域名,选择数据库,php选择静态:
image.png

进入站点目录

点击网站的目录,进入站点目录,上传源码包,解压:

image.png

修改后端配置文件

点击admin,进入admin目录,修改.env文件的数据库信息,注意区分http和https,如果是同一服务器部署多个站点,需要修改端口号:
image.png
image.png

启动后端

点击终端图标,进入终端,复制下面的命令到终端中,按两次回车即可(如果配置错误,如端口重复,数据库错误,会出现exit字符):
image.png

  1. nohup ./go_excel_admin &

系统首次启动时,会自动创建数据表和管理员账号,初始账号admin密码123456

修改反代规则

站点设置,点击配置文件,添加红色方框中的反代规则,注释掉后面的图片(如果没有可不理会):
image.png

    #lris-vue-Admin
    location /v1 {
      proxy_set_header Host $http_host;
      proxy_set_header  X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_pass http://127.0.0.1:8080/v1; # 设置代理服务器的协议和地址
    }


    #需要注释掉,不然反代无法访问图片
    # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    # {
    #     expires      30d;
    #     error_log /dev/null;
    #     access_log /dev/null;
    # }

修改前端配置文件

前端配置文件包括pc端和移动端,pc端的修改根目录下的_app.config.js文件:
Excel协同填报系统1.0安装使用教程 - 图12
修改里面的网址和标题即可:
image.png
移动端的在h5目录下:
image.png
进入h5/static/js/目录,里面有个index开头的js文件,编辑后,搜索https://go.dzbfsj.com,替换为自己的网址即可:
image.png

windows系统部署

如果您的不是linux系统,或者需要将后端和前端放在不同的服务器上,可先完成上面的步骤安装宝塔建立站点,然后下载适合自己系统的后端运行文件:
image.png
下载好后,放在站点/admin目录,直接双击就可以运行了。运行时,会显示当前的连接状态等信息。

站点设置

我们初次进入系统后台时,需要配置一些参数。比如名称,logo图,项目分类,以及移动端的幻灯图,跳转图标等:
image.png
底部都有详细说明,设置好提交即可。

站点启动和停止

linux

查看运行情况:

ps aux | grep go_excel_admin

停止:

ps -ef|grep "./go_excel_admin"|grep -v grep|awk '{print $2}'|xargs kill -9

上面的命令,会停止所有的go_excel_admin程序。如果一台服务器上运行了多个程序,需要停止其中一个,可先列出:

ps -aux | grep go_excel_admin*

image.png
可以看到正在运行的后端 ,第二列是pid进程,可输入对应进程停止相应后端:

kill 516183

windows

双击站点目录下的exe文件启动,关闭窗口即停止,非常简单。

后台使用方法

填报系统支持电脑和手机上操作,但导入excel表,需要使用pc端。

创建项目

目前创建项目有三种方式:导入excel自动创建、手工创建、克隆项目创建。

导入excel创建

操作方法,登录后台,点击新建项目:
image.png
选择分类,输入项目名称,上传excel后会显示表格数据,如果表格较大,耗时会较长,要耐心等待。如果浏览器停止响应,点击继续运行。
image.png
数据出来后,核对一下,无误后点击提交保存:
image.png
这时,会显示导入进度:
image.png
导入完成后,点击查看项目:
image.png
image.png
查看数据,正常即可。
image.png

手工创建

点击手工创建,在弹出窗口中,填写相关信息即可。字段可点击+号添加,得益于vue的特性,添加字段后,其它选择都是动态改变的,所以减少了提交次数,全部设置好一次性提交即可。该方式可在手机上操作。
image.png

克隆项目创建

这种方式适合每个月都要填报一样的表,只需选择一个要克隆的项目,点击克隆项目即可。克隆后的项目名,会加上_kl后缀,修改为自己想要的名称即可,其它字段等设置都和被克隆项目一样,新创建的项目表为空表,无需手工清空。
image.png

追加导入

如果项目创建了,需要继续追加导入数据到现在项目表后面,可以点击批量导入。
image.png
注意:如果对数据格式有限制,可以在导入时,将项目中的校验数据打开:
image.png
这样,导入数据时,会根据字段属性,对每行的必填,单选范围,联动下拉,手机身份证进行格式校验,不正确的会提醒并禁止导入。

只有设置字段属性为必填,才会校验数据。因校验数据非常耗损资源,无必要不要打开,否则导入慢很多。

打印和导出表格

系统支持在线打印表格,可以选择当前页,也可打印指定的行(翻页不影响),导出方法也一样。
image.png
image.png

修改和删除数据

点击编辑和删除按钮,可删除对应行数据。
image.png

恢复被删数据

系统有软删除功能,默认删除的数据会进入回收站。点击回收站,可查看被删除的数据。为了数据安全,数据管理员只能删除数据到回收站,无法彻底删除。只能总管理员才能彻底删除数据。
image.png
点击恢复按钮,可恢复这条数据。点击彻底删除,数据将从数据库中完全删除,不能再恢复。

word模板

系统支持根据制作好的word模板,调用数据生成word的功能。使用方法,先制作好word模板:

制作word模板

word模板文件后缀必须是docx,要替换的内容,文字用{K0}的方式标识,签名图片用{%K0}标识。如下图:
image.png
还有一种特殊的字段:表中表,需要循环在表中生成,如家庭成员:
image.png
word模板用{#K1}表示循环开始,中间填写相应的内容,{/K1}表示循环结束,如下红色方框的写法:
image.png
这种方式,能自动根据用户填写的家庭成员数量,动态添加行。效果:
image.png
数据导出为excel表时,会自动合并单元格,适合各种灵活的表:
image.png

上传word模板

在项目管理中,编辑项目,上传制作好的word模板:
image.png
然后,查看项目数据时,可看到word文档的查看下载,点击即可根据该行数据生成word并下载:
image.png

公式计算与报表

本系统支持两种方式计算,一种是行内计算,在填报录入数据时,根据公式自动计算本行数据。另一种是整个表统计,比如全班优秀人数,男生比例,优良人数等。

行内计算

在php的2.0版本中,支持将当前行的数据,根据设置好的公式进行计算,填写在行内某个字段里。在这个系统中,也一样支持,不过更加稳定和智能,不容易出错。在本系统中,将该字段类型取名为【行内计算】:
image.png

整表计算

除行内公式计算外,该系统还支持整个表数据设定公式进行计算,并将计算结果放在自己设计好的word模板中下载打印。
image.png

创建公式

目前支持常用的excel公式,以后全根据需要,添加更多的公式。添加公式时,一定要注意标点符号,必须是英文状态下输入,不可输入中文标点。如下图:
image.png

查看统计结果

在报表列表中,点击查看按钮,会显示两列。一列为数据管理员填报的情况,用于快速掌握他们填写的数量;另一列显示刚才自定义的公式计算结果,如下图:image.png

按word模板导出结果

在创建报表时,可以设计好word模板,将相应标识填写在word中后,
image.png
上传word到报表中。点击公式计算结果旁边的导出,即可按模板导出结果,效果如下:
image.png

联动下拉

该系统支持最大6级自定义联动下拉,如:实现省市县乡村小组联动。使用方法:

创建联动数据

准备好如下数据,注意逻辑关系:
e0.jpg
进入后台,点击左边菜单的公共数据,点击导入创建,选择联动,输入名称,选择6级,上传刚才的excel表后提交保存。
image.png
保存后,可查看并修改这些数据 :
e2.jpg

项目字段设置联动

接下来,我们在查询填报的项目管理中,编辑项目字段属性:
e3.jpg
注意每个字段要对应联动表的相应联动级,比如上图中的省,对应联动表的1级;市,对应联动表的2级。设置好后,前后台填报都可实现联动下拉了:
fff.jpg

地图定位

手机端h5支持地图定位功能,可以在填报时获取当时的地理位置(经纬度)。使用前,需要先到腾讯地图申请一个密钥,申请地址:https://lbs.qq.com/dev/console/key/manage,申请好后,在h5/static/js/index.js中搜索字符:PEEBZ-RG2W3-V6H3Y-36KZS-6R3Q2-QJBFT,替换为自己的密钥。
填报时,点击定位即可通过GPS获取位置信息。当然,查询时,也能展示地图位置:
WechatIMG63.jpeg

数据审核

有些表数据,用户填报是比较乱的,我们需要由审核员对数据进行审核。审核通过的数据可锁定,禁止修改和删除,未通过的,用户可再修改提交。具体方法如下:

添加审核员账户

在账号管理中,添加一个审核员,角色为shy:
image.png

项目管理添加审核员

在项目管理中,将审核员添加上:
image.png
审核员赵六登录后台后,会自动待审核的项目,点击项目名称进入审核:
image.png
选择要审核的数据,再选择审核状态,点击批量审核即可:
image.png
审核通过的数据,无论是前台还是后台,都无法对其进行删除和修改,总管理员除外。

对接百度AI识别证件

系统已对接百度AI,在百度人工智能后台申请开通相应接口后,可实现填报时,用手机拍摄身份证后,自动提取身份证号、姓名、性别、住址和民族等,填写到设定好的字段里。

申请百度接口

可在百度搜索百度AI进入,或点击此
百度ai.jpg
每天识别次数不超过额度量是免费的。

系统设置填写参数

登录系统后台,点击系统设置,填写在百度申请好的相关key:
image.png

项目配置识别

项目中有身份证号字段,需要配置识别时,可以在识别结果填写对应的字段:
image.png
配置好后,用户在前台填报时,点击拍摄识别,会自动调用百度AI接口,将识别结果填写到设定好的字段里。

前台使用方法

普通用户可以通过链接或小程序进行查询和填报。

普通查询

编辑项目,关闭填报,并设置查询条件和开放查询的字段,查询方式(默认为精准匹配)即可。
image.png
注意,开放查询列如果为空,则用户不能查询。设置了开放查询列,用户填报后核对结果时,也只显示这些字段。

保密查询

有时,我们需要对数据查询结果进行必要的保密。比如:手机和身份证号中间用号代替,用户需要登录才能查询等。
方法是,编辑项目,在字段属性中,打开中间星号开关:
image.png
然后,在系统设置中,【需登录】设置为“是”,并*重启后端

image.png
这样,用户无论是pc端还是手机端,都需要登录才能进入。
为实现更保密的效果,还可以设置多个查询条件,如:姓名,身份证号,性别,住址。然后,开启身份证识别,用户需要用手机拍摄身份证,识别成功后自动查询:
image.png
注意此项功能需要对接百度AI,请注册账号开通,然后填写在系统后台。

普通填报

这里分两种情况:一种是新的项目表没有数据,用户可多次填报;另一种是提前导入了数据,用户先查询到自己的,再修改补充数据。
第一种,编辑项目,开放填报,并清空查询条件。
image.png
第二种,需要在开放填报的基础上,设置查询条件,关闭重复填报。用户先查询再修改。
默认的表单字段都是文本类型,但有时我们需要设置单选,多选,上传图片等,这时,我们可以在编辑项目时,设置一下字段类型属性即可:
image.png
和php版本的查询填报系统2.0不同之处,选择字段,选择类型,设置属性,不需要每个字段都提交保存一次,全部设置好提交即可,系统会自动记住选择。
和php版本不同的之处,本系统增加了逻辑表单,可设置单选时,根据用户的不同选择,展示不同的表单内容。如下图:
image.png
用户选择学历为小学时,不显示初中和高中毕业时间;选择学历为初中时,不显示高中毕业时间。

多单位多人协同填报

系统支持多人一起填报一个项目表,并且每个只能看到自己的数据,实现保密填报。总管理员可看到全部数据并导出。
方法:
先在角色管理添加一个数据管理员并启用:
image.png
image.png
然后在账号管理,新增数据管理员账号:
image.png
然后在项目中添加该数据管理员,让他有权限看到这个项目。
image.png
数据管理员的账号登录后,可在后台看到项目列表,查看项目数据后,可批量导入也可单条新增数据。

每个数据管理员,只能查看和管理自己填写的数据,实现数据保密和互不干扰。

有时,数据管理员想偷下懒:我把二维码发给我的学校学生填报,可以不?该系统也支持!
数据管理员登录后台,查看项目数据,点击项目名称旁边的图标,即可显示二维码:
image.png
将二维码右键另存为,或者用微信扫码,分享到微信群,即可实现协同填报。
image.png
该方式要注意一点:二维码不可混用,每个数据管理员生成的二维码都不同,谁生成的二维码,扫码填报的数据归属就归谁。
导入数据时指定数据管理员
还有一种情况,表格原有一些数据,我在导入时,先指定哪些数据属于哪位数据管理员,这时,我们可以在表中添加个cjz列,填写用户id后,再导入即可。
image.png
了解数据管理员填报情况
我们在后台可随时了解数据管理员填报的情况,哪些人填写了,哪些人没填写,以及每人填写了多少条数据,可以在后台统计报表中查看:
image.png
注意:如果用数据管理员的二维码填报的,即未提供填报人信息时,用户填报的数据归属于admin总管理员。为了快速分配数据给其它数据管理员,可以数据表界面,选择相应行数据,再选择数据管理员,点击授权,将数据划拨给对方管理。
image.png

用户角色权限

该系统目前有5种角色:总管理员admin,超级数据管理员cjsjgl,数据管理员sjgl,审核员shy,普通用户。
image.png

总管理员

角色标识为admin,拥有最高权限,为了安全,一个系统最好只设一个总管理员。

超级数据管理员

可新建项目,修改项目,查看自己创建的项目表,删除项目,以及新建统计报表等。
和总管理员相比,他只能管理自己创建的项目,不可修改系统配置等。
和数据管理员相比,他能创建项目,能添加修改删除用户系统中是数据管理员,且看到项目表全部数据等。

数据管理员

只能查看分配给自己的项目,项目表里的数据,可以导入和添加修改,但只能看到自己的数据,不能看到他人填写和导入的数据,实现多人填一个表而不干扰不泄密。

审核员

只能查看分配给自己审核的项目,项目表的数据可全部查看,但不能修改(可修改审核状态),不能删除。

普通用户

新注册的用户,没有分配角色时,为普通用户,不能进后台,只能前台查询填报。

黑名单

禁止登录后台。


系统升级

自动升级

进入后台,点击系统更新->检查更新,如果有新版本,会显示窗口,并显示版本号和更新内容:
image.png
输入管理员密码后点击确定,系统会下载更新包并替换文件。替换文件后,需要手工重启后端,如果移动端无法访问,还需要修改一下index.js文件中的网址为自己的。
如果需要更新后,自动重启后端,可在宝塔面板软件中安装堡塔应用管理,然后添加应用:
image.png
输入网站的/admin目录下的go_excel_admin和运行目录即可:
image.png
然后点击重启即可:
image.png
这样,在linux系统中,系统更新后会自动重启后端,无需手工重启。

手动升级

先在网站根目录,备份好_app.config.js和admin目录下的.envl配置文件。下载最新的源码,上传到网站根目录解压覆盖。然后用上面备份好的配置文件替换对应文件。
linux系统需要进入admin目录,点击终端,输入以下命令先停止再启动后端:

ps -ef|grep "./go_excel_admin"|grep -v grep|awk '{print $2}'|xargs kill -9

nohup ./go_excel_admin &

如果是windows就更简单了,关闭cmd窗口,再双击点击运行即可。
移动端需要修改h5/static/js/index.js文件的网址为自己的(为防止出错,可搜索 https://go.dzbfsj.com,替换为自己的网址,一定要仔细核对)。

小程序和APP

系统前端使用了uniapp全端编译,支持各家的小程序和苹果安卓APP。目前主流的是微信小程序,因此后台添加了微信小程序的设置。

小程序部署

下载好微信开发者工具,在网站根目录下的小程序源码压缩包下载回来解压,用开发者工具导入目录,输入自己小程序的appid。
载入完成后,在开发者工具里,修改common/main.js中的网站为自己的:
Excel协同填报系统1.0安装使用教程 - 图81
注意必须有ssl证书,而且是腾讯认可的,不允许 http访问。如果网址正确的话,应该能出来数据了。

APP部署

安卓App只需要修改网址即可生成,然后就可以将文件发给员工安装了(如果要上架各应用市场的话,需要自己去做各种认证,每家要求都不同);
阿里旺旺图片20211111193450.jpg
苹果APP也可生成,但上架到appstore,一是需要注册苹果开发者,每年费用688元(个人版);二是填写相应资料要提交苹果公司审核通过才能上架。

其它数据库

系统默认使用了mysql数据库,如果要使用其它数据库,需要修改配置文件的config.yml,并安装好相应的数据库。

微软SQLServer

开发测试使用是的2017版本,在宝塔面板中,可以参照下图安装好sqlserver:
1.jpg2.jpg3.jpg4.jpg
5.jpg
安装完后需要重启。进入宝塔面板,点击数据库,新建一个数据库:
image.png
然后修改配置文件即可。

常见问题

修改端口号

系统默认运行在8080端口,如果要修改成其它端口,可修改根目录下的.env文件:
image.png

同一服务器运行多个系统

可以修改env文件的端口号,站点设置中的配置信息,然后将/admin/go_excel_admin文件改名再运行,如上图,最后运行即可。

优化查询速度

为了让系统易用和高兼容性,项目建表时,所有字段都使用了text类型,且未加索引。在表格上百万行时,查询速度是比较慢的,测试耗时近1秒。

注:2022年4月3日以后的版本,系统会自动对字段进行优化,无需下面的手工优化。项目只需先清空查询条件提交,再选择查询条件提交。系统会自动为查询条件加索引(多选,多图,签名字段不能作为查询条件)。

手工优化:
一、查询方式设置为精准
因为模糊查询索引不起作用,因此先将查询条件设置为精准。
二、修改字段类型

ALTER TABLE `bm_3e9978731dd67f419` CHANGE `k3` `k3` VARCHAR(200)

三、为查询条件添加索引

ALTER TABLE `bm_3e9978731dd67f419` ADD INDEX K3 ( `K3` )

经过上面的优化后,百万行的表,查询速度耗时仅1毫秒左右,提升巨大。