作者 曾海沥

autoadd

正在显示 49 个修改的文件 包含 537 行增加511 行删除
@@ -5,16 +5,16 @@ @@ -5,16 +5,16 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>买买买文档平台</title> 6 <title>买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/4.0442bfb1.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/2.d106f811.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/4.9dcb0336.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/2.db0c6dc7.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 - <div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>That's a Four-Oh-Four.</blockquote> <a href="/" class="router-link-active"> 15 + <div id="app" data-server-rendered="true"><div class="theme-container"><div class="theme-default-content"><h1>404</h1> <blockquote>Looks like we've got some broken links.</blockquote> <a href="/" class="router-link-active">
16 Take me home. 16 Take me home.
17 </a></div></div><div class="global-ui"><!----></div></div> 17 </a></div></div><div class="global-ui"><!----></div></div>
18 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/4.0442bfb1.js" defer></script> 18 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/4.9dcb0336.js" defer></script>
19 </body> 19 </body>
20 </html> 20 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>行政管理 | 买买买文档平台</title> 6 <title>行政管理 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/6.da5cbe6d.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/6.1b73d060.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link router-link-exact-active router-link-active"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link router-link-exact-active router-link-active">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link router-link-exact-active router-link-active"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link router-link-exact-active router-link-active">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="行政管理"><a href="#行政管理" aria-hidden="true" class="header-anchor">#</a> 行政管理</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/6.da5cbe6d.js" defer></script> 63 +</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="行政管理"><a href="#行政管理" class="header-anchor">#</a> 行政管理</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/6.1b73d060.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>
  1 +.login-form{padding:1rem;display:flex;flex-direction:column;box-sizing:border-box}.login-form .btn-row{margin-top:1rem}.login-form .btn{padding:.6rem 2rem;outline:none;background-color:#60c084;color:#fff;border:0}.login-form .form-header{color:#666;margin-bottom:.5rem}.login-form .form-control{padding:.6rem;border:3px solid #ddd;width:100%;margin-bottom:.5rem;box-sizing:border-box;outline:none;border-radius:4px;transition:border .3s ease,box-shadow .3s ease}.login-form .form-control:focus{border-color:#aaa;box-shadow:0 1px 10px rgba(0,0,0,.1)}#nprogress{pointer-events:none}#nprogress .bar{background:#3eaf7c;position:fixed;z-index:1031;top:0;left:0;width:100%;height:2px}#nprogress .peg{display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px #3eaf7c,0 0 5px #3eaf7c;opacity:1;transform:rotate(3deg) translateY(-4px)}#nprogress .spinner{display:block;position:fixed;z-index:1031;top:15px;right:15px}#nprogress .spinner-icon{width:18px;height:18px;box-sizing:border-box;border-color:#3eaf7c transparent transparent #3eaf7c;border-style:solid;border-width:2px;border-radius:50%;-webkit-animation:nprogress-spinner .4s linear infinite;animation:nprogress-spinner .4s linear infinite}.nprogress-custom-parent{overflow:hidden;position:relative}.nprogress-custom-parent #nprogress .bar,.nprogress-custom-parent #nprogress .spinner{position:absolute}@-webkit-keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes nprogress-spinner{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}html{scroll-behavior:smooth}.go-to-top[data-v-5fd4ef0c]{cursor:pointer;position:fixed;bottom:2rem;right:2.5rem;width:2rem;color:#3eaf7c;z-index:1}.go-to-top[data-v-5fd4ef0c]:hover{color:#72cda4}@media (max-width:959px){.go-to-top[data-v-5fd4ef0c]{display:none}}.fade-enter-active[data-v-5fd4ef0c],.fade-leave-active[data-v-5fd4ef0c]{transition:opacity .3s}.fade-enter[data-v-5fd4ef0c],.fade-leave-to[data-v-5fd4ef0c]{opacity:0}.icon.outbound{color:#aaa;display:inline-block;vertical-align:middle;position:relative;top:-1px}.home{padding:3.6rem 2rem 0;max-width:960px;margin:0 auto;display:block}.home .hero{text-align:center}.home .hero img{max-width:100%;max-height:280px;display:block;margin:3rem auto 1.5rem}.home .hero h1{font-size:3rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.8rem auto}.home .hero .description{max-width:35rem;font-size:1.6rem;line-height:1.3;color:#6a8bad}.home .hero .action-button{display:inline-block;font-size:1.2rem;color:#fff;background-color:#3eaf7c;padding:.8rem 1.6rem;border-radius:4px;transition:background-color .1s ease;box-sizing:border-box;border-bottom:1px solid #389d70}.home .hero .action-button:hover{background-color:#4abf8a}.home .features{border-top:1px solid #eaecef;padding:1.2rem 0;margin-top:2.5rem;display:flex;flex-wrap:wrap;align-items:flex-start;align-content:stretch;justify-content:space-between}.home .feature{flex-grow:1;flex-basis:30%;max-width:30%}.home .feature h2{font-size:1.4rem;font-weight:500;border-bottom:none;padding-bottom:0;color:#3a5169}.home .feature p{color:#4e6e8e}.home .footer{padding:2.5rem;border-top:1px solid #eaecef;text-align:center;color:#4e6e8e}@media (max-width:719px){.home .features{flex-direction:column}.home .feature{max-width:100%;padding:0 2.5rem}}@media (max-width:419px){.home{padding-left:1.5rem;padding-right:1.5rem}.home .hero img{max-height:210px;margin:2rem auto 1.2rem}.home .hero h1{font-size:2rem}.home .hero .action,.home .hero .description,.home .hero h1{margin:1.2rem auto}.home .hero .description{font-size:1.2rem}.home .hero .action-button{font-size:1rem;padding:.6rem 1.2rem}.home .feature h2{font-size:1.25rem}}.search-box{display:inline-block;position:relative;margin-right:1rem}.search-box input{cursor:text;width:10rem;height:2rem;color:#4e6e8e;display:inline-block;border:1px solid #cfd4db;border-radius:2rem;font-size:.9rem;line-height:2rem;padding:0 .5rem 0 2rem;outline:none;transition:all .2s ease;background:#fff url(/assets/img/search.83621669.svg) .6rem .5rem no-repeat;background-size:1rem}.search-box input:focus{cursor:auto;border-color:#3eaf7c}.search-box .suggestions{background:#fff;width:20rem;position:absolute;top:1.5rem;border:1px solid #cfd4db;border-radius:6px;padding:.4rem;list-style-type:none}.search-box .suggestions.align-right{right:0}.search-box .suggestion{line-height:1.4;padding:.4rem .6rem;border-radius:4px;cursor:pointer}.search-box .suggestion a{white-space:normal;color:#5d82a6}.search-box .suggestion a .page-title{font-weight:600}.search-box .suggestion a .header{font-size:.9em;margin-left:.25em}.search-box .suggestion.focused{background-color:#f3f4f5}.search-box .suggestion.focused a{color:#3eaf7c}@media (max-width:959px){.search-box input{cursor:pointer;width:0;border-color:transparent;position:relative}.search-box input:focus{cursor:text;left:0;width:10rem}}@media (-ms-high-contrast:none){.search-box input{height:2rem}}@media (max-width:959px) and (min-width:719px){.search-box .suggestions{left:0}}@media (max-width:719px){.search-box{margin-right:0}.search-box input{left:1rem}.search-box .suggestions{right:0}}@media (max-width:419px){.search-box .suggestions{width:calc(100vw - 4rem)}.search-box input:focus{width:8rem}}.sidebar-button{cursor:pointer;display:none;width:1.25rem;height:1.25rem;position:absolute;padding:.6rem;top:.6rem;left:1rem}.sidebar-button .icon{display:block;width:1.25rem;height:1.25rem}@media (max-width:719px){.sidebar-button{display:block}}.dropdown-enter,.dropdown-leave-to{height:0!important}.dropdown-wrapper{cursor:pointer}.dropdown-wrapper .dropdown-title{display:block;font-size:.9rem;font-family:inherit;cursor:inherit;padding:inherit;line-height:1.4rem;background:transparent;border:none;font-weight:500;color:#2c3e50}.dropdown-wrapper .dropdown-title:hover{border-color:transparent}.dropdown-wrapper .dropdown-title .arrow{vertical-align:middle;margin-top:-1px;margin-left:.4rem}.dropdown-wrapper .nav-dropdown .dropdown-item{color:inherit;line-height:1.7rem}.dropdown-wrapper .nav-dropdown .dropdown-item h4{margin:.45rem 0 0;border-top:1px solid #eee;padding:.45rem 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper{padding:0;list-style:none}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem-wrapper .dropdown-subitem{font-size:.9em}.dropdown-wrapper .nav-dropdown .dropdown-item a{display:block;line-height:1.7rem;position:relative;border-bottom:none;font-weight:400;margin-bottom:0;padding:0 1.5rem 0 1.25rem}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active,.dropdown-wrapper .nav-dropdown .dropdown-item a:hover{color:#3eaf7c}.dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{content:"";width:0;height:0;border-left:5px solid #3eaf7c;border-top:3px solid transparent;border-bottom:3px solid transparent;position:absolute;top:calc(50% - 2px);left:9px}.dropdown-wrapper .nav-dropdown .dropdown-item:first-child h4{margin-top:0;padding-top:0;border-top:0}@media (max-width:719px){.dropdown-wrapper.open .dropdown-title{margin-bottom:.5rem}.dropdown-wrapper .dropdown-title{font-weight:600;font-size:inherit}.dropdown-wrapper .dropdown-title:hover{color:#3eaf7c}.dropdown-wrapper .nav-dropdown{transition:height .1s ease-out;overflow:hidden}.dropdown-wrapper .nav-dropdown .dropdown-item h4{border-top:0;margin-top:0;padding-top:0}.dropdown-wrapper .nav-dropdown .dropdown-item>a,.dropdown-wrapper .nav-dropdown .dropdown-item h4{font-size:15px;line-height:2rem}.dropdown-wrapper .nav-dropdown .dropdown-item .dropdown-subitem{font-size:14px;padding-left:1rem}}@media (min-width:719px){.dropdown-wrapper{height:1.8rem}.dropdown-wrapper.open .nav-dropdown,.dropdown-wrapper:hover .nav-dropdown{display:block!important}.dropdown-wrapper.open:blur{display:none}.dropdown-wrapper .dropdown-title .arrow{border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid #ccc;border-bottom:0}.dropdown-wrapper .nav-dropdown{display:none;height:auto!important;box-sizing:border-box;max-height:calc(100vh - 2.7rem);overflow-y:auto;position:absolute;top:100%;right:0;background-color:#fff;padding:.6rem 0;border:1px solid;border-color:#ddd #ddd #ccc;text-align:left;border-radius:.25rem;white-space:nowrap;margin:0}}.nav-links{display:inline-block}.nav-links a{line-height:1.4rem;color:inherit}.nav-links a.router-link-active,.nav-links a:hover{color:#3eaf7c}.nav-links .nav-item{position:relative;display:inline-block;margin-left:1.5rem;line-height:2rem}.nav-links .nav-item:first-child{margin-left:0}.nav-links .repo-link{margin-left:1.5rem}@media (max-width:719px){.nav-links .nav-item,.nav-links .repo-link{margin-left:0}}@media (min-width:719px){.nav-links a.router-link-active,.nav-links a:hover{color:#2c3e50}.nav-item>a:not(.external).router-link-active,.nav-item>a:not(.external):hover{margin-bottom:-2px;border-bottom:2px solid #46bd87}}.navbar{padding:.7rem 1.5rem;line-height:2.2rem}.navbar a,.navbar img,.navbar span{display:inline-block}.navbar .logo{height:2.2rem;min-width:2.2rem;margin-right:.8rem;vertical-align:top}.navbar .site-name{font-size:1.3rem;font-weight:600;color:#2c3e50;position:relative}.navbar .links{padding-left:1.5rem;box-sizing:border-box;background-color:#fff;white-space:nowrap;font-size:.9rem;position:absolute;right:1.5rem;top:.7rem;display:flex}.navbar .links .search-box{flex:0 0 auto;vertical-align:top}@media (max-width:719px){.navbar{padding-left:4rem}.navbar .can-hide{display:none}.navbar .links{padding-left:1.5rem}.navbar .site-name{width:calc(100vw - 9.4rem);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}.page-edit{max-width:800px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-edit{padding:2rem}}@media (max-width:419px){.page-edit{padding:1.5rem}}.page-edit{padding-top:1rem;padding-bottom:1rem;overflow:auto}.page-edit .edit-link{display:inline-block}.page-edit .edit-link a{color:#4e6e8e;margin-right:.25rem}.page-edit .last-updated{float:right;font-size:.9em}.page-edit .last-updated .prefix{font-weight:500;color:#4e6e8e}.page-edit .last-updated .time{font-weight:400;color:#aaa}@media (max-width:719px){.page-edit .edit-link{margin-bottom:.5rem}.page-edit .last-updated{font-size:.8em;float:none;text-align:left}}.page-nav{max-width:800px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.page-nav{padding:2rem}}@media (max-width:419px){.page-nav{padding:1.5rem}}.page-nav{padding-top:1rem;padding-bottom:0}.page-nav .inner{min-height:2rem;margin-top:0;border-top:1px solid #eaecef;padding-top:1rem;overflow:auto}.page-nav .next{float:right}.page{padding-bottom:2rem;display:block}.sidebar-group .sidebar-group{padding-left:.5em}.sidebar-group:not(.collapsable) .sidebar-heading:not(.clickable){cursor:auto;color:inherit}.sidebar-group.is-sub-group{padding-left:0}.sidebar-group.is-sub-group>.sidebar-heading{font-size:.95em;line-height:1.4;font-weight:400;padding-left:2rem}.sidebar-group.is-sub-group>.sidebar-heading:not(.clickable){opacity:.5}.sidebar-group.is-sub-group>.sidebar-group-items{padding-left:1rem}.sidebar-group.is-sub-group>.sidebar-group-items>li>.sidebar-link{font-size:.95em;border-left:none}.sidebar-group.depth-2>.sidebar-heading{border-left:none}.sidebar-heading{color:#2c3e50;transition:color .15s ease;cursor:pointer;font-size:1.1em;font-weight:700;padding:.35rem 1.5rem .35rem 1.25rem;width:100%;box-sizing:border-box;margin:0;border-left:.25rem solid transparent}.sidebar-heading.open,.sidebar-heading:hover{color:inherit}.sidebar-heading .arrow{position:relative;top:-.12em;left:.5em}.sidebar-heading.clickable.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-heading.clickable:hover{color:#3eaf7c}.sidebar-group-items{transition:height .1s ease-out;font-size:.95em;overflow:hidden}.sidebar .sidebar-sub-headers{padding-left:1rem;font-size:.95em}a.sidebar-link{font-size:1em;font-weight:400;display:inline-block;color:#2c3e50;border-left:.25rem solid transparent;padding:.35rem 1rem .35rem 1.25rem;line-height:1.4;width:100%;box-sizing:border-box}a.sidebar-link:hover{color:#3eaf7c}a.sidebar-link.active{font-weight:600;color:#3eaf7c;border-left-color:#3eaf7c}.sidebar-group a.sidebar-link{padding-left:2rem}.sidebar-sub-headers a.sidebar-link{padding-top:.25rem;padding-bottom:.25rem;border-left:none}.sidebar-sub-headers a.sidebar-link.active{font-weight:500}.sidebar ul{padding:0;margin:0;list-style-type:none}.sidebar a{display:inline-block}.sidebar .nav-links{display:none;border-bottom:1px solid #eaecef;padding:.5rem 0 .75rem}.sidebar .nav-links a{font-weight:600}.sidebar .nav-links .nav-item,.sidebar .nav-links .repo-link{display:block;line-height:1.25rem;font-size:1.1em;padding:.5rem 0 .5rem 1.5rem}.sidebar>.sidebar-links{padding:1.5rem 0}.sidebar>.sidebar-links>li>a.sidebar-link{font-size:1.1em;line-height:1.7;font-weight:700}.sidebar>.sidebar-links>li:not(:first-child){margin-top:.75rem}@media (max-width:719px){.sidebar .nav-links{display:block}.sidebar .nav-links .dropdown-wrapper .nav-dropdown .dropdown-item a.router-link-active:after{top:calc(1rem - 2px)}.sidebar>.sidebar-links{padding:1rem 0}}code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.block-comment,.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#999}.token.punctuation{color:#ccc}.token.attr-name,.token.deleted,.token.namespace,.token.tag{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.function,.token.number{color:#f08d49}.token.class-name,.token.constant,.token.property,.token.symbol{color:#f8c555}.token.atrule,.token.builtin,.token.important,.token.keyword,.token.selector{color:#cc99cd}.token.attr-value,.token.char,.token.regex,.token.string,.token.variable{color:#7ec699}.token.entity,.token.operator,.token.url{color:#67cdcc}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}.theme-default-content code{color:#476582;padding:.25rem .5rem;margin:0;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.theme-default-content code .token.deleted{color:#ec5975}.theme-default-content code .token.inserted{color:#3eaf7c}.theme-default-content pre,.theme-default-content pre[class*=language-]{line-height:1.4;padding:1.25rem 1.5rem;margin:.85rem 0;background-color:#282c34;border-radius:6px;overflow:auto}.theme-default-content pre[class*=language-] code,.theme-default-content pre code{color:#fff;padding:0;background-color:transparent;border-radius:0}div[class*=language-]{position:relative;background-color:#282c34;border-radius:6px}div[class*=language-] .highlight-lines{-webkit-user-select:none;-ms-user-select:none;user-select:none;padding-top:1.3rem;position:absolute;top:0;left:0;width:100%;line-height:1.4}div[class*=language-] .highlight-lines .highlighted{background-color:rgba(0,0,0,.66)}div[class*=language-] pre,div[class*=language-] pre[class*=language-]{background:transparent;position:relative;z-index:1}div[class*=language-]:before{position:absolute;z-index:3;top:.8em;right:1em;font-size:.75rem;color:hsla(0,0%,100%,.4)}div[class*=language-]:not(.line-numbers-mode) .line-numbers-wrapper{display:none}div[class*=language-].line-numbers-mode .highlight-lines .highlighted{position:relative}div[class*=language-].line-numbers-mode .highlight-lines .highlighted:before{content:" ";position:absolute;z-index:3;left:0;top:0;display:block;width:3.5rem;height:100%;background-color:rgba(0,0,0,.66)}div[class*=language-].line-numbers-mode pre{padding-left:4.5rem;vertical-align:middle}div[class*=language-].line-numbers-mode .line-numbers-wrapper{position:absolute;top:0;width:3.5rem;text-align:center;color:hsla(0,0%,100%,.3);padding:1.25rem 0;line-height:1.4}div[class*=language-].line-numbers-mode .line-numbers-wrapper br{-webkit-user-select:none;-ms-user-select:none;user-select:none}div[class*=language-].line-numbers-mode .line-numbers-wrapper .line-number{position:relative;z-index:4;-webkit-user-select:none;-ms-user-select:none;user-select:none;font-size:.85em}div[class*=language-].line-numbers-mode:after{content:"";position:absolute;z-index:2;top:0;left:0;width:3.5rem;height:100%;border-radius:6px 0 0 6px;border-right:1px solid rgba(0,0,0,.66);background-color:#282c34}div[class~=language-js]:before{content:"js"}div[class~=language-ts]:before{content:"ts"}div[class~=language-html]:before{content:"html"}div[class~=language-md]:before{content:"md"}div[class~=language-vue]:before{content:"vue"}div[class~=language-css]:before{content:"css"}div[class~=language-sass]:before{content:"sass"}div[class~=language-scss]:before{content:"scss"}div[class~=language-less]:before{content:"less"}div[class~=language-stylus]:before{content:"stylus"}div[class~=language-go]:before{content:"go"}div[class~=language-java]:before{content:"java"}div[class~=language-c]:before{content:"c"}div[class~=language-sh]:before{content:"sh"}div[class~=language-yaml]:before{content:"yaml"}div[class~=language-py]:before{content:"py"}div[class~=language-docker]:before{content:"docker"}div[class~=language-dockerfile]:before{content:"dockerfile"}div[class~=language-makefile]:before{content:"makefile"}div[class~=language-javascript]:before{content:"js"}div[class~=language-typescript]:before{content:"ts"}div[class~=language-markup]:before{content:"html"}div[class~=language-markdown]:before{content:"md"}div[class~=language-json]:before{content:"json"}div[class~=language-ruby]:before{content:"rb"}div[class~=language-python]:before{content:"py"}div[class~=language-bash]:before{content:"sh"}div[class~=language-php]:before{content:"php"}.custom-block .custom-block-title{font-weight:600;margin-bottom:-.4rem}.custom-block.danger,.custom-block.tip,.custom-block.warning{padding:.1rem 1.5rem;border-left-width:.5rem;border-left-style:solid;margin:1rem 0}.custom-block.tip{background-color:#f3f5f7;border-color:#42b983}.custom-block.warning{background-color:rgba(255,229,100,.3);border-color:#e7c000;color:#6b5900}.custom-block.warning .custom-block-title{color:#b29400}.custom-block.warning a{color:#2c3e50}.custom-block.danger{background-color:#ffe6e6;border-color:#c00;color:#4d0000}.custom-block.danger .custom-block-title{color:#900}.custom-block.danger a{color:#2c3e50}.custom-block.details{display:block;position:relative;border-radius:2px;margin:1.6em 0;padding:1.6em;background-color:#eee}.custom-block.details h4{margin-top:0}.custom-block.details figure:last-child,.custom-block.details p:last-child{margin-bottom:0;padding-bottom:0}.custom-block.details summary{outline:none;cursor:pointer}.arrow{display:inline-block;width:0;height:0}.arrow.up{border-bottom:6px solid #ccc}.arrow.down,.arrow.up{border-left:4px solid transparent;border-right:4px solid transparent}.arrow.down{border-top:6px solid #ccc}.arrow.right{border-left:6px solid #ccc}.arrow.left,.arrow.right{border-top:4px solid transparent;border-bottom:4px solid transparent}.arrow.left{border-right:6px solid #ccc}.theme-default-content:not(.custom){max-width:800px;margin:0 auto;padding:2rem 2.5rem}@media (max-width:959px){.theme-default-content:not(.custom){padding:2rem}}@media (max-width:419px){.theme-default-content:not(.custom){padding:1.5rem}}.table-of-contents .badge{vertical-align:middle}body,html{padding:0;margin:0;background-color:#fff}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;color:#2c3e50}.page{padding-left:20rem}.navbar{z-index:20;right:0;height:3.6rem;background-color:#fff;box-sizing:border-box;border-bottom:1px solid #eaecef}.navbar,.sidebar-mask{position:fixed;top:0;left:0}.sidebar-mask{z-index:9;width:100vw;height:100vh;display:none}.sidebar{font-size:16px;background-color:#fff;width:20rem;position:fixed;z-index:10;margin:0;top:3.6rem;left:0;bottom:0;box-sizing:border-box;border-right:1px solid #eaecef;overflow-y:auto}.theme-default-content:not(.custom)>:first-child{margin-top:3.6rem}.theme-default-content:not(.custom) a:hover{text-decoration:underline}.theme-default-content:not(.custom) p.demo{padding:1rem 1.5rem;border:1px solid #ddd;border-radius:4px}.theme-default-content:not(.custom) img{max-width:100%}.theme-default-content.custom{padding:0;margin:0}.theme-default-content.custom img{max-width:100%}a{font-weight:500;text-decoration:none}a,p a code{color:#3eaf7c}p a code{font-weight:400}kbd{background:#eee;border:.15rem solid #ddd;border-bottom:.25rem solid #ddd;border-radius:.15rem;padding:0 .15em}blockquote{font-size:1rem;color:#999;border-left:.2rem solid #dfe2e5;margin:1rem 0;padding:.25rem 0 .25rem 1rem}blockquote>p{margin:0}ol,ul{padding-left:1.2em}strong{font-weight:600}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.25}.theme-default-content:not(.custom)>h1,.theme-default-content:not(.custom)>h2,.theme-default-content:not(.custom)>h3,.theme-default-content:not(.custom)>h4,.theme-default-content:not(.custom)>h5,.theme-default-content:not(.custom)>h6{margin-top:-3.1rem;padding-top:4.6rem;margin-bottom:0}.theme-default-content:not(.custom)>h1:first-child,.theme-default-content:not(.custom)>h2:first-child,.theme-default-content:not(.custom)>h3:first-child,.theme-default-content:not(.custom)>h4:first-child,.theme-default-content:not(.custom)>h5:first-child,.theme-default-content:not(.custom)>h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.theme-default-content:not(.custom)>h1:first-child+.custom-block,.theme-default-content:not(.custom)>h1:first-child+p,.theme-default-content:not(.custom)>h1:first-child+pre,.theme-default-content:not(.custom)>h2:first-child+.custom-block,.theme-default-content:not(.custom)>h2:first-child+p,.theme-default-content:not(.custom)>h2:first-child+pre,.theme-default-content:not(.custom)>h3:first-child+.custom-block,.theme-default-content:not(.custom)>h3:first-child+p,.theme-default-content:not(.custom)>h3:first-child+pre,.theme-default-content:not(.custom)>h4:first-child+.custom-block,.theme-default-content:not(.custom)>h4:first-child+p,.theme-default-content:not(.custom)>h4:first-child+pre,.theme-default-content:not(.custom)>h5:first-child+.custom-block,.theme-default-content:not(.custom)>h5:first-child+p,.theme-default-content:not(.custom)>h5:first-child+pre,.theme-default-content:not(.custom)>h6:first-child+.custom-block,.theme-default-content:not(.custom)>h6:first-child+p,.theme-default-content:not(.custom)>h6:first-child+pre{margin-top:2rem}h1:hover .header-anchor,h2:hover .header-anchor,h3:hover .header-anchor,h4:hover .header-anchor,h5:hover .header-anchor,h6:hover .header-anchor{opacity:1}h1{font-size:2.2rem}h2{font-size:1.65rem;padding-bottom:.3rem;border-bottom:1px solid #eaecef}h3{font-size:1.35rem}a.header-anchor{font-size:.85em;float:left;margin-left:-.87em;padding-right:.23em;margin-top:.125em;opacity:0}a.header-anchor:hover{text-decoration:none}.line-number,code,kbd{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}ol,p,ul{line-height:1.7}hr{border:0;border-top:1px solid #eaecef}table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}tr{border-top:1px solid #dfe2e5}tr:nth-child(2n){background-color:#f6f8fa}td,th{border:1px solid #dfe2e5;padding:.6em 1em}.theme-container.sidebar-open .sidebar-mask{display:block}.theme-container.no-navbar .theme-default-content:not(.custom)>h1,.theme-container.no-navbar h2,.theme-container.no-navbar h3,.theme-container.no-navbar h4,.theme-container.no-navbar h5,.theme-container.no-navbar h6{margin-top:1.5rem;padding-top:0}.theme-container.no-navbar .sidebar{top:0}@media (min-width:720px){.theme-container.no-sidebar .sidebar{display:none}.theme-container.no-sidebar .page{padding-left:0}}@media (max-width:959px){.sidebar{font-size:15px;width:16.4rem}.page{padding-left:16.4rem}}@media (max-width:719px){.sidebar{top:0;padding-top:3.6rem;transform:translateX(-100%);transition:transform .2s ease}.page{padding-left:0}.theme-container.sidebar-open .sidebar{transform:translateX(0)}.theme-container.no-navbar .sidebar{padding-top:0}}@media (max-width:419px){h1{font-size:1.9rem}.theme-default-content div[class*=language-]{margin:.85rem -1.5rem;border-radius:0}}h1{font-size:2.5rem}h2{font-size:1.9rem}h3{font-size:1.5rem}h4{font-size:1.2rem}.text-center{text-align:center}.nowrap{white-space:nowrap}.img{height:150px;width:150px}.img-small{height:$qcode-width;width:$qcode-width}.border{border:1px solid #eaecef;padding:5px;margin-top:1rem;border-radius:5px}.shadow{box-shadow:0 .125rem 1rem rgba(0,0,0,.1)!important}.border-shadow{border:1px solid #eaecef;padding:5px;margin-top:1rem;border-radius:5px;transition:box-shadow .3s ease}.border-shadow:hover{box-shadow:0 .125rem 1rem rgba(0,0,0,.1)!important}.danger{color:red}.contains-task-list LI{list-style-type:none}.badge[data-v-15b7b770]{display:inline-block;font-size:14px;height:18px;line-height:18px;border-radius:3px;padding:0 6px;color:#fff}.badge.green[data-v-15b7b770],.badge.tip[data-v-15b7b770],.badge[data-v-15b7b770]{background-color:#42b983}.badge.error[data-v-15b7b770]{background-color:#da5961}.badge.warn[data-v-15b7b770],.badge.warning[data-v-15b7b770],.badge.yellow[data-v-15b7b770]{background-color:#e7c000}.badge+.badge[data-v-15b7b770]{margin-left:5px}
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{274:function(t,s,n){"use strict";n.r(s);var r=n(14),e=Object(r.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"android-安卓端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#android-安卓端"}},[this._v("#")]),this._v(" Android 安卓端")])])}),[],!1,null,null,null);s.default=e.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{281:function(t,s,e){"use strict";e.r(s);var n=e(14),r=Object(n.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"服务端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#服务端"}},[this._v("#")]),this._v(" 服务端")])])}),[],!1,null,null,null);s.default=r.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{279:function(t,s,e){"use strict";e.r(s);var n=e(14),r=Object(n.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"产品设计"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#产品设计"}},[this._v("#")]),this._v(" 产品设计")])])}),[],!1,null,null,null);s.default=r.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{280:function(t,v,_){"use strict";_.r(v);var r=_(14),e=Object(r.a)({},(function(){var t=this,v=t.$createElement,_=t._self._c||v;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"前端-frontend"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#前端-frontend"}},[t._v("#")]),t._v(" 前端 Frontend")]),t._v(" "),_("h2",{attrs:{id:"能力输出"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#能力输出"}},[t._v("#")]),t._v(" 能力输出")]),t._v(" "),_("ul",[_("li",[_("p",[t._v("支持全平台("),_("strong",[t._v("Windows")]),t._v("、"),_("strong",[t._v("Mac")]),t._v("、"),_("strong",[t._v("Linux")]),t._v(")的桌面客户端,以 "),_("code",[t._v("Windows")]),t._v(" 环境为例,客户端程序以 "),_("code",[t._v("exe")]),t._v(" 格式的可执行文件形式存在,不需要依赖浏览器运行,例如 QQ、Microsoft Office 等一系列可直接运行的桌面客户端")])]),t._v(" "),_("li",[_("p",[t._v("微信小程序")])]),t._v(" "),_("li",[_("p",[t._v("各类型网站,包含但不限于以下类型")]),t._v(" "),_("ul",[_("li",[t._v("管理平台")]),t._v(" "),_("li",[t._v("CMS 站点")]),t._v(" "),_("li",[t._v("企业门户综合网站")]),t._v(" "),_("li",[t._v("服务类型网站")]),t._v(" "),_("li",[t._v("设备嵌入网页")])]),t._v(" "),_("p",[t._v("网站可根据需求针对 "),_("code",[t._v("desktop")]),t._v("、"),_("code",[t._v("tablet")]),t._v("、"),_("code",[t._v("mobile")]),t._v(" 等不同尺寸设备进行适配")])])]),t._v(" "),_("h2",{attrs:{id:"项目构建说明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#项目构建说明"}},[t._v("#")]),t._v(" 项目构建说明")]),t._v(" "),_("h3",{attrs:{id:"构建网站"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#构建网站"}},[t._v("#")]),t._v(" 构建网站")]),t._v(" "),_("p",[t._v("各类型网站、设备嵌入式网页等")]),t._v(" "),_("p",[_("strong",[t._v("生产环境")])]),t._v(" "),_("p",[t._v("生产环境内容更新须严格按照计划安排执行")]),t._v(" "),_("p",[t._v("执行构建流程")]),t._v(" "),_("ol",[_("li",[t._v("测试小组确认当前版本已通过测试")]),t._v(" "),_("li",[t._v("项目负责人根据计划决定更新时间")]),t._v(" "),_("li",[t._v("执行构建前自动化测试\n"),_("ul",{staticClass:"contains-task-list"},[_("li",{staticClass:"task-list-item"},[_("input",{staticClass:"task-list-item-checkbox",attrs:{checked:"",disabled:"",type:"checkbox"}}),t._v(" ESLint 语法检查扫描")]),t._v(" "),_("li",{staticClass:"task-list-item"},[_("input",{staticClass:"task-list-item-checkbox",attrs:{disabled:"",type:"checkbox"}}),t._v(" 单元测试")]),t._v(" "),_("li",{staticClass:"task-list-item"},[_("input",{staticClass:"task-list-item-checkbox",attrs:{disabled:"",type:"checkbox"}}),t._v(" 端对端测试")])])]),t._v(" "),_("li",[t._v("执行项目构建")]),t._v(" "),_("li",[t._v("提交构建结果于运维人员并正式更新至生产环境")])]),t._v(" "),_("p",[_("strong",[t._v("测试环境")])]),t._v(" "),_("p",[t._v("持续集成平台根据配置自动进行构建,用于测试小组测试功能完成情况")]),t._v(" "),_("div",{staticClass:"custom-block tip"},[_("p",{staticClass:"custom-block-title"},[t._v("构建频率")]),t._v(" "),_("p",[t._v("在所有使用自动持续集成的项目中,构建频率均为每天中午及凌晨两个时段")]),t._v(" "),_("ul",[_("li",[t._v("中午自动构建保证下午可以测试新的内容")]),t._v(" "),_("li",[t._v("凌晨自动构建保证第二天早晨可以测试新的内容")])])]),t._v(" "),_("h4",{attrs:{id:"开发环境"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#开发环境"}},[t._v("#")]),t._v(" 开发环境")]),t._v(" "),_("p",[t._v("开发环境使用本地环境进行构建及运行项目")]),t._v(" "),_("h3",{attrs:{id:"构建微信小程序"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#构建微信小程序"}},[t._v("#")]),t._v(" 构建微信小程序")]),t._v(" "),_("p",[t._v("微信小程序各版本发布流程说明")]),t._v(" "),_("p",[_("strong",[t._v("线上版")])]),t._v(" "),_("ol",[_("li",[t._v("测试小组确认当前版本已通过测试")]),t._v(" "),_("li",[t._v("项目负责人根据计划决定更新时间")]),t._v(" "),_("li",[t._v("设置环境参数为线上版")]),t._v(" "),_("li",[t._v("上传代码至微信小程序平台")]),t._v(" "),_("li",[t._v("进入微信公众平台,在版本管理中将当前 "),_("strong",[t._v("体验版")]),t._v(" 提交为 "),_("strong",[t._v("线上版")])]),t._v(" "),_("li",[t._v("等待微信平台审核")]),t._v(" "),_("li",[t._v("微信平台审核通过,并会在微信中通知相关人员")]),t._v(" "),_("li",[t._v("进入微信公众平台,将审核通过的版本,发布为 "),_("strong",[t._v("线上版")])])]),t._v(" "),_("p",[_("strong",[t._v("预览版")])]),t._v(" "),_("ol",[_("li",[t._v("设置环境参数为开发版")]),t._v(" "),_("li",[t._v("将开发完成的代码上传至微信小程序平台")]),t._v(" "),_("li",[t._v("通过扫描预览版二维码进行试用")])]),t._v(" "),_("h2",{attrs:{id:"项目环境要求"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#项目环境要求"}},[t._v("#")]),t._v(" 项目环境要求")]),t._v(" "),_("p",[_("strong",[t._v("浏览器及版本要求")])]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[_("img",{attrs:{src:"/frontend/browser/edge.png",alt:"IE / Edge",width:"48",height:"48"}}),_("br"),t._v("IE / Edge")]),t._v(" "),_("th",[_("img",{attrs:{src:"/frontend/browser/firefox.png",alt:"Firefox",width:"48",height:"48"}}),_("br"),t._v("Firefox")]),t._v(" "),_("th",[_("img",{attrs:{src:"/frontend/browser/chrome.png",alt:"Chrome",width:"48",height:"48"}}),_("br"),t._v("Chrome")]),t._v(" "),_("th",[_("img",{attrs:{src:"/frontend/browser/safari.png",alt:"Safari",width:"48",height:"48"}}),_("br"),t._v("Safari")]),t._v(" "),_("th",[_("img",{attrs:{src:"/frontend/browser/opera.png",alt:"Opera",width:"48",height:"48"}}),_("br"),t._v("Opera")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("IE10, IE11, Edge")]),t._v(" "),_("td",[t._v("Firefox 18+")]),t._v(" "),_("td",[t._v("Chrome 49+")]),t._v(" "),_("td",[t._v("Safari 10+")]),t._v(" "),_("td",[t._v("Opera 36+")])])])]),t._v(" "),_("blockquote",[_("p",[t._v("后续的技术版本升级后,仅对 IE11 进行兼容性支持")])]),t._v(" "),_("p",[_("strong",[t._v("屏幕分辨率要求")])]),t._v(" "),_("p",[_("code",[t._v("1366 X 768")]),t._v(" 及以上")]),t._v(" "),_("p",[_("strong",[t._v("项目部署需求")])]),t._v(" "),_("ul",[_("li",[t._v("nginx(gzip)")])]),t._v(" "),_("p",[_("br"),_("br")]),t._v(" "),_("h2",{attrs:{id:"项目技术组成"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#项目技术组成"}},[t._v("#")]),t._v(" 项目技术组成")]),t._v(" "),_("p",[t._v("管理平台")]),t._v(" "),_("ul",[_("li",[t._v("vue2")]),t._v(" "),_("li",[t._v("vue-router")]),t._v(" "),_("li",[t._v("vuex")]),t._v(" "),_("li",[t._v("axios")]),t._v(" "),_("li",[t._v("element-ui")])]),t._v(" "),_("p",[t._v("网页开放平台(专项提供移动端 WebView 嵌入、独立页提供)")]),t._v(" "),_("ul",[_("li",[t._v("vue2")]),t._v(" "),_("li",[t._v("vue-router")]),t._v(" "),_("li",[t._v("axios")]),t._v(" "),_("li",[t._v("bootstrap 4(仅 CSS)")])]),t._v(" "),_("p",[t._v("单元测试")]),t._v(" "),_("ul",[_("li",[t._v("vue-test-utils")]),t._v(" "),_("li",[t._v("mocha")]),t._v(" "),_("li",[t._v("cypress")]),t._v(" "),_("li",[t._v("chai")])]),t._v(" "),_("p",[t._v("小程序")]),t._v(" "),_("ul",[_("li",[t._v("微信小程序原生方式")])]),t._v(" "),_("p",[_("br"),_("br")]),t._v(" "),_("h2",{attrs:{id:"代码版本控制位置"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#代码版本控制位置"}},[t._v("#")]),t._v(" 代码版本控制位置")]),t._v(" "),_("p",[t._v("前端团队代码使用位置:"),_("a",{attrs:{href:"http://192.168.100.254:3000/frontend",target:"_blank",rel:"noopener noreferrer"}},[t._v("frontend"),_("OutboundLink")],1)]),t._v(" "),_("p",[t._v("以下为前端团队目前完成的项目")]),t._v(" "),_("h3",{attrs:{id:"网站、管理平台"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#网站、管理平台"}},[t._v("#")]),t._v(" 网站、管理平台")]),t._v(" "),_("ul",[_("li",[_("a",{attrs:{href:"http://192.168.100.254:3000/zenghaili/vegetarian-plus",target:"_blank",rel:"noopener noreferrer"}},[t._v("素+管理平台"),_("OutboundLink")],1)]),t._v(" "),_("li",[_("a",{attrs:{href:"http://192.168.100.254:3000/zenghaili/admin-platform",target:"_blank",rel:"noopener noreferrer"}},[t._v("系统管理后台"),_("OutboundLink")],1)])]),t._v(" "),_("h3",{attrs:{id:"小程序"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#小程序"}},[t._v("#")]),t._v(" 小程序")]),t._v(" "),_("ul",[_("li",[_("a",{attrs:{href:"http://192.168.100.254:3000/zenghaili/exam",target:"_blank",rel:"noopener noreferrer"}},[t._v("便捷答题"),_("OutboundLink")],1)]),t._v(" "),_("li",[t._v("票选小助手")]),t._v(" "),_("li",[t._v("海鲜干货人家")]),t._v(" "),_("li",[t._v("我的旺铺")])])])}),[],!1,null,null,null);v.default=e.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{293:function(t,s,a){"use strict";a.r(s);var n=a(14),_=Object(n.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"业务组件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#业务组件"}},[t._v("#")]),t._v(" 业务组件")]),t._v(" "),a("p",[t._v("整合了部分业务功能或特殊定制化需求的组件")]),t._v(" "),a("h2",{attrs:{id:"数据导入导出"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#数据导入导出"}},[t._v("#")]),t._v(" 数据导入导出")]),t._v(" "),a("p",[t._v("公用数据导入导出组件,功能包含有数据介质模板下载(空或部分业务数据)、数据介质模板导出以及数据介质文件导入(上传)")]),t._v(" "),a("img",{staticClass:"border-shadow",attrs:{src:"/frontend/plugins/import-and-export.png"}}),t._v(" "),a("p",[t._v("使用流程")]),t._v(" "),a("ol",[a("li",[t._v("手机短信验证身份")]),t._v(" "),a("li",[t._v("下载、导出数据介质模板文件(非必须)")]),t._v(" "),a("li",[t._v("选择并上传已填写/修改的数据介质文件")]),t._v(" "),a("li",[t._v("预览文件内容")]),t._v(" "),a("li",[t._v("执行数据介质文件上传")]),t._v(" "),a("li",[t._v("上传成功/失败详细报告")])]),t._v(" "),a("p",[t._v("目前已配置并使用在素+管理平台的以下业务场景中")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("业务模块")]),t._v(" "),a("th",[t._v("编码")]),t._v(" "),a("th",[t._v("导入")]),t._v(" "),a("th",[t._v("导出")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("通讯录")]),t._v(" "),a("td",[t._v("ADDRESS_BOOK")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("客户档案")]),t._v(" "),a("td",[t._v("WORKBENCH_CUSTOMER_FILE")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("组织架构")]),t._v(" "),a("td",[t._v("ENTERPRISE_ORGANIZATION")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("❌")])]),t._v(" "),a("tr",[a("td",[t._v("常购产品")]),t._v(" "),a("td",[t._v("WORKBENCH_SALE_PRICE_CUSTOMER_PRICE")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("存货档案")]),t._v(" "),a("td",[t._v("WORKBENCH_STOCK_FILE")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("期初数据")]),t._v(" "),a("td",[t._v("WORKBENCH_WAREHOUSE_BASE_INITIAL_DATA")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("❌")])]),t._v(" "),a("tr",[a("td",[t._v("销售发货数据")]),t._v(" "),a("td",[t._v("WORKBENCH_SALE_SHIP")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("薪资档案")]),t._v(" "),a("td",[t._v("WORKBENCH_SALARY_MANAGE_FILE")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("产品价格")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_CONFIG_PRODUCT-PRICE")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("❌")])]),t._v(" "),a("tr",[a("td",[t._v("年度业绩目标")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_MANAGE_YEAR-PERFORMANCE")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("同期业绩目标")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_MANAGE_SAME-PERIOD-PERFORMANCE")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("利润率")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_MANAGE_PROFIT-MARGIN")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("费用率")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_MANAGE_EXPENSE-RATIO")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("月度计划")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_PLAN_MONTH")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("业绩源数据")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_PERFORMANCE_SOURCE")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("个人业绩档案")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_PERFORMANCE_PROFILE")]),t._v(" "),a("td",[t._v("❌")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("个人利润档案")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_PERFORMANCE_PROFIT")]),t._v(" "),a("td",[t._v("❌")]),t._v(" "),a("td",[t._v("✔️")])]),t._v(" "),a("tr",[a("td",[t._v("销售费用登记")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_COST_SALES")]),t._v(" "),a("td",[t._v("✔️")]),t._v(" "),a("td",[t._v("❌")])]),t._v(" "),a("tr",[a("td",[t._v("费用统计")]),t._v(" "),a("td",[t._v("WORKBENCH_TARGET-PLAN_COST_COUNT")]),t._v(" "),a("td",[t._v("❌")]),t._v(" "),a("td",[t._v("✔️")])])])]),t._v(" "),a("h2",{attrs:{id:"操作权限应用"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#操作权限应用"}},[t._v("#")]),t._v(" 操作权限应用")]),t._v(" "),a("p",[t._v("适配根据对用户或角色指定的权限设置(例:增加、删除、导出等),对界面元素的权限控制应用(例:按钮、链接等),自动根据配置内容决定该元素是否出现于当前界面")]),t._v(" "),a("blockquote",[a("p",[t._v("如果用户角色为主管理员,则所有功能始终可用,不受该操作权限控制")])]),t._v(" "),a("p",[t._v("完整权限字段如下:")]),t._v(" "),a("div",{staticClass:"language-json line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-json"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n add"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n delete"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n addCustom"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n check"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n edit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n export"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n import"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n addGroup"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n deleteGroup"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n editGroup"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n column"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n addCustom"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n check"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n edit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n basic"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n check"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n edit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n others"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n check"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n edit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n picture"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n check"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n edit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n price"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n check"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n edit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n contactWay"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n check"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n edit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n credit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n check"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n edit"),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("1")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n")])]),t._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[t._v("1")]),a("br"),a("span",{staticClass:"line-number"},[t._v("2")]),a("br"),a("span",{staticClass:"line-number"},[t._v("3")]),a("br"),a("span",{staticClass:"line-number"},[t._v("4")]),a("br"),a("span",{staticClass:"line-number"},[t._v("5")]),a("br"),a("span",{staticClass:"line-number"},[t._v("6")]),a("br"),a("span",{staticClass:"line-number"},[t._v("7")]),a("br"),a("span",{staticClass:"line-number"},[t._v("8")]),a("br"),a("span",{staticClass:"line-number"},[t._v("9")]),a("br"),a("span",{staticClass:"line-number"},[t._v("10")]),a("br"),a("span",{staticClass:"line-number"},[t._v("11")]),a("br"),a("span",{staticClass:"line-number"},[t._v("12")]),a("br"),a("span",{staticClass:"line-number"},[t._v("13")]),a("br"),a("span",{staticClass:"line-number"},[t._v("14")]),a("br"),a("span",{staticClass:"line-number"},[t._v("15")]),a("br"),a("span",{staticClass:"line-number"},[t._v("16")]),a("br"),a("span",{staticClass:"line-number"},[t._v("17")]),a("br"),a("span",{staticClass:"line-number"},[t._v("18")]),a("br"),a("span",{staticClass:"line-number"},[t._v("19")]),a("br"),a("span",{staticClass:"line-number"},[t._v("20")]),a("br"),a("span",{staticClass:"line-number"},[t._v("21")]),a("br"),a("span",{staticClass:"line-number"},[t._v("22")]),a("br"),a("span",{staticClass:"line-number"},[t._v("23")]),a("br"),a("span",{staticClass:"line-number"},[t._v("24")]),a("br"),a("span",{staticClass:"line-number"},[t._v("25")]),a("br"),a("span",{staticClass:"line-number"},[t._v("26")]),a("br"),a("span",{staticClass:"line-number"},[t._v("27")]),a("br"),a("span",{staticClass:"line-number"},[t._v("28")]),a("br"),a("span",{staticClass:"line-number"},[t._v("29")]),a("br"),a("span",{staticClass:"line-number"},[t._v("30")]),a("br"),a("span",{staticClass:"line-number"},[t._v("31")]),a("br"),a("span",{staticClass:"line-number"},[t._v("32")]),a("br"),a("span",{staticClass:"line-number"},[t._v("33")]),a("br"),a("span",{staticClass:"line-number"},[t._v("34")]),a("br"),a("span",{staticClass:"line-number"},[t._v("35")]),a("br"),a("span",{staticClass:"line-number"},[t._v("36")]),a("br"),a("span",{staticClass:"line-number"},[t._v("37")]),a("br"),a("span",{staticClass:"line-number"},[t._v("38")]),a("br"),a("span",{staticClass:"line-number"},[t._v("39")]),a("br"),a("span",{staticClass:"line-number"},[t._v("40")]),a("br"),a("span",{staticClass:"line-number"},[t._v("41")]),a("br"),a("span",{staticClass:"line-number"},[t._v("42")]),a("br")])]),a("h2",{attrs:{id:"选择器"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#选择器"}},[t._v("#")]),t._v(" 选择器")]),t._v(" "),a("p",[t._v("用于挑选数据的选择器")]),t._v(" "),a("h3",{attrs:{id:"存货选择器"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#存货选择器"}},[t._v("#")]),t._v(" 存货选择器")]),t._v(" "),a("img",{staticClass:"border-shadow",attrs:{src:"/frontend/plugins/product.png"}})])}),[],!1,null,null,null);s.default=_.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{284:function(s,t,a){"use strict";a.r(t);var n=a(14),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"系统框架"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#系统框架"}},[s._v("#")]),s._v(" 系统框架")]),s._v(" "),a("p",[s._v("管理平台项目框架目标使用规范说明及部分系统 API 描述,目前仅适用于 "),a("code",[s._v("素+管理平台")]),s._v(" 项目")]),s._v(" "),a("h2",{attrs:{id:"目录结构描述"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#目录结构描述"}},[s._v("#")]),s._v(" 目录结构描述")]),s._v(" "),a("p",[s._v("项目结构目录树如下")]),s._v(" "),a("div",{staticClass:"language- line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("project/\n│ .browserslistrc 浏览器版本配置\n│ .editorconfig 编辑器配置\n│ .env.development 开发环境下使用的环境变量配置文件\n│ .env.production 生产环境下使用的环境变量配置文件\n│ .env.test 单元测试环境下使用的环境变量配置文件\n│ .eslintrc.js ESLint 配置\n│ .gitignore 设置 git 忽略上传的内容\n│ babel.config.js 项目脚本兼容版本设置\n│ cypress.json cypress 配置文件\n│ Dockerfile docker 配置文件\n│ package.json 项目总体描述及依赖描述\n│ postcss.config.js 预编译样式\n│ vue.config.js vue-cli 脚手架配置及 webpack 配置\n│ \n├─public 静态资源文件目录\n│ favicon.ico 网站图标\n│ index.html 网站实际入口\n│ \n├─src\n│ │ main.js 项目主入口\n│ │ \n│ ├─assets 项目相关资产 / 附件,通常用于存放图片资源\n│ │ \n│ ├─business 业务处理逻辑、框架相关 API\n│ │ \n│ ├─components 自定义业务组件\n│ │ \n│ ├─config 项目相关配置\n│ │ constants.js 常量配置\n│ │ directives.js 自定义指令集配置\n│ │ element-plugins.js element-ui 插件配置\n│ │ menu-path.js 系统菜单及路由匹配关系\n│ │ plugins.js 项目中除 element-ui 外的插件引用配置\n│ │ polyfill.js 自定义脚本兼容\n│ │ velidateData.js 自定义表单校验规则\n│ │ \n│ ├─layouts 整体布局结构\n│ │ \n│ ├─mixins 公共抽象模型\n│ │ \n│ ├─plugins 系统公共插件\n│ │ \n│ ├─router vue-router 路由配置\n│ │ \n│ ├─store Vuex 与本地缓存的相关处理\n│ │ \n│ ├─style 自定义样式文件收纳\n│ │ \n│ ├─utils 工具类\n│ │ \n│ └─views 系统业务功能页面\n│ │ \n│ ├─alonePage 独立页\n│ │ \n│ ├─demo 框架组件、API 实例\n│ │ \n│ └─inner 移动端内嵌页\n│ \n└─tests\n ├─e2e 端对端测试\n │ \n ├─sample 部分数据样例\n │ \n └─unit 单元测试\n .eslintrc.js 针对单元测试的 eslint 配置\n setup.js 单元测试的前置处理\n\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br"),a("span",{staticClass:"line-number"},[s._v("52")]),a("br"),a("span",{staticClass:"line-number"},[s._v("53")]),a("br"),a("span",{staticClass:"line-number"},[s._v("54")]),a("br"),a("span",{staticClass:"line-number"},[s._v("55")]),a("br"),a("span",{staticClass:"line-number"},[s._v("56")]),a("br"),a("span",{staticClass:"line-number"},[s._v("57")]),a("br"),a("span",{staticClass:"line-number"},[s._v("58")]),a("br"),a("span",{staticClass:"line-number"},[s._v("59")]),a("br"),a("span",{staticClass:"line-number"},[s._v("60")]),a("br"),a("span",{staticClass:"line-number"},[s._v("61")]),a("br"),a("span",{staticClass:"line-number"},[s._v("62")]),a("br"),a("span",{staticClass:"line-number"},[s._v("63")]),a("br"),a("span",{staticClass:"line-number"},[s._v("64")]),a("br"),a("span",{staticClass:"line-number"},[s._v("65")]),a("br"),a("span",{staticClass:"line-number"},[s._v("66")]),a("br"),a("span",{staticClass:"line-number"},[s._v("67")]),a("br"),a("span",{staticClass:"line-number"},[s._v("68")]),a("br")])]),a("p",[s._v("以上项目结构将为作为后续所有项目的基础结构")]),s._v(" "),a("h2",{attrs:{id:"api"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api"}},[s._v("#")]),s._v(" API")]),s._v(" "),a("h3",{attrs:{id:"http-url-data-options"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#http-url-data-options"}},[s._v("#")]),s._v(" $http(url, [data], [options])")]),s._v(" "),a("p",[s._v("http 数据请求统一入口")]),s._v(" "),a("ul",[a("li",[s._v("url")])]),s._v(" "),a("p",[s._v("目标请求地址,地址分为两种类型:"),a("code",[s._v("当前域地址")]),s._v(" 和 "),a("code",[s._v("其他域地址")])]),s._v(" "),a("ul",[a("li",[s._v("data")])]),s._v(" "),a("p",[s._v("提交的数据参数")]),s._v(" "),a("ul",[a("li",[s._v("options")])]),s._v(" "),a("p",[s._v("配置参数,主要用于特殊情况下需要覆盖 "),a("strong",[s._v("axios")]),s._v(" 原生配置的情况,多数情况下不需要进行设置")]),s._v(" "),a("p",[a("strong",[s._v("return")])]),s._v(" "),a("p",[s._v("Promise 接口对象")]),s._v(" "),a("hr"),s._v(" "),a("p",[s._v("常见使用场景")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//访问当前域服务")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("this")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("$http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/user/list'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" groupId"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("then")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("resp")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("catch")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("resp")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("//访问其他域服务")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("this")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("$http")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'http://aaa.com/user/list'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" groupId"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("then")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("resp")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("catch")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token parameter"}},[s._v("resp")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br")])]),a("h2",{attrs:{id:"自定义指令集-directive"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#自定义指令集-directive"}},[s._v("#")]),s._v(" 自定义指令集 directive")]),s._v(" "),a("h3",{attrs:{id:"v-date"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v-date"}},[s._v("#")]),s._v(" v-date")]),s._v(" "),a("p",[s._v("日期格式化,将元素的内容格式化为指定的日期格式")]),s._v(" "),a("h4",{attrs:{id:"参数"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#参数"}},[s._v("#")]),s._v(" 参数")]),s._v(" "),a("ul",[a("li",[s._v("日期格式 (string)")])]),s._v(" "),a("p",[s._v("指定日期格式,例如:'yyyy-MM-dd hh:mm:ss',若不指定格式则默认使用格式:'yyyy-MM-dd'")]),s._v(" "),a("h4",{attrs:{id:"使用方式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用方式"}},[s._v("#")]),s._v(" 使用方式")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 指定自定义格式 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-date")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("'")]),s._v("yyyy-MM-dd hh:mm:ss'"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("1559631857305"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 不指定格式,使用默认格式 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-date")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("1559631857305"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br")])]),a("h4",{attrs:{id:"实例"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#实例"}},[s._v("#")]),s._v(" 实例")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-date")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("'")]),s._v("yyyy-MM-dd hh:mm:ss'"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("1559631857305"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:2019-06-04 15:04:17 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-date")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("Tue Jun 04 2019 15:33:06 GMT+0800 (中国标准时间)"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:2019-06-04 --\x3e")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br")])]),a("h3",{attrs:{id:"v-number"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#v-number"}},[s._v("#")]),s._v(" v-number")]),s._v(" "),a("p",[s._v("数字类型格式化(保留小数点位数),将元素内容格式化为指定位数小数点数字,位数不足则使用 0 补充,推荐用于数据统计,金额计算、展示等场景")]),s._v(" "),a("h4",{attrs:{id:"参数-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#参数-2"}},[s._v("#")]),s._v(" 参数")]),s._v(" "),a("ul",[a("li",[s._v("保留小数点位数 (number)")])]),s._v(" "),a("p",[s._v("指定数字保留小数点位数,默认为:2")]),s._v(" "),a("h4",{attrs:{id:"使用方式-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用方式-2"}},[s._v("#")]),s._v(" 使用方式")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 指定自定义保留位数 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),s._v("4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450.20"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 不指定格式,使用默认保留位数 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br")])]),a("h4",{attrs:{id:"实例-2"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#实例-2"}},[s._v("#")]),s._v(" 实例")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),s._v("4"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450.20"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:3450.2000 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:3450.00 --\x3e")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("span")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v("v-number")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("3450.1234"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("span")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("\x3c!-- 结果:3450.12 --\x3e")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br")])]),a("h2",{attrs:{id:"表单校验规则"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#表单校验规则"}},[s._v("#")]),s._v(" 表单校验规则")]),s._v(" "),a("h4",{attrs:{id:"使用方式-3"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#使用方式-3"}},[s._v("#")]),s._v(" 使用方式")]),s._v(" "),a("p",[s._v("Form 组件通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名")]),s._v(" "),a("div",{staticClass:"language-vue line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-vue"}},[a("code",[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("el-form")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[s._v(":rules")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')]),s._v("rules"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n ...\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("el-form")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("<")]),s._v("script")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),a("span",{pre:!0,attrs:{class:"token script"}},[a("span",{pre:!0,attrs:{class:"token language-javascript"}},[s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("export")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("default")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("data")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("return")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n ruleForm"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n name"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("''")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n rules"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n name"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" required"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token boolean"}},[s._v("true")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" message"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'请输入活动名称'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" trigger"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'blur'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" min"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" max"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("5")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" message"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'长度在 3 到 5 个字符'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" trigger"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'blur'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("</")]),s._v("script")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(">")])]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br")])]),a("h4",{attrs:{id:"自定义验证函数"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#自定义验证函数"}},[s._v("#")]),s._v(" 自定义验证函数")]),s._v(" "),a("ul",[a("li",[a("code",[s._v("checkNumOrLetter")]),s._v(" 验证只能包含数字和字母")]),s._v(" "),a("li",[a("code",[s._v("checkNum")]),s._v(" 验证只能为整数")]),s._v(" "),a("li",[a("code",[s._v("validateNumAndFloat")]),s._v(" 验证必须是整数或小数")]),s._v(" "),a("li",[a("code",[s._v("velidateSpecialNUm")]),s._v(" 验证只能是范围0.0001 ~ 999999999.9999的数字")]),s._v(" "),a("li",[a("code",[s._v("fourDigitsAfter")]),s._v(" 验证只能是小数点后4位的浮点数")]),s._v(" "),a("li",[a("code",[s._v("checkPhoneNum")]),s._v(" 验证只能是电话号码")])])])}),[],!1,null,null,null);t.default=e.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{282:function(s,t,a){"use strict";a.r(t);var n=a(14),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"数据交互格式标准"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#数据交互格式标准"}},[s._v("#")]),s._v(" 数据交互格式标准")]),s._v(" "),a("p",[s._v("前后端数据交互标准格式详细说明")]),s._v(" "),a("h2",{attrs:{id:"数据格式样例"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#数据格式样例"}},[s._v("#")]),s._v(" 数据格式样例")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[s._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[s._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n * 请求结果\n * -1: 业务检查不通过\n * 0: 请求成功,数据正常返回\n * 2: token 失效,主要用于用户登录超时、特定情况下主动清除用户登录状态\n * 例如用户权限发生变化等场景\n */")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v('/**\n * 请求异常的提示信息\n * 当数据请求结果为 0 时,本节点令需固定输出 "ok" 即可\n * 当数据请求结果为 -1 时,必须输出错误相关的描述内容\n * \n * 业务检查不通过示例:\n * {\n * "code": -1,\n * "msg": "姓名不能超过 20 个字符"\n * }\n * \n * 请求成功的示例:\n * {\n * "code": 0,\n * "msg": "ok",\n * "data": {\n * 业务数据\n * }\n * }\n */')]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"msg"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n * 请求后返回的数据内容都应在 data 节点下输出\n */")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n * 常规单一数据节点\n */")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"attr"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" value"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n * 对象数据节点\n */")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"user"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"zhangsan"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"age"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("18")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" \n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/** \n * 列表型数据节点\n */")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"users"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" object "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n * 数据表格结果输出的数据节点\n */")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"gridResult"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 当前页码")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"pageNumber"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 总记录数")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"totalRow"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 数据列表内容")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"lists"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n object "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 数据模型")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("/**\n * 用户登录、更新/刷新 token 等登录授权操作后输出的数据节点\n */")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"access"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"accessToken"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"expiresIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br"),a("span",{staticClass:"line-number"},[s._v("33")]),a("br"),a("span",{staticClass:"line-number"},[s._v("34")]),a("br"),a("span",{staticClass:"line-number"},[s._v("35")]),a("br"),a("span",{staticClass:"line-number"},[s._v("36")]),a("br"),a("span",{staticClass:"line-number"},[s._v("37")]),a("br"),a("span",{staticClass:"line-number"},[s._v("38")]),a("br"),a("span",{staticClass:"line-number"},[s._v("39")]),a("br"),a("span",{staticClass:"line-number"},[s._v("40")]),a("br"),a("span",{staticClass:"line-number"},[s._v("41")]),a("br"),a("span",{staticClass:"line-number"},[s._v("42")]),a("br"),a("span",{staticClass:"line-number"},[s._v("43")]),a("br"),a("span",{staticClass:"line-number"},[s._v("44")]),a("br"),a("span",{staticClass:"line-number"},[s._v("45")]),a("br"),a("span",{staticClass:"line-number"},[s._v("46")]),a("br"),a("span",{staticClass:"line-number"},[s._v("47")]),a("br"),a("span",{staticClass:"line-number"},[s._v("48")]),a("br"),a("span",{staticClass:"line-number"},[s._v("49")]),a("br"),a("span",{staticClass:"line-number"},[s._v("50")]),a("br"),a("span",{staticClass:"line-number"},[s._v("51")]),a("br"),a("span",{staticClass:"line-number"},[s._v("52")]),a("br"),a("span",{staticClass:"line-number"},[s._v("53")]),a("br"),a("span",{staticClass:"line-number"},[s._v("54")]),a("br"),a("span",{staticClass:"line-number"},[s._v("55")]),a("br"),a("span",{staticClass:"line-number"},[s._v("56")]),a("br"),a("span",{staticClass:"line-number"},[s._v("57")]),a("br"),a("span",{staticClass:"line-number"},[s._v("58")]),a("br"),a("span",{staticClass:"line-number"},[s._v("59")]),a("br"),a("span",{staticClass:"line-number"},[s._v("60")]),a("br"),a("span",{staticClass:"line-number"},[s._v("61")]),a("br"),a("span",{staticClass:"line-number"},[s._v("62")]),a("br"),a("span",{staticClass:"line-number"},[s._v("63")]),a("br"),a("span",{staticClass:"line-number"},[s._v("64")]),a("br"),a("span",{staticClass:"line-number"},[s._v("65")]),a("br"),a("span",{staticClass:"line-number"},[s._v("66")]),a("br"),a("span",{staticClass:"line-number"},[s._v("67")]),a("br"),a("span",{staticClass:"line-number"},[s._v("68")]),a("br"),a("span",{staticClass:"line-number"},[s._v("69")]),a("br"),a("span",{staticClass:"line-number"},[s._v("70")]),a("br"),a("span",{staticClass:"line-number"},[s._v("71")]),a("br"),a("span",{staticClass:"line-number"},[s._v("72")]),a("br"),a("span",{staticClass:"line-number"},[s._v("73")]),a("br"),a("span",{staticClass:"line-number"},[s._v("74")]),a("br")])]),a("h2",{attrs:{id:"api-交互规则"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-交互规则"}},[s._v("#")]),s._v(" API 交互规则")]),s._v(" "),a("p",[s._v("RESTful API 是 API 设计风格而非标准,在团队应用中仅按需使用相应内容即可,目前团队执行以下规范")]),s._v(" "),a("ol",[a("li",[s._v("开发与测试环境使用 "),a("code",[s._v("http")]),s._v(" 协议,生产环境下使用 "),a("code",[s._v("https")]),s._v(" 协议")]),s._v(" "),a("li",[s._v("描述性 api 地址(Endpoint),例如:"),a("code",[s._v("https://aa.com/v1/system/user/profile/{id}")])]),s._v(" "),a("li",[a("strong",[s._v("HTTP 动词统一使用 "),a("code",[s._v("POST")])])])]),s._v(" "),a("p",[s._v("更多 RESTful API 内容:")]),s._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"http://www.ruanyifeng.com/blog/2014/05/restful_api.html",target:"_blank",rel:"noopener noreferrer"}},[s._v("RESTful API 设计指南"),a("OutboundLink")],1)]),s._v(" "),a("li",[a("a",{attrs:{href:"https://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html",target:"_blank",rel:"noopener noreferrer"}},[s._v("RESTful API 最佳实践"),a("OutboundLink")],1)])]),s._v(" "),a("h2",{attrs:{id:"跨域与重复请求"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#跨域与重复请求"}},[s._v("#")]),s._v(" 跨域与重复请求")]),s._v(" "),a("p",[s._v("除少数历史遗留项目外,公司现有项目均使用前后端分离模式,即前端、服务端各自独立开发、运行和部署。")]),s._v(" "),a("h3",{attrs:{id:"跨域(cors)"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#跨域(cors)"}},[s._v("#")]),s._v(" 跨域(CORS)")]),s._v(" "),a("p",[s._v("示例网址: "),a("code",[s._v("https://abc.com:8080/")])]),s._v(" "),a("p",[s._v("构成网址的三个基本元素")]),s._v(" "),a("ul",[a("li",[s._v("协议("),a("code",[s._v("https://")]),s._v(")")]),s._v(" "),a("li",[s._v("网址("),a("code",[s._v("abc.com")]),s._v(")")]),s._v(" "),a("li",[s._v("端口("),a("code",[s._v("8080")]),s._v(")")])]),s._v(" "),a("p",[s._v("两个网址之间,只要有上述三个元素中其中一项不一致,即为跨域访问。前后端项目在各自独立运行部署后,则天然处于跨域模式下")]),s._v(" "),a("p",[s._v("更多跨域资料:"),a("a",{attrs:{href:"http://www.ruanyifeng.com/blog/2016/04/cors.html",target:"_blank",rel:"noopener noreferrer"}},[s._v("跨域资源共享 CORS 详解"),a("OutboundLink")],1)]),s._v(" "),a("h3",{attrs:{id:"跨域请求模式"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#跨域请求模式"}},[s._v("#")]),s._v(" 跨域请求模式")]),s._v(" "),a("p",[s._v("浏览器将 CORS 请求分成两类:")]),s._v(" "),a("ul",[a("li",[s._v("简单请求(simple request)")]),s._v(" "),a("li",[s._v("非简单请求(not-so-simple request)")])]),s._v(" "),a("h4",{attrs:{id:"简单请求"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#简单请求"}},[s._v("#")]),s._v(" 简单请求")]),s._v(" "),a("p",[s._v("只要同时满足以下两大条件,就属于简单请求")]),s._v(" "),a("ol",[a("li",[s._v("请求方法是以下三种方法之一:"),a("code",[s._v("HEAD")]),s._v("、"),a("code",[s._v("GET")]),s._v("、"),a("code",[s._v("POST")])]),s._v(" "),a("li",[s._v("HTTP的头信息不超出以下几种字段\n"),a("ul",[a("li",[s._v("Accept")]),s._v(" "),a("li",[s._v("Accept-Language")]),s._v(" "),a("li",[s._v("Content-Language")]),s._v(" "),a("li",[s._v("Last-Event-ID")]),s._v(" "),a("li",[s._v("Content-Type:只限于三个值 "),a("code",[s._v("application/x-www-form-urlencoded")]),s._v("、"),a("code",[s._v("multipart/form-data")]),s._v("、"),a("code",[s._v("text/plain")])])])])]),s._v(" "),a("h4",{attrs:{id:"非简单请求"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#非简单请求"}},[s._v("#")]),s._v(" 非简单请求")]),s._v(" "),a("p",[s._v("非简单请求是那种对服务器有特殊要求的请求,比如请求方法是 "),a("code",[s._v("PUT")]),s._v(" 或 "),a("code",[s._v("DELETE")]),s._v(",或者 "),a("code",[s._v("Content-Type")]),s._v(" 字段的类型是 "),a("code",[s._v("application/json")])]),s._v(" "),a("h3",{attrs:{id:"跨域应用"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#跨域应用"}},[s._v("#")]),s._v(" 跨域应用")]),s._v(" "),a("p",[s._v("根据以上描述的内容,结合公司使用的规则")]),s._v(" "),a("ul",[a("li",[s._v("跨域")]),s._v(" "),a("li",[s._v("HTTP 动词为 "),a("code",[s._v("POST")])]),s._v(" "),a("li",[s._v("Content-Type 为 "),a("code",[s._v("application/json")])])]),s._v(" "),a("p",[s._v("那么在发起 HTTP 数据请求时,HTTP Client 插件将会增加一次 HTTP 查询请求,称为 “预检” 请求(preflight),特点就是该请求的 "),a("code",[s._v("General")]),s._v(" 段中的 "),a("code",[s._v("Request Method")]),s._v(" 值为 "),a("code",[s._v("OPTIONS")]),s._v(",没有请求参数,该请求的功能仅在向服务器询问当前的 "),a("strong",[s._v("非简单请求")]),s._v(" 是否允许访问")]),s._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[s._v("应用服务器 / 静态网页服务器处理")]),s._v(" "),a("p",[s._v("项目开发之初,服务端应优先开发调试跨域支持,以免影响后续工作")]),s._v(" "),a("p",[s._v("另外,无论是具体的应用服务,如 "),a("code",[s._v("nodejs")]),s._v("、"),a("code",[s._v("PHP")]),s._v(" 、"),a("code",[s._v("GO")]),s._v(" 或 "),a("code",[s._v("Java")]),s._v(" 等,还是静态网页服务器 "),a("code",[s._v("nginx")]),s._v(",在检测到请求方法是 "),a("code",[s._v("OPTIONS")]),s._v(" 时,请直接返回 "),a("code",[s._v("204")]),s._v(" 状态,该状态意为请求成功,但无返回内容(NO CONTENT),该处理可避免预检请求执行业务内容,浪费资源")])]),s._v(" "),a("h2",{attrs:{id:"数据表格"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#数据表格"}},[s._v("#")]),s._v(" 数据表格")]),s._v(" "),a("p",[s._v("数据表格的标准数据交换格式")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 入参")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 表格自动根据当前分页情况发送")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"pageNumber"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"pageSize"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 自定义业务/查询参数")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 返回数据")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"gridResult"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 当前页")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"pageNumber"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 总记录数")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"totalRow"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("3")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 数据列表内容")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"lists"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n object "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 数据模型")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br")])]),a("h2",{attrs:{id:"登录授权"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#登录授权"}},[s._v("#")]),s._v(" 登录授权")]),s._v(" "),a("p",[s._v("访问类似用户登录、切换用户/公司/企业、交换/刷新 "),a("code",[s._v("token")]),s._v(" 等接口时,在请求成功后,应输出 "),a("code",[s._v("access")]),s._v(" 标准节点,用于输出登录授权相关的访问令牌及有效期限等内容")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"access"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"accessToken"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"expiresIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br")])]),a("h3",{attrs:{id:"处理逻辑"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#处理逻辑"}},[s._v("#")]),s._v(" 处理逻辑")]),s._v(" "),a("p",[s._v("用于数据请求的 "),a("strong",[s._v("http client")]),s._v(" 会在每一次数据请求成功后("),a("code",[s._v('"code": 0')]),s._v("),检查数据内容中是否包含 "),a("code",[s._v("access")]),s._v(" 节点,若有,则当前用户访问令牌等内容会被新数据所更新,并在下一次数据请求时,于 "),a("code",[s._v("Request Headers")]),s._v(" 数据段中增加")]),s._v(" "),a("p",[a("code",[s._v('"Authorization": "Bearer ${token}"')])]),s._v(" "),a("p",[s._v("属性,上述 "),a("code",[s._v("${token}")]),s._v(" 内容为登录授权接口返回的 "),a("code",[s._v("access.accessToken")]),s._v(" 数据,用于服务端进行用户身份验证")])])}),[],!1,null,null,null);t.default=r.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{288:function(t,s,a){"use strict";a.r(s);var r=a(14),v=Object(r.a)({},(function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"功能插件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#功能插件"}},[t._v("#")]),t._v(" 功能插件")]),t._v(" "),a("p",[t._v("完全不与业务耦合的功能插件/组件,此类型的成果代表着不以项目类型或业务为限,可随意组合使用")]),t._v(" "),a("h2",{attrs:{id:"拼图验证码插件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#拼图验证码插件"}},[t._v("#")]),t._v(" 拼图验证码插件")]),t._v(" "),a("p",[t._v("用户操作行为验证,能有效区分人机,阻绝恶意程序带来的业务损失。")]),t._v(" "),a("p",[t._v("可应用于系统登录、用户端留言或发贴等场景")]),t._v(" "),a("p",[a("strong",[t._v("拼图拖拽模式")])]),t._v(" "),a("p",[a("img",{attrs:{src:"/frontend/plugins/captcha.png",alt:"captcha"}})]),t._v(" "),a("p",[a("strong",[t._v("随机文字点选模式")])]),t._v(" "),a("p",[a("img",{attrs:{src:"/frontend/plugins/captcha1.png",alt:"captcha1"}})]),t._v(" "),a("p",[t._v("图形验证码插件(极验),当前使用 "),a("strong",[t._v("免费")]),t._v(" 版本,限制为 200 次 / 小时的使用频率,且免费版仅能使用拼图拖拽或文字选择等形式的其中一种,收费版本可随出现验证类型或根据验证级别的提升智能选择不同验证方式和难度,且可定制背景图片")]),t._v(" "),a("p",[a("strong",[t._v("全部验证形式")])]),t._v(" "),a("p",[a("img",{attrs:{src:"/frontend/plugins/captcha-all.png",alt:"captcha-all"}})]),t._v(" "),a("blockquote",[a("p",[t._v("该功能需要服务端配套相关功能")])]),t._v(" "),a("h2",{attrs:{id:"短信验证"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#短信验证"}},[t._v("#")]),t._v(" 短信验证")]),t._v(" "),a("p",[t._v("使用手机及验证码进行身份验证")]),t._v(" "),a("img",{staticClass:"border-shadow",attrs:{src:"/frontend/plugins/sms.png"}}),t._v(" "),a("p",[t._v("提供了默认形态界面的完整功能,也允许只引用底层实现 API 适配自定义短信验证界面场景")]),t._v(" "),a("h2",{attrs:{id:"侧边栏抽屉"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#侧边栏抽屉"}},[t._v("#")]),t._v(" 侧边栏抽屉")]),t._v(" "),a("p",[t._v("一个可从屏幕边缘抽屉式滑出的内容展示层")]),t._v(" "),a("p",[a("img",{attrs:{src:"/frontend/plugins/slide.png",alt:"slide"}})]),t._v(" "),a("h2",{attrs:{id:"数据表格"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#数据表格"}},[t._v("#")]),t._v(" 数据表格")]),t._v(" "),a("p",[t._v("带有分页栏的数据表格,集成了单选、多选、跨页选择等功能")]),t._v(" "),a("p",[a("img",{attrs:{src:"/frontend/plugins/grid.png",alt:"grid"}})]),t._v(" "),a("blockquote",[a("p",[t._v("该插件依赖于 element-ui,以及服务端数据接口")])]),t._v(" "),a("h2",{attrs:{id:"数据下载-导出"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#数据下载-导出"}},[t._v("#")]),t._v(" 数据下载/导出")]),t._v(" "),a("p",[t._v("标准文件下载/导出功能,根据提供位置的内容构建文件流并自动开始下载,下载过程中默认开启全屏遮罩,并在下载完成后自动关闭")]),t._v(" "),a("p",[a("img",{attrs:{src:"/frontend/plugins/download.png",alt:"download"}})]),t._v(" "),a("blockquote",[a("p",[t._v("该插件遮罩功能依赖于 element-ui")])]),t._v(" "),a("h2",{attrs:{id:"选择器"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#选择器"}},[t._v("#")]),t._v(" 选择器")]),t._v(" "),a("p",[t._v("用于挑选数据的选择器")]),t._v(" "),a("p",[a("strong",[t._v("选择器基本规则说明")])]),t._v(" "),a("p",[t._v("所有选择器应包含以下三个基本行为")]),t._v(" "),a("ul",[a("li",[t._v("右上角 "),a("code",[t._v("X")]),t._v(" 关闭按钮,点击后仅关闭选择器,不触发事件响应")]),t._v(" "),a("li",[a("code",[t._v("清空")]),t._v(" 按钮,清空选择器已选择项目,但不关闭窗口")]),t._v(" "),a("li",[a("code",[t._v("确定")]),t._v(" 按钮,触发回调事件,响应数据变更并关闭选择器窗口")])]),t._v(" "),a("p",[a("strong",[t._v("选择器基本构成元素图例")])]),t._v(" "),a("img",{staticClass:"border-shadow",attrs:{src:"/frontend/plugins/selector-base.png"}}),t._v(" "),a("h3",{attrs:{id:"单列数据穿梭框"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#单列数据穿梭框"}},[t._v("#")]),t._v(" 单列数据穿梭框")]),t._v(" "),a("p",[t._v("以数据列表形式展现,提供数据可以左右穿梭直观效果")]),t._v(" "),a("img",{staticClass:"border-shadow",attrs:{src:"/frontend/plugins/selector-transfer.png"}}),t._v(" "),a("h3",{attrs:{id:"树形数据选择器"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#树形数据选择器"}},[t._v("#")]),t._v(" 树形数据选择器")]),t._v(" "),a("p",[t._v("以树形结构展示待选项目")]),t._v(" "),a("img",{staticClass:"border-shadow",attrs:{src:"/frontend/plugins/selector-tree.png"}}),t._v(" "),a("h3",{attrs:{id:"分组树形数据选择器"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#分组树形数据选择器"}},[t._v("#")]),t._v(" 分组树形数据选择器")]),t._v(" "),a("p",[t._v("多分组且每个分组可使用树形结构展示的选择器")]),t._v(" "),a("img",{staticClass:"border-shadow",attrs:{src:"/frontend/plugins/selector-tree-group.png"}})])}),[],!1,null,null,null);s.default=v.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{286:function(t,a,s){"use strict";s.r(a);var e=s(14),r=Object(e.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"质量保证体系"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#质量保证体系"}},[t._v("#")]),t._v(" 质量保证体系")]),t._v(" "),s("p",[t._v("通过各类型自动化工具及测试用例对代码质量进行检测")]),t._v(" "),s("h2",{attrs:{id:"团队应用现状"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#团队应用现状"}},[t._v("#")]),t._v(" 团队应用现状")]),t._v(" "),s("ul",{staticClass:"contains-task-list"},[s("li",{staticClass:"task-list-item"},[s("input",{staticClass:"task-list-item-checkbox",attrs:{checked:"",disabled:"",type:"checkbox"}}),t._v(" 语法检查工具")]),t._v(" "),s("li",{staticClass:"task-list-item"},[s("input",{staticClass:"task-list-item-checkbox",attrs:{disabled:"",type:"checkbox"}}),t._v(" 单元测试")]),t._v(" "),s("li",{staticClass:"task-list-item"},[s("input",{staticClass:"task-list-item-checkbox",attrs:{disabled:"",type:"checkbox"}}),t._v(" 端对端测试")])]),t._v(" "),s("p",[t._v("目前所有自动化检查的方式仅为手动运行检测,后续将视情况切换为强制执行方式,检测不通过则不允许编译与发行")]),t._v(" "),s("h2",{attrs:{id:"语法检查"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#语法检查"}},[t._v("#")]),t._v(" 语法检查")]),t._v(" "),s("p",[t._v("语法检查工具用于检查代码的语法是否正确、风格是否符合要求")]),t._v(" "),s("p",[t._v("JavaScript 是一个动态的弱类型语言,在开发中比较容易出错。因为没有编译程序,为了寻找 JavaScript 代码错误通常需要在执行过程中不断调试。像 ESLint 这样的可以让程序员在编码的过程中发现问题而不是在执行的过程中。")]),t._v(" "),s("h3",{attrs:{id:"使用工具"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用工具"}},[t._v("#")]),t._v(" 使用工具")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://eslint.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("ESLint"),s("OutboundLink")],1)])]),t._v(" "),s("p",[t._v("目前使用规则为宽松模式,后续将逐步增加规则要求级别")]),t._v(" "),s("h3",{attrs:{id:"运行方式"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#运行方式"}},[t._v("#")]),t._v(" 运行方式")]),t._v(" "),s("div",{staticClass:"language-bash line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" run lint\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br")])]),s("h3",{attrs:{id:"检查结果要求"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#检查结果要求"}},[t._v("#")]),t._v(" 检查结果要求")]),t._v(" "),s("p",[t._v("ESlint 命令行输出")]),t._v(" "),s("blockquote",[s("Badge",{attrs:{text:"DONE",vertical:"middle"}}),t._v(" No lint errors found!\n")],1),t._v(" "),s("p",[t._v("代表了语法检查通过")]),t._v(" "),s("h2",{attrs:{id:"单元测试"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#单元测试"}},[t._v("#")]),t._v(" 单元测试")]),t._v(" "),s("p",[t._v("单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作,可以理解为 "),s("strong",[t._v("白盒测试")]),t._v(" 的行为。")]),t._v(" "),s("h3",{attrs:{id:"为什么要写单元测试?"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#为什么要写单元测试?"}},[t._v("#")]),t._v(" 为什么要写单元测试?")]),t._v(" "),s("p",[t._v("Web应用程序越来越复杂,这意味着有更多的可能出错。测试是帮助我们提高代码质量、降低错误的最好方法和工具之一")]),t._v(" "),s("ul",[s("li",[t._v("测试可以确保得到预期结果")]),t._v(" "),s("li",[t._v("加快开发速度")]),t._v(" "),s("li",[t._v("方便维护")]),t._v(" "),s("li",[t._v("提供用法的文档")])]),t._v(" "),s("p",[t._v("通过测试提供软件的质量,在开始的时候,可能会降低开发速度。但是从长期看,尤其是那种代码需要长期维护、不断开发的情况,测试会大大加快开发速度,减轻维护难度")]),t._v(" "),s("h3",{attrs:{id:"使用功能库"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用功能库"}},[t._v("#")]),t._v(" 使用功能库")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("功能库")]),t._v(" "),s("th",[t._v("作用")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[s("a",{attrs:{href:"https://mochajs.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Mocha"),s("OutboundLink")],1)]),t._v(" "),s("td",[t._v("单元测试引擎")])]),t._v(" "),s("tr",[s("td",[s("a",{attrs:{href:"https://www.chaijs.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Chai"),s("OutboundLink")],1)]),t._v(" "),s("td",[t._v("断言库")])]),t._v(" "),s("tr",[s("td",[s("a",{attrs:{href:"https://github.com/jsdom/jsdom",target:"_blank",rel:"noopener noreferrer"}},[t._v("JsDom"),s("OutboundLink")],1)]),t._v(" "),s("td",[t._v("虚拟浏览器容器")])]),t._v(" "),s("tr",[s("td",[s("a",{attrs:{href:"https://vue-test-utils.vuejs.org/zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("@vue/test-utils"),s("OutboundLink")],1)]),t._v(" "),s("td",[t._v("vue 官方提供单元测试工具集")])])])]),t._v(" "),s("h3",{attrs:{id:"运行方式-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#运行方式-2"}},[t._v("#")]),t._v(" 运行方式")]),t._v(" "),s("div",{staticClass:"language-bash line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" run test:unit\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br")])]),s("h3",{attrs:{id:"适用范围"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#适用范围"}},[t._v("#")]),t._v(" 适用范围")]),t._v(" "),s("p",[t._v("很多时候,一些简单的功能场景,例如表单增、删、改、查等并没有编写单元测试的必要,况且编写单元测试需要不少时间成本,建议编写单元测试的场景如下")]),t._v(" "),s("ul",[s("li",[t._v("系统底层 API")]),t._v(" "),s("li",[t._v("功能封装类")]),t._v(" "),s("li",[t._v("功能组件")]),t._v(" "),s("li",[t._v("关联计算")]),t._v(" "),s("li",[t._v("业务集成联动")])]),t._v(" "),s("p",[t._v("对于功能封装函数,更是应该增加多种测试用例进行功能覆盖,对于边界测试更是其中重中之重")]),t._v(" "),s("h2",{attrs:{id:"端对端测试(end-to-end)"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#端对端测试(end-to-end)"}},[t._v("#")]),t._v(" 端对端测试(End-to-end)")]),t._v(" "),s("p",[t._v("端对端测试,简单地可以理解为站在用户角度的测试。站在用户的角度,他不需要知道软件的内部实现是怎么样的,只是使用即可;那么端对端测试模拟的就是用户的行为,只负责打开软件/浏览器,按序执行测试用例,并检查测试结果是否符合预期,它是 "),s("strong",[t._v("黑盒测试")]),t._v(" 的行为。")]),t._v(" "),s("h3",{attrs:{id:"使用功能库-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#使用功能库-2"}},[t._v("#")]),t._v(" 使用功能库")]),t._v(" "),s("ul",[s("li",[s("a",{attrs:{href:"https://www.cypress.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("cypress"),s("OutboundLink")],1)])]),t._v(" "),s("h3",{attrs:{id:"运行方式-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#运行方式-3"}},[t._v("#")]),t._v(" 运行方式")]),t._v(" "),s("div",{staticClass:"language-bash line-numbers-mode"},[s("pre",{pre:!0,attrs:{class:"language-bash"}},[s("code",[s("span",{pre:!0,attrs:{class:"token function"}},[t._v("npm")]),t._v(" run test:e2e\n")])]),t._v(" "),s("div",{staticClass:"line-numbers-wrapper"},[s("span",{staticClass:"line-number"},[t._v("1")]),s("br")])])])}),[],!1,null,null,null);a.default=r.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{290:function(t,r,a){"use strict";a.r(r);var e=a(14),s=Object(e.a)({},(function(){var t=this,r=t.$createElement,a=t._self._c||r;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"陈列柜"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#陈列柜"}},[t._v("#")]),t._v(" 陈列柜")]),t._v(" "),a("p",[t._v("展示出团队完成的相关产品")]),t._v(" "),a("h2",{attrs:{id:"网站"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#网站"}},[t._v("#")]),t._v(" 网站")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("名称")]),t._v(" "),a("th",[t._v("生产环境")]),t._v(" "),a("th",[t._v("测试环境")])])]),t._v(" "),a("tbody",[a("tr",[a("td",[t._v("买买买公司门户网站")]),t._v(" "),a("td",[a("a",{attrs:{href:"http://www.fjmaimaimai.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"http://wwwtest.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)])]),t._v(" "),a("tr",[a("td",[t._v("素+管理平台")]),t._v(" "),a("td",[a("a",{attrs:{href:"http://suplus-front-prd.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"http://suplus-front-dev.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)])]),t._v(" "),a("tr",[a("td",[t._v("管理中心(原素+管理后台)")]),t._v(" "),a("td",[a("a",{attrs:{href:"http://suplus-app-mg-prd.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"http://suplus-app-mg-dev.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)])]),t._v(" "),a("tr",[a("td",[t._v("便捷答题小程序管理平台")]),t._v(" "),a("td",[a("a",{attrs:{href:"https://dati.fjmaimaimai.com/dati_manage/#/login",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"https://csdati.fjmaimaimai.com/dati_manage/#/login",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)])]),t._v(" "),a("tr",[a("td",[t._v("机会导向管理平台")]),t._v(" "),a("td",[a("a",{attrs:{href:"https://opportunity.fjmaimaimai.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)]),t._v(" "),a("td",[a("a",{attrs:{href:"http://mmm-opportunity-dev.fjmaimaimai.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("点击访问"),a("OutboundLink")],1)])])])]),t._v(" "),a("h2",{attrs:{id:"微信小程序"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#微信小程序"}},[t._v("#")]),t._v(" 微信小程序")]),t._v(" "),a("table",[a("thead",[a("tr",[a("th",[t._v("名称")]),t._v(" "),a("th",[t._v("体验版")]),t._v(" "),a("th",[t._v("线上版")])])]),t._v(" "),a("tbody",[a("tr",[a("td",{staticClass:"nowrap",attrs:{rowspan:"2"}},[t._v("票选小助手")]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/vote/experience.jpg"}})]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/vote/production.jpg"}})])]),t._v(" "),a("tr",[a("td",{attrs:{colspan:"2"}},[t._v("快速简单创建投票,支持图文选项。可支持群投票或指定用户进行投票")])]),t._v(" "),a("tr",[a("td",{staticClass:"nowrap",attrs:{rowspan:"2"}},[t._v("便捷答题")]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/exam/experience.jpg"}})]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/exam/production.jpg"}})])]),t._v(" "),a("tr",[a("td",{attrs:{colspan:"2"}},[t._v("让公司可以便捷地给员工培训考试")])]),t._v(" "),a("tr",[a("td",{staticClass:"nowrap",attrs:{rowspan:"2"}},[t._v("海鲜干货人家")]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/seafood/experience.jpg"}})]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/seafood/production.jpg"}})])]),t._v(" "),a("tr",[a("td",{attrs:{colspan:"2"}},[t._v("专业包点、小食订购平台;自提需标提货时间(至少次日),配送为当天下单,次日配送;周末节假日暂不支持发货")])]),t._v(" "),a("tr",[a("td",{staticClass:"nowrap",attrs:{rowspan:"2"}},[t._v("我的旺铺")]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/hot-shop/experience.jpg"}})]),t._v(" "),a("td",{staticClass:"text-center"},[a("img",{staticClass:"img",attrs:{src:"/frontend/mini-program/hot-shop/production.jpg"}})])]),t._v(" "),a("tr",[a("td",{attrs:{colspan:"2"}},[t._v("店铺管理工具,能快速的管理店铺的分类、商品和海报图册。")])])])]),t._v(" "),a("h2",{attrs:{id:"桌面客户端"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#桌面客户端"}},[t._v("#")]),t._v(" 桌面客户端")]),t._v(" "),a("p",[t._v("未上线")])])}),[],!1,null,null,null);r.default=s.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{212:function(t,e,n){"use strict";n.d(e,"d",(function(){return i})),n.d(e,"a",(function(){return a})),n.d(e,"i",(function(){return s})),n.d(e,"f",(function(){return u})),n.d(e,"g",(function(){return l})),n.d(e,"h",(function(){return c})),n.d(e,"b",(function(){return h})),n.d(e,"e",(function(){return f})),n.d(e,"k",(function(){return p})),n.d(e,"l",(function(){return d})),n.d(e,"c",(function(){return g})),n.d(e,"j",(function(){return v}));n(22),n(79),n(131),n(228),n(236),n(51),n(36),n(213),n(52),n(237),n(80);var i=/#.*$/,r=/\.(md|html)$/,a=/\/$/,s=/^[a-z]+:/i;function o(t){return decodeURI(t).replace(i,"").replace(r,"")}function u(t){return s.test(t)}function l(t){return/^mailto:/.test(t)}function c(t){return/^tel:/.test(t)}function h(t){if(u(t))return t;var e=t.match(i),n=e?e[0]:"",r=o(t);return a.test(r)?t:r+".html"+n}function f(t,e){var n=decodeURIComponent(t.hash),r=function(t){var e=t.match(i);if(e)return e[0]}(e);return(!r||n===r)&&o(t.path)===o(e)}function p(t,e,n){if(u(e))return{type:"external",path:e};n&&(e=function(t,e,n){var i=t.charAt(0);if("/"===i)return t;if("?"===i||"#"===i)return e+t;var r=e.split("/");n&&r[r.length-1]||r.pop();for(var a=t.replace(/^\//,"").split("/"),s=0;s<a.length;s++){var o=a[s];".."===o?r.pop():"."!==o&&r.push(o)}""!==r[0]&&r.unshift("");return r.join("/")}(e,n));for(var i=o(e),r=0;r<t.length;r++)if(o(t[r].regularPath)===i)return Object.assign({},t[r],{type:"page",path:h(t[r].path)});return console.error('[vuepress] No matching page found for sidebar item "'.concat(e,'"')),{}}function d(t,e,n,i){var r=n.pages,a=n.themeConfig,s=i&&a.locales&&a.locales[i]||a;if("auto"===(t.frontmatter.sidebar||s.sidebar||a.sidebar))return function(t){var e=g(t.headers||[]);return[{type:"group",collapsable:!1,title:t.title,path:null,children:e.map((function(e){return{type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}}))}]}(t);var o=s.sidebar||a.sidebar;if(o){var u=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(var n in e)if(0===(i=t,/(\.html|\/)$/.test(i)?i:i+"/").indexOf(encodeURI(n)))return{base:n,config:e[n]};var i;return{}}(e,o),l=u.base,c=u.config;return c?c.map((function(t){return function t(e,n,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1;if("string"==typeof e)return p(n,e,i);if(Array.isArray(e))return Object.assign(p(n,e[0],i),{title:e[1]});r>3&&console.error("[vuepress] detected a too deep nested sidebar group.");var a=e.children||[];return 0===a.length&&e.path?Object.assign(p(n,e.path,i),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:a.map((function(e){return t(e,n,i,r+1)})),collapsable:!1!==e.collapsable}}(t,r,l)})):[]}return[]}function g(t){var e;return(t=t.map((function(t){return Object.assign({},t)}))).forEach((function(t){2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)})),t.filter((function(t){return 2===t.level}))}function v(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},213:function(t,e,n){"use strict";var i=n(126),r=n(11),a=n(18),s=n(17),o=n(127),u=n(128);i("match",1,(function(t,e,n){return[function(e){var n=s(this),i=null==e?void 0:e[t];return void 0!==i?i.call(e,n):new RegExp(e)[t](String(n))},function(t){var i=n(e,t,this);if(i.done)return i.value;var s=r(t),l=String(this);if(!s.global)return u(s,l);var c=s.unicode;s.lastIndex=0;for(var h,f=[],p=0;null!==(h=u(s,l));){var d=String(h[0]);f[p]=d,""===d&&(s.lastIndex=o(l,a(s.lastIndex),c)),p++}return 0===p?null:f}]}))},214:function(t,e,n){},215:function(t,e,n){},216:function(t,e,n){},217:function(t,e,n){},218:function(t,e,n){},219:function(t,e,n){},220:function(t,e,n){},221:function(t,e,n){},222:function(t,e,n){},223:function(t,e,n){},224:function(t,e,n){},225:function(t,e,n){},226:function(t,e,n){},228:function(t,e,n){n(1)({target:"Array",stat:!0},{isArray:n(53)})},229:function(t,e){t.exports=function(t){return null==t}},230:function(t,e,n){var i=n(257).Symbol;t.exports=i},231:function(t,e,n){"use strict";n.r(e);n(123);var i=n(212),r={name:"SidebarGroup",components:{DropdownTransition:n(232).a},props:["item","open","collapsable","depth"],beforeCreate:function(){this.$options.components.SidebarLinks=n(231).default},methods:{isActive:i.e}},a=(n(265),n(14)),s=Object(a.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?n("RouterLink",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):n("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),n("DropdownTransition",[t.open||!t.collapsable?n("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,"sidebar-depth":t.item.sidebarDepth,depth:t.depth+1}}):t._e()],1)],1)}),[],!1,null,null,null).exports;n(266),n(51);function o(t,e,n,i,r){var a={props:{to:e,activeClass:"",exactActiveClass:""},class:{active:i,"sidebar-link":!0}};return r>2&&(a.style={"padding-left":r+"rem"}),t("RouterLink",a,n)}function u(t,e,n,r,a){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;return!e||s>a?null:t("ul",{class:"sidebar-sub-headers"},e.map((function(e){var l=Object(i.e)(r,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[o(t,n+"#"+e.slug,e.title,l,e.level-1),u(t,e.children,n,r,a,s+1)])})))}var l={functional:!0,props:["item","sidebarDepth"],render:function(t,e){var n=e.parent,r=n.$page,a=(n.$site,n.$route),s=n.$themeConfig,l=n.$themeLocaleConfig,c=e.props,h=c.item,f=c.sidebarDepth,p=Object(i.e)(a,h.path),d="auto"===h.type?p||h.children.some((function(t){return Object(i.e)(a,h.basePath+"#"+t.slug)})):p,g="external"===h.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,h.path,h.title||h.path):o(t,h.path,h.title||h.path,d),v=[r.frontmatter.sidebarDepth,f,l.sidebarDepth,s.sidebarDepth,1].find((function(t){return void 0!==t})),m=l.displayAllHeaders||s.displayAllHeaders;return"auto"===h.type?[g,u(t,h.children,h.basePath,a,v)]:(d||m)&&h.headers&&!i.d.test(h.path)?[g,u(t,Object(i.c)(h.headers),h.path,a,v)]:g}};n(267);function c(t,e){return"group"===e.type&&e.children.some((function(e){return"group"===e.type?c(t,e):"page"===e.type&&Object(i.e)(t,e.path)}))}var h={name:"SidebarLinks",components:{SidebarGroup:s,SidebarLink:Object(a.a)(l,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth"],data:function(){return{openGroupIndex:0}},watch:{$route:function(){this.refreshIndex()}},created:function(){this.refreshIndex()},methods:{refreshIndex:function(){var t=function(t,e){for(var n=0;n<e.length;n++){var i=e[n];if(c(t,i))return n}return-1}(this.$route,this.items);t>-1&&(this.openGroupIndex=t)},toggleGroup:function(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive:function(t){return Object(i.e)(this.$route,t.regularPath)}}},f=Object(a.a)(h,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.items.length?n("ul",{staticClass:"sidebar-links"},t._l(t.items,(function(e,i){return n("li",{key:i},["group"===e.type?n("SidebarGroup",{attrs:{item:e,open:i===t.openGroupIndex,collapsable:e.collapsable||e.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(i)}}}):n("SidebarLink",{attrs:{"sidebar-depth":t.sidebarDepth,item:e}})],1)})),0):t._e()}),[],!1,null,null,null);e.default=f.exports},232:function(t,e,n){"use strict";var i={name:"DropdownTransition",methods:{setHeight:function(t){t.style.height=t.scrollHeight+"px"},unsetHeight:function(t){t.style.height=""}}},r=(n(249),n(14)),a=Object(r.a)(i,(function(){var t=this.$createElement;return(this._self._c||t)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)}),[],!1,null,null,null);e.a=a.exports},233:function(t,e,n){"use strict";var i=n(1),r=n(234);i({target:"String",proto:!0,forced:n(235)("link")},{link:function(t){return r(this,"a","href",t)}})},234:function(t,e,n){var i=n(17),r=/"/g;t.exports=function(t,e,n,a){var s=String(i(t)),o="<"+e;return""!==n&&(o+=" "+n+'="'+String(a).replace(r,"&quot;")+'"'),o+">"+s+"</"+e+">"}},235:function(t,e,n){var i=n(3);t.exports=function(t){return i((function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}))}},236:function(t,e,n){"use strict";var i=n(1),r=n(55),a=n(15),s=n(38),o=[].join,u=r!=Object,l=s("join",",");i({target:"Array",proto:!0,forced:u||!l},{join:function(t){return o.call(a(this),void 0===t?",":t)}})},237:function(t,e,n){"use strict";var i=n(126),r=n(124),a=n(11),s=n(17),o=n(238),u=n(127),l=n(18),c=n(128),h=n(58),f=n(3),p=[].push,d=Math.min,g=!f((function(){return!RegExp(4294967295,"y")}));i("split",2,(function(t,e,n){var i;return i="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(t,n){var i=String(s(this)),a=void 0===n?4294967295:n>>>0;if(0===a)return[];if(void 0===t)return[i];if(!r(t))return e.call(i,t,a);for(var o,u,l,c=[],f=(t.ignoreCase?"i":"")+(t.multiline?"m":"")+(t.unicode?"u":"")+(t.sticky?"y":""),d=0,g=new RegExp(t.source,f+"g");(o=h.call(g,i))&&!((u=g.lastIndex)>d&&(c.push(i.slice(d,o.index)),o.length>1&&o.index<i.length&&p.apply(c,o.slice(1)),l=o[0].length,d=u,c.length>=a));)g.lastIndex===o.index&&g.lastIndex++;return d===i.length?!l&&g.test("")||c.push(""):c.push(i.slice(d)),c.length>a?c.slice(0,a):c}:"0".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:e.call(this,t,n)}:e,[function(e,n){var r=s(this),a=null==e?void 0:e[t];return void 0!==a?a.call(e,r,n):i.call(String(r),e,n)},function(t,r){var s=n(i,t,this,r,i!==e);if(s.done)return s.value;var h=a(t),f=String(this),p=o(h,RegExp),v=h.unicode,m=(h.ignoreCase?"i":"")+(h.multiline?"m":"")+(h.unicode?"u":"")+(g?"y":"g"),b=new p(g?h:"^(?:"+h.source+")",m),k=void 0===r?4294967295:r>>>0;if(0===k)return[];if(0===f.length)return null===c(b,f)?[f]:[];for(var _=0,x=0,y=[];x<f.length;){b.lastIndex=g?x:0;var C,$=c(b,g?f:f.slice(x));if(null===$||(C=d(l(b.lastIndex+(g?0:x)),f.length))===_)x=u(f,x,v);else{if(y.push(f.slice(_,x)),y.length===k)return y;for(var L=1;L<=$.length-1;L++)if(y.push($[L]),y.length===k)return y;x=_=C}}return y.push(f.slice(_)),y}]}),!g)},238:function(t,e,n){var i=n(11),r=n(76),a=n(2)("species");t.exports=function(t,e){var n,s=i(t).constructor;return void 0===s||null==(n=i(s)[a])?e:r(n)}},239:function(t,e,n){"use strict";var i=n(214);n.n(i).a},240:function(t,e,n){var i=n(1),r=n(241);i({global:!0,forced:parseInt!=r},{parseInt:r})},241:function(t,e,n){var i=n(4),r=n(129).trim,a=n(130),s=i.parseInt,o=/^[+-]?0[Xx]/,u=8!==s(a+"08")||22!==s(a+"0x16");t.exports=u?function(t,e){var n=r(String(t));return s(n,e>>>0||(o.test(n)?16:10))}:s},242:function(t,e,n){"use strict";var i=n(1),r=n(129).trim;i({target:"String",proto:!0,forced:n(243)("trim")},{trim:function(){return r(this)}})},243:function(t,e,n){var i=n(3),r=n(130);t.exports=function(t){return i((function(){return!!r[t]()||"​…᠎"!="​…᠎"[t]()||r[t].name!==t}))}},244:function(t,e,n){"use strict";var i=n(215);n.n(i).a},245:function(t,e,n){"use strict";var i=n(216);n.n(i).a},246:function(t,e,n){"use strict";var i=n(1),r=n(3),a=n(53),s=n(8),o=n(19),u=n(18),l=n(77),c=n(132),h=n(57),f=n(2),p=n(133),d=f("isConcatSpreadable"),g=p>=51||!r((function(){var t=[];return t[d]=!1,t.concat()[0]!==t})),v=h("concat"),m=function(t){if(!s(t))return!1;var e=t[d];return void 0!==e?!!e:a(t)};i({target:"Array",proto:!0,forced:!g||!v},{concat:function(t){var e,n,i,r,a,s=o(this),h=c(s,0),f=0;for(e=-1,i=arguments.length;e<i;e++)if(a=-1===e?s:arguments[e],m(a)){if(f+(r=u(a.length))>9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n<r;n++,f++)n in a&&l(h,f,a[n])}else{if(f>=9007199254740991)throw TypeError("Maximum allowed index exceeded");l(h,f++,a)}return h.length=f,h}})},247:function(t,e,n){var i=n(7),r=n(4),a=n(56),s=n(81),o=n(9).f,u=n(37).f,l=n(124),c=n(125),h=n(135),f=n(13),p=n(3),d=n(28).set,g=n(137),v=n(2)("match"),m=r.RegExp,b=m.prototype,k=/a/g,_=/a/g,x=new m(k)!==k,y=h.UNSUPPORTED_Y;if(i&&a("RegExp",!x||y||p((function(){return _[v]=!1,m(k)!=k||m(_)==_||"/a/i"!=m(k,"i")})))){for(var C=function(t,e){var n,i=this instanceof C,r=l(t),a=void 0===e;if(!i&&r&&t.constructor===C&&a)return t;x?r&&!a&&(t=t.source):t instanceof C&&(a&&(e=c.call(t)),t=t.source),y&&(n=!!e&&e.indexOf("y")>-1)&&(e=e.replace(/y/g,""));var o=s(x?new m(t,e):m(t,e),i?this:b,C);return y&&n&&d(o,{sticky:n}),o},$=function(t){t in C||o(C,t,{configurable:!0,get:function(){return m[t]},set:function(e){m[t]=e}})},L=u(m),w=0;L.length>w;)$(L[w++]);b.constructor=C,C.prototype=b,f(r,"RegExp",C)}g("RegExp")},248:function(t,e,n){"use strict";var i=n(13),r=n(11),a=n(3),s=n(125),o=RegExp.prototype,u=o.toString,l=a((function(){return"/a/b"!=u.call({source:"a",flags:"b"})})),c="toString"!=u.name;(l||c)&&i(RegExp.prototype,"toString",(function(){var t=r(this),e=String(t.source),n=t.flags;return"/"+e+"/"+String(void 0===n&&t instanceof RegExp&&!("flags"in o)?s.call(t):n)}),{unsafe:!0})},249:function(t,e,n){"use strict";var i=n(217);n.n(i).a},250:function(t,e){t.exports=function(t){var e=null==t?0:t.length;return e?t[e-1]:void 0}},251:function(t,e,n){"use strict";var i=n(218);n.n(i).a},252:function(t,e,n){"use strict";var i=n(219);n.n(i).a},253:function(t,e,n){"use strict";var i=n(220);n.n(i).a},254:function(t,e,n){"use strict";var i=n(221);n.n(i).a},255:function(t,e,n){var i=n(256),r=n(261),a=n(262);t.exports=function(t){return"string"==typeof t||!r(t)&&a(t)&&"[object String]"==i(t)}},256:function(t,e,n){var i=n(230),r=n(259),a=n(260),s=i?i.toStringTag:void 0;t.exports=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":s&&s in Object(t)?r(t):a(t)}},257:function(t,e,n){var i=n(258),r="object"==typeof self&&self&&self.Object===Object&&self,a=i||r||Function("return this")();t.exports=a},258:function(t,e){var n="object"==typeof global&&global&&global.Object===Object&&global;t.exports=n},259:function(t,e,n){var i=n(230),r=Object.prototype,a=r.hasOwnProperty,s=r.toString,o=i?i.toStringTag:void 0;t.exports=function(t){var e=a.call(t,o),n=t[o];try{t[o]=void 0;var i=!0}catch(t){}var r=s.call(t);return i&&(e?t[o]=n:delete t[o]),r}},260:function(t,e){var n=Object.prototype.toString;t.exports=function(t){return n.call(t)}},261:function(t,e){var n=Array.isArray;t.exports=n},262:function(t,e){t.exports=function(t){return null!=t&&"object"==typeof t}},263:function(t,e,n){"use strict";var i=n(222);n.n(i).a},264:function(t,e,n){"use strict";var i=n(223);n.n(i).a},265:function(t,e,n){"use strict";var i=n(224);n.n(i).a},266:function(t,e,n){"use strict";var i=n(1),r=n(29).find,a=n(78),s=n(16),o=!0,u=s("find");"find"in[]&&Array(1).find((function(){o=!1})),i({target:"Array",proto:!0,forced:o||!u},{find:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),a("find")},267:function(t,e,n){"use strict";var i=n(225);n.n(i).a},268:function(t,e,n){"use strict";var i=n(226);n.n(i).a},270:function(t,e,n){"use strict";n.r(e);n(123),n(54),n(233);var i=n(212),r={name:"NavLink",props:{item:{required:!0}},computed:{link:function(){return Object(i.b)(this.item.link)},exact:function(){var t=this;return this.$site.locales?Object.keys(this.$site.locales).some((function(e){return e===t.link})):"/"===this.link},isNonHttpURI:function(){return Object(i.g)(this.link)||Object(i.h)(this.link)},isBlankTarget:function(){return"_blank"===this.target},isInternal:function(){return!Object(i.f)(this.link)&&!this.isBlankTarget},target:function(){return this.isNonHttpURI?null:this.item.target?this.item.target:Object(i.f)(this.link)?"_blank":""},rel:function(){return this.isNonHttpURI?null:this.item.rel?this.item.rel:this.isBlankTarget?"noopener noreferrer":""}},methods:{focusoutAction:function(){this.$emit("focusout")}}},a=n(14),s=Object(a.a)(r,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isInternal?n("RouterLink",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact},nativeOn:{focusout:function(e){return t.focusoutAction(e)}}},[t._v("\n "+t._s(t.item.text)+"\n")]):n("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.target,rel:t.rel},on:{focusout:t.focusoutAction}},[t._v("\n "+t._s(t.item.text)+"\n "),t.isBlankTarget?n("OutboundLink"):t._e()],1)}),[],!1,null,null,null).exports,o={name:"Home",components:{NavLink:s},computed:{data:function(){return this.$page.frontmatter},actionLink:function(){return{link:this.data.actionLink,text:this.data.actionText}}}},u=(n(239),Object(a.a)(o,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("main",{staticClass:"home",attrs:{"aria-labelledby":"main-title"}},[n("header",{staticClass:"hero"},[t.data.heroImage?n("img",{attrs:{src:t.$withBase(t.data.heroImage),alt:t.data.heroAlt||"hero"}}):t._e(),t._v(" "),null!==t.data.heroText?n("h1",{attrs:{id:"main-title"}},[t._v("\n "+t._s(t.data.heroText||t.$title||"Hello")+"\n ")]):t._e(),t._v(" "),null!==t.data.tagline?n("p",{staticClass:"description"},[t._v("\n "+t._s(t.data.tagline||t.$description||"Welcome to your VuePress site")+"\n ")]):t._e(),t._v(" "),t.data.actionText&&t.data.actionLink?n("p",{staticClass:"action"},[n("NavLink",{staticClass:"action-button",attrs:{item:t.actionLink}})],1):t._e()]),t._v(" "),t.data.features&&t.data.features.length?n("div",{staticClass:"features"},t._l(t.data.features,(function(e,i){return n("div",{key:i,staticClass:"feature"},[n("h2",[t._v(t._s(e.title))]),t._v(" "),n("p",[t._v(t._s(e.details))])])})),0):t._e(),t._v(" "),n("Content",{staticClass:"theme-default-content custom"}),t._v(" "),t.data.footer?n("div",{staticClass:"footer"},[t._v("\n "+t._s(t.data.footer)+"\n ")]):t._e()],1)}),[],!1,null,null,null).exports),l=(n(240),n(22),n(134),n(131),n(228),n(36),n(136),n(213),n(242),{name:"SearchBox",data:function(){return{query:"",focused:!1,focusIndex:0,placeholder:void 0}},computed:{showSuggestions:function(){return this.focused&&this.suggestions&&this.suggestions.length},suggestions:function(){var t=this.query.trim().toLowerCase();if(t){for(var e=this.$site.pages,n=this.$site.themeConfig.searchMaxSuggestions||5,i=this.$localePath,r=function(e){return e&&e.title&&e.title.toLowerCase().indexOf(t)>-1},a=[],s=0;s<e.length&&!(a.length>=n);s++){var o=e[s];if(this.getPageLocalePath(o)===i&&this.isSearchable(o))if(r(o))a.push(o);else if(o.headers)for(var u=0;u<o.headers.length&&!(a.length>=n);u++){var l=o.headers[u];r(l)&&a.push(Object.assign({},o,{path:o.path+"#"+l.slug,header:l}))}}return a}},alignRight:function(){return(this.$site.themeConfig.nav||[]).length+(this.$site.repo?1:0)<=2}},mounted:function(){this.placeholder=this.$site.themeConfig.searchPlaceholder||"",document.addEventListener("keydown",this.onHotkey)},beforeDestroy:function(){document.removeEventListener("keydown",this.onHotkey)},methods:{getPageLocalePath:function(t){for(var e in this.$site.locales||{})if("/"!==e&&0===t.path.indexOf(e))return e;return"/"},isSearchable:function(t){var e=null;return null===e||(e=Array.isArray(e)?e:new Array(e)).filter((function(e){return t.path.match(e)})).length>0},onHotkey:function(t){t.srcElement===document.body&&["s","/"].includes(t.key)&&(this.$refs.input.focus(),t.preventDefault())},onUp:function(){this.showSuggestions&&(this.focusIndex>0?this.focusIndex--:this.focusIndex=this.suggestions.length-1)},onDown:function(){this.showSuggestions&&(this.focusIndex<this.suggestions.length-1?this.focusIndex++:this.focusIndex=0)},go:function(t){this.showSuggestions&&(this.$router.push(this.suggestions[t].path),this.query="",this.focusIndex=0)},focus:function(t){this.focusIndex=t},unfocus:function(){this.focusIndex=-1}}}),c=(n(244),Object(a.a)(l,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"search-box"},[n("input",{ref:"input",class:{focused:t.focused},attrs:{"aria-label":"Search",placeholder:t.placeholder,autocomplete:"off",spellcheck:"false"},domProps:{value:t.query},on:{input:function(e){t.query=e.target.value},focus:function(e){t.focused=!0},blur:function(e){t.focused=!1},keyup:[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.go(t.focusIndex)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"up",38,e.key,["Up","ArrowUp"])?null:t.onUp(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"down",40,e.key,["Down","ArrowDown"])?null:t.onDown(e)}]}}),t._v(" "),t.showSuggestions?n("ul",{staticClass:"suggestions",class:{"align-right":t.alignRight},on:{mouseleave:t.unfocus}},t._l(t.suggestions,(function(e,i){return n("li",{key:i,staticClass:"suggestion",class:{focused:i===t.focusIndex},on:{mousedown:function(e){return t.go(i)},mouseenter:function(e){return t.focus(i)}}},[n("a",{attrs:{href:e.path},on:{click:function(t){t.preventDefault()}}},[n("span",{staticClass:"page-title"},[t._v(t._s(e.title||e.path))]),t._v(" "),e.header?n("span",{staticClass:"header"},[t._v("> "+t._s(e.header.title))]):t._e()])])})),0):t._e()])}),[],!1,null,null,null).exports),h=(n(245),Object(a.a)({},(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"sidebar-button",on:{click:function(e){return t.$emit("toggle-sidebar")}}},[n("svg",{staticClass:"icon",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",role:"img",viewBox:"0 0 448 512"}},[n("path",{attrs:{fill:"currentColor",d:"M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"}})])])}),[],!1,null,null,null).exports),f=(n(246),n(51),n(247),n(248),n(52),n(48)),p=n(232),d=n(250),g=n.n(d),v={name:"DropdownLink",components:{NavLink:s,DropdownTransition:p.a},props:{item:{required:!0}},data:function(){return{open:!1}},computed:{dropdownAriaLabel:function(){return this.item.ariaLabel||this.item.text}},watch:{$route:function(){this.open=!1}},methods:{setOpen:function(t){this.open=t},isLastItemOfArray:function(t,e){return g()(e)===t}}},m=(n(251),{name:"NavLinks",components:{NavLink:s,DropdownLink:Object(a.a)(v,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"dropdown-wrapper",class:{open:t.open}},[n("button",{staticClass:"dropdown-title",attrs:{type:"button","aria-label":t.dropdownAriaLabel},on:{click:function(e){return t.setOpen(!t.open)}}},[n("span",{staticClass:"title"},[t._v(t._s(t.item.text))]),t._v(" "),n("span",{staticClass:"arrow",class:t.open?"down":"right"})]),t._v(" "),n("DropdownTransition",[n("ul",{directives:[{name:"show",rawName:"v-show",value:t.open,expression:"open"}],staticClass:"nav-dropdown"},t._l(t.item.items,(function(e,i){return n("li",{key:e.link||i,staticClass:"dropdown-item"},["links"===e.type?n("h4",[t._v("\n "+t._s(e.text)+"\n ")]):t._e(),t._v(" "),"links"===e.type?n("ul",{staticClass:"dropdown-subitem-wrapper"},t._l(e.items,(function(i){return n("li",{key:i.link,staticClass:"dropdown-subitem"},[n("NavLink",{attrs:{item:i},on:{focusout:function(n){t.isLastItemOfArray(i,e.items)&&t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0):n("NavLink",{attrs:{item:e},on:{focusout:function(n){t.isLastItemOfArray(e,t.item.items)&&t.setOpen(!1)}}})],1)})),0)])],1)}),[],!1,null,null,null).exports},computed:{userNav:function(){return this.$themeLocaleConfig.nav||this.$site.themeConfig.nav||[]},nav:function(){var t=this,e=this.$site.locales;if(e&&Object.keys(e).length>1){var n=this.$page.path,i=this.$router.options.routes,r=this.$site.themeConfig.locales||{},a={text:this.$themeLocaleConfig.selectText||"Languages",ariaLabel:this.$themeLocaleConfig.ariaLabel||"Select language",items:Object.keys(e).map((function(a){var s,o=e[a],u=r[a]&&r[a].label||o.lang;return o.lang===t.$lang?s=n:(s=n.replace(t.$localeConfig.path,a),i.some((function(t){return t.path===s}))||(s=a)),{text:u,link:s}}))};return[].concat(Object(f.a)(this.userNav),[a])}return this.userNav},userLinks:function(){return(this.nav||[]).map((function(t){return Object.assign(Object(i.j)(t),{items:(t.items||[]).map(i.j)})}))},repoLink:function(){var t=this.$site.themeConfig.repo;return t?/^https?:/.test(t)?t:"https://github.com/".concat(t):null},repoLabel:function(){if(this.repoLink){if(this.$site.themeConfig.repoLabel)return this.$site.themeConfig.repoLabel;for(var t=this.repoLink.match(/^https?:\/\/[^/]+/)[0],e=["GitHub","GitLab","Bitbucket"],n=0;n<e.length;n++){var i=e[n];if(new RegExp(i,"i").test(t))return i}return"Source"}}}}),b=(n(252),Object(a.a)(m,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.userLinks.length||t.repoLink?n("nav",{staticClass:"nav-links"},[t._l(t.userLinks,(function(t){return n("div",{key:t.link,staticClass:"nav-item"},["links"===t.type?n("DropdownLink",{attrs:{item:t}}):n("NavLink",{attrs:{item:t}})],1)})),t._v(" "),t.repoLink?n("a",{staticClass:"repo-link",attrs:{href:t.repoLink,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n "+t._s(t.repoLabel)+"\n "),n("OutboundLink")],1):t._e()],2):t._e()}),[],!1,null,null,null).exports);function k(t,e){return t.ownerDocument.defaultView.getComputedStyle(t,null)[e]}var _={name:"Navbar",components:{SidebarButton:h,NavLinks:b,SearchBox:c,AlgoliaSearchBox:{}},data:function(){return{linksWrapMaxWidth:null}},computed:{algolia:function(){return this.$themeLocaleConfig.algolia||this.$site.themeConfig.algolia||{}},isAlgoliaSearch:function(){return this.algolia&&this.algolia.apiKey&&this.algolia.indexName}},mounted:function(){var t=this,e=parseInt(k(this.$el,"paddingLeft"))+parseInt(k(this.$el,"paddingRight")),n=function(){document.documentElement.clientWidth<719?t.linksWrapMaxWidth=null:t.linksWrapMaxWidth=t.$el.offsetWidth-e-(t.$refs.siteName&&t.$refs.siteName.offsetWidth||0)};n(),window.addEventListener("resize",n,!1)}},x=(n(253),Object(a.a)(_,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("header",{staticClass:"navbar"},[n("SidebarButton",{on:{"toggle-sidebar":function(e){return t.$emit("toggle-sidebar")}}}),t._v(" "),n("RouterLink",{staticClass:"home-link",attrs:{to:t.$localePath}},[t.$site.themeConfig.logo?n("img",{staticClass:"logo",attrs:{src:t.$withBase(t.$site.themeConfig.logo),alt:t.$siteTitle}}):t._e(),t._v(" "),t.$siteTitle?n("span",{ref:"siteName",staticClass:"site-name",class:{"can-hide":t.$site.themeConfig.logo}},[t._v(t._s(t.$siteTitle))]):t._e()]),t._v(" "),n("div",{staticClass:"links",style:t.linksWrapMaxWidth?{"max-width":t.linksWrapMaxWidth+"px"}:{}},[t.isAlgoliaSearch?n("AlgoliaSearchBox",{attrs:{options:t.algolia}}):!1!==t.$site.themeConfig.search&&!1!==t.$page.frontmatter.search?n("SearchBox"):t._e(),t._v(" "),n("NavLinks",{staticClass:"can-hide"})],1)],1)}),[],!1,null,null,null).exports),y=n(229),C=n.n(y),$={name:"PageEdit",computed:{lastUpdated:function(){return this.$page.lastUpdated},lastUpdatedText:function(){return"string"==typeof this.$themeLocaleConfig.lastUpdated?this.$themeLocaleConfig.lastUpdated:"string"==typeof this.$site.themeConfig.lastUpdated?this.$site.themeConfig.lastUpdated:"Last Updated"},editLink:function(){var t=C()(this.$page.frontmatter.editLink)?this.$site.themeConfig.editLinks:this.$page.frontmatter.editLink,e=this.$site.themeConfig,n=e.repo,i=e.docsDir,r=void 0===i?"":i,a=e.docsBranch,s=void 0===a?"master":a,o=e.docsRepo,u=void 0===o?n:o;return t&&u&&this.$page.relativePath?this.createEditLink(n,u,r,s,this.$page.relativePath):null},editLinkText:function(){return this.$themeLocaleConfig.editLinkText||this.$site.themeConfig.editLinkText||"Edit this page"}},methods:{createEditLink:function(t,e,n,r,a){return/bitbucket.org/.test(t)?(i.i.test(e)?e:t).replace(i.a,"")+"/src"+"/".concat(r,"/")+(n?n.replace(i.a,"")+"/":"")+a+"?mode=edit&spa=0&at=".concat(r,"&fileviewer=file-view-default"):(i.i.test(e)?e:"https://github.com/".concat(e)).replace(i.a,"")+"/edit"+"/".concat(r,"/")+(n?n.replace(i.a,"")+"/":"")+a}}},L=(n(254),Object(a.a)($,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("footer",{staticClass:"page-edit"},[t.editLink?n("div",{staticClass:"edit-link"},[n("a",{attrs:{href:t.editLink,target:"_blank",rel:"noopener noreferrer"}},[t._v(t._s(t.editLinkText))]),t._v(" "),n("OutboundLink")],1):t._e(),t._v(" "),t.lastUpdated?n("div",{staticClass:"last-updated"},[n("span",{staticClass:"prefix"},[t._v(t._s(t.lastUpdatedText)+":")]),t._v(" "),n("span",{staticClass:"time"},[t._v(t._s(t.lastUpdated))])]):t._e()])}),[],!1,null,null,null).exports),w=n(255),S=n.n(w),O={name:"PageNav",props:["sidebarItems"],computed:{prev:function(){return I(j.PREV,this)},next:function(){return I(j.NEXT,this)}}};var j={NEXT:{resolveLink:function(t,e){return E(t,e,1)},getThemeLinkConfig:function(t){return t.nextLinks},getPageLinkConfig:function(t){return t.frontmatter.next}},PREV:{resolveLink:function(t,e){return E(t,e,-1)},getThemeLinkConfig:function(t){return t.prevLinks},getPageLinkConfig:function(t){return t.frontmatter.prev}}};function I(t,e){var n=e.$themeConfig,r=e.$page,a=e.$route,s=e.$site,o=e.sidebarItems,u=t.resolveLink,l=t.getThemeLinkConfig,c=t.getPageLinkConfig,h=l(n),f=c(r),p=C()(f)?h:f;return!1===p?void 0:S()(p)?Object(i.k)(s.pages,p,a.path):u(r,o)}function E(t,e,n){var i=[];!function t(e,n){for(var i=0,r=e.length;i<r;i++)"group"===e[i].type?t(e[i].children||[],n):n.push(e[i])}(e,i);for(var r=0;r<i.length;r++){var a=i[r];if("page"===a.type&&a.path===decodeURIComponent(t.path))return i[r+n]}}var T=O,N=(n(263),{components:{PageEdit:L,PageNav:Object(a.a)(T,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.prev||t.next?n("div",{staticClass:"page-nav"},[n("p",{staticClass:"inner"},[t.prev?n("span",{staticClass:"prev"},[t._v("\n ←\n "),"external"===t.prev.type?n("a",{staticClass:"prev",attrs:{href:t.prev.path,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n "+t._s(t.prev.title||t.prev.path)+"\n\n "),n("OutboundLink")],1):n("RouterLink",{staticClass:"prev",attrs:{to:t.prev.path}},[t._v("\n "+t._s(t.prev.title||t.prev.path)+"\n ")])],1):t._e(),t._v(" "),t.next?n("span",{staticClass:"next"},["external"===t.next.type?n("a",{attrs:{href:t.next.path,target:"_blank",rel:"noopener noreferrer"}},[t._v("\n "+t._s(t.next.title||t.next.path)+"\n\n "),n("OutboundLink")],1):n("RouterLink",{attrs:{to:t.next.path}},[t._v("\n "+t._s(t.next.title||t.next.path)+"\n ")]),t._v("\n →\n ")],1):t._e()])]):t._e()}),[],!1,null,null,null).exports},props:["sidebarItems"]}),A=(n(264),Object(a.a)(N,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("main",{staticClass:"page"},[t._t("top"),t._v(" "),n("Content",{staticClass:"theme-default-content"}),t._v(" "),n("PageEdit"),t._v(" "),n("PageNav",t._b({},"PageNav",{sidebarItems:t.sidebarItems},!1)),t._v(" "),t._t("bottom")],2)}),[],!1,null,null,null).exports),P={name:"Sidebar",components:{SidebarLinks:n(231).default,NavLinks:b},props:["items"]},R=(n(268),{name:"Layout",components:{Home:u,Page:A,Sidebar:Object(a.a)(P,(function(){var t=this.$createElement,e=this._self._c||t;return e("aside",{staticClass:"sidebar"},[e("NavLinks"),this._v(" "),this._t("top"),this._v(" "),e("SidebarLinks",{attrs:{depth:0,items:this.items}}),this._v(" "),this._t("bottom")],2)}),[],!1,null,null,null).exports,Navbar:x},data:function(){return{isSidebarOpen:!1}},computed:{shouldShowNavbar:function(){var t=this.$site.themeConfig;return!1!==this.$page.frontmatter.navbar&&!1!==t.navbar&&(this.$title||t.logo||t.repo||t.nav||this.$themeLocaleConfig.nav)},shouldShowSidebar:function(){var t=this.$page.frontmatter;return!t.home&&!1!==t.sidebar&&this.sidebarItems.length},sidebarItems:function(){return Object(i.l)(this.$page,this.$page.regularPath,this.$site,this.$localePath)},pageClasses:function(){var t=this.$page.frontmatter.pageClass;return[{"no-navbar":!this.shouldShowNavbar,"sidebar-open":this.isSidebarOpen,"no-sidebar":!this.shouldShowSidebar},t]}},mounted:function(){var t=this;this.$router.afterEach((function(){t.isSidebarOpen=!1}))},methods:{toggleSidebar:function(t){this.isSidebarOpen="boolean"==typeof t?t:!this.isSidebarOpen,this.$emit("toggle-sidebar",this.isSidebarOpen)},onTouchStart:function(t){this.touchStart={x:t.changedTouches[0].clientX,y:t.changedTouches[0].clientY}},onTouchEnd:function(t){var e=t.changedTouches[0].clientX-this.touchStart.x,n=t.changedTouches[0].clientY-this.touchStart.y;Math.abs(e)>Math.abs(n)&&Math.abs(e)>40&&(e>0&&this.touchStart.x<=80?this.toggleSidebar(!0):this.toggleSidebar(!1))}}}),D=Object(a.a)(R,(function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"theme-container",class:t.pageClasses,on:{touchstart:t.onTouchStart,touchend:t.onTouchEnd}},[t.shouldShowNavbar?n("Navbar",{on:{"toggle-sidebar":t.toggleSidebar}}):t._e(),t._v(" "),n("div",{staticClass:"sidebar-mask",on:{click:function(e){return t.toggleSidebar(!1)}}}),t._v(" "),n("Sidebar",{attrs:{items:t.sidebarItems},on:{"toggle-sidebar":t.toggleSidebar},scopedSlots:t._u([{key:"top",fn:function(){return[t._t("sidebar-top")]},proxy:!0},{key:"bottom",fn:function(){return[t._t("sidebar-bottom")]},proxy:!0}],null,!0)}),t._v(" "),t.$page.frontmatter.home?n("Home"):n("Page",{attrs:{"sidebar-items":t.sidebarItems},scopedSlots:t._u([{key:"top",fn:function(){return[t._t("page-top")]},proxy:!0},{key:"bottom",fn:function(){return[t._t("page-bottom")]},proxy:!0}],null,!0)})],1)}),[],!1,null,null,null);e.default=D.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{291:function(s,t,a){"use strict";a.r(t);var n=a(14),e=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"开发规范"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#开发规范"}},[s._v("#")]),s._v(" 开发规范")]),s._v(" "),a("p",[s._v("编码规范好比协议,有了 "),a("code",[s._v("Http")]),s._v("、"),a("code",[s._v("TCP")]),s._v(" 等各种协议,计算机之间才能有效地通信,同样的,有了一致的编码规范,开发人员之间才能有效地合作")]),s._v(" "),a("p",[s._v("为提高软件开发质量,降低开发周期,增强代码的可重用性和易读性,使软件便于维护及移交,开发人员间便于交流和协作,本规范适用于前端团队,以作参考。")]),s._v(" "),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[s._v("注意")]),s._v(" "),a("p",[s._v("开发规范执行情况将会不定期进行 "),a("strong",[s._v("Code Review")]),s._v(",不符合规范的内容必须进行整改。")])]),s._v(" "),a("h2",{attrs:{id:"vscode-插件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#vscode-插件"}},[s._v("#")]),s._v(" VSCode 插件")]),s._v(" "),a("p",[s._v("为了使开发过程控制,错误提醒以及语法规范在代码编写过程中得到有效提醒及控制,要求使用 "),a("strong",[s._v("VSCode")]),s._v(" 必须安装以下插件")]),s._v(" "),a("ul",[a("li",[s._v("ESLint")]),s._v(" "),a("li",[s._v("HTML Snippets")]),s._v(" "),a("li",[s._v("IntelliSense for CSS class names in HTML")]),s._v(" "),a("li",[s._v("JavaScript (ES6) code snippets")]),s._v(" "),a("li",[s._v("JavaScript standardjs styled snippets")]),s._v(" "),a("li",[s._v("language-stylus")]),s._v(" "),a("li",[s._v("npm")]),s._v(" "),a("li",[s._v("npm Intellisense")]),s._v(" "),a("li",[s._v("Prettier - Code formatter")]),s._v(" "),a("li",[s._v("Sass")]),s._v(" "),a("li",[s._v("StandardJS - JavaScript Standard Style")]),s._v(" "),a("li",[s._v("Todo Tree")]),s._v(" "),a("li",[s._v("Vetur")]),s._v(" "),a("li",[s._v("Vue 2 Snippets")])]),s._v(" "),a("h2",{attrs:{id:"文件与目录命名规范"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文件与目录命名规范"}},[s._v("#")]),s._v(" 文件与目录命名规范")]),s._v(" "),a("p",[s._v("前端开发规范应用于 Web 网站、管理平台、移动端内嵌、微信小程序等范围,即使是本文档项目("),a("code",[s._v("doc-press")]),s._v(")中的文件命名,依然建议应用本规范")]),s._v(" "),a("p",[s._v("命名规范优秀的行业范例可参考 "),a("a",{attrs:{href:"https://github.com/vuejs/vue",target:"_blank",rel:"noopener noreferrer"}},[s._v("Vuejs"),a("OutboundLink")],1),s._v(" 和 "),a("a",{attrs:{href:"https://github.com/facebook/react",target:"_blank",rel:"noopener noreferrer"}},[s._v("Reactjs"),a("OutboundLink")],1),s._v(" 的源码")]),s._v(" "),a("h3",{attrs:{id:"目录命名"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#目录命名"}},[s._v("#")]),s._v(" 目录命名")]),s._v(" "),a("p",[s._v("业务功能结构示例")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[s._v("├─用户管理\n └─授权管理\n ├─角色管理\n └─用户角色绑定\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br")])]),a("p",[s._v("目录命名示例")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[s._v("✖\n├─userManage\n └─userAuthManage\n ├─RoleManage\n └─userRoleBind\n\n✔\n├─user\n └─auth\n ├─role\n └─user"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("-")]),s._v("role\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br")])]),a("p",[s._v("目录的命名,应尽可能结合上下、父子结构进行上下文信息描述,目录名自身应尽可能简洁直观。文本上使用全小写字母,有词组的情况使用 “-” 符号隔开")]),s._v(" "),a("h4",{attrs:{id:"为什么要使用小写?"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#为什么要使用小写?"}},[s._v("#")]),s._v(" 为什么要使用小写?")]),s._v(" "),a("ul",[a("li",[a("p",[s._v("易用性/可读性"),a("br"),s._v("\n小写文件名通常比大写文件名更易读,比如 "),a("code",[s._v("accessibility.txt")]),s._v(" 就比 "),a("code",[s._v("ACCESSIBILITY.TXT")]),s._v(" 易读。即使使用驼峰命名法,如 "),a("code",[s._v("UserRoleBind")]),s._v(" 或 "),a("code",[s._v("userRoleBind")]),s._v(" 不如 "),a("code",[s._v("user-role-bind")]),s._v(" 的可读性高")])]),s._v(" "),a("li",[a("p",[s._v("兼容性"),a("br"),s._v("\n不同操作系统对于大小兼容程度不一样,为了保证编译、部署后的内容在所有平台上顺利部署,目录名也应当使用小写")])]),s._v(" "),a("li",[a("p",[s._v("行业惯例"),a("br"),s._v("\n诸如 "),a("code",[s._v("Java")]),s._v("、"),a("code",[s._v(".net")]),s._v("、"),a("code",[s._v("C")]),s._v(" 等著名语言的包路径均为小写,行业巨头的良好规范也逐渐成为行业里约定俗成的规范")])])]),s._v(" "),a("h3",{attrs:{id:"文件命名"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#文件命名"}},[s._v("#")]),s._v(" 文件命名")]),s._v(" "),a("p",[s._v("文件名的规则在遵循目录命名的规则作为基础规则,但文件名的命名规则相比目录,略有不同")]),s._v(" "),a("h4",{attrs:{id:"插件-组件-页面"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#插件-组件-页面"}},[s._v("#")]),s._v(" 插件/组件/页面")]),s._v(" "),a("p",[s._v("单文件组件、插件/组件主体、页面的文件名应该始终是单词大写开头 (PascalCase)")]),s._v(" "),a("p",[s._v("单词大写开头对于代码编辑器的自动补全最为友好,因为这使得我们在 JS(X) 和模板中引用组件的方式尽可能的一致。然而,混用文件命名方式有的时候会导致大小写不敏感的文件系统的问题。")]),s._v(" "),a("p",[a("strong",[s._v("Vuejs")]),s._v(" 官方文档中,对于文件命名也有相应的 "),a("a",{attrs:{href:"https://cn.vuejs.org/v2/style-guide/#%E5%8D%95%E6%96%87%E4%BB%B6%E7%BB%84%E4%BB%B6%E6%96%87%E4%BB%B6%E7%9A%84%E5%A4%A7%E5%B0%8F%E5%86%99-%E5%BC%BA%E7%83%88%E6%8E%A8%E8%8D%90",target:"_blank",rel:"noopener noreferrer"}},[s._v("指导规范"),a("OutboundLink")],1)]),s._v(" "),a("p",[s._v("文件命名示例")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[s._v("✖\ncomponents\n └─grid\n ├─grid"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("sass\n ├─headRow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("vue\n ├─bodyrow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("vue\n ├─grid"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("vue\n └─index"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("js\n\n✔\ncomponents\n └─grid\n ├─grid"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("sass\n ├─HeadRow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("vue\n ├─BodyRow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("vue\n ├─Grid"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("vue\n └─index"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(".")]),s._v("js\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br")])]),a("h2",{attrs:{id:"css-样式预处理"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#css-样式预处理"}},[s._v("#")]),s._v(" CSS 样式预处理")]),s._v(" "),a("p",[s._v("对于 CSS 样式预处理方案,比较流行的有 "),a("code",[s._v("SASS/SCSS")]),s._v("、"),a("code",[s._v("LESS")]),s._v(" 和 "),a("code",[s._v("Stylus")]),s._v(",大体上的使用方式类似,区别在于功能的多少与扩展的能力。")]),s._v(" "),a("p",[s._v("综合各方面考虑,开发规范如下(微信小程序不在讨论范围)")]),s._v(" "),a("ul",[a("li",[s._v("前端项目统一使用 "),a("code",[s._v("SASS/SCSS")]),s._v(" 开发样式预处理内容")]),s._v(" "),a("li",[a("code",[s._v("web-open-platform")]),s._v(" 项目使用 "),a("code",[s._v("Stylus")])])]),s._v(" "),a("p",[s._v("关于文件及目录的命名遵循 "),a("a",{attrs:{href:"#%E6%96%87%E4%BB%B6%E4%B8%8E%E7%9B%AE%E5%BD%95%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83"}},[s._v("文件与目录命名")]),s._v(" 规则")]),s._v(" "),a("h3",{attrs:{id:"class-命名"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#class-命名"}},[s._v("#")]),s._v(" class 命名")]),s._v(" "),a("p",[s._v('对于 class name 的命名同样遵循全小写与单词间使用 "-" 隔开原则')]),s._v(" "),a("p",[s._v("命名示例")]),s._v(" "),a("div",{staticClass:"language-scss line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-scss"}},[a("code",[a("span",{pre:!0,attrs:{class:"token selector"}},[s._v(".user-container ")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token selector"}},[s._v("width: 100vw\n .user-header ")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token property"}},[s._v("background-color")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" #eee\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br")])]),a("h3",{attrs:{id:"样式抽象"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#样式抽象"}},[s._v("#")]),s._v(" 样式抽象")]),s._v(" "),a("p",[s._v("一个工程通常会有大量的页面、组件和插件,功能虽不同,但风格必须统一。对于主题风格部分的内容,必须提取到专用样式文件中进行维护。类似的功能或结构的样式内容在多处独立维护,是冗余且低效的,多人协同开发时须杜绝该现象发生,在进行样式定义之前应互相询问是否存在重复定义的情况。")]),s._v(" "),a("p",[a("strong",[s._v("BTW")]),a("br"),s._v("\nCSS 样式预处理,只使用最基本的结构嵌套功能是不够的,了解和使用高级特性才是提高效率和效果的最佳实践")]),s._v(" "),a("h2",{attrs:{id:"路由命名规则"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#路由命名规则"}},[s._v("#")]),s._v(" 路由命名规则")]),s._v(" "),a("p",[s._v("在路由(Vue Router)的命名中,依然遵循 "),a("a",{attrs:{href:"#%E6%96%87%E4%BB%B6%E4%B8%8E%E7%9B%AE%E5%BD%95%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83"}},[s._v("文件与目录命名")]),s._v(" 规则;因为路由命名的结果最终会体现在浏览器的地址栏中,所以在路由的命名过程中依然是推荐结合业务结构的上下文级进行组合命名,内容必须做到精简、简洁,不要让最终呈现出来的地址链接过于冗长。")]),s._v(" "),a("p",[s._v("一个网站的路由结构通常两层就可以完全满足需求,所以除去页面布局结构外,大量的业务页面的路由均为同级,既然是同级,就需要通过路由的路径(path)来声明功能的业务结构")]),s._v(" "),a("p",[s._v("业务功能结构示例")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[s._v("├─系统管理\n └─用户管理\n └─角色授权管理\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br")])]),a("p",[s._v("路由命名示例")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[s._v("✖\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/systemManage/userManage/roleAuth'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n✔\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/system/user/role-auth'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br")])]),a("p",[a("strong",[s._v("现有项目命名情况改造实例")])]),s._v(" "),a("p",[s._v("以现有素+管理平台的路由设置情况进行举例")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[s._v("✖ 不推荐\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stockManager/stockType'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货类别")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stockManager/goodsClassify'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货分类")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stockManager/goodsSeries'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货系列")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stockManager/goodsUnit'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 计量组单位")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stockManager/stockBrands'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货品牌")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stockManager/stockForm'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货形态")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stockManager/stockArchives'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货档案")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n\n✔ 推荐设置\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stock/type'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货类别")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stock/category'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货分类")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stock/series'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货系列")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stock/goods-unit'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 计量组单位")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stock/brand'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货品牌")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stock/form'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货形态")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v(" path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/workbench/stock/file'")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 存货档案")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br")])]),a("p",[s._v("通常情况下,对于路由的定义,不设置 "),a("code",[s._v("name")]),s._v(" 属性,推荐仅对于使用频率较高的功能模块设置,例如登录、首页等最经常被使用的模块,另外就是业务中也经常会被多个场景中使用的情况")]),s._v(" "),a("h3",{attrs:{id:"异步加载页面-组件"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#异步加载页面-组件"}},[s._v("#")]),s._v(" 异步加载页面/组件")]),s._v(" "),a("p",[s._v("对于路由的定义推荐使用以下模式")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n path"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'/aaa/bbb'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token function-variable function"}},[s._v("component")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=>")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("import")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[s._v("'@/views/abc'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(")")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br")])])])}),[],!1,null,null,null);t.default=e.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{289:function(s,t,a){"use strict";a.r(t);var n=a(14),r=Object(n.a)({},(function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"系统交互模型"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#系统交互模型"}},[s._v("#")]),s._v(" 系统交互模型")]),s._v(" "),a("p",[a("strong",[s._v("系统交互模型")]),s._v(",描述了软件产品的网站类型项目中系统基础功能模块的流程、数据模型以及相应 API 输入输出标准格式,包含以下内容:")]),s._v(" "),a("ul",[a("li",[s._v("用户登录,包含登录形式及流程")]),s._v(" "),a("li",[s._v("认证授权方式")]),s._v(" "),a("li",[s._v("数据模型输出")])]),s._v(" "),a("p",[s._v("目标在于各端作为 "),a("strong",[s._v("数据服务供应商")]),s._v(" 或 "),a("strong",[s._v("数据应用消费者")]),s._v(" 在交互上统一行为,面向标准接口开发,使得项目新建之初可依照 "),a("strong",[s._v("系统交互模型")]),s._v(" 快速完成系统基础功能建设,从而更从容而有序应对企业后续不断增加的项目和业务")]),s._v(" "),a("h2",{attrs:{id:"基础原则"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#基础原则"}},[s._v("#")]),s._v(" 基础原则")]),s._v(" "),a("h3",{attrs:{id:"api-路径命名规则"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-路径命名规则"}},[s._v("#")]),s._v(" API 路径命名规则")]),s._v(" "),a("p",[s._v("基于 "),a("RouterLink",{attrs:{to:"/team/frontend/http.html#api-交互规则"}},[s._v("数据交互格式标准 - API 交互规则")]),s._v(" 规则, 在路径命名中应用 "),a("RouterLink",{attrs:{to:"/team/frontend/standard.html#路由命名规则"}},[s._v("开发规范 - 路由命名规则")]),s._v(" 规则,简言之特性如下")],1),s._v(" "),a("ul",[a("li",[s._v("路径使用功能/业务描述性命名,例:"),a("code",[s._v("/user/profile/del/{id}")])]),s._v(" "),a("li",[s._v("单词均使用小写方式书写")]),s._v(" "),a("li",[s._v("词组使用 "),a("code",[s._v("-")]),s._v(" 符号分隔,例:"),a("code",[s._v("/config/user-role/list")])])]),s._v(" "),a("h3",{attrs:{id:"对象、属性命名规则"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#对象、属性命名规则"}},[s._v("#")]),s._v(" 对象、属性命名规则")]),s._v(" "),a("p",[s._v("对于数据接口中输出的对象名,以及对象中的属性等内容,应使用驼峰命名法(Camel Case)")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[s._v("✖\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"user_info"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"Name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"zhangsan"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"age"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("18")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"phone_number"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"13655555555"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"admin_type"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n✔\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"userInfo"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"zhangsan"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"age"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("18")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"phoneNumber"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"13655555555"')]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"adminType"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br")])]),a("p",[a("code",[s._v("xxx_yyy_zzz")]),s._v(" 命名格式仅推荐应用于数据库(表名及表字段名)环境")]),s._v(" "),a("p",[s._v("在编程环境中,即使是变量的声明都应尽可能不使用该格式,在自动化语法检查工具中,也有相应的检查/推荐规则:"),a("a",{attrs:{href:"https://cn.eslint.org/docs/rules/camelcase",target:"_blank",rel:"noopener noreferrer"}},[s._v('ESLint - "camelcase" 规则'),a("OutboundLink")],1),s._v(",但常量的命名是个例外")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// javascript")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("MASTER_ADMIN")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("STATUS_ENABLED")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("const")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("STATUS_DISABLED")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// java")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("public")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("static")]),s._v(" final String "),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("STATUS_ENABLED")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("public")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[s._v("static")]),s._v(" final String "),a("span",{pre:!0,attrs:{class:"token constant"}},[s._v("STATUS_DISABLED")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("2")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(";")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br")])]),a("h2",{attrs:{id:"流程示意"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#流程示意"}},[s._v("#")]),s._v(" 流程示意")]),s._v(" "),a("p",[a("img",{attrs:{src:"/frontend/login-process.png",alt:"login-process"}})]),s._v(" "),a("h2",{attrs:{id:"数据模型"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#数据模型"}},[s._v("#")]),s._v(" 数据模型")]),s._v(" "),a("p",[s._v("罗列了系统功能相关的基础数据模型,此处仅列举满足系统功能的模型及元素,后续可根据实际情况进行增补修订")]),s._v(" "),a("h3",{attrs:{id:"用户"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#用户"}},[s._v("#")]),s._v(" 用户")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户 id")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"avatar"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户头像")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"companyId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户当前所属公司 id")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"companyName"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 公司名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"adminType"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 管理员类型(0:普通用户 1:主管理员 2:子管理员)")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br")])]),a("h3",{attrs:{id:"公司"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#公司"}},[s._v("#")]),s._v(" 公司")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户 id")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"logo"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户头像")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br")])]),a("h3",{attrs:{id:"菜单"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#菜单"}},[s._v("#")]),s._v(" 菜单")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("br"),a("br"),a("br"),a("br"),a("br"),a("div",{staticClass:"highlighted"},[s._v(" ")]),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"id"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 菜单 id")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"name"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 菜单名称")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"icon"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 菜单图标")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"parentId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 菜单父节点 id")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"sort"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 排列顺序")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 菜单编码")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br")])]),a("div",{staticClass:"custom-block danger"},[a("p",{staticClass:"custom-block-title"},[s._v("注意")]),s._v(" "),a("p",[a("code",[s._v("code")]),s._v(" 字段为菜单项目的编码,是前端系统中作为功能模块的唯一标识编码而定义,该编码由前端统一进行定义")])]),s._v(" "),a("h3",{attrs:{id:"权限"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#权限"}},[s._v("#")]),s._v(" 权限")]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("div",{staticClass:"highlight-lines"},[a("br"),a("div",{staticClass:"highlighted"},[s._v(" ")]),a("br"),a("br"),a("br"),a("br"),a("br")]),a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("code"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 权限数据节点输出,内容根据具体系统情况而定")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br")])]),a("p",[s._v("此处的 "),a("code",[s._v("code")]),s._v(" 与上述 "),a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#菜单"}},[s._v("菜单模型")]),s._v(" 中的 "),a("code",[s._v("code")]),s._v(" 属性对应,代表了某个功能模块")],1),s._v(" "),a("h2",{attrs:{id:"api-接口"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#api-接口"}},[s._v("#")]),s._v(" API 接口")]),s._v(" "),a("p",[s._v("系统功能模块 API 接口,内容仅为请求成功后返回的数据格式,完整数据交换格式请参考:"),a("RouterLink",{attrs:{to:"/team/frontend/http.html"}},[s._v("数据交互格式标准")])],1),s._v(" "),a("h3",{attrs:{id:"图形验证码初始化"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#图形验证码初始化"}},[s._v("#")]),s._v(" 图形验证码初始化")]),s._v(" "),a("p",[s._v("图形验证码使用的是极验图形验证码,根据返回的数据初始化图形验证码插件")]),s._v(" "),a("p",[s._v("接口路径: "),a("code",[s._v("/auth/init-captcha")])]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 入参")]),s._v("\n无\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 返回数据")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 该格式为极验插件的标准数据格式")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"success"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"gt"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"challenge"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"newCaptcha"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br")])]),a("h3",{attrs:{id:"密码登录"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#密码登录"}},[s._v("#")]),s._v(" 密码登录")]),s._v(" "),a("p",[s._v("使用 "),a("strong",[s._v("用户名")]),s._v(" 和 "),a("strong",[s._v("密码")]),s._v(" 进行登录")]),s._v(" "),a("p",[s._v("接口路径:"),a("code",[s._v("/auth/pwd-login")])]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 入参")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"username"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户名")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"password"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 密码")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 返回数据")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"access"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"accessToken"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"expiresIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br")])]),a("h3",{attrs:{id:"获取手机短信验证码"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#获取手机短信验证码"}},[s._v("#")]),s._v(" 获取手机短信验证码")]),s._v(" "),a("p",[s._v("使用 "),a("strong",[s._v("手机号")]),s._v(" 获得验证码用于系统登录,成功访问接口后,相应手机号的手机将收到包含验证码的短信")]),s._v(" "),a("p",[s._v("接口路径:"),a("code",[s._v("/auth/sms-code")])]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 入参")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"phone"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 手机号")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 返回数据")]),s._v("\n无\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br")])]),a("h3",{attrs:{id:"手机短信验证码登录"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#手机短信验证码登录"}},[s._v("#")]),s._v(" 手机短信验证码登录")]),s._v(" "),a("p",[s._v("使用 "),a("strong",[s._v("手机号")]),s._v(" 和 "),a("strong",[s._v("验证码")]),s._v(" 进行登录")]),s._v(" "),a("p",[s._v("接口路径:"),a("code",[s._v("/auth/sms-login")])]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 入参")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"phone"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 手机号")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 短信验证码")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 返回数据")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"access"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"accessToken"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"expiresIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br")])]),a("h3",{attrs:{id:"获取当前用户数据"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#获取当前用户数据"}},[s._v("#")]),s._v(" 获取当前用户数据")]),s._v(" "),a("p",[s._v("在使用 "),a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#密码登录"}},[s._v("密码登录")]),s._v(" 或 "),a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#手机短信验证码登录"}},[s._v("手机短信验证码登录")]),s._v(" 登录成功后,获取当前用户的系统功能模型集合,系统根据该模型集合自行进行数据转换、过滤以及缓存,完成网站基础框架功能初始化")],1),s._v(" "),a("p",[s._v("接口路径:"),a("code",[s._v("/auth/profile")])]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 入参")]),s._v("\n无\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 返回数据")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"user"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 用户模型")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"companys"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 公司模型")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"menus"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 菜单模型")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"permission"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("菜单节点编码"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 权限数据节点")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("...")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br"),a("span",{staticClass:"line-number"},[s._v("16")]),a("br"),a("span",{staticClass:"line-number"},[s._v("17")]),a("br"),a("span",{staticClass:"line-number"},[s._v("18")]),a("br"),a("span",{staticClass:"line-number"},[s._v("19")]),a("br"),a("span",{staticClass:"line-number"},[s._v("20")]),a("br"),a("span",{staticClass:"line-number"},[s._v("21")]),a("br"),a("span",{staticClass:"line-number"},[s._v("22")]),a("br"),a("span",{staticClass:"line-number"},[s._v("23")]),a("br"),a("span",{staticClass:"line-number"},[s._v("24")]),a("br"),a("span",{staticClass:"line-number"},[s._v("25")]),a("br"),a("span",{staticClass:"line-number"},[s._v("26")]),a("br"),a("span",{staticClass:"line-number"},[s._v("27")]),a("br"),a("span",{staticClass:"line-number"},[s._v("28")]),a("br"),a("span",{staticClass:"line-number"},[s._v("29")]),a("br"),a("span",{staticClass:"line-number"},[s._v("30")]),a("br"),a("span",{staticClass:"line-number"},[s._v("31")]),a("br"),a("span",{staticClass:"line-number"},[s._v("32")]),a("br")])]),a("p",[s._v("数据节点与数据模型的对应关系")]),s._v(" "),a("table",[a("thead",[a("tr",[a("th",[s._v("数据节点")]),s._v(" "),a("th",[s._v("数据模型")])])]),s._v(" "),a("tbody",[a("tr",[a("td",[s._v("user")]),s._v(" "),a("td",[a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#用户"}},[s._v("用户模型")])],1)]),s._v(" "),a("tr",[a("td",[s._v("companys")]),s._v(" "),a("td",[a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#公司"}},[s._v("公司模型")])],1)]),s._v(" "),a("tr",[a("td",[s._v("menus")]),s._v(" "),a("td",[a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#菜单"}},[s._v("菜单模型")])],1)]),s._v(" "),a("tr",[a("td",[s._v("permission")]),s._v(" "),a("td",[a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#权限"}},[s._v("权限模型")])],1)])])]),s._v(" "),a("h3",{attrs:{id:"切换公司"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#切换公司"}},[s._v("#")]),s._v(" 切换公司")]),s._v(" "),a("p",[s._v("切换用户当前所属公司,该操作相当于用户重新登录,所以需要重新分发用户的访问令牌。在完成公司切换的操作后,前端系统会自行再次访问 "),a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#获取当前用户数据"}},[s._v("获取当前用户数据")]),s._v(" 接口,更新用户信息中当前所属公司等相关信息")],1),s._v(" "),a("p",[s._v("接口路径:"),a("code",[s._v("/auth/switch-company")])]),s._v(" "),a("div",{staticClass:"language-js line-numbers-mode"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 入参")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"companyId"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number "),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 待切换的公司 id")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("// 返回数据")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"code"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"data"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"access"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("{")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"accessToken"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" string"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(",")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"expiresIn"')]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(":")]),s._v(" number\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("}")]),s._v("\n")])]),s._v(" "),a("div",{staticClass:"line-numbers-wrapper"},[a("span",{staticClass:"line-number"},[s._v("1")]),a("br"),a("span",{staticClass:"line-number"},[s._v("2")]),a("br"),a("span",{staticClass:"line-number"},[s._v("3")]),a("br"),a("span",{staticClass:"line-number"},[s._v("4")]),a("br"),a("span",{staticClass:"line-number"},[s._v("5")]),a("br"),a("span",{staticClass:"line-number"},[s._v("6")]),a("br"),a("span",{staticClass:"line-number"},[s._v("7")]),a("br"),a("span",{staticClass:"line-number"},[s._v("8")]),a("br"),a("span",{staticClass:"line-number"},[s._v("9")]),a("br"),a("span",{staticClass:"line-number"},[s._v("10")]),a("br"),a("span",{staticClass:"line-number"},[s._v("11")]),a("br"),a("span",{staticClass:"line-number"},[s._v("12")]),a("br"),a("span",{staticClass:"line-number"},[s._v("13")]),a("br"),a("span",{staticClass:"line-number"},[s._v("14")]),a("br"),a("span",{staticClass:"line-number"},[s._v("15")]),a("br")])]),a("p",[s._v("事实上有多个接口均为获取用户访问令牌的功能:")]),s._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#密码登录"}},[s._v("密码登录")])],1),s._v(" "),a("li",[a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#获取当前用户数据"}},[s._v("获取当前用户数据")])],1),s._v(" "),a("li",[a("RouterLink",{attrs:{to:"/team/frontend/system-model.html#切换公司"}},[s._v("切换公司")])],1)]),s._v(" "),a("p",[s._v("数据格式及处理规则请参考 "),a("RouterLink",{attrs:{to:"/team/frontend/http.html#登录授权"}},[s._v("数据交互格式标准 - 登录授权")])],1)])}),[],!1,null,null,null);t.default=r.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],{287:function(t,a,r){"use strict";r.r(a);var e=r(14),s=Object(e.a)({},(function(){var t=this,a=t.$createElement,r=t._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"网页能力开放平台"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#网页能力开放平台"}},[t._v("#")]),t._v(" 网页能力开放平台")]),t._v(" "),r("h2",{attrs:{id:"平台介绍及使用规范"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#平台介绍及使用规范"}},[t._v("#")]),t._v(" 平台介绍及使用规范")]),t._v(" "),r("h4",{attrs:{id:"背景情况说明"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#背景情况说明"}},[t._v("#")]),t._v(" 背景情况说明")]),t._v(" "),r("p",[r("em",[t._v("网页能力开放平台")]),t._v(" 作为专为 "),r("code",[t._v("App")]),t._v(" 中内嵌或在 "),r("code",[t._v("Desktop / Mobile")]),t._v(" 独立功能网页输出的功能平台,将移动、多场景共享使用的内容聚合于一个独立工程中,以达到专项优化,专项处理的功能需求")]),t._v(" "),r("p",[t._v("平台使用 "),r("a",{attrs:{href:"https://getbootstrap.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Bootstrap"),r("OutboundLink")],1),t._v(" UI 框架的 4.x 版本的样式作为基础框架样式库使用, 原则上如果没有极其特殊需求,不允许再引用其他样式进行使用")]),t._v(" "),r("h4",{attrs:{id:"项目名称"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#项目名称"}},[t._v("#")]),t._v(" 项目名称")]),t._v(" "),r("p",[r("code",[t._v("web-open-platform")])]),t._v(" "),r("h4",{attrs:{id:"内容管理规范"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#内容管理规范"}},[t._v("#")]),t._v(" 内容管理规范")]),t._v(" "),r("ul",[r("li",[t._v("内容以项目作为基本单位建立目录")]),t._v(" "),r("li",[t._v("使用 "),r("a",{attrs:{href:"https://getbootstrap.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Bootstrap"),r("OutboundLink")],1),t._v(" 作为基础 UI 框架(仅使用样式),为界面中排版布局,样式组件所用")]),t._v(" "),r("li",[t._v("样式表预处理语言必须使用 "),r("a",{attrs:{href:"https://www.zhangxinxu.com/jq/stylus/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Stylus"),r("OutboundLink")],1)])]),t._v(" "),r("h4",{attrs:{id:"路由命令规则"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#路由命令规则"}},[t._v("#")]),t._v(" 路由命令规则")]),t._v(" "),r("div",{staticClass:"language- line-numbers-mode"},[r("pre",{pre:!0,attrs:{class:"language-text"}},[r("code",[t._v("project/function[/children-function]\n")])]),t._v(" "),r("div",{staticClass:"line-numbers-wrapper"},[r("span",{staticClass:"line-number"},[t._v("1")]),r("br")])]),r("p",[r("strong",[t._v("示例")])]),t._v(" "),r("p",[t._v("能力展示平台的公告详情功能: "),r("code",[t._v("http://web-open-platform.com/ability/announcement")])]),t._v(" "),r("h2",{attrs:{id:"现有项目-模块"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#现有项目-模块"}},[t._v("#")]),t._v(" 现有项目/模块")]),t._v(" "),r("p",[t._v("陈列出在 "),r("strong",[t._v("网页能力开放平台")]),t._v(" 中已完成或正在进行中的项目")]),t._v(" "),r("h3",{attrs:{id:"app-内嵌网页"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#app-内嵌网页"}},[t._v("#")]),t._v(" App 内嵌网页")]),t._v(" "),r("p",[t._v("应用于 "),r("strong",[t._v("App(Android、IOS)")]),t._v(" 内嵌使用")]),t._v(" "),r("h4",{attrs:{id:"能力展示"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#能力展示"}},[t._v("#")]),t._v(" 能力展示")]),t._v(" "),r("ul",[r("li",[r("strong",[t._v("活动 / 公告内容展示")]),t._v(" "),r("Badge",{attrs:{text:"完成",type:"success",vertical:"middle"}}),r("br"),t._v("\n提供展示活动 / 公告的标题、内容以及投票交互能力,若有交互功能场景则在提交数据后,通知客户端处理后续功能")],1)]),t._v(" "),r("h4",{attrs:{id:"素-管理平台"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#素-管理平台"}},[t._v("#")]),t._v(" 素+管理平台")]),t._v(" "),r("ul",[r("li",[r("strong",[t._v("用户协议")]),t._v(" "),r("Badge",{attrs:{text:"完成",vertical:"middle"}}),r("br"),t._v("\n提供素+管理平台用户协议详情,内容来自管理后台")],1),t._v(" "),r("li",[r("strong",[t._v("隐私政策")]),t._v(" "),r("Badge",{attrs:{text:"完成",vertical:"middle"}}),r("br"),t._v("\n提供素+管理平台隐私政策详情,内容来自管理后台")],1),t._v(" "),r("li",[r("strong",[t._v("App 版本更新详情")]),t._v(" "),r("Badge",{attrs:{text:"完成",vertical:"middle"}}),r("br"),t._v("\n提供 App 版本更新详情内容展示,内容来自管理后台")],1),t._v(" "),r("li",[r("strong",[t._v("仓储管理预警消息详情")]),t._v(" "),r("Badge",{attrs:{text:"完成",vertical:"middle"}}),r("br"),t._v("\n提供预警消息详情内容查看,其中又分为 “产品” 与 “仓库” 两种类型")],1)]),t._v(" "),r("h3",{attrs:{id:"独立功能页"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#独立功能页"}},[t._v("#")]),t._v(" 独立功能页")]),t._v(" "),r("p",[t._v("应用于 "),r("strong",[t._v("Desktop、Mobile")]),t._v(" 的独立功能网页")]),t._v(" "),r("h4",{attrs:{id:"素-管理平台-2"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#素-管理平台-2"}},[t._v("#")]),t._v(" 素+管理平台")]),t._v(" "),r("ul",[r("li",[r("strong",[t._v("App 版本更新详情")]),t._v(" "),r("Badge",{attrs:{text:"完成",vertical:"middle"}}),r("br"),t._v("\n提供 App 版本更新详情内容展示,内容来自管理后台")],1),t._v(" "),r("li",[r("strong",[t._v("仓储管理预警消息详情")]),t._v(" "),r("Badge",{attrs:{text:"完成",vertical:"middle"}}),r("br"),t._v("\n提供预警消息详情内容查看,其中又分为 “产品” 与 “仓库” 两种类型")],1)])])}),[],!1,null,null,null);a.default=s.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],{285:function(t,s,e){"use strict";e.r(s);var n=e(14),r=Object(n.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"ios-苹果端"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#ios-苹果端"}},[this._v("#")]),this._v(" IOS 苹果端")])])}),[],!1,null,null,null);s.default=r.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{283:function(t,s,e){"use strict";e.r(s);var n=e(14),r=Object(n.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"测试组"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#测试组"}},[this._v("#")]),this._v(" 测试组")])])}),[],!1,null,null,null);s.default=r.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{292:function(t,r,e){"use strict";e.r(r);var a=e(14),n=Object(a.a)({},(function(){var t=this,r=t.$createElement,e=t._self._c||r;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"协作工具"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#协作工具"}},[t._v("#")]),t._v(" 协作工具")]),t._v(" "),e("p",[t._v("公司团队协作工具站点")]),t._v(" "),e("h2",{attrs:{id:"项目研发管理"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#项目研发管理"}},[t._v("#")]),t._v(" 项目研发管理")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://192.168.100.254:8088/zentao/",target:"_blank",rel:"noopener noreferrer"}},[t._v("禅道"),e("OutboundLink")],1),t._v(" Bug 管理平台")]),t._v(" "),e("li",[e("a",{attrs:{href:"https://mp.weixin.qq.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("微信公众平台"),e("OutboundLink")],1),t._v(" 微信小程序、微信公众号开发管理,开发文档中心")])]),t._v(" "),e("h2",{attrs:{id:"api-管理平台"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#api-管理平台"}},[t._v("#")]),t._v(" API 管理平台")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://115.29.205.99:3000/",target:"_blank",rel:"noopener noreferrer"}},[t._v("YAPI"),e("OutboundLink")],1),t._v(" 服务端提供 API 的描述与快速测试平台")])]),t._v(" "),e("h2",{attrs:{id:"资源管理"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#资源管理"}},[t._v("#")]),t._v(" 资源管理")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"http://192.168.100.254:3000/",target:"_blank",rel:"noopener noreferrer"}},[t._v("git"),e("OutboundLink")],1),t._v(" 使用 gogs 搭建的基于 git 的代码版本控制管理平台,现有公司项目代码均维护在此")]),t._v(" "),e("li",[e("a",{attrs:{href:"svn://192.168.100.254/repo/%E9%A1%B9%E7%9B%AE%E6%96%87%E4%BB%B6"}},[t._v("svn")]),t._v(" 设计原型、UI、文档等内容")])]),t._v(" "),e("h2",{attrs:{id:"产品设计"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#产品设计"}},[t._v("#")]),t._v(" 产品设计")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://lanhuapp.com",target:"_blank",rel:"noopener noreferrer"}},[t._v("蓝湖"),e("OutboundLink")],1),t._v(" UI 预览查看")])])])}),[],!1,null,null,null);r.default=n.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[26],{211:function(n,w,o){}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{227:function(t,e,n){},269:function(t,e,n){"use strict";var i=n(227);n.n(i).a},275:function(t,e,n){"use strict";n.r(e);var i={functional:!0,props:{type:{type:String,default:"tip"},text:String,vertical:{type:String,default:"top"}},render:function(t,e){var n=e.props,i=e.slots;return t("span",{class:["badge",n.type],style:{verticalAlign:n.vertical}},n.text||i().default)}},r=(n(269),n(14)),a=Object(r.a)(i,void 0,void 0,!1,null,"15b7b770",null);e.default=a.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{271:function(t,e,s){"use strict";s.r(e);var n=["There's nothing here.","How did we get here?","That's a Four-Oh-Four.","Looks like we've got some broken links."],o={methods:{getMsg:function(){return n[Math.floor(Math.random()*n.length)]}}},i=s(14),h=Object(i.a)(o,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"theme-container"},[e("div",{staticClass:"theme-default-content"},[e("h1",[this._v("404")]),this._v(" "),e("blockquote",[this._v(this._s(this.getMsg()))]),this._v(" "),e("RouterLink",{attrs:{to:"/"}},[this._v("\n Take me home.\n ")])],1)])}),[],!1,null,null,null);e.default=h.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{277:function(t,v,_){"use strict";_.r(v);var a=_(14),r=Object(a.a)({},(function(){var t=this,v=t.$createElement,_=t._self._c||v;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"查询导览"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#查询导览"}},[t._v("#")]),t._v(" 查询导览")]),t._v(" "),_("h2",{attrs:{id:"一、买买买文档平台简介"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#一、买买买文档平台简介"}},[t._v("#")]),t._v(" 一、买买买文档平台简介")]),t._v(" "),_("p",[t._v("买买买文档平台是基于买买买公司内部使用知识存储开放平台,提供买买买员工参与项目管理、研发、运维相关的各类查询文档,例如项目管控、开发规范、行政管理等。汇聚了买买买所有研发项目、产品重要知识信息,推进员工知识共享与交流,以便随取随用。")]),t._v(" "),_("h2",{attrs:{id:"二、快速浏览入口"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#二、快速浏览入口"}},[t._v("#")]),t._v(" 二、快速浏览入口")]),t._v(" "),_("ul",[_("li",[_("h4",{attrs:{id:"项目清单"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#项目清单"}},[t._v("#")]),t._v(" 项目清单")])])]),t._v(" "),_("ol",[_("li",[_("p",[_("a",{attrs:{href:""}},[t._v("能力展示APP")])]),t._v(" "),_("p",[t._v("简介、下载体验、版本规划")])]),t._v(" "),_("li",[_("p",[t._v("素+信息化:在线订单APP")])]),t._v(" "),_("li",[_("p",[t._v("素+信息化:仓储管理APP")])]),t._v(" "),_("li",[_("p",[t._v("关注事项APP")])]),t._v(" "),_("li",[_("p",[t._v("便捷答题小程序")])]),t._v(" "),_("li",[_("p",[t._v("票选小助手小程序")])]),t._v(" "),_("li",[_("p",[t._v("海鲜干货人家小程序")])]),t._v(" "),_("li",[_("p",[t._v("我的旺铺小程序")])]),t._v(" "),_("li",[_("p",[t._v("买买买公司官网")])])]),t._v(" "),_("ul",[_("li",[_("h4",{attrs:{id:"团队文档"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#团队文档"}},[t._v("#")]),t._v(" 团队文档")])])]),t._v(" "),_("ol",[_("li",[_("RouterLink",{attrs:{to:"/team/frontend/"}},[t._v("前端开发文档")])],1),t._v(" "),_("li",[t._v("IOS端开发文档")]),t._v(" "),_("li",[t._v("安卓端开发文档")]),t._v(" "),_("li",[t._v("服务端开发文档")]),t._v(" "),_("li",[t._v("测试端文档")]),t._v(" "),_("li",[t._v("产品设计文档")])]),t._v(" "),_("ul",[_("li",[_("h4",{attrs:{id:"项目管控"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#项目管控"}},[t._v("#")]),t._v(" 项目管控")])])]),t._v(" "),_("ol",[_("li",[t._v("阶段输出结果")]),t._v(" "),_("li",[t._v("变更控制")]),t._v(" "),_("li",[t._v("问题日志")]),t._v(" "),_("li",[t._v("常用文档下载")])]),t._v(" "),_("ul",[_("li",[_("h4",{attrs:{id:"行政管理"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#行政管理"}},[t._v("#")]),t._v(" 行政管理")])]),t._v(" "),_("li",[_("h4",{attrs:{id:"协同工具"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#协同工具"}},[t._v("#")]),t._v(" 协同工具")])])]),t._v(" "),_("ol",[_("li",[_("p",[t._v("项目研发管理")])]),t._v(" "),_("li",[_("p",[t._v("API管理平台")])]),t._v(" "),_("li",[_("p",[t._v("资源管理")])])]),t._v(" "),_("h2",{attrs:{id:"三、文档使用权限说明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#三、文档使用权限说明"}},[t._v("#")]),t._v(" 三、文档使用权限说明")]),t._v(" "),_("p",[t._v("对文档使用定制保密说明")])])}),[],!1,null,null,null);v.default=r.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{272:function(t,s,e){"use strict";e.r(s);var n=e(14),r=Object(n.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"行政管理"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#行政管理"}},[this._v("#")]),this._v(" 行政管理")])])}),[],!1,null,null,null);s.default=r.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{278:function(t,e,r){"use strict";r.r(e);var a=r(14),s=Object(a.a)({},(function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"文档写作平台使用入门"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#文档写作平台使用入门"}},[t._v("#")]),t._v(" 文档写作平台使用入门")]),t._v(" "),r("p",[t._v("介绍文档写作平台的运行方式,如何编写文档及各方面资源的内容组织")]),t._v(" "),r("h2",{attrs:{id:"文档写作平台项目地址"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#文档写作平台项目地址"}},[t._v("#")]),t._v(" 文档写作平台项目地址")]),t._v(" "),r("p",[r("a",{attrs:{href:"http://192.168.100.254:3000/frontend/doc-press",target:"_blank",rel:"noopener noreferrer"}},[t._v("doc-press"),r("OutboundLink")],1)]),t._v(" "),r("h2",{attrs:{id:"项目运行方式"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#项目运行方式"}},[t._v("#")]),t._v(" 项目运行方式")]),t._v(" "),r("ol",[r("li",[t._v("安装 "),r("code",[t._v("nodejs")]),t._v(",在 "),r("a",{attrs:{href:"http://nodejs.cn/download/",target:"_blank",rel:"noopener noreferrer"}},[t._v("nodejs 官网"),r("OutboundLink")],1),t._v(" 下载并安装"),r("br"),t._v(" "),r("em",[t._v("windows 下建议下载 "),r("code",[t._v("Windows 安装包 (.msi) 64 位")])])]),t._v(" "),r("li",[t._v("安装 "),r("code",[t._v("yarn")]),t._v(",在 "),r("a",{attrs:{href:"https://www.yarnpkg.com/zh-Hant/docs/install#windows-stable",target:"_blank",rel:"noopener noreferrer"}},[t._v("yarn 官网"),r("OutboundLink")],1),t._v(" 下载并安装")]),t._v(" "),r("li",[t._v("安装 "),r("code",[t._v("git")]),t._v(",在 "),r("a",{attrs:{href:"https://git-scm.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("git 官网"),r("OutboundLink")],1),t._v(" 下载并安装好")]),t._v(" "),r("li",[t._v("下载并安装 git 图形化工具,推荐使用的有 "),r("a",{attrs:{href:"https://tortoisegit.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("TortoiseGit"),r("OutboundLink")],1),t._v("、"),r("a",{attrs:{href:"https://www.sourcetreeapp.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("SourceTree"),r("OutboundLink")],1),t._v("、"),r("a",{attrs:{href:"https://git-fork.com/windows",target:"_blank",rel:"noopener noreferrer"}},[t._v("Fork"),r("OutboundLink")],1)]),t._v(" "),r("li",[t._v("克隆文档写作平台到本地环境")]),t._v(" "),r("li",[t._v("使用命令行进入到文档写作平台目录")]),t._v(" "),r("li",[t._v("运行命令 "),r("code",[t._v("yarn install")]),t._v(" 安装依赖库")]),t._v(" "),r("li",[t._v("运行命令 "),r("code",[t._v("yarn dev")]),t._v(" 运行本地开发平台")]),t._v(" "),r("li",[t._v("运行完成后,命令行界面中会提示访问地址,在浏览器中访问该地址即可开始进行写作,效果如下")]),t._v(" "),r("li",[t._v("此时可开始写作,并在网页中实时预览效果")]),t._v(" "),r("li",[t._v("写作完成后,将内容提交并推送到项目托管地址")])]),t._v(" "),r("div",{staticClass:"language-bash line-numbers-mode"},[r("pre",{pre:!0,attrs:{class:"language-bash"}},[r("code",[t._v("success "),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("[")]),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("16")]),t._v(":22:08"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("]")]),t._v(" Build 42920d finished "),r("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("in")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token number"}},[t._v("3668")]),t._v(" ms"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v("!")]),t._v("\n"),r("span",{pre:!0,attrs:{class:"token operator"}},[t._v(">")]),t._v(" VuePress dev server listening at http://localhost:8080/\n")])]),t._v(" "),r("div",{staticClass:"line-numbers-wrapper"},[r("span",{staticClass:"line-number"},[t._v("1")]),r("br"),r("span",{staticClass:"line-number"},[t._v("2")]),r("br")])]),r("p",[t._v("只进行文档写作,不希望本地运行网站服务的情况,仅需执行 "),r("code",[t._v("3、4、5、11")]),t._v(" 步骤")]),t._v(" "),r("h2",{attrs:{id:"文档写作"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#文档写作"}},[t._v("#")]),t._v(" 文档写作")]),t._v(" "),r("p",[t._v("Markdown 标记语言语法")]),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://www.w3cschool.cn/markdownyfsm/markdownyfsm-odm6256r.html",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://www.w3cschool.cn"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"https://www.markdown.cn/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://www.markdown.cn/"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"https://markdown-zh.readthedocs.io/en/latest/",target:"_blank",rel:"noopener noreferrer"}},[t._v("https://markdown-zh.readthedocs.io/en/latest/"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"http://wow.kuapp.com/markdown/",target:"_blank",rel:"noopener noreferrer"}},[t._v("http://wow.kuapp.com/markdown/"),r("OutboundLink")],1)])]),t._v(" "),r("p",[t._v("推荐编辑器")]),t._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://typora.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Typora"),r("OutboundLink")],1)]),t._v(" "),r("li",[r("a",{attrs:{href:"https://code.visualstudio.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("VSCode"),r("OutboundLink")],1)])]),t._v(" "),r("blockquote",[r("p",[t._v("文档写作平台项目基于 VuePress 构建,具体配置内容请查看 "),r("a",{attrs:{href:"https://vuepress.vuejs.org/zh/",target:"_blank",rel:"noopener noreferrer"}},[t._v("这里"),r("OutboundLink")],1)])]),t._v(" "),r("h3",{attrs:{id:"写作方式"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#写作方式"}},[t._v("#")]),t._v(" 写作方式")]),t._v(" "),r("p",[t._v("文档写作平台所有编写的文档均是基于 "),r("strong",[t._v("Markdown")]),t._v(" 标记语言来编写,它的特点是使用简单的符号即可清晰地描述整个文档结构和排版,仅需要普通文本编辑器即可完成,不像 Word、Excel 等格式必须安装 Microsft Office 才可以正常使用;目前 Markdown 标记语言已经被广泛使用于国内、国际各种记事本或笔记平台、知识平台、写作平台,成为一种流行的文档编写格式,且范围不仅仅是软件行业")]),t._v(" "),r("p",[t._v("在网站的内容组织上,一个目录或站点的默认访问位置是 "),r("code",[t._v("index.html")]),t._v(",这是整个互联网环境、网页服务平台、网页服务软件等组织共同形成的约定俗成的结果")]),t._v(" "),r("p",[t._v("在以 Markdown 标记语言为主要格式和形式的文档平台中,大家约定俗成的默认文档为 "),r("code",[t._v("README.md")]),t._v("(注意大小写),其功能与 "),r("code",[t._v("index.html")]),t._v(" 一致,可以将其理解为是一个目录或是一个文档站点的里的 "),r("strong",[t._v("首页")])]),t._v(" "),r("p",[r("strong",[t._v("HTML")])]),t._v(" "),r("p",[t._v("实际上,在文档写作平台中,所有的 Markdown 文档最终会被编译为 HTML 格式的网页作为最终展现,所以在内容的编写上可以放心使用部分 HTML 标签的排版,建议是排版方面的标签,"),r("strong",[t._v("表单类型的标签请尽可能不要使用")]),t._v(",以免出现不可预期的问题")]),t._v(" "),r("h3",{attrs:{id:"资源内容添加"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#资源内容添加"}},[t._v("#")]),t._v(" 资源内容添加")]),t._v(" "),r("p",[t._v("在文档写作过程中,除了文档描述自身,往往需要引用图片、跳转链接和文件下载等需求来丰富文档内容")]),t._v(" "),r("h4",{attrs:{id:"资源内容说明"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#资源内容说明"}},[t._v("#")]),t._v(" 资源内容说明")]),t._v(" "),r("p",[t._v("资源可分为以下两类")]),t._v(" "),r("ul",[r("li",[t._v("图片")]),t._v(" "),r("li",[t._v("文档(Word、Excel、PowerPoint或其它类型文档)")])]),t._v(" "),r("p",[t._v("其中,图片可在文档中直接显示,而其它类型文件可作为下载附件的方式挂载在文档中")]),t._v(" "),r("p",[t._v("所有资源存放位置:")]),t._v(" "),r("p",[r("code",[t._v("/.vuepress/public/")])]),t._v(" "),r("div",{staticClass:"custom-block danger"},[r("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),r("p",[t._v("注意:所有资源要求必须有序存放,例如根据业务类型、团队类型等形式分目录存放")])]),t._v(" "),r("h4",{attrs:{id:"资源使用方式"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#资源使用方式"}},[t._v("#")]),t._v(" 资源使用方式")]),t._v(" "),r("ul",[r("li",[t._v("图片内容")])]),t._v(" "),r("p",[t._v("假设有一张图片存放于以下位置")]),t._v(" "),r("p",[r("code",[t._v("/.vuepress/public/logo.png")])]),t._v(" "),r("p",[t._v("那么在文档中引用该图片的方式为")]),t._v(" "),r("p",[r("code",[t._v("![logo](/logo.png)")])]),t._v(" "),r("p",[t._v("渲染结果")]),t._v(" "),r("p",[r("img",{attrs:{src:"/logo.png",alt:"logo"}})]),t._v(" "),r("p",[t._v("可以看到 "),r("code",[t._v("/")]),t._v(" 资源引用的根位置指向了 "),r("code",[t._v("/.vuepress/public/")])]),t._v(" "),r("div",{staticClass:"custom-block danger"},[r("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),r("p",[t._v("如果设置的图片是项目 Logo、二维码(App 或 小程序等),必须按照以下格式使用")]),t._v(" "),r("div",{staticClass:"language-html line-numbers-mode"},[r("pre",{pre:!0,attrs:{class:"language-html"}},[r("code",[r("span",{pre:!0,attrs:{class:"token tag"}},[r("span",{pre:!0,attrs:{class:"token tag"}},[r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("img")]),t._v(" "),r("span",{pre:!0,attrs:{class:"token attr-name"}},[t._v("src")]),r("span",{pre:!0,attrs:{class:"token attr-value"}},[r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')]),t._v("/xxx.jpg"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')])]),t._v(" "),r("span",{pre:!0,attrs:{class:"token attr-name"}},[t._v("class")]),r("span",{pre:!0,attrs:{class:"token attr-value"}},[r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("=")]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')]),t._v("img"),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')])]),r("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),t._v("\n")])]),t._v(" "),r("div",{staticClass:"line-numbers-wrapper"},[r("span",{staticClass:"line-number"},[t._v("1")]),r("br")])]),r("p",[t._v("图片将以 "),r("code",[t._v("150 X 150")]),t._v(" 的统一规格(像素)显示")])]),t._v(" "),r("ul",[r("li",[t._v("文档或其它")])]),t._v(" "),r("p",[t._v("引用其它资源,区别仅为引用方式上,假设有一个文档存放于以下位置")]),t._v(" "),r("p",[r("code",[t._v("/.vuepress/public/design/file.docx")])]),t._v(" "),r("p",[t._v("该文档的引用方式为")]),t._v(" "),r("p",[r("code",[t._v("[file](/design/file.docx)")])]),t._v(" "),r("p",[t._v("根据观察可以发现,文件的引用方式与图片的引用方式上的区别仅是一个 "),r("code",[t._v("!")]),t._v(",而在描述一个链接时增加感叹号则是专用于图片显示")]),t._v(" "),r("blockquote",[r("p",[t._v("附件类型的在点击后,会直接弹出浏览器下载窗口下载该文件,所以该方式适用于与文档内容相关的附件设置")])])])}),[],!1,null,null,null);e.default=s.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{276:function(t,a,s){"use strict";s.r(a);var r=s(14),_=Object(r.a)({},(function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"项目清单"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#项目清单"}},[t._v("#")]),t._v(" 项目清单")]),t._v(" "),s("p",[t._v("汇总买买买公司目前正在开发项目清单,将实时同步各个项目开发状态。")]),t._v(" "),s("h2",{attrs:{id:"能力展示app-企业员工能力展示应用"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#能力展示app-企业员工能力展示应用"}},[t._v("#")]),t._v(" 能力展示APP - 企业员工能力展示应用")]),t._v(" "),s("p",[t._v("能力展示,用于展示企业员工能力的应用。促进员工积极去发现问题、分析问题、解决问题,并在轻松娱乐的氛围下,展示能力同时并共同营建一个和谐可持续发展的大家庭。主要功能有,企业的提问管理、部门统计、公司表彰、星数排行。")]),t._v(" "),s("h3",{attrs:{id:"下载体验"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#下载体验"}},[t._v("#")]),t._v(" 下载体验")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("IOS版本")])])]),t._v(" "),s("p",[s("img",{attrs:{src:"/ios/ability/IOS.png",alt:"IOS下载二维码"}})]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("最新功能:版本0.3.0")])]),t._v(" "),s("ol",[s("li",[s("p",[t._v("增加@功能,由提问人在提出问题时候选择@部门决定该问题的职能归属,由归属部门进行后续的评分管理,提问者不明确的戒被@部门不接受的可以@回服务小组;")])]),t._v(" "),s("li",[s("p",[t._v("消息模块改版")])]),t._v(" "),s("li",[s("p",[t._v("个人中心--待我评分入口")])]),t._v(" "),s("li",[s("p",[t._v("特殊用户同感信息的展示")])]),t._v(" "),s("li",[s("p",[t._v("用户行为数据统计组件接入")])])])])]),t._v(" "),s("h3",{attrs:{id:"敬请期待:正在开发版本0-4-0"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#敬请期待:正在开发版本0-4-0"}},[t._v("#")]),t._v(" 敬请期待:正在开发版本0.4.0")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("开发需求清单:")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"left"}},[t._v("内容")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("增加帐号切换功能。")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("增加后台数据导出功能")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理后台增加加分功能;")])])])])]),t._v(" "),s("li",[s("p",[t._v("项目里程碑:开发时间: ,提测时间: ,上线时间:")])])]),t._v(" "),s("h2",{attrs:{id:"素-信息化:在线订单app"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#素-信息化:在线订单app"}},[t._v("#")]),t._v(" 素+信息化:在线订单APP")]),t._v(" "),s("p",[t._v("素+在线下单是一款自主研发的移动销售管理应用助力企业构建组织内部的高效协作网络,让中小型制造企业在销售前端与企业内部组织和人,以驱动业务为目标,实现以客户为中心的全员高效营销协作。\u2029主要功能有,企业的产品档案管理、订单管理、客户管理")]),t._v(" "),s("h3",{attrs:{id:"下载体验-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#下载体验-2"}},[t._v("#")]),t._v(" 下载体验")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("IOS版本")])])]),t._v(" "),s("p",[s("img",{attrs:{src:"C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E5%9C%A8%E7%BA%BF%E8%AE%A2%E5%8D%95IOS.png",alt:"IOS下载二维码"}})]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("最新功能:版本1.0.5")])])])]),t._v(" "),s("ol",[s("li",[s("p",[t._v("全新设计网络框架,轻装前行。")])]),t._v(" "),s("li",[s("p",[t._v("修复已知问题,减少问题体验更好\u2029为了获得更好的用户体验,会经常在App Store上更新哦!")])]),t._v(" "),s("li",[s("p",[t._v("推荐 「设置>iTunes &App Store>自动下载>开启素+订单」")])])]),t._v(" "),s("h3",{attrs:{id:"敬请期待:正在开发版本1-1-0"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#敬请期待:正在开发版本1-1-0"}},[t._v("#")]),t._v(" 敬请期待:正在开发版本1.1.0")]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("开发需求清单:")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"left"}},[t._v("内容")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("App:产成品入库以及产成品检验扫描页新增查看历史功能(安卓)")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:出入库类型设置时,无需标识默认为入,即无需给默认标识,让用户自己选择** 出/入")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:业务地区设置,入口需要移动到销售模块中")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:分页功能最多一页展示 100 条,新增 500 条每页的选项;")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("App;出库时选择或者扫描同商品同批号时数量累加;")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:权限改动,子管理员无法修改自身以及其他子管理员的权限")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:报表行间距调整,报表中数据只展示一行超出部分缺损显示")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:销售订单列表业务区域分开展示")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台&APP:业务订单新增客户要求交期字段")])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("项目里程碑:8月19日开始,8月30日提交上线。")])])])]),t._v(" "),s("h2",{attrs:{id:"素-信息化:仓储管理app"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#素-信息化:仓储管理app"}},[t._v("#")]),t._v(" 素+信息化:仓储管理APP")]),t._v(" "),s("p",[t._v("素+仓储 是一款自主研发的仓储管理应用可便捷的通过扫一扫实现出入库自动登记。对仓库里的存货进行检查和登记存货质量状态。随时随地任意手机,电脑可查询仓库存货实时库存数据·主要功能有,企业的产品档案管理、产出登记、生产入库、其他入库、质检登记、销售出库、其他出库、库存查询")]),t._v(" "),s("h3",{attrs:{id:"下载体验-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#下载体验-3"}},[t._v("#")]),t._v(" 下载体验")]),t._v(" "),s("p",[s("img",{attrs:{src:"C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E4%BB%93%E5%82%A8IOS.png",alt:"IOS下载二维码"}})]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("最新功能:版本1.0.9")])])])]),t._v(" "),s("ol",[s("li",[s("p",[t._v("全新设计网络框架,轻装前行。")])]),t._v(" "),s("li",[s("p",[t._v("修复已知问题,减少问题体验更好\u2029为了获得更好的用户体验,会经常在App Store上更新哦")])]),t._v(" "),s("li",[s("p",[t._v("推荐 「设置>iTunes &App Store>自动下载>开启素+仓储」")])])]),t._v(" "),s("h3",{attrs:{id:"敬请期待:正在开发版本1-1-0-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#敬请期待:正在开发版本1-1-0-2"}},[t._v("#")]),t._v(" 敬请期待:正在开发版本1.1.0")]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("开发需求清单:")])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",{staticStyle:{"text-align":"left"}},[t._v("内容")])])]),t._v(" "),s("tbody",[s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("App:产成品入库以及产成品检验扫描页新增查看历史功能(安卓)")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:出入库类型设置时,无需标识默认为入,即无需给默认标识,让用户自己选择** 出/入")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:业务地区设置,入口需要移动到销售模块中")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:分页功能最多一页展示 100 条,新增 500 条每页的选项;")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("App;出库时选择或者扫描同商品同批号时数量累加;")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:权限改动,子管理员无法修改自身以及其他子管理员的权限")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:报表行间距调整,报表中数据只展示一行超出部分缺损显示")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台:销售订单列表业务区域分开展示")])]),t._v(" "),s("tr",[s("td",{staticStyle:{"text-align":"left"}},[t._v("管理平台&APP:业务订单新增客户要求交期字段")])])])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("项目里程碑:8月19日开始,8月30日提交上线。")])])])]),t._v(" "),s("h2",{attrs:{id:"关注事项app"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#关注事项app"}},[t._v("#")]),t._v(" 关注事项APP")]),t._v(" "),s("p",[t._v("关注事项,用于重要事项汇报的应用;通过创建群组,组员在群组内进行相关事务的汇报,并将重要关注事项进行实时提醒用户。")]),t._v(" "),s("h3",{attrs:{id:"下载体验-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#下载体验-4"}},[t._v("#")]),t._v(" 下载体验")]),t._v(" "),s("ul",[s("li",[s("strong",[t._v("IOS版本")])])]),t._v(" "),s("p",[s("img",{attrs:{src:"C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E5%85%B3%E6%B3%A8%E4%BA%8B%E9%A1%B9IOS.png",alt:"IOS下载二维码"}})]),t._v(" "),s("ul",[s("li",[s("p",[s("strong",[t._v("安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。")])])]),t._v(" "),s("li",[s("p",[s("strong",[t._v("最新功能:版本0.1.2")])]),t._v(" "),s("p",[t._v("修复已知BUG。")])])]),t._v(" "),s("h2",{attrs:{id:"便捷答题小程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#便捷答题小程序"}},[t._v("#")]),t._v(" 便捷答题小程序")]),t._v(" "),s("p",[t._v("让公司可以便捷地给员工培训考试")]),t._v(" "),s("h3",{attrs:{id:"扫码体验"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#扫码体验"}},[t._v("#")]),t._v(" 扫码体验")]),t._v(" "),s("p",[s("img",{attrs:{src:"C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E4%BE%BF%E6%8D%B7%E7%AD%94%E9%A2%98.jpg",alt:"小程序二维码"}})]),t._v(" "),s("h2",{attrs:{id:"票选小助手小程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#票选小助手小程序"}},[t._v("#")]),t._v(" 票选小助手小程序")]),t._v(" "),s("p",[t._v("快速简单创建投票,支持图文选项。可支持群投票或指定用户进行投票。")]),t._v(" "),s("h3",{attrs:{id:"扫码体验-2"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#扫码体验-2"}},[t._v("#")]),t._v(" 扫码体验")]),t._v(" "),s("p",[s("img",{attrs:{src:"C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E7%A5%A8%E9%80%89%E5%B0%8F%E5%8A%A9%E6%89%8B.jpg",alt:"小程序二维码"}})]),t._v(" "),s("h2",{attrs:{id:"海鲜干货人家小程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#海鲜干货人家小程序"}},[t._v("#")]),t._v(" 海鲜干货人家小程序")]),t._v(" "),s("p",[t._v("专业包点、小食订购平台;自提需标提货时间(至少次日),配送为当天下单,次日配送;周末节假日暂不支持发货")]),t._v(" "),s("h3",{attrs:{id:"扫码体验-3"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#扫码体验-3"}},[t._v("#")]),t._v(" 扫码体验")]),t._v(" "),s("p",[s("img",{attrs:{src:"C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E6%B5%B7%E9%B2%9C%E5%B9%B2%E8%B4%A7%E4%BA%BA%E5%AE%B6.jpg",alt:"小程序二维码"}})]),t._v(" "),s("h2",{attrs:{id:"我的旺铺小程序"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#我的旺铺小程序"}},[t._v("#")]),t._v(" 我的旺铺小程序")]),t._v(" "),s("p",[t._v("店铺管理工具,能快速的管理店铺的分类、商品和海报图册。")]),t._v(" "),s("h3",{attrs:{id:"扫码体验-4"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#扫码体验-4"}},[t._v("#")]),t._v(" 扫码体验")]),t._v(" "),s("p",[s("img",{attrs:{src:"C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E6%88%91%E7%9A%84%E6%97%BA%E9%93%BA.jpg",alt:"小程序二维码"}})]),t._v(" "),s("h2",{attrs:{id:"买买买公司官网"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#买买买公司官网"}},[t._v("#")]),t._v(" 买买买公司官网")]),t._v(" "),s("p",[s("a",{attrs:{href:"http://www.fjmaimaimai.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("深圳买买信息科技有限公司"),s("OutboundLink")],1)])])}),[],!1,null,null,null);a.default=_.exports}}]);
  1 +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{273:function(t,s,e){"use strict";e.r(s);var n=e(14),r=Object(n.a)({},(function(){var t=this.$createElement,s=this._self._c||t;return s("ContentSlotsDistributor",{attrs:{"slot-key":this.$parent.slotKey}},[s("h1",{attrs:{id:"项目管控"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#项目管控"}},[this._v("#")]),this._v(" 项目管控")])])}),[],!1,null,null,null);s.default=r.exports}}]);
此 diff 太大无法显示。
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>文档写作平台使用入门 | 买买买文档平台</title> 6 <title>文档写作平台使用入门 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/7.f9fd827d.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/7.72deeb81.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,10 +60,10 @@ @@ -60,10 +60,10 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link router-link-exact-active router-link-active"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link router-link-exact-active router-link-active">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>文档写作平台使用入门</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/#文档写作平台项目地址" class="sidebar-link">文档写作平台项目地址</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/guide/#项目运行方式" class="sidebar-link">项目运行方式</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/guide/#文档写作" class="sidebar-link">文档写作</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/#写作方式" class="sidebar-link">写作方式</a></li><li class="sidebar-sub-header"><a href="/guide/#资源内容添加" class="sidebar-link">资源内容添加</a></li></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="文档写作平台使用入门"><a href="#文档写作平台使用入门" aria-hidden="true" class="header-anchor">#</a> 文档写作平台使用入门</h1> <p>介绍文档写作平台的运行方式,如何编写文档及各方面资源的内容组织</p> <h2 id="文档写作平台项目地址"><a href="#文档写作平台项目地址" aria-hidden="true" class="header-anchor">#</a> 文档写作平台项目地址</h2> <p><a href="http://192.168.100.254:3000/frontend/doc-press" target="_blank" rel="noopener noreferrer">doc-press<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p> <h2 id="项目运行方式"><a href="#项目运行方式" aria-hidden="true" class="header-anchor">#</a> 项目运行方式</h2> <ol><li>安装 <code>nodejs</code>,在 <a href="http://nodejs.cn/download/" target="_blank" rel="noopener noreferrer">nodejs 官网<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 下载并安装<br> <em>windows 下建议下载 <code>Windows 安装包 (.msi) 64 位</code></em></li> <li>安装 <code>yarn</code>,在 <a href="https://www.yarnpkg.com/zh-Hant/docs/install#windows-stable" target="_blank" rel="noopener noreferrer">yarn 官网<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 下载并安装</li> <li>安装 <code>git</code>,在 <a href="https://git-scm.com/" target="_blank" rel="noopener noreferrer">git 官网<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 下载并安装好</li> <li>下载并安装 git 图形化工具,推荐使用的有 <a href="https://tortoisegit.org/" target="_blank" rel="noopener noreferrer">TortoiseGit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a><a href="https://www.sourcetreeapp.com/" target="_blank" rel="noopener noreferrer">SourceTree<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a><a href="https://git-fork.com/windows" target="_blank" rel="noopener noreferrer">Fork<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li>克隆文档写作平台到本地环境</li> <li>使用命令行进入到文档写作平台目录</li> <li>运行命令 <code>yarn install</code> 安装依赖库</li> <li>运行命令 <code>yarn dev</code> 运行本地开发平台</li> <li>运行完成后,命令行界面中会提示访问地址,在浏览器中访问该地址即可开始进行写作,效果如下</li> <li>此时可开始写作,并在网页中实时预览效果</li> <li>写作完成后,将内容提交并推送到项目托管地址</li></ol> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>success <span class="token punctuation">[</span><span class="token number">16</span>:22:08<span class="token punctuation">]</span> Build 42920d finished <span class="token keyword">in</span> <span class="token number">3668</span> ms<span class="token operator">!</span> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>文档写作平台使用入门</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/guide/#文档写作平台项目地址" class="sidebar-link">文档写作平台项目地址</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/guide/#项目运行方式" class="sidebar-link">项目运行方式</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/guide/#文档写作" class="sidebar-link">文档写作</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/guide/#写作方式" class="sidebar-link">写作方式</a></li><li class="sidebar-sub-header"><a href="/guide/#资源内容添加" class="sidebar-link">资源内容添加</a></li></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="文档写作平台使用入门"><a href="#文档写作平台使用入门" class="header-anchor">#</a> 文档写作平台使用入门</h1> <p>介绍文档写作平台的运行方式,如何编写文档及各方面资源的内容组织</p> <h2 id="文档写作平台项目地址"><a href="#文档写作平台项目地址" class="header-anchor">#</a> 文档写作平台项目地址</h2> <p><a href="http://192.168.100.254:3000/frontend/doc-press" target="_blank" rel="noopener noreferrer">doc-press<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p> <h2 id="项目运行方式"><a href="#项目运行方式" class="header-anchor">#</a> 项目运行方式</h2> <ol><li>安装 <code>nodejs</code>,在 <a href="http://nodejs.cn/download/" target="_blank" rel="noopener noreferrer">nodejs 官网<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 下载并安装<br> <em>windows 下建议下载 <code>Windows 安装包 (.msi) 64 位</code></em></li> <li>安装 <code>yarn</code>,在 <a href="https://www.yarnpkg.com/zh-Hant/docs/install#windows-stable" target="_blank" rel="noopener noreferrer">yarn 官网<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 下载并安装</li> <li>安装 <code>git</code>,在 <a href="https://git-scm.com/" target="_blank" rel="noopener noreferrer">git 官网<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 下载并安装好</li> <li>下载并安装 git 图形化工具,推荐使用的有 <a href="https://tortoisegit.org/" target="_blank" rel="noopener noreferrer">TortoiseGit<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a><a href="https://www.sourcetreeapp.com/" target="_blank" rel="noopener noreferrer">SourceTree<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a><a href="https://git-fork.com/windows" target="_blank" rel="noopener noreferrer">Fork<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li>克隆文档写作平台到本地环境</li> <li>使用命令行进入到文档写作平台目录</li> <li>运行命令 <code>yarn install</code> 安装依赖库</li> <li>运行命令 <code>yarn dev</code> 运行本地开发平台</li> <li>运行完成后,命令行界面中会提示访问地址,在浏览器中访问该地址即可开始进行写作,效果如下</li> <li>此时可开始写作,并在网页中实时预览效果</li> <li>写作完成后,将内容提交并推送到项目托管地址</li></ol> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>success <span class="token punctuation">[</span><span class="token number">16</span>:22:08<span class="token punctuation">]</span> Build 42920d finished <span class="token keyword">in</span> <span class="token number">3668</span> ms<span class="token operator">!</span>
64 <span class="token operator">&gt;</span> VuePress dev server listening at http://localhost:8080/ 64 <span class="token operator">&gt;</span> VuePress dev server listening at http://localhost:8080/
65 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>只进行文档写作,不希望本地运行网站服务的情况,仅需执行 <code>3、4、5、11</code> 步骤</p> <h2 id="文档写作"><a href="#文档写作" aria-hidden="true" class="header-anchor">#</a> 文档写作</h2> <p>Markdown 标记语言语法</p> <ul><li><a href="https://www.w3cschool.cn/markdownyfsm/markdownyfsm-odm6256r.html" target="_blank" rel="noopener noreferrer">https://www.w3cschool.cn<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://www.markdown.cn/" target="_blank" rel="noopener noreferrer">https://www.markdown.cn/<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://markdown-zh.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer">https://markdown-zh.readthedocs.io/en/latest/<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="http://wow.kuapp.com/markdown/" target="_blank" rel="noopener noreferrer">http://wow.kuapp.com/markdown/<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <p>推荐编辑器</p> <ul><li><a href="https://typora.io/" target="_blank" rel="noopener noreferrer">Typora<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">VSCode<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <blockquote><p>文档写作平台项目基于 VuePress 构建,具体配置内容请查看 <a href="https://vuepress.vuejs.org/zh/" target="_blank" rel="noopener noreferrer">这里<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p></blockquote> <h3 id="写作方式"><a href="#写作方式" aria-hidden="true" class="header-anchor">#</a> 写作方式</h3> <p>文档写作平台所有编写的文档均是基于 <strong>Markdown</strong> 标记语言来编写,它的特点是使用简单的符号即可清晰地描述整个文档结构和排版,仅需要普通文本编辑器即可完成,不像 Word、Excel 等格式必须安装 Microsft Office 才可以正常使用;目前 Markdown 标记语言已经被广泛使用于国内、国际各种记事本或笔记平台、知识平台、写作平台,成为一种流行的文档编写格式,且范围不仅仅是软件行业</p> <p>在网站的内容组织上,一个目录或站点的默认访问位置是 <code>index.html</code>,这是整个互联网环境、网页服务平台、网页服务软件等组织共同形成的约定俗成的结果</p> <p>在以 Markdown 标记语言为主要格式和形式的文档平台中,大家约定俗成的默认文档为 <code>README.md</code>(注意大小写),其功能与 <code>index.html</code> 一致,可以将其理解为是一个目录或是一个文档站点的里的 <strong>首页</strong></p> <p><strong>HTML</strong></p> <p>实际上,在文档写作平台中,所有的 Markdown 文档最终会被编译为 HTML 格式的网页作为最终展现,所以在内容的编写上可以放心使用部分 HTML 标签的排版,建议是排版方面的标签,<strong>表单类型的标签请尽可能不要使用</strong>,以免出现不可预期的问题</p> <h3 id="资源内容添加"><a href="#资源内容添加" aria-hidden="true" class="header-anchor">#</a> 资源内容添加</h3> <p>在文档写作过程中,除了文档描述自身,往往需要引用图片、跳转链接和文件下载等需求来丰富文档内容</p> <h4 id="资源内容说明"><a href="#资源内容说明" aria-hidden="true" class="header-anchor">#</a> 资源内容说明</h4> <p>资源可分为以下两类</p> <ul><li>图片</li> <li>文档(Word、Excel、PowerPoint或其它类型文档)</li></ul> <p>其中,图片可在文档中直接显示,而其它类型文件可作为下载附件的方式挂载在文档中</p> <p>所有资源存放位置:</p> <p><code>/.vuepress/public/</code></p> <div class="custom-block danger"><p class="custom-block-title">WARNING</p> <p>注意:所有资源要求必须有序存放,例如根据业务类型、团队类型等形式分目录存放</p></div> <h4 id="资源使用方式"><a href="#资源使用方式" aria-hidden="true" class="header-anchor">#</a> 资源使用方式</h4> <ul><li>图片内容</li></ul> <p>假设有一张图片存放于以下位置</p> <p><code>/.vuepress/public/logo.png</code></p> <p>那么在文档中引用该图片的方式为</p> <p><code>![logo](/logo.png)</code></p> <p>渲染结果</p> <p><img src="/logo.png" alt="logo"></p> <p>可以看到 <code>/</code> 资源引用的根位置指向了 <code>/.vuepress/public/</code></p> <div class="custom-block danger"><p class="custom-block-title">WARNING</p> <p>如果设置的图片是项目 Logo、二维码(App 或 小程序等),必须按照以下格式使用</p> <div class="language-html line-numbers-mode"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>/xxx.jpg<span class="token punctuation">&quot;</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>img<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span> 65 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div><p>只进行文档写作,不希望本地运行网站服务的情况,仅需执行 <code>3、4、5、11</code> 步骤</p> <h2 id="文档写作"><a href="#文档写作" class="header-anchor">#</a> 文档写作</h2> <p>Markdown 标记语言语法</p> <ul><li><a href="https://www.w3cschool.cn/markdownyfsm/markdownyfsm-odm6256r.html" target="_blank" rel="noopener noreferrer">https://www.w3cschool.cn<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://www.markdown.cn/" target="_blank" rel="noopener noreferrer">https://www.markdown.cn/<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://markdown-zh.readthedocs.io/en/latest/" target="_blank" rel="noopener noreferrer">https://markdown-zh.readthedocs.io/en/latest/<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="http://wow.kuapp.com/markdown/" target="_blank" rel="noopener noreferrer">http://wow.kuapp.com/markdown/<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <p>推荐编辑器</p> <ul><li><a href="https://typora.io/" target="_blank" rel="noopener noreferrer">Typora<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://code.visualstudio.com/" target="_blank" rel="noopener noreferrer">VSCode<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <blockquote><p>文档写作平台项目基于 VuePress 构建,具体配置内容请查看 <a href="https://vuepress.vuejs.org/zh/" target="_blank" rel="noopener noreferrer">这里<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p></blockquote> <h3 id="写作方式"><a href="#写作方式" class="header-anchor">#</a> 写作方式</h3> <p>文档写作平台所有编写的文档均是基于 <strong>Markdown</strong> 标记语言来编写,它的特点是使用简单的符号即可清晰地描述整个文档结构和排版,仅需要普通文本编辑器即可完成,不像 Word、Excel 等格式必须安装 Microsft Office 才可以正常使用;目前 Markdown 标记语言已经被广泛使用于国内、国际各种记事本或笔记平台、知识平台、写作平台,成为一种流行的文档编写格式,且范围不仅仅是软件行业</p> <p>在网站的内容组织上,一个目录或站点的默认访问位置是 <code>index.html</code>,这是整个互联网环境、网页服务平台、网页服务软件等组织共同形成的约定俗成的结果</p> <p>在以 Markdown 标记语言为主要格式和形式的文档平台中,大家约定俗成的默认文档为 <code>README.md</code>(注意大小写),其功能与 <code>index.html</code> 一致,可以将其理解为是一个目录或是一个文档站点的里的 <strong>首页</strong></p> <p><strong>HTML</strong></p> <p>实际上,在文档写作平台中,所有的 Markdown 文档最终会被编译为 HTML 格式的网页作为最终展现,所以在内容的编写上可以放心使用部分 HTML 标签的排版,建议是排版方面的标签,<strong>表单类型的标签请尽可能不要使用</strong>,以免出现不可预期的问题</p> <h3 id="资源内容添加"><a href="#资源内容添加" class="header-anchor">#</a> 资源内容添加</h3> <p>在文档写作过程中,除了文档描述自身,往往需要引用图片、跳转链接和文件下载等需求来丰富文档内容</p> <h4 id="资源内容说明"><a href="#资源内容说明" class="header-anchor">#</a> 资源内容说明</h4> <p>资源可分为以下两类</p> <ul><li>图片</li> <li>文档(Word、Excel、PowerPoint或其它类型文档)</li></ul> <p>其中,图片可在文档中直接显示,而其它类型文件可作为下载附件的方式挂载在文档中</p> <p>所有资源存放位置:</p> <p><code>/.vuepress/public/</code></p> <div class="custom-block danger"><p class="custom-block-title">WARNING</p> <p>注意:所有资源要求必须有序存放,例如根据业务类型、团队类型等形式分目录存放</p></div> <h4 id="资源使用方式"><a href="#资源使用方式" class="header-anchor">#</a> 资源使用方式</h4> <ul><li>图片内容</li></ul> <p>假设有一张图片存放于以下位置</p> <p><code>/.vuepress/public/logo.png</code></p> <p>那么在文档中引用该图片的方式为</p> <p><code>![logo](/logo.png)</code></p> <p>渲染结果</p> <p><img src="/logo.png" alt="logo"></p> <p>可以看到 <code>/</code> 资源引用的根位置指向了 <code>/.vuepress/public/</code></p> <div class="custom-block danger"><p class="custom-block-title">WARNING</p> <p>如果设置的图片是项目 Logo、二维码(App 或 小程序等),必须按照以下格式使用</p> <div class="language-html line-numbers-mode"><pre class="language-html"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>img</span> <span class="token attr-name">src</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>/xxx.jpg<span class="token punctuation">&quot;</span></span> <span class="token attr-name">class</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>img<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
66 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>图片将以 <code>150 X 150</code> 的统一规格(像素)显示</p></div> <ul><li>文档或其它</li></ul> <p>引用其它资源,区别仅为引用方式上,假设有一个文档存放于以下位置</p> <p><code>/.vuepress/public/design/file.docx</code></p> <p>该文档的引用方式为</p> <p><code>[file](/design/file.docx)</code></p> <p>根据观察可以发现,文件的引用方式与图片的引用方式上的区别仅是一个 <code>!</code>,而在描述一个链接时增加感叹号则是专用于图片显示</p> <blockquote><p>附件类型的在点击后,会直接弹出浏览器下载窗口下载该文件,所以该方式适用于与文档内容相关的附件设置</p></blockquote></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div> 66 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p>图片将以 <code>150 X 150</code> 的统一规格(像素)显示</p></div> <ul><li>文档或其它</li></ul> <p>引用其它资源,区别仅为引用方式上,假设有一个文档存放于以下位置</p> <p><code>/.vuepress/public/design/file.docx</code></p> <p>该文档的引用方式为</p> <p><code>[file](/design/file.docx)</code></p> <p>根据观察可以发现,文件的引用方式与图片的引用方式上的区别仅是一个 <code>!</code>,而在描述一个链接时增加感叹号则是专用于图片显示</p> <blockquote><p>附件类型的在点击后,会直接弹出浏览器下载窗口下载该文件,所以该方式适用于与文档内容相关的附件设置</p></blockquote></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
67 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/7.f9fd827d.js" defer></script> 67 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/7.72deeb81.js" defer></script>
68 </body> 68 </body>
69 </html> 69 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>查询导览 | 买买买文档平台</title> 6 <title>查询导览 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/5.5690c9b5.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/5.9eb2a68c.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-exact-active router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link router-link-exact-active router-link-active"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-exact-active router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link router-link-exact-active router-link-active">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>查询导览</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/#一、买买买文档平台简介" class="sidebar-link">一、买买买文档平台简介</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/#二、快速浏览入口" class="sidebar-link">二、快速浏览入口</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/#三、文档使用权限说明" class="sidebar-link">三、文档使用权限说明</a><ul class="sidebar-sub-headers"></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="查询导览"><a href="#查询导览" aria-hidden="true" class="header-anchor">#</a> 查询导览</h1> <h2 id="一、买买买文档平台简介"><a href="#一、买买买文档平台简介" aria-hidden="true" class="header-anchor">#</a> 一、买买买文档平台简介</h2> <p>买买买文档平台是基于买买买公司内部使用知识存储开放平台,提供买买买员工参与项目管理、研发、运维相关的各类查询文档,例如项目管控、开发规范、行政管理等。汇聚了买买买所有研发项目、产品重要知识信息,推进员工知识共享与交流,以便随取随用。</p> <h2 id="二、快速浏览入口"><a href="#二、快速浏览入口" aria-hidden="true" class="header-anchor">#</a> 二、快速浏览入口</h2> <ul><li><h4 id="项目清单"><a href="#项目清单" aria-hidden="true" class="header-anchor">#</a> 项目清单</h4></li></ul> <ol><li><p><a href="">能力展示APP</a></p> <p>简介、下载体验、版本规划</p></li> <li><p>素+信息化:在线订单APP</p></li> <li><p>素+信息化:仓储管理APP</p></li> <li><p>关注事项APP</p></li> <li><p>便捷答题小程序</p></li> <li><p>票选小助手小程序</p></li> <li><p>海鲜干货人家小程序</p></li> <li><p>我的旺铺小程序</p></li> <li><p>买买买公司官网</p></li></ol> <ul><li><h4 id="团队文档"><a href="#团队文档" aria-hidden="true" class="header-anchor">#</a> 团队文档</h4></li></ul> <ol><li><a href="/team/frontend/">前端开发文档</a></li> <li>IOS端开发文档</li> <li>安卓端开发文档</li> <li>服务端开发文档</li> <li>测试端文档</li> <li>产品设计文档</li></ol> <ul><li><h4 id="项目管控"><a href="#项目管控" aria-hidden="true" class="header-anchor">#</a> 项目管控</h4></li></ul> <ol><li>阶段输出结果</li> <li>变更控制</li> <li>问题日志</li> <li>常用文档下载</li></ol> <ul><li><h4 id="行政管理"><a href="#行政管理" aria-hidden="true" class="header-anchor">#</a> 行政管理</h4></li> <li><h4 id="协同工具"><a href="#协同工具" aria-hidden="true" class="header-anchor">#</a> 协同工具</h4></li></ul> <ol><li><p>项目研发管理</p></li> <li><p>API管理平台</p></li> <li><p>资源管理</p></li></ol> <h2 id="三、文档使用权限说明"><a href="#三、文档使用权限说明" aria-hidden="true" class="header-anchor">#</a> 三、文档使用权限说明</h2> <p>对文档使用定制保密说明</p></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/5.5690c9b5.js" defer></script> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>查询导览</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/#一、买买买文档平台简介" class="sidebar-link">一、买买买文档平台简介</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/#二、快速浏览入口" class="sidebar-link">二、快速浏览入口</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/#三、文档使用权限说明" class="sidebar-link">三、文档使用权限说明</a><ul class="sidebar-sub-headers"></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="查询导览"><a href="#查询导览" class="header-anchor">#</a> 查询导览</h1> <h2 id="一、买买买文档平台简介"><a href="#一、买买买文档平台简介" class="header-anchor">#</a> 一、买买买文档平台简介</h2> <p>买买买文档平台是基于买买买公司内部使用知识存储开放平台,提供买买买员工参与项目管理、研发、运维相关的各类查询文档,例如项目管控、开发规范、行政管理等。汇聚了买买买所有研发项目、产品重要知识信息,推进员工知识共享与交流,以便随取随用。</p> <h2 id="二、快速浏览入口"><a href="#二、快速浏览入口" class="header-anchor">#</a> 二、快速浏览入口</h2> <ul><li><h4 id="项目清单"><a href="#项目清单" class="header-anchor">#</a> 项目清单</h4></li></ul> <ol><li><p><a href="">能力展示APP</a></p> <p>简介、下载体验、版本规划</p></li> <li><p>素+信息化:在线订单APP</p></li> <li><p>素+信息化:仓储管理APP</p></li> <li><p>关注事项APP</p></li> <li><p>便捷答题小程序</p></li> <li><p>票选小助手小程序</p></li> <li><p>海鲜干货人家小程序</p></li> <li><p>我的旺铺小程序</p></li> <li><p>买买买公司官网</p></li></ol> <ul><li><h4 id="团队文档"><a href="#团队文档" class="header-anchor">#</a> 团队文档</h4></li></ul> <ol><li><a href="/team/frontend/">前端开发文档</a></li> <li>IOS端开发文档</li> <li>安卓端开发文档</li> <li>服务端开发文档</li> <li>测试端文档</li> <li>产品设计文档</li></ol> <ul><li><h4 id="项目管控"><a href="#项目管控" class="header-anchor">#</a> 项目管控</h4></li></ul> <ol><li>阶段输出结果</li> <li>变更控制</li> <li>问题日志</li> <li>常用文档下载</li></ol> <ul><li><h4 id="行政管理"><a href="#行政管理" class="header-anchor">#</a> 行政管理</h4></li> <li><h4 id="协同工具"><a href="#协同工具" class="header-anchor">#</a> 协同工具</h4></li></ul> <ol><li><p>项目研发管理</p></li> <li><p>API管理平台</p></li> <li><p>资源管理</p></li></ol> <h2 id="三、文档使用权限说明"><a href="#三、文档使用权限说明" class="header-anchor">#</a> 三、文档使用权限说明</h2> <p>对文档使用定制保密说明</p></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/5.9eb2a68c.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>项目清单 | 买买买文档平台</title> 6 <title>项目清单 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/8.bcd25b86.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/8.8be0ed7e.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link router-link-exact-active router-link-active"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link router-link-exact-active router-link-active">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link router-link-exact-active router-link-active"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link router-link-exact-active router-link-active">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>项目清单</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/product/#能力展示app-企业员工能力展示应用" class="sidebar-link">能力展示APP - 企业员工能力展示应用</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#下载体验" class="sidebar-link">下载体验</a></li><li class="sidebar-sub-header"><a href="/product/#敬请期待:正在开发版本0-4-0" class="sidebar-link">敬请期待:正在开发版本0.4.0</a></li></ul></li><li><a href="/product/#素-信息化:在线订单app" class="sidebar-link">素+信息化:在线订单APP</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#下载体验-2" class="sidebar-link">下载体验</a></li><li class="sidebar-sub-header"><a href="/product/#敬请期待:正在开发版本1-1-0" class="sidebar-link">敬请期待:正在开发版本1.1.0</a></li></ul></li><li><a href="/product/#素-信息化:仓储管理app" class="sidebar-link">素+信息化:仓储管理APP</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#下载体验-3" class="sidebar-link">下载体验</a></li><li class="sidebar-sub-header"><a href="/product/#敬请期待:正在开发版本1-1-0-2" class="sidebar-link">敬请期待:正在开发版本1.1.0</a></li></ul></li><li><a href="/product/#关注事项app" class="sidebar-link">关注事项APP</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#下载体验-4" class="sidebar-link">下载体验</a></li></ul></li><li><a href="/product/#便捷答题小程序" class="sidebar-link">便捷答题小程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#扫码体验" class="sidebar-link">扫码体验</a></li></ul></li><li><a href="/product/#票选小助手小程序" class="sidebar-link">票选小助手小程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#扫码体验-2" class="sidebar-link">扫码体验</a></li></ul></li><li><a href="/product/#海鲜干货人家小程序" class="sidebar-link">海鲜干货人家小程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#扫码体验-3" class="sidebar-link">扫码体验</a></li></ul></li><li><a href="/product/#我的旺铺小程序" class="sidebar-link">我的旺铺小程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#扫码体验-4" class="sidebar-link">扫码体验</a></li></ul></li><li><a href="/product/#买买买公司官网" class="sidebar-link">买买买公司官网</a><ul class="sidebar-sub-headers"></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="项目清单"><a href="#项目清单" aria-hidden="true" class="header-anchor">#</a> 项目清单</h1> <p>汇总买买买公司目前正在开发项目清单,将实时同步各个项目开发状态。</p> <h2 id="能力展示app-企业员工能力展示应用"><a href="#能力展示app-企业员工能力展示应用" aria-hidden="true" class="header-anchor">#</a> 能力展示APP - 企业员工能力展示应用</h2> <p>能力展示,用于展示企业员工能力的应用。促进员工积极去发现问题、分析问题、解决问题,并在轻松娱乐的氛围下,展示能力同时并共同营建一个和谐可持续发展的大家庭。主要功能有,企业的提问管理、部门统计、公司表彰、星数排行。</p> <h3 id="下载体验"><a href="#下载体验" aria-hidden="true" class="header-anchor">#</a> 下载体验</h3> <ul><li><strong>IOS版本</strong></li></ul> <p><img src="/ios/ability/IOS.png" alt="IOS下载二维码"></p> <ul><li><p><strong>安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。</strong></p></li> <li><p><strong>最新功能:版本0.3.0</strong></p> <ol><li><p>增加@功能,由提问人在提出问题时候选择@部门决定该问题的职能归属,由归属部门进行后续的评分管理,提问者不明确的戒被@部门不接受的可以@回服务小组;</p></li> <li><p>消息模块改版</p></li> <li><p>个人中心--待我评分入口</p></li> <li><p>特殊用户同感信息的展示</p></li> <li><p>用户行为数据统计组件接入</p></li></ol></li></ul> <h3 id="敬请期待:正在开发版本0-4-0"><a href="#敬请期待:正在开发版本0-4-0" aria-hidden="true" class="header-anchor">#</a> 敬请期待:正在开发版本0.4.0</h3> <ul><li><p>开发需求清单:</p> <table><thead><tr><th style="text-align:left;">内容</th></tr></thead> <tbody><tr><td style="text-align:left;">增加帐号切换功能。</td></tr> <tr><td style="text-align:left;">增加后台数据导出功能</td></tr> <tr><td style="text-align:left;">管理后台增加加分功能;</td></tr></tbody></table></li> <li><p>项目里程碑:开发时间: ,提测时间: ,上线时间:</p></li></ul> <h2 id="素-信息化:在线订单app"><a href="#素-信息化:在线订单app" aria-hidden="true" class="header-anchor">#</a> 素+信息化:在线订单APP</h2> <p>素+在线下单是一款自主研发的移动销售管理应用助力企业构建组织内部的高效协作网络,让中小型制造企业在销售前端与企业内部组织和人,以驱动业务为目标,实现以客户为中心的全员高效营销协作。
主要功能有,企业的产品档案管理、订单管理、客户管理</p> <h3 id="下载体验-2"><a href="#下载体验-2" aria-hidden="true" class="header-anchor">#</a> 下载体验</h3> <ul><li><strong>IOS版本</strong></li></ul> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E5%9C%A8%E7%BA%BF%E8%AE%A2%E5%8D%95IOS.png" alt="IOS下载二维码"></p> <ul><li><p><strong>安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。</strong></p></li> <li><p><strong>最新功能:版本1.0.5</strong></p></li></ul> <ol><li><p>全新设计网络框架,轻装前行。</p></li> <li><p>修复已知问题,减少问题体验更好
为了获得更好的用户体验,会经常在App Store上更新哦!</p></li> <li><p>推荐 「设置&gt;iTunes &amp;App Store&gt;自动下载&gt;开启素+订单」</p></li></ol> <h3 id="敬请期待:正在开发版本1-1-0"><a href="#敬请期待:正在开发版本1-1-0" aria-hidden="true" class="header-anchor">#</a> 敬请期待:正在开发版本1.1.0</h3> <ul><li><p><strong>开发需求清单:</strong></p> <table><thead><tr><th style="text-align:left;">内容</th></tr></thead> <tbody><tr><td style="text-align:left;">App:产成品入库以及产成品检验扫描页新增查看历史功能(安卓)</td></tr> <tr><td style="text-align:left;">管理平台:出入库类型设置时,无需标识默认为入,即无需给默认标识,让用户自己选择** 出/入</td></tr> <tr><td style="text-align:left;">管理平台:业务地区设置,入口需要移动到销售模块中</td></tr> <tr><td style="text-align:left;">管理平台:分页功能最多一页展示 100 条,新增 500 条每页的选项;</td></tr> <tr><td style="text-align:left;">App;出库时选择或者扫描同商品同批号时数量累加;</td></tr> <tr><td style="text-align:left;">管理平台:权限改动,子管理员无法修改自身以及其他子管理员的权限</td></tr> <tr><td style="text-align:left;">管理平台:报表行间距调整,报表中数据只展示一行超出部分缺损显示</td></tr> <tr><td style="text-align:left;">管理平台:销售订单列表业务区域分开展示</td></tr> <tr><td style="text-align:left;">管理平台&amp;APP:业务订单新增客户要求交期字段</td></tr></tbody></table></li> <li><p><strong>项目里程碑:8月19日开始,8月30日提交上线。</strong></p></li></ul> <h2 id="素-信息化:仓储管理app"><a href="#素-信息化:仓储管理app" aria-hidden="true" class="header-anchor">#</a> 素+信息化:仓储管理APP</h2> <p>素+仓储 是一款自主研发的仓储管理应用可便捷的通过扫一扫实现出入库自动登记。对仓库里的存货进行检查和登记存货质量状态。随时随地任意手机,电脑可查询仓库存货实时库存数据·主要功能有,企业的产品档案管理、产出登记、生产入库、其他入库、质检登记、销售出库、其他出库、库存查询</p> <h3 id="下载体验-3"><a href="#下载体验-3" aria-hidden="true" class="header-anchor">#</a> 下载体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E4%BB%93%E5%82%A8IOS.png" alt="IOS下载二维码"></p> <ul><li><p><strong>安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。</strong></p></li> <li><p><strong>最新功能:版本1.0.9</strong></p></li></ul> <ol><li><p>全新设计网络框架,轻装前行。</p></li> <li><p>修复已知问题,减少问题体验更好
为了获得更好的用户体验,会经常在App Store上更新哦</p></li> <li><p>推荐 「设置&gt;iTunes &amp;App Store&gt;自动下载&gt;开启素+仓储」</p></li></ol> <h3 id="敬请期待:正在开发版本1-1-0-2"><a href="#敬请期待:正在开发版本1-1-0-2" aria-hidden="true" class="header-anchor">#</a> 敬请期待:正在开发版本1.1.0</h3> <ul><li><p><strong>开发需求清单:</strong></p> <table><thead><tr><th style="text-align:left;">内容</th></tr></thead> <tbody><tr><td style="text-align:left;">App:产成品入库以及产成品检验扫描页新增查看历史功能(安卓)</td></tr> <tr><td style="text-align:left;">管理平台:出入库类型设置时,无需标识默认为入,即无需给默认标识,让用户自己选择** 出/入</td></tr> <tr><td style="text-align:left;">管理平台:业务地区设置,入口需要移动到销售模块中</td></tr> <tr><td style="text-align:left;">管理平台:分页功能最多一页展示 100 条,新增 500 条每页的选项;</td></tr> <tr><td style="text-align:left;">App;出库时选择或者扫描同商品同批号时数量累加;</td></tr> <tr><td style="text-align:left;">管理平台:权限改动,子管理员无法修改自身以及其他子管理员的权限</td></tr> <tr><td style="text-align:left;">管理平台:报表行间距调整,报表中数据只展示一行超出部分缺损显示</td></tr> <tr><td style="text-align:left;">管理平台:销售订单列表业务区域分开展示</td></tr> <tr><td style="text-align:left;">管理平台&amp;APP:业务订单新增客户要求交期字段</td></tr></tbody></table></li> <li><p><strong>项目里程碑:8月19日开始,8月30日提交上线。</strong></p></li></ul> <h2 id="关注事项app"><a href="#关注事项app" aria-hidden="true" class="header-anchor">#</a> 关注事项APP</h2> <p>关注事项,用于重要事项汇报的应用;通过创建群组,组员在群组内进行相关事务的汇报,并将重要关注事项进行实时提醒用户。</p> <h3 id="下载体验-4"><a href="#下载体验-4" aria-hidden="true" class="header-anchor">#</a> 下载体验</h3> <ul><li><strong>IOS版本</strong></li></ul> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E5%85%B3%E6%B3%A8%E4%BA%8B%E9%A1%B9IOS.png" alt="IOS下载二维码"></p> <ul><li><p><strong>安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。</strong></p></li> <li><p><strong>最新功能:版本0.1.2</strong></p> <p>修复已知BUG。</p></li></ul> <h2 id="便捷答题小程序"><a href="#便捷答题小程序" aria-hidden="true" class="header-anchor">#</a> 便捷答题小程序</h2> <p>让公司可以便捷地给员工培训考试</p> <h3 id="扫码体验"><a href="#扫码体验" aria-hidden="true" class="header-anchor">#</a> 扫码体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E4%BE%BF%E6%8D%B7%E7%AD%94%E9%A2%98.jpg" alt="小程序二维码"></p> <h2 id="票选小助手小程序"><a href="#票选小助手小程序" aria-hidden="true" class="header-anchor">#</a> 票选小助手小程序</h2> <p>快速简单创建投票,支持图文选项。可支持群投票或指定用户进行投票。</p> <h3 id="扫码体验-2"><a href="#扫码体验-2" aria-hidden="true" class="header-anchor">#</a> 扫码体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E7%A5%A8%E9%80%89%E5%B0%8F%E5%8A%A9%E6%89%8B.jpg" alt="小程序二维码"></p> <h2 id="海鲜干货人家小程序"><a href="#海鲜干货人家小程序" aria-hidden="true" class="header-anchor">#</a> 海鲜干货人家小程序</h2> <p>专业包点、小食订购平台;自提需标提货时间(至少次日),配送为当天下单,次日配送;周末节假日暂不支持发货</p> <h3 id="扫码体验-3"><a href="#扫码体验-3" aria-hidden="true" class="header-anchor">#</a> 扫码体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E6%B5%B7%E9%B2%9C%E5%B9%B2%E8%B4%A7%E4%BA%BA%E5%AE%B6.jpg" alt="小程序二维码"></p> <h2 id="我的旺铺小程序"><a href="#我的旺铺小程序" aria-hidden="true" class="header-anchor">#</a> 我的旺铺小程序</h2> <p>店铺管理工具,能快速的管理店铺的分类、商品和海报图册。</p> <h3 id="扫码体验-4"><a href="#扫码体验-4" aria-hidden="true" class="header-anchor">#</a> 扫码体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E6%88%91%E7%9A%84%E6%97%BA%E9%93%BA.jpg" alt="小程序二维码"></p> <h2 id="买买买公司官网"><a href="#买买买公司官网" aria-hidden="true" class="header-anchor">#</a> 买买买公司官网</h2> <p><a href="http://www.fjmaimaimai.com/" target="_blank" rel="noopener noreferrer">深圳买买信息科技有限公司<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/8.bcd25b86.js" defer></script> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>项目清单</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/product/#能力展示app-企业员工能力展示应用" class="sidebar-link">能力展示APP - 企业员工能力展示应用</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#下载体验" class="sidebar-link">下载体验</a></li><li class="sidebar-sub-header"><a href="/product/#敬请期待:正在开发版本0-4-0" class="sidebar-link">敬请期待:正在开发版本0.4.0</a></li></ul></li><li><a href="/product/#素-信息化:在线订单app" class="sidebar-link">素+信息化:在线订单APP</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#下载体验-2" class="sidebar-link">下载体验</a></li><li class="sidebar-sub-header"><a href="/product/#敬请期待:正在开发版本1-1-0" class="sidebar-link">敬请期待:正在开发版本1.1.0</a></li></ul></li><li><a href="/product/#素-信息化:仓储管理app" class="sidebar-link">素+信息化:仓储管理APP</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#下载体验-3" class="sidebar-link">下载体验</a></li><li class="sidebar-sub-header"><a href="/product/#敬请期待:正在开发版本1-1-0-2" class="sidebar-link">敬请期待:正在开发版本1.1.0</a></li></ul></li><li><a href="/product/#关注事项app" class="sidebar-link">关注事项APP</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#下载体验-4" class="sidebar-link">下载体验</a></li></ul></li><li><a href="/product/#便捷答题小程序" class="sidebar-link">便捷答题小程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#扫码体验" class="sidebar-link">扫码体验</a></li></ul></li><li><a href="/product/#票选小助手小程序" class="sidebar-link">票选小助手小程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#扫码体验-2" class="sidebar-link">扫码体验</a></li></ul></li><li><a href="/product/#海鲜干货人家小程序" class="sidebar-link">海鲜干货人家小程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#扫码体验-3" class="sidebar-link">扫码体验</a></li></ul></li><li><a href="/product/#我的旺铺小程序" class="sidebar-link">我的旺铺小程序</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/product/#扫码体验-4" class="sidebar-link">扫码体验</a></li></ul></li><li><a href="/product/#买买买公司官网" class="sidebar-link">买买买公司官网</a><ul class="sidebar-sub-headers"></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="项目清单"><a href="#项目清单" class="header-anchor">#</a> 项目清单</h1> <p>汇总买买买公司目前正在开发项目清单,将实时同步各个项目开发状态。</p> <h2 id="能力展示app-企业员工能力展示应用"><a href="#能力展示app-企业员工能力展示应用" class="header-anchor">#</a> 能力展示APP - 企业员工能力展示应用</h2> <p>能力展示,用于展示企业员工能力的应用。促进员工积极去发现问题、分析问题、解决问题,并在轻松娱乐的氛围下,展示能力同时并共同营建一个和谐可持续发展的大家庭。主要功能有,企业的提问管理、部门统计、公司表彰、星数排行。</p> <h3 id="下载体验"><a href="#下载体验" class="header-anchor">#</a> 下载体验</h3> <ul><li><strong>IOS版本</strong></li></ul> <p><img src="/ios/ability/IOS.png" alt="IOS下载二维码"></p> <ul><li><p><strong>安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。</strong></p></li> <li><p><strong>最新功能:版本0.3.0</strong></p> <ol><li><p>增加@功能,由提问人在提出问题时候选择@部门决定该问题的职能归属,由归属部门进行后续的评分管理,提问者不明确的戒被@部门不接受的可以@回服务小组;</p></li> <li><p>消息模块改版</p></li> <li><p>个人中心--待我评分入口</p></li> <li><p>特殊用户同感信息的展示</p></li> <li><p>用户行为数据统计组件接入</p></li></ol></li></ul> <h3 id="敬请期待:正在开发版本0-4-0"><a href="#敬请期待:正在开发版本0-4-0" class="header-anchor">#</a> 敬请期待:正在开发版本0.4.0</h3> <ul><li><p>开发需求清单:</p> <table><thead><tr><th style="text-align:left;">内容</th></tr></thead> <tbody><tr><td style="text-align:left;">增加帐号切换功能。</td></tr> <tr><td style="text-align:left;">增加后台数据导出功能</td></tr> <tr><td style="text-align:left;">管理后台增加加分功能;</td></tr></tbody></table></li> <li><p>项目里程碑:开发时间: ,提测时间: ,上线时间:</p></li></ul> <h2 id="素-信息化:在线订单app"><a href="#素-信息化:在线订单app" class="header-anchor">#</a> 素+信息化:在线订单APP</h2> <p>素+在线下单是一款自主研发的移动销售管理应用助力企业构建组织内部的高效协作网络,让中小型制造企业在销售前端与企业内部组织和人,以驱动业务为目标,实现以客户为中心的全员高效营销协作。
主要功能有,企业的产品档案管理、订单管理、客户管理</p> <h3 id="下载体验-2"><a href="#下载体验-2" class="header-anchor">#</a> 下载体验</h3> <ul><li><strong>IOS版本</strong></li></ul> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E5%9C%A8%E7%BA%BF%E8%AE%A2%E5%8D%95IOS.png" alt="IOS下载二维码"></p> <ul><li><p><strong>安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。</strong></p></li> <li><p><strong>最新功能:版本1.0.5</strong></p></li></ul> <ol><li><p>全新设计网络框架,轻装前行。</p></li> <li><p>修复已知问题,减少问题体验更好
为了获得更好的用户体验,会经常在App Store上更新哦!</p></li> <li><p>推荐 「设置&gt;iTunes &amp;App Store&gt;自动下载&gt;开启素+订单」</p></li></ol> <h3 id="敬请期待:正在开发版本1-1-0"><a href="#敬请期待:正在开发版本1-1-0" class="header-anchor">#</a> 敬请期待:正在开发版本1.1.0</h3> <ul><li><p><strong>开发需求清单:</strong></p> <table><thead><tr><th style="text-align:left;">内容</th></tr></thead> <tbody><tr><td style="text-align:left;">App:产成品入库以及产成品检验扫描页新增查看历史功能(安卓)</td></tr> <tr><td style="text-align:left;">管理平台:出入库类型设置时,无需标识默认为入,即无需给默认标识,让用户自己选择** 出/入</td></tr> <tr><td style="text-align:left;">管理平台:业务地区设置,入口需要移动到销售模块中</td></tr> <tr><td style="text-align:left;">管理平台:分页功能最多一页展示 100 条,新增 500 条每页的选项;</td></tr> <tr><td style="text-align:left;">App;出库时选择或者扫描同商品同批号时数量累加;</td></tr> <tr><td style="text-align:left;">管理平台:权限改动,子管理员无法修改自身以及其他子管理员的权限</td></tr> <tr><td style="text-align:left;">管理平台:报表行间距调整,报表中数据只展示一行超出部分缺损显示</td></tr> <tr><td style="text-align:left;">管理平台:销售订单列表业务区域分开展示</td></tr> <tr><td style="text-align:left;">管理平台&amp;APP:业务订单新增客户要求交期字段</td></tr></tbody></table></li> <li><p><strong>项目里程碑:8月19日开始,8月30日提交上线。</strong></p></li></ul> <h2 id="素-信息化:仓储管理app"><a href="#素-信息化:仓储管理app" class="header-anchor">#</a> 素+信息化:仓储管理APP</h2> <p>素+仓储 是一款自主研发的仓储管理应用可便捷的通过扫一扫实现出入库自动登记。对仓库里的存货进行检查和登记存货质量状态。随时随地任意手机,电脑可查询仓库存货实时库存数据·主要功能有,企业的产品档案管理、产出登记、生产入库、其他入库、质检登记、销售出库、其他出库、库存查询</p> <h3 id="下载体验-3"><a href="#下载体验-3" class="header-anchor">#</a> 下载体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E4%BB%93%E5%82%A8IOS.png" alt="IOS下载二维码"></p> <ul><li><p><strong>安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。</strong></p></li> <li><p><strong>最新功能:版本1.0.9</strong></p></li></ul> <ol><li><p>全新设计网络框架,轻装前行。</p></li> <li><p>修复已知问题,减少问题体验更好
为了获得更好的用户体验,会经常在App Store上更新哦</p></li> <li><p>推荐 「设置&gt;iTunes &amp;App Store&gt;自动下载&gt;开启素+仓储」</p></li></ol> <h3 id="敬请期待:正在开发版本1-1-0-2"><a href="#敬请期待:正在开发版本1-1-0-2" class="header-anchor">#</a> 敬请期待:正在开发版本1.1.0</h3> <ul><li><p><strong>开发需求清单:</strong></p> <table><thead><tr><th style="text-align:left;">内容</th></tr></thead> <tbody><tr><td style="text-align:left;">App:产成品入库以及产成品检验扫描页新增查看历史功能(安卓)</td></tr> <tr><td style="text-align:left;">管理平台:出入库类型设置时,无需标识默认为入,即无需给默认标识,让用户自己选择** 出/入</td></tr> <tr><td style="text-align:left;">管理平台:业务地区设置,入口需要移动到销售模块中</td></tr> <tr><td style="text-align:left;">管理平台:分页功能最多一页展示 100 条,新增 500 条每页的选项;</td></tr> <tr><td style="text-align:left;">App;出库时选择或者扫描同商品同批号时数量累加;</td></tr> <tr><td style="text-align:left;">管理平台:权限改动,子管理员无法修改自身以及其他子管理员的权限</td></tr> <tr><td style="text-align:left;">管理平台:报表行间距调整,报表中数据只展示一行超出部分缺损显示</td></tr> <tr><td style="text-align:left;">管理平台:销售订单列表业务区域分开展示</td></tr> <tr><td style="text-align:left;">管理平台&amp;APP:业务订单新增客户要求交期字段</td></tr></tbody></table></li> <li><p><strong>项目里程碑:8月19日开始,8月30日提交上线。</strong></p></li></ul> <h2 id="关注事项app"><a href="#关注事项app" class="header-anchor">#</a> 关注事项APP</h2> <p>关注事项,用于重要事项汇报的应用;通过创建群组,组员在群组内进行相关事务的汇报,并将重要关注事项进行实时提醒用户。</p> <h3 id="下载体验-4"><a href="#下载体验-4" class="header-anchor">#</a> 下载体验</h3> <ul><li><strong>IOS版本</strong></li></ul> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E5%85%B3%E6%B3%A8%E4%BA%8B%E9%A1%B9IOS.png" alt="IOS下载二维码"></p> <ul><li><p><strong>安卓版本可支持:腾讯应用宝、360、华为、小米、百度、VIVO、OPPO,请直接到相关应用商店下载。</strong></p></li> <li><p><strong>最新功能:版本0.1.2</strong></p> <p>修复已知BUG。</p></li></ul> <h2 id="便捷答题小程序"><a href="#便捷答题小程序" class="header-anchor">#</a> 便捷答题小程序</h2> <p>让公司可以便捷地给员工培训考试</p> <h3 id="扫码体验"><a href="#扫码体验" class="header-anchor">#</a> 扫码体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E4%BE%BF%E6%8D%B7%E7%AD%94%E9%A2%98.jpg" alt="小程序二维码"></p> <h2 id="票选小助手小程序"><a href="#票选小助手小程序" class="header-anchor">#</a> 票选小助手小程序</h2> <p>快速简单创建投票,支持图文选项。可支持群投票或指定用户进行投票。</p> <h3 id="扫码体验-2"><a href="#扫码体验-2" class="header-anchor">#</a> 扫码体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E7%A5%A8%E9%80%89%E5%B0%8F%E5%8A%A9%E6%89%8B.jpg" alt="小程序二维码"></p> <h2 id="海鲜干货人家小程序"><a href="#海鲜干货人家小程序" class="header-anchor">#</a> 海鲜干货人家小程序</h2> <p>专业包点、小食订购平台;自提需标提货时间(至少次日),配送为当天下单,次日配送;周末节假日暂不支持发货</p> <h3 id="扫码体验-3"><a href="#扫码体验-3" class="header-anchor">#</a> 扫码体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E6%B5%B7%E9%B2%9C%E5%B9%B2%E8%B4%A7%E4%BA%BA%E5%AE%B6.jpg" alt="小程序二维码"></p> <h2 id="我的旺铺小程序"><a href="#我的旺铺小程序" class="header-anchor">#</a> 我的旺铺小程序</h2> <p>店铺管理工具,能快速的管理店铺的分类、商品和海报图册。</p> <h3 id="扫码体验-4"><a href="#扫码体验-4" class="header-anchor">#</a> 扫码体验</h3> <p><img src="C:%5CUsers%5Cuser%5CDesktop%5C%E5%9C%A8%E7%BA%BF%E6%96%87%E6%A1%A3%5C%E6%88%91%E7%9A%84%E6%97%BA%E9%93%BA.jpg" alt="小程序二维码"></p> <h2 id="买买买公司官网"><a href="#买买买公司官网" class="header-anchor">#</a> 买买买公司官网</h2> <p><a href="http://www.fjmaimaimai.com/" target="_blank" rel="noopener noreferrer">深圳买买信息科技有限公司<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/8.8be0ed7e.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>项目管控 | 买买买文档平台</title> 6 <title>项目管控 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/9.2d40e7da.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/9.bec74b06.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link router-link-exact-active router-link-active"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link router-link-exact-active router-link-active">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link router-link-exact-active router-link-active"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link router-link-exact-active router-link-active">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="项目管控"><a href="#项目管控" aria-hidden="true" class="header-anchor">#</a> 项目管控</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/9.2d40e7da.js" defer></script> 63 +</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="项目管控"><a href="#项目管控" class="header-anchor">#</a> 项目管控</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/9.bec74b06.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>Android 安卓端 | 买买买文档平台</title> 6 <title>Android 安卓端 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/10.49603ca8.js" as="script"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/10.e67b7016.js" as="script"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link router-link-exact-active router-link-active"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link router-link-exact-active router-link-active">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link router-link-exact-active router-link-active"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link router-link-exact-active router-link-active">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="android-安卓端"><a href="#android-安卓端" aria-hidden="true" class="header-anchor">#</a> Android 安卓端</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/10.49603ca8.js" defer></script> 63 +</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="android-安卓端"><a href="#android-安卓端" class="header-anchor">#</a> Android 安卓端</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/10.e67b7016.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>服务端 | 买买买文档平台</title> 6 <title>服务端 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/11.973f8ef4.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/11.f9dc0448.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link router-link-exact-active router-link-active"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link router-link-exact-active router-link-active">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link router-link-exact-active router-link-active"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link router-link-exact-active router-link-active">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="服务端"><a href="#服务端" aria-hidden="true" class="header-anchor">#</a> 服务端</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/11.973f8ef4.js" defer></script> 63 +</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="服务端"><a href="#服务端" class="header-anchor">#</a> 服务端</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/11.f9dc0448.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>产品设计 | 买买买文档平台</title> 6 <title>产品设计 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/12.76360d2e.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/12.43e3bc20.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link router-link-exact-active router-link-active">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link router-link-exact-active router-link-active">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link router-link-exact-active router-link-active">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link router-link-exact-active router-link-active">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="产品设计"><a href="#产品设计" aria-hidden="true" class="header-anchor">#</a> 产品设计</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/12.76360d2e.js" defer></script> 63 +</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="产品设计"><a href="#产品设计" class="header-anchor">#</a> 产品设计</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/12.43e3bc20.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>业务组件 | 买买买文档平台</title> 6 <title>业务组件 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/14.e7ac0b94.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/14.172a5d95.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="active sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="业务组件"><a href="#业务组件" aria-hidden="true" class="header-anchor">#</a> 业务组件</h1> <p>整合了部分业务功能或特殊定制化需求的组件</p> <h2 id="数据导入导出"><a href="#数据导入导出" aria-hidden="true" class="header-anchor">#</a> 数据导入导出</h2> <p>公用数据导入导出组件,功能包含有数据介质模板下载(空或部分业务数据)、数据介质模板导出以及数据介质文件导入(上传)</p> <img src="/frontend/plugins/import-and-export.png" class="border-shadow"> <p>使用流程</p> <ol><li>手机短信验证身份</li> <li>下载、导出数据介质模板文件(非必须)</li> <li>选择并上传已填写/修改的数据介质文件</li> <li>预览文件内容</li> <li>执行数据介质文件上传</li> <li>上传成功/失败详细报告</li></ol> <p>目前已配置并使用在素+管理平台的以下业务场景中</p> <ul><li>通讯录  <code>导入</code> <code>导出</code></li> <li>客户档案 <code>导入</code> <code>导出</code></li> <li>组织部门 <code>导入</code></li> <li>常购产品 <code>导入</code> <code>导出</code></li> <li>存货档案 <code>导入</code> <code>导出</code></li> <li>期初数据 <code>导入</code></li></ul> <h2 id="操作权限应用"><a href="#操作权限应用" aria-hidden="true" class="header-anchor">#</a> 操作权限应用</h2> <p>适配根据对用户或角色指定的权限设置(例:增加、删除、导出等),对界面元素的权限控制应用(例:按钮、链接等),自动根据配置内容决定该元素是否出现于当前界面</p> <blockquote><p>如果用户角色为主管理员,则所有功能始终可用,不受该操作权限控制</p></blockquote> <p>完整权限字段如下:</p> <div class="language-json line-numbers-mode"><pre class="language-json"><code><span class="token punctuation">{</span> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="active sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="业务组件"><a href="#业务组件" class="header-anchor">#</a> 业务组件</h1> <p>整合了部分业务功能或特殊定制化需求的组件</p> <h2 id="数据导入导出"><a href="#数据导入导出" class="header-anchor">#</a> 数据导入导出</h2> <p>公用数据导入导出组件,功能包含有数据介质模板下载(空或部分业务数据)、数据介质模板导出以及数据介质文件导入(上传)</p> <img src="/frontend/plugins/import-and-export.png" class="border-shadow"> <p>使用流程</p> <ol><li>手机短信验证身份</li> <li>下载、导出数据介质模板文件(非必须)</li> <li>选择并上传已填写/修改的数据介质文件</li> <li>预览文件内容</li> <li>执行数据介质文件上传</li> <li>上传成功/失败详细报告</li></ol> <p>目前已配置并使用在素+管理平台的以下业务场景中</p> <table><thead><tr><th>业务模块</th> <th>编码</th> <th>导入</th> <th>导出</th></tr></thead> <tbody><tr><td>通讯录</td> <td>ADDRESS_BOOK</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>客户档案</td> <td>WORKBENCH_CUSTOMER_FILE</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>组织架构</td> <td>ENTERPRISE_ORGANIZATION</td> <td>✔️</td> <td></td></tr> <tr><td>常购产品</td> <td>WORKBENCH_SALE_PRICE_CUSTOMER_PRICE</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>存货档案</td> <td>WORKBENCH_STOCK_FILE</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>期初数据</td> <td>WORKBENCH_WAREHOUSE_BASE_INITIAL_DATA</td> <td>✔️</td> <td></td></tr> <tr><td>销售发货数据</td> <td>WORKBENCH_SALE_SHIP</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>薪资档案</td> <td>WORKBENCH_SALARY_MANAGE_FILE</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>产品价格</td> <td>WORKBENCH_TARGET-PLAN_CONFIG_PRODUCT-PRICE</td> <td>✔️</td> <td></td></tr> <tr><td>年度业绩目标</td> <td>WORKBENCH_TARGET-PLAN_MANAGE_YEAR-PERFORMANCE</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>同期业绩目标</td> <td>WORKBENCH_TARGET-PLAN_MANAGE_SAME-PERIOD-PERFORMANCE</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>利润率</td> <td>WORKBENCH_TARGET-PLAN_MANAGE_PROFIT-MARGIN</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>费用率</td> <td>WORKBENCH_TARGET-PLAN_MANAGE_EXPENSE-RATIO</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>月度计划</td> <td>WORKBENCH_TARGET-PLAN_PLAN_MONTH</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>业绩源数据</td> <td>WORKBENCH_TARGET-PLAN_PERFORMANCE_SOURCE</td> <td>✔️</td> <td>✔️</td></tr> <tr><td>个人业绩档案</td> <td>WORKBENCH_TARGET-PLAN_PERFORMANCE_PROFILE</td> <td></td> <td>✔️</td></tr> <tr><td>个人利润档案</td> <td>WORKBENCH_TARGET-PLAN_PERFORMANCE_PROFIT</td> <td></td> <td>✔️</td></tr> <tr><td>销售费用登记</td> <td>WORKBENCH_TARGET-PLAN_COST_SALES</td> <td>✔️</td> <td></td></tr> <tr><td>费用统计</td> <td>WORKBENCH_TARGET-PLAN_COST_COUNT</td> <td></td> <td>✔️</td></tr></tbody></table> <h2 id="操作权限应用"><a href="#操作权限应用" class="header-anchor">#</a> 操作权限应用</h2> <p>适配根据对用户或角色指定的权限设置(例:增加、删除、导出等),对界面元素的权限控制应用(例:按钮、链接等),自动根据配置内容决定该元素是否出现于当前界面</p> <blockquote><p>如果用户角色为主管理员,则所有功能始终可用,不受该操作权限控制</p></blockquote> <p>完整权限字段如下:</p> <div class="language-json line-numbers-mode"><pre class="language-json"><code><span class="token punctuation">{</span>
64 add<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> 64 add<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
65 delete<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> 65 delete<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
66 addCustom<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span> 66 addCustom<span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
@@ -102,7 +102,7 @@ @@ -102,7 +102,7 @@
102 <span class="token punctuation">}</span> 102 <span class="token punctuation">}</span>
103 <span class="token punctuation">}</span> 103 <span class="token punctuation">}</span>
104 <span class="token punctuation">}</span> 104 <span class="token punctuation">}</span>
105 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br></div></div><h2 id="选择器"><a href="#选择器" aria-hidden="true" class="header-anchor">#</a> 选择器</h2> <p>用于挑选数据的选择器</p> <h3 id="存货选择器"><a href="#存货选择器" aria-hidden="true" class="header-anchor">#</a> 存货选择器</h3> <img src="/frontend/plugins/product.png" class="border-shadow"></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"> 105 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br></div></div><h2 id="选择器"><a href="#选择器" class="header-anchor">#</a> 选择器</h2> <p>用于挑选数据的选择器</p> <h3 id="存货选择器"><a href="#存货选择器" class="header-anchor">#</a> 存货选择器</h3> <img src="/frontend/plugins/product.png" class="border-shadow"></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
106 106
107 <a href="/team/frontend/plugins.html" class="prev"> 107 <a href="/team/frontend/plugins.html" class="prev">
108 功能插件 108 功能插件
@@ -111,6 +111,6 @@ @@ -111,6 +111,6 @@
111 </a> 111 </a>
112 112
113 </span></p></div> </main></div><div class="global-ui"><!----></div></div> 113 </span></p></div> </main></div><div class="global-ui"><!----></div></div>
114 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/14.e7ac0b94.js" defer></script> 114 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/14.172a5d95.js" defer></script>
115 </body> 115 </body>
116 </html> 116 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>系统框架 | 买买买文档平台</title> 6 <title>系统框架 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/15.6effadcc.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/15.821371e8.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="active sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="系统框架"><a href="#系统框架" aria-hidden="true" class="header-anchor">#</a> 系统框架</h1> <p>管理平台项目框架目标使用规范说明及部分系统 API 描述,目前仅适用于 <code>素+管理平台</code> 项目</p> <h2 id="目录结构描述"><a href="#目录结构描述" aria-hidden="true" class="header-anchor">#</a> 目录结构描述</h2> <p>项目结构目录树如下</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>project/ 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="active sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="系统框架"><a href="#系统框架" class="header-anchor">#</a> 系统框架</h1> <p>管理平台项目框架目标使用规范说明及部分系统 API 描述,目前仅适用于 <code>素+管理平台</code> 项目</p> <h2 id="目录结构描述"><a href="#目录结构描述" class="header-anchor">#</a> 目录结构描述</h2> <p>项目结构目录树如下</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>project/
64 │ .browserslistrc 浏览器版本配置 64 │ .browserslistrc 浏览器版本配置
65 │ .editorconfig 编辑器配置 65 │ .editorconfig 编辑器配置
66 │ .env.development 开发环境下使用的环境变量配置文件 66 │ .env.development 开发环境下使用的环境变量配置文件
@@ -128,54 +128,54 @@ @@ -128,54 +128,54 @@
128 .eslintrc.js 针对单元测试的 eslint 配置 128 .eslintrc.js 针对单元测试的 eslint 配置
129 setup.js 单元测试的前置处理 129 setup.js 单元测试的前置处理
130 130
131 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br><span class="line-number">44</span><br><span class="line-number">45</span><br><span class="line-number">46</span><br><span class="line-number">47</span><br><span class="line-number">48</span><br><span class="line-number">49</span><br><span class="line-number">50</span><br><span class="line-number">51</span><br><span class="line-number">52</span><br><span class="line-number">53</span><br><span class="line-number">54</span><br><span class="line-number">55</span><br><span class="line-number">56</span><br><span class="line-number">57</span><br><span class="line-number">58</span><br><span class="line-number">59</span><br><span class="line-number">60</span><br><span class="line-number">61</span><br><span class="line-number">62</span><br><span class="line-number">63</span><br><span class="line-number">64</span><br><span class="line-number">65</span><br><span class="line-number">66</span><br><span class="line-number">67</span><br><span class="line-number">68</span><br></div></div><p>以上项目结构将为作为后续所有项目的基础结构</p> <h2 id="api"><a href="#api" aria-hidden="true" class="header-anchor">#</a> API</h2> <h3 id="http-url-data-options"><a href="#http-url-data-options" aria-hidden="true" class="header-anchor">#</a> $http(url, [data], [options])</h3> <p>http 数据请求统一入口</p> <ul><li>url</li></ul> <p>目标请求地址,地址分为两种类型:<code>当前域地址</code><code>其他域地址</code></p> <ul><li>data</li></ul> <p>提交的数据参数</p> <ul><li>options</li></ul> <p>配置参数,主要用于特殊情况下需要覆盖 <strong>axios</strong> 原生配置的情况,多数情况下不需要进行设置</p> <p><strong>return</strong></p> <p>Promise 接口对象</p> <hr> <p>常见使用场景</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">//访问当前域服务</span>  
132 -<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$http</span><span class="token punctuation">(</span><span class="token string">'/user/list'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> groupId<span class="token punctuation">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> 131 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br><span class="line-number">44</span><br><span class="line-number">45</span><br><span class="line-number">46</span><br><span class="line-number">47</span><br><span class="line-number">48</span><br><span class="line-number">49</span><br><span class="line-number">50</span><br><span class="line-number">51</span><br><span class="line-number">52</span><br><span class="line-number">53</span><br><span class="line-number">54</span><br><span class="line-number">55</span><br><span class="line-number">56</span><br><span class="line-number">57</span><br><span class="line-number">58</span><br><span class="line-number">59</span><br><span class="line-number">60</span><br><span class="line-number">61</span><br><span class="line-number">62</span><br><span class="line-number">63</span><br><span class="line-number">64</span><br><span class="line-number">65</span><br><span class="line-number">66</span><br><span class="line-number">67</span><br><span class="line-number">68</span><br></div></div><p>以上项目结构将为作为后续所有项目的基础结构</p> <h2 id="api"><a href="#api" class="header-anchor">#</a> API</h2> <h3 id="http-url-data-options"><a href="#http-url-data-options" class="header-anchor">#</a> $http(url, [data], [options])</h3> <p>http 数据请求统一入口</p> <ul><li>url</li></ul> <p>目标请求地址,地址分为两种类型:<code>当前域地址</code><code>其他域地址</code></p> <ul><li>data</li></ul> <p>提交的数据参数</p> <ul><li>options</li></ul> <p>配置参数,主要用于特殊情况下需要覆盖 <strong>axios</strong> 原生配置的情况,多数情况下不需要进行设置</p> <p><strong>return</strong></p> <p>Promise 接口对象</p> <hr> <p>常见使用场景</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">//访问当前域服务</span>
  132 +<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$http</span><span class="token punctuation">(</span><span class="token string">'/user/list'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> groupId<span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
133 <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=&gt;</span> <span class="token operator">...</span><span class="token punctuation">)</span> 133 <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=&gt;</span> <span class="token operator">...</span><span class="token punctuation">)</span>
134 <span class="token punctuation">.</span><span class="token function">catch</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=&gt;</span> <span class="token operator">...</span><span class="token punctuation">)</span> 134 <span class="token punctuation">.</span><span class="token function">catch</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=&gt;</span> <span class="token operator">...</span><span class="token punctuation">)</span>
135 135
136 <span class="token comment">//访问其他域服务</span> 136 <span class="token comment">//访问其他域服务</span>
137 -<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$http</span><span class="token punctuation">(</span><span class="token string">'http://aaa.com/user/list'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> groupId<span class="token punctuation">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">)</span> 137 +<span class="token keyword">this</span><span class="token punctuation">.</span><span class="token function">$http</span><span class="token punctuation">(</span><span class="token string">'http://aaa.com/user/list'</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> groupId<span class="token operator">:</span> <span class="token number">1</span> <span class="token punctuation">}</span><span class="token punctuation">)</span>
138 <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=&gt;</span> <span class="token operator">...</span><span class="token punctuation">)</span> 138 <span class="token punctuation">.</span><span class="token function">then</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=&gt;</span> <span class="token operator">...</span><span class="token punctuation">)</span>
139 <span class="token punctuation">.</span><span class="token function">catch</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=&gt;</span> <span class="token operator">...</span><span class="token punctuation">)</span> 139 <span class="token punctuation">.</span><span class="token function">catch</span><span class="token punctuation">(</span><span class="token parameter">resp</span> <span class="token operator">=&gt;</span> <span class="token operator">...</span><span class="token punctuation">)</span>
140 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h2 id="自定义指令集-directive"><a href="#自定义指令集-directive" aria-hidden="true" class="header-anchor">#</a> 自定义指令集 directive</h2> <h3 id="v-date"><a href="#v-date" aria-hidden="true" class="header-anchor">#</a> v-date</h3> <p>日期格式化,将元素的内容格式化为指定的日期格式</p> <h4 id="参数"><a href="#参数" aria-hidden="true" class="header-anchor">#</a> 参数</h4> <ul><li>日期格式 (string)</li></ul> <p>指定日期格式,例如:'yyyy-MM-dd hh:mm:ss',若不指定格式则默认使用格式:'yyyy-MM-dd'</p> <h4 id="使用方式"><a href="#使用方式" aria-hidden="true" class="header-anchor">#</a> 使用方式</h4> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token comment">&lt;!-- 指定自定义格式 --&gt;</span> 140 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><h2 id="自定义指令集-directive"><a href="#自定义指令集-directive" class="header-anchor">#</a> 自定义指令集 directive</h2> <h3 id="v-date"><a href="#v-date" class="header-anchor">#</a> v-date</h3> <p>日期格式化,将元素的内容格式化为指定的日期格式</p> <h4 id="参数"><a href="#参数" class="header-anchor">#</a> 参数</h4> <ul><li>日期格式 (string)</li></ul> <p>指定日期格式,例如:'yyyy-MM-dd hh:mm:ss',若不指定格式则默认使用格式:'yyyy-MM-dd'</p> <h4 id="使用方式"><a href="#使用方式" class="header-anchor">#</a> 使用方式</h4> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token comment">&lt;!-- 指定自定义格式 --&gt;</span>
141 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-date</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span><span class="token punctuation">'</span>yyyy-MM-dd hh:mm:ss'<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>1559631857305<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> 141 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-date</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span><span class="token punctuation">'</span>yyyy-MM-dd hh:mm:ss'<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>1559631857305<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
142 <span class="token comment">&lt;!-- 不指定格式,使用默认格式 --&gt;</span> 142 <span class="token comment">&lt;!-- 不指定格式,使用默认格式 --&gt;</span>
143 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-date</span><span class="token punctuation">&gt;</span></span>1559631857305<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> 143 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-date</span><span class="token punctuation">&gt;</span></span>1559631857305<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
144 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h4 id="实例"><a href="#实例" aria-hidden="true" class="header-anchor">#</a> 实例</h4> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-date</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span><span class="token punctuation">'</span>yyyy-MM-dd hh:mm:ss'<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>1559631857305<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> 144 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h4 id="实例"><a href="#实例" class="header-anchor">#</a> 实例</h4> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-date</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span><span class="token punctuation">'</span>yyyy-MM-dd hh:mm:ss'<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>1559631857305<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
145 <span class="token comment">&lt;!-- 结果:2019-06-04 15:04:17 --&gt;</span> 145 <span class="token comment">&lt;!-- 结果:2019-06-04 15:04:17 --&gt;</span>
146 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-date</span><span class="token punctuation">&gt;</span></span>Tue Jun 04 2019 15:33:06 GMT+0800 (中国标准时间)<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> 146 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-date</span><span class="token punctuation">&gt;</span></span>Tue Jun 04 2019 15:33:06 GMT+0800 (中国标准时间)<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
147 <span class="token comment">&lt;!-- 结果:2019-06-04 --&gt;</span> 147 <span class="token comment">&lt;!-- 结果:2019-06-04 --&gt;</span>
148 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h3 id="v-number"><a href="#v-number" aria-hidden="true" class="header-anchor">#</a> v-number</h3> <p>数字类型格式化(保留小数点位数),将元素内容格式化为指定位数小数点数字,位数不足则使用 0 补充,推荐用于数据统计,金额计算、展示等场景</p> <h4 id="参数-2"><a href="#参数-2" aria-hidden="true" class="header-anchor">#</a> 参数</h4> <ul><li>保留小数点位数 (number)</li></ul> <p>指定数字保留小数点位数,默认为:2</p> <h4 id="使用方式-2"><a href="#使用方式-2" aria-hidden="true" class="header-anchor">#</a> 使用方式</h4> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token comment">&lt;!-- 指定自定义保留位数 --&gt;</span> 148 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h3 id="v-number"><a href="#v-number" class="header-anchor">#</a> v-number</h3> <p>数字类型格式化(保留小数点位数),将元素内容格式化为指定位数小数点数字,位数不足则使用 0 补充,推荐用于数据统计,金额计算、展示等场景</p> <h4 id="参数-2"><a href="#参数-2" class="header-anchor">#</a> 参数</h4> <ul><li>保留小数点位数 (number)</li></ul> <p>指定数字保留小数点位数,默认为:2</p> <h4 id="使用方式-2"><a href="#使用方式-2" class="header-anchor">#</a> 使用方式</h4> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token comment">&lt;!-- 指定自定义保留位数 --&gt;</span>
149 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>4<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>3450.20<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> 149 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>4<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>3450.20<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
150 <span class="token comment">&lt;!-- 不指定格式,使用默认保留位数 --&gt;</span> 150 <span class="token comment">&lt;!-- 不指定格式,使用默认保留位数 --&gt;</span>
151 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token punctuation">&gt;</span></span>3450<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> 151 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token punctuation">&gt;</span></span>3450<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
152 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h4 id="实例-2"><a href="#实例-2" aria-hidden="true" class="header-anchor">#</a> 实例</h4> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>4<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>3450.20<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> 152 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h4 id="实例-2"><a href="#实例-2" class="header-anchor">#</a> 实例</h4> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>4<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>3450.20<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
153 <span class="token comment">&lt;!-- 结果:3450.2000 --&gt;</span> 153 <span class="token comment">&lt;!-- 结果:3450.2000 --&gt;</span>
154 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token punctuation">&gt;</span></span>3450<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> 154 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token punctuation">&gt;</span></span>3450<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
155 <span class="token comment">&lt;!-- 结果:3450.00 --&gt;</span> 155 <span class="token comment">&lt;!-- 结果:3450.00 --&gt;</span>
156 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token punctuation">&gt;</span></span>3450.1234<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span> 156 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>span</span> <span class="token attr-name">v-number</span><span class="token punctuation">&gt;</span></span>3450.1234<span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>span</span><span class="token punctuation">&gt;</span></span>
157 <span class="token comment">&lt;!-- 结果:3450.12 --&gt;</span> 157 <span class="token comment">&lt;!-- 结果:3450.12 --&gt;</span>
158 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><h2 id="表单校验规则"><a href="#表单校验规则" aria-hidden="true" class="header-anchor">#</a> 表单校验规则</h2> <h4 id="使用方式-3"><a href="#使用方式-3" aria-hidden="true" class="header-anchor">#</a> 使用方式</h4> <p>Form 组件通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名</p> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>el-form</span> <span class="token attr-name">:rules</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>rules<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span> 158 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><h2 id="表单校验规则"><a href="#表单校验规则" class="header-anchor">#</a> 表单校验规则</h2> <h4 id="使用方式-3"><a href="#使用方式-3" class="header-anchor">#</a> 使用方式</h4> <p>Form 组件通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名</p> <div class="language-vue line-numbers-mode"><pre class="language-vue"><code><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>el-form</span> <span class="token attr-name">:rules</span><span class="token attr-value"><span class="token punctuation">=</span><span class="token punctuation">&quot;</span>rules<span class="token punctuation">&quot;</span></span><span class="token punctuation">&gt;</span></span>
159 ... 159 ...
160 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>el-form</span><span class="token punctuation">&gt;</span></span> 160 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>el-form</span><span class="token punctuation">&gt;</span></span>
161 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span><span class="token script"><span class="token language-javascript"> 161 <span class="token tag"><span class="token tag"><span class="token punctuation">&lt;</span>script</span><span class="token punctuation">&gt;</span></span><span class="token script"><span class="token language-javascript">
162 <span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span> 162 <span class="token keyword">export</span> <span class="token keyword">default</span> <span class="token punctuation">{</span>
163 <span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> 163 <span class="token function">data</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
164 <span class="token keyword">return</span> <span class="token punctuation">{</span> 164 <span class="token keyword">return</span> <span class="token punctuation">{</span>
165 - ruleForm<span class="token punctuation">:</span> <span class="token punctuation">{</span>  
166 - name<span class="token punctuation">:</span> <span class="token string">''</span> 165 + ruleForm<span class="token operator">:</span> <span class="token punctuation">{</span>
  166 + name<span class="token operator">:</span> <span class="token string">''</span>
167 <span class="token punctuation">}</span><span class="token punctuation">,</span> 167 <span class="token punctuation">}</span><span class="token punctuation">,</span>
168 - rules<span class="token punctuation">:</span> <span class="token punctuation">{</span>  
169 - name<span class="token punctuation">:</span> <span class="token punctuation">[</span>  
170 - <span class="token punctuation">{</span> required<span class="token punctuation">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> message<span class="token punctuation">:</span> <span class="token string">'请输入活动名称'</span><span class="token punctuation">,</span> trigger<span class="token punctuation">:</span> <span class="token string">'blur'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>  
171 - <span class="token punctuation">{</span> min<span class="token punctuation">:</span> <span class="token number">3</span><span class="token punctuation">,</span> max<span class="token punctuation">:</span> <span class="token number">5</span><span class="token punctuation">,</span> message<span class="token punctuation">:</span> <span class="token string">'长度在 3 到 5 个字符'</span><span class="token punctuation">,</span> trigger<span class="token punctuation">:</span> <span class="token string">'blur'</span> <span class="token punctuation">}</span> 168 + rules<span class="token operator">:</span> <span class="token punctuation">{</span>
  169 + name<span class="token operator">:</span> <span class="token punctuation">[</span>
  170 + <span class="token punctuation">{</span> required<span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> message<span class="token operator">:</span> <span class="token string">'请输入活动名称'</span><span class="token punctuation">,</span> trigger<span class="token operator">:</span> <span class="token string">'blur'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
  171 + <span class="token punctuation">{</span> min<span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span> max<span class="token operator">:</span> <span class="token number">5</span><span class="token punctuation">,</span> message<span class="token operator">:</span> <span class="token string">'长度在 3 到 5 个字符'</span><span class="token punctuation">,</span> trigger<span class="token operator">:</span> <span class="token string">'blur'</span> <span class="token punctuation">}</span>
172 <span class="token punctuation">]</span><span class="token punctuation">,</span> 172 <span class="token punctuation">]</span><span class="token punctuation">,</span>
173 <span class="token punctuation">}</span> 173 <span class="token punctuation">}</span>
174 <span class="token punctuation">}</span><span class="token punctuation">;</span> 174 <span class="token punctuation">}</span><span class="token punctuation">;</span>
175 <span class="token punctuation">}</span> 175 <span class="token punctuation">}</span>
176 <span class="token punctuation">}</span> 176 <span class="token punctuation">}</span>
177 </span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span> 177 </span></span><span class="token tag"><span class="token tag"><span class="token punctuation">&lt;/</span>script</span><span class="token punctuation">&gt;</span></span>
178 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br></div></div><h4 id="自定义验证函数"><a href="#自定义验证函数" aria-hidden="true" class="header-anchor">#</a> 自定义验证函数</h4> <ul><li><code>checkNumOrLetter</code> 验证只能包含数字和字母</li> <li><code>checkNum</code> 验证只能为整数</li> <li><code>validateNumAndFloat</code> 验证必须是整数或小数</li> <li><code>velidateSpecialNUm</code> 验证只能是范围0.0001 ~ 999999999.9999的数字</li> <li><code>fourDigitsAfter</code> 验证只能是小数点后4位的浮点数</li> <li><code>checkPhoneNum</code> 验证只能是电话号码</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"> 178 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br></div></div><h4 id="自定义验证函数"><a href="#自定义验证函数" class="header-anchor">#</a> 自定义验证函数</h4> <ul><li><code>checkNumOrLetter</code> 验证只能包含数字和字母</li> <li><code>checkNum</code> 验证只能为整数</li> <li><code>validateNumAndFloat</code> 验证必须是整数或小数</li> <li><code>velidateSpecialNUm</code> 验证只能是范围0.0001 ~ 999999999.9999的数字</li> <li><code>fourDigitsAfter</code> 验证只能是小数点后4位的浮点数</li> <li><code>checkPhoneNum</code> 验证只能是电话号码</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
179 179
180 <a href="/team/frontend/components.html" class="prev"> 180 <a href="/team/frontend/components.html" class="prev">
181 业务组件 181 业务组件
@@ -184,6 +184,6 @@ @@ -184,6 +184,6 @@
184 </a> 184 </a>
185 185
186 </span></p></div> </main></div><div class="global-ui"><!----></div></div> 186 </span></p></div> </main></div><div class="global-ui"><!----></div></div>
187 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/15.6effadcc.js" defer></script> 187 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/15.821371e8.js" defer></script>
188 </body> 188 </body>
189 </html> 189 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>数据交互格式标准 | 买买买文档平台</title> 6 <title>数据交互格式标准 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/16.25486ada.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/16.4011c09c.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="active sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="数据交互格式标准"><a href="#数据交互格式标准" aria-hidden="true" class="header-anchor">#</a> 数据交互格式标准</h1> <p>前后端数据交互标准格式详细说明</p> <h2 id="数据格式样例"><a href="#数据格式样例" aria-hidden="true" class="header-anchor">#</a> 数据格式样例</h2> <div class="language-js line-numbers-mode"><div class="highlight-lines"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><div class="highlighted"> </div><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><div class="highlighted"> </div><br><br><br><br><br><br></div><pre class="language-js"><code><span class="token punctuation">{</span> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="active sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="数据交互格式标准"><a href="#数据交互格式标准" class="header-anchor">#</a> 数据交互格式标准</h1> <p>前后端数据交互标准格式详细说明</p> <h2 id="数据格式样例"><a href="#数据格式样例" class="header-anchor">#</a> 数据格式样例</h2> <div class="language-js line-numbers-mode"><div class="highlight-lines"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><div class="highlighted"> </div><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><div class="highlighted"> </div><br><br><br><br><br><br></div><pre class="language-js"><code><span class="token punctuation">{</span>
64 <span class="token comment">/** 64 <span class="token comment">/**
65 * 请求结果 65 * 请求结果
66 * -1: 业务检查不通过 66 * -1: 业务检查不通过
@@ -68,7 +68,7 @@ @@ -68,7 +68,7 @@
68 * 2: token 失效,主要用于用户登录超时、特定情况下主动清除用户登录状态 68 * 2: token 失效,主要用于用户登录超时、特定情况下主动清除用户登录状态
69 * 例如用户权限发生变化等场景 69 * 例如用户权限发生变化等场景
70 */</span> 70 */</span>
71 - <span class="token string">&quot;code&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span> 71 + <span class="token string">&quot;code&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
72 <span class="token comment">/** 72 <span class="token comment">/**
73 * 请求异常的提示信息 73 * 请求异常的提示信息
74 * 当数据请求结果为 0 时,本节点令需固定输出 &quot;ok&quot; 即可 74 * 当数据请求结果为 0 时,本节点令需固定输出 &quot;ok&quot; 即可
@@ -89,36 +89,36 @@ @@ -89,36 +89,36 @@
89 * } 89 * }
90 * } 90 * }
91 */</span> 91 */</span>
92 - <span class="token string">&quot;msg&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> 92 + <span class="token string">&quot;msg&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
93 <span class="token comment">/** 93 <span class="token comment">/**
94 * 请求后返回的数据内容都应在 data 节点下输出 94 * 请求后返回的数据内容都应在 data 节点下输出
95 */</span> 95 */</span>
96 - <span class="token string">&quot;data&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> 96 + <span class="token string">&quot;data&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
97 <span class="token comment">/** 97 <span class="token comment">/**
98 * 常规单一数据节点 98 * 常规单一数据节点
99 */</span> 99 */</span>
100 - <span class="token string">&quot;attr&quot;</span><span class="token punctuation">:</span> value<span class="token punctuation">,</span> 100 + <span class="token string">&quot;attr&quot;</span><span class="token operator">:</span> value<span class="token punctuation">,</span>
101 <span class="token comment">/** 101 <span class="token comment">/**
102 * 对象数据节点 102 * 对象数据节点
103 */</span> 103 */</span>
104 - <span class="token string">&quot;user&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
105 - <span class="token string">&quot;name&quot;</span><span class="token punctuation">:</span> <span class="token string">&quot;zhangsan&quot;</span><span class="token punctuation">,</span>  
106 - <span class="token string">&quot;age&quot;</span><span class="token punctuation">:</span> <span class="token number">18</span> 104 + <span class="token string">&quot;user&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  105 + <span class="token string">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;zhangsan&quot;</span><span class="token punctuation">,</span>
  106 + <span class="token string">&quot;age&quot;</span><span class="token operator">:</span> <span class="token number">18</span>
107 <span class="token punctuation">}</span><span class="token punctuation">,</span> 107 <span class="token punctuation">}</span><span class="token punctuation">,</span>
108 <span class="token comment">/** 108 <span class="token comment">/**
109 * 列表型数据节点 109 * 列表型数据节点
110 */</span> 110 */</span>
111 - <span class="token string">&quot;users&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> object <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token punctuation">]</span><span class="token punctuation">,</span> 111 + <span class="token string">&quot;users&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token punctuation">{</span> object <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token operator">...</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
112 <span class="token comment">/** 112 <span class="token comment">/**
113 * 数据表格结果输出的数据节点 113 * 数据表格结果输出的数据节点
114 */</span> 114 */</span>
115 - <span class="token string">&quot;gridResult&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> 115 + <span class="token string">&quot;gridResult&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
116 <span class="token comment">// 当前页码</span> 116 <span class="token comment">// 当前页码</span>
117 - <span class="token string">&quot;pageNumber&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span> 117 + <span class="token string">&quot;pageNumber&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
118 <span class="token comment">// 总记录数</span> 118 <span class="token comment">// 总记录数</span>
119 - <span class="token string">&quot;totalRow&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span> 119 + <span class="token string">&quot;totalRow&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
120 <span class="token comment">// 数据列表内容</span> 120 <span class="token comment">// 数据列表内容</span>
121 - <span class="token string">&quot;lists&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">[</span> 121 + <span class="token string">&quot;lists&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
122 <span class="token punctuation">{</span> 122 <span class="token punctuation">{</span>
123 object <span class="token comment">// 数据模型</span> 123 object <span class="token comment">// 数据模型</span>
124 <span class="token punctuation">}</span><span class="token punctuation">,</span> 124 <span class="token punctuation">}</span><span class="token punctuation">,</span>
@@ -128,32 +128,32 @@ @@ -128,32 +128,32 @@
128 <span class="token comment">/** 128 <span class="token comment">/**
129 * 用户登录、更新/刷新 token 等登录授权操作后输出的数据节点 129 * 用户登录、更新/刷新 token 等登录授权操作后输出的数据节点
130 */</span> 130 */</span>
131 - <span class="token string">&quot;access&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
132 - <span class="token string">&quot;accessToken&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span>  
133 - <span class="token string">&quot;expiresIn&quot;</span><span class="token punctuation">:</span> number 131 + <span class="token string">&quot;access&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  132 + <span class="token string">&quot;accessToken&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
  133 + <span class="token string">&quot;expiresIn&quot;</span><span class="token operator">:</span> number
134 <span class="token punctuation">}</span> 134 <span class="token punctuation">}</span>
135 <span class="token punctuation">}</span> 135 <span class="token punctuation">}</span>
136 <span class="token punctuation">}</span> 136 <span class="token punctuation">}</span>
137 -</code></pre><div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br><span class="line-number">44</span><br><span class="line-number">45</span><br><span class="line-number">46</span><br><span class="line-number">47</span><br><span class="line-number">48</span><br><span class="line-number">49</span><br><span class="line-number">50</span><br><span class="line-number">51</span><br><span class="line-number">52</span><br><span class="line-number">53</span><br><span class="line-number">54</span><br><span class="line-number">55</span><br><span class="line-number">56</span><br><span class="line-number">57</span><br><span class="line-number">58</span><br><span class="line-number">59</span><br><span class="line-number">60</span><br><span class="line-number">61</span><br><span class="line-number">62</span><br><span class="line-number">63</span><br><span class="line-number">64</span><br><span class="line-number">65</span><br><span class="line-number">66</span><br><span class="line-number">67</span><br><span class="line-number">68</span><br><span class="line-number">69</span><br><span class="line-number">70</span><br><span class="line-number">71</span><br><span class="line-number">72</span><br><span class="line-number">73</span><br><span class="line-number">74</span><br></div></div><h2 id="api-交互规则"><a href="#api-交互规则" aria-hidden="true" class="header-anchor">#</a> API 交互规则</h2> <p>RESTful API 是 API 设计风格而非标准,在团队应用中仅按需使用相应内容即可,目前团队执行以下规范</p> <ol><li>开发与测试环境使用 <code>http</code> 协议,生产环境下使用 <code>https</code> 协议</li> <li>描述性 api 地址(Endpoint),例如:<code>https://aa.com/v1/system/user/profile/{id}</code></li> <li><strong>HTTP 动词统一使用 <code>POST</code></strong></li></ol> <p>更多 RESTful API 内容:</p> <ul><li><a href="http://www.ruanyifeng.com/blog/2014/05/restful_api.html" target="_blank" rel="noopener noreferrer">RESTful API 设计指南<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html" target="_blank" rel="noopener noreferrer">RESTful API 最佳实践<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <h2 id="跨域与重复请求"><a href="#跨域与重复请求" aria-hidden="true" class="header-anchor">#</a> 跨域与重复请求</h2> <p>除少数历史遗留项目外,公司现有项目均使用前后端分离模式,即前端、服务端各自独立开发、运行和部署。</p> <h3 id="跨域(cors)"><a href="#跨域(cors)" aria-hidden="true" class="header-anchor">#</a> 跨域(CORS)</h3> <p>示例网址: <code>https://abc.com:8080/</code></p> <p>构成网址的三个基本元素</p> <ul><li>协议(<code>https://</code></li> <li>网址(<code>abc.com</code></li> <li>端口(<code>8080</code></li></ul> <p>两个网址之间,只要有上述三个元素中其中一项不一致,即为跨域访问。前后端项目在各自独立运行部署后,则天然处于跨域模式下</p> <p>更多跨域资料:<a href="http://www.ruanyifeng.com/blog/2016/04/cors.html" target="_blank" rel="noopener noreferrer">跨域资源共享 CORS 详解<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p> <h3 id="跨域请求模式"><a href="#跨域请求模式" aria-hidden="true" class="header-anchor">#</a> 跨域请求模式</h3> <p>浏览器将 CORS 请求分成两类:</p> <ul><li>简单请求(simple request)</li> <li>非简单请求(not-so-simple request)</li></ul> <h4 id="简单请求"><a href="#简单请求" aria-hidden="true" class="header-anchor">#</a> 简单请求</h4> <p>只要同时满足以下两大条件,就属于简单请求</p> <ol><li>请求方法是以下三种方法之一:<code>HEAD</code><code>GET</code><code>POST</code></li> <li>HTTP的头信息不超出以下几种字段  
138 -<ul><li>Accept</li> <li>Accept-Language</li> <li>Content-Language</li> <li>Last-Event-ID</li> <li>Content-Type:只限于三个值 <code>application/x-www-form-urlencoded</code><code>multipart/form-data</code><code>text/plain</code></li></ul></li></ol> <h4 id="非简单请求"><a href="#非简单请求" aria-hidden="true" class="header-anchor">#</a> 非简单请求</h4> <p>非简单请求是那种对服务器有特殊要求的请求,比如请求方法是 <code>PUT</code><code>DELETE</code>,或者 <code>Content-Type</code> 字段的类型是 <code>application/json</code></p> <h3 id="跨域应用"><a href="#跨域应用" aria-hidden="true" class="header-anchor">#</a> 跨域应用</h3> <p>根据以上描述的内容,结合公司使用的规则</p> <ul><li>跨域</li> <li>HTTP 动词为 <code>POST</code></li> <li>Content-Type 为 <code>application/json</code></li></ul> <p>那么在发起 HTTP 数据请求时,HTTP Client 插件将会增加一次 HTTP 查询请求,称为 “预检” 请求(preflight),特点就是该请求的 <code>General</code> 段中的 <code>Request Method</code> 值为 <code>OPTIONS</code>,没有请求参数,该请求的功能仅在向服务器询问当前的 <strong>非简单请求</strong> 是否允许访问</p> <div class="custom-block danger"><p class="custom-block-title">应用服务器 / 静态网页服务器处理</p> <p>项目开发之初,服务端应优先开发调试跨域支持,以免影响后续工作</p> <p>另外,无论是具体的应用服务,如 <code>nodejs</code><code>PHP</code><code>GO</code><code>Java</code> 等,还是静态网页服务器 <code>nginx</code>,在检测到请求方法是 <code>OPTIONS</code> 时,请直接返回 <code>204</code> 状态,该状态意为请求成功,但无返回内容(NO CONTENT),该处理可避免预检请求执行业务内容,浪费资源</p></div> <h2 id="数据表格"><a href="#数据表格" aria-hidden="true" class="header-anchor">#</a> 数据表格</h2> <p>数据表格的标准数据交换格式</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span> 137 +</code></pre><div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br><span class="line-number">44</span><br><span class="line-number">45</span><br><span class="line-number">46</span><br><span class="line-number">47</span><br><span class="line-number">48</span><br><span class="line-number">49</span><br><span class="line-number">50</span><br><span class="line-number">51</span><br><span class="line-number">52</span><br><span class="line-number">53</span><br><span class="line-number">54</span><br><span class="line-number">55</span><br><span class="line-number">56</span><br><span class="line-number">57</span><br><span class="line-number">58</span><br><span class="line-number">59</span><br><span class="line-number">60</span><br><span class="line-number">61</span><br><span class="line-number">62</span><br><span class="line-number">63</span><br><span class="line-number">64</span><br><span class="line-number">65</span><br><span class="line-number">66</span><br><span class="line-number">67</span><br><span class="line-number">68</span><br><span class="line-number">69</span><br><span class="line-number">70</span><br><span class="line-number">71</span><br><span class="line-number">72</span><br><span class="line-number">73</span><br><span class="line-number">74</span><br></div></div><h2 id="api-交互规则"><a href="#api-交互规则" class="header-anchor">#</a> API 交互规则</h2> <p>RESTful API 是 API 设计风格而非标准,在团队应用中仅按需使用相应内容即可,目前团队执行以下规范</p> <ol><li>开发与测试环境使用 <code>http</code> 协议,生产环境下使用 <code>https</code> 协议</li> <li>描述性 api 地址(Endpoint),例如:<code>https://aa.com/v1/system/user/profile/{id}</code></li> <li><strong>HTTP 动词统一使用 <code>POST</code></strong></li></ol> <p>更多 RESTful API 内容:</p> <ul><li><a href="http://www.ruanyifeng.com/blog/2014/05/restful_api.html" target="_blank" rel="noopener noreferrer">RESTful API 设计指南<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="https://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html" target="_blank" rel="noopener noreferrer">RESTful API 最佳实践<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <h2 id="跨域与重复请求"><a href="#跨域与重复请求" class="header-anchor">#</a> 跨域与重复请求</h2> <p>除少数历史遗留项目外,公司现有项目均使用前后端分离模式,即前端、服务端各自独立开发、运行和部署。</p> <h3 id="跨域(cors)"><a href="#跨域(cors)" class="header-anchor">#</a> 跨域(CORS)</h3> <p>示例网址: <code>https://abc.com:8080/</code></p> <p>构成网址的三个基本元素</p> <ul><li>协议(<code>https://</code></li> <li>网址(<code>abc.com</code></li> <li>端口(<code>8080</code></li></ul> <p>两个网址之间,只要有上述三个元素中其中一项不一致,即为跨域访问。前后端项目在各自独立运行部署后,则天然处于跨域模式下</p> <p>更多跨域资料:<a href="http://www.ruanyifeng.com/blog/2016/04/cors.html" target="_blank" rel="noopener noreferrer">跨域资源共享 CORS 详解<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p> <h3 id="跨域请求模式"><a href="#跨域请求模式" class="header-anchor">#</a> 跨域请求模式</h3> <p>浏览器将 CORS 请求分成两类:</p> <ul><li>简单请求(simple request)</li> <li>非简单请求(not-so-simple request)</li></ul> <h4 id="简单请求"><a href="#简单请求" class="header-anchor">#</a> 简单请求</h4> <p>只要同时满足以下两大条件,就属于简单请求</p> <ol><li>请求方法是以下三种方法之一:<code>HEAD</code><code>GET</code><code>POST</code></li> <li>HTTP的头信息不超出以下几种字段
  138 +<ul><li>Accept</li> <li>Accept-Language</li> <li>Content-Language</li> <li>Last-Event-ID</li> <li>Content-Type:只限于三个值 <code>application/x-www-form-urlencoded</code><code>multipart/form-data</code><code>text/plain</code></li></ul></li></ol> <h4 id="非简单请求"><a href="#非简单请求" class="header-anchor">#</a> 非简单请求</h4> <p>非简单请求是那种对服务器有特殊要求的请求,比如请求方法是 <code>PUT</code><code>DELETE</code>,或者 <code>Content-Type</code> 字段的类型是 <code>application/json</code></p> <h3 id="跨域应用"><a href="#跨域应用" class="header-anchor">#</a> 跨域应用</h3> <p>根据以上描述的内容,结合公司使用的规则</p> <ul><li>跨域</li> <li>HTTP 动词为 <code>POST</code></li> <li>Content-Type 为 <code>application/json</code></li></ul> <p>那么在发起 HTTP 数据请求时,HTTP Client 插件将会增加一次 HTTP 查询请求,称为 “预检” 请求(preflight),特点就是该请求的 <code>General</code> 段中的 <code>Request Method</code> 值为 <code>OPTIONS</code>,没有请求参数,该请求的功能仅在向服务器询问当前的 <strong>非简单请求</strong> 是否允许访问</p> <div class="custom-block danger"><p class="custom-block-title">应用服务器 / 静态网页服务器处理</p> <p>项目开发之初,服务端应优先开发调试跨域支持,以免影响后续工作</p> <p>另外,无论是具体的应用服务,如 <code>nodejs</code><code>PHP</code><code>GO</code><code>Java</code> 等,还是静态网页服务器 <code>nginx</code>,在检测到请求方法是 <code>OPTIONS</code> 时,请直接返回 <code>204</code> 状态,该状态意为请求成功,但无返回内容(NO CONTENT),该处理可避免预检请求执行业务内容,浪费资源</p></div> <h2 id="数据表格"><a href="#数据表格" class="header-anchor">#</a> 数据表格</h2> <p>数据表格的标准数据交换格式</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span>
139 <span class="token punctuation">{</span> 139 <span class="token punctuation">{</span>
140 <span class="token comment">// 表格自动根据当前分页情况发送</span> 140 <span class="token comment">// 表格自动根据当前分页情况发送</span>
141 - <span class="token string">&quot;pageNumber&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span>  
142 - <span class="token string">&quot;pageSize&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span> 141 + <span class="token string">&quot;pageNumber&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
  142 + <span class="token string">&quot;pageSize&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
143 <span class="token comment">// 自定义业务/查询参数</span> 143 <span class="token comment">// 自定义业务/查询参数</span>
144 <span class="token operator">...</span> 144 <span class="token operator">...</span>
145 <span class="token punctuation">}</span> 145 <span class="token punctuation">}</span>
146 146
147 <span class="token comment">// 返回数据</span> 147 <span class="token comment">// 返回数据</span>
148 <span class="token punctuation">{</span> 148 <span class="token punctuation">{</span>
149 - <span class="token string">&quot;data&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
150 - <span class="token string">&quot;gridResult&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> 149 + <span class="token string">&quot;data&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  150 + <span class="token string">&quot;gridResult&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
151 <span class="token comment">// 当前页</span> 151 <span class="token comment">// 当前页</span>
152 - <span class="token string">&quot;pageNumber&quot;</span><span class="token punctuation">:</span> <span class="token number">1</span><span class="token punctuation">,</span> 152 + <span class="token string">&quot;pageNumber&quot;</span><span class="token operator">:</span> <span class="token number">1</span><span class="token punctuation">,</span>
153 <span class="token comment">// 总记录数</span> 153 <span class="token comment">// 总记录数</span>
154 - <span class="token string">&quot;totalRow&quot;</span><span class="token punctuation">:</span> <span class="token number">3</span><span class="token punctuation">,</span> 154 + <span class="token string">&quot;totalRow&quot;</span><span class="token operator">:</span> <span class="token number">3</span><span class="token punctuation">,</span>
155 <span class="token comment">// 数据列表内容</span> 155 <span class="token comment">// 数据列表内容</span>
156 - <span class="token string">&quot;lists&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">[</span> 156 + <span class="token string">&quot;lists&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
157 <span class="token punctuation">{</span> 157 <span class="token punctuation">{</span>
158 object <span class="token comment">// 数据模型</span> 158 object <span class="token comment">// 数据模型</span>
159 <span class="token punctuation">}</span><span class="token punctuation">,</span> 159 <span class="token punctuation">}</span><span class="token punctuation">,</span>
@@ -162,15 +162,15 @@ @@ -162,15 +162,15 @@
162 <span class="token punctuation">}</span> 162 <span class="token punctuation">}</span>
163 <span class="token punctuation">}</span> 163 <span class="token punctuation">}</span>
164 <span class="token punctuation">}</span> 164 <span class="token punctuation">}</span>
165 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br></div></div><h2 id="登录授权"><a href="#登录授权" aria-hidden="true" class="header-anchor">#</a> 登录授权</h2> <p>访问类似用户登录、切换用户/公司/企业、交换/刷新 <code>token</code> 等接口时,在请求成功后,应输出 <code>access</code> 标准节点,用于输出登录授权相关的访问令牌及有效期限等内容</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token punctuation">{</span>  
166 - <span class="token string">&quot;data&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
167 - <span class="token string">&quot;access&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
168 - <span class="token string">&quot;accessToken&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span>  
169 - <span class="token string">&quot;expiresIn&quot;</span><span class="token punctuation">:</span> number 165 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br></div></div><h2 id="登录授权"><a href="#登录授权" class="header-anchor">#</a> 登录授权</h2> <p>访问类似用户登录、切换用户/公司/企业、交换/刷新 <code>token</code> 等接口时,在请求成功后,应输出 <code>access</code> 标准节点,用于输出登录授权相关的访问令牌及有效期限等内容</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token punctuation">{</span>
  166 + <span class="token string">&quot;data&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  167 + <span class="token string">&quot;access&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  168 + <span class="token string">&quot;accessToken&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
  169 + <span class="token string">&quot;expiresIn&quot;</span><span class="token operator">:</span> number
170 <span class="token punctuation">}</span> 170 <span class="token punctuation">}</span>
171 <span class="token punctuation">}</span> 171 <span class="token punctuation">}</span>
172 <span class="token punctuation">}</span> 172 <span class="token punctuation">}</span>
173 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h3 id="处理逻辑"><a href="#处理逻辑" aria-hidden="true" class="header-anchor">#</a> 处理逻辑</h3> <p>用于数据请求的 <strong>http client</strong> 会在每一次数据请求成功后(<code>&quot;code&quot;: 0</code>),检查数据内容中是否包含 <code>access</code> 节点,若有,则当前用户访问令牌等内容会被新数据所更新,并在下一次数据请求时,于 <code>Request Headers</code> 数据段中增加</p> <p><code>&quot;Authorization&quot;: &quot;Bearer ${token}&quot;</code></p> <p>属性,上述 <code>${token}</code> 内容为登录授权接口返回的 <code>access.accessToken</code> 数据,用于服务端进行用户身份验证</p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"> 173 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h3 id="处理逻辑"><a href="#处理逻辑" class="header-anchor">#</a> 处理逻辑</h3> <p>用于数据请求的 <strong>http client</strong> 会在每一次数据请求成功后(<code>&quot;code&quot;: 0</code>),检查数据内容中是否包含 <code>access</code> 节点,若有,则当前用户访问令牌等内容会被新数据所更新,并在下一次数据请求时,于 <code>Request Headers</code> 数据段中增加</p> <p><code>&quot;Authorization&quot;: &quot;Bearer ${token}&quot;</code></p> <p>属性,上述 <code>${token}</code> 内容为登录授权接口返回的 <code>access.accessToken</code> 数据,用于服务端进行用户身份验证</p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
174 174
175 <a href="/team/frontend/standard.html" class="prev"> 175 <a href="/team/frontend/standard.html" class="prev">
176 开发规范 176 开发规范
@@ -179,6 +179,6 @@ @@ -179,6 +179,6 @@
179 </a> 179 </a>
180 180
181 </span></p></div> </main></div><div class="global-ui"><!----></div></div> 181 </span></p></div> </main></div><div class="global-ui"><!----></div></div>
182 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/16.25486ada.js" defer></script> 182 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/16.4011c09c.js" defer></script>
183 </body> 183 </body>
184 </html> 184 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>前端 Frontend | 买买买文档平台</title> 6 <title>前端 Frontend | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/13.a4f2bd9c.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/13.e26beb91.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-exact-active router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-exact-active router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-exact-active router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-exact-active router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,12 +60,12 @@ @@ -60,12 +60,12 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="active sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="前端-frontend"><a href="#前端-frontend" aria-hidden="true" class="header-anchor">#</a> 前端 Frontend</h1> <h2 id="能力输出"><a href="#能力输出" aria-hidden="true" class="header-anchor">#</a> 能力输出</h2> <ul><li><p>微信小程序</p></li> <li><p>支持全平台(<strong>Windows</strong><strong>Mac</strong><strong>Linux</strong>)的桌面客户端,以 <code>Windows</code> 环境为例,客户端程序以 <code>exe</code> 格式的可执行文件形式存在,不需要依赖浏览器运行,例如 QQ、Microsoft Office 等一系列可直接运行的桌面客户端</p></li> <li><p>各类型网站,包含但不限于以下类型</p> <ul><li>管理平台</li> <li>CMS 站点</li> <li>企业门户综合网站</li> <li>服务类型网站</li> <li>设备嵌入网页</li></ul> <p>网站可根据需求针对 <code>desktop</code><code>tablet</code><code>mobile</code> 等不同尺寸设备进行适配</p></li></ul> <h2 id="项目构建说明"><a href="#项目构建说明" aria-hidden="true" class="header-anchor">#</a> 项目构建说明</h2> <h3 id="构建网站"><a href="#构建网站" aria-hidden="true" class="header-anchor">#</a> 构建网站</h3> <p>各类型网站、设备嵌入式网页等</p> <p><strong>生产环境</strong></p> <p>生产环境内容更新须严格按照计划安排执行</p> <p>执行构建流程</p> <ol><li>测试小组确认当前版本已通过测试</li> <li>项目负责人根据计划决定更新时间</li> <li>执行构建前自动化测试  
64 -<ul class="contains-task-list"><li class="task-list-item"><input checked="checked" disabled="disabled" type="checkbox" class="task-list-item-checkbox"> ESLint 语法检查扫描</li> <li class="task-list-item"><input disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 单元测试</li> <li class="task-list-item"><input disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 端对端测试</li></ul></li> <li>执行项目构建</li> <li>提交构建结果于运维人员并正式更新至生产环境</li></ol> <p><strong>测试环境</strong></p> <p>持续集成平台根据配置自动进行构建,用于测试小组测试功能完成情况</p> <div class="custom-block tip"><p class="custom-block-title">构建频率</p> <p>在所有使用自动持续集成的项目中,构建频率均为每天中午及凌晨两个时段</p> <ul><li>中午自动构建保证下午可以测试新的内容</li> <li>凌晨自动构建保证第二天早晨可以测试新的内容</li></ul></div> <h4 id="开发环境"><a href="#开发环境" aria-hidden="true" class="header-anchor">#</a> 开发环境</h4> <p>开发环境使用本地环境进行构建及运行项目</p> <h3 id="构建微信小程序"><a href="#构建微信小程序" aria-hidden="true" class="header-anchor">#</a> 构建微信小程序</h3> <p>微信小程序各版本发布流程说明</p> <p><strong>线上版</strong></p> <ol><li>测试小组确认当前版本已通过测试</li> <li>项目负责人根据计划决定更新时间</li> <li>设置环境参数为线上版</li> <li>上传代码至微信小程序平台</li> <li>进入微信公众平台,在版本管理中将当前 <strong>体验版</strong> 提交为 <strong>线上版</strong></li> <li>等待微信平台审核</li> <li>微信平台审核通过,并会在微信中通知相关人员</li> <li>进入微信公众平台,将审核通过的版本,发布为 <strong>线上版</strong></li></ol> <p><strong>预览版</strong></p> <ol><li>设置环境参数为开发版</li> <li>将开发完成的代码上传至微信小程序平台</li> <li>通过扫描预览版二维码进行试用</li></ol> <h2 id="项目环境要求"><a href="#项目环境要求" aria-hidden="true" class="header-anchor">#</a> 项目环境要求</h2> <p><strong>浏览器及版本要求</strong></p> <table><thead><tr><th><img src="/frontend/browser/edge.png" alt="IE / Edge" width="48" height="48"><br>IE / Edge</th> <th><img src="/frontend/browser/firefox.png" alt="Firefox" width="48" height="48"><br>Firefox</th> <th><img src="/frontend/browser/chrome.png" alt="Chrome" width="48" height="48"><br>Chrome</th> <th><img src="/frontend/browser/safari.png" alt="Safari" width="48" height="48"><br>Safari</th> <th><img src="/frontend/browser/opera.png" alt="Opera" width="48" height="48"><br>Opera</th></tr></thead> <tbody><tr><td>IE10, IE11, Edge</td> <td>Firefox 18+</td> <td>Chrome 49+</td> <td>Safari 10+</td> <td>Opera 36+</td></tr></tbody></table> <blockquote><p>后续的技术版本升级后,仅对 IE11 进行兼容性支持</p></blockquote> <p><strong>屏幕分辨率要求</strong></p> <p><code>1366 X 768</code> 及以上</p> <p><strong>项目部署需求</strong></p> <ul><li>nginx(gzip)</li></ul> <p><br><br></p> <h2 id="项目技术组成"><a href="#项目技术组成" aria-hidden="true" class="header-anchor">#</a> 项目技术组成</h2> <p>管理平台</p> <ul><li>vue2</li> <li>vue-router</li> <li>vuex</li> <li>axios</li> <li>element-ui</li></ul> <p>网页开放平台(专项提供移动端 WebView 嵌入、独立页提供)</p> <ul><li>vue2</li> <li>vue-router</li> <li>axios</li> <li>bootstrap 4(仅 CSS)</li></ul> <p>单元测试</p> <ul><li>vue-test-utils</li> <li>mocha</li> <li>cypress</li> <li>chai</li></ul> <p>小程序</p> <ul><li>微信小程序原生方式</li></ul> <p><br><br></p> <h2 id="代码版本控制位置"><a href="#代码版本控制位置" aria-hidden="true" class="header-anchor">#</a> 代码版本控制位置</h2> <p>前端团队代码使用位置:<a href="http://192.168.100.254:3000/frontend" target="_blank" rel="noopener noreferrer">frontend<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p> <p>以下为前端团队目前完成的项目</p> <h3 id="网站、管理平台"><a href="#网站、管理平台" aria-hidden="true" class="header-anchor">#</a> 网站、管理平台</h3> <ul><li><a href="http://192.168.100.254:3000/zenghaili/vegetarian-plus" target="_blank" rel="noopener noreferrer">素+管理平台<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="http://192.168.100.254:3000/zenghaili/admin-platform" target="_blank" rel="noopener noreferrer">系统管理后台<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <h3 id="小程序"><a href="#小程序" aria-hidden="true" class="header-anchor">#</a> 小程序</h3> <ul><li><a href="http://192.168.100.254:3000/zenghaili/exam" target="_blank" rel="noopener noreferrer">便捷答题<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li>票选小助手</li> <li>海鲜干货人家</li> <li>我的旺铺</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><!----> <span class="next"><a href="/team/frontend/showcase.html"> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="active sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="前端-frontend"><a href="#前端-frontend" class="header-anchor">#</a> 前端 Frontend</h1> <h2 id="能力输出"><a href="#能力输出" class="header-anchor">#</a> 能力输出</h2> <ul><li><p>支持全平台(<strong>Windows</strong><strong>Mac</strong><strong>Linux</strong>)的桌面客户端,以 <code>Windows</code> 环境为例,客户端程序以 <code>exe</code> 格式的可执行文件形式存在,不需要依赖浏览器运行,例如 QQ、Microsoft Office 等一系列可直接运行的桌面客户端</p></li> <li><p>微信小程序</p></li> <li><p>各类型网站,包含但不限于以下类型</p> <ul><li>管理平台</li> <li>CMS 站点</li> <li>企业门户综合网站</li> <li>服务类型网站</li> <li>设备嵌入网页</li></ul> <p>网站可根据需求针对 <code>desktop</code><code>tablet</code><code>mobile</code> 等不同尺寸设备进行适配</p></li></ul> <h2 id="项目构建说明"><a href="#项目构建说明" class="header-anchor">#</a> 项目构建说明</h2> <h3 id="构建网站"><a href="#构建网站" class="header-anchor">#</a> 构建网站</h3> <p>各类型网站、设备嵌入式网页等</p> <p><strong>生产环境</strong></p> <p>生产环境内容更新须严格按照计划安排执行</p> <p>执行构建流程</p> <ol><li>测试小组确认当前版本已通过测试</li> <li>项目负责人根据计划决定更新时间</li> <li>执行构建前自动化测试
  64 +<ul class="contains-task-list"><li class="task-list-item"><input checked="checked" disabled="disabled" type="checkbox" class="task-list-item-checkbox"> ESLint 语法检查扫描</li> <li class="task-list-item"><input disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 单元测试</li> <li class="task-list-item"><input disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 端对端测试</li></ul></li> <li>执行项目构建</li> <li>提交构建结果于运维人员并正式更新至生产环境</li></ol> <p><strong>测试环境</strong></p> <p>持续集成平台根据配置自动进行构建,用于测试小组测试功能完成情况</p> <div class="custom-block tip"><p class="custom-block-title">构建频率</p> <p>在所有使用自动持续集成的项目中,构建频率均为每天中午及凌晨两个时段</p> <ul><li>中午自动构建保证下午可以测试新的内容</li> <li>凌晨自动构建保证第二天早晨可以测试新的内容</li></ul></div> <h4 id="开发环境"><a href="#开发环境" class="header-anchor">#</a> 开发环境</h4> <p>开发环境使用本地环境进行构建及运行项目</p> <h3 id="构建微信小程序"><a href="#构建微信小程序" class="header-anchor">#</a> 构建微信小程序</h3> <p>微信小程序各版本发布流程说明</p> <p><strong>线上版</strong></p> <ol><li>测试小组确认当前版本已通过测试</li> <li>项目负责人根据计划决定更新时间</li> <li>设置环境参数为线上版</li> <li>上传代码至微信小程序平台</li> <li>进入微信公众平台,在版本管理中将当前 <strong>体验版</strong> 提交为 <strong>线上版</strong></li> <li>等待微信平台审核</li> <li>微信平台审核通过,并会在微信中通知相关人员</li> <li>进入微信公众平台,将审核通过的版本,发布为 <strong>线上版</strong></li></ol> <p><strong>预览版</strong></p> <ol><li>设置环境参数为开发版</li> <li>将开发完成的代码上传至微信小程序平台</li> <li>通过扫描预览版二维码进行试用</li></ol> <h2 id="项目环境要求"><a href="#项目环境要求" class="header-anchor">#</a> 项目环境要求</h2> <p><strong>浏览器及版本要求</strong></p> <table><thead><tr><th><img src="/frontend/browser/edge.png" alt="IE / Edge" width="48" height="48"><br>IE / Edge</th> <th><img src="/frontend/browser/firefox.png" alt="Firefox" width="48" height="48"><br>Firefox</th> <th><img src="/frontend/browser/chrome.png" alt="Chrome" width="48" height="48"><br>Chrome</th> <th><img src="/frontend/browser/safari.png" alt="Safari" width="48" height="48"><br>Safari</th> <th><img src="/frontend/browser/opera.png" alt="Opera" width="48" height="48"><br>Opera</th></tr></thead> <tbody><tr><td>IE10, IE11, Edge</td> <td>Firefox 18+</td> <td>Chrome 49+</td> <td>Safari 10+</td> <td>Opera 36+</td></tr></tbody></table> <blockquote><p>后续的技术版本升级后,仅对 IE11 进行兼容性支持</p></blockquote> <p><strong>屏幕分辨率要求</strong></p> <p><code>1366 X 768</code> 及以上</p> <p><strong>项目部署需求</strong></p> <ul><li>nginx(gzip)</li></ul> <p><br><br></p> <h2 id="项目技术组成"><a href="#项目技术组成" class="header-anchor">#</a> 项目技术组成</h2> <p>管理平台</p> <ul><li>vue2</li> <li>vue-router</li> <li>vuex</li> <li>axios</li> <li>element-ui</li></ul> <p>网页开放平台(专项提供移动端 WebView 嵌入、独立页提供)</p> <ul><li>vue2</li> <li>vue-router</li> <li>axios</li> <li>bootstrap 4(仅 CSS)</li></ul> <p>单元测试</p> <ul><li>vue-test-utils</li> <li>mocha</li> <li>cypress</li> <li>chai</li></ul> <p>小程序</p> <ul><li>微信小程序原生方式</li></ul> <p><br><br></p> <h2 id="代码版本控制位置"><a href="#代码版本控制位置" class="header-anchor">#</a> 代码版本控制位置</h2> <p>前端团队代码使用位置:<a href="http://192.168.100.254:3000/frontend" target="_blank" rel="noopener noreferrer">frontend<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p> <p>以下为前端团队目前完成的项目</p> <h3 id="网站、管理平台"><a href="#网站、管理平台" class="header-anchor">#</a> 网站、管理平台</h3> <ul><li><a href="http://192.168.100.254:3000/zenghaili/vegetarian-plus" target="_blank" rel="noopener noreferrer">素+管理平台<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li><a href="http://192.168.100.254:3000/zenghaili/admin-platform" target="_blank" rel="noopener noreferrer">系统管理后台<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <h3 id="小程序"><a href="#小程序" class="header-anchor">#</a> 小程序</h3> <ul><li><a href="http://192.168.100.254:3000/zenghaili/exam" target="_blank" rel="noopener noreferrer">便捷答题<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li> <li>票选小助手</li> <li>海鲜干货人家</li> <li>我的旺铺</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><!----> <span class="next"><a href="/team/frontend/showcase.html">
65 陈列柜 65 陈列柜
66 </a> 66 </a>
67 67
68 </span></p></div> </main></div><div class="global-ui"><!----></div></div> 68 </span></p></div> </main></div><div class="global-ui"><!----></div></div>
69 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/13.a4f2bd9c.js" defer></script> 69 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/13.e26beb91.js" defer></script>
70 </body> 70 </body>
71 </html> 71 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>功能插件 | 买买买文档平台</title> 6 <title>功能插件 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/17.501747e9.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/17.0a79f884.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="active sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="功能插件"><a href="#功能插件" aria-hidden="true" class="header-anchor">#</a> 功能插件</h1> <p>完全不与业务耦合的功能插件/组件,此类型的成果代表着不以项目类型或业务为限,可随意组合使用</p> <h2 id="拼图验证码插件"><a href="#拼图验证码插件" aria-hidden="true" class="header-anchor">#</a> 拼图验证码插件</h2> <p>用户操作行为验证,能有效区分人机,阻绝恶意程序带来的业务损失。</p> <p>可应用于系统登录、用户端留言或发贴等场景</p> <p><strong>拼图拖拽模式</strong></p> <p><img src="/frontend/plugins/captcha.png" alt="captcha"></p> <p><strong>随机文字点选模式</strong></p> <p><img src="/frontend/plugins/captcha1.png" alt="captcha1"></p> <p>图形验证码插件(极验),当前使用 <strong>免费</strong> 版本,限制为 200 次 / 小时的使用频率,且免费版仅能使用拼图拖拽或文字选择等形式的其中一种,收费版本可随出现验证类型或根据验证级别的提升智能选择不同验证方式和难度,且可定制背景图片</p> <p><strong>全部验证形式</strong></p> <p><img src="/frontend/plugins/captcha-all.png" alt="captcha-all"></p> <blockquote><p>该功能需要服务端配套相关功能</p></blockquote> <h2 id="短信验证"><a href="#短信验证" aria-hidden="true" class="header-anchor">#</a> 短信验证</h2> <p>使用手机及验证码进行身份验证</p> <img src="/frontend/plugins/sms.png" class="border-shadow"> <p>提供了默认形态界面的完整功能,也允许只引用底层实现 API 适配自定义短信验证界面场景</p> <h2 id="侧边栏抽屉"><a href="#侧边栏抽屉" aria-hidden="true" class="header-anchor">#</a> 侧边栏抽屉</h2> <p>一个可从屏幕边缘抽屉式滑出的内容展示层</p> <p><img src="/frontend/plugins/slide.png" alt="slide"></p> <h2 id="数据表格"><a href="#数据表格" aria-hidden="true" class="header-anchor">#</a> 数据表格</h2> <p>带有分页栏的数据表格,集成了单选、多选、跨页选择等功能</p> <p><img src="/frontend/plugins/grid.png" alt="grid"></p> <blockquote><p>该插件依赖于 element-ui,以及服务端数据接口</p></blockquote> <h2 id="数据下载-导出"><a href="#数据下载-导出" aria-hidden="true" class="header-anchor">#</a> 数据下载/导出</h2> <p>标准文件下载/导出功能,根据提供位置的内容构建文件流并自动开始下载,下载过程中默认开启全屏遮罩,并在下载完成后自动关闭</p> <p><img src="/frontend/plugins/download.png" alt="download"></p> <blockquote><p>该插件遮罩功能依赖于 element-ui</p></blockquote> <h2 id="选择器"><a href="#选择器" aria-hidden="true" class="header-anchor">#</a> 选择器</h2> <p>用于挑选数据的选择器</p> <p><strong>选择器基本规则说明</strong></p> <p>所有选择器应包含以下三个基本行为</p> <ul><li>右上角 <code>X</code> 关闭按钮,点击后仅关闭选择器,不触发事件响应</li> <li><code>清空</code> 按钮,清空选择器已选择项目,但不关闭窗口</li> <li><code>确定</code> 按钮,触发回调事件,响应数据变更并关闭选择器窗口</li></ul> <p><strong>选择器基本构成元素图例</strong></p> <img src="/frontend/plugins/selector-base.png" class="border-shadow"> <h3 id="单列数据穿梭框"><a href="#单列数据穿梭框" aria-hidden="true" class="header-anchor">#</a> 单列数据穿梭框</h3> <p>以数据列表形式展现,提供数据可以左右穿梭直观效果</p> <img src="/frontend/plugins/selector-transfer.png" class="border-shadow"> <h3 id="树形数据选择器"><a href="#树形数据选择器" aria-hidden="true" class="header-anchor">#</a> 树形数据选择器</h3> <p>以树形结构展示待选项目</p> <img src="/frontend/plugins/selector-tree.png" class="border-shadow"> <h3 id="分组树形数据选择器"><a href="#分组树形数据选择器" aria-hidden="true" class="header-anchor">#</a> 分组树形数据选择器</h3> <p>多分组且每个分组可使用树形结构展示的选择器</p> <img src="/frontend/plugins/selector-tree-group.png" class="border-shadow"></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="active sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="功能插件"><a href="#功能插件" class="header-anchor">#</a> 功能插件</h1> <p>完全不与业务耦合的功能插件/组件,此类型的成果代表着不以项目类型或业务为限,可随意组合使用</p> <h2 id="拼图验证码插件"><a href="#拼图验证码插件" class="header-anchor">#</a> 拼图验证码插件</h2> <p>用户操作行为验证,能有效区分人机,阻绝恶意程序带来的业务损失。</p> <p>可应用于系统登录、用户端留言或发贴等场景</p> <p><strong>拼图拖拽模式</strong></p> <p><img src="/frontend/plugins/captcha.png" alt="captcha"></p> <p><strong>随机文字点选模式</strong></p> <p><img src="/frontend/plugins/captcha1.png" alt="captcha1"></p> <p>图形验证码插件(极验),当前使用 <strong>免费</strong> 版本,限制为 200 次 / 小时的使用频率,且免费版仅能使用拼图拖拽或文字选择等形式的其中一种,收费版本可随出现验证类型或根据验证级别的提升智能选择不同验证方式和难度,且可定制背景图片</p> <p><strong>全部验证形式</strong></p> <p><img src="/frontend/plugins/captcha-all.png" alt="captcha-all"></p> <blockquote><p>该功能需要服务端配套相关功能</p></blockquote> <h2 id="短信验证"><a href="#短信验证" class="header-anchor">#</a> 短信验证</h2> <p>使用手机及验证码进行身份验证</p> <img src="/frontend/plugins/sms.png" class="border-shadow"> <p>提供了默认形态界面的完整功能,也允许只引用底层实现 API 适配自定义短信验证界面场景</p> <h2 id="侧边栏抽屉"><a href="#侧边栏抽屉" class="header-anchor">#</a> 侧边栏抽屉</h2> <p>一个可从屏幕边缘抽屉式滑出的内容展示层</p> <p><img src="/frontend/plugins/slide.png" alt="slide"></p> <h2 id="数据表格"><a href="#数据表格" class="header-anchor">#</a> 数据表格</h2> <p>带有分页栏的数据表格,集成了单选、多选、跨页选择等功能</p> <p><img src="/frontend/plugins/grid.png" alt="grid"></p> <blockquote><p>该插件依赖于 element-ui,以及服务端数据接口</p></blockquote> <h2 id="数据下载-导出"><a href="#数据下载-导出" class="header-anchor">#</a> 数据下载/导出</h2> <p>标准文件下载/导出功能,根据提供位置的内容构建文件流并自动开始下载,下载过程中默认开启全屏遮罩,并在下载完成后自动关闭</p> <p><img src="/frontend/plugins/download.png" alt="download"></p> <blockquote><p>该插件遮罩功能依赖于 element-ui</p></blockquote> <h2 id="选择器"><a href="#选择器" class="header-anchor">#</a> 选择器</h2> <p>用于挑选数据的选择器</p> <p><strong>选择器基本规则说明</strong></p> <p>所有选择器应包含以下三个基本行为</p> <ul><li>右上角 <code>X</code> 关闭按钮,点击后仅关闭选择器,不触发事件响应</li> <li><code>清空</code> 按钮,清空选择器已选择项目,但不关闭窗口</li> <li><code>确定</code> 按钮,触发回调事件,响应数据变更并关闭选择器窗口</li></ul> <p><strong>选择器基本构成元素图例</strong></p> <img src="/frontend/plugins/selector-base.png" class="border-shadow"> <h3 id="单列数据穿梭框"><a href="#单列数据穿梭框" class="header-anchor">#</a> 单列数据穿梭框</h3> <p>以数据列表形式展现,提供数据可以左右穿梭直观效果</p> <img src="/frontend/plugins/selector-transfer.png" class="border-shadow"> <h3 id="树形数据选择器"><a href="#树形数据选择器" class="header-anchor">#</a> 树形数据选择器</h3> <p>以树形结构展示待选项目</p> <img src="/frontend/plugins/selector-tree.png" class="border-shadow"> <h3 id="分组树形数据选择器"><a href="#分组树形数据选择器" class="header-anchor">#</a> 分组树形数据选择器</h3> <p>多分组且每个分组可使用树形结构展示的选择器</p> <img src="/frontend/plugins/selector-tree-group.png" class="border-shadow"></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
64 64
65 <a href="/team/frontend/system-model.html" class="prev"> 65 <a href="/team/frontend/system-model.html" class="prev">
66 系统交互模型 66 系统交互模型
@@ -69,6 +69,6 @@ @@ -69,6 +69,6 @@
69 </a> 69 </a>
70 70
71 </span></p></div> </main></div><div class="global-ui"><!----></div></div> 71 </span></p></div> </main></div><div class="global-ui"><!----></div></div>
72 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/17.501747e9.js" defer></script> 72 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/17.0a79f884.js" defer></script>
73 </body> 73 </body>
74 </html> 74 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>质量保证体系 | 买买买文档平台</title> 6 <title>质量保证体系 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/18.4e8bf841.js" as="script"><link rel="preload" href="/assets/js/3.5823559d.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/18.418c37b0.js" as="script"><link rel="preload" href="/assets/js/3.7f4a682c.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,15 +60,15 @@ @@ -60,15 +60,15 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="active sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="质量保证体系"><a href="#质量保证体系" aria-hidden="true" class="header-anchor">#</a> 质量保证体系</h1> <p>通过各类型自动化工具及测试用例对代码质量进行检测</p> <h2 id="团队应用现状"><a href="#团队应用现状" aria-hidden="true" class="header-anchor">#</a> 团队应用现状</h2> <ul class="contains-task-list"><li class="task-list-item"><input checked="checked" disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 语法检查工具</li> <li class="task-list-item"><input disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 单元测试</li> <li class="task-list-item"><input disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 端对端测试</li></ul> <p>目前所有自动化检查的方式仅为手动运行检测,后续将视情况切换为强制执行方式,检测不通过则不允许编译与发行</p> <h2 id="语法检查"><a href="#语法检查" aria-hidden="true" class="header-anchor">#</a> 语法检查</h2> <p>语法检查工具用于检查代码的语法是否正确、风格是否符合要求</p> <p>JavaScript 是一个动态的弱类型语言,在开发中比较容易出错。因为没有编译程序,为了寻找 JavaScript 代码错误通常需要在执行过程中不断调试。像 ESLint 这样的可以让程序员在编码的过程中发现问题而不是在执行的过程中。</p> <h3 id="使用工具"><a href="#使用工具" aria-hidden="true" class="header-anchor">#</a> 使用工具</h3> <ul><li><a href="https://eslint.org/" target="_blank" rel="noopener noreferrer">ESLint<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <p>目前使用规则为宽松模式,后续将逐步增加规则要求级别</p> <h3 id="运行方式"><a href="#运行方式" aria-hidden="true" class="header-anchor">#</a> 运行方式</h3> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">npm</span> run lint  
64 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="检查结果要求"><a href="#检查结果要求" aria-hidden="true" class="header-anchor">#</a> 检查结果要求</h3> <p>ESlint 命令行输出</p> <blockquote><span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>DONE</span> No lint errors found!  
65 -</blockquote> <p>代表了语法检查通过</p> <h2 id="单元测试"><a href="#单元测试" aria-hidden="true" class="header-anchor">#</a> 单元测试</h2> <p>单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作,可以理解为 <strong>白盒测试</strong> 的行为。</p> <h3 id="为什么要写单元测试?"><a href="#为什么要写单元测试?" aria-hidden="true" class="header-anchor">#</a> 为什么要写单元测试?</h3> <p>Web应用程序越来越复杂,这意味着有更多的可能出错。测试是帮助我们提高代码质量、降低错误的最好方法和工具之一</p> <ul><li>测试可以确保得到预期结果</li> <li>加快开发速度</li> <li>方便维护</li> <li>提供用法的文档</li></ul> <p>通过测试提供软件的质量,在开始的时候,可能会降低开发速度。但是从长期看,尤其是那种代码需要长期维护、不断开发的情况,测试会大大加快开发速度,减轻维护难度</p> <h3 id="使用功能库"><a href="#使用功能库" aria-hidden="true" class="header-anchor">#</a> 使用功能库</h3> <table><thead><tr><th>功能库</th> <th>作用</th></tr></thead> <tbody><tr><td><a href="https://mochajs.org/" target="_blank" rel="noopener noreferrer">Mocha<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td>单元测试引擎</td></tr> <tr><td><a href="https://www.chaijs.com/" target="_blank" rel="noopener noreferrer">Chai<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td>断言库</td></tr> <tr><td><a href="https://github.com/jsdom/jsdom" target="_blank" rel="noopener noreferrer">JsDom<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td>虚拟浏览器容器</td></tr> <tr><td><a href="https://vue-test-utils.vuejs.org/zh/" target="_blank" rel="noopener noreferrer">@vue/test-utils<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td>vue 官方提供单元测试工具集</td></tr></tbody></table> <h3 id="运行方式-2"><a href="#运行方式-2" aria-hidden="true" class="header-anchor">#</a> 运行方式</h3> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">npm</span> run test:unit  
66 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="适用范围"><a href="#适用范围" aria-hidden="true" class="header-anchor">#</a> 适用范围</h3> <p>很多时候,一些简单的功能场景,例如表单增、删、改、查等并没有编写单元测试的必要,况且编写单元测试需要不少时间成本,建议编写单元测试的场景如下</p> <ul><li>系统底层 API</li> <li>功能封装类</li> <li>功能组件</li> <li>关联计算</li> <li>业务集成联动</li></ul> <p>对于功能封装函数,更是应该增加多种测试用例进行功能覆盖,对于边界测试更是其中重中之重</p> <h2 id="端对端测试(end-to-end)"><a href="#端对端测试(end-to-end)" aria-hidden="true" class="header-anchor">#</a> 端对端测试(End-to-end)</h2> <p>端对端测试,简单地可以理解为站在用户角度的测试。站在用户的角度,他不需要知道软件的内部实现是怎么样的,只是使用即可;那么端对端测试模拟的就是用户的行为,只负责打开软件/浏览器,按序执行测试用例,并检查测试结果是否符合预期,它是 <strong>黑盒测试</strong> 的行为。</p> <h3 id="使用功能库-2"><a href="#使用功能库-2" aria-hidden="true" class="header-anchor">#</a> 使用功能库</h3> <ul><li><a href="https://www.cypress.io/" target="_blank" rel="noopener noreferrer">cypress<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <h3 id="运行方式-3"><a href="#运行方式-3" aria-hidden="true" class="header-anchor">#</a> 运行方式</h3> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">npm</span> run test:e2e 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="active sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="质量保证体系"><a href="#质量保证体系" class="header-anchor">#</a> 质量保证体系</h1> <p>通过各类型自动化工具及测试用例对代码质量进行检测</p> <h2 id="团队应用现状"><a href="#团队应用现状" class="header-anchor">#</a> 团队应用现状</h2> <ul class="contains-task-list"><li class="task-list-item"><input checked="checked" disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 语法检查工具</li> <li class="task-list-item"><input disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 单元测试</li> <li class="task-list-item"><input disabled="disabled" type="checkbox" class="task-list-item-checkbox"> 端对端测试</li></ul> <p>目前所有自动化检查的方式仅为手动运行检测,后续将视情况切换为强制执行方式,检测不通过则不允许编译与发行</p> <h2 id="语法检查"><a href="#语法检查" class="header-anchor">#</a> 语法检查</h2> <p>语法检查工具用于检查代码的语法是否正确、风格是否符合要求</p> <p>JavaScript 是一个动态的弱类型语言,在开发中比较容易出错。因为没有编译程序,为了寻找 JavaScript 代码错误通常需要在执行过程中不断调试。像 ESLint 这样的可以让程序员在编码的过程中发现问题而不是在执行的过程中。</p> <h3 id="使用工具"><a href="#使用工具" class="header-anchor">#</a> 使用工具</h3> <ul><li><a href="https://eslint.org/" target="_blank" rel="noopener noreferrer">ESLint<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <p>目前使用规则为宽松模式,后续将逐步增加规则要求级别</p> <h3 id="运行方式"><a href="#运行方式" class="header-anchor">#</a> 运行方式</h3> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">npm</span> run lint
  64 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="检查结果要求"><a href="#检查结果要求" class="header-anchor">#</a> 检查结果要求</h3> <p>ESlint 命令行输出</p> <blockquote><span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>DONE</span> No lint errors found!
  65 +</blockquote> <p>代表了语法检查通过</p> <h2 id="单元测试"><a href="#单元测试" class="header-anchor">#</a> 单元测试</h2> <p>单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作,可以理解为 <strong>白盒测试</strong> 的行为。</p> <h3 id="为什么要写单元测试?"><a href="#为什么要写单元测试?" class="header-anchor">#</a> 为什么要写单元测试?</h3> <p>Web应用程序越来越复杂,这意味着有更多的可能出错。测试是帮助我们提高代码质量、降低错误的最好方法和工具之一</p> <ul><li>测试可以确保得到预期结果</li> <li>加快开发速度</li> <li>方便维护</li> <li>提供用法的文档</li></ul> <p>通过测试提供软件的质量,在开始的时候,可能会降低开发速度。但是从长期看,尤其是那种代码需要长期维护、不断开发的情况,测试会大大加快开发速度,减轻维护难度</p> <h3 id="使用功能库"><a href="#使用功能库" class="header-anchor">#</a> 使用功能库</h3> <table><thead><tr><th>功能库</th> <th>作用</th></tr></thead> <tbody><tr><td><a href="https://mochajs.org/" target="_blank" rel="noopener noreferrer">Mocha<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td>单元测试引擎</td></tr> <tr><td><a href="https://www.chaijs.com/" target="_blank" rel="noopener noreferrer">Chai<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td>断言库</td></tr> <tr><td><a href="https://github.com/jsdom/jsdom" target="_blank" rel="noopener noreferrer">JsDom<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td>虚拟浏览器容器</td></tr> <tr><td><a href="https://vue-test-utils.vuejs.org/zh/" target="_blank" rel="noopener noreferrer">@vue/test-utils<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td>vue 官方提供单元测试工具集</td></tr></tbody></table> <h3 id="运行方式-2"><a href="#运行方式-2" class="header-anchor">#</a> 运行方式</h3> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">npm</span> run test:unit
  66 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="适用范围"><a href="#适用范围" class="header-anchor">#</a> 适用范围</h3> <p>很多时候,一些简单的功能场景,例如表单增、删、改、查等并没有编写单元测试的必要,况且编写单元测试需要不少时间成本,建议编写单元测试的场景如下</p> <ul><li>系统底层 API</li> <li>功能封装类</li> <li>功能组件</li> <li>关联计算</li> <li>业务集成联动</li></ul> <p>对于功能封装函数,更是应该增加多种测试用例进行功能覆盖,对于边界测试更是其中重中之重</p> <h2 id="端对端测试(end-to-end)"><a href="#端对端测试(end-to-end)" class="header-anchor">#</a> 端对端测试(End-to-end)</h2> <p>端对端测试,简单地可以理解为站在用户角度的测试。站在用户的角度,他不需要知道软件的内部实现是怎么样的,只是使用即可;那么端对端测试模拟的就是用户的行为,只负责打开软件/浏览器,按序执行测试用例,并检查测试结果是否符合预期,它是 <strong>黑盒测试</strong> 的行为。</p> <h3 id="使用功能库-2"><a href="#使用功能库-2" class="header-anchor">#</a> 使用功能库</h3> <ul><li><a href="https://www.cypress.io/" target="_blank" rel="noopener noreferrer">cypress<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <h3 id="运行方式-3"><a href="#运行方式-3" class="header-anchor">#</a> 运行方式</h3> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code><span class="token function">npm</span> run test:e2e
67 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"> 67 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
68 68
69 <a href="/team/frontend/web-open-platform.html" class="prev"> 69 <a href="/team/frontend/web-open-platform.html" class="prev">
70 网页能力开放平台 70 网页能力开放平台
71 </a></span> <!----></p></div> </main></div><div class="global-ui"><!----></div></div> 71 </a></span> <!----></p></div> </main></div><div class="global-ui"><!----></div></div>
72 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/18.4e8bf841.js" defer></script><script src="/assets/js/3.5823559d.js" defer></script> 72 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/18.418c37b0.js" defer></script><script src="/assets/js/3.7f4a682c.js" defer></script>
73 </body> 73 </body>
74 </html> 74 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>陈列柜 | 买买买文档平台</title> 6 <title>陈列柜 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/19.d818c655.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/19.96959446.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="active sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="陈列柜"><a href="#陈列柜" aria-hidden="true" class="header-anchor">#</a> 陈列柜</h1> <p>展示出团队完成的相关产品</p> <h2 id="网站"><a href="#网站" aria-hidden="true" class="header-anchor">#</a> 网站</h2> <table><thead><tr><th>名称</th> <th>生产环境</th> <th>测试环境</th></tr></thead> <tbody><tr><td>买买买公司门户网站</td> <td><a href="http://www.fjmaimaimai.com/" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="http://wwwtest.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr> <tr><td>素+管理平台</td> <td><a href="http://suplus-front-prd.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="http://suplus-front-dev.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr> <tr><td>管理中心(原素+管理后台)</td> <td><a href="http://suplus-app-mg-prd.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="http://suplus-app-mg-dev.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr> <tr><td>便捷答题小程序管理平台</td> <td><a href="https://dati.fjmaimaimai.com/dati_manage/#/login" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="https://csdati.fjmaimaimai.com/dati_manage/#/login" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr> <tr><td>机会导向管理平台</td> <td><a href="https://opportunity.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="http://mmm-opportunity-dev.fjmaimaimai.com/" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr></tbody></table> <h2 id="微信小程序"><a href="#微信小程序" aria-hidden="true" class="header-anchor">#</a> 微信小程序</h2> <table><thead><tr><th>名称</th> <th>体验版</th> <th>线上版</th></tr></thead> <tbody><tr><td rowspan="2" class="nowrap">票选小助手</td> <td class="text-center"><img src="/frontend/mini-program/vote/experience.jpg" class="img"></td> <td class="text-center"><img src="/frontend/mini-program/vote/production.jpg" class="img"></td></tr> <tr><td colspan="2">快速简单创建投票,支持图文选项。可支持群投票或指定用户进行投票</td></tr> <tr><td rowspan="2" class="nowrap">便捷答题</td> <td class="text-center"><img src="/frontend/mini-program/exam/experience.jpg" class="img"></td> <td class="text-center"><img src="/frontend/mini-program/exam/production.jpg" class="img"></td></tr> <tr><td colspan="2">让公司可以便捷地给员工培训考试</td></tr> <tr><td rowspan="2" class="nowrap">海鲜干货人家</td> <td class="text-center"><img src="/frontend/mini-program/seafood/experience.jpg" class="img"></td> <td class="text-center"><img src="/frontend/mini-program/seafood/production.jpg" class="img"></td></tr> <tr><td colspan="2">专业包点、小食订购平台;自提需标提货时间(至少次日),配送为当天下单,次日配送;周末节假日暂不支持发货</td></tr> <tr><td rowspan="2" class="nowrap">我的旺铺</td> <td class="text-center"><img src="/frontend/mini-program/hot-shop/experience.jpg" class="img"></td> <td class="text-center"><img src="/frontend/mini-program/hot-shop/production.jpg" class="img"></td></tr> <tr><td colspan="2">店铺管理工具,能快速的管理店铺的分类、商品和海报图册。</td></tr></tbody></table> <h2 id="桌面客户端"><a href="#桌面客户端" aria-hidden="true" class="header-anchor">#</a> 桌面客户端</h2> <p>未上线</p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="active sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="陈列柜"><a href="#陈列柜" class="header-anchor">#</a> 陈列柜</h1> <p>展示出团队完成的相关产品</p> <h2 id="网站"><a href="#网站" class="header-anchor">#</a> 网站</h2> <table><thead><tr><th>名称</th> <th>生产环境</th> <th>测试环境</th></tr></thead> <tbody><tr><td>买买买公司门户网站</td> <td><a href="http://www.fjmaimaimai.com/" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="http://wwwtest.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr> <tr><td>素+管理平台</td> <td><a href="http://suplus-front-prd.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="http://suplus-front-dev.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr> <tr><td>管理中心(原素+管理后台)</td> <td><a href="http://suplus-app-mg-prd.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="http://suplus-app-mg-dev.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr> <tr><td>便捷答题小程序管理平台</td> <td><a href="https://dati.fjmaimaimai.com/dati_manage/#/login" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="https://csdati.fjmaimaimai.com/dati_manage/#/login" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr> <tr><td>机会导向管理平台</td> <td><a href="https://opportunity.fjmaimaimai.com" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td> <td><a href="http://mmm-opportunity-dev.fjmaimaimai.com/" target="_blank" rel="noopener noreferrer">点击访问<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></td></tr></tbody></table> <h2 id="微信小程序"><a href="#微信小程序" class="header-anchor">#</a> 微信小程序</h2> <table><thead><tr><th>名称</th> <th>体验版</th> <th>线上版</th></tr></thead> <tbody><tr><td rowspan="2" class="nowrap">票选小助手</td> <td class="text-center"><img src="/frontend/mini-program/vote/experience.jpg" class="img"></td> <td class="text-center"><img src="/frontend/mini-program/vote/production.jpg" class="img"></td></tr> <tr><td colspan="2">快速简单创建投票,支持图文选项。可支持群投票或指定用户进行投票</td></tr> <tr><td rowspan="2" class="nowrap">便捷答题</td> <td class="text-center"><img src="/frontend/mini-program/exam/experience.jpg" class="img"></td> <td class="text-center"><img src="/frontend/mini-program/exam/production.jpg" class="img"></td></tr> <tr><td colspan="2">让公司可以便捷地给员工培训考试</td></tr> <tr><td rowspan="2" class="nowrap">海鲜干货人家</td> <td class="text-center"><img src="/frontend/mini-program/seafood/experience.jpg" class="img"></td> <td class="text-center"><img src="/frontend/mini-program/seafood/production.jpg" class="img"></td></tr> <tr><td colspan="2">专业包点、小食订购平台;自提需标提货时间(至少次日),配送为当天下单,次日配送;周末节假日暂不支持发货</td></tr> <tr><td rowspan="2" class="nowrap">我的旺铺</td> <td class="text-center"><img src="/frontend/mini-program/hot-shop/experience.jpg" class="img"></td> <td class="text-center"><img src="/frontend/mini-program/hot-shop/production.jpg" class="img"></td></tr> <tr><td colspan="2">店铺管理工具,能快速的管理店铺的分类、商品和海报图册。</td></tr></tbody></table> <h2 id="桌面客户端"><a href="#桌面客户端" class="header-anchor">#</a> 桌面客户端</h2> <p>未上线</p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
64 64
65 <a href="/team/frontend/" class="prev router-link-active"> 65 <a href="/team/frontend/" class="prev router-link-active">
66 前端 Frontend 66 前端 Frontend
@@ -69,6 +69,6 @@ @@ -69,6 +69,6 @@
69 </a> 69 </a>
70 70
71 </span></p></div> </main></div><div class="global-ui"><!----></div></div> 71 </span></p></div> </main></div><div class="global-ui"><!----></div></div>
72 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/19.d818c655.js" defer></script> 72 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/19.96959446.js" defer></script>
73 </body> 73 </body>
74 </html> 74 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>开发规范 | 买买买文档平台</title> 6 <title>开发规范 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/20.7e351963.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/20.1c54f52e.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓端 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓端 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="active sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="开发规范"><a href="#开发规范" aria-hidden="true" class="header-anchor">#</a> 开发规范</h1> <p>编码规范好比协议,有了 <code>Http</code><code>TCP</code> 等各种协议,计算机之间才能有效地通信,同样的,有了一致的编码规范,开发人员之间才能有效地合作</p> <p>为提高软件开发质量,降低开发周期,增强代码的可重用性和易读性,使软件便于维护及移交,开发人员间便于交流和协作,本规范适用于前端团队,以作参考。</p> <div class="custom-block danger"><p class="custom-block-title">注意</p> <p>开发规范执行情况将会不定期进行 <strong>Code Review</strong>,不符合规范的内容必须进行整改。</p></div> <h2 id="vscode-插件"><a href="#vscode-插件" aria-hidden="true" class="header-anchor">#</a> VSCode 插件</h2> <p>为了使开发过程控制,错误提醒以及语法规范在代码编写过程中得到有效提醒及控制,要求使用 <strong>VSCode</strong> 必须安装以下插件</p> <ul><li>ESLint</li> <li>HTML Snippets</li> <li>IntelliSense for CSS class names in HTML</li> <li>JavaScript (ES6) code snippets</li> <li>JavaScript standardjs styled snippets</li> <li>language-stylus</li> <li>npm</li> <li>npm Intellisense</li> <li>Prettier - Code formatter</li> <li>Sass</li> <li>StandardJS - JavaScript Standard Style</li> <li>Todo Tree</li> <li>Vetur</li> <li>Vue 2 Snippets</li></ul> <h2 id="文件与目录命名规范"><a href="#文件与目录命名规范" aria-hidden="true" class="header-anchor">#</a> 文件与目录命名规范</h2> <p>前端开发规范应用于 Web 网站、管理平台、移动端内嵌、微信小程序等范围,即使是本文档项目(<code>doc-press</code>)中的文件命名,依然建议应用本规范</p> <p>命名规范优秀的行业范例可参考 <a href="https://github.com/vuejs/vue" target="_blank" rel="noopener noreferrer">Vuejs<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a><a href="https://github.com/facebook/react" target="_blank" rel="noopener noreferrer">Reactjs<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 的源码</p> <h3 id="目录命名"><a href="#目录命名" aria-hidden="true" class="header-anchor">#</a> 目录命名</h3> <p>业务功能结构示例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code>├─用户管理 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="active sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="开发规范"><a href="#开发规范" class="header-anchor">#</a> 开发规范</h1> <p>编码规范好比协议,有了 <code>Http</code><code>TCP</code> 等各种协议,计算机之间才能有效地通信,同样的,有了一致的编码规范,开发人员之间才能有效地合作</p> <p>为提高软件开发质量,降低开发周期,增强代码的可重用性和易读性,使软件便于维护及移交,开发人员间便于交流和协作,本规范适用于前端团队,以作参考。</p> <div class="custom-block danger"><p class="custom-block-title">注意</p> <p>开发规范执行情况将会不定期进行 <strong>Code Review</strong>,不符合规范的内容必须进行整改。</p></div> <h2 id="vscode-插件"><a href="#vscode-插件" class="header-anchor">#</a> VSCode 插件</h2> <p>为了使开发过程控制,错误提醒以及语法规范在代码编写过程中得到有效提醒及控制,要求使用 <strong>VSCode</strong> 必须安装以下插件</p> <ul><li>ESLint</li> <li>HTML Snippets</li> <li>IntelliSense for CSS class names in HTML</li> <li>JavaScript (ES6) code snippets</li> <li>JavaScript standardjs styled snippets</li> <li>language-stylus</li> <li>npm</li> <li>npm Intellisense</li> <li>Prettier - Code formatter</li> <li>Sass</li> <li>StandardJS - JavaScript Standard Style</li> <li>Todo Tree</li> <li>Vetur</li> <li>Vue 2 Snippets</li></ul> <h2 id="文件与目录命名规范"><a href="#文件与目录命名规范" class="header-anchor">#</a> 文件与目录命名规范</h2> <p>前端开发规范应用于 Web 网站、管理平台、移动端内嵌、微信小程序等范围,即使是本文档项目(<code>doc-press</code>)中的文件命名,依然建议应用本规范</p> <p>命名规范优秀的行业范例可参考 <a href="https://github.com/vuejs/vue" target="_blank" rel="noopener noreferrer">Vuejs<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a><a href="https://github.com/facebook/react" target="_blank" rel="noopener noreferrer">Reactjs<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 的源码</p> <h3 id="目录命名"><a href="#目录命名" class="header-anchor">#</a> 目录命名</h3> <p>业务功能结构示例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code>├─用户管理
64 └─授权管理 64 └─授权管理
65 ├─角色管理 65 ├─角色管理
66 └─用户角色绑定 66 └─用户角色绑定
@@ -75,10 +75,10 @@ @@ -75,10 +75,10 @@
75 └─auth 75 └─auth
76 ├─role 76 ├─role
77 └─user<span class="token operator">-</span>role 77 └─user<span class="token operator">-</span>role
78 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><p>目录的命名,应尽可能结合上下、父子结构进行上下文信息描述,目录名自身应尽可能简洁直观。文本上使用全小写字母,有词组的情况使用 “-” 符号隔开</p> <h4 id="为什么要使用小写?"><a href="#为什么要使用小写?" aria-hidden="true" class="header-anchor">#</a> 为什么要使用小写?</h4> <ul><li><p>易用性/可读性<br> 78 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br></div></div><p>目录的命名,应尽可能结合上下、父子结构进行上下文信息描述,目录名自身应尽可能简洁直观。文本上使用全小写字母,有词组的情况使用 “-” 符号隔开</p> <h4 id="为什么要使用小写?"><a href="#为什么要使用小写?" class="header-anchor">#</a> 为什么要使用小写?</h4> <ul><li><p>易用性/可读性<br>
79 小写文件名通常比大写文件名更易读,比如 <code>accessibility.txt</code> 就比 <code>ACCESSIBILITY.TXT</code> 易读。即使使用驼峰命名法,如 <code>UserRoleBind</code><code>userRoleBind</code> 不如 <code>user-role-bind</code> 的可读性高</p></li> <li><p>兼容性<br> 79 小写文件名通常比大写文件名更易读,比如 <code>accessibility.txt</code> 就比 <code>ACCESSIBILITY.TXT</code> 易读。即使使用驼峰命名法,如 <code>UserRoleBind</code><code>userRoleBind</code> 不如 <code>user-role-bind</code> 的可读性高</p></li> <li><p>兼容性<br>
80 不同操作系统对于大小兼容程度不一样,为了保证编译、部署后的内容在所有平台上顺利部署,目录名也应当使用小写</p></li> <li><p>行业惯例<br> 80 不同操作系统对于大小兼容程度不一样,为了保证编译、部署后的内容在所有平台上顺利部署,目录名也应当使用小写</p></li> <li><p>行业惯例<br>
81 -诸如 <code>Java</code><code>.net</code><code>C</code> 等著名语言的包路径均为小写,行业巨头的良好规范也逐渐成为行业里约定俗成的规范</p></li></ul> <h3 id="文件命名"><a href="#文件命名" aria-hidden="true" class="header-anchor">#</a> 文件命名</h3> <p>文件名的规则在遵循目录命名的规则作为基础规则,但文件名的命名规则相比目录,略有不同</p> <h4 id="插件-组件-页面"><a href="#插件-组件-页面" aria-hidden="true" class="header-anchor">#</a> 插件/组件/页面</h4> <p>单文件组件、插件/组件主体、页面的文件名应该始终是单词大写开头 (PascalCase)</p> <p>单词大写开头对于代码编辑器的自动补全最为友好,因为这使得我们在 JS(X) 和模板中引用组件的方式尽可能的一致。然而,混用文件命名方式有的时候会导致大小写不敏感的文件系统的问题。</p> <p><strong>Vuejs</strong> 官方文档中,对于文件命名也有相应的 <a href="https://cn.vuejs.org/v2/style-guide/#%E5%8D%95%E6%96%87%E4%BB%B6%E7%BB%84%E4%BB%B6%E6%96%87%E4%BB%B6%E7%9A%84%E5%A4%A7%E5%B0%8F%E5%86%99-%E5%BC%BA%E7%83%88%E6%8E%A8%E8%8D%90" target="_blank" rel="noopener noreferrer">指导规范<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p> <p>文件命名示例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code> 81 +诸如 <code>Java</code><code>.net</code><code>C</code> 等著名语言的包路径均为小写,行业巨头的良好规范也逐渐成为行业里约定俗成的规范</p></li></ul> <h3 id="文件命名"><a href="#文件命名" class="header-anchor">#</a> 文件命名</h3> <p>文件名的规则在遵循目录命名的规则作为基础规则,但文件名的命名规则相比目录,略有不同</p> <h4 id="插件-组件-页面"><a href="#插件-组件-页面" class="header-anchor">#</a> 插件/组件/页面</h4> <p>单文件组件、插件/组件主体、页面的文件名应该始终是单词大写开头 (PascalCase)</p> <p>单词大写开头对于代码编辑器的自动补全最为友好,因为这使得我们在 JS(X) 和模板中引用组件的方式尽可能的一致。然而,混用文件命名方式有的时候会导致大小写不敏感的文件系统的问题。</p> <p><strong>Vuejs</strong> 官方文档中,对于文件命名也有相应的 <a href="https://cn.vuejs.org/v2/style-guide/#%E5%8D%95%E6%96%87%E4%BB%B6%E7%BB%84%E4%BB%B6%E6%96%87%E4%BB%B6%E7%9A%84%E5%A4%A7%E5%B0%8F%E5%86%99-%E5%BC%BA%E7%83%88%E6%8E%A8%E8%8D%90" target="_blank" rel="noopener noreferrer">指导规范<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></p> <p>文件命名示例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code>
82 components 82 components
83 └─grid 83 └─grid
84 ├─grid<span class="token punctuation">.</span>sass 84 ├─grid<span class="token punctuation">.</span>sass
@@ -95,45 +95,45 @@ components @@ -95,45 +95,45 @@ components
95 ├─BodyRow<span class="token punctuation">.</span>vue 95 ├─BodyRow<span class="token punctuation">.</span>vue
96 ├─Grid<span class="token punctuation">.</span>vue 96 ├─Grid<span class="token punctuation">.</span>vue
97 └─index<span class="token punctuation">.</span>js 97 └─index<span class="token punctuation">.</span>js
98 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div><h2 id="css-样式预处理"><a href="#css-样式预处理" aria-hidden="true" class="header-anchor">#</a> CSS 样式预处理</h2> <p>对于 CSS 样式预处理方案,比较流行的有 <code>SASS/SCSS</code><code>LESS</code><code>Stylus</code>,大体上的使用方式类似,区别在于功能的多少与扩展的能力。</p> <p>综合各方面考虑,开发规范如下(微信小程序不在讨论范围)</p> <ul><li>前端项目统一使用 <code>SASS/SCSS</code> 开发样式预处理内容</li> <li><code>web-open-platform</code> 项目使用 <code>Stylus</code></li></ul> <p>关于文件及目录的命名遵循 <a href="#%E6%96%87%E4%BB%B6%E4%B8%8E%E7%9B%AE%E5%BD%95%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83">文件与目录命名</a> 规则</p> <h3 id="class-命名"><a href="#class-命名" aria-hidden="true" class="header-anchor">#</a> class 命名</h3> <p>对于 class name 的命名同样遵循全小写与单词间使用 &quot;-&quot; 隔开原则</p> <p>命名示例</p> <div class="language-scss line-numbers-mode"><pre class="language-scss"><code><span class="token selector">.user-container </span><span class="token punctuation">{</span> 98 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br></div></div><h2 id="css-样式预处理"><a href="#css-样式预处理" class="header-anchor">#</a> CSS 样式预处理</h2> <p>对于 CSS 样式预处理方案,比较流行的有 <code>SASS/SCSS</code><code>LESS</code><code>Stylus</code>,大体上的使用方式类似,区别在于功能的多少与扩展的能力。</p> <p>综合各方面考虑,开发规范如下(微信小程序不在讨论范围)</p> <ul><li>前端项目统一使用 <code>SASS/SCSS</code> 开发样式预处理内容</li> <li><code>web-open-platform</code> 项目使用 <code>Stylus</code></li></ul> <p>关于文件及目录的命名遵循 <a href="#%E6%96%87%E4%BB%B6%E4%B8%8E%E7%9B%AE%E5%BD%95%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83">文件与目录命名</a> 规则</p> <h3 id="class-命名"><a href="#class-命名" class="header-anchor">#</a> class 命名</h3> <p>对于 class name 的命名同样遵循全小写与单词间使用 &quot;-&quot; 隔开原则</p> <p>命名示例</p> <div class="language-scss line-numbers-mode"><pre class="language-scss"><code><span class="token selector">.user-container </span><span class="token punctuation">{</span>
99 <span class="token selector">width: 100vw 99 <span class="token selector">width: 100vw
100 .user-header </span><span class="token punctuation">{</span> 100 .user-header </span><span class="token punctuation">{</span>
101 <span class="token property">background-color</span><span class="token punctuation">:</span> #eee 101 <span class="token property">background-color</span><span class="token punctuation">:</span> #eee
102 <span class="token punctuation">}</span> 102 <span class="token punctuation">}</span>
103 <span class="token punctuation">}</span> 103 <span class="token punctuation">}</span>
104 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><h3 id="样式抽象"><a href="#样式抽象" aria-hidden="true" class="header-anchor">#</a> 样式抽象</h3> <p>一个工程通常会有大量的页面、组件和插件,功能虽不同,但风格必须统一。对于主题风格部分的内容,必须提取到专用样式文件中进行维护。类似的功能或结构的样式内容在多处独立维护,是冗余且低效的,多人协同开发时须杜绝该现象发生,在进行样式定义之前应互相询问是否存在重复定义的情况。</p> <p><strong>BTW</strong><br>  
105 -CSS 样式预处理,只使用最基本的结构嵌套功能是不够的,了解和使用高级特性才是提高效率和效果的最佳实践</p> <h2 id="路由命名规则"><a href="#路由命名规则" aria-hidden="true" class="header-anchor">#</a> 路由命名规则</h2> <p>在路由(Vue Router)的命名中,依然遵循 <a href="#%E6%96%87%E4%BB%B6%E4%B8%8E%E7%9B%AE%E5%BD%95%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83">文件与目录命名</a> 规则;因为路由命名的结果最终会体现在浏览器的地址栏中,所以在路由的命名过程中依然是推荐结合业务结构的上下文级进行组合命名,内容必须做到精简、简洁,不要让最终呈现出来的地址链接过于冗长。</p> <p>一个网站的路由结构通常两层就可以完全满足需求,所以除去页面布局结构外,大量的业务页面的路由均为同级,既然是同级,就需要通过路由的路径(path)来声明功能的业务结构</p> <p>业务功能结构示例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code>├─系统管理 104 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><h3 id="样式抽象"><a href="#样式抽象" class="header-anchor">#</a> 样式抽象</h3> <p>一个工程通常会有大量的页面、组件和插件,功能虽不同,但风格必须统一。对于主题风格部分的内容,必须提取到专用样式文件中进行维护。类似的功能或结构的样式内容在多处独立维护,是冗余且低效的,多人协同开发时须杜绝该现象发生,在进行样式定义之前应互相询问是否存在重复定义的情况。</p> <p><strong>BTW</strong><br>
  105 +CSS 样式预处理,只使用最基本的结构嵌套功能是不够的,了解和使用高级特性才是提高效率和效果的最佳实践</p> <h2 id="路由命名规则"><a href="#路由命名规则" class="header-anchor">#</a> 路由命名规则</h2> <p>在路由(Vue Router)的命名中,依然遵循 <a href="#%E6%96%87%E4%BB%B6%E4%B8%8E%E7%9B%AE%E5%BD%95%E5%91%BD%E5%90%8D%E8%A7%84%E8%8C%83">文件与目录命名</a> 规则;因为路由命名的结果最终会体现在浏览器的地址栏中,所以在路由的命名过程中依然是推荐结合业务结构的上下文级进行组合命名,内容必须做到精简、简洁,不要让最终呈现出来的地址链接过于冗长。</p> <p>一个网站的路由结构通常两层就可以完全满足需求,所以除去页面布局结构外,大量的业务页面的路由均为同级,既然是同级,就需要通过路由的路径(path)来声明功能的业务结构</p> <p>业务功能结构示例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code>├─系统管理
106 └─用户管理 106 └─用户管理
107 └─角色授权管理 107 └─角色授权管理
108 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>路由命名示例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code> 108 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>路由命名示例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code>
109 -<span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/systemManage/userManage/roleAuth'</span> <span class="token punctuation">}</span> 109 +<span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/systemManage/userManage/roleAuth'</span> <span class="token punctuation">}</span>
110 110
111 111
112 -<span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/system/user/role-auth'</span> <span class="token punctuation">}</span> 112 +<span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/system/user/role-auth'</span> <span class="token punctuation">}</span>
113 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p><strong>现有项目命名情况改造实例</strong></p> <p>以现有素+管理平台的路由设置情况进行举例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code>✖ 不推荐 113 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p><strong>现有项目命名情况改造实例</strong></p> <p>以现有素+管理平台的路由设置情况进行举例</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code>✖ 不推荐
114 <span class="token punctuation">[</span> 114 <span class="token punctuation">[</span>
115 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stockManager/stockType'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货类别</span>  
116 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stockManager/goodsClassify'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货分类</span>  
117 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stockManager/goodsSeries'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货系列</span>  
118 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stockManager/goodsUnit'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 计量组单位</span>  
119 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stockManager/stockBrands'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货品牌</span>  
120 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stockManager/stockForm'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货形态</span>  
121 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stockManager/stockArchives'</span> <span class="token punctuation">}</span> <span class="token comment">// 存货档案</span> 115 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stockManager/stockType'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货类别</span>
  116 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stockManager/goodsClassify'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货分类</span>
  117 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stockManager/goodsSeries'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货系列</span>
  118 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stockManager/goodsUnit'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 计量组单位</span>
  119 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stockManager/stockBrands'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货品牌</span>
  120 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stockManager/stockForm'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货形态</span>
  121 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stockManager/stockArchives'</span> <span class="token punctuation">}</span> <span class="token comment">// 存货档案</span>
122 <span class="token punctuation">]</span> 122 <span class="token punctuation">]</span>
123 123
124 ✔ 推荐设置 124 ✔ 推荐设置
125 <span class="token punctuation">[</span> 125 <span class="token punctuation">[</span>
126 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stock/type'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货类别</span>  
127 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stock/category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货分类</span>  
128 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stock/series'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货系列</span>  
129 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stock/goods-unit'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 计量组单位</span>  
130 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stock/brand'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货品牌</span>  
131 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stock/form'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货形态</span>  
132 - <span class="token punctuation">{</span> path<span class="token punctuation">:</span> <span class="token string">'/workbench/stock/file'</span> <span class="token punctuation">}</span> <span class="token comment">// 存货档案</span> 126 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stock/type'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货类别</span>
  127 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stock/category'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货分类</span>
  128 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stock/series'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货系列</span>
  129 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stock/goods-unit'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 计量组单位</span>
  130 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stock/brand'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货品牌</span>
  131 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stock/form'</span> <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token comment">// 存货形态</span>
  132 + <span class="token punctuation">{</span> path<span class="token operator">:</span> <span class="token string">'/workbench/stock/file'</span> <span class="token punctuation">}</span> <span class="token comment">// 存货档案</span>
133 <span class="token punctuation">]</span> 133 <span class="token punctuation">]</span>
134 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br></div></div><p>通常情况下,对于路由的定义,不设置 <code>name</code> 属性,推荐仅对于使用频率较高的功能模块设置,例如登录、首页等最经常被使用的模块,另外就是业务中也经常会被多个场景中使用的情况</p> <h3 id="异步加载页面-组件"><a href="#异步加载页面-组件" aria-hidden="true" class="header-anchor">#</a> 异步加载页面/组件</h3> <p>对于路由的定义推荐使用以下模式</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token punctuation">[</span><span class="token punctuation">{</span>  
135 - path<span class="token punctuation">:</span> <span class="token string">'/aaa/bbb'</span><span class="token punctuation">,</span>  
136 - <span class="token function-variable function">component</span><span class="token punctuation">:</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token keyword">import</span><span class="token punctuation">(</span><span class="token string">'@/views/abc'</span><span class="token punctuation">)</span> 134 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br></div></div><p>通常情况下,对于路由的定义,不设置 <code>name</code> 属性,推荐仅对于使用频率较高的功能模块设置,例如登录、首页等最经常被使用的模块,另外就是业务中也经常会被多个场景中使用的情况</p> <h3 id="异步加载页面-组件"><a href="#异步加载页面-组件" class="header-anchor">#</a> 异步加载页面/组件</h3> <p>对于路由的定义推荐使用以下模式</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token punctuation">[</span><span class="token punctuation">{</span>
  135 + path<span class="token operator">:</span> <span class="token string">'/aaa/bbb'</span><span class="token punctuation">,</span>
  136 + <span class="token function-variable function">component</span><span class="token operator">:</span> <span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token operator">=&gt;</span> <span class="token keyword">import</span><span class="token punctuation">(</span><span class="token string">'@/views/abc'</span><span class="token punctuation">)</span>
137 <span class="token punctuation">}</span><span class="token punctuation">]</span> 137 <span class="token punctuation">}</span><span class="token punctuation">]</span>
138 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"> 138 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
139 139
@@ -144,6 +144,6 @@ CSS 鏍峰紡棰勫鐞嗭紝鍙娇鐢ㄦ渶鍩烘湰鐨勭粨鏋勫祵濂楀姛鑳芥槸涓嶅鐨勶紝浜嗚 @@ -144,6 +144,6 @@ CSS 鏍峰紡棰勫鐞嗭紝鍙娇鐢ㄦ渶鍩烘湰鐨勭粨鏋勫祵濂楀姛鑳芥槸涓嶅鐨勶紝浜嗚
144 </a> 144 </a>
145 145
146 </span></p></div> </main></div><div class="global-ui"><!----></div></div> 146 </span></p></div> </main></div><div class="global-ui"><!----></div></div>
147 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/20.7e351963.js" defer></script> 147 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/20.1c54f52e.js" defer></script>
148 </body> 148 </body>
149 </html> 149 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>系统交互模型 | 买买买文档平台</title> 6 <title>系统交互模型 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/21.63585e89.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/21.3f6ff79f.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,23 +60,23 @@ @@ -60,23 +60,23 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="active sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="系统交互模型"><a href="#系统交互模型" aria-hidden="true" class="header-anchor">#</a> 系统交互模型</h1> <p><strong>系统交互模型</strong>,描述了软件产品的网站类型项目中系统基础功能模块的流程、数据模型以及相应 API 输入输出标准格式,包含以下内容:</p> <ul><li>用户登录,包含登录形式及流程</li> <li>认证授权方式</li> <li>数据模型输出</li></ul> <p>目标在于各端作为 <strong>数据服务供应商</strong><strong>数据应用消费者</strong> 在交互上统一行为,面向标准接口开发,使得项目新建之初可依照 <strong>系统交互模型</strong> 快速完成系统基础功能建设,从而更从容而有序应对企业后续不断增加的项目和业务</p> <h2 id="基础原则"><a href="#基础原则" aria-hidden="true" class="header-anchor">#</a> 基础原则</h2> <h3 id="api-路径命名规则"><a href="#api-路径命名规则" aria-hidden="true" class="header-anchor">#</a> API 路径命名规则</h3> <p>基于 <a href="/team/frontend/http.html#api-交互规则">数据交互格式标准 - API 交互规则</a> 规则, 在路径命名中应用 <a href="/team/frontend/standard.html#路由命名规则">开发规范 - 路由命名规则</a> 规则,简言之特性如下</p> <ul><li>功能/业务描述性路径,例:<code>/user/profile/del/{id}</code></li> <li>单词均使用小写方式书写</li> <li>词组使用 <code>-</code> 符号分隔,例:<code>/config/user-role/list</code></li></ul> <h3 id="对象、属性命名规则"><a href="#对象、属性命名规则" aria-hidden="true" class="header-anchor">#</a> 对象、属性命名规则</h3> <p>对于数据接口中输出的对象名,以及对象中的属性等内容,应使用驼峰命名法(Camel Case)</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="active sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="系统交互模型"><a href="#系统交互模型" class="header-anchor">#</a> 系统交互模型</h1> <p><strong>系统交互模型</strong>,描述了软件产品的网站类型项目中系统基础功能模块的流程、数据模型以及相应 API 输入输出标准格式,包含以下内容:</p> <ul><li>用户登录,包含登录形式及流程</li> <li>认证授权方式</li> <li>数据模型输出</li></ul> <p>目标在于各端作为 <strong>数据服务供应商</strong><strong>数据应用消费者</strong> 在交互上统一行为,面向标准接口开发,使得项目新建之初可依照 <strong>系统交互模型</strong> 快速完成系统基础功能建设,从而更从容而有序应对企业后续不断增加的项目和业务</p> <h2 id="基础原则"><a href="#基础原则" class="header-anchor">#</a> 基础原则</h2> <h3 id="api-路径命名规则"><a href="#api-路径命名规则" class="header-anchor">#</a> API 路径命名规则</h3> <p>基于 <a href="/team/frontend/http.html#api-交互规则">数据交互格式标准 - API 交互规则</a> 规则, 在路径命名中应用 <a href="/team/frontend/standard.html#路由命名规则">开发规范 - 路由命名规则</a> 规则,简言之特性如下</p> <ul><li>路径使用功能/业务描述性命名,例:<code>/user/profile/del/{id}</code></li> <li>单词均使用小写方式书写</li> <li>词组使用 <code>-</code> 符号分隔,例:<code>/config/user-role/list</code></li></ul> <h3 id="对象、属性命名规则"><a href="#对象、属性命名规则" class="header-anchor">#</a> 对象、属性命名规则</h3> <p>对于数据接口中输出的对象名,以及对象中的属性等内容,应使用驼峰命名法(Camel Case)</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code>
64 <span class="token punctuation">{</span> 64 <span class="token punctuation">{</span>
65 - <span class="token string">&quot;user_info&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
66 - <span class="token string">&quot;Name&quot;</span><span class="token punctuation">:</span> <span class="token string">&quot;zhangsan&quot;</span><span class="token punctuation">,</span>  
67 - <span class="token string">&quot;age&quot;</span><span class="token punctuation">:</span> <span class="token number">18</span><span class="token punctuation">,</span>  
68 - <span class="token string">&quot;phone_number&quot;</span><span class="token punctuation">:</span> <span class="token string">&quot;13655555555&quot;</span><span class="token punctuation">,</span>  
69 - <span class="token string">&quot;admin_type&quot;</span><span class="token punctuation">:</span> <span class="token number">1</span> 65 + <span class="token string">&quot;user_info&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  66 + <span class="token string">&quot;Name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;zhangsan&quot;</span><span class="token punctuation">,</span>
  67 + <span class="token string">&quot;age&quot;</span><span class="token operator">:</span> <span class="token number">18</span><span class="token punctuation">,</span>
  68 + <span class="token string">&quot;phone_number&quot;</span><span class="token operator">:</span> <span class="token string">&quot;13655555555&quot;</span><span class="token punctuation">,</span>
  69 + <span class="token string">&quot;admin_type&quot;</span><span class="token operator">:</span> <span class="token number">1</span>
70 <span class="token punctuation">}</span> 70 <span class="token punctuation">}</span>
71 <span class="token punctuation">}</span> 71 <span class="token punctuation">}</span>
72 72
73 73
74 <span class="token punctuation">{</span> 74 <span class="token punctuation">{</span>
75 - <span class="token string">&quot;userInfo&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
76 - <span class="token string">&quot;name&quot;</span><span class="token punctuation">:</span> <span class="token string">&quot;zhangsan&quot;</span><span class="token punctuation">,</span>  
77 - <span class="token string">&quot;age&quot;</span><span class="token punctuation">:</span> <span class="token number">18</span><span class="token punctuation">,</span>  
78 - <span class="token string">&quot;phoneNumber&quot;</span><span class="token punctuation">:</span> <span class="token string">&quot;13655555555&quot;</span><span class="token punctuation">,</span>  
79 - <span class="token string">&quot;adminType&quot;</span><span class="token punctuation">:</span> <span class="token number">1</span> 75 + <span class="token string">&quot;userInfo&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  76 + <span class="token string">&quot;name&quot;</span><span class="token operator">:</span> <span class="token string">&quot;zhangsan&quot;</span><span class="token punctuation">,</span>
  77 + <span class="token string">&quot;age&quot;</span><span class="token operator">:</span> <span class="token number">18</span><span class="token punctuation">,</span>
  78 + <span class="token string">&quot;phoneNumber&quot;</span><span class="token operator">:</span> <span class="token string">&quot;13655555555&quot;</span><span class="token punctuation">,</span>
  79 + <span class="token string">&quot;adminType&quot;</span><span class="token operator">:</span> <span class="token number">1</span>
80 <span class="token punctuation">}</span> 80 <span class="token punctuation">}</span>
81 <span class="token punctuation">}</span> 81 <span class="token punctuation">}</span>
82 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br></div></div><p><code>xxx_yyy_zzz</code> 命名格式仅推荐应用于数据库(表名及表字段名)环境</p> <p>在编程环境中,即使是变量的声明都应尽可能不使用该格式,在自动化语法检查工具中,也有相应的检查/推荐规则:<a href="https://cn.eslint.org/docs/rules/camelcase" target="_blank" rel="noopener noreferrer">ESLint - &quot;camelcase&quot; 规则<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>,但常量的命名是个例外</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// javascript</span> 82 </code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br></div></div><p><code>xxx_yyy_zzz</code> 命名格式仅推荐应用于数据库(表名及表字段名)环境</p> <p>在编程环境中,即使是变量的声明都应尽可能不使用该格式,在自动化语法检查工具中,也有相应的检查/推荐规则:<a href="https://cn.eslint.org/docs/rules/camelcase" target="_blank" rel="noopener noreferrer">ESLint - &quot;camelcase&quot; 规则<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a>,但常量的命名是个例外</p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// javascript</span>
@@ -87,134 +87,134 @@ @@ -87,134 +87,134 @@
87 <span class="token comment">// java</span> 87 <span class="token comment">// java</span>
88 <span class="token keyword">public</span> <span class="token keyword">static</span> final String <span class="token constant">STATUS_ENABLED</span> <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span> 88 <span class="token keyword">public</span> <span class="token keyword">static</span> final String <span class="token constant">STATUS_ENABLED</span> <span class="token operator">=</span> <span class="token number">1</span><span class="token punctuation">;</span>
89 <span class="token keyword">public</span> <span class="token keyword">static</span> final String <span class="token constant">STATUS_DISABLED</span> <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span> 89 <span class="token keyword">public</span> <span class="token keyword">static</span> final String <span class="token constant">STATUS_DISABLED</span> <span class="token operator">=</span> <span class="token number">2</span><span class="token punctuation">;</span>
90 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h2 id="流程示意"><a href="#流程示意" aria-hidden="true" class="header-anchor">#</a> 流程示意</h2> <p><img src="/frontend/login-process.png" alt="login-process"></p> <h2 id="数据模型"><a href="#数据模型" aria-hidden="true" class="header-anchor">#</a> 数据模型</h2> <p>罗列了系统功能相关的基础数据模型,此处仅列举满足系统功能的模型及元素,后续可根据实际情况进行增补修订</p> <h3 id="用户"><a href="#用户" aria-hidden="true" class="header-anchor">#</a> 用户</h3> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token punctuation">{</span>  
91 - <span class="token string">&quot;id&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 用户 id</span>  
92 - <span class="token string">&quot;name&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户名称</span>  
93 - <span class="token string">&quot;avatar&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户头像</span>  
94 - <span class="token string">&quot;companyId&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户当前所属公司 id</span>  
95 - <span class="token string">&quot;companyName&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 公司名称</span>  
96 - <span class="token string">&quot;adminType&quot;</span><span class="token punctuation">:</span> number <span class="token comment">// 管理员类型(0:普通用户 1:主管理员 2:子管理员)</span> 90 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h2 id="流程示意"><a href="#流程示意" class="header-anchor">#</a> 流程示意</h2> <p><img src="/frontend/login-process.png" alt="login-process"></p> <h2 id="数据模型"><a href="#数据模型" class="header-anchor">#</a> 数据模型</h2> <p>罗列了系统功能相关的基础数据模型,此处仅列举满足系统功能的模型及元素,后续可根据实际情况进行增补修订</p> <h3 id="用户"><a href="#用户" class="header-anchor">#</a> 用户</h3> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token punctuation">{</span>
  91 + <span class="token string">&quot;id&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 用户 id</span>
  92 + <span class="token string">&quot;name&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户名称</span>
  93 + <span class="token string">&quot;avatar&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户头像</span>
  94 + <span class="token string">&quot;companyId&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户当前所属公司 id</span>
  95 + <span class="token string">&quot;companyName&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 公司名称</span>
  96 + <span class="token string">&quot;adminType&quot;</span><span class="token operator">:</span> number <span class="token comment">// 管理员类型(0:普通用户 1:主管理员 2:子管理员)</span>
97 <span class="token punctuation">}</span> 97 <span class="token punctuation">}</span>
98 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h3 id="公司"><a href="#公司" aria-hidden="true" class="header-anchor">#</a> 公司</h3> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token punctuation">{</span>  
99 - <span class="token string">&quot;id&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 用户 id</span>  
100 - <span class="token string">&quot;name&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户名称</span>  
101 - <span class="token string">&quot;logo&quot;</span><span class="token punctuation">:</span> string <span class="token comment">// 用户头像</span> 98 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h3 id="公司"><a href="#公司" class="header-anchor">#</a> 公司</h3> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token punctuation">{</span>
  99 + <span class="token string">&quot;id&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 用户 id</span>
  100 + <span class="token string">&quot;name&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户名称</span>
  101 + <span class="token string">&quot;logo&quot;</span><span class="token operator">:</span> string <span class="token comment">// 用户头像</span>
102 <span class="token punctuation">}</span> 102 <span class="token punctuation">}</span>
103 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><h3 id="菜单"><a href="#菜单" aria-hidden="true" class="header-anchor">#</a> 菜单</h3> <div class="language-js line-numbers-mode"><div class="highlight-lines"><br><br><br><br><br><br><div class="highlighted"> </div><br><br></div><pre class="language-js"><code><span class="token punctuation">{</span>  
104 - <span class="token string">&quot;id&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 菜单 id</span>  
105 - <span class="token string">&quot;name&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 菜单名称</span>  
106 - <span class="token string">&quot;icon&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 菜单图标</span>  
107 - <span class="token string">&quot;parentId&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 菜单父节点 id</span>  
108 - <span class="token string">&quot;sort&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 排列顺序</span>  
109 - <span class="token string">&quot;code&quot;</span><span class="token punctuation">:</span> string <span class="token comment">// 菜单编码</span> 103 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><h3 id="菜单"><a href="#菜单" class="header-anchor">#</a> 菜单</h3> <div class="language-js line-numbers-mode"><div class="highlight-lines"><br><br><br><br><br><br><div class="highlighted"> </div><br><br></div><pre class="language-js"><code><span class="token punctuation">{</span>
  104 + <span class="token string">&quot;id&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 菜单 id</span>
  105 + <span class="token string">&quot;name&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 菜单名称</span>
  106 + <span class="token string">&quot;icon&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 菜单图标</span>
  107 + <span class="token string">&quot;parentId&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 菜单父节点 id</span>
  108 + <span class="token string">&quot;sort&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span> <span class="token comment">// 排列顺序</span>
  109 + <span class="token string">&quot;code&quot;</span><span class="token operator">:</span> string <span class="token comment">// 菜单编码</span>
110 <span class="token punctuation">}</span> 110 <span class="token punctuation">}</span>
111 -</code></pre><div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><div class="custom-block danger"><p class="custom-block-title">注意</p> <p><code>code</code> 字段为菜单项目的编码,是前端系统中作为功能模块的唯一标识编码而定义,该编码由前端统一进行定义</p></div> <h3 id="权限"><a href="#权限" aria-hidden="true" class="header-anchor">#</a> 权限</h3> <div class="language-js line-numbers-mode"><div class="highlight-lines"><br><div class="highlighted"> </div><br><br><br><br><br></div><pre class="language-js"><code><span class="token punctuation">{</span>  
112 - <span class="token punctuation">[</span>code<span class="token punctuation">]</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> 111 +</code></pre><div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><div class="custom-block danger"><p class="custom-block-title">注意</p> <p><code>code</code> 字段为菜单项目的编码,是前端系统中作为功能模块的唯一标识编码而定义,该编码由前端统一进行定义</p></div> <h3 id="权限"><a href="#权限" class="header-anchor">#</a> 权限</h3> <div class="language-js line-numbers-mode"><div class="highlight-lines"><br><div class="highlighted"> </div><br><br><br><br><br></div><pre class="language-js"><code><span class="token punctuation">{</span>
  112 + <span class="token punctuation">[</span>code<span class="token punctuation">]</span><span class="token operator">:</span> <span class="token punctuation">{</span>
113 <span class="token comment">// 权限数据节点输出,内容根据具体系统情况而定</span> 113 <span class="token comment">// 权限数据节点输出,内容根据具体系统情况而定</span>
114 <span class="token punctuation">}</span><span class="token punctuation">,</span> 114 <span class="token punctuation">}</span><span class="token punctuation">,</span>
115 <span class="token operator">...</span> 115 <span class="token operator">...</span>
116 <span class="token punctuation">}</span> 116 <span class="token punctuation">}</span>
117 -</code></pre><div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><p>此处的 <code>code</code> 与上述 <a href="/team/frontend/system-model.html#菜单">菜单模型</a> 中的 <code>code</code> 属性对应,代表了某个功能模块</p> <h2 id="api-接口"><a href="#api-接口" aria-hidden="true" class="header-anchor">#</a> API 接口</h2> <p>系统功能模块 API 接口,内容仅为请求成功后返回的数据格式,完整数据交换格式请参考:<a href="/team/frontend/http.html">数据交互格式标准</a></p> <h3 id="图形验证码初始化"><a href="#图形验证码初始化" aria-hidden="true" class="header-anchor">#</a> 图形验证码初始化</h3> <p>图形验证码使用的是极验图形验证码,根据返回的数据初始化图形验证码插件</p> <p>接口路径: <code>/auth/init-captcha</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span> 117 +</code></pre><div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br></div></div><p>此处的 <code>code</code> 与上述 <a href="/team/frontend/system-model.html#菜单">菜单模型</a> 中的 <code>code</code> 属性对应,代表了某个功能模块</p> <h2 id="api-接口"><a href="#api-接口" class="header-anchor">#</a> API 接口</h2> <p>系统功能模块 API 接口,内容仅为请求成功后返回的数据格式,完整数据交换格式请参考:<a href="/team/frontend/http.html">数据交互格式标准</a></p> <h3 id="图形验证码初始化"><a href="#图形验证码初始化" class="header-anchor">#</a> 图形验证码初始化</h3> <p>图形验证码使用的是极验图形验证码,根据返回的数据初始化图形验证码插件</p> <p>接口路径: <code>/auth/init-captcha</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span>
118 118
119 119
120 <span class="token comment">// 返回数据</span> 120 <span class="token comment">// 返回数据</span>
121 <span class="token comment">// 该格式为极验插件的标准数据格式</span> 121 <span class="token comment">// 该格式为极验插件的标准数据格式</span>
122 <span class="token punctuation">{</span> 122 <span class="token punctuation">{</span>
123 - <span class="token string">&quot;code&quot;</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>  
124 - <span class="token string">&quot;data&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
125 - <span class="token string">&quot;success&quot;</span><span class="token punctuation">:</span> number<span class="token punctuation">,</span>  
126 - <span class="token string">&quot;gt&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span>  
127 - <span class="token string">&quot;challenge&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span>  
128 - <span class="token string">&quot;newCaptcha&quot;</span><span class="token punctuation">:</span> number 123 + <span class="token string">&quot;code&quot;</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
  124 + <span class="token string">&quot;data&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  125 + <span class="token string">&quot;success&quot;</span><span class="token operator">:</span> number<span class="token punctuation">,</span>
  126 + <span class="token string">&quot;gt&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
  127 + <span class="token string">&quot;challenge&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
  128 + <span class="token string">&quot;newCaptcha&quot;</span><span class="token operator">:</span> number
129 <span class="token punctuation">}</span> 129 <span class="token punctuation">}</span>
130 <span class="token punctuation">}</span> 130 <span class="token punctuation">}</span>
131 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br></div></div><h3 id="密码登录"><a href="#密码登录" aria-hidden="true" class="header-anchor">#</a> 密码登录</h3> <p>使用 <strong>用户名</strong><strong>密码</strong> 进行登录</p> <p>接口路径:<code>/auth/pwd-login</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span> 131 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br></div></div><h3 id="密码登录"><a href="#密码登录" class="header-anchor">#</a> 密码登录</h3> <p>使用 <strong>用户名</strong><strong>密码</strong> 进行登录</p> <p>接口路径:<code>/auth/pwd-login</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span>
132 <span class="token punctuation">{</span> 132 <span class="token punctuation">{</span>
133 - <span class="token string">&quot;username&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户名</span>  
134 - <span class="token string">&quot;password&quot;</span><span class="token punctuation">:</span> string <span class="token comment">// 密码</span> 133 + <span class="token string">&quot;username&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 用户名</span>
  134 + <span class="token string">&quot;password&quot;</span><span class="token operator">:</span> string <span class="token comment">// 密码</span>
135 <span class="token punctuation">}</span> 135 <span class="token punctuation">}</span>
136 136
137 <span class="token comment">// 返回数据</span> 137 <span class="token comment">// 返回数据</span>
138 <span class="token punctuation">{</span> 138 <span class="token punctuation">{</span>
139 - <span class="token string">&quot;code&quot;</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>  
140 - <span class="token string">&quot;data&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
141 - <span class="token string">&quot;access&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
142 - <span class="token string">&quot;accessToken&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span>  
143 - <span class="token string">&quot;expiresIn&quot;</span><span class="token punctuation">:</span> number 139 + <span class="token string">&quot;code&quot;</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
  140 + <span class="token string">&quot;data&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  141 + <span class="token string">&quot;access&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  142 + <span class="token string">&quot;accessToken&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
  143 + <span class="token string">&quot;expiresIn&quot;</span><span class="token operator">:</span> number
144 <span class="token punctuation">}</span> 144 <span class="token punctuation">}</span>
145 <span class="token punctuation">}</span> 145 <span class="token punctuation">}</span>
146 <span class="token punctuation">}</span> 146 <span class="token punctuation">}</span>
147 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br></div></div><h3 id="获取手机短信验证码"><a href="#获取手机短信验证码" aria-hidden="true" class="header-anchor">#</a> 获取手机短信验证码</h3> <p>使用 <strong>手机号</strong> 获得验证码用于系统登录,成功访问接口后,相应手机号的手机将收到包含验证码的短信</p> <p>接口路径:<code>/auth/sms-code</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span> 147 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br></div></div><h3 id="获取手机短信验证码"><a href="#获取手机短信验证码" class="header-anchor">#</a> 获取手机短信验证码</h3> <p>使用 <strong>手机号</strong> 获得验证码用于系统登录,成功访问接口后,相应手机号的手机将收到包含验证码的短信</p> <p>接口路径:<code>/auth/sms-code</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span>
148 <span class="token punctuation">{</span> 148 <span class="token punctuation">{</span>
149 - <span class="token string">&quot;phone&quot;</span><span class="token punctuation">:</span> string <span class="token comment">// 手机号</span> 149 + <span class="token string">&quot;phone&quot;</span><span class="token operator">:</span> string <span class="token comment">// 手机号</span>
150 <span class="token punctuation">}</span> 150 <span class="token punctuation">}</span>
151 151
152 <span class="token comment">// 返回数据</span> 152 <span class="token comment">// 返回数据</span>
153 153
154 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h3 id="手机短信验证码登录"><a href="#手机短信验证码登录" aria-hidden="true" class="header-anchor">#</a> 手机短信验证码登录</h3> <p>使用 <strong>手机号</strong><strong>验证码</strong> 进行登录</p> <p>接口路径:<code>/auth/sms-login</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span> 154 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h3 id="手机短信验证码登录"><a href="#手机短信验证码登录" class="header-anchor">#</a> 手机短信验证码登录</h3> <p>使用 <strong>手机号</strong><strong>验证码</strong> 进行登录</p> <p>接口路径:<code>/auth/sms-login</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span>
155 <span class="token punctuation">{</span> 155 <span class="token punctuation">{</span>
156 - <span class="token string">&quot;phone&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 手机号</span>  
157 - <span class="token string">&quot;code&quot;</span><span class="token punctuation">:</span> string <span class="token comment">// 短信验证码</span> 156 + <span class="token string">&quot;phone&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span> <span class="token comment">// 手机号</span>
  157 + <span class="token string">&quot;code&quot;</span><span class="token operator">:</span> string <span class="token comment">// 短信验证码</span>
158 <span class="token punctuation">}</span> 158 <span class="token punctuation">}</span>
159 159
160 <span class="token comment">// 返回数据</span> 160 <span class="token comment">// 返回数据</span>
161 <span class="token punctuation">{</span> 161 <span class="token punctuation">{</span>
162 - <span class="token string">&quot;code&quot;</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>  
163 - <span class="token string">&quot;data&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
164 - <span class="token string">&quot;access&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
165 - <span class="token string">&quot;accessToken&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span>  
166 - <span class="token string">&quot;expiresIn&quot;</span><span class="token punctuation">:</span> number 162 + <span class="token string">&quot;code&quot;</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
  163 + <span class="token string">&quot;data&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  164 + <span class="token string">&quot;access&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  165 + <span class="token string">&quot;accessToken&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
  166 + <span class="token string">&quot;expiresIn&quot;</span><span class="token operator">:</span> number
167 <span class="token punctuation">}</span> 167 <span class="token punctuation">}</span>
168 <span class="token punctuation">}</span> 168 <span class="token punctuation">}</span>
169 <span class="token punctuation">}</span> 169 <span class="token punctuation">}</span>
170 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br></div></div><h3 id="获取当前用户数据"><a href="#获取当前用户数据" aria-hidden="true" class="header-anchor">#</a> 获取当前用户数据</h3> <p>在使用 <a href="/team/frontend/system-model.html#密码登录">密码登录</a><a href="/team/frontend/system-model.html#手机短信验证码登录">手机短信验证码登录</a> 登录成功后,获取当前用户的系统功能模型集合,系统根据该模型集合自行进行数据转换、过滤以及缓存,完成网站基础框架功能初始化</p> <p>接口路径:<code>/auth/profile</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span> 170 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br></div></div><h3 id="获取当前用户数据"><a href="#获取当前用户数据" class="header-anchor">#</a> 获取当前用户数据</h3> <p>在使用 <a href="/team/frontend/system-model.html#密码登录">密码登录</a><a href="/team/frontend/system-model.html#手机短信验证码登录">手机短信验证码登录</a> 登录成功后,获取当前用户的系统功能模型集合,系统根据该模型集合自行进行数据转换、过滤以及缓存,完成网站基础框架功能初始化</p> <p>接口路径:<code>/auth/profile</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span>
171 171
172 172
173 <span class="token comment">// 返回数据</span> 173 <span class="token comment">// 返回数据</span>
174 <span class="token punctuation">{</span> 174 <span class="token punctuation">{</span>
175 - <span class="token string">&quot;code&quot;</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>  
176 - <span class="token string">&quot;data&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
177 - <span class="token string">&quot;user&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> 175 + <span class="token string">&quot;code&quot;</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
  176 + <span class="token string">&quot;data&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  177 + <span class="token string">&quot;user&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
178 <span class="token comment">// 用户模型</span> 178 <span class="token comment">// 用户模型</span>
179 <span class="token punctuation">}</span><span class="token punctuation">,</span> 179 <span class="token punctuation">}</span><span class="token punctuation">,</span>
180 - <span class="token string">&quot;companys&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">[</span> 180 + <span class="token string">&quot;companys&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
181 <span class="token punctuation">{</span> 181 <span class="token punctuation">{</span>
182 <span class="token comment">// 公司模型</span> 182 <span class="token comment">// 公司模型</span>
183 <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> 183 <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
184 <span class="token operator">...</span> 184 <span class="token operator">...</span>
185 <span class="token punctuation">}</span> 185 <span class="token punctuation">}</span>
186 <span class="token punctuation">]</span><span class="token punctuation">,</span> 186 <span class="token punctuation">]</span><span class="token punctuation">,</span>
187 - <span class="token string">&quot;menus&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">[</span> 187 + <span class="token string">&quot;menus&quot;</span><span class="token operator">:</span> <span class="token punctuation">[</span>
188 <span class="token punctuation">{</span> 188 <span class="token punctuation">{</span>
189 <span class="token comment">// 菜单模型</span> 189 <span class="token comment">// 菜单模型</span>
190 <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span> 190 <span class="token punctuation">}</span><span class="token punctuation">,</span> <span class="token punctuation">{</span>
191 <span class="token operator">...</span> 191 <span class="token operator">...</span>
192 <span class="token punctuation">}</span> 192 <span class="token punctuation">}</span>
193 <span class="token punctuation">]</span><span class="token punctuation">,</span> 193 <span class="token punctuation">]</span><span class="token punctuation">,</span>
194 - <span class="token string">&quot;permission&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
195 - <span class="token punctuation">[</span>菜单节点编码<span class="token punctuation">]</span><span class="token punctuation">:</span> <span class="token punctuation">{</span> 194 + <span class="token string">&quot;permission&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  195 + <span class="token punctuation">[</span>菜单节点编码<span class="token punctuation">]</span><span class="token operator">:</span> <span class="token punctuation">{</span>
196 <span class="token comment">// 权限数据节点</span> 196 <span class="token comment">// 权限数据节点</span>
197 <span class="token punctuation">}</span><span class="token punctuation">,</span> 197 <span class="token punctuation">}</span><span class="token punctuation">,</span>
198 <span class="token operator">...</span> 198 <span class="token operator">...</span>
199 <span class="token punctuation">}</span> 199 <span class="token punctuation">}</span>
200 <span class="token punctuation">}</span> 200 <span class="token punctuation">}</span>
201 <span class="token punctuation">}</span> 201 <span class="token punctuation">}</span>
202 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br></div></div><p>数据节点与数据模型的对应关系</p> <table><thead><tr><th>数据节点</th> <th>数据模型</th></tr></thead> <tbody><tr><td>user</td> <td><a href="/team/frontend/system-model.html#用户">用户模型</a></td></tr> <tr><td>companys</td> <td><a href="/team/frontend/system-model.html#公司">公司模型</a></td></tr> <tr><td>menus</td> <td><a href="/team/frontend/system-model.html#菜单">菜单模型</a></td></tr> <tr><td>permission</td> <td><a href="/team/frontend/system-model.html#权限">权限模型</a></td></tr></tbody></table> <h3 id="切换公司"><a href="#切换公司" aria-hidden="true" class="header-anchor">#</a> 切换公司</h3> <p>切换用户当前所属公司,该操作相当于用户重新登录,所以需要重新分发用户的访问令牌。在完成公司切换的操作后,前端系统会自行再次访问 <a href="/team/frontend/system-model.html#获取当前用户数据">获取当前用户数据</a> 接口,更新用户信息中当前所属公司等相关信息</p> <p>接口路径:<code>/auth/switch-company</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span> 202 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br></div></div><p>数据节点与数据模型的对应关系</p> <table><thead><tr><th>数据节点</th> <th>数据模型</th></tr></thead> <tbody><tr><td>user</td> <td><a href="/team/frontend/system-model.html#用户">用户模型</a></td></tr> <tr><td>companys</td> <td><a href="/team/frontend/system-model.html#公司">公司模型</a></td></tr> <tr><td>menus</td> <td><a href="/team/frontend/system-model.html#菜单">菜单模型</a></td></tr> <tr><td>permission</td> <td><a href="/team/frontend/system-model.html#权限">权限模型</a></td></tr></tbody></table> <h3 id="切换公司"><a href="#切换公司" class="header-anchor">#</a> 切换公司</h3> <p>切换用户当前所属公司,该操作相当于用户重新登录,所以需要重新分发用户的访问令牌。在完成公司切换的操作后,前端系统会自行再次访问 <a href="/team/frontend/system-model.html#获取当前用户数据">获取当前用户数据</a> 接口,更新用户信息中当前所属公司等相关信息</p> <p>接口路径:<code>/auth/switch-company</code></p> <div class="language-js line-numbers-mode"><pre class="language-js"><code><span class="token comment">// 入参</span>
203 <span class="token punctuation">{</span> 203 <span class="token punctuation">{</span>
204 - <span class="token string">&quot;companyId&quot;</span><span class="token punctuation">:</span> number <span class="token comment">// 待切换的公司 id</span> 204 + <span class="token string">&quot;companyId&quot;</span><span class="token operator">:</span> number <span class="token comment">// 待切换的公司 id</span>
205 <span class="token punctuation">}</span> 205 <span class="token punctuation">}</span>
206 206
207 <span class="token comment">// 返回数据</span> 207 <span class="token comment">// 返回数据</span>
208 <span class="token punctuation">{</span> 208 <span class="token punctuation">{</span>
209 - <span class="token string">&quot;code&quot;</span><span class="token punctuation">:</span> <span class="token number">0</span><span class="token punctuation">,</span>  
210 - <span class="token string">&quot;data&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
211 - <span class="token string">&quot;access&quot;</span><span class="token punctuation">:</span> <span class="token punctuation">{</span>  
212 - <span class="token string">&quot;accessToken&quot;</span><span class="token punctuation">:</span> string<span class="token punctuation">,</span>  
213 - <span class="token string">&quot;expiresIn&quot;</span><span class="token punctuation">:</span> number 209 + <span class="token string">&quot;code&quot;</span><span class="token operator">:</span> <span class="token number">0</span><span class="token punctuation">,</span>
  210 + <span class="token string">&quot;data&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  211 + <span class="token string">&quot;access&quot;</span><span class="token operator">:</span> <span class="token punctuation">{</span>
  212 + <span class="token string">&quot;accessToken&quot;</span><span class="token operator">:</span> string<span class="token punctuation">,</span>
  213 + <span class="token string">&quot;expiresIn&quot;</span><span class="token operator">:</span> number
214 <span class="token punctuation">}</span> 214 <span class="token punctuation">}</span>
215 <span class="token punctuation">}</span> 215 <span class="token punctuation">}</span>
216 <span class="token punctuation">}</span> 216 <span class="token punctuation">}</span>
217 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br></div></div><ul><li><a href="/team/frontend/system-model.html#密码登录">密码登录</a></li> <li><a href="/team/frontend/system-model.html#获取当前用户数据">获取当前用户数据</a></li> <li><a href="/team/frontend/system-model.html#切换公司">切换公司</a></li></ul> <p>上述接口均为登录授权类接口,数据格式及处理规则请参考 <a href="/team/frontend/http.html#登录授权">数据交互格式标准 - 登录授权</a></p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"> 217 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br></div></div><p>事实上有多个接口均为获取用户访问令牌的功能:</p> <ul><li><a href="/team/frontend/system-model.html#密码登录">密码登录</a></li> <li><a href="/team/frontend/system-model.html#获取当前用户数据">获取当前用户数据</a></li> <li><a href="/team/frontend/system-model.html#切换公司">切换公司</a></li></ul> <p>数据格式及处理规则请参考 <a href="/team/frontend/http.html#登录授权">数据交互格式标准 - 登录授权</a></p></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
218 218
219 <a href="/team/frontend/http.html" class="prev"> 219 <a href="/team/frontend/http.html" class="prev">
220 数据交互格式标准 220 数据交互格式标准
@@ -223,6 +223,6 @@ @@ -223,6 +223,6 @@
223 </a> 223 </a>
224 224
225 </span></p></div> </main></div><div class="global-ui"><!----></div></div> 225 </span></p></div> </main></div><div class="global-ui"><!----></div></div>
226 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/21.63585e89.js" defer></script> 226 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/21.3f6ff79f.js" defer></script>
227 </body> 227 </body>
228 </html> 228 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>网页能力开放平台 | 买买买文档平台</title> 6 <title>网页能力开放平台 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/22.52457d59.js" as="script"><link rel="preload" href="/assets/js/3.5823559d.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/22.5133b22a.js" as="script"><link rel="preload" href="/assets/js/3.7f4a682c.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link router-link-active">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,13 +60,13 @@ @@ -60,13 +60,13 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="active sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="网页能力开放平台"><a href="#网页能力开放平台" aria-hidden="true" class="header-anchor">#</a> 网页能力开放平台</h1> <h2 id="平台介绍及使用规范"><a href="#平台介绍及使用规范" aria-hidden="true" class="header-anchor">#</a> 平台介绍及使用规范</h2> <h4 id="背景情况说明"><a href="#背景情况说明" aria-hidden="true" class="header-anchor">#</a> 背景情况说明</h4> <p><em>网页能力开放平台</em> 作为专为 <code>App</code> 中内嵌或在 <code>Desktop / Mobile</code> 独立功能网页输出的功能平台,将移动、多场景共享使用的内容聚合于一个独立工程中,以达到专项优化,专项处理的功能需求</p> <p>平台使用 <a href="https://getbootstrap.com/" target="_blank" rel="noopener noreferrer">Bootstrap<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> UI 框架的 4.x 版本的样式作为基础框架样式库使用, 原则上如果没有极其特殊需求,不允许再引用其他样式进行使用</p> <h4 id="项目名称"><a href="#项目名称" aria-hidden="true" class="header-anchor">#</a> 项目名称</h4> <p><code>web-open-platform</code></p> <h4 id="内容管理规范"><a href="#内容管理规范" aria-hidden="true" class="header-anchor">#</a> 内容管理规范</h4> <ul><li>内容以项目作为基本单位建立目录</li> <li>使用 <a href="https://getbootstrap.com/" target="_blank" rel="noopener noreferrer">Bootstrap<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 作为基础 UI 框架(仅使用样式),为界面中排版布局,样式组件所用</li> <li>样式表预处理语言必须使用 <a href="https://www.zhangxinxu.com/jq/stylus/" target="_blank" rel="noopener noreferrer">Stylus<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <h4 id="路由命令规则"><a href="#路由命令规则" aria-hidden="true" class="header-anchor">#</a> 路由命令规则</h4> <div class="language- line-numbers-mode"><pre class="language-text"><code>project/function[/children-function]  
64 -</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p><strong>示例</strong></p> <p>能力展示平台的公告详情功能: <code>http://web-open-platform.com/ability/announcement</code></p> <h2 id="现有项目-模块"><a href="#现有项目-模块" aria-hidden="true" class="header-anchor">#</a> 现有项目/模块</h2> <p>陈列出在 <strong>网页能力开放平台</strong> 中已完成或正在进行中的项目</p> <h3 id="app-内嵌网页"><a href="#app-内嵌网页" aria-hidden="true" class="header-anchor">#</a> App 内嵌网页</h3> <p>应用于 <strong>App(Android、IOS)</strong> 内嵌使用</p> <h4 id="能力展示"><a href="#能力展示" aria-hidden="true" class="header-anchor">#</a> 能力展示</h4> <ul><li><strong>活动 / 公告内容展示</strong> <span class="badge success" style="vertical-align:middle;" data-v-15b7b770>完成</span><br>  
65 -提供展示活动 / 公告的标题、内容以及投票交互能力,若有交互功能场景则在提交数据后,通知客户端处理后续功能</li></ul> <h4 id="素-管理平台"><a href="#素-管理平台" aria-hidden="true" class="header-anchor">#</a> 素+管理平台</h4> <ul><li><strong>用户协议</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><a href="/team/frontend/" class="sidebar-link">前端 Frontend</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/#能力输出" class="sidebar-link">能力输出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目构建说明" class="sidebar-link">项目构建说明</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目环境要求" class="sidebar-link">项目环境要求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#项目技术组成" class="sidebar-link">项目技术组成</a></li><li class="sidebar-sub-header"><a href="/team/frontend/#代码版本控制位置" class="sidebar-link">代码版本控制位置</a></li></ul></li><li><a href="/team/frontend/showcase.html" class="sidebar-link">陈列柜</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#网站" class="sidebar-link">网站</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#微信小程序" class="sidebar-link">微信小程序</a></li><li class="sidebar-sub-header"><a href="/team/frontend/showcase.html#桌面客户端" class="sidebar-link">桌面客户端</a></li></ul></li><li><a href="/team/frontend/standard.html" class="sidebar-link">开发规范</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#vscode-插件" class="sidebar-link">VSCode 插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#文件与目录命名规范" class="sidebar-link">文件与目录命名规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#css-样式预处理" class="sidebar-link">CSS 样式预处理</a></li><li class="sidebar-sub-header"><a href="/team/frontend/standard.html#路由命名规则" class="sidebar-link">路由命名规则</a></li></ul></li><li><a href="/team/frontend/http.html" class="sidebar-link">数据交互格式标准</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据格式样例" class="sidebar-link">数据格式样例</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#api-交互规则" class="sidebar-link">API 交互规则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#跨域与重复请求" class="sidebar-link">跨域与重复请求</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/http.html#登录授权" class="sidebar-link">登录授权</a></li></ul></li><li><a href="/team/frontend/system-model.html" class="sidebar-link">系统交互模型</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#基础原则" class="sidebar-link">基础原则</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#流程示意" class="sidebar-link">流程示意</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#数据模型" class="sidebar-link">数据模型</a></li><li class="sidebar-sub-header"><a href="/team/frontend/system-model.html#api-接口" class="sidebar-link">API 接口</a></li></ul></li><li><a href="/team/frontend/plugins.html" class="sidebar-link">功能插件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#拼图验证码插件" class="sidebar-link">拼图验证码插件</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#短信验证" class="sidebar-link">短信验证</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#侧边栏抽屉" class="sidebar-link">侧边栏抽屉</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据表格" class="sidebar-link">数据表格</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#数据下载-导出" class="sidebar-link">数据下载/导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/plugins.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/components.html" class="sidebar-link">业务组件</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/components.html#数据导入导出" class="sidebar-link">数据导入导出</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#操作权限应用" class="sidebar-link">操作权限应用</a></li><li class="sidebar-sub-header"><a href="/team/frontend/components.html#选择器" class="sidebar-link">选择器</a></li></ul></li><li><a href="/team/frontend/framework.html" class="sidebar-link">系统框架</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#目录结构描述" class="sidebar-link">目录结构描述</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#api" class="sidebar-link">API</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#自定义指令集-directive" class="sidebar-link">自定义指令集 directive</a></li><li class="sidebar-sub-header"><a href="/team/frontend/framework.html#表单校验规则" class="sidebar-link">表单校验规则</a></li></ul></li><li><a href="/team/frontend/web-open-platform.html" class="active sidebar-link">网页能力开放平台</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#平台介绍及使用规范" class="sidebar-link">平台介绍及使用规范</a></li><li class="sidebar-sub-header"><a href="/team/frontend/web-open-platform.html#现有项目-模块" class="sidebar-link">现有项目/模块</a></li></ul></li><li><a href="/team/frontend/quality.html" class="sidebar-link">质量保证体系</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#团队应用现状" class="sidebar-link">团队应用现状</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#语法检查" class="sidebar-link">语法检查</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#单元测试" class="sidebar-link">单元测试</a></li><li class="sidebar-sub-header"><a href="/team/frontend/quality.html#端对端测试(end-to-end)" class="sidebar-link">端对端测试(End-to-end)</a></li></ul></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="网页能力开放平台"><a href="#网页能力开放平台" class="header-anchor">#</a> 网页能力开放平台</h1> <h2 id="平台介绍及使用规范"><a href="#平台介绍及使用规范" class="header-anchor">#</a> 平台介绍及使用规范</h2> <h4 id="背景情况说明"><a href="#背景情况说明" class="header-anchor">#</a> 背景情况说明</h4> <p><em>网页能力开放平台</em> 作为专为 <code>App</code> 中内嵌或在 <code>Desktop / Mobile</code> 独立功能网页输出的功能平台,将移动、多场景共享使用的内容聚合于一个独立工程中,以达到专项优化,专项处理的功能需求</p> <p>平台使用 <a href="https://getbootstrap.com/" target="_blank" rel="noopener noreferrer">Bootstrap<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> UI 框架的 4.x 版本的样式作为基础框架样式库使用, 原则上如果没有极其特殊需求,不允许再引用其他样式进行使用</p> <h4 id="项目名称"><a href="#项目名称" class="header-anchor">#</a> 项目名称</h4> <p><code>web-open-platform</code></p> <h4 id="内容管理规范"><a href="#内容管理规范" class="header-anchor">#</a> 内容管理规范</h4> <ul><li>内容以项目作为基本单位建立目录</li> <li>使用 <a href="https://getbootstrap.com/" target="_blank" rel="noopener noreferrer">Bootstrap<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 作为基础 UI 框架(仅使用样式),为界面中排版布局,样式组件所用</li> <li>样式表预处理语言必须使用 <a href="https://www.zhangxinxu.com/jq/stylus/" target="_blank" rel="noopener noreferrer">Stylus<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></li></ul> <h4 id="路由命令规则"><a href="#路由命令规则" class="header-anchor">#</a> 路由命令规则</h4> <div class="language- line-numbers-mode"><pre class="language-text"><code>project/function[/children-function]
  64 +</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><p><strong>示例</strong></p> <p>能力展示平台的公告详情功能: <code>http://web-open-platform.com/ability/announcement</code></p> <h2 id="现有项目-模块"><a href="#现有项目-模块" class="header-anchor">#</a> 现有项目/模块</h2> <p>陈列出在 <strong>网页能力开放平台</strong> 中已完成或正在进行中的项目</p> <h3 id="app-内嵌网页"><a href="#app-内嵌网页" class="header-anchor">#</a> App 内嵌网页</h3> <p>应用于 <strong>App(Android、IOS)</strong> 内嵌使用</p> <h4 id="能力展示"><a href="#能力展示" class="header-anchor">#</a> 能力展示</h4> <ul><li><strong>活动 / 公告内容展示</strong> <span class="badge success" style="vertical-align:middle;" data-v-15b7b770>完成</span><br>
  65 +提供展示活动 / 公告的标题、内容以及投票交互能力,若有交互功能场景则在提交数据后,通知客户端处理后续功能</li></ul> <h4 id="素-管理平台"><a href="#素-管理平台" class="header-anchor">#</a> 素+管理平台</h4> <ul><li><strong>用户协议</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br>
66 提供素+管理平台用户协议详情,内容来自管理后台</li> <li><strong>隐私政策</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br> 66 提供素+管理平台用户协议详情,内容来自管理后台</li> <li><strong>隐私政策</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br>
67 提供素+管理平台隐私政策详情,内容来自管理后台</li> <li><strong>App 版本更新详情</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br> 67 提供素+管理平台隐私政策详情,内容来自管理后台</li> <li><strong>App 版本更新详情</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br>
68 提供 App 版本更新详情内容展示,内容来自管理后台</li> <li><strong>仓储管理预警消息详情</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br> 68 提供 App 版本更新详情内容展示,内容来自管理后台</li> <li><strong>仓储管理预警消息详情</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br>
69 -提供预警消息详情内容查看,其中又分为 “产品” 与 “仓库” 两种类型</li></ul> <h3 id="独立功能页"><a href="#独立功能页" aria-hidden="true" class="header-anchor">#</a> 独立功能页</h3> <p>应用于 <strong>Desktop、Mobile</strong> 的独立功能网页</p> <h4 id="素-管理平台-2"><a href="#素-管理平台-2" aria-hidden="true" class="header-anchor">#</a> 素+管理平台</h4> <ul><li><strong>App 版本更新详情</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br> 69 +提供预警消息详情内容查看,其中又分为 “产品” 与 “仓库” 两种类型</li></ul> <h3 id="独立功能页"><a href="#独立功能页" class="header-anchor">#</a> 独立功能页</h3> <p>应用于 <strong>Desktop、Mobile</strong> 的独立功能网页</p> <h4 id="素-管理平台-2"><a href="#素-管理平台-2" class="header-anchor">#</a> 素+管理平台</h4> <ul><li><strong>App 版本更新详情</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br>
70 提供 App 版本更新详情内容展示,内容来自管理后台</li> <li><strong>仓储管理预警消息详情</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br> 70 提供 App 版本更新详情内容展示,内容来自管理后台</li> <li><strong>仓储管理预警消息详情</strong> <span class="badge tip" style="vertical-align:middle;" data-v-15b7b770>完成</span><br>
71 提供预警消息详情内容查看,其中又分为 “产品” 与 “仓库” 两种类型</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"> 71 提供预警消息详情内容查看,其中又分为 “产品” 与 “仓库” 两种类型</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev">
72 72
@@ -77,6 +77,6 @@ @@ -77,6 +77,6 @@
77 </a> 77 </a>
78 78
79 </span></p></div> </main></div><div class="global-ui"><!----></div></div> 79 </span></p></div> </main></div><div class="global-ui"><!----></div></div>
80 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/22.52457d59.js" defer></script><script src="/assets/js/3.5823559d.js" defer></script> 80 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/22.5133b22a.js" defer></script><script src="/assets/js/3.7f4a682c.js" defer></script>
81 </body> 81 </body>
82 </html> 82 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>IOS 苹果端 | 买买买文档平台</title> 6 <title>IOS 苹果端 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/23.4c5fe2cc.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/23.564cbd22.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link router-link-exact-active router-link-active"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link router-link-exact-active router-link-active">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link router-link-exact-active router-link-active"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link router-link-exact-active router-link-active">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="ios-苹果端"><a href="#ios-苹果端" aria-hidden="true" class="header-anchor">#</a> IOS 苹果端</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/23.4c5fe2cc.js" defer></script> 63 +</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="ios-苹果端"><a href="#ios-苹果端" class="header-anchor">#</a> IOS 苹果端</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/23.564cbd22.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>测试组 | 买买买文档平台</title> 6 <title>测试组 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/24.549dd690.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/25.f337c759.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/24.0e3022aa.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/25.9eb0e0fc.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container no-sidebar"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link router-link-exact-active router-link-active"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link router-link-exact-active router-link-active">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link router-link-exact-active router-link-active"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link router-link-exact-active router-link-active">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="测试组"><a href="#测试组" aria-hidden="true" class="header-anchor">#</a> 测试组</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/24.549dd690.js" defer></script> 63 +</a></div> <!----></nav> <!----> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="测试组"><a href="#测试组" class="header-anchor">#</a> 测试组</h1></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/24.0e3022aa.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>
@@ -5,29 +5,29 @@ @@ -5,29 +5,29 @@
5 <meta name="viewport" content="width=device-width,initial-scale=1"> 5 <meta name="viewport" content="width=device-width,initial-scale=1">
6 <title>协作工具 | 买买买文档平台</title> 6 <title>协作工具 | 买买买文档平台</title>
7 <meta name="description" content="买买买文档平台"> 7 <meta name="description" content="买买买文档平台">
8 - <meta name="generator" content="VuePress 1.3.0"> 8 + <meta name="generator" content="VuePress 1.3.1">
9 9
10 10
11 - <link rel="preload" href="/assets/css/0.styles.c1b2a71c.css" as="style"><link rel="preload" href="/assets/js/app.75260303.js" as="script"><link rel="preload" href="/assets/js/2.d106f811.js" as="script"><link rel="preload" href="/assets/js/25.f337c759.js" as="script"><link rel="prefetch" href="/assets/js/10.49603ca8.js"><link rel="prefetch" href="/assets/js/11.973f8ef4.js"><link rel="prefetch" href="/assets/js/12.76360d2e.js"><link rel="prefetch" href="/assets/js/13.a4f2bd9c.js"><link rel="prefetch" href="/assets/js/14.e7ac0b94.js"><link rel="prefetch" href="/assets/js/15.6effadcc.js"><link rel="prefetch" href="/assets/js/16.25486ada.js"><link rel="prefetch" href="/assets/js/17.501747e9.js"><link rel="prefetch" href="/assets/js/18.4e8bf841.js"><link rel="prefetch" href="/assets/js/19.d818c655.js"><link rel="prefetch" href="/assets/js/20.7e351963.js"><link rel="prefetch" href="/assets/js/21.63585e89.js"><link rel="prefetch" href="/assets/js/22.52457d59.js"><link rel="prefetch" href="/assets/js/23.4c5fe2cc.js"><link rel="prefetch" href="/assets/js/24.549dd690.js"><link rel="prefetch" href="/assets/js/26.b0c9d0d2.js"><link rel="prefetch" href="/assets/js/3.5823559d.js"><link rel="prefetch" href="/assets/js/4.0442bfb1.js"><link rel="prefetch" href="/assets/js/5.5690c9b5.js"><link rel="prefetch" href="/assets/js/6.da5cbe6d.js"><link rel="prefetch" href="/assets/js/7.f9fd827d.js"><link rel="prefetch" href="/assets/js/8.bcd25b86.js"><link rel="prefetch" href="/assets/js/9.2d40e7da.js">  
12 - <link rel="stylesheet" href="/assets/css/0.styles.c1b2a71c.css"> 11 + <link rel="preload" href="/assets/css/0.styles.fadb700b.css" as="style"><link rel="preload" href="/assets/js/app.7b3620cc.js" as="script"><link rel="preload" href="/assets/js/2.db0c6dc7.js" as="script"><link rel="preload" href="/assets/js/25.9eb0e0fc.js" as="script"><link rel="prefetch" href="/assets/js/10.e67b7016.js"><link rel="prefetch" href="/assets/js/11.f9dc0448.js"><link rel="prefetch" href="/assets/js/12.43e3bc20.js"><link rel="prefetch" href="/assets/js/13.e26beb91.js"><link rel="prefetch" href="/assets/js/14.172a5d95.js"><link rel="prefetch" href="/assets/js/15.821371e8.js"><link rel="prefetch" href="/assets/js/16.4011c09c.js"><link rel="prefetch" href="/assets/js/17.0a79f884.js"><link rel="prefetch" href="/assets/js/18.418c37b0.js"><link rel="prefetch" href="/assets/js/19.96959446.js"><link rel="prefetch" href="/assets/js/20.1c54f52e.js"><link rel="prefetch" href="/assets/js/21.3f6ff79f.js"><link rel="prefetch" href="/assets/js/22.5133b22a.js"><link rel="prefetch" href="/assets/js/23.564cbd22.js"><link rel="prefetch" href="/assets/js/24.0e3022aa.js"><link rel="prefetch" href="/assets/js/26.c898ca98.js"><link rel="prefetch" href="/assets/js/3.7f4a682c.js"><link rel="prefetch" href="/assets/js/4.9dcb0336.js"><link rel="prefetch" href="/assets/js/5.9eb2a68c.js"><link rel="prefetch" href="/assets/js/6.1b73d060.js"><link rel="prefetch" href="/assets/js/7.72deeb81.js"><link rel="prefetch" href="/assets/js/8.8be0ed7e.js"><link rel="prefetch" href="/assets/js/9.bec74b06.js">
  12 + <link rel="stylesheet" href="/assets/css/0.styles.fadb700b.css">
13 </head> 13 </head>
14 <body> 14 <body>
15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link"> 15 <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><img src="/logo.png" alt="买买买文档平台" class="logo"> <span class="site-name can-hide">买买买文档平台</span></a> <div class="links"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><a href="/" class="nav-link">
16 查询导览 16 查询导览
17 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 17 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
18 项目清单 18 项目清单
19 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 19 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  20 + 产品设计
  21 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
20 前端 22 前端
21 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 23 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
22 - IOS 24 + IOS
23 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 25 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
24 - 安卓 26 + 安卓
25 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 27 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
26 服务端 28 服务端
27 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 29 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
28 - 测试端  
29 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
30 - 产品设计 30 + 测试
31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 31 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
32 项目管控 32 项目管控
33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 33 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -40,18 +40,18 @@ @@ -40,18 +40,18 @@
40 查询导览 40 查询导览
41 </a></div><div class="nav-item"><a href="/product/" class="nav-link"> 41 </a></div><div class="nav-item"><a href="/product/" class="nav-link">
42 项目清单 42 项目清单
43 -</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link"> 43 +</a></div><div class="nav-item"><div class="dropdown-wrapper"><button type="button" aria-label="团队文档" class="dropdown-title"><span class="title">团队文档</span> <span class="arrow right"></span></button> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">
  44 + 产品设计
  45 +</a></li><li class="dropdown-item"><!----> <a href="/team/frontend/" class="nav-link">
44 前端 46 前端
45 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link"> 47 </a></li><li class="dropdown-item"><!----> <a href="/team/ios/" class="nav-link">
46 - IOS 48 + IOS
47 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link"> 49 </a></li><li class="dropdown-item"><!----> <a href="/team/android/" class="nav-link">
48 - 安卓 50 + 安卓
49 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link"> 51 </a></li><li class="dropdown-item"><!----> <a href="/team/backend/" class="nav-link">
50 服务端 52 服务端
51 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link"> 53 </a></li><li class="dropdown-item"><!----> <a href="/team/quality/" class="nav-link">
52 - 测试端  
53 -</a></li><li class="dropdown-item"><!----> <a href="/team/design/" class="nav-link">  
54 - 产品设计 54 + 测试
55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link"> 55 </a></li></ul></div></div><div class="nav-item"><a href="/project/" class="nav-link">
56 项目管控 56 项目管控
57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link"> 57 </a></div><div class="nav-item"><a href="/adm/" class="nav-link">
@@ -60,7 +60,7 @@ @@ -60,7 +60,7 @@
60 协作工具 60 协作工具
61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link"> 61 </a></div><div class="nav-item"><a href="/guide/" class="nav-link">
62 文档写作平台入门介绍 62 文档写作平台入门介绍
63 -</a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>协作工具</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/util/#项目研发管理" class="sidebar-link">项目研发管理</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/util/#api-管理平台" class="sidebar-link">API 管理平台</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/util/#资源管理" class="sidebar-link">资源管理</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/util/#产品设计" class="sidebar-link">产品设计</a><ul class="sidebar-sub-headers"></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="协作工具"><a href="#协作工具" aria-hidden="true" class="header-anchor">#</a> 协作工具</h1> <p>公司团队协作工具站点</p> <h2 id="项目研发管理"><a href="#项目研发管理" aria-hidden="true" class="header-anchor">#</a> 项目研发管理</h2> <ul><li><a href="http://192.168.100.254:8088/zentao/" target="_blank" rel="noopener noreferrer">禅道<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> Bug 管理平台</li> <li><a href="https://mp.weixin.qq.com/" target="_blank" rel="noopener noreferrer">微信公众平台<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 微信小程序、微信公众号开发管理,开发文档中心</li></ul> <h2 id="api-管理平台"><a href="#api-管理平台" aria-hidden="true" class="header-anchor">#</a> API 管理平台</h2> <ul><li><a href="http://115.29.205.99:3000/" target="_blank" rel="noopener noreferrer">YAPI<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 服务端提供 API 的描述与快速测试平台</li></ul> <h2 id="资源管理"><a href="#资源管理" aria-hidden="true" class="header-anchor">#</a> 资源管理</h2> <ul><li><a href="http://192.168.100.254:3000/" target="_blank" rel="noopener noreferrer">git<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 使用 gogs 搭建的基于 git 的代码版本控制管理平台,现有公司项目代码均维护在此</li> <li><a href="svn://192.168.100.254/repo/%E9%A1%B9%E7%9B%AE%E6%96%87%E4%BB%B6">svn</a> 设计原型、UI、文档等内容</li></ul> <h2 id="产品设计"><a href="#产品设计" aria-hidden="true" class="header-anchor">#</a> 产品设计</h2> <ul><li><a href="https://lanhuapp.com" target="_blank" rel="noopener noreferrer">蓝湖<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> UI 预览查看</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>  
64 - <script src="/assets/js/app.75260303.js" defer></script><script src="/assets/js/2.d106f811.js" defer></script><script src="/assets/js/25.f337c759.js" defer></script> 63 +</a></div> <!----></nav> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>协作工具</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/util/#项目研发管理" class="sidebar-link">项目研发管理</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/util/#api-管理平台" class="sidebar-link">API 管理平台</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/util/#资源管理" class="sidebar-link">资源管理</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/util/#产品设计" class="sidebar-link">产品设计</a><ul class="sidebar-sub-headers"></ul></li></ul></section></li></ul> </aside> <main class="page"> <div class="theme-default-content content__default"><h1 id="协作工具"><a href="#协作工具" class="header-anchor">#</a> 协作工具</h1> <p>公司团队协作工具站点</p> <h2 id="项目研发管理"><a href="#项目研发管理" class="header-anchor">#</a> 项目研发管理</h2> <ul><li><a href="http://192.168.100.254:8088/zentao/" target="_blank" rel="noopener noreferrer">禅道<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> Bug 管理平台</li> <li><a href="https://mp.weixin.qq.com/" target="_blank" rel="noopener noreferrer">微信公众平台<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 微信小程序、微信公众号开发管理,开发文档中心</li></ul> <h2 id="api-管理平台"><a href="#api-管理平台" class="header-anchor">#</a> API 管理平台</h2> <ul><li><a href="http://115.29.205.99:3000/" target="_blank" rel="noopener noreferrer">YAPI<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 服务端提供 API 的描述与快速测试平台</li></ul> <h2 id="资源管理"><a href="#资源管理" class="header-anchor">#</a> 资源管理</h2> <ul><li><a href="http://192.168.100.254:3000/" target="_blank" rel="noopener noreferrer">git<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> 使用 gogs 搭建的基于 git 的代码版本控制管理平台,现有公司项目代码均维护在此</li> <li><a href="svn://192.168.100.254/repo/%E9%A1%B9%E7%9B%AE%E6%96%87%E4%BB%B6">svn</a> 设计原型、UI、文档等内容</li></ul> <h2 id="产品设计"><a href="#产品设计" class="header-anchor">#</a> 产品设计</h2> <ul><li><a href="https://lanhuapp.com" target="_blank" rel="noopener noreferrer">蓝湖<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a> UI 预览查看</li></ul></div> <footer class="page-edit"><!----> <!----></footer> <!----> </main></div><div class="global-ui"><!----></div></div>
  64 + <script src="/assets/js/app.7b3620cc.js" defer></script><script src="/assets/js/2.db0c6dc7.js" defer></script><script src="/assets/js/25.9eb0e0fc.js" defer></script>
65 </body> 65 </body>
66 </html> 66 </html>