9 Star 34 Fork 14

3xxx / engineercms

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

EngineerCMS

————工程师知识管理系统

License Build Status GoDoc

Demo ——基于engineercms的设代资料管理平台(真实应用环境)

# go mod使用
# https://www.jianshu.com/p/760c97ff644c

# 克隆源码
# git clone https://github.com/3xxx/engineercms.git
# go run main.go
# go包自动安装
# 设置go代理
# go env -w GO111MODULE=on
# go env -w GOPROXY=https://goproxy.cn,direct

# 初始化mod:
# go mod init

# 代码中有新的库加入,需要更新mod:
# go mod tidy——下载新增的依赖包
# go mod vendor——更新

# linux系统上编译:拷贝go.mod go.sum 其他文件,然后执行go mod vendor,

# 再执行bee generate docs
# bee generate routers
# 再执行bee run -gendoc=true -downdoc=true

# 将新增的依赖包自动写入当前项目的 vendor 目录:
# go mod vendor
# 如果 go.mod 发生变化,应当重新执行 go mod vendor!
# 执行go mod vendor将删除项目中已存在的vendor目录;
# 永远不要对vendor中的依赖库进行二次修改、更改!
# go命令不检查vendor中的依赖库是否被修改
# 关闭——这个看情况,go mod vendor时,提示Get https://sum.golang.org/lookup/xxxxxx: dial tcp 216.58.200.49:443: i/o timeout
# go env -w GOSUMDB=off

# 编译(sqlite需要CGO支持)
# go build -ldflags "-w"
# 数据库初始化(此步骤执行之前,需配置`conf/app.conf`)
# ./engineercms install

# linux上执行,先杀死进程,再拷贝新的执行文件和路由文件
# killall engineercms
# 拷贝engineercms和swagger里的swagger.yml和swagger.json到对应文件夹里
# $ chmod +x engineercms 
# $ nohup ./engineercms &

# beego 2.0.0 升级指南
# 获取最新版本的 bee 工具 go install github.com/beego/bee/v2@latest
# 更新 beego 框架 go get -u github.com/beego/beego/v2
# 然后进入项目,执行: bee fix -t 2
# 需要注意的是,如果你是 windows 用户,那么你需要在 WSL 内部运行该命令。
# 在项目文件夹下鼠标右键——Git Bash Here
# 这里需要导入的包是
# github.com/beego/beego/v2/server/web/context
# 而不是
# ~ github.com/beego/beego/v2/adapter/context ~

# 目前来说因为你所有的包都切换过去了beego/beego/v2,所以你对应的context要使用beego/beego/v2/server/web/context下的这个。

# 我教你一个小技巧。当你发现依赖找不到的时候,你把import里面对应的东西删掉,IDE会帮你补全,或者给你提示。如果你用的GOLANG IDE,那么会自动帮你把对应依赖引入。

# 记住一个核心原则:如果你用的是adapter的包,那么所有的包都应该是adapter的;如果你用的是beego/beego/v2(非adapter),那么所有的都应该是beego/beego/v2下的。

# 手动执行 bee generate routers 重新生成commentsRouter_controllers.go,新版本删除了自动生成功能
# bee run -gendoc=true -downdoc=true

# go get 是拉取远程包的命令,还是继续使用的
# go install 是对项目进行编译并自动拉取所需包并生成 可执行文件的。

# 还好,你说的编译一下,生成可执行命令了,感谢!

# 解决步骤:
# 1、go get -u github.com/beego/bee/v2
# 2、cd 到这个bee/v2版本中
# 3、go mod tidy 整理一下
# 4、go install
# 此时在 GOPATH目录bin文件夹下生成了bee.exe 。
# 测试 ./bee.exe new hello 已正常创建项目,自己将bin目录加入到全局即可。

# https://www.cnblogs.com/cqlb/p/13396107.html
# 一、创建标签
# 在Git中打标签非常简单,首先,切换到需要打标签的分支上:

# 1 $ git branch
# 2 * dev
# 3   master
# 4 $ git checkout master
# 5 Switched to branch 'master'
# git add .
# git commit -m "update"
# 然后,敲命令git tag <tagname> 就可以打一个新标签:

# $ git tag v2.0.5
# 因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
# 如果要推送某个标签到远程,使用命令
# git push --tags
# $ git push origin <tagname>

# Administrator@DESK-20210217SN MINGW64 /d/engineercms (master|REBASE-i)
# $ git push --delete origin v2.0.0
# To https://github.com/3xxx/engineercms
#  - [deleted]         v2.0.0

# Administrator@DESK-20210217SN MINGW64 /d/engineercms (master|REBASE-i)
# $ git push --delete origin v2.0.2
# To https://github.com/3xxx/engineercms
#  - [deleted]         v2.0.2
# 如果有人想知道如何一次删除多个标签,你可以用空格简单地列出它们,例如git push --delete origin tag1 tag2。本地标签删除git tag -d tag1 tag2同样有效。

一 特性:

  1. 本系统采用go语言(基于beego框架)开发,运行文件为编译后的二进制可执行文件,所以无需像其他语言(php、nodejs、java等语言)编写的web应用那样,需要配置运行服务环境。
  2. 数据库采用sqlite嵌入式数据库,所以也无需配置数据库服务环境。
  3. 开箱即用,无需网络开发知识。
  4. 对onlyoffice document server的二次开发,实现企业的实时文档协作,非常方便,避免了文档的汇总等繁琐事物,效率大大提高,协作更加优雅有趣。除了支持office的docx,xlsx及pptx格式外,还支持国产wps,et和dps格式。
  5. 在线直接预览dwg文件,避免了图纸转换成pdf的麻烦,也避免了先下载附件然后用本机电脑打开图纸的麻烦,方便设计人员查阅图纸。
  6. 采用最新的froala富文本编辑器,支持word图文直接粘贴发布,word中的图片自动上传,发布文章轻松快捷,文章支持视频和文件附件。
  7. 微信小程序客户端访问和添加图文,打开微信,搜索“水务设计”即可看到小程序了,小程序端也开源
  8. web端和微信小程序多项目切换。
  9. swagger API自动化文档。
  10. 可在conf里定制9个导航条菜单。
  11. 后台查看日志。
  12. 通用的文档流程设置。文档审批,文档校审,合同评审流程,图纸校审流程,……
  13. 整合了mindoc,实现了在线创作、查阅、分享、导入、导出电子书籍。
  14. 文件分享提取码。
  15. 全文检索:上传office文档、pdf等,调用tika解析后存入elasticsearch(中文分词ik),实现全文检索。
  16. 新增supa-mapus地图协作,部分代替91地图功能,方便工程师查看现场定位建筑物。
  17. 支持minio分布式文件存储,可集群部署文件存储服务。
  18. 后台预定义工程目录类型和分层级别,支持无限级;目录采用懒加载模式;
  19. 建立项目时选择已有项目作为模板,继承已有项目权限,或选择后台预定义的项目类型和目录层级,瞬间自动建立成百上千的树形目录,支持无限级目录;目录采用懒加载显示;项目支持公开和私有;
  20. 任意层级目录下可以添加任意成果;可对任意目录进行权限设置;
  21. 成果包含文章、pdf附件和非pdf附件,并将它们分别列出;一个成果如果包含一个pdf文件则直接打开,如果多于一个则打开列表,非pdf附件也是一样;文章采用富文本编辑器froala,支持图文word直接黏贴,自动上传图片;
  22. 成果间的关联:比如先出的施工图,然后一段时间后再出了对这个图纸的修改通知单,那么修改单关联上这个图纸后,每次看这个图纸,就知道这个图纸有修改了,需要引起注意;
  23. 每个项目提供一个项目日程和大事记时间轴;
  24. 成果统计,避免领导询问进度和周报月报;
  25. 海量文件用minio分布式存储服务,集群部署。

二 应用案例:

我们做工程设计的,经常要做设代提供现场服务,工程资料很多参建方需要查阅,有一个资料平台会方便很多,并且支持多端:

√参建单位各自自由建立自己的目录,共享资料,避免大家重复存储项目资料,比如会议纪要,法律法规。

√图纸易得,能更好地控制工程质量——pdf设计文件参建单位都可以阅读,提高效率,减少障碍。

√基于“用户——角色——权限”的权限设置。独创的根据文件扩展名来进行权限管理。

√会议室和车辆的预定,用餐人数计划统计等常用功能。

√wiki技术讨论;websocket聊天室;。

√独创的pdf连续查阅;

√硬盘中的资料存储与页面的目录保持一致;设代日志等文章中照片按月度存储;

√ONLYOFFICE中文档的历史版本对照功能。

√ONLYOFFICE中文档的格式转换功能,如word转pdf。

√ONLYOFFICE中文档协作的权限设置,采用casbin。

√出差登记和打卡,考勤登记,值班安排;

√小程序多人写同一天的设代日志;

√工程图片相册服务;

√工程视频服务;

√mapus地图协作,现场定位工程建筑物;

二 todo:

× 规范标准库编辑;

× 读取文件属性——完成时间,作为月度统计依据,或提供选择,以上传时间为统计口径,生成某个目录下月度成果报表,与上个月对比柱状图;

× 项目目录编辑完善:ztree目录拖动;

× 多关键字检索;

× 项目合并和拆分:将2个项目目录合并起来,其中一个项目合并到另一个项目的子目录中,手动合并文件夹,自动修改数据库;

× 流媒体服务;

下载和安装

去百度网盘下载,直接运行。链接:https://pan.baidu.com/s/1f4zuhoymaHMN_QAEgZLwOg 提取码:upvm 将二进制文件放到源码文件夹下直接运行即可。

Linux系统下请将执行文件engineercms(linux)放入engineercms文件夹内(即win系统下运行的整个解压包);swagger文件夹下的swagger.json和swagger.yml两个文件拷贝到engineercms目录里的swagger文件夹里 进入执行文件所在文件夹,运行engineercms如下:

[root@localhost engineercms]# nohup ./engineercms &
如果出现:
-bash: ./ engineercms: Permission denied
则说明需要修改权限,用下列命令:
[root@……5 ~]# chmod +x engineercms
—如果出现端口被占用,需要去conf文件夹内修改app.conf里的端口号,保存后重新运行。
[root@……5 ~]# systemctl stop firewalld.service关闭防火墙,否则其他电脑访问不了。
停止engineercms进程的命令
killall engineercms
查看进程的命令:
ps aux

不清楚的,可以加我QQ504284或者微信hotqin999聊,也可参考quickstart

wiki。包括linux系统下的编译。linux系统下的部署参见网盘中的文档。

技术开发过程详见CSDN我的博客 系统简单使用见mindoc文档

Quick Start

  • 参见quickstart快速开始。包括后台导入Excel用户,设置用户角色和权限。

  • linux系统上的部署参见网盘中的文档。

Documentation

  • [中文文档]——请查阅document文件夹
  • 系统简单使用见mindoc文档

免费开源和问题反馈

更新用到的pkg第三方模块

git submodule update --init

第三方包

  1. beego框架
  2. casbin权限管理
  3. simplejson
  4. excelize
  5. xlsx
  6. goquery
  7. go-sqlite
  8. mahonia
  9. flow文档流程我改造的flow文档流程
  10. xorm
  11. gorm
  12. unioffice
  13. pdfcpu

前端

  1. onlyoffice document server文档协作
  2. pdf.js阅览pdf
  3. html2canvas
  4. jQueryGantt甘特图
  5. multyselect
  6. bootstrap treeview树状目录
  7. fullcalendar日历
  8. daterangerpicker
  9. datetimepicker
  10. datepicker
  11. select2
  12. x-editable表格在线编辑
  13. ztree树状目录
  14. request
  15. froala富文本编辑器
  16. ueditor百度富文本编辑器
  17. webupload百度文件上传
  18. jqfileupload
  19. bootstrap-table表格
  20. jquery.form.js表单上传文件
  21. vue.js
  22. axios
  23. element组件
  24. vxe-table表格在线编辑
  25. mapus地图协作

LICENSE

EngineerCMS source code is licensed under the Apache Licence, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html).

ONLYOFFICE实时文档协作效果——除了支持office的docx,xlsx及pptx格式外,还支持国产wps,et和dps格式。

engineercms onlyoffice1

onlyoffice word

onlyoffice powerpoint

onlyoffice excel

在线直接预览dwg图纸文件:

default

手机端访问文章效果

Snap4

微信小程序富文本编辑器添加文章:

wx05

IPAD移动端效果

项目进度展示 snap8 用户——角色——权限设置,树状目录权限,区分附件扩展名,基于casbin snap7 snap3 2 snap5

froala富文本编辑器支持word图片自动上传,视频和附件 snap13 snap6

mapus地图协作,部分替代91地图 mapus document Snap24

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright {yyyy} {name of copyright owner} Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

工程师知识管理系统——每个行业都有自己的知识管理系统,EngineerCMS旨在为土木工程师们打造一款适用的基于web的知识管理系统。它既可以用于管理个人的项目资料,也可以用于管理项目团队资料;它既可以运行于个人电脑,也可以放到服务器上。新增加支持onlyoffice实时文档协作功能。 展开 收起
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/hotqin/EngineerCMS.git
git@gitee.com:hotqin/EngineerCMS.git
hotqin
EngineerCMS
engineercms
master

搜索帮助