Loading.....
23 |
24 |
26 |
27 |
--------------------------------------------------------------------------------
/ServiceHot/public/console/index.js:
--------------------------------------------------------------------------------
1 | const { useState, useEffect, useReducer, useRef } = React;
2 | const http = axios.create({
3 | baseURL: "http://localhost:8085/api/",
4 | timeout: 2000,
5 | });
6 | const VersionTypeList = (props) => {
7 | const { currentTypeList, toVersionList, setRouter } = props;
8 | const [type, setType] = useState("ANDROID");
9 |
10 | return (
11 |
12 |
13 |
21 |
22 |
30 |
38 |
39 | {currentTypeList
40 | .filter((it) => it.PLATFORM === type)
41 | .map((item, index) => {
42 | return (
43 |
44 |
{item.ID}
45 |
{item.MODULE}
46 |
{item.PLATFORM}
47 |
55 |
56 | );
57 | })}
58 |
59 | );
60 | };
61 |
62 | const VersionList = (props) => {
63 | const { versionList, setRouter, setActiveVersion } = props;
64 | const [type, setType] = useState("Staging");
65 |
66 | console.log('versionList',versionList);
67 |
68 | return (
69 |
70 |
71 |
79 |
87 |
95 |
96 | {versionList
97 | .filter((it) => it.TYPE === type)
98 | .map((item, index) => {
99 | return (
100 |
101 |
{item.MODULE}
102 |
{item.VERSION}
103 |
{item.FILE_PATH}
104 |
{item.FILENAME}
105 |
{ Boolean(item.IS_ACTIVE) && "Active" }
106 |
119 |
120 | );
121 | })}
122 |
123 | );
124 | };
125 |
126 | const AppList = (props) => {
127 | const { list, toTypeList } = props;
128 | return (
129 |
219 | );
220 | };
221 |
222 | // 创建模块
223 | const CreateModule = (props) => {
224 | const { create, currentApp } = props;
225 | const createModule = () => {
226 | const data = {
227 | module: document.forms["CreateModule"]["module"].value,
228 | platform: document.forms["CreateModule"]["platform"].value,
229 | app_id: currentApp.ID,
230 | };
231 | create(data);
232 | };
233 |
234 | return (
235 |
305 |
327 |
328 |
329 |
330 | {
334 | setState((old) => ({
335 | ...old,
336 | type: e.target.checked ? "Staging" : "Release",
337 | }));
338 | }}
339 | >
340 |
341 |
342 |
343 |
344 |
351 |
352 |
353 |
354 | );
355 | };
356 |
357 | const initAppInfo = {
358 | appList: [],
359 | currentTypeList: [],
360 | currentTypeVersionList: [],
361 |
362 | currentModule: {},
363 | currentApp: {},
364 | };
365 |
366 | const reducer = (prevState, action) => {
367 | const { type, state } = action;
368 | switch (type) {
369 | case "APP_LIST":
370 | return { ...prevState, appList: state };
371 | case "CURRENT_TYPE":
372 | return {
373 | ...prevState,
374 | currentTypeList: state,
375 | };
376 | case "CURRENT_TYPE_VERSION_LIST":
377 | return {
378 | ...prevState,
379 | currentTypeVersionList: state,
380 | };
381 | case "CURRENT_MODULE":
382 | return {
383 | ...prevState,
384 | currentModule: state,
385 | };
386 | case "CURRENT_APP":
387 | return {
388 | ...prevState,
389 | currentApp: state,
390 | };
391 | default:
392 | return { ...prevState };
393 | }
394 | };
395 |
396 | const App = () => {
397 | const [appStatus, dispatchDispatch] = useReducer(reducer, initAppInfo);
398 | const [router, setRouter] = useState("/home");
399 |
400 | useEffect(() => {
401 | init();
402 | }, []);
403 |
404 | const init = async () => {
405 | const value = await http.get("/app_list");
406 | dispatchDispatch({
407 | type: "APP_LIST",
408 | state: value.data.data,
409 | });
410 | };
411 |
412 | const routerChanger = (path) => {
413 | // path /home /versionTypeList /versionList
414 | setRouter(path);
415 | };
416 |
417 | const toTypeList = async (item) => {
418 | // const value = await http.get("/app_list");
419 | dispatchDispatch({
420 | type: "CURRENT_APP",
421 | state: item,
422 | });
423 | await loadModule(item.ID);
424 | routerChanger("/versionTypeList");
425 | };
426 |
427 | const toVersionList = async (item) => {
428 | dispatchDispatch({
429 | type: "CURRENT_MODULE",
430 | state: item,
431 | });
432 | await loadVersion(item.ID);
433 | routerChanger("/versionList");
434 | };
435 |
436 | // createApp
437 | const create = async (data) => {
438 | await http.post("/create_app", data);
439 | await await init();
440 | };
441 |
442 | const createModule = async (data) => {
443 | await http.post("/create_module", data);
444 | await loadModule()
445 | };
446 |
447 | const createVersion = async (data) => {
448 | await http.post("/create_version_info", data);
449 | await loadVersion()
450 | };
451 |
452 | const setActiveVersion = async (data) => {
453 | const { old_id, id } = data;
454 | await http.put(`/update_active_bundle`,data);
455 | await loadVersion()
456 | };
457 |
458 | const loadModule = async (id) => {
459 | const value = await http.get(
460 | `/module_list?id=${id || appStatus.currentApp.ID || 1}`
461 | );
462 | dispatchDispatch({
463 | type: "CURRENT_TYPE",
464 | state: value.data.data,
465 | });
466 | };
467 |
468 | const loadVersion = async (id) => {
469 | const value = await http.get(
470 | `/version_list?id=${id || appStatus.currentModule.ID || 1}`
471 | );
472 | dispatchDispatch({
473 | type: "CURRENT_TYPE_VERSION_LIST",
474 | state: value.data.data,
475 | });
476 | };
477 |
478 |
479 |
480 | return (
481 |
482 |
483 | {router === "/home" && "APP列表"}
484 | {router === "/versionTypeList" && "APP所有模块"}
485 | {router === "/versionList" && "APP模块Version列表"}
486 |
487 |
488 | {router === "/home" && (
489 |
495 | )}
496 |
497 | {router === "/versionTypeList" && (
498 |
503 | )}
504 | {router === "/versionList" && (
505 |
510 | )}
511 |
512 |
513 | {/* 创建APP / 上传文件 /创建新版本 */}
514 |
515 |
516 |
517 |
521 |
525 |
526 |
527 | );
528 | };
529 |
530 | // 挂载,
531 | ReactDOM.render(