frontend-development.html 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852
  1. <!DOCTYPE HTML>
  2. <html lang="zh-hans" >
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  6. <title>项目目录结构 · 调度系统-EasyScheduler</title>
  7. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  8. <meta name="description" content="">
  9. <meta name="generator" content="GitBook 3.2.3">
  10. <meta name="author" content="YIGUAN">
  11. <link rel="stylesheet" href="gitbook/style.css">
  12. <link rel="stylesheet" href="gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.css">
  13. <link rel="stylesheet" href="gitbook/gitbook-plugin-insert-logo-link/plugin.css">
  14. <link rel="stylesheet" href="gitbook/gitbook-plugin-highlight/website.css">
  15. <link rel="stylesheet" href="gitbook/gitbook-plugin-search/search.css">
  16. <link rel="stylesheet" href="gitbook/gitbook-plugin-fontsettings/website.css">
  17. <link rel="stylesheet" href="styles/website.css">
  18. <meta name="HandheldFriendly" content="true"/>
  19. <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  20. <meta name="apple-mobile-web-app-capable" content="yes">
  21. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  22. <link rel="apple-touch-icon-precomposed" sizes="152x152" href="gitbook/images/apple-touch-icon-precomposed-152.png">
  23. <link rel="shortcut icon" href="gitbook/images/favicon.ico" type="image/x-icon">
  24. <link rel="next" href="frontend-development.html" />
  25. <link rel="prev" href="frontend-deploy.html" />
  26. </head>
  27. <body>
  28. <div class="book">
  29. <div class="book-summary">
  30. <div id="book-search-input" role="search">
  31. <input type="text" placeholder="输入并搜索" />
  32. </div>
  33. <nav role="navigation">
  34. <ul class="summary">
  35. <li class="chapter " data-level="1.1" data-path="./">
  36. <a href="./">
  37. Easyscheduler简介
  38. </a>
  39. </li>
  40. <li class="chapter " data-level="1.2" >
  41. <span>
  42. 前端文档
  43. </span>
  44. <ul class="articles">
  45. <li class="chapter " data-level="1.2.1" data-path="frontend-deploy.html">
  46. <a href="frontend-deploy.html#前端项目环境构建及编译">
  47. 环境搭建
  48. </a>
  49. </li>
  50. <li class="chapter " data-level="1.2.2" data-path="frontend-deploy.html">
  51. <a href="frontend-deploy.html#安装及配置">
  52. 安装及配置
  53. </a>
  54. </li>
  55. <li class="chapter " data-level="1.2.3" data-path="frontend-deploy.html">
  56. <a href="frontend-deploy.html#项目生产环境配置">
  57. 项目生产环境Nginx配置
  58. </a>
  59. </li>
  60. <li class="chapter " data-level="1.2.4" data-path="frontend-deploy.html">
  61. <a href="frontend-deploy.html#前端项目发布">
  62. 前端项目发布
  63. </a>
  64. </li>
  65. <li class="chapter " data-level="1.2.5" data-path="frontend-deploy.html">
  66. <a href="frontend-deploy.html#问题">
  67. 问题
  68. </a>
  69. </li>
  70. <li class="chapter " data-level="1.2.6" data-path="frontend-development.html">
  71. <a href="frontend-development.html#项目目录结构">
  72. 项目目录结构
  73. </a>
  74. </li>
  75. <li class="chapter " data-level="1.2.7" data-path="frontend-development.html">
  76. <a href="frontend-development.html#系统功能模块">
  77. 系统功能模块
  78. </a>
  79. </li>
  80. <li class="chapter " data-level="1.2.8" data-path="frontend-development.html">
  81. <a href="frontend-development.html#路由和状态管理">
  82. 路由和状态管理
  83. </a>
  84. </li>
  85. <li class="chapter " data-level="1.2.9" data-path="frontend-development.html">
  86. <a href="frontend-development.html#规范">
  87. 规范
  88. </a>
  89. </li>
  90. <li class="chapter " data-level="1.2.10" data-path="frontend-development.html">
  91. <a href="frontend-development.html#接口">
  92. 接口
  93. </a>
  94. </li>
  95. <li class="chapter " data-level="1.2.11" data-path="frontend-development.html">
  96. <a href="frontend-development.html#扩展开发">
  97. 扩展开发
  98. </a>
  99. </li>
  100. </ul>
  101. </li>
  102. <li class="chapter " data-level="1.3" >
  103. <span>
  104. 后端文档
  105. </span>
  106. <ul class="articles">
  107. <li class="chapter " data-level="1.3.1" data-path="architecture-design.html">
  108. <a href="architecture-design.html#调度系统架构设计">
  109. 系统架构设计
  110. </a>
  111. </li>
  112. <li class="chapter " data-level="1.3.2" data-path="backend-deploy.html">
  113. <a href="backend-deploy.html#部署文档">
  114. 部署文档
  115. </a>
  116. </li>
  117. <li class="chapter " data-level="1.3.3" data-path="task-plugin-development.html">
  118. <a href="task-plugin-development.html#任务插件开发">
  119. 自定义任务插件文档
  120. </a>
  121. </li>
  122. </ul>
  123. </li>
  124. <li class="chapter " data-level="1.4" data-path="user-manual.md">
  125. <span>
  126. 使用说明文档
  127. </a>
  128. </li>
  129. <li class="divider"></li>
  130. <li>
  131. <a href="https://www.gitbook.com" target="blank" class="gitbook-link">
  132. 本书使用 GitBook 发布
  133. </a>
  134. </li>
  135. </ul>
  136. </nav>
  137. </div>
  138. <div class="book-body">
  139. <div class="body-inner">
  140. <div class="book-header" role="navigation">
  141. <!-- Title -->
  142. <h1>
  143. <i class="fa fa-circle-o-notch fa-spin"></i>
  144. <a href="." >项目目录结构</a>
  145. </h1>
  146. </div>
  147. <div class="page-wrapper" tabindex="-1" role="main">
  148. <div class="page-inner">
  149. <div id="book-search-results">
  150. <div class="search-noresults">
  151. <section class="normal markdown-section">
  152. <h1 id="&#x524D;&#x7AEF;&#x5F00;&#x53D1;&#x6587;&#x6863;">&#x524D;&#x7AEF;&#x5F00;&#x53D1;&#x6587;&#x6863;</h1>
  153. <h3 id="&#x6280;&#x672F;&#x9009;&#x578B;">&#x6280;&#x672F;&#x9009;&#x578B;</h3>
  154. <pre><code>Vue mvvm&#x6846;&#x67B6;
  155. Es6 ECMAScript 6.0
  156. Ans-ui Analysys-ui
  157. D3 &#x53EF;&#x89C6;&#x5316;&#x5E93;&#x56FE;&#x8868;&#x5E93;
  158. Jsplumb &#x8FDE;&#x7EBF;&#x63D2;&#x4EF6;&#x5E93;
  159. Lodash &#x9AD8;&#x6027;&#x80FD;&#x7684; JavaScript &#x5B9E;&#x7528;&#x5DE5;&#x5177;&#x5E93;
  160. </code></pre><h3 id="&#x9879;&#x76EE;&#x76EE;&#x5F55;&#x7ED3;&#x6784;">&#x9879;&#x76EE;&#x76EE;&#x5F55;&#x7ED3;&#x6784;</h3>
  161. <p><code>build</code> &#x6253;&#x5305;&#x53CA;&#x5F00;&#x53D1;&#x73AF;&#x5883;&#x9879;&#x76EE;&#x7684;&#x4E00;&#x4E9B;webpack&#x914D;&#x7F6E;</p>
  162. <p><code>node_modules</code> &#x5F00;&#x53D1;&#x73AF;&#x5883;node&#x4F9D;&#x8D56;&#x5305;</p>
  163. <p><code>src</code> &#x9879;&#x76EE;&#x6240;&#x9700;&#x6587;&#x4EF6;</p>
  164. <p><code>src =&gt; combo</code> &#x9879;&#x76EE;&#x7B2C;&#x4E09;&#x65B9;&#x8D44;&#x6E90;&#x672C;&#x5730;&#x5316; <code>npm run combo</code>&#x5177;&#x4F53;&#x67E5;&#x770B;<code>build/combo.js</code></p>
  165. <p><code>src =&gt; font</code> &#x5B57;&#x4F53;&#x56FE;&#x6807;&#x5E93;&#x53EF;&#x8BBF;&#x95EE; <a href="https://www.iconfont.cn" target="_blank">https://www.iconfont.cn</a> &#x8FDB;&#x884C;&#x6DFB;&#x52A0; &#x6CE8;&#x610F;&#xFF1A;&#x5B57;&#x4F53;&#x5E93;&#x7528;&#x7684;&#x81EA;&#x5DF1;&#x7684; &#x4E8C;&#x6B21;&#x5F00;&#x53D1;&#x9700;&#x8981;&#x91CD;&#x65B0;&#x5F15;&#x5165;&#x81EA;&#x5DF1;&#x7684;&#x5E93; <code>src/sass/common/_font.scss</code></p>
  166. <p><code>src =&gt; images</code> &#x516C;&#x5171;&#x56FE;&#x7247;&#x5B58;&#x653E;</p>
  167. <p><code>src =&gt; js</code> js/vue</p>
  168. <p><code>src =&gt; lib</code> &#x516C;&#x53F8;&#x5185;&#x90E8;&#x7EC4;&#x4EF6;&#xFF08;&#x516C;&#x53F8;&#x7EC4;&#x4EF6;&#x5E93;&#x5F00;&#x6E90;&#x540E;&#x53EF;&#x5220;&#x6389;&#xFF09;</p>
  169. <p><code>src =&gt; sass</code> sass&#x6587;&#x4EF6; &#x4E00;&#x4E2A;&#x9875;&#x9762;&#x5BF9;&#x5E94;&#x4E00;&#x4E2A;sass&#x6587;&#x4EF6;</p>
  170. <p><code>src =&gt; view</code> &#x9875;&#x9762;&#x6587;&#x4EF6; &#x4E00;&#x4E2A;&#x9875;&#x9762;&#x5BF9;&#x5E94;&#x4E00;&#x4E2A;html&#x6587;&#x4EF6;</p>
  171. <pre><code>&gt; &#x9879;&#x76EE;&#x91C7;&#x7528;vue&#x5355;&#x9875;&#x9762;&#x5E94;&#x7528;(SPA)&#x5F00;&#x53D1;
  172. - &#x6240;&#x6709;&#x9875;&#x9762;&#x5165;&#x53E3;&#x6587;&#x4EF6;&#x5728; `src/js/conf/${&#x5BF9;&#x5E94;&#x9875;&#x9762;&#x6587;&#x4EF6;&#x540D; =&gt; home}` &#x7684; `index.js` &#x5165;&#x53E3;&#x6587;&#x4EF6;
  173. - &#x5BF9;&#x5E94;&#x7684;sass&#x6587;&#x4EF6;&#x5219;&#x5728; `src/sass/conf/${&#x5BF9;&#x5E94;&#x9875;&#x9762;&#x6587;&#x4EF6;&#x540D; =&gt; home}/index.scss`
  174. - &#x5BF9;&#x5E94;&#x7684;html&#x6587;&#x4EF6;&#x5219;&#x5728; `src/view/${&#x5BF9;&#x5E94;&#x9875;&#x9762;&#x6587;&#x4EF6;&#x540D; =&gt; home}/index.html`
  175. </code></pre><p>&#x516C;&#x5171;&#x6A21;&#x5757;&#x53CA;util <code>src/js/module</code></p>
  176. <p><code>components</code> =&gt; &#x5185;&#x90E8;&#x9879;&#x76EE;&#x516C;&#x5171;&#x7EC4;&#x4EF6;</p>
  177. <p><code>download</code> =&gt; &#x4E0B;&#x8F7D;&#x7EC4;&#x4EF6;</p>
  178. <p><code>echarts</code> =&gt; &#x56FE;&#x8868;&#x7EC4;&#x4EF6;</p>
  179. <p><code>filter</code> =&gt; &#x8FC7;&#x6EE4;&#x5668;&#x548C;vue&#x7BA1;&#x9053;</p>
  180. <p><code>i18n</code> =&gt; &#x56FD;&#x9645;&#x5316;</p>
  181. <p><code>io</code> =&gt; io&#x8BF7;&#x6C42;&#x5C01;&#x88C5; &#x57FA;&#x4E8E;axios</p>
  182. <p><code>mixin</code> =&gt; vue mixin &#x516C;&#x5171;&#x90E8;&#x5206; &#x7528;&#x4E8E;disabled&#x64CD;&#x4F5C;</p>
  183. <p><code>permissions</code> =&gt; &#x6743;&#x9650;&#x64CD;&#x4F5C;</p>
  184. <p><code>util</code> =&gt; &#x5DE5;&#x5177;</p>
  185. <h3 id="&#x7CFB;&#x7EDF;&#x529F;&#x80FD;&#x6A21;&#x5757;">&#x7CFB;&#x7EDF;&#x529F;&#x80FD;&#x6A21;&#x5757;</h3>
  186. <p>&#x9996;&#x9875; =&gt; <code>http://localhost:8888/#/home</code></p>
  187. <p>&#x9879;&#x76EE;&#x7BA1;&#x7406; =&gt; <code>http://localhost:8888/#/projects/list</code></p>
  188. <pre><code>| &#x9879;&#x76EE;&#x9996;&#x9875;
  189. | &#x5DE5;&#x4F5C;&#x6D41;
  190. - &#x5DE5;&#x4F5C;&#x6D41;&#x5B9A;&#x4E49;
  191. - &#x5DE5;&#x4F5C;&#x6D41;&#x5B9E;&#x4F8B;
  192. - &#x4EFB;&#x52A1;&#x5B9E;&#x4F8B;
  193. </code></pre><p>&#x8D44;&#x6E90;&#x7BA1;&#x7406; =&gt; <code>http://localhost:8888/#/resource/file</code></p>
  194. <pre><code>| &#x6587;&#x4EF6;&#x7BA1;&#x7406;
  195. | UDF&#x7BA1;&#x7406;
  196. - &#x8D44;&#x6E90;&#x7BA1;&#x7406;
  197. - &#x51FD;&#x6570;&#x7BA1;&#x7406;
  198. </code></pre><p>&#x6570;&#x636E;&#x6E90;&#x7BA1;&#x7406; =&gt; <code>http://localhost:8888/#/datasource/list</code></p>
  199. <p>&#x5B89;&#x5168;&#x4E2D;&#x5FC3; =&gt; <code>http://localhost:8888/#/security/tenant</code></p>
  200. <pre><code>| &#x79DF;&#x6237;&#x7BA1;&#x7406;
  201. | &#x7528;&#x6237;&#x7BA1;&#x7406;
  202. | &#x544A;&#x8B66;&#x7EC4;&#x7BA1;&#x7406;
  203. - master
  204. - worker
  205. </code></pre><p>&#x7528;&#x6237;&#x4E2D;&#x5FC3; =&gt; <code>http://localhost:8888/#/user/account</code></p>
  206. <h2 id="&#x8DEF;&#x7531;&#x548C;&#x72B6;&#x6001;&#x7BA1;&#x7406;">&#x8DEF;&#x7531;&#x548C;&#x72B6;&#x6001;&#x7BA1;&#x7406;</h2>
  207. <p>&#x9879;&#x76EE; <code>src/js/conf/home</code> &#x4E0B;&#x5206;&#x4E3A;</p>
  208. <p><code>pages</code> =&gt; &#x8DEF;&#x7531;&#x6307;&#x5411;&#x9875;&#x9762;&#x76EE;&#x5F55;</p>
  209. <pre><code> &#x8DEF;&#x7531;&#x5730;&#x5740;&#x5BF9;&#x5E94;&#x7684;&#x9875;&#x9762;&#x6587;&#x4EF6;
  210. </code></pre><p><code>router</code> =&gt; &#x8DEF;&#x7531;&#x7BA1;&#x7406;</p>
  211. <pre><code>vue&#x7684;&#x8DEF;&#x7531;&#x5668;&#xFF0C;&#x5728;&#x6BCF;&#x4E2A;&#x9875;&#x9762;&#x7684;&#x5165;&#x53E3;&#x6587;&#x4EF6;index.js &#x90FD;&#x4F1A;&#x6CE8;&#x518C;&#x8FDB;&#x6765; &#x5177;&#x4F53;&#x64CD;&#x4F5C;&#xFF1A;https://router.vuejs.org/zh/
  212. </code></pre><p><code>store</code> =&gt; &#x72B6;&#x6001;&#x7BA1;&#x7406;</p>
  213. <pre><code>&#x6BCF;&#x4E2A;&#x8DEF;&#x7531;&#x5BF9;&#x5E94;&#x7684;&#x9875;&#x9762;&#x90FD;&#x6709;&#x4E00;&#x4E2A;&#x72B6;&#x6001;&#x7BA1;&#x7406;&#x7684;&#x6587;&#x4EF6; &#x5206;&#x4E3A;&#xFF1A;
  214. actions =&gt; mapActions =&gt; &#x8BE6;&#x60C5;&#xFF1A;https://vuex.vuejs.org/zh/guide/actions.html
  215. getters =&gt; mapGetters =&gt; &#x8BE6;&#x60C5;&#xFF1A;https://vuex.vuejs.org/zh/guide/getters.html
  216. index =&gt; &#x5165;&#x53E3;
  217. mutations =&gt; mapMutations =&gt; &#x8BE6;&#x60C5;&#xFF1A;https://vuex.vuejs.org/zh/guide/mutations.html
  218. state =&gt; mapState =&gt; &#x8BE6;&#x60C5;&#xFF1A;https://vuex.vuejs.org/zh/guide/state.html
  219. &#x5177;&#x4F53;&#x64CD;&#x4F5C;&#xFF1A;https://vuex.vuejs.org/zh/
  220. </code></pre><h2 id="&#x89C4;&#x8303;">&#x89C4;&#x8303;</h2>
  221. <h2 id="vue&#x89C4;&#x8303;">Vue&#x89C4;&#x8303;</h2>
  222. <h5 id="1&#x7EC4;&#x4EF6;&#x540D;">1.&#x7EC4;&#x4EF6;&#x540D;</h5>
  223. <p>&#x7EC4;&#x4EF6;&#x540D;&#x4E3A;&#x591A;&#x4E2A;&#x5355;&#x8BCD;&#xFF0C;&#x5E76;&#x4E14;&#x7528;&#x8FDE;&#x63A5;&#x7EBF;&#xFF08;-&#xFF09;&#x8FDE;&#x63A5;&#xFF0C;&#x907F;&#x514D;&#x4E0E; HTML &#x6807;&#x7B7E;&#x51B2;&#x7A81;&#xFF0C;&#x5E76;&#x4E14;&#x7ED3;&#x6784;&#x66F4;&#x52A0;&#x6E05;&#x6670;&#x3002;</p>
  224. <pre><code>// &#x6B63;&#x4F8B;
  225. export default {
  226. name: &apos;page-article-item&apos;
  227. }
  228. </code></pre><h5 id="2&#x7EC4;&#x4EF6;&#x6587;&#x4EF6;">2.&#x7EC4;&#x4EF6;&#x6587;&#x4EF6;</h5>
  229. <p><code>src/js/module/components</code>&#x9879;&#x76EE;&#x5185;&#x90E8;&#x516C;&#x5171;&#x7EC4;&#x4EF6;&#x4E66;&#x5199;&#x6587;&#x4EF6;&#x5939;&#x540D;&#x4E0E;&#x6587;&#x4EF6;&#x540D;&#x540C;&#x540D;,&#x516C;&#x5171;&#x7EC4;&#x4EF6;&#x5185;&#x90E8;&#x6240;&#x62C6;&#x5206;&#x7684;&#x5B50;&#x7EC4;&#x4EF6;&#x4E0E;util&#x5DE5;&#x5177;&#x90FD;&#x653E;&#x7F6E;&#x7EC4;&#x4EF6;&#x5185;&#x90E8; <code>_source</code>&#x6587;&#x4EF6;&#x5939;&#x91CC;&#x3002;</p>
  230. <pre><code>&#x2514;&#x2500;&#x2500; components
  231. &#x251C;&#x2500;&#x2500; header
  232. &#x251C;&#x2500;&#x2500; header.vue
  233. &#x2514;&#x2500;&#x2500; _source
  234. &#x2514;&#x2500;&#x2500; nav.vue
  235. &#x2514;&#x2500;&#x2500; util.js
  236. &#x251C;&#x2500;&#x2500; conditions
  237. &#x251C;&#x2500;&#x2500; conditions.vue
  238. &#x2514;&#x2500;&#x2500; _source
  239. &#x2514;&#x2500;&#x2500; serach.vue
  240. &#x2514;&#x2500;&#x2500; util.js
  241. </code></pre><h5 id="3prop">3.Prop</h5>
  242. <p>&#x5B9A;&#x4E49; Prop &#x7684;&#x65F6;&#x5019;&#x5E94;&#x8BE5;&#x59CB;&#x7EC8;&#x4EE5;&#x9A7C;&#x5CF0;&#x683C;&#x5F0F;&#xFF08;camelCase&#xFF09;&#x547D;&#x540D;&#xFF0C;&#x5728;&#x7236;&#x7EC4;&#x4EF6;&#x8D4B;&#x503C;&#x7684;&#x65F6;&#x5019;&#x4F7F;&#x7528;&#x8FDE;&#x63A5;&#x7EBF;&#xFF08;-&#xFF09;&#x3002;
  243. &#x8FD9;&#x91CC;&#x9075;&#x5FAA;&#x6BCF;&#x4E2A;&#x8BED;&#x8A00;&#x7684;&#x7279;&#x6027;&#xFF0C;&#x56E0;&#x4E3A;&#x5728; HTML &#x6807;&#x8BB0;&#x4E2D;&#x5BF9;&#x5927;&#x5C0F;&#x5199;&#x662F;&#x4E0D;&#x654F;&#x611F;&#x7684;&#xFF0C;&#x4F7F;&#x7528;&#x8FDE;&#x63A5;&#x7EBF;&#x66F4;&#x52A0;&#x53CB;&#x597D;&#xFF1B;&#x800C;&#x5728; JavaScript &#x4E2D;&#x66F4;&#x81EA;&#x7136;&#x7684;&#x662F;&#x9A7C;&#x5CF0;&#x547D;&#x540D;&#x3002;</p>
  244. <pre><code>// Vue
  245. props: {
  246. articleStatus: Boolean
  247. }
  248. // HTML
  249. &lt;article-item :article-status=&quot;true&quot;&gt;&lt;/article-item&gt;
  250. </code></pre><p>Prop &#x7684;&#x5B9A;&#x4E49;&#x5E94;&#x8BE5;&#x5C3D;&#x91CF;&#x8BE6;&#x7EC6;&#x7684;&#x6307;&#x5B9A;&#x5176;&#x7C7B;&#x578B;&#x3001;&#x9ED8;&#x8BA4;&#x503C;&#x548C;&#x9A8C;&#x8BC1;&#x3002;</p>
  251. <p>&#x793A;&#x4F8B;&#xFF1A;</p>
  252. <pre><code>props: {
  253. attrM: Number,
  254. attrA: {
  255. type: String,
  256. required: true
  257. },
  258. attrZ: {
  259. type: Object,
  260. // &#x6570;&#x7EC4;/&#x5BF9;&#x8C61;&#x7684;&#x9ED8;&#x8BA4;&#x503C;&#x5E94;&#x8BE5;&#x7531;&#x4E00;&#x4E2A;&#x5DE5;&#x5382;&#x51FD;&#x6570;&#x8FD4;&#x56DE;
  261. default: function () {
  262. return {
  263. msg: &apos;&#x6210;&#x5C31;&#x4F60;&#x6211;&apos;
  264. }
  265. }
  266. },
  267. attrE: {
  268. type: String,
  269. validator: function (v) {
  270. return !([&apos;success&apos;, &apos;fail&apos;].indexOf(v) === -1)
  271. }
  272. }
  273. }
  274. </code></pre><h5 id="4v-for">4.v-for</h5>
  275. <p>&#x5728;&#x6267;&#x884C; v-for &#x904D;&#x5386;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x603B;&#x662F;&#x5E94;&#x8BE5;&#x5E26;&#x4E0A; key &#x503C;&#x4F7F;&#x66F4;&#x65B0; DOM &#x65F6;&#x6E32;&#x67D3;&#x6548;&#x7387;&#x66F4;&#x9AD8;&#x3002;</p>
  276. <pre><code>&lt;ul&gt;
  277. &lt;li v-for=&quot;item in list&quot; :key=&quot;item.id&quot;&gt;
  278. {{ item.title }}
  279. &lt;/li&gt;
  280. &lt;/ul&gt;
  281. </code></pre><p>v-for &#x5E94;&#x8BE5;&#x907F;&#x514D;&#x4E0E; v-if &#x5728;&#x540C;&#x4E00;&#x4E2A;&#x5143;&#x7D20;&#xFF08;<code>&#x4F8B;&#x5982;&#xFF1A;&lt;li&gt;</code>&#xFF09;&#x4E0A;&#x4F7F;&#x7528;&#xFF0C;&#x56E0;&#x4E3A; v-for &#x7684;&#x4F18;&#x5148;&#x7EA7;&#x6BD4; v-if &#x66F4;&#x9AD8;&#xFF0C;&#x4E3A;&#x4E86;&#x907F;&#x514D;&#x65E0;&#x6548;&#x8BA1;&#x7B97;&#x548C;&#x6E32;&#x67D3;&#xFF0C;&#x5E94;&#x8BE5;&#x5C3D;&#x91CF;&#x5C06; v-if &#x653E;&#x5230;&#x5BB9;&#x5668;&#x7684;&#x7236;&#x5143;&#x7D20;&#x4E4B;&#x4E0A;&#x3002;</p>
  282. <pre><code>&lt;ul v-if=&quot;showList&quot;&gt;
  283. &lt;li v-for=&quot;item in list&quot; :key=&quot;item.id&quot;&gt;
  284. {{ item.title }}
  285. &lt;/li&gt;
  286. &lt;/ul&gt;
  287. </code></pre><h5 id="5v-if--v-else-if--v-else">5.v-if / v-else-if / v-else</h5>
  288. <p>&#x82E5;&#x540C;&#x4E00;&#x7EC4; v-if &#x903B;&#x8F91;&#x63A7;&#x5236;&#x4E2D;&#x7684;&#x5143;&#x7D20;&#x903B;&#x8F91;&#x76F8;&#x540C;&#xFF0C;Vue &#x4E3A;&#x4E86;&#x66F4;&#x9AD8;&#x6548;&#x7684;&#x5143;&#x7D20;&#x5207;&#x6362;&#xFF0C;&#x4F1A;&#x590D;&#x7528;&#x76F8;&#x540C;&#x7684;&#x90E8;&#x5206;&#xFF0C;<code>&#x4F8B;&#x5982;&#xFF1A;value</code>&#x3002;&#x4E3A;&#x4E86;&#x907F;&#x514D;&#x590D;&#x7528;&#x5E26;&#x6765;&#x7684;&#x4E0D;&#x5408;&#x7406;&#x6548;&#x679C;&#xFF0C;&#x5E94;&#x8BE5;&#x5728;&#x540C;&#x79CD;&#x5143;&#x7D20;&#x4E0A;&#x52A0;&#x4E0A; key &#x505A;&#x6807;&#x8BC6;&#x3002;</p>
  289. <pre><code>&lt;div v-if=&quot;hasData&quot; key=&quot;mazey-data&quot;&gt;
  290. &lt;span&gt;{{ mazeyData }}&lt;/span&gt;
  291. &lt;/div&gt;
  292. &lt;div v-else key=&quot;mazey-none&quot;&gt;
  293. &lt;span&gt;&#x65E0;&#x6570;&#x636E;&lt;/span&gt;
  294. &lt;/div&gt;
  295. </code></pre><h5 id="6&#x6307;&#x4EE4;&#x7F29;&#x5199;">6.&#x6307;&#x4EE4;&#x7F29;&#x5199;</h5>
  296. <p>&#x4E3A;&#x4E86;&#x7EDF;&#x4E00;&#x89C4;&#x8303;&#x59CB;&#x7EC8;&#x4F7F;&#x7528;&#x6307;&#x4EE4;&#x7F29;&#x5199;&#xFF0C;&#x4F7F;&#x7528;<code>v-bind</code>&#xFF0C;<code>v-on</code>&#x5E76;&#x6CA1;&#x6709;&#x4EC0;&#x4E48;&#x4E0D;&#x597D;&#xFF0C;&#x8FD9;&#x91CC;&#x4EC5;&#x4E3A;&#x4E86;&#x7EDF;&#x4E00;&#x89C4;&#x8303;&#x3002;</p>
  297. <pre><code>&lt;input :value=&quot;mazeyUser&quot; @click=&quot;verifyUser&quot;&gt;
  298. </code></pre><h5 id="7&#x5355;&#x6587;&#x4EF6;&#x7EC4;&#x4EF6;&#x7684;&#x9876;&#x7EA7;&#x5143;&#x7D20;&#x987A;&#x5E8F;">7.&#x5355;&#x6587;&#x4EF6;&#x7EC4;&#x4EF6;&#x7684;&#x9876;&#x7EA7;&#x5143;&#x7D20;&#x987A;&#x5E8F;</h5>
  299. <p>&#x6837;&#x5F0F;&#x540E;&#x7EED;&#x90FD;&#x662F;&#x6253;&#x5305;&#x5728;&#x4E00;&#x4E2A;&#x6587;&#x4EF6;&#x91CC;&#xFF0C;&#x6240;&#x6709;&#x5728;&#x5355;&#x4E2A;vue&#x6587;&#x4EF6;&#x4E2D;&#x5B9A;&#x4E49;&#x7684;&#x6837;&#x5F0F;&#xFF0C;&#x5728;&#x522B;&#x7684;&#x6587;&#x4EF6;&#x91CC;&#x540C;&#x7C7B;&#x540D;&#x7684;&#x6837;&#x5F0F;&#x4E5F;&#x662F;&#x4F1A;&#x751F;&#x6548;&#x7684;&#x6240;&#x6709;&#x5728;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x7EC4;&#x4EF6;&#x524D;&#x90FD;&#x4F1A;&#x6709;&#x4E2A;&#x9876;&#x7EA7;&#x7C7B;&#x540D;
  300. &#x6CE8;&#x610F;&#xFF1A;&#x9879;&#x76EE;&#x5185;&#x5DF2;&#x7ECF;&#x589E;&#x52A0;&#x4E86;sass&#x63D2;&#x4EF6;&#xFF0C;&#x5355;&#x4E2A;vue&#x6587;&#x4EF6;&#x91CC;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x4E66;&#x5199;sass&#x8BED;&#x6CD5;
  301. &#x4E3A;&#x4E86;&#x7EDF;&#x4E00;&#x548C;&#x4FBF;&#x4E8E;&#x9605;&#x8BFB;&#xFF0C;&#x5E94;&#x8BE5;&#x6309; <code>&lt;template&gt;</code>&#x3001;<code>&lt;script&gt;</code>&#x3001;<code>&lt;style&gt;</code>&#x7684;&#x987A;&#x5E8F;&#x653E;&#x7F6E;&#x3002;</p>
  302. <pre><code>&lt;template&gt;
  303. &lt;div class=&quot;test-model&quot;&gt;
  304. test
  305. &lt;/div&gt;
  306. &lt;/template&gt;
  307. &lt;script&gt;
  308. export default {
  309. name: &quot;test&quot;,
  310. data() {
  311. return {}
  312. },
  313. props: {},
  314. methods: {},
  315. watch: {},
  316. beforeCreate() {
  317. },
  318. created() {
  319. },
  320. beforeMount() {
  321. },
  322. mounted() {
  323. },
  324. beforeUpdate() {
  325. },
  326. updated() {
  327. },
  328. beforeDestroy() {
  329. },
  330. destroyed() {
  331. },
  332. computed: {},
  333. components: {},
  334. }
  335. &lt;/script&gt;
  336. &lt;style lang=&quot;scss&quot; rel=&quot;stylesheet/scss&quot;&gt;
  337. .test-model {
  338. }
  339. &lt;/style&gt;
  340. </code></pre><h2 id="javascript&#x89C4;&#x8303;">JavaScript&#x89C4;&#x8303;</h2>
  341. <h5 id="1var--let--const">1.var / let / const</h5>
  342. <p>&#x5EFA;&#x8BAE;&#x4E0D;&#x518D;&#x4F7F;&#x7528; var&#xFF0C;&#x800C;&#x4F7F;&#x7528; let / const&#xFF0C;&#x4F18;&#x5148;&#x4F7F;&#x7528; const&#x3002;&#x4EFB;&#x4F55;&#x4E00;&#x4E2A;&#x53D8;&#x91CF;&#x7684;&#x4F7F;&#x7528;&#x90FD;&#x8981;&#x63D0;&#x524D;&#x7533;&#x660E;&#xFF0C;&#x9664;&#x4E86; function &#x5B9A;&#x4E49;&#x7684;&#x51FD;&#x6570;&#x53EF;&#x4EE5;&#x968F;&#x4FBF;&#x653E;&#x5728;&#x4EFB;&#x4F55;&#x4F4D;&#x7F6E;&#x3002;</p>
  343. <h5 id="2&#x5F15;&#x53F7;">2.&#x5F15;&#x53F7;</h5>
  344. <pre><code>const foo = &apos;&#x540E;&#x9664;&apos;
  345. const bar = `${foo}&#xFF0C;&#x524D;&#x7AEF;&#x5DE5;&#x7A0B;&#x5E08;`
  346. </code></pre><h5 id="3&#x51FD;&#x6570;">3.&#x51FD;&#x6570;</h5>
  347. <p>&#x533F;&#x540D;&#x51FD;&#x6570;&#x7EDF;&#x4E00;&#x4F7F;&#x7528;&#x7BAD;&#x5934;&#x51FD;&#x6570;&#xFF0C;&#x591A;&#x4E2A;&#x53C2;&#x6570;/&#x8FD4;&#x56DE;&#x503C;&#x65F6;&#x4F18;&#x5148;&#x4F7F;&#x7528;&#x5BF9;&#x8C61;&#x7684;&#x7ED3;&#x6784;&#x8D4B;&#x503C;&#x3002;</p>
  348. <pre><code>function getPersonInfo ({name, sex}) {
  349. // ...
  350. return {name, gender}
  351. }
  352. </code></pre><p>&#x51FD;&#x6570;&#x540D;&#x7EDF;&#x4E00;&#x4F7F;&#x7528;&#x9A7C;&#x5CF0;&#x547D;&#x540D;&#xFF0C;&#x4EE5;&#x5927;&#x5199;&#x5B57;&#x6BCD;&#x5F00;&#x5934;&#x7533;&#x660E;&#x7684;&#x90FD;&#x662F;&#x6784;&#x9020;&#x51FD;&#x6570;&#xFF0C;&#x4F7F;&#x7528;&#x5C0F;&#x5199;&#x5B57;&#x6BCD;&#x5F00;&#x5934;&#x7684;&#x90FD;&#x662F;&#x666E;&#x901A;&#x51FD;&#x6570;&#xFF0C;&#x4E5F;&#x4E0D;&#x8BE5;&#x4F7F;&#x7528; new &#x64CD;&#x4F5C;&#x7B26;&#x53BB;&#x64CD;&#x4F5C;&#x666E;&#x901A;&#x51FD;&#x6570;&#x3002;</p>
  353. <h5 id="4&#x5BF9;&#x8C61;">4.&#x5BF9;&#x8C61;</h5>
  354. <pre><code>const foo = {a: 0, b: 1}
  355. const bar = JSON.parse(JSON.stringify(foo))
  356. const foo = {a: 0, b: 1}
  357. const bar = {...foo, c: 2}
  358. const foo = {a: 3}
  359. Object.assign(foo, {b: 4})
  360. const myMap = new Map([])
  361. for (let [key, value] of myMap.entries()) {
  362. // ...
  363. }
  364. </code></pre><h5 id="5&#x6A21;&#x5757;">5.&#x6A21;&#x5757;</h5>
  365. <p>&#x7EDF;&#x4E00;&#x4F7F;&#x7528; import / export &#x7684;&#x65B9;&#x5F0F;&#x7BA1;&#x7406;&#x9879;&#x76EE;&#x7684;&#x6A21;&#x5757;&#x3002;</p>
  366. <pre><code>// lib.js
  367. export default {}
  368. // app.js
  369. import app from &apos;./lib&apos;
  370. </code></pre><p>import &#x7EDF;&#x4E00;&#x653E;&#x5728;&#x6587;&#x4EF6;&#x9876;&#x90E8;&#x3002;</p>
  371. <p>&#x5982;&#x679C;&#x6A21;&#x5757;&#x53EA;&#x6709;&#x4E00;&#x4E2A;&#x8F93;&#x51FA;&#x503C;&#xFF0C;&#x4F7F;&#x7528; <code>export default</code>&#xFF0C;&#x5426;&#x5219;&#x4E0D;&#x7528;&#x3002;</p>
  372. <h2 id="html--css">HTML / CSS</h2>
  373. <h6 id="1&#x6807;&#x7B7E;">1.&#x6807;&#x7B7E;</h6>
  374. <p>&#x5728;&#x5F15;&#x7528;&#x5916;&#x90E8; CSS &#x6216; JavaScript &#x65F6;&#x4E0D;&#x5199; type &#x5C5E;&#x6027;&#x3002;HTML5 &#x9ED8;&#x8BA4; type &#x4E3A; <code>text/css</code> &#x548C; <code>text/javascript</code> &#x5C5E;&#x6027;&#xFF0C;&#x6240;&#x4EE5;&#x6CA1;&#x5FC5;&#x8981;&#x6307;&#x5B9A;&#x3002;</p>
  375. <pre><code>&lt;link rel=&quot;stylesheet&quot; href=&quot;//www.test.com/css/test.css&quot;&gt;
  376. &lt;script src=&quot;//www.test.com/js/test.js&quot;&gt;&lt;/script&gt;
  377. </code></pre><h5 id="2&#x547D;&#x540D;">2.&#x547D;&#x540D;</h5>
  378. <p>Class &#x548C; ID &#x7684;&#x547D;&#x540D;&#x5E94;&#x8BE5;&#x8BED;&#x4E49;&#x5316;&#xFF0C;&#x901A;&#x8FC7;&#x770B;&#x540D;&#x5B57;&#x5C31;&#x77E5;&#x9053;&#x662F;&#x5E72;&#x561B;&#x7684;&#xFF1B;&#x591A;&#x4E2A;&#x5355;&#x8BCD;&#x7528;&#x8FDE;&#x63A5;&#x7EBF; - &#x8FDE;&#x63A5;&#x3002;</p>
  379. <pre><code>// &#x6B63;&#x4F8B;
  380. .test-header{
  381. font-size: 20px;
  382. }
  383. </code></pre><h5 id="3&#x5C5E;&#x6027;&#x7F29;&#x5199;">3.&#x5C5E;&#x6027;&#x7F29;&#x5199;</h5>
  384. <p>CSS &#x5C5E;&#x6027;&#x5C3D;&#x91CF;&#x4F7F;&#x7528;&#x7F29;&#x5199;&#xFF0C;&#x63D0;&#x9AD8;&#x4EE3;&#x7801;&#x7684;&#x6548;&#x7387;&#x548C;&#x65B9;&#x4FBF;&#x7406;&#x89E3;&#x3002;</p>
  385. <pre><code>// &#x53CD;&#x4F8B;
  386. border-width: 1px;
  387. border-style: solid;
  388. border-color: #ccc;
  389. // &#x6B63;&#x4F8B;
  390. border: 1px solid #ccc;
  391. </code></pre><h5 id="4&#x6587;&#x6863;&#x7C7B;&#x578B;">4.&#x6587;&#x6863;&#x7C7B;&#x578B;</h5>
  392. <p>&#x5E94;&#x8BE5;&#x603B;&#x662F;&#x4F7F;&#x7528; HTML5 &#x6807;&#x51C6;&#x3002;</p>
  393. <pre><code>&lt;!DOCTYPE html&gt;
  394. </code></pre><h5 id="5&#x6CE8;&#x91CA;">5.&#x6CE8;&#x91CA;</h5>
  395. <p>&#x5E94;&#x8BE5;&#x7ED9;&#x4E00;&#x4E2A;&#x6A21;&#x5757;&#x6587;&#x4EF6;&#x5199;&#x4E00;&#x4E2A;&#x533A;&#x5757;&#x6CE8;&#x91CA;&#x3002;</p>
  396. <pre><code>/**
  397. * @module mazey/api
  398. * @author Mazey &lt;mazey@mazey.net&gt;
  399. * @description test.
  400. * */
  401. </code></pre><h2 id="&#x63A5;&#x53E3;">&#x63A5;&#x53E3;</h2>
  402. <h5 id="&#x6240;&#x6709;&#x7684;&#x63A5;&#x53E3;&#x90FD;&#x4EE5;-promise-&#x5F62;&#x5F0F;&#x8FD4;&#x56DE;">&#x6240;&#x6709;&#x7684;&#x63A5;&#x53E3;&#x90FD;&#x4EE5; Promise &#x5F62;&#x5F0F;&#x8FD4;&#x56DE;</h5>
  403. <p>&#x6CE8;&#x610F;&#x975E;0&#x90FD;&#x4E3A;&#x9519;&#x8BEF;&#x8D70;catch</p>
  404. <pre><code>const test = () =&gt; {
  405. return new Promise((resolve, reject) =&gt; {
  406. resolve({
  407. a:1
  408. })
  409. })
  410. }
  411. // &#x8C03;&#x7528;
  412. test.then(res =&gt; {
  413. console.log(res)
  414. // {a:1}
  415. })
  416. </code></pre><p>&#x6B63;&#x5E38;&#x8FD4;&#x56DE;</p>
  417. <pre><code>{
  418. code:0,
  419. data:{}
  420. msg:&apos;&#x6210;&#x529F;&apos;
  421. }
  422. </code></pre><p>&#x9519;&#x8BEF;&#x8FD4;&#x56DE;</p>
  423. <pre><code>{
  424. code:10000,
  425. data:{}
  426. msg:&apos;&#x5931;&#x8D25;&apos;
  427. }
  428. </code></pre><h5 id="&#x76F8;&#x5173;&#x63A5;&#x53E3;&#x8DEF;&#x5F84;">&#x76F8;&#x5173;&#x63A5;&#x53E3;&#x8DEF;&#x5F84;</h5>
  429. <p>dag &#x76F8;&#x5173;&#x63A5;&#x53E3; <code>src/js/conf/home/store/dag/actions.js</code></p>
  430. <p>&#x6570;&#x636E;&#x6E90;&#x4E2D;&#x5FC3; &#x76F8;&#x5173;&#x63A5;&#x53E3; <code>src/js/conf/home/store/datasource/actions.js</code></p>
  431. <p>&#x9879;&#x76EE;&#x7BA1;&#x7406; &#x76F8;&#x5173;&#x63A5;&#x53E3; <code>src/js/conf/home/store/projects/actions.js</code></p>
  432. <p>&#x8D44;&#x6E90;&#x4E2D;&#x5FC3; &#x76F8;&#x5173;&#x63A5;&#x53E3; <code>src/js/conf/home/store/resource/actions.js</code></p>
  433. <p>&#x5B89;&#x5168;&#x4E2D;&#x5FC3; &#x76F8;&#x5173;&#x63A5;&#x53E3; <code>src/js/conf/home/store/security/actions.js</code></p>
  434. <p>&#x7528;&#x6237;&#x4E2D;&#x5FC3; &#x76F8;&#x5173;&#x63A5;&#x53E3; <code>src/js/conf/home/store/user/actions.js</code></p>
  435. <h2 id="&#x6269;&#x5C55;&#x5F00;&#x53D1;">&#x6269;&#x5C55;&#x5F00;&#x53D1;</h2>
  436. <h5 id="1&#x589E;&#x52A0;&#x8282;&#x70B9;">1.&#x589E;&#x52A0;&#x8282;&#x70B9;</h5>
  437. <p>(1) &#x5148;&#x5C06;&#x8282;&#x70B9;&#x7684;icon&#x5C0F;&#x56FE;&#x6807;&#x653E;&#x7F6E;<code>src/js/conf/home/pages/dag/img</code>&#x6587;&#x4EF6;&#x5939;&#x5185;&#xFF0C;&#x6CE8;&#x610F; <code>toolbar_${&#x540E;&#x53F0;&#x5B9A;&#x4E49;&#x7684;&#x8282;&#x70B9;&#x7684;&#x82F1;&#x6587;&#x540D;&#x79F0; &#x4F8B;&#x5982;:SHELL}.png</code>
  438. (2) &#x627E;&#x5230; <code>src/js/conf/home/pages/dag/_source/config.js</code> &#x91CC;&#x7684; <code>tasksType</code> &#x5BF9;&#x8C61;&#xFF0C;&#x5F80;&#x91CC;&#x589E;&#x52A0;</p>
  439. <pre><code>&apos;DEPENDENT&apos;: { // &#x540E;&#x53F0;&#x5B9A;&#x4E49;&#x8282;&#x70B9;&#x7C7B;&#x578B;&#x82F1;&#x6587;&#x540D;&#x79F0;&#x7528;&#x4F5C;key&#x503C;
  440. desc: &apos;DEPENDENT&apos;, // tooltip desc
  441. color: &apos;#2FBFD8&apos; // &#x4EE3;&#x8868;&#x7684;&#x989C;&#x8272;&#x4E3B;&#x8981;&#x7528;&#x4E8E; tree&#x548C;gantt &#x4E24;&#x5F20;&#x56FE;
  442. }
  443. </code></pre><p>(3) &#x5728; <code>src/js/conf/home/pages/dag/_source/formModel/tasks</code> &#x589E;&#x52A0;&#x4E00;&#x4E2A; <code>${&#x8282;&#x70B9;&#x7C7B;&#x578B;&#xFF08;&#x5C0F;&#x5199;&#xFF09;}</code>.vue &#x6587;&#x4EF6;&#xFF0C;&#x8DDF;&#x5F53;&#x524D;&#x8282;&#x70B9;&#x76F8;&#x5173;&#x7684;&#x7EC4;&#x4EF6;&#x5185;&#x5BB9;&#x90FD;&#x5728;&#x8FD9;&#x91CC;&#x5199;&#x3002; &#x5C5E;&#x4E8E;&#x8282;&#x70B9;&#x7EC4;&#x4EF6;&#x5185;&#x7684;&#x5FC5;&#x987B;&#x62E5;&#x6709;&#x4E00;&#x4E2A;&#x51FD;&#x6570; <code>_verification()</code> &#x9A8C;&#x8BC1;&#x6210;&#x529F;&#x540E;&#x8BB2;&#x5F53;&#x524D;&#x7EC4;&#x4EF6;&#x7684;&#x76F8;&#x5173;&#x6570;&#x636E;&#x5F80;&#x7236;&#x7EC4;&#x4EF6;&#x629B;&#x3002;</p>
  444. <pre><code>/**
  445. * &#x9A8C;&#x8BC1;
  446. */
  447. _verification () {
  448. // datasource &#x5B50;&#x7EC4;&#x4EF6;&#x9A8C;&#x8BC1;
  449. if (!this.$refs.refDs._verifDatasource()) {
  450. return false
  451. }
  452. // &#x9A8C;&#x8BC1;&#x51FD;&#x6570;
  453. if (!this.method) {
  454. this.$message.warning(`${i18n.$t(&apos;&#x8BF7;&#x8F93;&#x5165;&#x65B9;&#x6CD5;&apos;)}`)
  455. return false
  456. }
  457. // localParams &#x5B50;&#x7EC4;&#x4EF6;&#x9A8C;&#x8BC1;
  458. if (!this.$refs.refLocalParams._verifProp()) {
  459. return false
  460. }
  461. // &#x5B58;&#x50A8;
  462. this.$emit(&apos;on-params&apos;, {
  463. type: this.type,
  464. datasource: this.datasource,
  465. method: this.method,
  466. localParams: this.localParams
  467. })
  468. return true
  469. }
  470. </code></pre><p>(4) &#x8282;&#x70B9;&#x7EC4;&#x4EF6;&#x5185;&#x90E8;&#x6240;&#x7528;&#x5230;&#x516C;&#x5171;&#x7684;&#x7EC4;&#x4EF6;&#x90FD;&#x5728;<code>_source</code>&#x4E0B;&#xFF0C;<code>commcon.js</code>&#x7528;&#x4E0E;&#x914D;&#x7F6E;&#x516C;&#x5171;&#x6570;&#x636E;</p>
  471. <h5 id="2&#x589E;&#x52A0;&#x72B6;&#x6001;&#x7C7B;&#x578B;">2.&#x589E;&#x52A0;&#x72B6;&#x6001;&#x7C7B;&#x578B;</h5>
  472. <p>(1) &#x627E;&#x5230; <code>src/js/conf/home/pages/dag/_source/config.js</code> &#x91CC;&#x7684; <code>tasksState</code> &#x5BF9;&#x8C61;&#xFF0C;&#x5F80;&#x91CC;&#x589E;&#x52A0;</p>
  473. <pre><code>&apos;WAITTING_DEPEND&apos;: { //&#x540E;&#x7AEF;&#x5B9A;&#x4E49;&#x72B6;&#x6001;&#x7C7B;&#x578B; &#x524D;&#x7AEF;&#x7528;&#x4F5C;key&#x503C;
  474. id: 11, // &#x524D;&#x7AEF;&#x5B9A;&#x4E49;id &#x540E;&#x7EED;&#x7528;&#x4F5C;&#x6392;&#x5E8F;
  475. desc: `${i18n.$t(&apos;&#x7B49;&#x5F85;&#x4F9D;&#x8D56;&apos;)}`, // tooltip desc
  476. color: &apos;#5101be&apos;, // &#x4EE3;&#x8868;&#x7684;&#x989C;&#x8272;&#x4E3B;&#x8981;&#x7528;&#x4E8E; tree&#x548C;gantt &#x4E24;&#x5F20;&#x56FE;
  477. icoUnicode: &apos;&amp;#xe68c;&apos;, // &#x5B57;&#x4F53;&#x56FE;&#x6807;
  478. isSpin: false // &#x662F;&#x5426;&#x65CB;&#x8F6C;&#xFF08;&#x9700;&#x4EE3;&#x7801;&#x5224;&#x65AD;&#xFF09;
  479. }
  480. </code></pre><h5 id="3&#x589E;&#x52A0;&#x64CD;&#x4F5C;&#x680F;&#x5DE5;&#x5177;">3.&#x589E;&#x52A0;&#x64CD;&#x4F5C;&#x680F;&#x5DE5;&#x5177;</h5>
  481. <p>(1) &#x627E;&#x5230; <code>src/js/conf/home/pages/dag/_source/config.js</code> &#x91CC;&#x7684; <code>toolOper</code> &#x5BF9;&#x8C61;&#xFF0C;&#x5F80;&#x91CC;&#x589E;&#x52A0;</p>
  482. <pre><code>{
  483. code: &apos;pointer&apos;, // &#x5DE5;&#x5177;&#x6807;&#x8BC6;
  484. icon: &apos;&amp;#xe781;&apos;, // &#x5DE5;&#x5177;&#x56FE;&#x6807;
  485. disable: disable, // &#x662F;&#x5426;&#x7981;&#x7528;
  486. desc: `${i18n.$t(&apos;&#x62D6;&#x52A8;&#x8282;&#x70B9;&#x548C;&#x9009;&#x4E2D;&#x9879;&apos;)}` // tooltip desc
  487. }
  488. </code></pre><p>(2) &#x5DE5;&#x5177;&#x7C7B;&#x90FD;&#x4EE5;&#x4E00;&#x4E2A;&#x6784;&#x9020;&#x51FD;&#x6570;&#x8FD4;&#x56DE; <code>src/js/conf/home/pages/dag/_source/plugIn</code></p>
  489. <p><code>downChart.js</code> =&gt; dag &#x56FE;&#x7247;&#x4E0B;&#x8F7D;&#x5904;&#x7406; </p>
  490. <p><code>dragZoom.js</code> =&gt; &#x9F20;&#x6807;&#x7F29;&#x653E;&#x6548;&#x679C;&#x5904;&#x7406; </p>
  491. <p><code>jsPlumbHandle.js</code> =&gt; &#x62D6;&#x62FD;&#x7EBF;&#x6761;&#x5904;&#x7406; </p>
  492. <p><code>util.js</code> =&gt; &#x5C5E;&#x4E8E; <code>plugIn</code> &#x5DE5;&#x5177;&#x7C7B;</p>
  493. <p>&#x64CD;&#x4F5C;&#x5219;&#x5728; <code>src/js/conf/home/pages/dag/_source/dag.js</code> =&gt; <code>toolbarEvent</code> &#x4E8B;&#x4EF6;&#x4E2D;&#x5904;&#x7406;&#x3002;</p>
  494. <h5 id="3&#x589E;&#x52A0;&#x4E00;&#x4E2A;&#x8DEF;&#x7531;&#x9875;&#x9762;">3.&#x589E;&#x52A0;&#x4E00;&#x4E2A;&#x8DEF;&#x7531;&#x9875;&#x9762;</h5>
  495. <p>(1) &#x9996;&#x5148;&#x5728;&#x8DEF;&#x7531;&#x7BA1;&#x7406;&#x589E;&#x52A0;&#x4E00;&#x4E2A;&#x8DEF;&#x7531;&#x5730;&#x5740;<code>src/js/conf/home/router/index.js</code></p>
  496. <pre><code>{
  497. path: &apos;/test&apos;, // &#x8DEF;&#x7531;&#x5730;&#x5740;
  498. name: &apos;test&apos;, // &#x522B;&#x540D;
  499. component: resolve =&gt; require([&apos;../pages/test/index&apos;], resolve), // &#x8DEF;&#x7531;&#x5BF9;&#x5E94;&#x7EC4;&#x4EF6;&#x5165;&#x53E3;&#x6587;&#x4EF6;
  500. meta: {
  501. title: `${i18n.$t(&apos;test&apos;)} - EasyScheduler` // title &#x663E;&#x793A;
  502. }
  503. },
  504. </code></pre><p>(2) &#x5728;<code>src/js/conf/home/pages</code> &#x5EFA;&#x4E00;&#x4E2A; <code>test</code> &#x6587;&#x4EF6;&#x5939;&#xFF0C;&#x5728;&#x6587;&#x4EF6;&#x5939;&#x91CC;&#x5EFA;&#x4E00;&#x4E2A;<code>index.vue</code>&#x5165;&#x53E3;&#x6587;&#x4EF6;&#x3002;</p>
  505. <pre><code>&#x8FD9;&#x6837;&#x5C31;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x8BBF;&#x95EE; `http://localhost:8888/#/test`
  506. </code></pre><h5 id="4&#x589E;&#x52A0;&#x9884;&#x7F6E;&#x90AE;&#x7BB1;">4.&#x589E;&#x52A0;&#x9884;&#x7F6E;&#x90AE;&#x7BB1;</h5>
  507. <p>&#x627E;&#x5230;<code>src/lib/localData/email.js</code>&#x542F;&#x52A8;&#x548C;&#x5B9A;&#x65F6;&#x90AE;&#x7BB1;&#x5730;&#x5740;&#x8F93;&#x5165;&#x53EF;&#x4EE5;&#x81EA;&#x52A8;&#x4E0B;&#x62C9;&#x5339;&#x914D;&#x3002;</p>
  508. <pre><code>export default [&quot;test@analysys.com.cn&quot;,&quot;test1@analysys.com.cn&quot;,&quot;test3@analysys.com.cn&quot;]
  509. </code></pre><h5 id="5&#x6743;&#x9650;&#x7BA1;&#x7406;&#x53CA;disabled&#x72B6;&#x6001;&#x5904;&#x7406;">5.&#x6743;&#x9650;&#x7BA1;&#x7406;&#x53CA;disabled&#x72B6;&#x6001;&#x5904;&#x7406;</h5>
  510. <p>&#x6743;&#x9650;&#x6839;&#x636E;&#x540E;&#x7AEF;&#x63A5;&#x53E3;<code>getUserInfo</code>&#x63A5;&#x53E3;&#x7ED9;&#x51FA;<code>userType: &quot;ADMIN_USER/GENERAL_USER&quot;</code>&#x6743;&#x9650;&#x63A7;&#x5236;&#x9875;&#x9762;&#x64CD;&#x4F5C;&#x6309;&#x94AE;&#x662F;&#x5426;<code>disabled</code></p>
  511. <p>&#x5177;&#x4F53;&#x64CD;&#x4F5C;&#xFF1A;<code>src/js/module/permissions/index.js</code></p>
  512. <p>disabled&#x5904;&#x7406;&#xFF1A;<code>src/js/module/mixin/disabledState.js</code></p>
  513. </section>
  514. </div>
  515. <div class="search-results">
  516. <div class="has-results">
  517. <h1 class="search-results-title"><span class='search-results-count'></span> results matching "<span class='search-query'></span>"</h1>
  518. <ul class="search-results-list"></ul>
  519. </div>
  520. <div class="no-results">
  521. <h1 class="search-results-title">No results matching "<span class='search-query'></span>"</h1>
  522. </div>
  523. </div>
  524. </div>
  525. </div>
  526. </div>
  527. </div>
  528. <a href="frontend-deploy.html#问题" class="navigation navigation-prev " aria-label="Previous page: 问题">
  529. <i class="fa fa-angle-left"></i>
  530. </a>
  531. <a href="frontend-development.html#系统功能模块" class="navigation navigation-next " aria-label="Next page: 系统功能模块">
  532. <i class="fa fa-angle-right"></i>
  533. </a>
  534. </div>
  535. <script>
  536. var gitbook = gitbook || [];
  537. gitbook.push(function() {
  538. gitbook.page.hasChanged({"page":{"title":"项目目录结构","level":"1.2.6","depth":2,"next":{"title":"系统功能模块","level":"1.2.7","depth":2,"anchor":"#系统功能模块","path":"frontend-development.md","ref":"frontend-development.md#系统功能模块","articles":[]},"previous":{"title":"问题","level":"1.2.5","depth":2,"anchor":"#问题","path":"frontend-deploy.md","ref":"frontend-deploy.md#问题","articles":[]},"dir":"ltr"},"config":{"plugins":["expandable-chapters","insert-logo-link"],"styles":{"website":"./styles/website.css"},"pluginsConfig":{"insert-logo-link":{"src":"../images/logo.png","url":"/"},"expandable-chapters":{},"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"theme":"default","author":"YIGUAN","pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"variables":{},"title":"调度系统-EasyScheduler","language":"zh-hans","gitbook":"3.2.3","description":"调度系统"},"file":{"path":"frontend-development.md","mtime":"2019-03-27T10:41:58.990Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-03-28T11:15:13.750Z"},"basePath":".","book":{"language":""}});
  539. });
  540. </script>
  541. </div>
  542. <script src="gitbook/gitbook.js"></script>
  543. <script src="gitbook/theme.js"></script>
  544. <script src="gitbook/gitbook-plugin-expandable-chapters/expandable-chapters.js"></script>
  545. <script src="gitbook/gitbook-plugin-insert-logo-link/plugin.js"></script>
  546. <script src="gitbook/gitbook-plugin-search/search-engine.js"></script>
  547. <script src="gitbook/gitbook-plugin-search/search.js"></script>
  548. <script src="gitbook/gitbook-plugin-lunr/lunr.min.js"></script>
  549. <script src="gitbook/gitbook-plugin-lunr/search-lunr.js"></script>
  550. <script src="gitbook/gitbook-plugin-sharing/buttons.js"></script>
  551. <script src="gitbook/gitbook-plugin-fontsettings/fontsettings.js"></script>
  552. </body>
  553. </html>