Browse Source

全新系统(完成了秒过分数线部分)

chengjie 9 months ago
commit
78251cf568
100 changed files with 15121 additions and 0 deletions
  1. 10 0
      .gitignore
  2. 97 0
      README.md
  3. 14 0
      doc/init.sql
  4. 1940 0
      package-lock.json
  5. 43 0
      package.json
  6. 173 0
      public/dawushi.html
  7. BIN
      public/favicon.ico
  8. BIN
      public/images/12.png
  9. BIN
      public/images/13.png
  10. BIN
      public/images/14.png
  11. BIN
      public/images/15.png
  12. BIN
      public/images/SchulteShareBG.png
  13. BIN
      public/images/ShareBG.png
  14. BIN
      public/images/ShareBGUp.png
  15. BIN
      public/images/acode/ScoreLineArticle_-173.png
  16. 1 0
      public/images/acode/readme
  17. BIN
      public/images/beiantubiao.png
  18. BIN
      public/images/bg.jpg
  19. 1 0
      public/images/hanzi/readme
  20. BIN
      public/images/hanziBg.png
  21. BIN
      public/images/hanziSmall.png
  22. BIN
      public/images/loading.gif
  23. BIN
      public/images/miaoguo/doc_kwk_0101.png
  24. BIN
      public/images/miaoguo/doc_kwk_0102.png
  25. BIN
      public/images/miaoguo/doc_kwk_0103.png
  26. BIN
      public/images/miaoguo/doc_kwk_0104.png
  27. BIN
      public/images/miaoguo/doc_kwk_0105.png
  28. BIN
      public/images/miaoguo/doc_kwk_0106.png
  29. BIN
      public/images/miaoguo/doc_kwk_0107.png
  30. BIN
      public/images/miaoguo/doc_kwk_0201.png
  31. BIN
      public/images/miaoguo/doc_kwk_0202.png
  32. BIN
      public/images/miaoguo/doc_kwk_0203.png
  33. BIN
      public/images/miaoguo/doc_kwk_0204.png
  34. BIN
      public/images/miaoguo/doc_kwk_0301.png
  35. BIN
      public/images/miaoguo/doc_kwk_0302.png
  36. BIN
      public/images/miaoguo/doc_kwk_0303.png
  37. BIN
      public/images/miaoguo/doc_kwk_0304.png
  38. BIN
      public/images/miaoguo/doc_kwk_0305.png
  39. BIN
      public/images/miaoguo/doc_kwk_0401.png
  40. BIN
      public/images/miaoguo/doc_kwk_0402.png
  41. BIN
      public/images/miaoguo/doc_kwk_0403.png
  42. BIN
      public/images/miaoguo/doc_kwk_0404.png
  43. BIN
      public/images/miaoguo/doc_kwk_0405.png
  44. BIN
      public/images/miaoguo/doc_kwk_0406.png
  45. BIN
      public/images/miaoguo/doc_kwk_0501.png
  46. BIN
      public/images/miaoguo/doc_kwk_0502.png
  47. BIN
      public/images/miaoguo/doc_kwk_0503.png
  48. BIN
      public/images/miaoguo/doc_kwk_0601.png
  49. BIN
      public/images/miaoguo/doc_kwk_0602.png
  50. BIN
      public/images/miaoguo/doc_kwk_0603.png
  51. BIN
      public/images/miaoguo/doc_mustread_01.png
  52. BIN
      public/images/miaoguo/doc_mustread_02.png
  53. 1 0
      public/images/miaoguo/ef65485d75502da3e3daeecb901e8f15.mg
  54. 1 0
      public/images/miaoguo/fbd8cc50bcb76e7022e62b215ee11fe5.mg
  55. 1 0
      public/images/miaoguo/fe9aa3499e6399a182b31d5a66c30fc6.mg
  56. BIN
      public/images/miaoguo/promotion_leaflet_c01.png
  57. BIN
      public/images/miaoguo/promotion_leaflet_c02.png
  58. BIN
      public/images/miaoguo/promotion_leaflet_c03.png
  59. 1 0
      public/images/miaoguo/readme
  60. BIN
      public/images/miaoguo/trial_registration_disabled.png
  61. BIN
      public/images/miaoguo/trial_registration_xcode.png
  62. BIN
      public/images/mps/homepage_01.png
  63. BIN
      public/images/mps/homepage_02.png
  64. BIN
      public/images/mps/homepage_03.png
  65. 23 0
      public/images/mps/mps.css
  66. 1 0
      public/images/print/readme
  67. BIN
      public/images/qrcode_for_gh_2a43478ea701_258.jpg
  68. 1 0
      public/images/schulte/readme
  69. 1 0
      public/images/spatialIntelligence/readme
  70. BIN
      public/images/universalpic_face_default_blue_120x120.png
  71. BIN
      public/images/universalpic_logo_200x200.png
  72. BIN
      public/images/营业执照-三证合一.jpeg
  73. 28 0
      public/index.html
  74. BIN
      public/js/fonts/KaTeX_Main-Italic.ttf
  75. BIN
      public/js/fonts/KaTeX_Main-Regular.ttf
  76. BIN
      public/js/fonts/KaTeX_Main-Regular.woff
  77. BIN
      public/js/fonts/KaTeX_Main-Regular.woff2
  78. BIN
      public/js/fonts/KaTeX_Math-Italic.woff
  79. BIN
      public/js/fonts/KaTeX_Math-Italic.woff2
  80. 1 0
      public/js/jedate.css
  81. 9 0
      public/js/jedate.min.js
  82. BIN
      public/js/jedatefont.ttf
  83. BIN
      public/js/jedatefont.woff
  84. 6 0
      public/js/jquery-1.10.2.min.js
  85. 2937 0
      public/js/jquery-1.6.4.min.js
  86. 9555 0
      public/js/jquery-1.9.0.js
  87. 13 0
      public/js/jquery-ui.min.js
  88. 5 0
      public/js/jquery.mousewheel.min.js
  89. 1 0
      public/js/jquery.tagit.css
  90. 1 0
      public/js/katex.min.css
  91. 1 0
      public/js/katex.min.js
  92. 29 0
      public/js/tag-it.js
  93. 1 0
      public/js/tagit.ui-zendesk.css
  94. 8 0
      public/js/vue.js
  95. 6 0
      public/js/vue.min.js
  96. 11 0
      public/mg/ExcelTemplate.html
  97. 29 0
      public/mg/common.css
  98. 171 0
      public/mg/common.js
  99. BIN
      public/mg/img/ExcelTemplate.png
  100. 0 0
      public/mg/img/ExcelTemplate1.png

+ 10 - 0
.gitignore

@@ -0,0 +1,10 @@
1
+node_modules
2
+old_src
3
+public/uploads
4
+public/.DS_Store
5
+public/JuRzxekY6w.txt
6
+public/MP_verify_HgjLKxYLCrzKmgwd.txt
7
+public/MP_verify_I783a7pdVUHZryII.txt
8
+public/VGeyix4D39.txt
9
+public/ZxGw5vkQbG.txt
10
+.DS_Store

+ 97 - 0
README.md

@@ -0,0 +1,97 @@
1
+# Koa用户管理API
2
+
3
+这是一个基于Koa.js的简单用户管理API示例,使用MySQL作为数据库。
4
+
5
+## 功能特点
6
+
7
+- 基于Koa.js框架
8
+- 使用ES模块语法
9
+- MySQL数据库连接
10
+- RESTful API设计
11
+- 环境配置分离
12
+
13
+## 安装
14
+
15
+### Node.js 版本要求
16
+
17
+本项目需要 Node.js 24.1.0 版本。如果你使用 nvm,可以按照以下步骤设置:
18
+
19
+```bash
20
+# 安装所需的 Node.js 版本(如果尚未安装)
21
+nvm install 24.1.0
22
+
23
+# 切换到项目所需的 Node.js 版本
24
+nvm use
25
+```
26
+
27
+如果你没有安装 nvm,可以从 [Node.js 官网](https://nodejs.org/) 下载并安装 24.1.0 版本。
28
+
29
+### 项目安装
30
+
31
+```bash
32
+# 克隆仓库
33
+git clone https://github.com/yourusername/kylx365_2025.git
34
+cd kylx365_2025
35
+
36
+# 确保使用正确的 Node.js 版本
37
+nvm use
38
+
39
+# 安装依赖
40
+npm install
41
+```
42
+
43
+## 数据库设置
44
+
45
+1. 确保MySQL服务已启动
46
+2. 执行初始化SQL脚本:
47
+
48
+```bash
49
+mysql -u root -p < doc/init.sql
50
+```
51
+
52
+## 环境变量
53
+
54
+可以通过环境变量自定义配置:
55
+
56
+- `NODE_ENV`: 设置环境 (`development` 或 `production`)
57
+- `PORT`: 服务器端口
58
+- `DB_HOST`: 数据库主机
59
+- `DB_USER`: 数据库用户名
60
+- `DB_PASSWORD`: 数据库密码
61
+- `DB_NAME`: 数据库名称
62
+
63
+## 运行
64
+
65
+```bash
66
+# 开发环境
67
+npm run dev
68
+
69
+# 生产环境
70
+npm run start
71
+```
72
+
73
+## API端点
74
+
75
+| 方法   | 路径           | 描述         |
76
+|--------|---------------|--------------|
77
+| GET    | /api/users    | 获取所有用户  |
78
+| GET    | /api/users/:id | 获取单个用户  |
79
+| POST   | /api/users    | 创建新用户    |
80
+| PUT    | /api/users/:id | 更新用户     |
81
+| DELETE | /api/users/:id | 删除用户     |
82
+
83
+## 示例请求
84
+
85
+### 创建用户
86
+
87
+```bash
88
+curl -X POST http://localhost:3000/api/users \
89
+  -H "Content-Type: application/json" \
90
+  -d '{"name": "新用户", "email": "new@example.com"}'
91
+```
92
+
93
+### 获取所有用户
94
+
95
+```bash
96
+curl http://localhost:3000/api/users
97
+```

+ 14 - 0
doc/init.sql

@@ -0,0 +1,14 @@
1
+CREATE DATABASE IF NOT EXISTS test;
2
+USE test;
3
+
4
+CREATE TABLE IF NOT EXISTS users (
5
+    id INT AUTO_INCREMENT PRIMARY KEY,
6
+    name VARCHAR(100) NOT NULL,
7
+    email VARCHAR(100) NOT NULL,
8
+    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
9
+);
10
+
11
+-- 插入一些测试数据
12
+INSERT INTO users (name, email) VALUES 
13
+    ('测试用户1', 'test1@example.com'),
14
+    ('测试用户2', 'test2@example.com');

File diff suppressed because it is too large
+ 1940 - 0
package-lock.json


+ 43 - 0
package.json

@@ -0,0 +1,43 @@
1
+{
2
+  "name": "kylx365_2025",
3
+  "version": "1.0.0",
4
+  "description": "",
5
+  "main": "index.js",
6
+  "directories": {
7
+    "doc": "doc"
8
+  },
9
+  "scripts": {
10
+    "predev": "node scripts/check-node-version.js",
11
+    "dev": "cross-env NODE_ENV=development node src/app.js",
12
+    "prestart": "node scripts/check-node-version.js",
13
+    "start": "cross-env NODE_ENV=production node src/app.js",
14
+    "test": "echo \"Error: no test specified\" && exit 1"
15
+  },
16
+  "engines": {
17
+    "node": "24.1.0"
18
+  },
19
+  "keywords": [],
20
+  "author": "",
21
+  "license": "ISC",
22
+  "type": "module",
23
+  "dependencies": {
24
+    "@koa/multer": "^3.0.2",
25
+    "@koa/router": "^13.1.0",
26
+    "child_process": "^1.0.2",
27
+    "cos-nodejs-sdk-v5": "^2.16.0-beta.3",
28
+    "gm": "^1.25.1",
29
+    "koa": "^3.0.0",
30
+    "koa-bodyparser": "^4.4.1",
31
+    "koa-router": "^13.0.1",
32
+    "koa-static": "^5.0.0",
33
+    "lodash": "^4.17.21",
34
+    "moment": "^2.30.1",
35
+    "multer": "^1.4.5-lts.1",
36
+    "mysql2": "^3.14.1",
37
+    "request": "^2.88.2",
38
+    "request-promise": "^4.2.6"
39
+  },
40
+  "devDependencies": {
41
+    "cross-env": "^7.0.3"
42
+  }
43
+}

+ 173 - 0
public/dawushi.html

@@ -0,0 +1,173 @@
1
+<!DOCTYPE html>
2
+<html>
3
+<head>
4
+    <TITLE>大巫师算法</TITLE>
5
+    <meta charset="UTF-8">
6
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
7
+    <meta name ="viewport" content ="initial-scale=1, maximum-scale=3, minimum-scale=1, user-scalable=no">
8
+    <script src="https://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
9
+    <link rel="stylesheet" href="./mg/common.css">
10
+    <style>
11
+        body{
12
+            font-size:24px;
13
+        }
14
+
15
+        .title{
16
+            font-size: 32px;
17
+            margin-top: 20px;
18
+        }
19
+
20
+        .panel1{
21
+            width: 90%;
22
+            justify-content: space-between;
23
+            margin-top: 40px;
24
+            align-items: flex-start;
25
+        }
26
+        .panel11{
27
+            height:40px;
28
+        }
29
+
30
+        .td1{
31
+            width:150px;
32
+            text-align: right;
33
+            margin-right: 20px;
34
+        }
35
+
36
+        input{
37
+            width:100px;
38
+            height:25px;
39
+            font-size:22px;
40
+        }
41
+
42
+        .row1{
43
+            margin-top: 40px;
44
+        }
45
+
46
+        .panel2{
47
+            width: 100%;
48
+        }
49
+
50
+        .panel20{
51
+            align-self: flex-start;
52
+            margin-left: 12px;
53
+        }
54
+
55
+        .row2{
56
+            font-size: 22px;
57
+            margin-left: 24px;
58
+            font-weight: 700;
59
+            margin-top: 10px;
60
+        }
61
+        .row3{
62
+            margin-top: 30px;
63
+        }
64
+
65
+        .td2{
66
+            width: 60px;
67
+            text-align: right;
68
+            margin: 0 5px 0 15px;
69
+        }
70
+
71
+        .panel21{
72
+            font-size:18px;
73
+            width:100%;
74
+            align-items: flex-start;
75
+        }
76
+
77
+        .panelBtn{
78
+            width: 100%;
79
+            margin-top: 30px;
80
+        }
81
+
82
+        button{
83
+            font-size:24px;
84
+            width:100px;
85
+        }
86
+
87
+        .result{
88
+            background-color: #f0f0f0;
89
+            width:120px;
90
+            height:40px;
91
+            text-align: center;
92
+        }
93
+
94
+
95
+    </style>
96
+    <SCRIPT>
97
+        $(document).ready(function () {
98
+            $("#computer").click(function () {
99
+                computer();
100
+            });
101
+
102
+            function computer(){
103
+                var a=Number($("#a").val());
104
+                var b=Number($("#b").val());
105
+                var c=Number($("#c").val());
106
+
107
+                if (!IsNumber(a)){
108
+                    alert("请在文本框中输入数字!");
109
+                    $("#a").val("");
110
+                }
111
+                else if (!IsNumber(b)){
112
+                    alert("请在文本框中输入数字!");
113
+                    $("#b").val("");
114
+                }
115
+                else if (!IsNumber(c)){
116
+                    alert("请在文本框中输入数字!");
117
+                    $("#c").val("");
118
+                }
119
+                else if (a && b && c){
120
+                    try {
121
+                        var delta = (b * c) * (b * c) + 4 * c * a * (2 + b);
122
+                        var x = (Math.sqrt(delta) - (b * c)) / (2 * c);
123
+
124
+                        x = Math.round(x * 1000) / 1000;
125
+
126
+                        var y = Math.round(c * x * 1000) / 1000;
127
+                        $(".d").html(x);
128
+                        $(".nd").html(y);
129
+                    }
130
+                    catch (e) {
131
+                        $(".d").html("出错");
132
+                        $(".nd").html("出错");
133
+                    }
134
+                }
135
+                else{
136
+                    $(".d").html("");
137
+                    $(".nd").html("");
138
+                }
139
+            }
140
+        });
141
+
142
+        function IsNumber(value) {
143
+            return !isNaN(value);
144
+        }
145
+
146
+    </SCRIPT>
147
+</HEAD>
148
+<BODY class="FlexColumn">
149
+<div class="Main FlexColumn">
150
+<div class="title">放疗危及器官限量换算</div>
151
+<div class="panel1 FlexColumn">
152
+    <div class="panel11 FlexRow"><div class="td1">EQD₂(Gy): </div><div><input type="text" id="a" value="" /></div></div>
153
+    <div class="panel11 FlexRow"><div class="td1">n(次): </div><div><input type="text"  id="c"  value="" /></div></div>
154
+    <div class="panel11 FlexRow"><div class="td1">α/β值: </div><div><input type="text"  id="b"  value="" /></div></div>
155
+    <div class="panelBtn FlexRow"><button id="computer">计算</button></div>
156
+    <div class="row1 FlexRow"><div class="td1">d = </div><div class="d result"></div></div>
157
+    <div class="row1 FlexRow"><div class="td1">nd = </div><div class="nd result"></div></div>
158
+</div>
159
+<hr />
160
+<div class="panel2 FlexColumn">
161
+    <div class="panel20">注释:</div>
162
+    <div class="panel21 FlexColumn">
163
+        <div class="row2">EQD₂·(2+α/β) = n·d·( d + α/β )</div>
164
+        <div class="row3 FlexRow"><div class="td2">EQD₂:</div><div>单次放疗2Gy情况下危及器官限量</div></div>
165
+        <div class="row4 FlexRow"><div class="td2">n:</div><div>预计放疗次数</div></div>
166
+        <div class="row4 FlexRow"><div class="td2">d:</div><div>单次放疗危及器官限量</div></div>
167
+        <div class="row4 FlexRow"><div class="td2">nd:</div><div>实际放疗剂量情况下危及器官总限量</div></div>
168
+
169
+    </div>
170
+</div>
171
+</div>
172
+</BODY>
173
+</HTML>

BIN
public/favicon.ico


BIN
public/images/12.png


BIN
public/images/13.png


BIN
public/images/14.png


BIN
public/images/15.png


BIN
public/images/SchulteShareBG.png


BIN
public/images/ShareBG.png


BIN
public/images/ShareBGUp.png


BIN
public/images/acode/ScoreLineArticle_-173.png


+ 1 - 0
public/images/acode/readme

@@ -0,0 +1 @@
1
+上传用户的二维码。

BIN
public/images/beiantubiao.png


BIN
public/images/bg.jpg


+ 1 - 0
public/images/hanzi/readme

@@ -0,0 +1 @@
1
+上传识字图片。

BIN
public/images/hanziBg.png


BIN
public/images/hanziSmall.png


BIN
public/images/loading.gif


BIN
public/images/miaoguo/doc_kwk_0101.png


BIN
public/images/miaoguo/doc_kwk_0102.png


BIN
public/images/miaoguo/doc_kwk_0103.png


BIN
public/images/miaoguo/doc_kwk_0104.png


BIN
public/images/miaoguo/doc_kwk_0105.png


BIN
public/images/miaoguo/doc_kwk_0106.png


BIN
public/images/miaoguo/doc_kwk_0107.png


BIN
public/images/miaoguo/doc_kwk_0201.png


BIN
public/images/miaoguo/doc_kwk_0202.png


BIN
public/images/miaoguo/doc_kwk_0203.png


BIN
public/images/miaoguo/doc_kwk_0204.png


BIN
public/images/miaoguo/doc_kwk_0301.png


BIN
public/images/miaoguo/doc_kwk_0302.png


BIN
public/images/miaoguo/doc_kwk_0303.png


BIN
public/images/miaoguo/doc_kwk_0304.png


BIN
public/images/miaoguo/doc_kwk_0305.png


BIN
public/images/miaoguo/doc_kwk_0401.png


BIN
public/images/miaoguo/doc_kwk_0402.png


BIN
public/images/miaoguo/doc_kwk_0403.png


BIN
public/images/miaoguo/doc_kwk_0404.png


BIN
public/images/miaoguo/doc_kwk_0405.png


BIN
public/images/miaoguo/doc_kwk_0406.png


BIN
public/images/miaoguo/doc_kwk_0501.png


BIN
public/images/miaoguo/doc_kwk_0502.png


BIN
public/images/miaoguo/doc_kwk_0503.png


BIN
public/images/miaoguo/doc_kwk_0601.png


BIN
public/images/miaoguo/doc_kwk_0602.png


BIN
public/images/miaoguo/doc_kwk_0603.png


BIN
public/images/miaoguo/doc_mustread_01.png


BIN
public/images/miaoguo/doc_mustread_02.png


+ 1 - 0
public/images/miaoguo/ef65485d75502da3e3daeecb901e8f15.mg

@@ -0,0 +1 @@
1
+/1inF0HgoMvxaVieGTJHKA==

+ 1 - 0
public/images/miaoguo/fbd8cc50bcb76e7022e62b215ee11fe5.mg

@@ -0,0 +1 @@
1
+TaZb3lK6292mWuf0IHG7wA==

+ 1 - 0
public/images/miaoguo/fe9aa3499e6399a182b31d5a66c30fc6.mg

@@ -0,0 +1 @@
1
+/1inF0HgoMvxaVieGTJHKA==

BIN
public/images/miaoguo/promotion_leaflet_c01.png


BIN
public/images/miaoguo/promotion_leaflet_c02.png


BIN
public/images/miaoguo/promotion_leaflet_c03.png


+ 1 - 0
public/images/miaoguo/readme

@@ -0,0 +1 @@
1
+上传用户的图片

BIN
public/images/miaoguo/trial_registration_disabled.png


BIN
public/images/miaoguo/trial_registration_xcode.png


BIN
public/images/mps/homepage_01.png


BIN
public/images/mps/homepage_02.png


BIN
public/images/mps/homepage_03.png


+ 23 - 0
public/images/mps/mps.css

@@ -0,0 +1,23 @@
1
+body{
2
+    background-color: #FFBE00;
3
+}
4
+.homepage_01{
5
+    width:360px;
6
+    height:210px;
7
+    margin-top: 100px;
8
+}
9
+
10
+.homepage_02{
11
+    width:95%;
12
+    max-width:1306px;
13
+    max-height:596px;
14
+    margin-top: 100px;
15
+}
16
+
17
+.homepage_03{
18
+    width:274px;
19
+    height:200px;
20
+    position: fixed;
21
+    bottom: 0;
22
+    z-index: 10;
23
+}

+ 1 - 0
public/images/print/readme

@@ -0,0 +1 @@
1
+上传打印的图片

BIN
public/images/qrcode_for_gh_2a43478ea701_258.jpg


+ 1 - 0
public/images/schulte/readme

@@ -0,0 +1 @@
1
+上传用户的图片

+ 1 - 0
public/images/spatialIntelligence/readme

@@ -0,0 +1 @@
1
+上传用户的图片

BIN
public/images/universalpic_face_default_blue_120x120.png


BIN
public/images/universalpic_logo_200x200.png


BIN
public/images/营业执照-三证合一.jpeg


+ 28 - 0
public/index.html

@@ -0,0 +1,28 @@
1
+<!DOCTYPE html>
2
+<html>
3
+<head>
4
+    <meta charset="UTF-8">
5
+    <title>秒过</title>
6
+    <link rel="stylesheet" href="/mg/common.css">
7
+    <link rel="stylesheet" href="/mg/index.css">
8
+</head>
9
+<body class="FlexColumn">
10
+    <div class="main FlexColumn">
11
+        <img src="https://kylx365-1253256735.file.myqcloud.com/web/universalpic_logo_120x120.png" class="img" />
12
+        <div class="text1">秒过学习</div>
13
+        <div class="text2">电脑网站版</div>
14
+        <a class="btn FlexRow" href="https://open.weixin.qq.com/connect/qrconnect?appid=wxed722a5486a6ead7&redirect_uri=https://www.kylx365.com/miaoguologin&response_type=code&scope=snsapi_login&state=STATE#wechat_redirect">
15
+            <img src="https://kylx365-1253256735.file.myqcloud.com/web/universalpic_share_white_33x26.png" class="img2" />
16
+            <div>登录</div>
17
+        </a>
18
+        <div class="text3">本网站适用于电脑,不能用微信直接打开。
19
+            强烈建议使用Google Chrome浏览器。</div>
20
+        <a class="text4" target="_blank" href="https://www.google.cn/intl/zh-CN/chrome/">前往官网下载Chrome浏览器</a>
21
+        <div class="footer">
22
+            上海唱意网络科技有限公司 2019 <br /><a href="https://beian.miit.gov.cn/" target="_blank">沪ICP备17004832号-1</a>&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=31011202012759"><img src="./images/beiantubiao.png" />沪公网安备 31011202012759号</a>
23
+        </div>
24
+        </div>
25
+    </div>
26
+
27
+</body>
28
+</html>

BIN
public/js/fonts/KaTeX_Main-Italic.ttf


BIN
public/js/fonts/KaTeX_Main-Regular.ttf


BIN
public/js/fonts/KaTeX_Main-Regular.woff


BIN
public/js/fonts/KaTeX_Main-Regular.woff2


BIN
public/js/fonts/KaTeX_Math-Italic.woff


BIN
public/js/fonts/KaTeX_Math-Italic.woff2


File diff suppressed because it is too large
+ 1 - 0
public/js/jedate.css


File diff suppressed because it is too large
+ 9 - 0
public/js/jedate.min.js


BIN
public/js/jedatefont.ttf


BIN
public/js/jedatefont.woff


File diff suppressed because it is too large
+ 6 - 0
public/js/jquery-1.10.2.min.js


File diff suppressed because it is too large
+ 2937 - 0
public/js/jquery-1.6.4.min.js


File diff suppressed because it is too large
+ 9555 - 0
public/js/jquery-1.9.0.js


File diff suppressed because it is too large
+ 13 - 0
public/js/jquery-ui.min.js


File diff suppressed because it is too large
+ 5 - 0
public/js/jquery.mousewheel.min.js


File diff suppressed because it is too large
+ 1 - 0
public/js/jquery.tagit.css


File diff suppressed because it is too large
+ 1 - 0
public/js/katex.min.css


File diff suppressed because it is too large
+ 1 - 0
public/js/katex.min.js


File diff suppressed because it is too large
+ 29 - 0
public/js/tag-it.js


File diff suppressed because it is too large
+ 1 - 0
public/js/tagit.ui-zendesk.css


File diff suppressed because it is too large
+ 8 - 0
public/js/vue.js


File diff suppressed because it is too large
+ 6 - 0
public/js/vue.min.js


+ 11 - 0
public/mg/ExcelTemplate.html

@@ -0,0 +1,11 @@
1
+<!DOCTYPE html>
2
+<html lang="en">
3
+<head>
4
+    <meta charset="UTF-8">
5
+    <title>模板使用帮助</title>
6
+</head>
7
+<body>
8
+<img src="/mg/img/ExcelTemplate.png" />
9
+<img src="/mg/img/ExcelTemplate1.png" />
10
+</body>
11
+</html>

+ 29 - 0
public/mg/common.css

@@ -0,0 +1,29 @@
1
+.FlexColumn {
2
+    display: flex;
3
+    flex-direction: column;
4
+    align-items: center;
5
+    justify-content: center;
6
+}
7
+
8
+.FlexRow {
9
+    display: flex;
10
+    flex-direction: row;
11
+    align-items: center;
12
+    justify-content: center;
13
+}
14
+
15
+body {
16
+    padding: 0;
17
+    margin: auto 0;
18
+}
19
+
20
+.container {
21
+    width:100%;
22
+    padding: 0;
23
+    margin: auto 0;
24
+}
25
+
26
+.img {
27
+    width:100%;
28
+    margin: auto 0;
29
+}

+ 171 - 0
public/mg/common.js

@@ -0,0 +1,171 @@
1
+//v1.0.0
2
+(function ($, undefined) {
3
+    $.fn.getCursorPosition = function () {
4
+        var el = $(this).get(0);
5
+        var pos = 0;
6
+        if ('selectionStart' in el) {
7
+            pos = el.selectionStart;
8
+        } else if ('selection' in document) {
9
+            el.focus();
10
+            var Sel = document.selection.createRange();
11
+            var SelLength = document.selection.createRange().text.length;
12
+            Sel.moveStart('character', -el.value.length);
13
+            pos = Sel.text.length - SelLength;
14
+        }
15
+        return pos;
16
+    }
17
+})(jQuery);
18
+
19
+jQuery.cookie = function (name, value, options) {
20
+    if (typeof value != 'undefined') { // name and value given, set cookie
21
+        options = options || {};
22
+        if (value === null) {
23
+            value = '';
24
+            options.expires = -1;
25
+        }
26
+        var expires = '';
27
+        if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
28
+            var date;
29
+            if (typeof options.expires == 'number') {
30
+                date = new Date();
31
+                date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
32
+            } else {
33
+                date = options.expires;
34
+            }
35
+            expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
36
+        }
37
+        var path = options.path ? '; path=' + options.path : '';
38
+        var domain = options.domain ? '; domain=' + options.domain : '';
39
+        var secure = options.secure ? '; secure' : '';
40
+        document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
41
+    } else { // only name given, get cookie
42
+        var cookieValue = null;
43
+        if (document.cookie && document.cookie != '') {
44
+            var cookies = document.cookie.split(';');
45
+            for (var i = 0; i < cookies.length; i++) {
46
+                var cookie = jQuery.trim(cookies[i]);
47
+                // Does this cookie string begin with the name we want?
48
+                if (cookie.substring(0, name.length + 1) == (name + '=')) {
49
+                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
50
+                    break;
51
+                }
52
+            }
53
+        }
54
+        return cookieValue;
55
+    }
56
+};
57
+
58
+function checkIsArray(obj) {
59
+    return Object.prototype.toString.call(obj) === '[object Array]';
60
+}
61
+function Trim(str) { //删除左右两端的空格
62
+    return str.replace(/(^\s*)|(\s*$)/g, "");
63
+}
64
+
65
+
66
+function ReplaceAllString(str, replaceStrFrom, replaceStrTo) {//替换
67
+    if (str && str.length > 0) {
68
+        var reg = new RegExp(replaceStrFrom, "g");
69
+        //console.log(str);
70
+        return str.toString().replace(reg, replaceStrTo);
71
+    }
72
+    else
73
+        return str;
74
+}
75
+
76
+function formatTime(date, format, isShort) {
77
+    if (date) {
78
+        var year = date.getFullYear()
79
+        var month = date.getMonth() + 1
80
+        var day = date.getDate()
81
+
82
+        var hour = date.getHours()
83
+        var minute = date.getMinutes()
84
+        var second = date.getSeconds()
85
+
86
+        if (!format)
87
+            format = "-";
88
+
89
+        if (isShort)
90
+            return [year, month, day].map(formatNumber).join(format);
91
+        else
92
+            return [year, month, day].map(formatNumber).join(format) + ' ' + [hour, minute, second].map(formatNumber).join(':');
93
+    }
94
+    else
95
+        return "";
96
+}
97
+
98
+function formatNumber(n) {
99
+    n = n.toString()
100
+    return n[1] ? n : '0' + n
101
+}
102
+
103
+function addDate(interval, number, date) {
104
+    switch (interval.toLowerCase()) {
105
+        case "y":
106
+            return new Date(date.setFullYear(date.getFullYear() + number));
107
+        case "m":
108
+            return new Date(date.setMonth(date.getMonth() + number));
109
+        case "d":
110
+            return new Date(date.setDate(date.getDate() + number));
111
+        case "w":
112
+            return new Date(date.setDate(date.getDate() + 7 * number));
113
+        case "h":
114
+            return new Date(date.setHours(date.getHours() + number));
115
+        case "n":
116
+            return new Date(date.setMinutes(date.getMinutes() + number));
117
+        case "s":
118
+            return new Date(date.setSeconds(date.getSeconds() + number));
119
+        case "l":
120
+            return new Date(date.setMilliseconds(date.getMilliseconds() + number));
121
+    }
122
+}
123
+
124
+function myBrowser() {
125
+    var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
126
+    var isOpera = userAgent.indexOf("Opera") > -1; //判断是否Opera浏览器
127
+    var isIE = userAgent.indexOf("compatible") > -1
128
+        && userAgent.indexOf("MSIE") > -1 && !isOpera; //判断是否IE浏览器
129
+    var isEdge = userAgent.indexOf("Edge") > -1; //判断是否IE的Edge浏览器
130
+    var isFF = userAgent.indexOf("Firefox") > -1; //判断是否Firefox浏览器
131
+    var isSafari = userAgent.indexOf("Safari") > -1
132
+        && userAgent.indexOf("Chrome") == -1; //判断是否Safari浏览器
133
+    var isChrome = userAgent.indexOf("Chrome") > -1
134
+        && userAgent.indexOf("Safari") > -1; //判断Chrome浏览器
135
+
136
+    if (isIE) {
137
+        var reIE = new RegExp("MSIE (\\d+\\.\\d+);");
138
+        reIE.test(userAgent);
139
+        var fIEVersion = parseFloat(RegExp["$1"]);
140
+        if (fIEVersion == 7) {
141
+            return "IE7";
142
+        } else if (fIEVersion == 8) {
143
+            return "IE8";
144
+        } else if (fIEVersion == 9) {
145
+            return "IE9";
146
+        } else if (fIEVersion == 10) {
147
+            return "IE10";
148
+        } else if (fIEVersion == 11) {
149
+            return "IE11";
150
+        } else {
151
+            return "0";
152
+        }//IE版本过低
153
+        return "IE";
154
+    }
155
+    if (isOpera) {
156
+        return "Opera";
157
+    }
158
+    if (isEdge) {
159
+        return "Edge";
160
+    }
161
+    if (isFF) {
162
+        return "FF";
163
+    }
164
+    if (isSafari) {
165
+        return "Safari";
166
+    }
167
+    if (isChrome) {
168
+        return "Chrome";
169
+    }
170
+
171
+}

BIN
public/mg/img/ExcelTemplate.png


+ 0 - 0
public/mg/img/ExcelTemplate1.png


Some files were not shown because too many files changed in this diff