├── .babelrc
├── .gitignore
├── README.md
├── assets
├── README.md
├── css
│ ├── base.scss
│ ├── temp.scss
│ └── varibale.scss
├── font
│ ├── demo.css
│ ├── demo_index.html
│ ├── iconfont.css
│ ├── iconfont.eot
│ ├── iconfont.js
│ ├── iconfont.svg
│ ├── iconfont.ttf
│ ├── iconfont.woff
│ └── iconfont.woff2
├── img
│ ├── 1.png
│ ├── 12_12.jpg
│ ├── 2.png
│ ├── 3.png
│ ├── 8_8.jpg
│ ├── about.png
│ ├── arrow.png
│ ├── arrow1.png
│ ├── beianico.png
│ ├── ellipse.png
│ ├── feedback.png
│ ├── green.png
│ ├── home1.png
│ ├── link.png
│ ├── logo.png
│ ├── look.png
│ ├── news.png
│ ├── phone.png
│ ├── pink.png
│ ├── serBG.png
│ └── show.png
└── testimg
│ ├── 1563520246158上传的图片.jpg
│ └── 1563520312322上传的图片.jpg
├── base64.js
├── components
├── README.md
├── home
│ ├── bottom.vue
│ ├── index.vue
│ └── top.vue
└── public
│ ├── footer
│ └── index.vue
│ └── header
│ ├── index.vue
│ ├── left-bar.vue
│ └── right-bar.vue
├── dbs
├── config.js
└── models
│ └── service.js
├── layouts
├── README.md
├── default.vue
├── error.vue
└── none.vue
├── md
├── img-base64.html
├── mongoose笔记.md
├── nuxt问题总结.md
├── redis笔记.md
├── ssl签发笔记.md
├── 学习笔记.html
├── 学习笔记.md
├── 安装选项图.png
├── 让koa、nuxt等node项目使用ES6.md
└── 部署nuxt-koa2遇到的坑.md
├── middleware
└── README.md
├── nuxt.config.js
├── package-lock.json
├── package.json
├── pages
├── README.md
├── about.vue
├── admin.vue
├── edit.vue
├── index.vue
├── news
│ ├── _id.vue
│ └── index.vue
├── privacy.vue
├── service.vue
└── terms.vue
├── plugins
├── README.md
├── element-ui.js
└── vue-mavon-editor.js
├── server
├── index.js
└── service.js
├── static
├── README.md
└── favicon.ico
└── store
└── README.md
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["env"]
3 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by .ignore support plugin (hsz.mobi)
2 | ### Node template
3 | # Logs
4 | logs
5 | *.log
6 | npm-debug.log*
7 | yarn-debug.log*
8 | yarn-error.log*
9 |
10 | # Runtime data
11 | pids
12 | *.pid
13 | *.seed
14 | *.pid.lock
15 |
16 | # Directory for instrumented libs generated by jscoverage/JSCover
17 | lib-cov
18 |
19 | # Coverage directory used by tools like istanbul
20 | coverage
21 |
22 | # nyc test coverage
23 | .nyc_output
24 |
25 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
26 | .grunt
27 |
28 | # Bower dependency directory (https://bower.io/)
29 | bower_components
30 |
31 | # node-waf configuration
32 | .lock-wscript
33 |
34 | # Compiled binary addons (https://nodejs.org/api/addons.html)
35 | build/Release
36 |
37 | # Dependency directories
38 | node_modules/
39 | jspm_packages/
40 |
41 | # TypeScript v1 declaration files
42 | typings/
43 |
44 | # Optional npm cache directory
45 | .npm
46 |
47 | # Optional eslint cache
48 | .eslintcache
49 |
50 | # Optional REPL history
51 | .node_repl_history
52 |
53 | # Output of 'npm pack'
54 | *.tgz
55 |
56 | # Yarn Integrity file
57 | .yarn-integrity
58 |
59 | # dotenv environment variables file
60 | .env
61 |
62 | # parcel-bundler cache (https://parceljs.org/)
63 | .cache
64 |
65 | # next.js build output
66 | .next
67 |
68 | # nuxt.js build output
69 | .nuxt
70 |
71 | # Nuxt generate
72 | dist
73 |
74 | # vuepress build output
75 | .vuepress/dist
76 |
77 | # Serverless directories
78 | .serverless
79 |
80 | # IDE / Editor
81 | .idea
82 | .editorconfig
83 |
84 | # Service worker
85 | sw.*
86 |
87 | # Mac OSX
88 | .DS_Store
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 基于Nuxt(Vue) + koa2 + mongodb构建的全栈开源项目。
2 |
3 |
4 | ## 使用方法
5 |
6 | ``` bash
7 |
8 | # 安装依赖
9 | $ npm run install
10 |
11 | # 运行
12 | $ npm run dev
13 |
14 | # 打包
15 | $ npm run build
16 |
17 | # 线上使用pm2部署
18 | $ npm run prd
19 |
20 | ```
21 |
22 |
23 | ## 目录结构
24 |
25 |
26 | ```
27 |
28 | 红豆记
29 | |
30 | │ README.md 项目说明文件
31 | |
32 | | layouts 布局目录,用于组织应用的布局组件,不可更改
33 | |
34 | | pages 用于存放写的页面,我们主要的工作区域
35 | |
36 | | server 使用node koa2框架写后台和服务端渲染
37 | |
38 | | dbs 存放数据库配置文件
39 | |
40 | │ nuxt.config.js 用于组织Nuxt.js应用的个性化配置,已覆盖默认配置
41 | |
42 | │ package-lock.json npm自动生成,用于帮助package的统一设置的,yarn也有相同的操作
43 | |
44 | │ package.json npm 包管理配置文件
45 | |
46 | │ .nuxt Nuxt自动生成,临时的用于编辑的文件,build
47 | |
48 | | assets 用于组织未编译的静态资源如LESS、SASS或JavaScript
49 | |
50 | | components 用于自己编写的Vue组件,比如波动组件、日历组件、分页组件
51 | |
52 | | middleware 用于存放中间件
53 | |
54 | | plugins 用于存放JavaScript插件的地方
55 | |
56 | | static 用于存放静态资源文件,比如图片
57 | |
58 | | store 用于组织应用的Vuex 状态管理
59 | |
60 | | .editorconfig 开发工具格式配置
61 | |
62 | | .eslintrc.js ESLint的配置文件,用于检查代码格式
63 | |
64 | | .gitignore 配置git不上传的文件
65 | |
66 | |
67 | └───layouts 公共模板入口文件
68 | | |
69 | │ │ default.vue 默认入口文件
70 | | |
71 | │ │ error.vue 404错误页面
72 | | |
73 | │ │ none.vue 空白页面(用来写注册协议和隐私协议适配手机)
74 | | |
75 | │ │ ...
76 | │
77 | │
78 | └───components 公用组件封装
79 | | |
80 | │ │ home 首页组件
81 | | |
82 | │ │ public 首页组件封装
83 | | |
84 | │ │ ...
85 | │
86 | │
87 | └───page 路由界面
88 | │ │
89 | │ │ index 首页
90 | │ │
91 | │ │ about 关于我们
92 | │ │
93 | │ └───news 最新动态
94 | │ │ index.vue 动态主页
95 | │ │ _id.vue 动态详情页
96 | │ └─ ...
97 | │ │
98 | │ │ service.vue 意见反馈
99 | │ │
100 | │ │ edit.vue markdown测试文件
101 | │ │
102 | │ │ privacy.vue 隐私协议
103 | │ │
104 | │ │ terms.vue 注册协议
105 | │ │
106 | │ │ ...
107 | │ │
108 | │ │
109 | └───md 从零开始nuxt开发记录文档
110 | .
111 |
112 | ```
113 |
114 |
115 |
--------------------------------------------------------------------------------
/assets/README.md:
--------------------------------------------------------------------------------
1 | # ASSETS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your un-compiled assets such as LESS, SASS, or JavaScript.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#webpacked).
8 |
--------------------------------------------------------------------------------
/assets/css/base.scss:
--------------------------------------------------------------------------------
1 | // css全局样式文件
2 |
3 | // 字体图标
4 | @font-face {
5 | font-family: "iconfont";
6 | src: url("../font/iconfont.eot");
7 | src: url("../font/iconfont.eot?#iefix") format("embedded-opentype"), url("../font/iconfont.woff2") format("woff2"),
8 | url("../font/iconfont.woff") format("woff"), url("../font/iconfont.ttf") format("truetype"),
9 | url("../font/iconfont.svg#iconfont") format("svg");
10 | }
11 | .iconfont {
12 | font-family: "iconfont" !important;
13 | font-size: 16px;
14 | font-style: normal;
15 | -webkit-font-smoothing: antialiased;
16 | -moz-osx-font-smoothing: grayscale;
17 | }
18 |
19 | * {
20 | box-sizing: border-box;
21 | }
22 |
23 | html {
24 | -webkit-text-size-adjust: 100%;
25 | -webkit-tap-highlight-color: transparent;
26 | -webkit-font-smoothing: antialiased;
27 | -moz-osx-font-smoothing: grayscale;
28 | height:100%;
29 | }
30 |
31 | body {
32 | color: #000;
33 | background-color: #fff;
34 | font-size: 16px;
35 | font-family: "Helvetica", "Helvetica Neue", "Verdana", "sans-serif", "Arial", "Ubuntu", "PingFang SC",
36 | "Microsoft YaHei";
37 | margin: 0;
38 | padding: 0;
39 | line-height: 1.5;
40 | // touch-action: none; //禁止手机滚动
41 | // min-width: 1280px;
42 | height:100%;
43 | }
44 | #__nuxt,
45 | #__layout{
46 | height:100%;
47 | }
48 | html,
49 | body,
50 | div,
51 | span,
52 | applet,
53 | object,
54 | iframe,
55 | h1,
56 | h2,
57 | h3,
58 | h4,
59 | h5,
60 | h6,
61 | p,
62 | blockquote,
63 | pre,
64 | a,
65 | abbr,
66 | acronym,
67 | address,
68 | big,
69 | cite,
70 | code,
71 | del,
72 | dfn,
73 | em,
74 | img,
75 | ins,
76 | kbd,
77 | q,
78 | s,
79 | samp,
80 | small,
81 | strike,
82 | strong,
83 | sub,
84 | sup,
85 | tt,
86 | var,
87 | b,
88 | u,
89 | i,
90 | center,
91 | dl,
92 | dt,
93 | dd,
94 | ol,
95 | ul,
96 | li,
97 | fieldset,
98 | form,
99 | label,
100 | legend,
101 | table,
102 | caption,
103 | tbody,
104 | tfoot,
105 | thead,
106 | tr,
107 | th,
108 | td,
109 | article,
110 | aside,
111 | canvas,
112 | details,
113 | embed,
114 | figure,
115 | figcaption,
116 | footer,
117 | header,
118 | hgroup,
119 | menu,
120 | nav,
121 | output,
122 | ruby,
123 | section,
124 | summary,
125 | time,
126 | mark,
127 | audio,
128 | video {
129 | margin: 0;
130 | padding: 0;
131 | border: 0;
132 | font-weight: 400;
133 | font-size: 16px;
134 | font-family: inherit;
135 | color: #777;
136 | }
137 |
138 | button {
139 | border: none;
140 | background: none;
141 | }
142 | input {
143 | border-radius: 0;
144 | border: 1px solid #eee;
145 | outline: none;
146 | -webkit-appearance: none;
147 | }
148 | input:focus,
149 | button:focus {
150 | outline: none;
151 | }
152 |
153 | ::selection {
154 | background-color: #333;
155 | color: #fff;
156 | }
157 | a {
158 | text-decoration: none;
159 | outline: none;
160 | color: #777;
161 | }
162 |
163 | // 去除默认样式
164 | .el-main,
165 | .el-footer,
166 | .el-header {
167 | padding: 0;
168 | }
169 |
170 | /*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
171 | ::-webkit-scrollbar {
172 | width: 7px;
173 | height: 7px;
174 | background-color:#f2f2f2;
175 | }
176 | /*定义滚动条轨道 内阴影+圆角*/
177 | ::-webkit-scrollbar-track {
178 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
179 | border-radius: 10px;
180 | background-color: #fff;
181 | }
182 | /*定义滑块 内阴影+圆角*/
183 | ::-webkit-scrollbar-thumb {
184 | border-radius: 10px;
185 | -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
186 | background-color: #cfcfcf;
187 | }
188 | /*滑块效果*/
189 | ::-webkit-scrollbar-thumb:hover {
190 | border-radius: 5px;
191 | -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
192 | background: rgba(0, 0, 0, 0.4);
193 | }
194 |
--------------------------------------------------------------------------------
/assets/css/temp.scss:
--------------------------------------------------------------------------------
1 | // 临时存放css的文件
2 | // 主要是为了方便同时显示html和css
3 |
--------------------------------------------------------------------------------
/assets/css/varibale.scss:
--------------------------------------------------------------------------------
1 | // 颜色,字体,背景的配置文件
2 |
3 | $color : #ff5387
4 |
--------------------------------------------------------------------------------
/assets/font/demo.css:
--------------------------------------------------------------------------------
1 | /* Logo 字体 */
2 | @font-face {
3 | font-family: "iconfont logo";
4 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
5 | src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
6 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
7 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
8 | url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
9 | }
10 |
11 | .logo {
12 | font-family: "iconfont logo";
13 | font-size: 160px;
14 | font-style: normal;
15 | -webkit-font-smoothing: antialiased;
16 | -moz-osx-font-smoothing: grayscale;
17 | }
18 |
19 | /* tabs */
20 | .nav-tabs {
21 | position: relative;
22 | }
23 |
24 | .nav-tabs .nav-more {
25 | position: absolute;
26 | right: 0;
27 | bottom: 0;
28 | height: 42px;
29 | line-height: 42px;
30 | color: #666;
31 | }
32 |
33 | #tabs {
34 | border-bottom: 1px solid #eee;
35 | }
36 |
37 | #tabs li {
38 | cursor: pointer;
39 | width: 100px;
40 | height: 40px;
41 | line-height: 40px;
42 | text-align: center;
43 | font-size: 16px;
44 | border-bottom: 2px solid transparent;
45 | position: relative;
46 | z-index: 1;
47 | margin-bottom: -1px;
48 | color: #666;
49 | }
50 |
51 |
52 | #tabs .active {
53 | border-bottom-color: #f00;
54 | color: #222;
55 | }
56 |
57 | .tab-container .content {
58 | display: none;
59 | }
60 |
61 | /* 页面布局 */
62 | .main {
63 | padding: 30px 100px;
64 | width: 960px;
65 | margin: 0 auto;
66 | }
67 |
68 | .main .logo {
69 | color: #333;
70 | text-align: left;
71 | margin-bottom: 30px;
72 | line-height: 1;
73 | height: 110px;
74 | margin-top: -50px;
75 | overflow: hidden;
76 | *zoom: 1;
77 | }
78 |
79 | .main .logo a {
80 | font-size: 160px;
81 | color: #333;
82 | }
83 |
84 | .helps {
85 | margin-top: 40px;
86 | }
87 |
88 | .helps pre {
89 | padding: 20px;
90 | margin: 10px 0;
91 | border: solid 1px #e7e1cd;
92 | background-color: #fffdef;
93 | overflow: auto;
94 | }
95 |
96 | .icon_lists {
97 | width: 100% !important;
98 | overflow: hidden;
99 | *zoom: 1;
100 | }
101 |
102 | .icon_lists li {
103 | width: 100px;
104 | margin-bottom: 10px;
105 | margin-right: 20px;
106 | text-align: center;
107 | list-style: none !important;
108 | cursor: default;
109 | }
110 |
111 | .icon_lists li .code-name {
112 | line-height: 1.2;
113 | }
114 |
115 | .icon_lists .icon {
116 | display: block;
117 | height: 100px;
118 | line-height: 100px;
119 | font-size: 42px;
120 | margin: 10px auto;
121 | color: #333;
122 | -webkit-transition: font-size 0.25s linear, width 0.25s linear;
123 | -moz-transition: font-size 0.25s linear, width 0.25s linear;
124 | transition: font-size 0.25s linear, width 0.25s linear;
125 | }
126 |
127 | .icon_lists .icon:hover {
128 | font-size: 100px;
129 | }
130 |
131 | .icon_lists .svg-icon {
132 | /* 通过设置 font-size 来改变图标大小 */
133 | width: 1em;
134 | /* 图标和文字相邻时,垂直对齐 */
135 | vertical-align: -0.15em;
136 | /* 通过设置 color 来改变 SVG 的颜色/fill */
137 | fill: currentColor;
138 | /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
139 | normalize.css 中也包含这行 */
140 | overflow: hidden;
141 | }
142 |
143 | .icon_lists li .name,
144 | .icon_lists li .code-name {
145 | color: #666;
146 | }
147 |
148 | /* markdown 样式 */
149 | .markdown {
150 | color: #666;
151 | font-size: 14px;
152 | line-height: 1.8;
153 | }
154 |
155 | .highlight {
156 | line-height: 1.5;
157 | }
158 |
159 | .markdown img {
160 | vertical-align: middle;
161 | max-width: 100%;
162 | }
163 |
164 | .markdown h1 {
165 | color: #404040;
166 | font-weight: 500;
167 | line-height: 40px;
168 | margin-bottom: 24px;
169 | }
170 |
171 | .markdown h2,
172 | .markdown h3,
173 | .markdown h4,
174 | .markdown h5,
175 | .markdown h6 {
176 | color: #404040;
177 | margin: 1.6em 0 0.6em 0;
178 | font-weight: 500;
179 | clear: both;
180 | }
181 |
182 | .markdown h1 {
183 | font-size: 28px;
184 | }
185 |
186 | .markdown h2 {
187 | font-size: 22px;
188 | }
189 |
190 | .markdown h3 {
191 | font-size: 16px;
192 | }
193 |
194 | .markdown h4 {
195 | font-size: 14px;
196 | }
197 |
198 | .markdown h5 {
199 | font-size: 12px;
200 | }
201 |
202 | .markdown h6 {
203 | font-size: 12px;
204 | }
205 |
206 | .markdown hr {
207 | height: 1px;
208 | border: 0;
209 | background: #e9e9e9;
210 | margin: 16px 0;
211 | clear: both;
212 | }
213 |
214 | .markdown p {
215 | margin: 1em 0;
216 | }
217 |
218 | .markdown>p,
219 | .markdown>blockquote,
220 | .markdown>.highlight,
221 | .markdown>ol,
222 | .markdown>ul {
223 | width: 80%;
224 | }
225 |
226 | .markdown ul>li {
227 | list-style: circle;
228 | }
229 |
230 | .markdown>ul li,
231 | .markdown blockquote ul>li {
232 | margin-left: 20px;
233 | padding-left: 4px;
234 | }
235 |
236 | .markdown>ul li p,
237 | .markdown>ol li p {
238 | margin: 0.6em 0;
239 | }
240 |
241 | .markdown ol>li {
242 | list-style: decimal;
243 | }
244 |
245 | .markdown>ol li,
246 | .markdown blockquote ol>li {
247 | margin-left: 20px;
248 | padding-left: 4px;
249 | }
250 |
251 | .markdown code {
252 | margin: 0 3px;
253 | padding: 0 5px;
254 | background: #eee;
255 | border-radius: 3px;
256 | }
257 |
258 | .markdown strong,
259 | .markdown b {
260 | font-weight: 600;
261 | }
262 |
263 | .markdown>table {
264 | border-collapse: collapse;
265 | border-spacing: 0px;
266 | empty-cells: show;
267 | border: 1px solid #e9e9e9;
268 | width: 95%;
269 | margin-bottom: 24px;
270 | }
271 |
272 | .markdown>table th {
273 | white-space: nowrap;
274 | color: #333;
275 | font-weight: 600;
276 | }
277 |
278 | .markdown>table th,
279 | .markdown>table td {
280 | border: 1px solid #e9e9e9;
281 | padding: 8px 16px;
282 | text-align: left;
283 | }
284 |
285 | .markdown>table th {
286 | background: #F7F7F7;
287 | }
288 |
289 | .markdown blockquote {
290 | font-size: 90%;
291 | color: #999;
292 | border-left: 4px solid #e9e9e9;
293 | padding-left: 0.8em;
294 | margin: 1em 0;
295 | }
296 |
297 | .markdown blockquote p {
298 | margin: 0;
299 | }
300 |
301 | .markdown .anchor {
302 | opacity: 0;
303 | transition: opacity 0.3s ease;
304 | margin-left: 8px;
305 | }
306 |
307 | .markdown .waiting {
308 | color: #ccc;
309 | }
310 |
311 | .markdown h1:hover .anchor,
312 | .markdown h2:hover .anchor,
313 | .markdown h3:hover .anchor,
314 | .markdown h4:hover .anchor,
315 | .markdown h5:hover .anchor,
316 | .markdown h6:hover .anchor {
317 | opacity: 1;
318 | display: inline-block;
319 | }
320 |
321 | .markdown>br,
322 | .markdown>p>br {
323 | clear: both;
324 | }
325 |
326 |
327 | .hljs {
328 | display: block;
329 | background: white;
330 | padding: 0.5em;
331 | color: #333333;
332 | overflow-x: auto;
333 | }
334 |
335 | .hljs-comment,
336 | .hljs-meta {
337 | color: #969896;
338 | }
339 |
340 | .hljs-string,
341 | .hljs-variable,
342 | .hljs-template-variable,
343 | .hljs-strong,
344 | .hljs-emphasis,
345 | .hljs-quote {
346 | color: #df5000;
347 | }
348 |
349 | .hljs-keyword,
350 | .hljs-selector-tag,
351 | .hljs-type {
352 | color: #a71d5d;
353 | }
354 |
355 | .hljs-literal,
356 | .hljs-symbol,
357 | .hljs-bullet,
358 | .hljs-attribute {
359 | color: #0086b3;
360 | }
361 |
362 | .hljs-section,
363 | .hljs-name {
364 | color: #63a35c;
365 | }
366 |
367 | .hljs-tag {
368 | color: #333333;
369 | }
370 |
371 | .hljs-title,
372 | .hljs-attr,
373 | .hljs-selector-id,
374 | .hljs-selector-class,
375 | .hljs-selector-attr,
376 | .hljs-selector-pseudo {
377 | color: #795da3;
378 | }
379 |
380 | .hljs-addition {
381 | color: #55a532;
382 | background-color: #eaffea;
383 | }
384 |
385 | .hljs-deletion {
386 | color: #bd2c00;
387 | background-color: #ffecec;
388 | }
389 |
390 | .hljs-link {
391 | text-decoration: underline;
392 | }
393 |
394 | /* 代码高亮 */
395 | /* PrismJS 1.15.0
396 | https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
397 | /**
398 | * prism.js default theme for JavaScript, CSS and HTML
399 | * Based on dabblet (http://dabblet.com)
400 | * @author Lea Verou
401 | */
402 | code[class*="language-"],
403 | pre[class*="language-"] {
404 | color: black;
405 | background: none;
406 | text-shadow: 0 1px white;
407 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
408 | text-align: left;
409 | white-space: pre;
410 | word-spacing: normal;
411 | word-break: normal;
412 | word-wrap: normal;
413 | line-height: 1.5;
414 |
415 | -moz-tab-size: 4;
416 | -o-tab-size: 4;
417 | tab-size: 4;
418 |
419 | -webkit-hyphens: none;
420 | -moz-hyphens: none;
421 | -ms-hyphens: none;
422 | hyphens: none;
423 | }
424 |
425 | pre[class*="language-"]::-moz-selection,
426 | pre[class*="language-"] ::-moz-selection,
427 | code[class*="language-"]::-moz-selection,
428 | code[class*="language-"] ::-moz-selection {
429 | text-shadow: none;
430 | background: #b3d4fc;
431 | }
432 |
433 | pre[class*="language-"]::selection,
434 | pre[class*="language-"] ::selection,
435 | code[class*="language-"]::selection,
436 | code[class*="language-"] ::selection {
437 | text-shadow: none;
438 | background: #b3d4fc;
439 | }
440 |
441 | @media print {
442 |
443 | code[class*="language-"],
444 | pre[class*="language-"] {
445 | text-shadow: none;
446 | }
447 | }
448 |
449 | /* Code blocks */
450 | pre[class*="language-"] {
451 | padding: 1em;
452 | margin: .5em 0;
453 | overflow: auto;
454 | }
455 |
456 | :not(pre)>code[class*="language-"],
457 | pre[class*="language-"] {
458 | background: #f5f2f0;
459 | }
460 |
461 | /* Inline code */
462 | :not(pre)>code[class*="language-"] {
463 | padding: .1em;
464 | border-radius: .3em;
465 | white-space: normal;
466 | }
467 |
468 | .token.comment,
469 | .token.prolog,
470 | .token.doctype,
471 | .token.cdata {
472 | color: slategray;
473 | }
474 |
475 | .token.punctuation {
476 | color: #999;
477 | }
478 |
479 | .namespace {
480 | opacity: .7;
481 | }
482 |
483 | .token.property,
484 | .token.tag,
485 | .token.boolean,
486 | .token.number,
487 | .token.constant,
488 | .token.symbol,
489 | .token.deleted {
490 | color: #905;
491 | }
492 |
493 | .token.selector,
494 | .token.attr-name,
495 | .token.string,
496 | .token.char,
497 | .token.builtin,
498 | .token.inserted {
499 | color: #690;
500 | }
501 |
502 | .token.operator,
503 | .token.entity,
504 | .token.url,
505 | .language-css .token.string,
506 | .style .token.string {
507 | color: #9a6e3a;
508 | background: hsla(0, 0%, 100%, .5);
509 | }
510 |
511 | .token.atrule,
512 | .token.attr-value,
513 | .token.keyword {
514 | color: #07a;
515 | }
516 |
517 | .token.function,
518 | .token.class-name {
519 | color: #DD4A68;
520 | }
521 |
522 | .token.regex,
523 | .token.important,
524 | .token.variable {
525 | color: #e90;
526 | }
527 |
528 | .token.important,
529 | .token.bold {
530 | font-weight: bold;
531 | }
532 |
533 | .token.italic {
534 | font-style: italic;
535 | }
536 |
537 | .token.entity {
538 | cursor: help;
539 | }
540 |
--------------------------------------------------------------------------------
/assets/font/demo_index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IconFont Demo
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | - Unicode
22 | - Font class
23 | - Symbol
24 |
25 |
26 |
查看项目
27 |
28 |
29 |
30 |
31 |
32 |
33 | -
34 |
35 |
安卓
36 | 
37 |
38 |
39 | -
40 |
41 |
苹果
42 | 
43 |
44 |
45 | -
46 |
47 |
关闭
48 | 
49 |
50 |
51 | -
52 |
53 |
微信
54 | 
55 |
56 |
57 |
58 |
59 |
Unicode 引用
60 |
61 |
62 |
Unicode 是字体在网页端最原始的应用方式,特点是:
63 |
64 | - 兼容性最好,支持 IE6+,及所有现代浏览器。
65 | - 支持按字体的方式去动态调整图标大小,颜色等等。
66 | - 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
67 |
68 |
69 | 注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式
70 |
71 |
Unicode 使用步骤如下:
72 |
第一步:拷贝项目下面生成的 @font-face
73 |
@font-face {
75 | font-family: 'iconfont';
76 | src: url('iconfont.eot');
77 | src: url('iconfont.eot?#iefix') format('embedded-opentype'),
78 | url('iconfont.woff2') format('woff2'),
79 | url('iconfont.woff') format('woff'),
80 | url('iconfont.ttf') format('truetype'),
81 | url('iconfont.svg#iconfont') format('svg');
82 | }
83 |
84 |
第二步:定义使用 iconfont 的样式
85 |
.iconfont {
87 | font-family: "iconfont" !important;
88 | font-size: 16px;
89 | font-style: normal;
90 | -webkit-font-smoothing: antialiased;
91 | -moz-osx-font-smoothing: grayscale;
92 | }
93 |
94 |
第三步:挑选相应图标并获取字体编码,应用于页面
95 |
96 | <span class="iconfont">3</span>
98 |
99 |
100 | "iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
101 |
102 |
103 |
104 |
105 |
144 |
145 |
font-class 引用
146 |
147 |
148 |
font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。
149 |
与 Unicode 使用方式相比,具有如下特点:
150 |
151 | - 兼容性良好,支持 IE8+,及所有现代浏览器。
152 | - 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
153 | - 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
154 | - 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
155 |
156 |
使用步骤如下:
157 |
第一步:引入项目下面生成的 fontclass 代码:
158 |
<link rel="stylesheet" href="./iconfont.css">
159 |
160 |
第二步:挑选相应图标并获取类名,应用于页面:
161 |
<span class="iconfont icon-xxx"></span>
162 |
163 |
164 | "
165 | iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
166 |
167 |
168 |
169 |
170 |
171 |
172 | -
173 |
176 |
安卓
177 | #icon-anzhuo
178 |
179 |
180 | -
181 |
184 |
苹果
185 | #icon-iconfontapple
186 |
187 |
188 | -
189 |
192 |
关闭
193 | #icon-guanbi
194 |
195 |
196 | -
197 |
200 |
微信
201 | #icon-weixin
202 |
203 |
204 |
205 |
206 |
Symbol 引用
207 |
208 |
209 |
这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章
210 | 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:
211 |
212 | - 支持多色图标了,不再受单色限制。
213 | - 通过一些技巧,支持像字体那样,通过
font-size
, color
来调整样式。
214 | - 兼容性较差,支持 IE9+,及现代浏览器。
215 | - 浏览器渲染 SVG 的性能一般,还不如 png。
216 |
217 |
使用步骤如下:
218 |
第一步:引入项目下面生成的 symbol 代码:
219 |
<script src="./iconfont.js"></script>
220 |
221 |
第二步:加入通用 CSS 代码(引入一次就行):
222 |
<style>
223 | .icon {
224 | width: 1em;
225 | height: 1em;
226 | vertical-align: -0.15em;
227 | fill: currentColor;
228 | overflow: hidden;
229 | }
230 | </style>
231 |
232 |
第三步:挑选相应图标并获取类名,应用于页面:
233 |
<svg class="icon" aria-hidden="true">
234 | <use xlink:href="#icon-xxx"></use>
235 | </svg>
236 |
237 |
238 |
239 |
240 |
241 |
242 |
261 |
262 |
263 |
--------------------------------------------------------------------------------
/assets/font/iconfont.css:
--------------------------------------------------------------------------------
1 | @font-face {font-family: "iconfont";
2 | src: url('iconfont.eot?t=1563008758917'); /* IE9 */
3 | src: url('iconfont.eot?t=1563008758917#iefix') format('embedded-opentype'), /* IE6-IE8 */
4 | url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAS4AAsAAAAACWgAAARqAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCDMgqFfIR9ATYCJAMUCwwABCAFhG0HUhsTCBFVnC3JfkhSQQIAAAUUAGDCLPDkDD9hAyAAAv38e/rnJnU62sEEtN2cPUj4C0H92G/v2VdpgllkqB4yyTuJ1miJkgmZ/aZ71lQIE4maEjvlWL4j1+7cS1OW2k6jFAgHwn37/zjca/M8sPksy2XuZQEmmIVjjPO2FWhfHP8ink0G/xN4HCBAYguOgJ6iE0kQKdRxCEBfVRVFIIoolQIc0pW0jKVFhKYDXzeNY5cBYJrz9+gf3JEIYGoGdWpqeVQphL41ezsdl3EyuZYaZnWnBwB2FcABRwDggb4zjbWAe0FHwPVlP88dgOLvSlJX3Rzfer6dznEAd0HivvYPD+CKJEANVKEUsaEC3saxDArAeevIzBJ5ghwwEE0H9rEI+dYSCaABAB8B0A2oYkNHKNlsWQu8o1Qs1teUIhslqY5YrCaRkBrdDbIN7CYDtHDjxHqg581j58hmT8yl5W5y5oINBAE/+VyHZl6OcGnJyrvxzLy5muTBCV967mwt6vxt08wF3UzT7eo5EXebvC2ZiL844Xve/saHSH6PYM9YbdjDnru2j2CTNjgdtj0OsuzDlrNXW967x2iB7HYPXVpOlpVSFWVMeQdrdfcuffs2eecORTJ7zhCszlJ07x7NbpCtn9go30SuRUZI2lSmYN05G4q+dq84T66zRpIS3sGuMeF+qU4bn+l8c3kmuC986vJV99ReyVcdzXyNIGBOI4d1qLt2Cp65fBN0kg7i2TVcNTo02DevzJlwJsshNHpvlHP4i9oXjuH0Om/H0KwIhpl0Lf1p94VfXZ4K3eT7wTP18cI0nRj35OT2JEOFR/JrzDR3h/fcibFtFdrdV39M6tXItunEzL31731yZ2T8quWuD2f+doOsHEWlbpDUyiIbQn7BgIroZ5uCAYOB74DdlupIv/7C5Biaj13ejA9CfHxXpItFbX+I4KCZ+vdVtljX5hXBpVqddh32/+z+v8tOtbawH7Mb/WuON+yY1YcNYptnYQ0aDWjetsur1hZ76Wd1RVXNrVamDMnroa2GbTuVCCJy5pDhMFQCAPfh6ooa9p34L3kN3u2EfzzIB2/Teezzx0cKVAL/+LtEAX/zY//AaubEZbwSIpVZ705VaXMfyozjqIpaJHoB02EbQwWqFzXuAPs1qXljrHO/bqSruxEOXasAko4NZF1HyIK9gmrgGpquW+i7NFs9sMDyovRw4UkgTL0gGfuFbOqNLNgvVGt/0EwDh77naG05cBJVklEzGoI2mCfwLIqVrpGam7lCJw0NDnMc/A458TzQd3aNR2YYI3cxI9k7AxEFiimCKTkNw5BAM/loSccV0cOuS3nWlToWRZmaRwwZBLIB0wnwWEhMWe1FLfH7FeRIhQxc0FCm3kEs4XUO+jp6FZAzYVyp4VR6J/YcA0IoapTCSARMQY9CLUiAzh7kQxbR4Tbwa0NdbKWqCjvDi6NzzPpwm6pn1UiRo0SNpn3Wn92Umjuwn6F1iCWnzYhNr3Qo845enMkAAAA=') format('woff2'),
5 | url('iconfont.woff?t=1563008758917') format('woff'),
6 | url('iconfont.ttf?t=1563008758917') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
7 | url('iconfont.svg?t=1563008758917#iconfont') format('svg'); /* iOS 4.1- */
8 | }
9 |
10 | .iconfont {
11 | font-family: "iconfont" !important;
12 | font-size: 16px;
13 | font-style: normal;
14 | -webkit-font-smoothing: antialiased;
15 | -moz-osx-font-smoothing: grayscale;
16 | }
17 |
18 | .icon-anzhuo:before {
19 | content: "\e690";
20 | }
21 |
22 | .icon-iconfontapple:before {
23 | content: "\e634";
24 | }
25 |
26 | .icon-guanbi:before {
27 | content: "\e621";
28 | }
29 |
30 | .icon-weixin:before {
31 | content: "\e62c";
32 | }
33 |
34 |
--------------------------------------------------------------------------------
/assets/font/iconfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/font/iconfont.eot
--------------------------------------------------------------------------------
/assets/font/iconfont.js:
--------------------------------------------------------------------------------
1 | !function(d){var t,n='',e=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss");if(e&&!d.__iconfont__svg__cssinject__){d.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(t){console&&console.log(t)}}!function(t){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(t,0);else{var e=function(){document.removeEventListener("DOMContentLoaded",e,!1),t()};document.addEventListener("DOMContentLoaded",e,!1)}else document.attachEvent&&(o=t,c=d.document,i=!1,(a=function(){try{c.documentElement.doScroll("left")}catch(t){return void setTimeout(a,50)}n()})(),c.onreadystatechange=function(){"complete"==c.readyState&&(c.onreadystatechange=null,n())});function n(){i||(i=!0,o())}var o,c,i,a}(function(){var t,e;(t=document.createElement("div")).innerHTML=n,n=null,(e=t.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",function(t,e){e.firstChild?function(t,e){e.parentNode.insertBefore(t,e)}(t,e.firstChild):e.appendChild(t)}(e,document.body))})}(window);
--------------------------------------------------------------------------------
/assets/font/iconfont.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
39 |
--------------------------------------------------------------------------------
/assets/font/iconfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/font/iconfont.ttf
--------------------------------------------------------------------------------
/assets/font/iconfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/font/iconfont.woff
--------------------------------------------------------------------------------
/assets/font/iconfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/font/iconfont.woff2
--------------------------------------------------------------------------------
/assets/img/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/1.png
--------------------------------------------------------------------------------
/assets/img/12_12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/12_12.jpg
--------------------------------------------------------------------------------
/assets/img/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/2.png
--------------------------------------------------------------------------------
/assets/img/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/3.png
--------------------------------------------------------------------------------
/assets/img/8_8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/8_8.jpg
--------------------------------------------------------------------------------
/assets/img/about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/about.png
--------------------------------------------------------------------------------
/assets/img/arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/arrow.png
--------------------------------------------------------------------------------
/assets/img/arrow1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/arrow1.png
--------------------------------------------------------------------------------
/assets/img/beianico.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/beianico.png
--------------------------------------------------------------------------------
/assets/img/ellipse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/ellipse.png
--------------------------------------------------------------------------------
/assets/img/feedback.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/feedback.png
--------------------------------------------------------------------------------
/assets/img/green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/green.png
--------------------------------------------------------------------------------
/assets/img/home1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/home1.png
--------------------------------------------------------------------------------
/assets/img/link.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/link.png
--------------------------------------------------------------------------------
/assets/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/logo.png
--------------------------------------------------------------------------------
/assets/img/look.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/look.png
--------------------------------------------------------------------------------
/assets/img/news.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/news.png
--------------------------------------------------------------------------------
/assets/img/phone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/phone.png
--------------------------------------------------------------------------------
/assets/img/pink.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/pink.png
--------------------------------------------------------------------------------
/assets/img/serBG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/serBG.png
--------------------------------------------------------------------------------
/assets/img/show.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/img/show.png
--------------------------------------------------------------------------------
/assets/testimg/1563520246158上传的图片.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/testimg/1563520246158上传的图片.jpg
--------------------------------------------------------------------------------
/assets/testimg/1563520312322上传的图片.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/assets/testimg/1563520312322上传的图片.jpg
--------------------------------------------------------------------------------
/base64.js:
--------------------------------------------------------------------------------
1 | function previewImage(file) {
2 | var target = file.name;
3 | if (file.files && file.files[0]) {
4 | var reader = new FileReader();
5 | reader.onload = function (evt) {
6 | console.log(evt.target.result)//即图片,此处可进行预览操作
7 | }
8 | return reader.readAsDataURL(file.files[0]);
9 | }
10 | }
--------------------------------------------------------------------------------
/components/README.md:
--------------------------------------------------------------------------------
1 | # COMPONENTS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | The components directory contains your Vue.js Components.
6 |
7 | _Nuxt.js doesn't supercharge these components._
8 |
--------------------------------------------------------------------------------
/components/home/bottom.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
分享生活
6 |
让生活变得更有趣
7 |
8 |
9 |

10 |
11 |
12 |
13 |

14 |
15 |
16 |
17 |

18 |
19 |
20 |
随时拍摄
21 |
记录美好瞬间
22 |
23 |
24 |
25 |
26 |

27 |
28 |
29 |
30 |
情侣必备
31 |
你想要的二人空间
32 |
33 |
34 |

35 |
36 |
37 |
38 |
39 |
40 |
84 |
--------------------------------------------------------------------------------
/components/home/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/components/home/top.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |

8 |
9 |
10 |
11 |
12 |
13 |
{{bigTitle}}
14 |
{{title}}
15 |
16 |
17 |
18 |
19 |
20 | {{item.name}}
21 |
22 |
23 |
![]()
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
65 |
66 |
184 |
--------------------------------------------------------------------------------
/components/public/footer/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
25 |
26 |
27 |
83 |
--------------------------------------------------------------------------------
/components/public/header/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
31 |
32 |
33 |
43 |
44 |
--------------------------------------------------------------------------------
/components/public/header/left-bar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
25 |
--------------------------------------------------------------------------------
/components/public/header/right-bar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 首页
6 |
7 |
8 | 关于我们
9 |
10 |
11 | 最新动态
12 |
13 |
14 | 意见反馈
15 |
16 |
17 |
18 | 关注我们
19 |
20 |

21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
50 |
51 |
52 |
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/dbs/config.js:
--------------------------------------------------------------------------------
1 | export default({
2 |
3 | dbs:"mongodb://127.0.0.1:27017/dbs"
4 |
5 |
6 | })
--------------------------------------------------------------------------------
/dbs/models/service.js:
--------------------------------------------------------------------------------
1 | import mongoose from "mongoose"
2 |
3 | // 文件名就是表名
4 |
5 | // 建表 创建mongodb模型
6 | let serviceScheam = new mongoose.Schema({
7 | // 设计表结构
8 | suggest:String,
9 | number:Number,
10 | phone:Number,
11 | imgUrl:String,
12 | imgBase64:String
13 | })
14 |
15 |
16 | // 生成model
17 |
18 | export default mongoose.model("service", serviceScheam)
--------------------------------------------------------------------------------
/layouts/README.md:
--------------------------------------------------------------------------------
1 | # LAYOUTS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your Application Layouts.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/views#layouts).
8 |
--------------------------------------------------------------------------------
/layouts/default.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
30 |
41 |
--------------------------------------------------------------------------------
/layouts/error.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
页面没找到
4 | 服务器出错
5 | 返回首页
6 |
7 |
8 |
25 |
--------------------------------------------------------------------------------
/layouts/none.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/md/img-base64.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Document
9 |
10 |
11 |
12 |
14 |
15 |
16 |
30 |
31 |
--------------------------------------------------------------------------------
/md/mongoose笔记.md:
--------------------------------------------------------------------------------
1 | # mongoose 学习笔记
2 |
3 | ## 非关系型数据库
4 |
5 | [下载 MongoDB](https://www.mongodb.com/download-center#community)
6 |
7 | [linux安装mongodb4.X](https://blog.csdn.net/ysk_xh_521/article/details/83275101)
8 |
9 | [下载 Robo 3T](https://studio3t.com/download-now/)
10 |
11 | [MongooseJS中文文档](https://xiaoxiami.gitbook.io/mongoose/guide)
12 |
13 | [配置MongoDB](https://blog.csdn.net/qq_20412595/article/details/80610724)
14 |
15 | ``` bash
16 |
17 | # 查看 mongodb 安装的位置
18 | $ which mongod
19 |
20 | #
21 | mongod --dbpath E:\DB\data\db
22 |
23 | # 把mongod配置成服务
24 | mongod --config "E:\DB\data\mongo.config" --install --serviceName "MongoDB"
25 | # 启动 mongodb
26 | $ mongod
27 |
28 | # 安装 mongoose
29 | $ npm i mongoose
30 |
31 |
32 | ```
33 |
34 | ``` javascript
35 | // mongoose 操作数据库
36 |
37 | // dbs:"mongodb://127.0.0.1:27017/dbs"
38 |
39 | // 链接 MongoDB
40 | mongoose.connect("mongodb://127.0.0.1:27017/dbs",{
41 | useNewUrlParser: true
42 | })
43 |
44 | // 建数据库
45 | import mongoose from 'mongoose'
46 | let personSchema = new mongoose.Schema({
47 | // 建库
48 | name : String,
49 | age : Number
50 | })
51 |
52 | export default mongoose.model("Person",personSchema)
53 |
54 | ```
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/md/nuxt问题总结.md:
--------------------------------------------------------------------------------
1 | 1. 为什么查看网页源代码是乱的?
2 |
3 |
--------------------------------------------------------------------------------
/md/redis笔记.md:
--------------------------------------------------------------------------------
1 | # Redis 学习笔记
2 |
3 | [下载redis](https://github.com/microsoftarchive/redis/releases)
4 |
5 | [安装使用教程](https://www.runoob.com/redis/redis-install.html)
6 | ### 存储seesion
7 |
8 | ``` javascript
9 |
10 | // redis的使用
11 | // 启动redis
12 | redis-server
13 |
14 |
15 | // 使用和连接redis
16 | // 安装中间件
17 | // koa-generic-session 操作session
18 | // koa-redis 连接redis
19 | cnpm install koa-generic-session koa-redis
20 |
21 | // 加密处理
22 | app.key=["keys","keyskeys"] // 随便写个
23 | app.use(session({
24 | key:"mt",
25 | prefix:"mtpr", //session NAME
26 | store:new Redis() // redis有默认值,默认端口
27 | }))
28 |
29 |
30 | ctx.session.count ++
31 |
32 | // 查看redis数据
33 | redis-cli //启动客户端程序 控制台命令行
34 | keys * // 查看存储得值 *代表所有keys
35 | get [key值] //获取值
36 |
37 | ```
--------------------------------------------------------------------------------
/md/ssl签发笔记.md:
--------------------------------------------------------------------------------
1 | # SSL签发笔记 HTTP改为HTTPS协议
2 |
3 | [签发作者GitHub - acne.sh](https://github.com/Neilpang/acme.sh)
4 |
5 |
6 | ## SSL 签发 nginx转发固定配置
7 | ``` bash
8 | server {
9 | listen 80;
10 | listen 443 ssl http2;
11 | listen [::]:443 ssl http2;
12 | server_name hdouji.com;
13 | ssl on;
14 | ssl_certificate "cert/hdouji.com.cer";
15 | ssl_certificate_key "cert/hdouji.com.key";
16 | ssl_session_cache shared:SSL:1m;
17 | ssl_session_timeout 10m;
18 | ssl_ciphers HIGH:!aNULL:!MD5;
19 | ssl_prefer_server_ciphers on;
20 |
21 | location / {
22 | proxy_pass http://localhost:8080;
23 | }
24 | error_page 404 /404.html;
25 | location = /40x.html {
26 | }
27 | error_page 500 502 503 504 /50x.html;
28 | location = /50x.html {
29 | }
30 | if ($scheme != https) {
31 | rewrite ^/(.*) https://$server_name/$1 permanent;
32 | }
33 | }
34 |
35 |
36 | ```
--------------------------------------------------------------------------------
/md/学习笔记.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | nuxtJS + koa2 + ssr + vue美团项目
8 |
9 |
10 |
11 | 项目安装
12 | 1. npm install -g npx
13 | 2. npx create-nuxt-app project-name
14 | 3. npm install --update-binary 重新编译一下,防止出错
15 |
16 | 使用脚手架创建项目的一些常见错误
17 |
18 | 在项目中使用import XX from XX 报错解决方法
19 | - 在package.json里面 -> scripts 下 dev开发环境和start线上环境 最后添加
20 | - --exec babel-node
21 | - 使用node 加 babel启动项目
22 | - 安装babel: npm install --save-dev babel-cli
23 |
24 | - 创建babel配置文件
25 | - 在项目文件中创建 .babelrc 文件
26 | - 写入:
27 | -
28 | {
29 | "presets":["es2015"]
30 | }
31 |
32 | - 安装这个插件
33 | - npm install babel-preset-es2015
34 |
35 |
36 |
37 | 使用scss
38 | - npm install sass-loader node-sass
39 |
40 |
41 |
42 |
43 | pages
44 | - 下面文件夹直接就是路由
45 |
46 |
47 |
48 |
49 |
50 | git的使用
51 | 首先自保家门
52 | - git config --global user.name "your name"
53 | - git config --global user.email "your email"
54 | - 创建github仓库
55 | - 把github上面的仓库克隆到本地
56 | - git clone https://github.com/xxxxx
57 | - 学习笔记
58 | - ## 1 检查gitignore文件中的配置 node_modules .idea /dist/
59 | ## 2 生成本地仓库
60 | ## - git init
61 | ## - git *
62 | ## - git commit -m "init gshop"
63 | ## 3 在GitHub创建远程仓库
64 | ## - 复制 git remote add origin https:----
65 | ## 4 - 在webstorm中提交 git remote add origin https:---- 先关联
66 | ## - 再推送
67 | ## - git push origin master
68 |
69 |
70 | 11111111
71 | 22222222
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/md/学习笔记.md:
--------------------------------------------------------------------------------
1 | ## nuxt koa2 学习笔记
2 |
3 | [nuxt简书教程](https://www.jianshu.com/p/840169ba92e6)
4 |
5 | # 安裝使用的模块
6 | ``` bash
7 | # 缓存清理
8 | npm cache clean --force
9 | # 删除package.lock.json
10 |
11 | # 安装 所需要模块
12 | cnpm install
13 |
14 | # 安装 es2015
15 | cnpm install babel-preset-es2015
16 |
17 | # 安装 babel
18 | cnpm install --save-dev babel-cli
19 |
20 | # 安装 scss
21 | cnpm install sass-loader node-sass
22 |
23 |
24 | # 安装mongoose
25 | cnpm install mongoose
26 |
27 | # 安装路由
28 | cnpm install koa-router
29 |
30 | # 安装Redis 分布式管理
31 | cnpm install koa-redis
32 |
33 | # 安装nodeMailer操作邮箱
34 | cnpm install nodemailer
35 |
36 | # shell 发送请求
37 | # curl shell命令 -d是post请求
38 | curl -d 'xx=xx' http://xxx.com/post
39 | ```
40 |
41 | # 用户接口设计
42 |
43 | ``` bash
44 | #注册接口
45 | /users/signup
46 |
47 | #登录接口
48 | /users/signin
49 |
50 | #验证接口
51 | /users/verify
52 |
53 | #获取用户信息
54 | /users/getUser
55 |
56 | ```
57 |
58 | ## 文件目录注释
59 |
--------------------------------------------------------------------------------
/md/安装选项图.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/md/安装选项图.png
--------------------------------------------------------------------------------
/md/让koa、nuxt等node项目使用ES6.md:
--------------------------------------------------------------------------------
1 | # 让koa、nuxt等node项目使用ES6
2 |
3 |
4 | 一、 安装babel-cli、babel-preset-env
5 | ``` bash
6 | npm i babel-cli babel-preset-env -D
7 | ```
8 | 二、 配置babel
9 |
10 | > 根目录下新建 .babelre 文件,文件内容如下
11 | ``` bash
12 | {
13 | "presets": ["env"]
14 | }
15 | ```
16 |
17 | 三、在package.json文件的script中修改启动命令(以nuxt项目为例),添加"--exec babel-node"
18 |
19 | ``` json
20 | "scripts": {
21 | "dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server --exec babel-node",
22 | "build": "nuxt build",
23 | "start": "cross-env NODE_ENV=production node server/index.js --exec babel-node",
24 | "generate": "nuxt generate"
25 | },
26 |
27 | ```
--------------------------------------------------------------------------------
/md/部署nuxt-koa2遇到的坑.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | pm2 start npm --name "hongdouji" -- run start -i max 启动
--------------------------------------------------------------------------------
/middleware/README.md:
--------------------------------------------------------------------------------
1 | # MIDDLEWARE
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your application middleware.
6 | Middleware let you define custom functions that can be run before rendering either a page or a group of pages.
7 |
8 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing#middleware).
9 |
--------------------------------------------------------------------------------
/nuxt.config.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports = {
3 | metaInfo: {
4 | htmlAttrs: {
5 | lang: 'zh',
6 | amp: true
7 | },
8 | bodyAttrs: {
9 | class: ['dark-mode', 'mobile']
10 | }
11 | },
12 | mode: 'universal',
13 | /*
14 | ** Headers of the page
15 | */
16 | head: {
17 | title: "红豆记 - 情侣服务平台 官网",
18 | meta: [
19 | { charset: 'utf-8' },
20 | { name: 'viewport', content: 'width=device-width, initial-scale=1' },
21 | { name: 'keywords', content: "红豆记,红豆记恋爱记录,情侣必备软件,情侣恋爱神器,爱情银行,我爱你保险基金,小恩爱,微爱,情侣空间,恋人清单,异地恋,印书记录,闹钟,相册,纪念日,情感求助咨询,存钱,头像,礼物,红豆记app" },
22 | { hid: 'description', name: 'description', content: "红豆记服务于上千万情侣用户,是一个分享与记录生活的平台,在红豆记里,用户以图文,视频等形式记录二人生活的点滴。情侣分享的内容涵盖旅行、健身、时尚、美食、影视等各个生活领域。" },
23 | ],
24 | link: [
25 | { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
26 | ]
27 | },
28 |
29 | /*
30 | ** 页面js按需加载
31 | */
32 | render: {
33 | resourceHints: false,
34 | },
35 | /*
36 | ** Customize the progress-bar color
37 | */
38 | loading: { color: '#fff' },
39 | server: {
40 | port: 8080, // default: 3000
41 | host: '0.0.0.0', // default: localhost
42 | open:true // 自动打开浏览器
43 | },
44 | /*
45 | ** Global CSS
46 | */
47 | css: [
48 | 'element-ui/lib/theme-chalk/index.css',
49 | '@/assets/css/base.scss', // 全局的基础样式
50 | '@/assets/css/varibale.scss', // 全局的颜色配置
51 | '@/assets/font/iconfont.css' // 字体图标的样式
52 | ],
53 | /*
54 | ** Plugins to load before mounting the App
55 | */
56 | plugins: [
57 | '@/plugins/element-ui',
58 | { src: '@/plugins/vue-mavon-editor', srr: false }
59 |
60 | ],
61 | /*
62 | ** Nuxt.js modules
63 | */
64 |
65 |
66 | // modules: [
67 | // '@nuxtjs/axios',
68 | // ],
69 | // axios: {
70 | // prefix: '/api/', // 下次一次性更新基础接口地址
71 | // proxy: true // Can be also an object with default options
72 | // },
73 |
74 | // proxy: {
75 | // '/api/': { target: 'http://localhost:8080', pathRewrite: { '^/api/': '' } }
76 | // },
77 |
78 |
79 | /*
80 | ** Build configuration
81 | */
82 | build: {
83 | transpile: [/^element-ui/],
84 | /*
85 | ** You can extend webpack config here
86 | */
87 | extend(config, ctx) {
88 | }
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hdouji",
3 | "version": "1.0.0",
4 | "description": "红豆记,红豆记恋爱记录,情侣必备软件,情侣恋爱神器",
5 | "author": "GhostCat",
6 | "private": true,
7 | "scripts": {
8 | "dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server --exec babel-node",
9 | "build": "nuxt build",
10 | "start": "cross-env NODE_ENV=production nodemon server/index.js --exec babel-node",
11 | "prd": "pm2 start npm --name 'hongdouji' -- run start -i max",
12 | "generate": "nuxt generate"
13 | },
14 | "dependencies": {
15 | "axios": "^0.19.0",
16 | "babel-cli": "^6.26.0",
17 | "babel-preset-env": "^1.7.0",
18 | "cross-env": "^5.2.0",
19 | "element-ui": "^2.4.11",
20 | "koa": "^2.6.2",
21 | "koa-bodyparser": "^4.2.1",
22 | "koa-multer": "^1.0.2",
23 | "koa-router": "^7.4.0",
24 | "koa2-cors": "^2.0.6",
25 | "mavon-editor": "^2.7.5",
26 | "mongoose": "^5.6.5",
27 | "node-sass": "^4.12.0",
28 | "nuxt": "^2.0.0",
29 | "sass-loader": "^7.1.0"
30 | },
31 | "devDependencies": {
32 | "babel-cli": "^6.26.0",
33 | "babel-preset-env": "^1.7.0",
34 | "koa-bodyparser": "^4.2.1",
35 | "nodemon": "^1.18.9"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/pages/README.md:
--------------------------------------------------------------------------------
1 | # PAGES
2 |
3 | This directory contains your Application Views and Routes.
4 | The framework reads all the `*.vue` files inside this directory and creates the router of your application.
5 |
6 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/routing).
7 |
--------------------------------------------------------------------------------
/pages/about.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
12 |
13 |
什么是红豆记
14 |
一款有趣有温度的情侣社交和服务软件,有一群90后的年轻人开发,让情侣们更随心晒出他们的美好点滴,记录他们的时光印记,享受我们提供的情侣服务。我们希望有情人终成眷属,单身狗不再孤独,这是我们的愿景,也是我们的初衷。
17 |
18 |
19 |
20 |

21 |
看情侣们分享他们的有趣视频和图文,这里是"云虐狗"的集中地
22 |
23 |
24 |

25 |
发布自己的短视频和图文,可以参加各种逗趣官方活动哦
26 |
27 |
28 |

29 |
在"我的"里绑定情侣,不仅获得恋爱积分,还有持续上新的情侣服务
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
114 |
115 |
116 |
119 |
--------------------------------------------------------------------------------
/pages/admin.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Test Markdown后台发布功能
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
32 |
59 |
--------------------------------------------------------------------------------
/pages/edit.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Markdown 后台发布
4 |
5 |
9 |
10 |
11 |
12 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/pages/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
16 |
--------------------------------------------------------------------------------
/pages/news/_id.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
哈哈哈
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/pages/news/index.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
13 |
14 |
![]()
15 |
16 |
17 |
18 | {{item.category}}
19 | -
20 | {{item.time}}
21 |
22 |
{{item.title}}
23 |
{{item.content}}
24 |
25 |
26 |
27 |
28 |
31 |
32 |
33 |
![]()
34 |
35 |
36 |
{{item.title}}
37 |
{{item.time}}
38 |
39 |
40 |
41 |
42 |
43 |
44 |
95 |
--------------------------------------------------------------------------------
/pages/privacy.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
6 | 红豆记用户隐私政策
9 |
10 |
生效时间:2019年7月18日
14 |
15 |
引言
17 |
18 |
红豆记(以下简称为“我们”)尊重并保护所有使用红豆记平台服务用户的个人隐私权。为同时给您提供更准确、有个性化的服务和更安全的互联网环境,我们依据《中华人民共和国网络安全法》、《信息安全技术
23 | 个人信息安全规范》(GB/T 35273-2017)以及其他相关法律法规和技术规范对原《红豆记用户隐私政策》进行了更新,本次更新的内容较多,进一步明确了收集/使用/对外提供的原则,进一步阐述了关于您个人信息的相关权利等。
26 |
27 |
本政策与您所使用的我们的产品与/或服务息息相关,您在下载、安装、启动、浏览、注册、登录、使用我们的产品与/或服务(以下统称“使用我们的产品与/或服务”)时,我们将按照本政策的约定处理和保护您的个人信息。我们尽量以简明扼要的表述向您解释本政策所涉及的技术词汇,以便于您理解。我们特别提请您注意,本政策中与您权益(可能)存在重大关系的条款,已使用加粗字体予以区别,请您重点查阅。
30 |
31 |
请在使用/继续使用我们的各项产品与服务前,仔细阅读并充分理解本政策,并在需要时,按照本政策的指引,作出适当的选择。如果您不同意本政策的内容,将可能导致我们的产品与/或服务无法正常运行,或者无法达到我们拟达到的服务效果,您应立即停止访问/使用我们的产品与/或服务。您使用或继续使用我们提供的产品与/或服务的行为,都表示您充分理解和同意本《红豆记用户隐私政策》(包括更新版本)的全部内容。
33 |
34 |
关于我们
36 |
37 |
红豆记网站及APP的经营者为豆印有限公司。
42 |
43 |
一、我们如何收集和使用您的个人信息
45 |
46 |
我们会遵循正当、合法、必要的原则,出于本政策所述的以下目的,收集和使用您在使用我们服务过程中主动提供或因使用我们产品和/或服务而产生的个人信息。如果我们要将您的个人信息用于本政策未载明的其它用途,或基于特定目的将收集而来的信息用于其他目的,我们将以合理的方式向您告知,并在使用前再次征得您的同意:
48 |
49 |
1、账号注册
52 |
53 |
1.1当您注册红豆记账号时,我们会收集您的【手机号码、昵称、头像(如有)】。
60 |
61 |
1.2在您注册红豆记账号时,收集您的手机号码是为了满足相应法律法规的网络实名制要求,请您谨慎考虑后提供。若您不提供这类信息,您可能无法成功注册红豆记账号,无法正常使用我们的服务。
69 |
70 |
2.向您提供产品和/或服务
73 |
74 |
2.1信息浏览、发布、收藏与关注功能。当您成功注册账号后,您可以浏览红豆记社区的用户笔记、视频、评论以及红豆记商城的商品信息、用户评价;您可以关注其他用户;您可在红豆记平台发布文字、图片、视频和评论;您可在红豆记平台对别人的笔记或视频使用收藏、点赞等功能;您在商城成功购买商品后,可对相关产品进行评价。为了向您提供我们最核心的信息展示和信息发布服务,我们会收集您的设备型号、设备名称、设备唯一标识符、本机应用列表、浏览器类型和设置、语言设置、操作系统和应用程序版本、登录IP地址、接入网络的方式、网络质量数据、移动网络信息(包括运营商名称)、产品版本号、日志信息(如操作日志、服务日志)等。
当您使用发布功能时,您发布的文字、照片、评论、点赞、收藏等信息会存储在我们的服务器中,因为存储是实现这一功能所必需的。我们会以加密的方式存储,您也可以随时删除这些信息。
90 |
91 |
2.2搜索功能。当您使用红豆记搜索功能时,我们会收集您查询的关键词、阅读记录和访问时间、评论和互动记录等。收集此信息可以向您提供您所需要的内容和可能更感兴趣的服务,同时亦可以改进我们的产品和服务;
98 |
99 |
2.3定位功能。当您开启设备定位功能并使用红豆记基于位置提供的相关服务时,我们会收集有关您的位置信息。
106 |
107 |
2.4商品购买功能。您可以在红豆记商城订购商品/服务。为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、提供物流服务等,在您下单交易或为了完成交易时,我们会收集您的交易商品/服务信息、订单号、交易金额、支付方式、收货人姓名、地址、联系电话等信息。
当您成功下单后,如商品是第三方商家提供或需要第三方配送的,我们为了准确、安全向您完成货物的交付及配送。商家及第三方配送公司在发货及配送环节内不可避免地会获知您的相关配送信息。我们向您承诺,我们会以最大努力保障您的个人信息安全,我们会严格要求商家及第三方配送公司对您的个人信息保密,只以配送之目的获悉和使用,不得对外泄露或做其他任何用途。
115 |
116 |
2.5客服和售后服务功能。当您联系我们的客服或提出我们的产品与/或服务的售后申请时,为了您的账号与系统安全,我们可能需要您提供相关个人信息与您之前提供的个人信息相匹配以验证您的用户身份。验证成功后,我们可能会收集您与我们的沟通信息(例如:账号信息、订单信息、您为了证明相关事实而提供的图片/视频/文字信息等)、您的联系方式以及您与我们的沟通记录,包括线上沟通记录、电话录音等,以便尽快为您解决问题和改进我们的产品与/或服务。
119 |
120 |
2.6支付功能。您可以在红豆记购买商品/服务以及红豆记服务。在您使用该功能的过程中可能会需要进行支付,在支付过程中,我们可能会收集您的第三方支付账号(例如支付宝账号、微信账号、银联账号)。
129 |
130 |
2.7身份认证功能。当您使用红豆记认证功能时,为证实您的个人身份,我们可能会收集您的身份信息,包括您的真实姓名、身份证号码、人像照片信息。
136 |
137 |
2.8为保证您能正常使用红豆记或其关联公司移动客户端软件的全部功能(包括但不限于您在使用红豆记平台服务时能够与后台服务器保持即时通信、您能够及时收到个性化内容推送等),红豆记可能会i)向您获取及调用您的开机广播用于启动红豆记或其关联公司移动客户端软件,ii)采用第三方消息推送服务为您生成标识ID用于区分您的设备的唯一性。
151 |
152 |
2.9线下服务功能。当您使用红豆记线下所提供的服务时,为了能够给您提供更加个性化的服务内容和改善红豆记的产品与服务,我们可能会收集您的面部识别信息。
160 |
161 |
3我们可能从第三方间接获取您的个人信息
164 |
165 |
3.1如您使用第三方平台的账号登录时,经过您的账号绑定授权,第三方平台会同步一部分信息给我们,如手机号、头像、昵称或ID。
169 |
170 |
3.2请您知悉,您向外部第三方提供的个人信息,或外部第三方收集的您的个人信息,我们无法获取,更不会使用非常规方式盗取您的个人信息。如果因业务发展的必要而需要从第三方间接收集(如共享等)您的个人信息的,且由我们直接或间接(联合)为您提供产品或服务的,我们(或第三方)在收集前会向您明示共享的您个人信息的来源、类型、使用目的、方式和所用于的业务功能、授权同意范围(如果使用方式和范围超出您在第三方原授权范围的,我们会再次征得您的授权同意),包括您通过第三方账户直接登录我们的产品与/或服务时,我们从第三方获取的您授权共享的账户信息(包括头像、昵称)、我们的某些产品/服务由业务合作伙伴提供或者我们与业务合作伙伴共同提供时,为了必要/合理的业务的顺利开展,我们从部分业务合作伙伴处间接收集的您的部分信息、其他方使用我们的产品与/或服务时所提供有关您的信息(包括发布的与您相关的内容,包括笔记、评论、图片、照片、视频)。
174 |
175 |
4.征得授权同意的例外
178 |
179 |
根据相关法律法规的规定,在以下情形中,我们可以在不征得您的授权同意的情况下收集、使用一些必要的个人信息:
181 |
182 |
183 | -
185 | 与国家安全、国防安全直接相关的;
187 |
188 | -
190 | 与公共安全、公共卫生、重大公共利益直接相关的;
192 |
193 | -
195 | 与犯罪侦查、起诉、审判和判决执行等直接相关的;
197 |
198 | -
200 | 出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
202 |
203 | -
205 | 所收集的个人信息是您自行向社会公众公开的;
207 |
208 | -
210 | 从合法公开披露的信息中收集到您的个人信息,如从合法的新闻报道、政府信息公开等渠道;
212 |
213 | -
215 | 根据您与平台签署的在线协议或合同所必需的;
217 |
218 | -
220 | 用于维护我们产品和/或服务的安全稳定运行所必需的,例如发现、处置产品或服务的故障;
222 |
223 | -
225 | 法律法规规定的其他情形。
227 |
228 |
229 |
二、我们如何共享、转让、公开披露您的个人信息
231 |
232 |
1.共享
235 |
236 |
对于您的个人信息,我们不会与任何公司、组织和个人进行共享,除非存在以下一种或多种情形:
238 |
239 |
240 | -
242 | 事先已得到您的授权;
244 |
245 | -
247 | 您自行提出的;
249 |
250 | -
252 | 按照法律规定、司法机关或行政机关要求的情形;
254 |
255 | -
257 | 与商业合作伙伴的必要共享:
260 | 您理解并知悉,为了向您提供更完善、优质的产品和服务,我们将授权合作伙伴为您提供部分服务。此种情形下,我们可能会与合作伙伴共享您的某些个人信息,以提供更好的客户服务和用户体验。请您注意,我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供服务所必要的个人信息。同时,我们会与合作伙伴签署严格的保密协定,要求他们按照我们的说明、本政策以及其他任何相关的保密和安全措施来处理您的个人信息。我们的合作伙伴无权将共享的个人信息用于任何其他用途。我们将对信息数据的输出形式、流转、使用等做安全评估与处理等。
263 | 目前,我们的授权合作伙伴包括以下类型:
264 |
265 | -
267 | 平台的第三方商家:为帮助您实现产品或服务的购买或者为您提供售后服务,我们会与平台的第三方商家共享您的订单和交易相关信息。
269 |
270 | -
272 | 服务供应商:例如为您提供支付服务的支付机构、为您提供一键登录服务的通讯运营商、第三方物流公司、系统技术服务商等。
274 |
275 | -
277 | 数据服务供应商:包括网络广告监测、数据统计/分析的合作伙伴。为维护/改进我们的产品/服务、为您提供更好的内容,我们可能会与提供该服务的指定合作伙伴共享您的相关信息(例如:广告播放/展示记录、视频播放记录、设备型号、设备所在地等)。请您知悉,为了您的信息安全,我们目前仅与已签署严格数据安全保密协议的合作伙伴进行合作;
279 |
280 | -
282 | 其他业务合作伙伴:例如:委托我们进行推广和广告投放的合作伙伴等。您授权我们有权与委托我们进行推广和广告投放的合作伙伴共享我们使用您的相关信息集合形成的间接用户画像、去标识化或匿名化处理后的分析/统计类信息,以帮助其进行广告或决策建议、提高广告有效触达率、进一步了解用户需求。但我们承诺:未经您的同意,我们不会与其共享可以识别您身份的个人信息;
287 |
288 |
289 |
290 | -
292 | 与我们的关联公司必要共享:我们可能会与我们的关联公司共享您的个人信息。我们只会共享必要的个人信息,且这种共享受本政策所声明的目的的约束。关联公司如要改变个人信息的处理目的,将再次征得您的授权和同意;
294 |
295 | -
297 | 您可以基于红豆记平台与第三人(包括不特定对象)共享您的个人信息或其他信息,但因您的共享行为而导致的信息泄露、被使用等情况,与红豆记无关,红豆记不因此承担法律责任。
305 |
306 |
307 |
308 | -
310 | 转让:
312 |
313 |
314 |
转让是指将取得您个人信息的控制权转让给其他公司、组织或个人。除非获取您的明确同意,否则我们不会将您的个人信息转让给任何公司、组织或个人。但下述情形除外:
316 |
317 |
318 | -
320 | 事先已征得您的同意;
322 |
323 | -
325 | 您自行提出的;
327 |
328 | -
330 | 如果公司发生合并、收购或破产清算,将可能涉及到个人信息转让,此种情况下我们会要求新的持有您个人信息的公司、组织继续受本政策的约束。否则我们将要求其重新获取您的明示同意。
332 |
333 | -
335 | 其他法律法规规定的情形。
337 |
338 |
339 |
340 | -
342 | 公开披露:
344 |
345 |
346 |
公开披露是指向社会或不特定人群发布信息的行为。除了因公布账号中奖、处罚通知时展示相关脱敏信息或者取得您的明确同意而进行必要的公开披露外,我们不会对您的个人信息进行披露。但下述情况除外:
348 |
349 |
1)基于法律规定、司法机关或行政机关强制性要求的情况下,我们可能会向有权机关披露您的个人信息。但我们保证,在上述情况发生时,我们会要求披露请求方必须出具与之相应的有效法律文件,并对被披露的信息采取符合法律和业界标准的安全防护措施。
352 |
353 |
4.共享、转让、公开披露个人信息授权同意的例外情形:
356 |
357 |
根据相关法律法规的规定,在以下情形中,我们可以在不征得您的授权同意的情况下共享、转让、公开披露您的个人信息:
359 |
360 |
1.与公共安全、公共卫生、重大公共利益有关的;
364 |
365 |
2.与犯罪侦查、起诉、审判和判决执行等有关的;
369 |
370 |
3.出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
374 |
375 |
4.您自行向社会公众公开的个人信息;
379 |
380 |
5.从合法公开披露的信息中收集到的个人信息的,如合法的新闻报道、政府信息公开等渠道。
384 |
385 |
6.法律法规规定的其他情形。
389 |
390 |
根据法律规定,共享、转让经去标识化处理的个人信息,且确保数据接收方无法复原并重新识别个人信息主体的,不属于个人信息的对外共享、转让及公开披露行为,对此类数据的保存及处理将无需另行向您通知并征得您的同意。
392 |
393 |
395 | 3、我们如何存储和保护您的个人信息
397 |
398 |
399 | -
401 | 存储:
403 |
404 |
405 |
存储地点:我们将从中华人民共和国境内获得的信息存放于中华人民共和国境内。如果发生数据的跨境传输,我们会单独向您以站内通知或邮件的方式告知您数据出境的目的、接收方等,并征得您的授权同意,我们会确保数据接收方有充足的数据保护能力来保护您的个人信息。
407 |
408 |
存储时间:我们承诺始终按照法律的规定在合理必要期限内在存储您个人信息。
410 |
411 |
412 | -
414 |
416 | 保护:
418 |
419 |
420 |
为了保护您的个人信息安全,我们将努力采取各种符合行业标准的安全措施来保护您的个人信息以最大程度降低您的信息被毁损、盗用、泄露、非授权访问、使用、披露和更改的风险。我们将积极建立数据分类分级制度、数据安全管理规范、数据安全开发规范来管理规范个人信息的存储和使用,确保未收集与我们提供的服务无关的个人信息。
422 |
423 |
您的账户均有安全保护功能,请妥善保管您的账户及密码信息。红豆记将通过向其它服务器备份、对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”。为防止安全事故的发生,我们已按照法律法规的规定,制定了妥善的预警机制和应急预案。同时,我们还将按照监管部门要求,主动上报个人信息安全事件的处置情况,紧密配合政府机关的工作。
427 |
428 |
四、您如何管理您的信息
430 |
431 |
您可以对自己个人信息访问、更正、删除的权利。您可通过【设置-个人资料】访问、更正自己的个人资料;可通过【设置-账号与安全】设置、访问、更正账号信息;可通过【设置-隐私】设置、访问、更正隐私信息。您可通过【我-笔记/收藏/赞过】访问、更正、删除相关信息。您可通过【设置-账号与安全/新消息通知/隐私/通用】变更授权范围。
433 |
434 |
五、您如何注销您的账号
436 |
437 |
您可以通过【客服与帮助-社区问题-账号问题-如何注销账号】,在满足账号注销的条件下选择【申请注销账号】,来注销您的账号;账号注销后,除法律明确规定必须由我们保留的个人信息外(如您在红豆记交易相关的信息),您的个人信息将会从红豆记移除。
439 |
440 |
六、我们如何使用Cookie和其他同类技术
442 |
443 |
1.在您未拒绝接受cookies的情况下,红豆记会在您的计算机以及相关移动设备上设定或取用cookies,以便您能登录或使用依赖于cookies的红豆记平台服务或功能。红豆记使用cookies可为您提供更加周到的个性化服务,包括推广服务。
452 |
453 |
2.您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式或在移动设备中设置拒绝接受cookies。但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的红豆记平台服务或功能。
458 |
459 |
3.通过红豆记所设cookies所取得的有关信息,将适用本政策。
464 |
465 |
七、我们如何更新隐私政策
467 |
468 |
1.我们保留不时更新或修订本隐私政策的权利。
471 |
472 |
2.如遇本隐私政策更新,我们会通过APP客户端推送通知等合理方式通知您,以便您能及时了解本隐私政策所做的任何变更。
475 |
476 |
八、未成年人保护
478 |
479 |
1.若用户是未满18周岁的未成年人,应在监护人监护、指导并获得监护人同意情况下阅读本协议和使用红豆记相关服务。
484 |
485 |
2.本公司重视对未成年人个人信息的保护,未成年用户在填写个人信息时,请加强个人保护意识并谨慎对待,请在监护人指导时正确使用红豆记相关服务。
490 |
491 |
3.若您是未成年人的监护人,当您对您所监护的未成年人使用我们的服务或其向我们提供的用户信息有任何疑问时,请您及时与我们联系。我们将根据国家相关法律法规及本政策的规定保护未成年人用户信息的保密性及安全性。如果我们发现自己在未事先获得可证实的父母或法定监护人同意的情况下收集了未成年人的个人信息,则会设法尽快删除相关数据。
494 |
495 |
九、如何联系我们
497 |
498 |
当您对本政策有任何疑问,可以发送邮件至【douyin@hdouji.com
505 | 】联系我们。
507 |
508 |
十、其他
510 |
511 |
512 | -
514 | 因本政策以及我们处理您个人信息事宜引起的任何争议,您可诉至杭州市下沙经济技术开发区人民法院。
518 |
519 | -
521 | 如果您认为我们的个人信息处理行为损害了您的合法权益,您也可向有关政府部门进行反映。
523 |
524 |
525 |
527 |
529 |
531 |
533 |
534 |
535 |
536 |
537 |
538 |
539 |
550 |
551 |
--------------------------------------------------------------------------------
/pages/service.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |

13 |

14 |
15 |
32 |
33 |
34 |
35 |
43 |
44 |
45 |
46 |
上传截图:
47 |
48 |
49 |
50 |
57 | 不超过2M
58 |
59 |
60 |
![]()
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 | 仅豆印工作人员可见,请保持您的联系方式畅通。
69 |
70 |
71 |
72 | 提交
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
177 |
178 |
386 |
--------------------------------------------------------------------------------
/pages/terms.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
红豆记用户注册协议
7 |
8 |
9 |
{{title1}}
10 |
{{con1}}
11 |
{{title2}}
12 |
17 |
{{title3}}
18 |
23 |
{{title4}}
24 |
{{con4}}
25 |
{{title5}}
26 |
27 |
32 |
{{title6}}
33 |
38 |
{{title7}}
39 |
44 |
{{title8}}
45 |
50 |
{{title9}}
51 |
56 |
{{title10}}
57 |
62 |
{{title11}}
63 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
167 |
168 |
--------------------------------------------------------------------------------
/plugins/README.md:
--------------------------------------------------------------------------------
1 | # PLUGINS
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains Javascript plugins that you want to run before mounting the root Vue.js application.
6 |
7 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/plugins).
8 |
--------------------------------------------------------------------------------
/plugins/element-ui.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Element from 'element-ui'
3 | import locale from 'element-ui/lib/locale/lang/en'
4 |
5 | Vue.use(Element, { locale })
6 |
--------------------------------------------------------------------------------
/plugins/vue-mavon-editor.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import mavonEditor from 'mavon-editor';
3 | import 'mavon-editor/dist/css/index.css';
4 |
5 | // markdown 插件
6 |
7 | Vue.use(mavonEditor);
--------------------------------------------------------------------------------
/server/index.js:
--------------------------------------------------------------------------------
1 | const Koa = require('koa')
2 | const consola = require('consola')
3 | const { Nuxt, Builder } = require('nuxt')
4 | const router = require("koa-router")()// 导入路由中间间
5 | const bodyParser = require('koa-bodyparser')// 接收post请求处理参数
6 | const service = require("./service")// 导入客服接口
7 | import mongoose from 'mongoose' // 导入mongoose
8 | import dbConfig from "../dbs/config" // 导入mongoose配置
9 | import cors from "koa2-cors" // 导入cors 配置跨域
10 | const config = require('../nuxt.config.js')
11 |
12 | const app = new Koa()
13 | app.use(cors()) // 注入跨域
14 | app.use(bodyParser()) // 注入post解析参数
15 | app.use(service.routes(), service.allowedMethods())// 注入路由
16 |
17 | mongoose.connect(dbConfig.dbs, {
18 | useNewUrlParser: true // 写死就行,不知道啥意思
19 | }) // 连接数据库
20 |
21 |
22 |
23 |
24 | // Import and Set Nuxt.js options
25 | config.dev = !(app.env === 'production')
26 |
27 | async function start() {
28 | // Instantiate nuxt.js
29 | const nuxt = new Nuxt(config)
30 |
31 | const {
32 | host = process.env.HOST || 'http://localhost',
33 | port = process.env.PORT || 8080
34 | } = nuxt.options.server
35 |
36 |
37 |
38 | // Build in development
39 | if (config.dev) {
40 | const builder = new Builder(nuxt)
41 | await builder.build()
42 | } else {
43 | await nuxt.ready()
44 | }
45 |
46 | app.use((ctx) => {
47 | ctx.status = 200
48 | ctx.respond = false // Bypass Koa's built-in response handling
49 | ctx.req.ctx = ctx // This might be useful later on, e.g. in nuxtServerInit or with nuxt-stash
50 | nuxt.render(ctx.req, ctx.res)
51 | })
52 |
53 |
54 | app.listen(port, host)
55 | // 暂时没有解决办法的设置host和port 服务器上使用这套
56 | // app.listen(8080, "0.0.0.0")
57 |
58 | consola.ready({
59 | message: `Server listening on http://${host}:${port}`,
60 | badge: true
61 | })
62 | }
63 |
64 | start()
65 |
--------------------------------------------------------------------------------
/server/service.js:
--------------------------------------------------------------------------------
1 | // 本文件是客服页面接口
2 |
3 | const router = require("koa-router")()
4 | const bodyParser = require("koa-bodyparser")
5 |
6 | import Service from '../dbs/models/service' // 引入db模型
7 | // import { userInfo } from 'os';
8 |
9 | import mongoose from "mongoose"
10 |
11 |
12 |
13 | // 上传图片路由功能
14 | // 上传图片的功能等待更新为 base64
15 | let imgUrl
16 | const multer = require('koa-multer');//加载koa-multer模块
17 | // 文件上传
18 | // koa-multer配置
19 | var storage = multer.diskStorage({
20 | //文件保存路径
21 | destination: function (req, file, cb) {
22 | cb(null, 'assets/testimg')
23 | },
24 | //修改文件名称
25 | filename: function (req, file, cb) {
26 | var fileFormat = (file.originalname).split(".");
27 | imgUrl = Date.now() + "上传的图片" + "." + fileFormat[fileFormat.length - 1]
28 | cb(null, imgUrl);
29 | }
30 | })
31 | //加载配置
32 | var upload = multer({ storage: storage });
33 |
34 |
35 |
36 | // 路由
37 |
38 | router.post('/upload/img', upload.single('file'), async (ctx, next) => {
39 | ctx.body = {
40 | filename: ctx.req.file.filename//返回文件名
41 | }
42 | })
43 |
44 |
45 | router.post("/upload/json", async (ctx, next) => {
46 | console.log("外部访问json接口")
47 | let postParam = ctx.request.body
48 | postParam.imgUrl = imgUrl
49 | const service = new Service({
50 | suggest: postParam.suggest,
51 | number: postParam.number,
52 | phone: postParam.phone,
53 | imgUrl: postParam.imgUrl,
54 | imgBase64:postParam.imgBase64
55 | })
56 | let code
57 | try {
58 | await service.save()
59 | code = 0
60 | } catch (e) {
61 | code = -1
62 | }
63 |
64 | ctx.body = {
65 | code: code,
66 | data: postParam
67 | }
68 | })
69 |
70 |
71 | router.get("/admin1", async (ctx, next) => {
72 | console.log("访问管理接口")
73 | var service = mongoose.model("service")
74 | await service.find((err, serviceScheam) => {
75 | ctx.response.body = serviceScheam
76 | })
77 | })
78 |
79 | router.get("/test", async (ctx, next) => {
80 | ctx.response.body = 'Hello, GhostCat'
81 | })
82 |
83 |
84 |
85 | module.exports = router
--------------------------------------------------------------------------------
/static/README.md:
--------------------------------------------------------------------------------
1 | # STATIC
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your static files.
6 | Each file inside this directory is mapped to `/`.
7 | Thus you'd want to delete this README.md before deploying to production.
8 |
9 | Example: `/static/robots.txt` is mapped as `/robots.txt`.
10 |
11 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/assets#static).
12 |
--------------------------------------------------------------------------------
/static/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GhostCatcg/hongdouji/20992f7407a5d28823ec50c862aff68dedbfa2f7/static/favicon.ico
--------------------------------------------------------------------------------
/store/README.md:
--------------------------------------------------------------------------------
1 | # STORE
2 |
3 | **This directory is not required, you can delete it if you don't want to use it.**
4 |
5 | This directory contains your Vuex Store files.
6 | Vuex Store option is implemented in the Nuxt.js framework.
7 |
8 | Creating a file in this directory automatically activates the option in the framework.
9 |
10 | More information about the usage of this directory in [the documentation](https://nuxtjs.org/guide/vuex-store).
11 |
--------------------------------------------------------------------------------