You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by so...@apache.org on 2022/05/06 06:04:41 UTC

[dolphinscheduler] branch dev updated: [Feature] Remove old ui. (#9909)

This is an automated email from the ASF dual-hosted git repository.

songjian pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new 7a7807e520 [Feature] Remove old ui. (#9909)
7a7807e520 is described below

commit 7a7807e5208acd9abb3be264c10d3b369826c817
Author: songjianet <17...@qq.com>
AuthorDate: Fri May 6 14:04:35 2022 +0800

    [Feature] Remove old ui. (#9909)
    
    * [Feature] Remove old ui.
    
    * [Docs] Add license file for screenfull.
---
 .github/workflows/frontend.yml                     |    6 +-
 .github/workflows/unit-test.yml                    |    3 +-
 .gitignore                                         |    1 -
 .../development/development-environment-setup.md   |    4 +-
 .../development/development-environment-setup.md   |    4 +-
 dolphinscheduler-api/pom.xml                       |    2 +-
 .../main/assembly/dolphinscheduler-api-server.xml  |    2 +-
 dolphinscheduler-dist/pom.xml                      |    2 +-
 dolphinscheduler-dist/release-docs/LICENSE         |   49 +-
 .../LICENSE-@antv-layout                           |    0
 .../LICENSE-@antv-x6                               |    0
 .../ui-licenses/LICENSE-@form-create-element-ui    |   21 -
 .../LICENSE-@types-js-cookie                       |    0
 .../LICENSE-@types-lodash                          |    0
 .../LICENSE-@types-node                            |    0
 .../LICENSE-@types-nprogress                       |    0
 .../LICENSE-@types-qs                              |    0
 .../LICENSE-@typescript-eslint-eslint-plugin       |    0
 .../LICENSE-@typescript-eslint-parser              |    0
 .../LICENSE-@vitejs-plugin-vue                     |    0
 .../LICENSE-@vitejs-plugin-vue-jsx                 |    0
 .../LICENSE-@vueuse-core                           |    0
 .../licenses/ui-licenses/LICENSE-axios             |    2 +-
 .../licenses/ui-licenses/LICENSE-bootstrap         |   21 -
 .../licenses/ui-licenses/LICENSE-canvg             |   22 -
 .../licenses/ui-licenses/LICENSE-clipboard         |    8 -
 .../licenses/ui-licenses/LICENSE-codemirror        |   21 -
 .../release-docs/licenses/ui-licenses/LICENSE-d3   |   26 -
 .../licenses/ui-licenses/LICENSE-dagre             |   19 -
 .../LICENSE-dart-sass                              |    0
 .../LICENSE-date-fns                               |    0
 .../LICENSE-date-fns-tz                            |    0
 .../licenses/ui-licenses/LICENSE-dayjs             |   21 -
 .../licenses/ui-licenses/LICENSE-echarts           |   24 +-
 .../licenses/ui-licenses/LICENSE-element-ui        |   21 -
 .../LICENSE-eslint                                 |    0
 .../LICENSE-eslint-config-prettier                 |    0
 .../LICENSE-eslint-plugin-prettier                 |    0
 .../LICENSE-eslint-plugin-vue                      |    0
 .../LICENSE-fira-code                              |    0
 .../LICENSE-fira-sans                              |    0
 .../licenses/ui-licenses/LICENSE-html2canvas       |   22 -
 .../LICENSE-ibm-plex                               |    0
 .../LICENSE-inter                                  |    0
 .../licenses/ui-licenses/LICENSE-jquery            |   36 -
 .../licenses/ui-licenses/LICENSE-jquery-ui         |   43 -
 .../licenses/ui-licenses/LICENSE-js-cookie         |    2 +-
 .../licenses/ui-licenses/LICENSE-jsplumb           |  305 -----
 .../{ui-next-licenses => ui-licenses}/LICENSE-lato |    0
 .../licenses/ui-licenses/LICENSE-lodash            |    2 +
 .../licenses/ui-licenses/LICENSE-moment-timezone   |   20 -
 .../LICENSE-monaco-editor                          |    0
 .../LICENSE-naive-ui                               |    0
 .../LICENSE-nprogress                              |    0
 .../LICENSE-open-sans                              |    0
 .../LICENSE-pinia                                  |    0
 .../LICENSE-pinia-plugin-persistedstate            |    0
 .../LICENSE-prettier                               |    0
 .../{ui-next-licenses => ui-licenses}/LICENSE-qs   |    0
 .../licenses/ui-licenses/LICENSE-remixicon         |  201 ---
 .../LICENSE-roboto                                 |    0
 .../{ui-next-licenses => ui-licenses}/LICENSE-sass |    0
 .../LICENSE-sass-loader                            |    0
 .../LICENSE-screenfull                             |    0
 .../LICENSE-typescript                             |    0
 .../LICENSE-typescript-plugin-css-modules          |    0
 .../{ui-next-licenses => ui-licenses}/LICENSE-vite |    0
 .../LICENSE-vite-plugin-compression                |    0
 .../release-docs/licenses/ui-licenses/LICENSE-vue  |    2 +-
 .../LICENSE-vue-i18n                               |    0
 .../licenses/ui-licenses/LICENSE-vue-router        |    2 +-
 .../licenses/ui-licenses/LICENSE-vue-treeselect    |   20 -
 .../LICENSE-vue-tsc                                |    0
 .../release-docs/licenses/ui-licenses/LICENSE-vuex |   21 -
 .../licenses/ui-licenses/LICENSE-vuex-router-sync  |   21 -
 .../licenses/ui-next-licenses/LICENSE-axios        |   19 -
 .../licenses/ui-next-licenses/LICENSE-echarts      |  221 ----
 .../licenses/ui-next-licenses/LICENSE-js-cookie    |   21 -
 .../licenses/ui-next-licenses/LICENSE-lodash       |   49 -
 .../licenses/ui-next-licenses/LICENSE-vue          |   21 -
 .../licenses/ui-next-licenses/LICENSE-vue-router   |   21 -
 .../src/main/assembly/dolphinscheduler-bin.xml     |    2 +-
 .../src/main/assembly/dolphinscheduler-src.xml     |    3 -
 .../dolphinscheduler-standalone-server.xml         |    2 +-
 dolphinscheduler-ui-next/.eslintignore             |   18 -
 dolphinscheduler-ui-next/package.json              |   58 -
 dolphinscheduler-ui-next/pom.xml                   |   83 --
 dolphinscheduler-ui/.babelrc                       |   35 -
 dolphinscheduler-ui/.editorconfig                  |   35 -
 dolphinscheduler-ui/.env                           |   21 -
 .../.env.development                               |    0
 .../.env.production                                |    0
 dolphinscheduler-ui/.eslintignore                  |   25 +-
 .../.eslintrc.js                                   |    0
 dolphinscheduler-ui/.eslintrc.yml                  |   44 -
 .../.gitignore                                     |    0
 .../.prettierignore                                |    0
 .../.prettierrc.js                                 |    0
 .../README.md                                      |    0
 dolphinscheduler-ui/_test_/.babelrc                |    8 -
 dolphinscheduler-ui/_test_/Counter.spec.js         |   55 -
 dolphinscheduler-ui/_test_/package.json            |   43 -
 dolphinscheduler-ui/_test_/test.spec.js            |   34 -
 dolphinscheduler-ui/build/config.js                |  237 ----
 dolphinscheduler-ui/build/webpack.config.dev.js    |   95 --
 dolphinscheduler-ui/build/webpack.config.prod.js   |   73 --
 .../build/webpack.config.release.js                |   26 -
 dolphinscheduler-ui/favicon.png                    |  Bin 4286 -> 0 bytes
 .../index.html                                     |    0
 dolphinscheduler-ui/package.json                   |  151 +--
 .../pnpm-lock.yaml                                 |    0
 dolphinscheduler-ui/pom.xml                        |   30 +-
 .../public/favicon.ico                             |  Bin
 .../public/images/task-icons/conditions.png        |  Bin
 .../public/images/task-icons/conditions_hover.png  |  Bin
 .../public/images/task-icons/data_quality.png      |  Bin
 .../images/task-icons/data_quality_hover.png       |  Bin
 .../public/images/task-icons/datax.png             |  Bin
 .../public/images/task-icons/datax_hover.png       |  Bin
 .../public/images/task-icons/dependent.png         |  Bin
 .../public/images/task-icons/dependent_hover.png   |  Bin
 .../public/images/task-icons/emr.png               |  Bin
 .../public/images/task-icons/emr_hover.png         |  Bin
 .../public/images/task-icons/flink.png             |  Bin
 .../public/images/task-icons/flink_hover.png       |  Bin
 .../public/images/task-icons/http.png              |  Bin
 .../public/images/task-icons/http_hover.png        |  Bin
 .../public/images/task-icons/mr.png                |  Bin
 .../public/images/task-icons/mr_hover.png          |  Bin
 .../public/images/task-icons/pigeon.png            |  Bin
 .../public/images/task-icons/pigeon_hover.png      |  Bin
 .../public/images/task-icons/procedure.png         |  Bin
 .../public/images/task-icons/procedure_hover.png   |  Bin
 .../public/images/task-icons/python.png            |  Bin
 .../public/images/task-icons/python_hover.png      |  Bin
 .../public/images/task-icons/seatunnel.png         |  Bin
 .../public/images/task-icons/seatunnel_hover.png   |  Bin
 .../public/images/task-icons/shell.png             |  Bin
 .../public/images/task-icons/shell_hover.png       |  Bin
 .../public/images/task-icons/spark.png             |  Bin
 .../public/images/task-icons/spark_hover.png       |  Bin
 .../public/images/task-icons/sql.png               |  Bin
 .../public/images/task-icons/sql_hover.png         |  Bin
 .../public/images/task-icons/sqoop.png             |  Bin
 .../public/images/task-icons/sqoop_hover.png       |  Bin
 .../public/images/task-icons/sub_process.png       |  Bin
 .../public/images/task-icons/sub_process_hover.png |  Bin
 .../public/images/task-icons/switch.png            |  Bin
 .../public/images/task-icons/switch_hover.png      |  Bin
 .../public/images/task-icons/zeppelin.png          |  Bin
 .../public/images/task-icons/zeppelin_hover.png    |  Bin
 .../public/lodash.min.js                           |    0
 .../src/App.tsx                                    |    0
 .../src/assets/images/logo-dark.svg                |    0
 .../src/assets/images/logo-light.svg               |    0
 .../src/assets/styles/default.scss                 |    0
 .../src/common/column-width-config.ts              |    0
 .../src/common/common.ts                           |    0
 .../src/common/timezone.ts                         |    0
 .../src/common/types.ts                            |    0
 dolphinscheduler-ui/src/components/Counter.vue     |   53 -
 dolphinscheduler-ui/src/components/Message.vue     |   28 -
 .../src/components/button-link/index.module.scss   |    0
 .../src/components/button-link/index.tsx           |    0
 .../src/components/card/index.tsx                  |    0
 .../src/components/chart/index.ts                  |    0
 .../src/components/chart/modules/Bar.tsx           |    0
 .../src/components/chart/modules/Gauge.tsx         |    0
 .../src/components/chart/modules/Pie.tsx           |    0
 .../src/components/chart/modules/Tree.tsx          |    0
 .../src/components/chart/modules/types.ts          |    0
 .../src/components/crontab/common.ts               |    0
 .../src/components/crontab/index.module.scss       |    0
 .../src/components/crontab/index.tsx               |    0
 .../src/components/crontab/modules/day.tsx         |    0
 .../src/components/crontab/modules/time.tsx        |    0
 .../src/components/crontab/types.ts                |    0
 .../src/components/form/fields/checkbox.ts         |    0
 .../components/form/fields/custom-parameters.ts    |    0
 .../src/components/form/fields/get-field.ts        |    0
 .../src/components/form/fields/index.ts            |    0
 .../src/components/form/fields/input-number.ts     |    0
 .../src/components/form/fields/input.ts            |    0
 .../src/components/form/fields/monaco-editor.ts    |    0
 .../src/components/form/fields/multi-condition.ts  |    0
 .../src/components/form/fields/multi-input.ts      |    0
 .../src/components/form/fields/radio.ts            |    0
 .../src/components/form/fields/select.ts           |    0
 .../src/components/form/fields/switch.ts           |    0
 .../src/components/form/fields/tree-select.ts      |    0
 .../src/components/form/get-elements-by-json.ts    |    0
 .../src/components/form/index.tsx                  |    0
 .../src/components/form/types.ts                   |    0
 .../src/components/form/use-form.ts                |    0
 .../src/components/form/utils.ts                   |    0
 .../src/components/log-modal/index.tsx             |    0
 .../src/components/modal/index.module.scss         |    0
 .../src/components/modal/index.tsx                 |    0
 .../src/components/modal/types.ts                  |    0
 .../src/components/monaco-editor/index.tsx         |    0
 .../src/components/monaco-editor/types.ts          |    0
 .../src/components/result/index.tsx                |    0
 .../src/env.d.ts                                   |    0
 dolphinscheduler-ui/src/images/favicon.ico         |  Bin 4286 -> 0 bytes
 dolphinscheduler-ui/src/js/conf/home/App.vue       |   52 -
 dolphinscheduler-ui/src/js/conf/home/index.js      |   96 --
 .../conf/home/pages/dag/_source/canvas/canvas.scss |   73 --
 .../conf/home/pages/dag/_source/canvas/canvas.vue  |  821 -------------
 .../home/pages/dag/_source/canvas/contextMenu.scss |   42 -
 .../home/pages/dag/_source/canvas/contextMenu.vue  |  172 ---
 .../home/pages/dag/_source/canvas/draggableBox.vue |   50 -
 .../pages/dag/_source/canvas/edgeEditModel.vue     |  114 --
 .../pages/dag/_source/canvas/layoutConfigModal.vue |  115 --
 .../home/pages/dag/_source/canvas/menuItem.vue     |   42 -
 .../home/pages/dag/_source/canvas/nodeStatus.js    |   52 -
 .../home/pages/dag/_source/canvas/nodeStatus.scss  |   30 -
 .../home/pages/dag/_source/canvas/taskbar.scss     |  189 ---
 .../conf/home/pages/dag/_source/canvas/taskbar.vue |   74 --
 .../home/pages/dag/_source/canvas/toolbar.scss     |  127 --
 .../conf/home/pages/dag/_source/canvas/toolbar.vue |  269 ----
 .../home/pages/dag/_source/canvas/x6-helper.js     |  338 -----
 .../pages/dag/_source/canvas/x6-style-mixin.js     |  145 ---
 .../home/pages/dag/_source/canvas/x6-style.scss    |   33 -
 .../src/js/conf/home/pages/dag/_source/config.js   |  353 ------
 .../src/js/conf/home/pages/dag/_source/dag.scss    |   33 -
 .../src/js/conf/home/pages/dag/_source/dag.vue     |  718 -----------
 .../_source/formModel/_source/dependentTimeout.vue |  249 ----
 .../formModel/_source/referenceFromTask.vue        |  232 ----
 .../formModel/_source/relatedEnvironment.vue       |  118 --
 .../dag/_source/formModel/_source/selectInput.vue  |  130 --
 .../dag/_source/formModel/_source/taskGroups.vue   |   86 --
 .../dag/_source/formModel/_source/timeoutAlarm.vue |  144 ---
 .../dag/_source/formModel/_source/workerGroups.vue |   76 --
 .../pages/dag/_source/formModel/formLineModel.vue  |  116 --
 .../pages/dag/_source/formModel/formModel.scss     |  168 ---
 .../home/pages/dag/_source/formModel/formModel.vue | 1204 ------------------
 .../conf/home/pages/dag/_source/formModel/log.vue  |  375 ------
 .../dag/_source/formModel/tasks/_source/commcon.js |  267 ----
 .../_source/formModel/tasks/_source/datasource.vue |  169 ---
 .../formModel/tasks/_source/dependItemList.vue     |  364 ------
 .../_source/formModel/tasks/_source/httpParams.vue |  248 ----
 .../_source/formModel/tasks/_source/jsonBox.vue    |  119 --
 .../_source/formModel/tasks/_source/list4Box.vue   |   68 --
 .../_source/formModel/tasks/_source/listBox.vue    |   60 -
 .../formModel/tasks/_source/localParams.vue        |  252 ----
 .../_source/formModel/tasks/_source/nodeStatus.vue |  226 ----
 .../formModel/tasks/_source/resourceTree.js        |   44 -
 .../_source/formModel/tasks/_source/resources.vue  |  124 --
 .../_source/formModel/tasks/_source/scriptBox.vue  |  118 --
 .../_source/formModel/tasks/_source/sqlType.vue    |   73 --
 .../formModel/tasks/_source/statementList.vue      |  161 ---
 .../dag/_source/formModel/tasks/_source/udfs.vue   |  136 ---
 .../formModel/tasks/_source/warningGroups.vue      |   76 --
 .../dag/_source/formModel/tasks/conditions.vue     |  277 -----
 .../dag/_source/formModel/tasks/dataquality.vue    |  621 ----------
 .../pages/dag/_source/formModel/tasks/datax.vue    |  528 --------
 .../dag/_source/formModel/tasks/dependent.vue      |  315 -----
 .../pages/dag/_source/formModel/tasks/flink.vue    |  589 ---------
 .../pages/dag/_source/formModel/tasks/http.vue     |  259 ----
 .../home/pages/dag/_source/formModel/tasks/mr.vue  |  437 -------
 .../pages/dag/_source/formModel/tasks/pigeon.vue   |  225 ----
 .../dag/_source/formModel/tasks/pre_tasks.vue      |  130 --
 .../dag/_source/formModel/tasks/procedure.vue      |  168 ---
 .../pages/dag/_source/formModel/tasks/python.vue   |  349 ------
 .../dag/_source/formModel/tasks/seatunnel.vue      |  389 ------
 .../pages/dag/_source/formModel/tasks/shell.vue    |  361 ------
 .../pages/dag/_source/formModel/tasks/spark.vue    |  609 ---------
 .../home/pages/dag/_source/formModel/tasks/sql.vue |  441 -------
 .../pages/dag/_source/formModel/tasks/sqoop.vue    | 1292 --------------------
 .../dag/_source/formModel/tasks/sub_process.vue    |  140 ---
 .../pages/dag/_source/formModel/tasks/switch.vue   |  226 ----
 .../pages/dag/_source/images/full-screen-close.png |  Bin 463 -> 0 bytes
 .../dag/_source/images/full-screen-close_hover.png |  Bin 652 -> 0 bytes
 .../pages/dag/_source/images/full-screen-open.png  |  Bin 575 -> 0 bytes
 .../dag/_source/images/full-screen-open_hover.png  |  Bin 575 -> 0 bytes
 .../home/pages/dag/_source/images/graph-format.png |  Bin 458 -> 0 bytes
 .../dag/_source/images/graph-format_hover.png      |  Bin 461 -> 0 bytes
 .../pages/dag/_source/images/startup-params.png    |  Bin 903 -> 0 bytes
 .../dag/_source/images/startup-params_hover.png    |  Bin 903 -> 0 bytes
 .../dag/_source/images/task-icos/conditions.png    |  Bin 812 -> 0 bytes
 .../_source/images/task-icos/conditions_hover.png  |  Bin 736 -> 0 bytes
 .../dag/_source/images/task-icos/data_quality.png  |  Bin 1086 -> 0 bytes
 .../images/task-icos/data_quality_hover.png        |  Bin 1054 -> 0 bytes
 .../pages/dag/_source/images/task-icos/datax.png   |  Bin 1122 -> 0 bytes
 .../dag/_source/images/task-icos/datax_hover.png   |  Bin 1127 -> 0 bytes
 .../dag/_source/images/task-icos/dependent.png     |  Bin 743 -> 0 bytes
 .../_source/images/task-icos/dependent_hover.png   |  Bin 745 -> 0 bytes
 .../pages/dag/_source/images/task-icos/flink.png   |  Bin 1443 -> 0 bytes
 .../dag/_source/images/task-icos/flink_hover.png   |  Bin 1348 -> 0 bytes
 .../pages/dag/_source/images/task-icos/http.png    |  Bin 707 -> 0 bytes
 .../dag/_source/images/task-icos/http_hover.png    |  Bin 709 -> 0 bytes
 .../home/pages/dag/_source/images/task-icos/mr.png |  Bin 930 -> 0 bytes
 .../dag/_source/images/task-icos/mr_hover.png      |  Bin 862 -> 0 bytes
 .../pages/dag/_source/images/task-icos/pigeon.png  |  Bin 1192 -> 0 bytes
 .../dag/_source/images/task-icos/pigeon_hover.png  |  Bin 1167 -> 0 bytes
 .../dag/_source/images/task-icos/procedure.png     |  Bin 1555 -> 0 bytes
 .../_source/images/task-icos/procedure_hover.png   |  Bin 1436 -> 0 bytes
 .../pages/dag/_source/images/task-icos/python.png  |  Bin 1618 -> 0 bytes
 .../dag/_source/images/task-icos/python_hover.png  |  Bin 1233 -> 0 bytes
 .../dag/_source/images/task-icos/seatunnel.png     |  Bin 1086 -> 0 bytes
 .../_source/images/task-icos/seatunnel_hover.png   |  Bin 1054 -> 0 bytes
 .../pages/dag/_source/images/task-icos/shell.png   |  Bin 747 -> 0 bytes
 .../dag/_source/images/task-icos/shell_hover.png   |  Bin 745 -> 0 bytes
 .../pages/dag/_source/images/task-icos/spark.png   |  Bin 1067 -> 0 bytes
 .../dag/_source/images/task-icos/spark_hover.png   |  Bin 1066 -> 0 bytes
 .../pages/dag/_source/images/task-icos/sql.png     |  Bin 1317 -> 0 bytes
 .../dag/_source/images/task-icos/sql_hover.png     |  Bin 1262 -> 0 bytes
 .../pages/dag/_source/images/task-icos/sqoop.png   |  Bin 896 -> 0 bytes
 .../dag/_source/images/task-icos/sqoop_hover.png   |  Bin 897 -> 0 bytes
 .../dag/_source/images/task-icos/sub_process.png   |  Bin 692 -> 0 bytes
 .../_source/images/task-icos/sub_process_hover.png |  Bin 693 -> 0 bytes
 .../pages/dag/_source/images/task-icos/switch.png  |  Bin 885 -> 0 bytes
 .../dag/_source/images/task-icos/switch_hover.png  |  Bin 825 -> 0 bytes
 .../pages/dag/_source/images/view-variables.png    |  Bin 858 -> 0 bytes
 .../dag/_source/images/view-variables_hover.png    |  Bin 858 -> 0 bytes
 .../home/pages/dag/_source/jumpAffirm/index.js     |  105 --
 .../pages/dag/_source/jumpAffirm/jumpAffirm.vue    |   55 -
 .../js/conf/home/pages/dag/_source/loading.scss    |   26 -
 .../home/pages/dag/_source/startingParam/index.vue |  134 --
 .../pages/dag/_source/udp/_source/selectTenant.vue |   91 --
 .../src/js/conf/home/pages/dag/_source/udp/udp.vue |  360 ------
 .../conf/home/pages/dag/_source/variable/index.vue |   50 -
 .../pages/dag/_source/variable/variablesView.vue   |  184 ---
 .../js/conf/home/pages/dag/definitionDetails.vue   |  109 --
 .../src/js/conf/home/pages/dag/img/dag_bg.png      |  Bin 5101 -> 0 bytes
 .../conf/home/pages/dag/img/toolbar_CONDITIONS.png |  Bin 1367 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_DATAX.png   |  Bin 571 -> 0 bytes
 .../home/pages/dag/img/toolbar_DATA_QUALITY.png    |  Bin 960 -> 0 bytes
 .../conf/home/pages/dag/img/toolbar_DEPENDENT.png  |  Bin 2896 -> 0 bytes
 .../src/js/conf/home/pages/dag/img/toolbar_ETL.png |  Bin 3117 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_FLINK.png   |  Bin 2058 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_HTTP.png    |  Bin 386 -> 0 bytes
 .../src/js/conf/home/pages/dag/img/toolbar_MR.png  |  Bin 3675 -> 0 bytes
 .../conf/home/pages/dag/img/toolbar_PROCEDURE.png  |  Bin 3464 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_PYTHON.png  |  Bin 3554 -> 0 bytes
 .../conf/home/pages/dag/img/toolbar_SEATUNNEL.png  |  Bin 1675 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_SHELL.png   |  Bin 3297 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_SPARK.png   |  Bin 4188 -> 0 bytes
 .../src/js/conf/home/pages/dag/img/toolbar_SQL.png |  Bin 3014 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_SQOOP.png   |  Bin 1157 -> 0 bytes
 .../home/pages/dag/img/toolbar_SUB_PROCESS.png     |  Bin 2377 -> 0 bytes
 .../js/conf/home/pages/dag/img/toolbar_SWITCH.png  |  Bin 2987 -> 0 bytes
 .../src/js/conf/home/pages/dag/img/toolbar_TIS.svg |   46 -
 .../src/js/conf/home/pages/dag/index.vue           |   87 --
 .../src/js/conf/home/pages/dag/instanceDetails.vue |  116 --
 .../conf/home/pages/dataquality/_source/common.js  |  125 --
 .../dataquality/_source/conditions/result.vue      |  138 ---
 .../pages/dataquality/_source/conditions/rule.vue  |   63 -
 .../src/js/conf/home/pages/dataquality/index.vue   |   31 -
 .../dataquality/pages/result/_source/list.vue      |  133 --
 .../home/pages/dataquality/pages/result/index.vue  |  182 ---
 .../pages/dataquality/pages/rule/_source/list.vue  |  100 --
 .../home/pages/dataquality/pages/rule/index.vue    |  176 ---
 .../src/js/conf/home/pages/datasource/index.vue    |   24 -
 .../pages/list/_source/createDataSource.vue        |  600 ---------
 .../pages/datasource/pages/list/_source/list.vue   |  135 --
 .../home/pages/datasource/pages/list/index.vue     |  163 ---
 .../src/js/conf/home/pages/home/index.vue          |   30 -
 .../src/js/conf/home/pages/monitor/index.vue       |   33 -
 .../pages/_source/conditions/audit/auditLog.vue    |  127 --
 .../pages/_source/conditions/audit/common.js       |   60 -
 .../monitor/pages/_source/conditions/index.vue     |   24 -
 .../home/pages/monitor/pages/log/_source/list.vue  |   72 --
 .../js/conf/home/pages/monitor/pages/log/index.vue |  157 ---
 .../pages/monitor/pages/servers/_source/gauge.vue  |   79 --
 .../monitor/pages/servers/_source/gaugeOption.js   |  140 ---
 .../pages/servers/_source/zookeeperDirectories.vue |   93 --
 .../pages/servers/_source/zookeeperList.vue        |   74 --
 .../home/pages/monitor/pages/servers/alert.vue     |   65 -
 .../home/pages/monitor/pages/servers/apiserver.vue |   50 -
 .../conf/home/pages/monitor/pages/servers/db.vue   |  136 ---
 .../home/pages/monitor/pages/servers/master.vue    |  123 --
 .../home/pages/monitor/pages/servers/rpcserver.vue |   56 -
 .../home/pages/monitor/pages/servers/servers.scss  |  134 --
 .../pages/monitor/pages/servers/statistics.vue     |  131 --
 .../home/pages/monitor/pages/servers/worker.vue    |  128 --
 .../src/js/conf/home/pages/projects/index.vue      |   73 --
 .../projects/pages/_source/conditions/index.vue    |   24 -
 .../pages/_source/conditions/instance/common.js    |   77 --
 .../conditions/instance/processInstance.vue        |  124 --
 .../_source/conditions/instance/taskInstance.vue   |  128 --
 .../_source/taskRecordList/_source/conditions.vue  |  151 ---
 .../pages/_source/taskRecordList/_source/list.vue  |   91 --
 .../pages/_source/taskRecordList/index.vue         |  123 --
 .../home/pages/projects/pages/definition/index.vue |   24 -
 .../pages/definition/pages/create/index.vue        |   26 -
 .../pages/definition/pages/details/index.vue       |   26 -
 .../pages/definition/pages/list/_source/email.vue  |  378 ------
 .../pages/definition/pages/list/_source/list.vue   |  542 --------
 .../definition/pages/list/_source/relatedItems.vue |   97 --
 .../pages/definition/pages/list/_source/start.vue  |  437 -------
 .../pages/definition/pages/list/_source/timing.vue |  440 -------
 .../pages/definition/pages/list/_source/util.js    |   60 -
 .../definition/pages/list/_source/versions.vue     |  206 ----
 .../projects/pages/definition/pages/list/index.vue |  184 ---
 .../pages/definition/pages/tree/_source/tree.js    |  293 -----
 .../pages/definition/pages/tree/_source/util.js    |   72 --
 .../pages/definition/pages/tree/img/dag_bg.png     |  Bin 5101 -> 0 bytes
 .../projects/pages/definition/pages/tree/index.vue |  270 ----
 .../pages/definition/timing/_source/list.vue       |  255 ----
 .../projects/pages/definition/timing/index.vue     |   43 -
 .../projects/pages/historyTaskRecord/index.vue     |   34 -
 .../projects/pages/index/_source/chartConfig.js    |   98 --
 .../pages/index/_source/defineUserCount.vue        |   88 --
 .../pages/index/_source/processStateCount.vue      |  144 ---
 .../pages/index/_source/taskStatusCount.vue        |  141 ---
 .../conf/home/pages/projects/pages/index/index.vue |  146 ---
 .../home/pages/projects/pages/instance/index.vue   |   24 -
 .../pages/instance/pages/details/index.vue         |   29 -
 .../pages/instance/pages/gantt/_source/gantt.js    |  182 ---
 .../pages/instance/pages/gantt/img/dag_bg.png      |  Bin 5101 -> 0 bytes
 .../projects/pages/instance/pages/gantt/index.vue  |  178 ---
 .../pages/instance/pages/list/_source/list.vue     |  496 --------
 .../projects/pages/instance/pages/list/index.vue   |  228 ----
 .../projects/pages/kinship/_source/graphGrid.vue   |   74 --
 .../pages/kinship/_source/graphGridOption.js       |  154 ---
 .../projects/pages/kinship/_source/img/dag_bg.png  |  Bin 5101 -> 0 bytes
 .../home/pages/projects/pages/kinship/index.vue    |  169 ---
 .../projects/pages/list/_source/createProject.vue  |  141 ---
 .../pages/projects/pages/list/_source/list.vue     |  141 ---
 .../conf/home/pages/projects/pages/list/index.vue  |  142 ---
 .../projects/pages/taskDefinition/_source/list.vue |  277 -----
 .../taskDefinition/_source/taskDeleteModal.vue     |   91 --
 .../pages/taskDefinition/_source/taskMoveModel.vue |  107 --
 .../pages/taskDefinition/_source/versions.vue      |  253 ----
 .../pages/projects/pages/taskDefinition/index.vue  |  542 --------
 .../projects/pages/taskInstance/_source/list.vue   |  173 ---
 .../pages/projects/pages/taskInstance/index.vue    |  212 ----
 .../home/pages/projects/pages/taskRecord/index.vue |   34 -
 .../home/pages/projects/pages/timing/index.vue     |   31 -
 .../src/js/conf/home/pages/resource/index.vue      |   31 -
 .../conf/home/pages/resource/pages/file/index.vue  |   26 -
 .../pages/file/pages/_source/codemirror.js         |   37 -
 .../resource/pages/file/pages/_source/common.js    |   23 -
 .../resource/pages/file/pages/create/index.vue     |  196 ---
 .../pages/file/pages/createFolder/index.vue        |  128 --
 .../pages/file/pages/createUdfFolder/index.vue     |  125 --
 .../file/pages/details/_source/down_error.png      |  Bin 6390 -> 0 bytes
 .../pages/file/pages/details/_source/noType.vue    |   38 -
 .../pages/file/pages/details/_source/utils.js      |   37 -
 .../resource/pages/file/pages/details/index.vue    |  259 ----
 .../pages/resource/pages/file/pages/edit/index.vue |  236 ----
 .../pages/file/pages/list/_source/list.vue         |  193 ---
 .../pages/file/pages/list/_source/rename.vue       |  122 --
 .../pages/resource/pages/file/pages/list/index.vue |  150 ---
 .../resource/pages/file/pages/subFile/index.vue    |  197 ---
 .../pages/file/pages/subFileFolder/index.vue       |  127 --
 .../pages/file/pages/subdirectory/_source/list.vue |  201 ---
 .../file/pages/subdirectory/_source/rename.vue     |  122 --
 .../pages/file/pages/subdirectory/index.vue        |  191 ---
 .../home/pages/resource/pages/taskGroups/index.vue |   24 -
 .../taskGroupOption/_source/createTaskGroup.vue    |  202 ---
 .../taskGroups/taskGroupOption/_source/list.vue    |  135 --
 .../pages/taskGroups/taskGroupOption/index.vue     |  176 ---
 .../taskGroups/taskGroupQueue/_source/list.vue     |  154 ---
 .../pages/taskGroups/taskGroupQueue/index.vue      |  212 ----
 .../conf/home/pages/resource/pages/udf/index.vue   |   24 -
 .../pages/udf/pages/createUdfFolder/index.vue      |  126 --
 .../pages/udf/pages/function/_source/createUdf.vue |  325 -----
 .../pages/udf/pages/function/_source/list.vue      |  135 --
 .../resource/pages/udf/pages/function/index.vue    |  151 ---
 .../pages/udf/pages/resource/_source/list.vue      |  171 ---
 .../pages/udf/pages/resource/_source/rename.vue    |  123 --
 .../resource/pages/udf/pages/resource/index.vue    |  146 ---
 .../udf/pages/subUdfDirectory/_source/list.vue     |  169 ---
 .../udf/pages/subUdfDirectory/_source/rename.vue   |  123 --
 .../pages/udf/pages/subUdfDirectory/index.vue      |  192 ---
 .../pages/udf/pages/subUdfFolder/index.vue         |  125 --
 .../src/js/conf/home/pages/security/index.vue      |   31 -
 .../environment/_source/createEnvironment.vue      |  228 ----
 .../security/pages/environment/_source/list.vue    |  115 --
 .../pages/security/pages/environment/index.vue     |  163 ---
 .../pages/namespace/_source/createNamespace.vue    |  204 ----
 .../security/pages/namespace/_source/list.vue      |  108 --
 .../home/pages/security/pages/namespace/index.vue  |  160 ---
 .../security/pages/queue/_source/createQueue.vue   |  160 ---
 .../pages/security/pages/queue/_source/list.vue    |   91 --
 .../conf/home/pages/security/pages/queue/index.vue |  160 ---
 .../pages/tenement/_source/createTenement.vue      |  179 ---
 .../pages/security/pages/tenement/_source/list.vue |  109 --
 .../home/pages/security/pages/tenement/index.vue   |  162 ---
 .../conf/home/pages/security/pages/token/index.vue |   28 -
 .../security/pages/users/_source/createUser.vue    |  355 ------
 .../pages/security/pages/users/_source/list.vue    |  455 -------
 .../conf/home/pages/security/pages/users/index.vue |  161 ---
 .../pages/warningGroups/_source/createWarning.vue  |  156 ---
 .../security/pages/warningGroups/_source/list.vue  |  180 ---
 .../pages/security/pages/warningGroups/index.vue   |  168 ---
 .../_source/createWarningInstance.vue              |  207 ----
 .../pages/warningInstance/_source/list.vue         |  108 --
 .../pages/security/pages/warningInstance/index.vue |  169 ---
 .../pages/workerGroups/_source/createWorker.vue    |  127 --
 .../security/pages/workerGroups/_source/list.vue   |  106 --
 .../pages/security/pages/workerGroups/index.vue    |  160 ---
 .../src/js/conf/home/pages/user/index.vue          |   32 -
 .../home/pages/user/pages/account/_source/info.vue |  148 ---
 .../conf/home/pages/user/pages/account/index.vue   |   34 -
 .../pages/user/pages/password/_source/info.vue     |  139 ---
 .../conf/home/pages/user/pages/password/index.vue  |   34 -
 .../pages/user/pages/token/_source/createToken.vue |  191 ---
 .../home/pages/user/pages/token/_source/list.vue   |  108 --
 .../js/conf/home/pages/user/pages/token/index.vue  |  163 ---
 .../src/js/conf/home/router/index.js               |   65 -
 .../src/js/conf/home/router/module/dataquality.js  |   52 -
 .../src/js/conf/home/router/module/datasource.js   |   44 -
 .../src/js/conf/home/router/module/home.js         |   33 -
 .../src/js/conf/home/router/module/monitor.js      |  109 --
 .../src/js/conf/home/router/module/projects.js     |  221 ----
 .../src/js/conf/home/router/module/resource.js     |  189 ---
 .../src/js/conf/home/router/module/security.js     |  110 --
 .../src/js/conf/home/router/module/user.js         |   60 -
 .../src/js/conf/home/store/dag/actions.js          | 1087 ----------------
 .../src/js/conf/home/store/dag/getters.js          |   19 -
 .../src/js/conf/home/store/dag/index.js            |   30 -
 .../src/js/conf/home/store/dag/mutations.js        |  174 ---
 .../src/js/conf/home/store/dag/state.js            |  132 --
 .../src/js/conf/home/store/dataquality/actions.js  |   47 -
 .../src/js/conf/home/store/dataquality/getters.js  |   18 -
 .../src/js/conf/home/store/dataquality/index.js    |   29 -
 .../js/conf/home/store/dataquality/mutations.js    |   19 -
 .../src/js/conf/home/store/dataquality/state.js    |   18 -
 .../src/js/conf/home/store/datasource/actions.js   |  135 --
 .../src/js/conf/home/store/datasource/getters.js   |   19 -
 .../src/js/conf/home/store/datasource/index.js     |   30 -
 .../src/js/conf/home/store/datasource/mutations.js |   19 -
 .../src/js/conf/home/store/datasource/state.js     |   20 -
 .../src/js/conf/home/store/index.js                |   41 -
 .../src/js/conf/home/store/kinship/actions.js      |  126 --
 .../src/js/conf/home/store/kinship/getters.js      |   19 -
 .../src/js/conf/home/store/kinship/index.js        |   30 -
 .../src/js/conf/home/store/kinship/mutations.js    |   17 -
 .../src/js/conf/home/store/kinship/state.js        |   23 -
 .../src/js/conf/home/store/monitor/actions.js      |   48 -
 .../src/js/conf/home/store/monitor/getters.js      |   19 -
 .../src/js/conf/home/store/monitor/index.js        |   30 -
 .../src/js/conf/home/store/monitor/mutations.js    |   19 -
 .../src/js/conf/home/store/monitor/state.js        |   18 -
 .../src/js/conf/home/store/projects/actions.js     |  153 ---
 .../src/js/conf/home/store/projects/getters.js     |   19 -
 .../src/js/conf/home/store/projects/index.js       |   29 -
 .../src/js/conf/home/store/projects/mutations.js   |   25 -
 .../src/js/conf/home/store/projects/state.js       |   19 -
 .../src/js/conf/home/store/resource/actions.js     |  305 -----
 .../src/js/conf/home/store/resource/getters.js     |   18 -
 .../src/js/conf/home/store/resource/index.js       |   29 -
 .../src/js/conf/home/store/resource/mutations.js   |   19 -
 .../src/js/conf/home/store/resource/state.js       |   18 -
 .../src/js/conf/home/store/security/actions.js     |  777 ------------
 .../src/js/conf/home/store/security/getters.js     |   19 -
 .../src/js/conf/home/store/security/index.js       |   29 -
 .../src/js/conf/home/store/security/mutations.js   |   19 -
 .../src/js/conf/home/store/security/state.js       |   22 -
 .../src/js/conf/home/store/user/actions.js         |  123 --
 .../src/js/conf/home/store/user/getters.js         |   19 -
 .../src/js/conf/home/store/user/index.js           |   30 -
 .../src/js/conf/home/store/user/mutations.js       |   25 -
 .../src/js/conf/home/store/user/state.js           |   19 -
 dolphinscheduler-ui/src/js/conf/login/App.vue      |  204 ----
 .../src/js/conf/login/img/login-logo.svg           |   99 --
 dolphinscheduler-ui/src/js/conf/login/index.js     |   59 -
 .../src/js/module/ana-charts/common.js             |   77 --
 .../src/js/module/ana-charts/index.js              |   78 --
 .../src/js/module/ana-charts/packages/bar/index.js |  326 -----
 .../src/js/module/ana-charts/packages/base.js      |   76 --
 .../js/module/ana-charts/packages/funnel/index.js  |  144 ---
 .../js/module/ana-charts/packages/line/index.js    |  204 ----
 .../src/js/module/ana-charts/packages/pie/index.js |  121 --
 .../js/module/ana-charts/packages/radar/index.js   |  129 --
 .../js/module/ana-charts/packages/scatter/index.js |  149 ---
 dolphinscheduler-ui/src/js/module/axios/index.js   |  183 ---
 dolphinscheduler-ui/src/js/module/axios/jsonp.js   |  120 --
 .../src/js/module/axios/querystring.js             |   61 -
 .../js/module/components/conditions/conditions.vue |   87 --
 .../src/js/module/components/crontab/index.js      |   22 -
 .../crontab/source/_source/i18n/config.js          |   39 -
 .../crontab/source/_source/i18n/index.js           |   27 -
 .../crontab/source/_source/i18n/locale/en_US.js    |   76 --
 .../crontab/source/_source/i18n/locale/zh_CN.js    |   76 --
 .../components/crontab/source/_source/i18n/util.js |   50 -
 .../crontab/source/_source/input-number.vue        |  121 --
 .../components/crontab/source/_times/day.vue       |  526 --------
 .../components/crontab/source/_times/hour.vue      |  263 ----
 .../components/crontab/source/_times/minute.vue    |  264 ----
 .../components/crontab/source/_times/month.vue     |  263 ----
 .../components/crontab/source/_times/second.vue    |  271 ----
 .../components/crontab/source/_times/year.vue      |  262 ----
 .../js/module/components/crontab/source/app.vue    |  206 ----
 .../js/module/components/crontab/source/index.scss |   46 -
 .../module/components/crontab/source/util/index.js |  213 ----
 .../components/fileUpdate/definitionUpdate.vue     |  289 -----
 .../components/fileUpdate/fileChildReUpdate.vue    |  348 ------
 .../components/fileUpdate/fileChildUpdate.vue      |  329 -----
 .../module/components/fileUpdate/fileReUpload.vue  |  348 ------
 .../js/module/components/fileUpdate/fileUpdate.vue |  327 -----
 .../components/fileUpdate/resourceChildUpdate.vue  |  329 -----
 .../js/module/components/fileUpdate/udfUpdate.vue  |  209 ----
 .../src/js/module/components/layout/layout.vue     |   53 -
 .../src/js/module/components/listBoxF/listBoxF.vue |   75 --
 .../listConstruction/listConstruction.vue          |   46 -
 .../src/js/module/components/nav/logo.svg          |   99 --
 .../src/js/module/components/nav/nav.vue           |  659 ----------
 .../module/components/noData/images/errorTip.png   |  Bin 4187 -> 0 bytes
 .../src/js/module/components/noData/noData.vue     |   57 -
 .../src/js/module/components/popup/popover.vue     |  105 --
 .../src/js/module/components/popup/popup.vue       |  104 --
 .../src/js/module/components/priority/priority.vue |  140 ---
 .../module/components/progressBar/progressBar.vue  |   83 --
 .../components/secondaryMenu/_source/close.png     |  Bin 550 -> 0 bytes
 .../components/secondaryMenu/_source/menu.js       |  345 ------
 .../components/secondaryMenu/_source/open.png      |  Bin 586 -> 0 bytes
 .../components/secondaryMenu/secondaryMenu.vue     |  216 ----
 .../src/js/module/components/spin/spin.vue         |   80 --
 .../components/tooltipsJSON/tooltipsJSON.vue       |   61 -
 .../src/js/module/components/transfer/resource.vue |  312 -----
 .../src/js/module/components/transfer/transfer.vue |  212 ----
 .../src/js/module/download/index.js                |   46 -
 .../src/js/module/echarts/themeData.json           |  494 --------
 dolphinscheduler-ui/src/js/module/filter/filter.js |   54 -
 .../src/js/module/filter/filterNull.js             |   24 -
 .../src/js/module/filter/formatDate.js             |   24 -
 dolphinscheduler-ui/src/js/module/i18n/config.js   |   42 -
 dolphinscheduler-ui/src/js/module/i18n/index.js    |   74 --
 .../src/js/module/i18n/locale/en_US.js             |  918 --------------
 .../src/js/module/i18n/locale/zh_CN.js             |  918 --------------
 dolphinscheduler-ui/src/js/module/io/index.js      |   99 --
 .../src/js/module/mixin/disabledState.js           |   37 -
 .../src/js/module/mixin/listUrlParamHandle.js      |   55 -
 .../src/js/module/permissions/index.js             |   64 -
 .../src/js/module/util/clickoutside.js             |   47 -
 dolphinscheduler-ui/src/js/module/util/index.js    |   93 --
 .../src/js/module/util/localStorage.js             |   84 --
 .../src/js/module/util/routerUtil.js               |   24 -
 dolphinscheduler-ui/src/js/module/util/util.js     |   76 --
 .../src/js/module/visibility/index.js              |   70 --
 .../content/components/locales/index.module.scss   |    0
 .../layouts/content/components/locales/index.tsx   |    0
 .../content/components/locales/use-dropdown.ts     |    0
 .../content/components/logo/index.module.scss      |    0
 .../src/layouts/content/components/logo/index.tsx  |    0
 .../content/components/navbar/index.module.scss    |    0
 .../layouts/content/components/navbar/index.tsx    |    0
 .../layouts/content/components/sidebar/index.tsx   |    0
 .../content/components/sidebar/use-menuClick.ts    |    0
 .../content/components/theme/index.module.scss     |    0
 .../src/layouts/content/components/theme/index.tsx |    0
 .../content/components/timezone/index.module.scss  |    0
 .../layouts/content/components/timezone/index.tsx  |    0
 .../content/components/timezone/use-dropdown.ts    |    0
 .../content/components/user/index.module.scss      |    0
 .../src/layouts/content/components/user/index.tsx  |    0
 .../content/components/user/use-dropdown.ts        |    0
 .../src/layouts/content/index.tsx                  |    0
 .../src/layouts/content/use-dataList.ts            |    0
 dolphinscheduler-ui/src/lib/external/config.js     |   25 -
 dolphinscheduler-ui/src/lib/external/email.js      |   17 -
 .../src/locales/index.ts                           |    0
 .../src/locales/modules/en_US.ts                   |    0
 .../src/locales/modules/zh_CN.ts                   |    0
 .../src/main.ts                                    |    0
 .../src/router/index.ts                            |    0
 .../src/router/modules/data-quality.ts             |    0
 .../src/router/modules/datasource.ts               |    0
 .../src/router/modules/monitor.ts                  |    0
 .../src/router/modules/projects.ts                 |    0
 .../src/router/modules/resources.ts                |    0
 .../src/router/modules/security.ts                 |    0
 .../src/router/routes.ts                           |    0
 .../src/sass/common/_scrollbar.scss                |   43 -
 dolphinscheduler-ui/src/sass/common/_table.scss    |  181 ---
 dolphinscheduler-ui/src/sass/common/index.scss     |  370 ------
 dolphinscheduler-ui/src/sass/conf/home/index.scss  |  100 --
 dolphinscheduler-ui/src/sass/conf/login/index.scss |   90 --
 .../src/service/modules/alert-group/index.ts       |    0
 .../src/service/modules/alert-group/types.ts       |    0
 .../src/service/modules/alert-plugin/index.ts      |    0
 .../src/service/modules/alert-plugin/types.ts      |    0
 .../src/service/modules/audit/index.ts             |    0
 .../src/service/modules/audit/types.ts             |    0
 .../src/service/modules/data-quality/index.ts      |    0
 .../src/service/modules/data-quality/types.ts      |    0
 .../src/service/modules/data-source/index.ts       |    0
 .../src/service/modules/data-source/types.ts       |    0
 .../src/service/modules/environment/index.ts       |    0
 .../src/service/modules/environment/types.ts       |    0
 .../src/service/modules/executors/index.ts         |    0
 .../src/service/modules/executors/types.ts         |    0
 .../src/service/modules/k8s-namespace/index.ts     |    0
 .../src/service/modules/k8s-namespace/types.ts     |    0
 .../src/service/modules/lineages/index.ts          |    0
 .../src/service/modules/lineages/types.ts          |    0
 .../src/service/modules/log/index.ts               |    0
 .../src/service/modules/log/types.ts               |    0
 .../src/service/modules/login/index.ts             |    0
 .../src/service/modules/login/types.ts             |    0
 .../src/service/modules/logout/index.ts            |    0
 .../src/service/modules/logout/types.ts            |    0
 .../src/service/modules/monitor/index.ts           |    0
 .../src/service/modules/monitor/types.ts           |    0
 .../service/modules/process-definition/index.ts    |    0
 .../service/modules/process-definition/types.ts    |    0
 .../src/service/modules/process-instances/index.ts |    0
 .../src/service/modules/process-instances/types.ts |    0
 .../service/modules/process-task-relation/index.ts |    0
 .../service/modules/process-task-relation/types.ts |    0
 .../src/service/modules/projects-analysis/index.ts |    0
 .../src/service/modules/projects-analysis/types.ts |    0
 .../src/service/modules/projects/index.ts          |    0
 .../src/service/modules/projects/types.ts          |    0
 .../src/service/modules/queues/index.ts            |    0
 .../src/service/modules/queues/types.ts            |    0
 .../src/service/modules/resources/index.ts         |    0
 .../src/service/modules/resources/types.ts         |    0
 .../src/service/modules/schedules/index.ts         |    0
 .../src/service/modules/schedules/types.ts         |    0
 .../src/service/modules/task-definition/index.ts   |    0
 .../src/service/modules/task-definition/types.ts   |    0
 .../src/service/modules/task-group/index.ts        |    0
 .../src/service/modules/task-group/types.ts        |    0
 .../src/service/modules/task-instances/index.ts    |    0
 .../src/service/modules/task-instances/types.ts    |    0
 .../src/service/modules/tenants/index.ts           |    0
 .../src/service/modules/tenants/types.ts           |    0
 .../src/service/modules/token/index.ts             |    0
 .../src/service/modules/token/types.ts             |    0
 .../src/service/modules/ui-plugins/index.ts        |    0
 .../src/service/modules/ui-plugins/types.ts        |    0
 .../src/service/modules/users/index.ts             |    0
 .../src/service/modules/users/types.ts             |    0
 .../src/service/modules/worker-groups/index.ts     |    0
 .../src/service/modules/worker-groups/types.ts     |    0
 .../src/service/service.ts                         |    2 +-
 .../src/store/file/file.ts                         |    0
 .../src/store/file/types.ts                        |    0
 .../src/store/locales/locales.ts                   |    0
 .../src/store/locales/types.ts                     |    0
 .../src/store/project/task-node.ts                 |    0
 .../src/store/project/types.ts                     |    0
 .../src/store/route/route.ts                       |    0
 .../src/store/route/types.ts                       |    0
 .../src/store/theme/theme.ts                       |    0
 .../src/store/theme/types.ts                       |    0
 .../src/store/timezone/timezone.ts                 |    0
 .../src/store/timezone/types.ts                    |    0
 .../src/store/user/types.ts                        |    0
 .../src/store/user/user.ts                         |    0
 .../src/themes/index.ts                            |    0
 .../src/themes/modules/dark.ts                     |    0
 .../src/themes/modules/light.ts                    |    0
 .../src/utils/clipboard.ts                         |    0
 .../src/utils/downloadFile.ts                      |    0
 .../src/utils/index.ts                             |    0
 .../src/utils/json.ts                              |    0
 .../src/utils/log.ts                               |    0
 .../src/utils/mapping.ts                           |    0
 .../src/utils/regex.ts                             |    0
 .../src/utils/tree-format.ts                       |    0
 .../src/utils/truncate-text.ts                     |    0
 dolphinscheduler-ui/src/view/home/index.html       |   51 -
 dolphinscheduler-ui/src/view/login/index.html      |   41 -
 .../data-quality/rule/components/rule-modal.tsx    |    0
 .../data-quality/rule/components/table-action.tsx  |    0
 .../src/views/data-quality/rule/index.module.scss  |    0
 .../src/views/data-quality/rule/index.tsx          |    0
 .../src/views/data-quality/rule/use-table.ts       |    0
 .../data-quality/task-result/index.module.scss     |    0
 .../src/views/data-quality/task-result/index.tsx   |    0
 .../views/data-quality/task-result/use-table.ts    |    0
 .../src/views/datasource/list/detail.tsx           |    0
 .../src/views/datasource/list/index.module.scss    |    0
 .../src/views/datasource/list/index.tsx            |    0
 .../datasource/list/json-highlight.module.scss     |    0
 .../src/views/datasource/list/json-highlight.tsx   |    0
 .../src/views/datasource/list/types.ts             |    0
 .../src/views/datasource/list/use-columns.ts       |    0
 .../src/views/datasource/list/use-detail.ts        |    0
 .../src/views/datasource/list/use-form.ts          |    0
 .../src/views/datasource/list/use-table.ts         |    0
 .../src/views/home/components/definition-card.tsx  |    0
 .../src/views/home/components/state-card.tsx       |    0
 .../src/views/home/index.tsx                       |    0
 .../src/views/home/types.ts                        |    0
 .../src/views/home/use-process-definition.ts       |    0
 .../src/views/home/use-process-state.ts            |    0
 .../src/views/home/use-table.ts                    |    0
 .../src/views/home/use-task-state.ts               |    0
 .../src/views/login/index.module.scss              |    0
 .../src/views/login/index.tsx                      |    0
 .../src/views/login/use-form.ts                    |    0
 .../src/views/login/use-login.ts                   |    0
 .../src/views/login/use-translate.ts               |    0
 .../src/views/monitor/servers/db/index.module.scss |    0
 .../src/views/monitor/servers/db/index.tsx         |    0
 .../src/views/monitor/servers/db/use-database.ts   |    0
 .../views/monitor/servers/master/index.module.scss |    0
 .../src/views/monitor/servers/master/index.tsx     |    0
 .../views/monitor/servers/master/master-modal.tsx  |    0
 .../src/views/monitor/servers/master/use-master.ts |    0
 .../views/monitor/servers/worker/index.module.scss |    0
 .../src/views/monitor/servers/worker/index.tsx     |    0
 .../src/views/monitor/servers/worker/use-worker.ts |    0
 .../views/monitor/servers/worker/worker-modal.tsx  |    0
 .../monitor/statistics/audit-log/index.module.scss |    0
 .../views/monitor/statistics/audit-log/index.tsx   |    0
 .../monitor/statistics/audit-log/use-table.ts      |    0
 .../statistics/statistics/index.module.scss        |    0
 .../views/monitor/statistics/statistics/index.tsx  |    0
 .../statistics/statistics/use-statistics.ts        |    0
 .../src/views/password/index.tsx                   |    0
 .../src/views/password/use-form.ts                 |    0
 .../src/views/password/use-update.ts               |    0
 .../src/views/profile/components/info.tsx          |    0
 .../src/views/profile/index.tsx                    |    0
 .../src/views/profile/info.module.scss             |    0
 .../src/views/profile/types.ts                     |    0
 .../src/views/profile/use-form.ts                  |    0
 .../src/views/profile/use-profile.ts               |    0
 .../src/views/profile/use-update.ts                |    0
 .../src/views/profile/use-userinfo.ts              |    0
 .../projects/list/components/project-modal.tsx     |    0
 .../src/views/projects/list/components/use-form.ts |    0
 .../src/views/projects/list/index.module.scss      |    0
 .../src/views/projects/list/index.tsx              |    0
 .../src/views/projects/list/use-table.ts           |    0
 .../overview/components/definition-card.tsx        |    0
 .../projects/overview/components/state-card.tsx    |    0
 .../src/views/projects/overview/index.tsx          |    0
 .../src/views/projects/overview/types.ts           |    0
 .../projects/overview/use-process-definition.ts    |    0
 .../views/projects/overview/use-process-state.ts   |    0
 .../src/views/projects/overview/use-table.ts       |    0
 .../src/views/projects/overview/use-task-state.ts  |    0
 .../projects/task/components/node/detail-modal.tsx |    0
 .../views/projects/task/components/node/detail.tsx |    0
 .../projects/task/components/node/fields/index.ts  |    0
 .../task/components/node/fields/use-child-node.ts  |    0
 .../task/components/node/fields/use-conditions.ts  |    0
 .../components/node/fields/use-custom-params.ts    |    0
 .../task/components/node/fields/use-datasource.ts  |    0
 .../task/components/node/fields/use-datax.ts       |    0
 .../task/components/node/fields/use-delay-time.ts  |    0
 .../node/fields/use-dependent-timeout.ts           |    0
 .../task/components/node/fields/use-dependent.ts   |    0
 .../task/components/node/fields/use-deploy-mode.ts |    0
 .../task/components/node/fields/use-description.ts |    0
 .../components/node/fields/use-driver-cores.ts     |    0
 .../components/node/fields/use-driver-memory.ts    |    0
 .../task/components/node/fields/use-emr.ts         |    0
 .../components/node/fields/use-environment-name.ts |    0
 .../components/node/fields/use-executor-cores.ts   |    0
 .../components/node/fields/use-executor-memory.ts  |    0
 .../components/node/fields/use-executor-number.ts  |    0
 .../task/components/node/fields/use-failed.ts      |    0
 .../task/components/node/fields/use-flink.ts       |    0
 .../task/components/node/fields/use-http.ts        |    0
 .../task/components/node/fields/use-main-jar.ts    |    0
 .../projects/task/components/node/fields/use-mr.ts |    0
 .../task/components/node/fields/use-name.ts        |    0
 .../task/components/node/fields/use-pre-tasks.ts   |    0
 .../task/components/node/fields/use-procedure.ts   |    0
 .../components/node/fields/use-process-name.ts     |    0
 .../node/fields/use-relation-custom-params.ts      |    0
 .../task/components/node/fields/use-resources.ts   |    0
 .../task/components/node/fields/use-rules.ts       |    0
 .../task/components/node/fields/use-run-flag.ts    |    0
 .../task/components/node/fields/use-sea-tunnel.ts  |    0
 .../task/components/node/fields/use-shell.ts       |    0
 .../task/components/node/fields/use-spark.ts       |    0
 .../task/components/node/fields/use-sql-type.ts    |    0
 .../task/components/node/fields/use-sql.ts         |    0
 .../components/node/fields/use-sqoop-datasource.ts |    0
 .../node/fields/use-sqoop-source-type.ts           |    0
 .../node/fields/use-sqoop-target-type.ts           |    0
 .../task/components/node/fields/use-sqoop.ts       |    0
 .../task/components/node/fields/use-switch.ts      |    0
 .../components/node/fields/use-target-task-name.ts |    0
 .../task/components/node/fields/use-task-group.ts  |    0
 .../components/node/fields/use-task-priority.ts    |    0
 .../task/components/node/fields/use-task-type.ts   |    0
 .../components/node/fields/use-timeout-alarm.ts    |    0
 .../task/components/node/fields/use-udfs.ts        |    0
 .../components/node/fields/use-worker-group.ts     |    0
 .../task/components/node/fields/use-zeppelin.ts    |    0
 .../projects/task/components/node/format-data.ts   |    0
 .../task/components/node/index.module.scss         |    0
 .../projects/task/components/node/tasks/index.ts   |    0
 .../task/components/node/tasks/use-conditions.ts   |    0
 .../task/components/node/tasks/use-data-quality.ts |    0
 .../task/components/node/tasks/use-datax.ts        |    0
 .../task/components/node/tasks/use-dependent.ts    |    0
 .../projects/task/components/node/tasks/use-emr.ts |    0
 .../task/components/node/tasks/use-flink.ts        |    0
 .../task/components/node/tasks/use-http.ts         |    0
 .../projects/task/components/node/tasks/use-mr.ts  |    0
 .../task/components/node/tasks/use-pigeon.ts       |    0
 .../task/components/node/tasks/use-procedure.ts    |    0
 .../task/components/node/tasks/use-python.ts       |    0
 .../task/components/node/tasks/use-sea-tunnel.ts   |    0
 .../task/components/node/tasks/use-shell.ts        |    0
 .../task/components/node/tasks/use-spark.ts        |    0
 .../projects/task/components/node/tasks/use-sql.ts |    0
 .../task/components/node/tasks/use-sqoop.ts        |    0
 .../task/components/node/tasks/use-sub-process.ts  |    0
 .../task/components/node/tasks/use-switch.ts       |    0
 .../task/components/node/tasks/use-zeppelin.ts     |    0
 .../views/projects/task/components/node/types.ts   |    0
 .../projects/task/components/node/use-task.ts      |    0
 .../src/views/projects/task/constants/task-type.ts |    0
 .../task/definition/components/move-modal.tsx      |    0
 .../task/definition/components/use-move.ts         |    0
 .../task/definition/components/use-version.ts      |    0
 .../task/definition/components/version-modal.tsx   |    0
 .../task/definition/components/version.module.scss |    0
 .../projects/task/definition/index.module.scss     |    0
 .../src/views/projects/task/definition/index.tsx   |    0
 .../src/views/projects/task/definition/types.ts    |    0
 .../views/projects/task/definition/use-table.ts    |    0
 .../src/views/projects/task/definition/use-task.ts |    0
 .../views/projects/task/instance/index.module.scss |    0
 .../src/views/projects/task/instance/index.tsx     |    0
 .../src/views/projects/task/instance/types.ts      |    0
 .../src/views/projects/task/instance/use-table.ts  |    0
 .../components/dag/dag-auto-layout-modal.tsx       |    0
 .../workflow/components/dag/dag-canvas.tsx         |    0
 .../projects/workflow/components/dag/dag-config.ts |    0
 .../workflow/components/dag/dag-context-menu.tsx   |    0
 .../projects/workflow/components/dag/dag-hooks.ts  |    0
 .../workflow/components/dag/dag-node-status.tsx    |    0
 .../workflow/components/dag/dag-save-modal.tsx     |    0
 .../workflow/components/dag/dag-sidebar.tsx        |    0
 .../workflow/components/dag/dag-startup-param.tsx  |    0
 .../workflow/components/dag/dag-toolbar.tsx        |    0
 .../workflow/components/dag/dag.module.scss        |    0
 .../projects/workflow/components/dag/index.tsx     |    0
 .../workflow/components/dag/menu.module.scss       |    0
 .../workflow/components/dag/startup.module.scss    |    0
 .../workflow/components/dag/status.module.scss     |    0
 .../projects/workflow/components/dag/types.ts      |    0
 .../workflow/components/dag/use-business-mapper.ts |    0
 .../workflow/components/dag/use-canvas-init.ts     |    0
 .../workflow/components/dag/use-cell-active.ts     |    0
 .../workflow/components/dag/use-cell-update.ts     |    0
 .../components/dag/use-custom-cell-builder.ts      |    0
 .../workflow/components/dag/use-dag-drag-drop.ts   |    0
 .../components/dag/use-graph-auto-layout.ts        |    0
 .../workflow/components/dag/use-graph-backfill.ts  |    0
 .../workflow/components/dag/use-node-menu.ts       |    0
 .../workflow/components/dag/use-node-search.ts     |    0
 .../workflow/components/dag/use-node-status.ts     |    0
 .../workflow/components/dag/use-task-edit.ts       |    0
 .../workflow/components/dag/use-text-copy.ts       |    0
 .../projects/workflow/components/dag/x6-style.scss |    0
 .../workflow/definition/components/copy-modal.tsx  |    0
 .../definition/components/import-modal.tsx         |    0
 .../workflow/definition/components/start-modal.tsx |    0
 .../definition/components/table-action.tsx         |    0
 .../definition/components/timing-modal.tsx         |    0
 .../workflow/definition/components/types.ts        |    0
 .../workflow/definition/components/use-form.ts     |    0
 .../workflow/definition/components/use-modal.ts    |    0
 .../workflow/definition/components/use-table.ts    |    0
 .../definition/components/version-modal.tsx        |    0
 .../workflow/definition/create/index.module.scss   |    0
 .../projects/workflow/definition/create/index.tsx  |    0
 .../workflow/definition/detail/index.module.scss   |    0
 .../projects/workflow/definition/detail/index.tsx  |    0
 .../projects/workflow/definition/index.module.scss |    0
 .../views/projects/workflow/definition/index.tsx   |    0
 .../projects/workflow/definition/timing/index.tsx  |    0
 .../projects/workflow/definition/timing/types.ts   |    0
 .../workflow/definition/timing/use-table.ts        |    0
 .../workflow/definition/tree/index.module.scss     |    0
 .../projects/workflow/definition/tree/index.tsx    |    0
 .../projects/workflow/definition/tree/types.ts     |    0
 .../projects/workflow/definition/tree/use-tree.tsx |    0
 .../views/projects/workflow/definition/types.ts    |    0
 .../projects/workflow/definition/use-table.ts      |    0
 .../components/process-instance-condition.tsx      |    0
 .../workflow/instance/components/table-action.tsx  |    0
 .../instance/components/variables-view.tsx         |    0
 .../instance/components/variables.module.scss      |    0
 .../workflow/instance/detail/index.module.scss     |    0
 .../projects/workflow/instance/detail/index.tsx    |    0
 .../instance/gantt/components/gantt-chart.tsx      |    0
 .../projects/workflow/instance/gantt/index.tsx     |    0
 .../views/projects/workflow/instance/gantt/type.ts |    0
 .../projects/workflow/instance/gantt/use-gantt.ts  |    0
 .../projects/workflow/instance/index.module.scss   |    0
 .../src/views/projects/workflow/instance/index.tsx |    0
 .../src/views/projects/workflow/instance/types.ts  |    0
 .../views/projects/workflow/instance/use-table.ts  |    0
 .../workflow/relation/components/Graph.tsx         |    0
 .../src/views/projects/workflow/relation/index.tsx |    0
 .../projects/workflow/relation/use-relation.ts     |    0
 .../src/views/resource/file/create/index.tsx       |    0
 .../src/views/resource/file/create/use-create.ts   |    0
 .../src/views/resource/file/create/use-form.ts     |    0
 .../src/views/resource/file/edit/index.tsx         |    0
 .../src/views/resource/file/edit/use-edit.ts       |    0
 .../src/views/resource/file/edit/use-form.ts       |    0
 .../src/views/resource/file/folder/index.tsx       |    0
 .../src/views/resource/file/folder/use-folder.ts   |    0
 .../src/views/resource/file/folder/use-form.ts     |    0
 .../src/views/resource/file/index.module.scss      |    0
 .../src/views/resource/file/index.tsx              |    0
 .../src/views/resource/file/rename/index.tsx       |    0
 .../src/views/resource/file/rename/use-form.ts     |    0
 .../src/views/resource/file/rename/use-rename.ts   |    0
 .../src/views/resource/file/table/table-action.tsx |    0
 .../src/views/resource/file/table/use-table.ts     |    0
 .../src/views/resource/file/types.ts               |    0
 .../src/views/resource/file/upload/index.tsx       |    0
 .../src/views/resource/file/upload/use-form.ts     |    0
 .../src/views/resource/file/upload/use-upload.ts   |    0
 .../src/views/resource/file/use-file.ts            |    0
 .../src/views/resource/index.module.scss           |    0
 .../src/views/resource/index.tsx                   |    0
 .../task-group/option/components/form-modal.tsx    |    0
 .../task-group/option/components/table-action.tsx  |    0
 .../resource/task-group/option/index.module.scss   |    0
 .../src/views/resource/task-group/option/index.tsx |    0
 .../views/resource/task-group/option/use-form.ts   |    0
 .../views/resource/task-group/option/use-table.ts  |    0
 .../task-group/queue/components/form-modal.tsx     |    0
 .../task-group/queue/components/table-action.tsx   |    0
 .../resource/task-group/queue/index.module.scss    |    0
 .../src/views/resource/task-group/queue/index.tsx  |    0
 .../views/resource/task-group/queue/use-form.ts    |    0
 .../views/resource/task-group/queue/use-table.ts   |    0
 .../udf/function/components/function-modal.tsx     |    0
 .../resource/udf/function/components/use-form.ts   |    0
 .../resource/udf/function/components/use-modal.ts  |    0
 .../views/resource/udf/function/index.module.scss  |    0
 .../src/views/resource/udf/function/index.tsx      |    0
 .../src/views/resource/udf/function/types.ts       |    0
 .../src/views/resource/udf/function/use-table.ts   |    0
 .../udf/resource/components/folder-modal.tsx       |    0
 .../udf/resource/components/upload-modal.tsx       |    0
 .../resource/udf/resource/components/use-form.ts   |    0
 .../resource/udf/resource/components/use-modal.ts  |    0
 .../views/resource/udf/resource/index.module.scss  |    0
 .../src/views/resource/udf/resource/index.tsx      |    0
 .../src/views/resource/udf/resource/types.ts       |    0
 .../src/views/resource/udf/resource/use-table.ts   |    0
 .../components/alarm-group-modal.tsx               |    0
 .../alarm-group-manage/components/use-modal.ts     |    0
 .../security/alarm-group-manage/index.module.scss  |    0
 .../views/security/alarm-group-manage/index.tsx    |    0
 .../views/security/alarm-group-manage/use-table.ts |    0
 .../security/alarm-instance-manage/detail.tsx      |    0
 .../alarm-instance-manage/index.module.scss        |    0
 .../views/security/alarm-instance-manage/index.tsx |    0
 .../views/security/alarm-instance-manage/types.ts  |    0
 .../security/alarm-instance-manage/use-columns.ts  |    0
 .../security/alarm-instance-manage/use-detail.ts   |    0
 .../security/alarm-instance-manage/use-form.ts     |    0
 .../security/alarm-instance-manage/use-table.ts    |    0
 .../security/alarm-instance-manage/use-userinfo.ts |    0
 .../components/environment-modal.tsx               |    0
 .../environment-manage/components/use-modal.ts     |    0
 .../security/environment-manage/index.module.scss  |    0
 .../views/security/environment-manage/index.tsx    |    0
 .../views/security/environment-manage/use-table.ts |    0
 .../components/k8s-namespace-modal.tsx             |    0
 .../k8s-namespace-manage/components/use-modal.ts   |    0
 .../k8s-namespace-manage/index.module.scss         |    0
 .../views/security/k8s-namespace-manage/index.tsx  |    0
 .../security/k8s-namespace-manage/use-table.ts     |    0
 .../tenant-manage/components/tenant-modal.tsx      |    0
 .../tenant-manage/components/use-modalData.ts      |    0
 .../views/security/tenant-manage/index.module.scss |    0
 .../src/views/security/tenant-manage/index.tsx     |    0
 .../src/views/security/tenant-manage/use-table.ts  |    0
 .../token-manage/components/token-modal.tsx        |    0
 .../security/token-manage/components/use-modal.ts  |    0
 .../views/security/token-manage/index.module.scss  |    0
 .../src/views/security/token-manage/index.tsx      |    0
 .../src/views/security/token-manage/use-table.ts   |    0
 .../user-manage/components/authorize-modal.tsx     |    0
 .../user-manage/components/use-authorize.ts        |    0
 .../user-manage/components/use-user-detail.ts      |    0
 .../user-manage/components/user-detail-modal.tsx   |    0
 .../views/security/user-manage/index.module.scss   |    0
 .../src/views/security/user-manage/index.tsx       |    0
 .../src/views/security/user-manage/types.ts        |    0
 .../src/views/security/user-manage/use-columns.ts  |    0
 .../src/views/security/user-manage/use-table.ts    |    0
 .../worker-group-manage/components/use-modal.ts    |    0
 .../components/worker-group-modal.tsx              |    0
 .../security/worker-group-manage/index.module.scss |    0
 .../views/security/worker-group-manage/index.tsx   |    0
 .../security/worker-group-manage/use-table.ts      |    0
 .../yarn-queue-manage/components/use-modal.ts      |    0
 .../components/yarn-queue-modal.tsx                |    0
 .../security/yarn-queue-manage/index.module.scss   |    0
 .../src/views/security/yarn-queue-manage/index.tsx |    0
 .../views/security/yarn-queue-manage/use-table.ts  |    0
 .../tsconfig.json                                  |    0
 .../vite.config.ts                                 |    0
 pom.xml                                            |    4 +-
 1099 files changed, 125 insertions(+), 61348 deletions(-)

diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml
index 28487e19e3..5533c30503 100644
--- a/.github/workflows/frontend.yml
+++ b/.github/workflows/frontend.yml
@@ -23,15 +23,15 @@ on:
       - dev
     paths:
       - '.github/workflows/frontend.yml'
-      - 'dolphinscheduler-ui-next/**'
+      - 'dolphinscheduler-ui/**'
   pull_request:
     paths:
       - '.github/workflows/frontend.yml'
-      - 'dolphinscheduler-ui-next/**'
+      - 'dolphinscheduler-ui/**'
 
 defaults:
   run:
-    working-directory: dolphinscheduler-ui-next
+    working-directory: dolphinscheduler-ui
 
 concurrency:
   group: frontend-${{ github.event.pull_request.number || github.ref }}
diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
index 985ebfb404..b32fc5f6c6 100644
--- a/.github/workflows/unit-test.yml
+++ b/.github/workflows/unit-test.yml
@@ -23,7 +23,6 @@ on:
     paths-ignore:
       - '**/*.md'
       - 'dolphinscheduler-ui'
-      - 'dolphinscheduler-ui-next'
       - 'dolphinscheduler-python/pydolphinscheduler'
     branches:
       - dev
@@ -93,7 +92,7 @@ jobs:
           -Dsonar.core.codeCoveragePlugin=jacoco
           -Dsonar.projectKey=apache-dolphinscheduler
           -Dsonar.login=e4058004bc6be89decf558ac819aa1ecbee57682
-          -Dsonar.exclusions=dolphinscheduler-ui/src/**/i18n/locale/*.js,dolphinscheduler-ui-next/src/**/i18n/locale/*.js,dolphinscheduler-microbench/src/**/*
+          -Dsonar.exclusions=,dolphinscheduler-ui/src/**/i18n/locale/*.js,dolphinscheduler-microbench/src/**/*
           -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=120
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
index 765259a5b0..2452b3ecc1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -45,7 +45,6 @@ dolphinscheduler-alert/src/main/resources/logback.xml
 dolphinscheduler-server/src/main/resources/logback.xml
 dolphinscheduler-ui/dist
 dolphinscheduler-ui/node
-dolphinscheduler-ui-next/node
 dolphinscheduler-common/sql
 dolphinscheduler-common/test
 dolphinscheduler-worker/logs
diff --git a/docs/docs/en/development/development-environment-setup.md b/docs/docs/en/development/development-environment-setup.md
index 02e4058e23..a270b8e5c4 100644
--- a/docs/docs/en/development/development-environment-setup.md
+++ b/docs/docs/en/development/development-environment-setup.md
@@ -55,7 +55,7 @@ Find the class `org.apache.dolphinscheduler.server.StandaloneServer` in Intellij
 Install frontend dependencies and run it
 
 ```shell
-cd dolphinscheduler-ui-next
+cd dolphinscheduler-ui
 pnpm install
 pnpm run dev
 ```
@@ -152,7 +152,7 @@ There are three services that need to be started, including MasterServer, Worker
 Install frontend dependencies and run it
 
 ```shell
-cd dolphinscheduler-ui-next
+cd dolphinscheduler-ui
 pnpm install
 pnpm run dev
 ```
diff --git a/docs/docs/zh/development/development-environment-setup.md b/docs/docs/zh/development/development-environment-setup.md
index 8a13d5a16b..f6dba9a6db 100644
--- a/docs/docs/zh/development/development-environment-setup.md
+++ b/docs/docs/zh/development/development-environment-setup.md
@@ -52,7 +52,7 @@ DolphinScheduler 开发环境配置有两个方式,分别是standalone模式
 安装前端依赖并运行前端组件
 
 ```shell
-cd dolphinscheduler-ui-next
+cd dolphinscheduler-ui
 pnpm install
 pnpm run dev
 ```
@@ -147,7 +147,7 @@ DolphinScheduler 的元数据存储在关系型数据库中,目前支持的关
 安装前端依赖并运行前端组件
 
 ```shell
-cd dolphinscheduler-ui-next
+cd dolphinscheduler-ui
 pnpm install
 pnpm run dev
 ```
diff --git a/dolphinscheduler-api/pom.xml b/dolphinscheduler-api/pom.xml
index a047a33c25..b5dd813843 100644
--- a/dolphinscheduler-api/pom.xml
+++ b/dolphinscheduler-api/pom.xml
@@ -58,7 +58,7 @@
 
         <dependency>
             <groupId>org.apache.dolphinscheduler</groupId>
-            <artifactId>dolphinscheduler-ui-next</artifactId>
+            <artifactId>dolphinscheduler-ui</artifactId>
         </dependency>
 
         <!--springboot-->
diff --git a/dolphinscheduler-api/src/main/assembly/dolphinscheduler-api-server.xml b/dolphinscheduler-api/src/main/assembly/dolphinscheduler-api-server.xml
index 3fe7fb705b..ed7d421009 100644
--- a/dolphinscheduler-api/src/main/assembly/dolphinscheduler-api-server.xml
+++ b/dolphinscheduler-api/src/main/assembly/dolphinscheduler-api-server.xml
@@ -56,7 +56,7 @@
             <outputDirectory>conf</outputDirectory>
         </fileSet>
         <fileSet>
-            <directory>${basedir}/../dolphinscheduler-ui-next/dist</directory>
+            <directory>${basedir}/../dolphinscheduler-ui/dist</directory>
             <outputDirectory>./ui</outputDirectory>
         </fileSet>
     </fileSets>
diff --git a/dolphinscheduler-dist/pom.xml b/dolphinscheduler-dist/pom.xml
index 1639ab7660..ba14b46576 100644
--- a/dolphinscheduler-dist/pom.xml
+++ b/dolphinscheduler-dist/pom.xml
@@ -58,7 +58,7 @@
 
         <dependency>
             <groupId>org.apache.dolphinscheduler</groupId>
-            <artifactId>dolphinscheduler-ui-next</artifactId>
+            <artifactId>dolphinscheduler-ui</artifactId>
         </dependency>
 
         <dependency>
diff --git a/dolphinscheduler-dist/release-docs/LICENSE b/dolphinscheduler-dist/release-docs/LICENSE
index 41ee59184a..30fb7ac3a5 100644
--- a/dolphinscheduler-dist/release-docs/LICENSE
+++ b/dolphinscheduler-dist/release-docs/LICENSE
@@ -554,6 +554,7 @@ CC0-1.0 licenses
 
 HdrHistogram 2.1.12:	https://github.com/HdrHistogram/HdrHistogram , CC0-1.0 and BSD 2-Clause
 
+
 ========================================================================
 UI related licenses
 ========================================================================
@@ -561,52 +562,6 @@ UI related licenses
 The following components are used in UI.See project link for details.
 The text of each license is also included at licenses/ui-licenses/LICENSE-[project].txt.
 
-========================================
-MIT licenses
-========================================
-    @form-create/element-ui 1.0.18: https://github.com/xaboy/form-create MIT
-    axios 0.16.2: https://github.com/axios/axios MIT
-    bootstrap 3.3.7: https://github.com/twbs/bootstrap MIT
-    canvg 1.5.1: https://github.com/canvg/canvg MIT
-    clipboard 2.0.1: https://github.com/zenorocha/clipboard.js MIT
-    codemirror 5.43.0: https://github.com/codemirror/CodeMirror MIT
-    dayjs 1.7.8: https://github.com/iamkun/dayjs MIT
-    element-ui 2.13.2: https://github.com/ElemeFE/element MIT
-    html2canvas 0.5.0-beta4: https://github.com/niklasvh/html2canvas MIT
-    jquery 3.3.1: https://github.com/jquery/jquery MIT
-    jquery-ui 1.12.1: https://github.com/jquery/jquery-ui MIT
-    js-cookie 2.2.1: https://github.com/js-cookie/js-cookie MIT
-    jsplumb 2.8.6: https://github.com/jsplumb/jsplumb MIT and GPLv2
-    lodash 4.17.11: https://github.com/lodash/lodash MIT
-    moment-timezone 0.5.33: https://github.com/moment/moment-timezone MIT
-    vue-treeselect 0.4.0: https://github.com/riophae/vue-treeselect MIT
-    vue	2.5.17:	https://github.com/vuejs/vue	MIT
-    vue-router 2.7.0: https://github.com/vuejs/vue-router MIT
-    vuex 3.0.0: https://github.com/vuejs/vuex MIT
-    vuex-router-sync 4.1.2: https://github.com/vuejs/vuex-router-sync MIT
-    dagre 0.8.5: https://github.com/dagrejs/dagre MIT
-    js-cookie 3.0.1 https://github.com/js-cookie/js-cookie MIT
-    @types/js-cookie 3.0.1 https://github.com/DefinitelyTyped/DefinitelyTyped MIT
-
-========================================
-Apache 2.0 licenses
-========================================
-    echarts	4.1.0: https://github.com/apache/incubator-echarts	Apache-2.0
-    remixicon 2.5.0 https://github.com/Remix-Design/remixicon   Apache-2.0
-
-========================================
-BSD licenses
-========================================
-    d3 3.5.17: https://github.com/d3/d3 BSD-3-Clause
-
-
-========================================================================
-UI-Next related licenses
-========================================================================
-
-The following components are used in UI-Next.See project link for details.
-The text of each license is also included at licenses/ui-next-licenses/LICENSE-[project].txt.
-
 ========================================
 MIT licenses
 ========================================
@@ -660,7 +615,7 @@ BSD licenses
 ========================================================================
 
 The following components are provided under a BSD license. See project link for details.
-The text of each license is also included at licenses/ui-next-licenses/LICENSE-[project].txt.
+The text of each license is also included at licenses/ui-licenses/LICENSE-[project].txt.
     qs 6.10.3: https://github.com/ljharb/qs BSD 3-Clause
     @typescript-eslint/eslint-plugin 5.12.1: https://github.com/typescript-eslint/typescript-eslint BSD 2-clause
     @typescript-eslint/parser 5.12.1: https://github.com/typescript-eslint/typescript-eslint BSD 2-clause
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@antv-layout b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@antv-layout
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@antv-layout
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@antv-layout
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@antv-x6 b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@antv-x6
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@antv-x6
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@antv-x6
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui
deleted file mode 100644
index 468a05fc1d..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@form-create-element-ui
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 xaboy
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE. 
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-js-cookie b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-js-cookie
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-js-cookie
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-js-cookie
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-lodash b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-lodash
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-lodash
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-lodash
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-node b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-node
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-node
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-node
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-nprogress b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-nprogress
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-nprogress
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-nprogress
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-qs b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-qs
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@types-qs
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@types-qs
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@typescript-eslint-eslint-plugin b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@typescript-eslint-eslint-plugin
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@typescript-eslint-eslint-plugin
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@typescript-eslint-eslint-plugin
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@typescript-eslint-parser b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@typescript-eslint-parser
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@typescript-eslint-parser
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@typescript-eslint-parser
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@vitejs-plugin-vue b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@vitejs-plugin-vue
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@vitejs-plugin-vue
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@vitejs-plugin-vue
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@vitejs-plugin-vue-jsx b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@vitejs-plugin-vue-jsx
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@vitejs-plugin-vue-jsx
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@vitejs-plugin-vue-jsx
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@vueuse-core b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@vueuse-core
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-@vueuse-core
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-@vueuse-core
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-axios b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-axios
index d2c1a12e4c..2d8d66aa4e 100644
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-axios
+++ b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-axios
@@ -1,4 +1,4 @@
-Copyright (c) 2014 Matt Zabriskie
+Copyright (c) 2014-present Matt Zabriskie
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-bootstrap b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-bootstrap
deleted file mode 100644
index a80e8c2b33..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-bootstrap
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2011-2016 Twitter, Inc.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-canvg b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-canvg
deleted file mode 100644
index 40f19bd70a..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-canvg
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2010-2011 Gabe Lerner (gabelerner@gmail.com) - http://code.google.com/p/canvg/
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the "Software"), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-clipboard b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-clipboard
deleted file mode 100644
index 153e3f61aa..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-clipboard
+++ /dev/null
@@ -1,8 +0,0 @@
-The MIT License (MIT)
-Copyright © 2019 Zeno Rocha <hi...@zenorocha.com>
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-codemirror b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-codemirror
deleted file mode 100644
index 0fa30f7e5c..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-codemirror
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (C) 2017 by Marijn Haverbeke <ma...@gmail.com> and others
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-d3 b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-d3
deleted file mode 100644
index a31bde4473..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-d3
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 2010-2016, Michael Bostock
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
-  list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
-
-* The name Michael Bostock may not be used to endorse or promote products
-  derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-dagre b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-dagre
deleted file mode 100644
index e3c8f95557..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-dagre
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2012-2014 Chris Pettitt
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-dart-sass b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-dart-sass
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-dart-sass
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-dart-sass
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-date-fns b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-date-fns
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-date-fns
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-date-fns
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-date-fns-tz b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-date-fns-tz
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-date-fns-tz
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-date-fns-tz
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-dayjs b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-dayjs
deleted file mode 100644
index 4c15796322..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-dayjs
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 iamkun
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-echarts b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-echarts
index 989e2c59e9..3baabfc921 100644
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-echarts
+++ b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-echarts
@@ -1,4 +1,4 @@
-Apache License
+                                 Apache License
                            Version 2.0, January 2004
                         http://www.apache.org/licenses/
 
@@ -198,4 +198,24 @@ Apache License
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
-   limitations under the License.
\ No newline at end of file
+   limitations under the License.
+
+
+
+
+
+========================================================================
+Apache ECharts Subcomponents:
+
+The Apache ECharts project contains subcomponents with separate copyright
+notices and license terms. Your use of the source code for these
+subcomponents is also subject to the terms and conditions of the following
+licenses.
+
+BSD 3-Clause (d3.js):
+The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
+    `/src/chart/treemap/treemapLayout.ts`,
+    `/src/chart/tree/layoutHelper.ts`,
+    `/src/chart/graph/forceHelper.ts`,
+    `/src/util/number.ts`
+See `/licenses/LICENSE-d3` for details of the license.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-element-ui b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-element-ui
deleted file mode 100644
index 4b275d033b..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-element-ui
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016-present ElemeFE
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE. 
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-eslint b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-eslint
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-eslint
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-eslint
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-eslint-config-prettier b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-eslint-config-prettier
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-eslint-config-prettier
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-eslint-config-prettier
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-eslint-plugin-prettier b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-eslint-plugin-prettier
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-eslint-plugin-prettier
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-eslint-plugin-prettier
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-eslint-plugin-vue b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-eslint-plugin-vue
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-eslint-plugin-vue
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-eslint-plugin-vue
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-fira-code b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-fira-code
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-fira-code
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-fira-code
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-fira-sans b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-fira-sans
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-fira-sans
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-fira-sans
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-html2canvas b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-html2canvas
deleted file mode 100644
index a73ffc9143..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-html2canvas
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2012 Niklas von Hertzen
-
-Permission is hereby granted, free of charge, to any person
-obtaining a copy of this software and associated documentation
-files (the "Software"), to deal in the Software without
-restriction, including without limitation the rights to use,
-copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the
-Software is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-ibm-plex b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-ibm-plex
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-ibm-plex
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-ibm-plex
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-inter b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-inter
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-inter
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-inter
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-jquery b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-jquery
deleted file mode 100644
index 3dd4e447a4..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-jquery
+++ /dev/null
@@ -1,36 +0,0 @@
-Copyright JS Foundation and other contributors, https://js.foundation/
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/jquery/jquery
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-All files located in the node_modules and external directories are
-externally maintained libraries used by this software which have their
-own licenses; we recommend you read them, as their terms may differ from
-the terms above.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-jquery-ui b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-jquery-ui
deleted file mode 100644
index a685832390..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-jquery-ui
+++ /dev/null
@@ -1,43 +0,0 @@
-Copyright jQuery Foundation and other contributors, https://jquery.org/
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/jquery/jquery-ui
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code contained within the demos directory.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-All files located in the node_modules and external directories are
-externally maintained libraries used by this software which have their
-own licenses; we recommend you read them, as their terms may differ from
-the terms above.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-js-cookie b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-js-cookie
index 69ed677563..3c581cad4e 100644
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-js-cookie
+++ b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-js-cookie
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
+SOFTWARE.
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-jsplumb b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-jsplumb
deleted file mode 100644
index f48895213d..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-jsplumb
+++ /dev/null
@@ -1,305 +0,0 @@
-All 1.x.x and 2.x.x versions of jsPlumb Community edition are dual-licensed 
-under both MIT and GPLv2.
-
-				MIT LICENSE
-
-Copyright (c) 2010 - 2014 jsPlumb, http://jsplumbtoolkit.com/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-===============================================================================
-        GNU GENERAL PUBLIC LICENSE
-           Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-          Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-        GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-          NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-lato b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-lato
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-lato
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-lato
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-lodash b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-lodash
index 4b5cedae97..5b807415bb 100644
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-lodash
+++ b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-lodash
@@ -1,3 +1,5 @@
+The MIT License
+
 Copyright JS Foundation and other contributors <https://js.foundation/>
 
 Based on Underscore.js, copyright Jeremy Ashkenas,
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-moment-timezone b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-moment-timezone
deleted file mode 100644
index f0bb3b4bb4..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-moment-timezone
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) JS Foundation and other contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-monaco-editor b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-monaco-editor
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-monaco-editor
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-monaco-editor
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-naive-ui b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-naive-ui
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-naive-ui
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-naive-ui
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-nprogress b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-nprogress
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-nprogress
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-nprogress
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-open-sans b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-open-sans
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-open-sans
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-open-sans
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-pinia b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-pinia
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-pinia
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-pinia
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-pinia-plugin-persistedstate b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-pinia-plugin-persistedstate
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-pinia-plugin-persistedstate
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-pinia-plugin-persistedstate
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-prettier b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-prettier
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-prettier
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-prettier
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-qs b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-qs
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-qs
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-qs
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-remixicon b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-remixicon
deleted file mode 100644
index 989e2c59e9..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-remixicon
+++ /dev/null
@@ -1,201 +0,0 @@
-Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-roboto b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-roboto
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-roboto
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-roboto
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-sass b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-sass
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-sass
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-sass
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-sass-loader b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-sass-loader
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-sass-loader
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-sass-loader
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-screenfull b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-screenfull
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-screenfull
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-screenfull
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-typescript b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-typescript
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-typescript
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-typescript
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-typescript-plugin-css-modules b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-typescript-plugin-css-modules
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-typescript-plugin-css-modules
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-typescript-plugin-css-modules
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vite b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vite
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vite
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vite
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vite-plugin-compression b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vite-plugin-compression
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vite-plugin-compression
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vite-plugin-compression
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue
index 51e3f9f426..04600aaba8 100644
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue
+++ b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue
@@ -1,6 +1,6 @@
 The MIT License (MIT)
 
-Copyright (c) 2013-present, Yuxi (Evan) You
+Copyright (c) 2018-present, Yuxi (Evan) You
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue-i18n b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-i18n
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue-i18n
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-i18n
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-router b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-router
index bbfcc77b00..8a8c7c2492 100644
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-router
+++ b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-router
@@ -1,6 +1,6 @@
 MIT License
 
-Copyright (c) 2013-2016 Evan You
+Copyright (c) 2013-present Evan You
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-treeselect b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-treeselect
deleted file mode 100644
index f7d8cc3ebd..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-treeselect
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2017-present Riophae Lee
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue-tsc b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-tsc
similarity index 100%
rename from dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue-tsc
rename to dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vue-tsc
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vuex b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vuex
deleted file mode 100644
index fa6dd9ba37..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vuex
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015-2016 Evan You
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vuex-router-sync b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vuex-router-sync
deleted file mode 100644
index 27cf310a28..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-vuex-router-sync
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2016 Evan You
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-axios b/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-axios
deleted file mode 100644
index 2d8d66aa4e..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-axios
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014-present Matt Zabriskie
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-echarts b/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-echarts
deleted file mode 100644
index 3baabfc921..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-echarts
+++ /dev/null
@@ -1,221 +0,0 @@
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
-
-
-
-========================================================================
-Apache ECharts Subcomponents:
-
-The Apache ECharts project contains subcomponents with separate copyright
-notices and license terms. Your use of the source code for these
-subcomponents is also subject to the terms and conditions of the following
-licenses.
-
-BSD 3-Clause (d3.js):
-The following files embed [d3.js](https://github.com/d3/d3) BSD 3-Clause:
-    `/src/chart/treemap/treemapLayout.ts`,
-    `/src/chart/tree/layoutHelper.ts`,
-    `/src/chart/graph/forceHelper.ts`,
-    `/src/util/number.ts`
-See `/licenses/LICENSE-d3` for details of the license.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-js-cookie b/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-js-cookie
deleted file mode 100644
index 3c581cad4e..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-js-cookie
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 Copyright 2018 Klaus Hartl, Fagner Brack, GitHub Contributors
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-lodash b/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-lodash
deleted file mode 100644
index 5b807415bb..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-lodash
+++ /dev/null
@@ -1,49 +0,0 @@
-The MIT License
-
-Copyright JS Foundation and other contributors <https://js.foundation/>
-
-Based on Underscore.js, copyright Jeremy Ashkenas,
-DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
-
-This software consists of voluntary contributions made by many
-individuals. For exact contribution history, see the revision history
-available at https://github.com/lodash/lodash
-
-The following license applies to all parts of this software except as
-documented below:
-
-====
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-====
-
-Copyright and related rights for sample code are waived via CC0. Sample
-code is defined as all source code displayed within the prose of the
-documentation.
-
-CC0: http://creativecommons.org/publicdomain/zero/1.0/
-
-====
-
-Files located in the node_modules and vendor directories are externally
-maintained libraries used by this software which have their own
-licenses; we recommend you read them, as their terms may differ from the
-terms above.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue b/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue
deleted file mode 100644
index 04600aaba8..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2018-present, Yuxi (Evan) You
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue-router b/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue-router
deleted file mode 100644
index 8a8c7c2492..0000000000
--- a/dolphinscheduler-dist/release-docs/licenses/ui-next-licenses/LICENSE-vue-router
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2013-present Evan You
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-bin.xml b/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-bin.xml
index a3447ee487..6dd55fca46 100644
--- a/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-bin.xml
+++ b/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-bin.xml
@@ -75,7 +75,7 @@
         </fileSet>
 
         <fileSet>
-            <directory>${basedir}/../dolphinscheduler-ui-next/dist</directory>
+            <directory>${basedir}/../dolphinscheduler-ui/dist</directory>
             <outputDirectory>./ui</outputDirectory>
         </fileSet>
 
diff --git a/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-src.xml b/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-src.xml
index c33d2569e8..05d54871c7 100644
--- a/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-src.xml
+++ b/dolphinscheduler-dist/src/main/assembly/dolphinscheduler-src.xml
@@ -56,9 +56,6 @@
                 <exclude>**/dolphinscheduler-ui/dist/**</exclude>
                 <exclude>**/dolphinscheduler-ui/node/**</exclude>
                 <exclude>**/dolphinscheduler-ui/node_modules/**</exclude>
-                <exclude>**/dolphinscheduler-ui-next/dist/**</exclude>
-                <exclude>**/dolphinscheduler-ui-next/node/**</exclude>
-                <exclude>**/dolphinscheduler-ui-next/node_modules/**</exclude>
 
                 <!-- python ignore -->
                 <exclude>**/dolphinscheduler-python/pydolphinscheduler/.pytest_cache/**</exclude>
diff --git a/dolphinscheduler-standalone-server/src/main/assembly/dolphinscheduler-standalone-server.xml b/dolphinscheduler-standalone-server/src/main/assembly/dolphinscheduler-standalone-server.xml
index de9dbb71fd..3857cf75fe 100644
--- a/dolphinscheduler-standalone-server/src/main/assembly/dolphinscheduler-standalone-server.xml
+++ b/dolphinscheduler-standalone-server/src/main/assembly/dolphinscheduler-standalone-server.xml
@@ -87,7 +87,7 @@
             <outputDirectory>conf</outputDirectory>
         </fileSet>
         <fileSet>
-            <directory>${basedir}/../dolphinscheduler-ui-next/dist</directory>
+            <directory>${basedir}/../dolphinscheduler-ui/dist</directory>
             <outputDirectory>./ui</outputDirectory>
         </fileSet>
     </fileSets>
diff --git a/dolphinscheduler-ui-next/.eslintignore b/dolphinscheduler-ui-next/.eslintignore
deleted file mode 100644
index adb3fad90a..0000000000
--- a/dolphinscheduler-ui-next/.eslintignore
+++ /dev/null
@@ -1,18 +0,0 @@
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements.  See the NOTICE file distributed with
- # this work for additional information regarding copyright ownership.
- # The ASF licenses this file to You under the Apache License, Version 2.0
- # (the "License"); you may not use this file except in compliance with
- # the License.  You may obtain a copy of the License at
- #
- #     http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
-node_modules
-dist
-public
diff --git a/dolphinscheduler-ui-next/package.json b/dolphinscheduler-ui-next/package.json
deleted file mode 100644
index cf2fbcf443..0000000000
--- a/dolphinscheduler-ui-next/package.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "name": "dolphinscheduler-ui-next",
-  "version": "0.0.0",
-  "scripts": {
-    "dev": "vite",
-    "build:prod": "vue-tsc --noEmit && vite build --mode production",
-    "preview": "vite preview",
-    "lint": "eslint src --fix --ext .ts,.tsx,.vue",
-    "prettier": "prettier --write \"src/**/*.{vue,ts,tsx}\""
-  },
-  "dependencies": {
-    "@antv/layout": "^0.1.31",
-    "@antv/x6": "^1.30.1",
-    "@vueuse/core": "^7.6.2",
-    "axios": "^0.24.0",
-    "date-fns": "^2.28.0",
-    "date-fns-tz": "^1.3.0",
-    "echarts": "^5.3.0",
-    "js-cookie": "^3.0.1",
-    "lodash": "^4.17.21",
-    "monaco-editor": "^0.31.1",
-    "naive-ui": "^2.27.0",
-    "nprogress": "^0.2.0",
-    "pinia": "^2.0.11",
-    "pinia-plugin-persistedstate": "^1.2.2",
-    "qs": "^6.10.3",
-    "screenfull": "^6.0.1",
-    "vfonts": "^0.1.0",
-    "vue": "^3.2.31",
-    "vue-i18n": "^9.2.0-beta.30",
-    "vue-router": "^4.0.12"
-  },
-  "devDependencies": {
-    "@types/js-cookie": "^3.0.1",
-    "@types/lodash": "^4.14.182",
-    "@types/node": "^16.11.25",
-    "@types/nprogress": "^0.2.0",
-    "@types/qs": "^6.9.7",
-    "@typescript-eslint/eslint-plugin": "^5.12.1",
-    "@typescript-eslint/parser": "^5.12.1",
-    "@vicons/antd": "^0.11.0",
-    "@vitejs/plugin-vue": "^1.10.2",
-    "@vitejs/plugin-vue-jsx": "^1.3.7",
-    "dart-sass": "^1.25.0",
-    "eslint": "^8.9.0",
-    "eslint-config-prettier": "^8.4.0",
-    "eslint-plugin-prettier": "^4.0.0",
-    "eslint-plugin-vue": "^8.5.0",
-    "prettier": "^2.5.1",
-    "sass": "^1.49.8",
-    "sass-loader": "^12.6.0",
-    "typescript": "^4.5.5",
-    "typescript-plugin-css-modules": "^3.4.0",
-    "vite": "^2.8.4",
-    "vite-plugin-compression": "^0.3.6",
-    "vue-tsc": "^0.28.10"
-  }
-}
diff --git a/dolphinscheduler-ui-next/pom.xml b/dolphinscheduler-ui-next/pom.xml
deleted file mode 100644
index 849189a20d..0000000000
--- a/dolphinscheduler-ui-next/pom.xml
+++ /dev/null
@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <parent>
-    <artifactId>dolphinscheduler</artifactId>
-    <groupId>org.apache.dolphinscheduler</groupId>
-    <version>dev-SNAPSHOT</version>
-  </parent>
-  <modelVersion>4.0.0</modelVersion>
-
-  <artifactId>dolphinscheduler-ui-next</artifactId>
-
-  <name>${project.artifactId}</name>
-
-  <properties>
-    <node.version>v16.13.1</node.version>
-    <pnpm.version>v6.32.6</pnpm.version>
-    <sonar.sources>src</sonar.sources>
-  </properties>
-
-  <profiles>
-    <profile>
-      <id>release</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>com.github.eirslett</groupId>
-            <artifactId>frontend-maven-plugin</artifactId>
-            <version>${frontend-maven-plugin.version}</version>
-            <executions>
-              <execution>
-                <id>install node and pnpm</id>
-                <goals>
-                  <goal>install-node-and-pnpm</goal>
-                </goals>
-                <configuration>
-                  <nodeVersion>${node.version}</nodeVersion>
-                  <pnpmVersion>${pnpm.version}</pnpmVersion>
-                </configuration>
-              </execution>
-              <execution>
-                <id>pnpm install</id>
-                <goals>
-                  <goal>pnpm</goal>
-                </goals>
-                <phase>generate-resources</phase>
-                <configuration>
-                  <arguments>install</arguments>
-                </configuration>
-              </execution>
-              <execution>
-                <id>pnpm run build:prod</id>
-                <goals>
-                  <goal>pnpm</goal>
-                </goals>
-                <configuration>
-                  <arguments>run build:prod</arguments>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-
-      </build>
-    </profile>
-  </profiles>
-</project>
diff --git a/dolphinscheduler-ui/.babelrc b/dolphinscheduler-ui/.babelrc
deleted file mode 100644
index 613d2cd669..0000000000
--- a/dolphinscheduler-ui/.babelrc
+++ /dev/null
@@ -1,35 +0,0 @@
-{
-    "presets": [
-      ["env", {
-        "loose": true,
-        "debug": false,
-        "useBuiltIns": true,
-        "targets": {
-          "browsers": [
-            "> 1%",
-            "last 2 versions",
-            "ie >= 10",
-            "edge >= 12",
-            "firefox >= 28",
-            "chrome >= 29",
-            "opera >= 17"
-          ]
-        },
-        "production": {
-          "plugins": ["transform-remove-console"]
-        }
-      }]
-    ],
-    "plugins": [
-      [ "transform-runtime", {
-        "helpers": false,
-        "polyfill": false,
-        "regenerator": true } ],
-      [ "transform-class-properties", { "spec": true } ],
-      [ "transform-object-rest-spread", { "useBuiltIns": true } ],
-      [ "transform-vue-jsx" ],
-      [ "syntax-dynamic-import" ]
-    ],
-    "comments": false
-  }
-  
\ No newline at end of file
diff --git a/dolphinscheduler-ui/.editorconfig b/dolphinscheduler-ui/.editorconfig
deleted file mode 100644
index beb8ed2185..0000000000
--- a/dolphinscheduler-ui/.editorconfig
+++ /dev/null
@@ -1,35 +0,0 @@
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements.  See the NOTICE file distributed with
- # this work for additional information regarding copyright ownership.
- # The ASF licenses this file to You under the Apache License, Version 2.0
- # (the "License"); you may not use this file except in compliance with
- # the License.  You may obtain a copy of the License at
- #
- #     http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
- 
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-end_of_line = lf
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.py]
-indent_style = space
-indent_size = 4
-
-[*.md]
-trim_trailing_whitespace = false
-
-[COMMIT_EDITMSG]
-max_line_length = 80
diff --git a/dolphinscheduler-ui/.env b/dolphinscheduler-ui/.env
deleted file mode 100644
index bd768bcd47..0000000000
--- a/dolphinscheduler-ui/.env
+++ /dev/null
@@ -1,21 +0,0 @@
- # Licensed to the Apache Software Foundation (ASF) under one or more
- # contributor license agreements.  See the NOTICE file distributed with
- # this work for additional information regarding copyright ownership.
- # The ASF licenses this file to You under the Apache License, Version 2.0
- # (the "License"); you may not use this file except in compliance with
- # the License.  You may obtain a copy of the License at
- #
- #     http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
-
-# back end interface address
-API_BASE = http://127.0.0.1:12345
-
-# host and port for local development
-# DEV_HOST = 127.0.0.1
-# DEV_PORT = 8888
diff --git a/dolphinscheduler-ui-next/.env.development b/dolphinscheduler-ui/.env.development
similarity index 100%
rename from dolphinscheduler-ui-next/.env.development
rename to dolphinscheduler-ui/.env.development
diff --git a/dolphinscheduler-ui-next/.env.production b/dolphinscheduler-ui/.env.production
similarity index 100%
rename from dolphinscheduler-ui-next/.env.production
rename to dolphinscheduler-ui/.env.production
diff --git a/dolphinscheduler-ui/.eslintignore b/dolphinscheduler-ui/.eslintignore
index cd1b8213b3..adb3fad90a 100644
--- a/dolphinscheduler-ui/.eslintignore
+++ b/dolphinscheduler-ui/.eslintignore
@@ -1,7 +1,18 @@
-/_test_/
-/build/
-/dist/
-/node/
-/node_modules/
-/target/
-/*.js
+ # Licensed to the Apache Software Foundation (ASF) under one or more
+ # contributor license agreements.  See the NOTICE file distributed with
+ # this work for additional information regarding copyright ownership.
+ # The ASF licenses this file to You under the Apache License, Version 2.0
+ # (the "License"); you may not use this file except in compliance with
+ # the License.  You may obtain a copy of the License at
+ #
+ #     http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+
+node_modules
+dist
+public
diff --git a/dolphinscheduler-ui-next/.eslintrc.js b/dolphinscheduler-ui/.eslintrc.js
similarity index 100%
rename from dolphinscheduler-ui-next/.eslintrc.js
rename to dolphinscheduler-ui/.eslintrc.js
diff --git a/dolphinscheduler-ui/.eslintrc.yml b/dolphinscheduler-ui/.eslintrc.yml
deleted file mode 100644
index 64c83e6ac0..0000000000
--- a/dolphinscheduler-ui/.eslintrc.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-env:
-  browser: true
-  es6: true
-  jquery: true
-extends:
-  - 'plugin:vue/essential'
-  - standard
-globals:
-  Atomics: readonly
-  SharedArrayBuffer: readonly
-  PUBLIC_PATH: readonly
-  $t: readonly
-parserOptions:
-  ecmaVersion: 2018
-  sourceType: module
-plugins:
-  - vue
-rules:
-  vue/script-indent: ['error', 2, { 'baseIndent': 1, 'switchCase': 1 }]
-  prefer-promise-reject-errors: 'off'
-  no-prototype-builtins: 'off'
-  no-mixed-operators: 'off'
-  no-extend-native: 'off'
-  prefer-const: 'off'
-  no-var: 'error'
-overrides:
-  - { 'files': ['*.vue'], 'rules': { 'indent': 'off' }}
diff --git a/dolphinscheduler-ui-next/.gitignore b/dolphinscheduler-ui/.gitignore
similarity index 100%
rename from dolphinscheduler-ui-next/.gitignore
rename to dolphinscheduler-ui/.gitignore
diff --git a/dolphinscheduler-ui-next/.prettierignore b/dolphinscheduler-ui/.prettierignore
similarity index 100%
rename from dolphinscheduler-ui-next/.prettierignore
rename to dolphinscheduler-ui/.prettierignore
diff --git a/dolphinscheduler-ui-next/.prettierrc.js b/dolphinscheduler-ui/.prettierrc.js
similarity index 100%
rename from dolphinscheduler-ui-next/.prettierrc.js
rename to dolphinscheduler-ui/.prettierrc.js
diff --git a/dolphinscheduler-ui-next/README.md b/dolphinscheduler-ui/README.md
similarity index 100%
rename from dolphinscheduler-ui-next/README.md
rename to dolphinscheduler-ui/README.md
diff --git a/dolphinscheduler-ui/_test_/.babelrc b/dolphinscheduler-ui/_test_/.babelrc
deleted file mode 100644
index bae693584c..0000000000
--- a/dolphinscheduler-ui/_test_/.babelrc
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "presets": [["env", { "modules": false }]],
-    "env": {
-      "test": {
-        "presets": [["env", { "targets": { "node": "current" } }]]
-      }
-    }
-  }
\ No newline at end of file
diff --git a/dolphinscheduler-ui/_test_/Counter.spec.js b/dolphinscheduler-ui/_test_/Counter.spec.js
deleted file mode 100644
index 9530d76300..0000000000
--- a/dolphinscheduler-ui/_test_/Counter.spec.js
+++ /dev/null
@@ -1,55 +0,0 @@
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import { mount } from '@vue/test-utils'
-import Counter from '../src/components/Counter.vue'
-
-describe("Counter.vue", () => {
-    it("渲染Counter组件", () => {
-        const wrapper = mount(Counter)
-        expect(wrapper.element).toMatchSnapshot()
-    })
-
-    it("初始化之为0", () => {
-        const wrapper = mount(Counter)
-        expect(wrapper.vm.count).toEqual(0)
-    })
-
-    it("加1", () => {
-        const wrapper = mount(Counter)
-        wrapper.vm.inc()
-        expect(wrapper.vm.count).toEqual(1)
-    })
-
-    it("减1", () => {
-        const wrapper = mount(Counter)
-        wrapper.vm.dec()
-        expect(wrapper.vm.count).toEqual(-1)
-    })
-
-    it("重置", () => {
-        const wrapper = mount(Counter)
-        wrapper.vm.reset()
-        expect(wrapper.vm.count).toEqual(0)
-    })
-
-    it("因数为10加1操作", () => {
-        const wrapper = mount(Counter, { propsData: { factor: 10 } })
-        wrapper.vm.inc()
-        expect(wrapper.vm.computedCount).toEqual(10)
-    })
-})
\ No newline at end of file
diff --git a/dolphinscheduler-ui/_test_/package.json b/dolphinscheduler-ui/_test_/package.json
deleted file mode 100644
index 0848d1c185..0000000000
--- a/dolphinscheduler-ui/_test_/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
-  "name": "testjest",
-  "description": "jest",
-  "version": "1.0.0",
-  "author": "xiangcaibiao",
-  "private": true,
-  "scripts": {
-    "test": "jest --coverage"
-  },
-  "dependencies": {
-    "vue": "^2.4.4"
-  },
-  "jest": {
-    "moduleFileExtensions": [
-      "js",
-      "vue"
-    ],
-    "moduleNameMapper": {
-      "^@/(.*)$": "<rootDir>/src/$1"
-    },
-    "transform": {
-      "^.+\\.js$": "<rootDir>/_test_/node_modules/babel-jest",
-      ".*\\.(vue)$": "<rootDir>/_test_/node_modules/vue-jest"
-    },
-    "snapshotSerializers": [
-      "<rootDir>/_test_/node_modules/jest-serializer-vue"
-    ],
-    "collectCoverage": true,
-    "collectCoverageFrom": [
-      "src/**/*.{js,vue}",
-      "!**/node_modules/**"
-    ],
-    "rootDir": "../"
-  },
-  "devDependencies": {
-    "@vue/test-utils": "^1.0.0-beta.30",
-    "babel-jest": "^24.9.0",
-    "babel-preset-env": "^1.7.0",
-    "jest": "^24.9.0",
-    "jest-serializer-vue": "^2.0.2",
-    "vue-jest": "^3.0.5"
-  }
-}
diff --git a/dolphinscheduler-ui/_test_/test.spec.js b/dolphinscheduler-ui/_test_/test.spec.js
deleted file mode 100644
index 27b863fe8a..0000000000
--- a/dolphinscheduler-ui/_test_/test.spec.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import { shallowMount } from '@vue/test-utils'
-import Message from '../src/components/Message.vue'
-
-describe('Message', () => {
-  it('renders props.msg when passed', () => {
-    const msg = 'new message'
-    const wrapper = shallowMount(Message, {
-      propsData: { msg }
-    })
-    expect(wrapper.text()).toBe(msg)
-  })
-
-  it('renders default message if not passed a prop', () => {
-    const defaultMessage = 'default message'
-    const wrapper = shallowMount(Message)
-    expect(wrapper.text()).toBe(defaultMessage)
-  })
-})
diff --git a/dolphinscheduler-ui/build/config.js b/dolphinscheduler-ui/build/config.js
deleted file mode 100644
index 1186066e7f..0000000000
--- a/dolphinscheduler-ui/build/config.js
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const path = require('path')
-const glob = require('globby')
-const webpack = require('webpack')
-const VueLoaderPlugin = require('vue-loader/lib/plugin')
-const HtmlWebpackPlugin = require('html-webpack-plugin')
-const MiniCssExtractPlugin = require('mini-css-extract-plugin')
-const isProduction = process.env.NODE_ENV !== 'development'
-
-const resolve = dir => path.join(__dirname, '..', dir)
-
-const assetsDir = resolve('src')
-const distDir = resolve('dist')
-const viewDir = resolve('src/view')
-
-
-function moduleName (modules) {
-  let filename = path.basename(modules)
-  let parts = filename.split('.')
-  parts.pop()
-  filename = parts.join('.')
-  return path.dirname(modules) + '/' + filename
-}
-
-const jsEntry = (() => {
-  const obj = {}
-  const files = glob.sync(['js/conf/*/!(_*).js'], { cwd: assetsDir })
-  files.forEach(val => {
-    let parts = val.split(/[\\/]/)
-    parts.shift()
-    parts.shift()
-    let modules = parts.join('/')
-    let entry = moduleName(modules)
-    obj[entry] = ['babel-polyfill', val]
-  })
-  return obj
-})()
-
-const minifierConfig = isProduction ? {
-  removeComments: true,
-  removeCommentsFromCDATA: true,
-  collapseWhitespace: true,
-  collapseBooleanAttributes: true,
-  removeRedundantAttributes: true,
-  useShortDoctype: true,
-  minifyJS: true,
-  removeScriptTypeAttributes: true,
-  maxLineLength: 1024
-} : false
-
-const getPageEntry = view => jsEntry[view] ? view : ''
-
-// Redirect output page
-const pageRewriter = {
-  'view/home/index.*': 'index.html'
-}
-
-const isEmpty = o => {
-  for (let k in o) {
-    if (o.hasOwnProperty(k)) {
-      return
-    }
-  }
-  return true
-}
-
-const unixPath = v => v.replace(/\\/g, '/')
-
-const rewriterPath = p => {
-  if (isEmpty(pageRewriter)) {
-    return
-  }
-
-  for (let k in pageRewriter) {
-    let regx = new RegExp(k)
-
-    if (regx.test(unixPath(p))) {
-      return pageRewriter[k]
-    }
-  }
-}
-const version = new Date().getTime();
-const pages = glob.sync(['*/!(_*).html'], { cwd: viewDir }).map(p => {
-  let pagePath = `${path.join(viewDir, p)}`
-  let newPagePath = rewriterPath(pagePath)
-
-  let entry = getPageEntry(p.replace('.html', ''))
-  let chunks = ['common']
-  if (entry) {
-    chunks.push(entry)
-  }
-  return new HtmlWebpackPlugin({
-    filename: newPagePath || path.join('view', p),
-    template: `${path.join('src/view', p)}`,
-    cache: true,
-    favicon:'./favicon.png',
-    inject: true,
-    hash: version,
-    chunks: chunks,
-    minify: minifierConfig
-  })
-})
-const baseConfig = {
-  entry: jsEntry,
-  output: {
-    path: distDir,
-    publicPath: '/',
-    filename: 'js/[name].[chunkhash:7]'+version+'.js'
-  },
-  module: {
-    rules: [
-      {
-        test: /\.(js|vue)$/,
-        loader: 'eslint-loader',
-        enforce: 'pre',
-        include: [resolve('src')],
-        options: {
-          formatter: require('eslint-friendly-formatter'),
-          emitWarning: true
-        }
-      },
-      {
-        test: /\.vue$/,
-        loader: 'vue-loader',
-        options: {
-          hotReload: !isProduction
-        }
-      },
-      {
-        test: /\.js$/,
-        exclude: /(node_modules|bower_components)/,
-        use: [
-          {
-            loader: 'babel-loader',
-            options: {
-              cacheDirectory: true,
-              cacheIdentifier: true
-            }
-          }
-        ]
-      },
-      {
-        test: /\.(sa|sc|c)ss$/,
-        use: [
-          {
-            loader: MiniCssExtractPlugin.loader,
-            options: {
-              hmr: !isProduction,
-            },
-          },
-          'css-loader',
-          {
-            loader: 'postcss-loader',
-            options: {
-              plugins: (loader) => [
-                require('autoprefixer')({
-                  overrideBrowserslist: [
-                    "Android 4.1",
-                    "iOS 7.1",
-                    "Chrome > 31",
-                    "ff > 31",
-                    "ie >= 8"
-                  ]
-                }),
-                require('cssnano')
-              ]
-            }
-          },
-          'sass-loader'
-        ]
-      },
-      {
-        test: /\.(png|jpe?g|gif|svg|cur)(\?.*)?$/,
-        loader: 'file-loader',
-        options: {
-          esModule: false,
-          name: 'images/[name].[ext]?[hash]'
-        }
-      },
-      {
-        test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
-        loader: 'url-loader',
-        options: {
-          esModule: false,
-          limit: 10000,
-          // publicPath: distDir,
-          name: 'font/[name].[hash:7].[ext]'
-        }
-      }
-    ]
-  },
-  resolve: {
-    modules: [
-      resolve('node_modules'),
-      resolve('src'),
-      resolve('src/js')
-    ],
-    alias: {
-      '@': resolve('src/js'),
-      '~': resolve('src/lib'),
-      'jquery':'jquery/dist/jquery.min.js',
-      'jquery-ui': 'jquery-ui'
-    },
-    extensions: ['*', '.js', 'json', '.vue', '.scss']
-  },
-  plugins: [
-    new VueLoaderPlugin(),
-    new webpack.ProvidePlugin({ vue: 'Vue', _: 'lodash',jQuery:"jquery/dist/jquery.min.js",$:"jquery/dist/jquery.min.js" }),
-    new webpack.DefinePlugin({
-      PUBLIC_PATH: JSON.stringify(process.env.PUBLIC_PATH ? process.env.PUBLIC_PATH : '')
-    }),
-    ...pages
-  ]
-}
-
-module.exports = {
-  isProduction,
-  assetsDir,
-  distDir,
-  baseConfig
-}
diff --git a/dolphinscheduler-ui/build/webpack.config.dev.js b/dolphinscheduler-ui/build/webpack.config.dev.js
deleted file mode 100644
index 0513789812..0000000000
--- a/dolphinscheduler-ui/build/webpack.config.dev.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-const webpack = require('webpack')
-const merge = require('webpack-merge')
-const { assetsDir, baseConfig } = require('./config')
-const MiniCssExtractPlugin = require('mini-css-extract-plugin')
-const ProgressPlugin = require('progress-bar-webpack-plugin')
-const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
-const portfinder = require('portfinder')
-const getEnv = require('env-parse').getEnv
-
-const config = merge.smart(baseConfig, {
-  devtool: 'eval-source-map',
-  output: {
-    filename: 'js/[name].js'
-  },
-  devServer: {
-    hot: true,
-    contentBase: assetsDir,
-    publicPath: baseConfig.output.publicPath,
-    host: getEnv('DEV_HOST', 'localhost'),
-    port: getEnv('DEV_PORT', 8888),
-    noInfo: false,
-    overlay: { warnings: false, errors: true },
-    historyApiFallback: true,
-    disableHostCheck: true,
-    proxy: {
-      '/dolphinscheduler': {
-        timeout: 1800000,
-        target: getEnv('API_BASE', 'http://local.dev:8080/backend'),
-        changeOrigin: true
-      }
-    },
-    progress: true,
-    quiet: true,
-    stats: {
-      colors: true
-    },
-    clientLogLevel: 'warning'
-  },
-  plugins: [
-    new ProgressPlugin(),
-    new webpack.HotModuleReplacementPlugin(),
-    new MiniCssExtractPlugin({ filename: 'css/[name].css' })
-  ],
-  mode: 'development'
-})
-
-module.exports = new Promise((resolve, reject) => {
-  portfinder.basePort = process.env.PORT || config.devServer.port
-  portfinder.getPort((err, port) => {
-    if (err) {
-      reject(err)
-    } else {
-      // publish the new Port, necessary for e2e tests
-      process.env.PORT = port
-      // add port to devServer config
-      config.devServer.port = port
-      // Add FriendlyErrorsPlugin
-      config.plugins.push(new FriendlyErrorsPlugin({
-        compilationSuccessInfo: {
-          messages: [`Your application is running here: http://${config.devServer.host}:${port}`],
-        },
-        onErrors: () => {
-          const notifier = require('node-notifier')
-          return (severity, errors) => {
-            if (severity !== 'error') return
-            const error = errors[0]
-            const filename = error.file && error.file.split('!').pop()
-            notifier.notify({
-              title: packageConfig.name,
-              message: severity + ': ' + error.name,
-              subtitle: filename || ''
-            })
-          }
-        }
-      }))
-      resolve(config)
-    }
-  })
-})
diff --git a/dolphinscheduler-ui/build/webpack.config.prod.js b/dolphinscheduler-ui/build/webpack.config.prod.js
deleted file mode 100644
index 1024ac6724..0000000000
--- a/dolphinscheduler-ui/build/webpack.config.prod.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-const path = require('path')
-const webpack = require('webpack')
-const merge = require('webpack-merge')
-const CopyWebpackPlugin = require('copy-webpack-plugin')
-const { baseConfig } = require('./config')
-const TerserPlugin = require('terser-webpack-plugin')
-const MiniCssExtractPlugin = require('mini-css-extract-plugin')
-const ProgressPlugin = require('progress-bar-webpack-plugin')
-
-const resolve = dir =>
-  path.resolve(__dirname, '..', dir)
-
-const config = merge.smart(baseConfig, {
-  devtool: 'source-map',
-  output: {
-    filename: 'js/[name].[chunkhash:7].js'
-  },
-  plugins: [
-    new ProgressPlugin(),
-    new MiniCssExtractPlugin({ filename: 'css/[name].[contenthash:7].css' }),
-    new webpack.optimize.OccurrenceOrderPlugin(),
-    new CopyWebpackPlugin([
-      {
-        from: resolve('src/lib'),
-        to: resolve('dist/lib')
-      },
-      {
-        from: resolve('src/images'),
-        to: resolve('dist/images')
-      },
-    ]),
-  ],
-  optimization: {
-    minimize: true,
-    minimizer: [
-      new TerserPlugin({
-        terserOptions: {
-          compress: {}
-        },
-        cache: true,
-        parallel: true,
-        sourceMap: false,
-        exclude: /node_modules/,
-        extractComments: (astNode, comment) => {
-          if (/^!|@preserve|@license|@cc_on|MIT/i.test(comment.value)) {
-            return true
-          }
-          return false
-        }
-      }),
-    ],
-    sideEffects: true
-  },
-  mode: 'production'
-})
-
-module.exports = config
diff --git a/dolphinscheduler-ui/build/webpack.config.release.js b/dolphinscheduler-ui/build/webpack.config.release.js
deleted file mode 100644
index 9f41c3973f..0000000000
--- a/dolphinscheduler-ui/build/webpack.config.release.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-const merge = require('webpack-merge')
-const prodConfig = require('./webpack.config.prod')
-
-const config = merge.smart(prodConfig, {
-  output: {
-    publicPath: '/dolphinscheduler/ui/'
-  }
-})
-
-module.exports = config
diff --git a/dolphinscheduler-ui/favicon.png b/dolphinscheduler-ui/favicon.png
deleted file mode 100644
index acf4cf74c8..0000000000
Binary files a/dolphinscheduler-ui/favicon.png and /dev/null differ
diff --git a/dolphinscheduler-ui-next/index.html b/dolphinscheduler-ui/index.html
similarity index 100%
rename from dolphinscheduler-ui-next/index.html
rename to dolphinscheduler-ui/index.html
diff --git a/dolphinscheduler-ui/package.json b/dolphinscheduler-ui/package.json
index fe21c592c5..c240fa06d9 100644
--- a/dolphinscheduler-ui/package.json
+++ b/dolphinscheduler-ui/package.json
@@ -1,107 +1,58 @@
 {
-  "name": "dolphinscheduler-ui-frontend",
-  "version": "1.0.0",
-  "description": "A vue.js project",
-  "author": "DolphinScheduler",
-  "repository": "https://github.com/apache/dolphinscheduler",
-  "license": "Apache-2.0",
+  "name": "dolphinscheduler-ui",
+  "version": "0.0.0",
   "scripts": {
-    "build": "npm run clean && cross-env NODE_ENV=production webpack --config ./build/webpack.config.prod.js",
-    "dev": "cross-env NODE_ENV=development webpack-dev-server --config ./build/webpack.config.dev.js",
-    "clean": "rimraf dist",
-    "start": "npm run dev",
-    "lint": "eslint --ext .js,.vue ./src",
-    "lint:fix": "eslint --ext .js,.vue --fix ./src",
-    "build:release": "npm run clean && cross-env NODE_ENV=production PUBLIC_PATH=/dolphinscheduler/ui webpack --config ./build/webpack.config.release.js"
+    "dev": "vite",
+    "build:prod": "vue-tsc --noEmit && vite build --mode production",
+    "preview": "vite preview",
+    "lint": "eslint src --fix --ext .ts,.tsx,.vue",
+    "prettier": "prettier --write \"src/**/*.{vue,ts,tsx}\""
   },
   "dependencies": {
-    "@antv/layout": "^0.1.18",
-    "@antv/x6": "^1.25.5",
-    "@form-create/element-ui": "^1.0.18",
-    "@riophae/vue-treeselect": "^0.4.0",
-    "axios": "^0.16.2",
-    "bootstrap": "3.3.7",
-    "canvg": "1.5.1",
-    "clipboard": "^2.0.1",
-    "codemirror": "^5.43.0",
-    "d3": "^3.5.17",
-    "dagre": "^0.8.5",
-    "dayjs": "^1.7.8",
-    "echarts": "4.1.0",
-    "element-ui": "2.13.2",
-    "html2canvas": "^0.5.0-beta4",
-    "jquery": "3.3.1",
-    "jquery-ui": "^1.12.1",
-    "js-cookie": "^2.2.1",
-    "jsplumb": "^2.8.6",
-    "lodash": "^4.17.11",
-    "moment-timezone": "^0.5.33",
-    "normalize.css": "^8.0.1",
-    "remixicon": "^2.5.0",
-    "vue": "^2.5.17",
-    "vue-router": "^3.0.0",
-    "vuex": "^3.0.0",
-    "vuex-router-sync": "^5.0.0"
+    "@antv/layout": "^0.1.31",
+    "@antv/x6": "^1.30.1",
+    "@vueuse/core": "^7.6.2",
+    "axios": "^0.24.0",
+    "date-fns": "^2.28.0",
+    "date-fns-tz": "^1.3.0",
+    "echarts": "^5.3.0",
+    "js-cookie": "^3.0.1",
+    "lodash": "^4.17.21",
+    "monaco-editor": "^0.31.1",
+    "naive-ui": "^2.27.0",
+    "nprogress": "^0.2.0",
+    "pinia": "^2.0.11",
+    "pinia-plugin-persistedstate": "^1.2.2",
+    "qs": "^6.10.3",
+    "screenfull": "^6.0.1",
+    "vfonts": "^0.1.0",
+    "vue": "^3.2.31",
+    "vue-i18n": "^9.2.0-beta.30",
+    "vue-router": "^4.0.12"
   },
   "devDependencies": {
-    "acorn": "^7.4.1",
-    "autoprefixer": "^9.1.0",
-    "babel-core": "^6.25.0",
-    "babel-helper-vue-jsx-merge-props": "^2.0.2",
-    "babel-loader": "^7.1.1",
-    "babel-plugin-syntax-dynamic-import": "^6.18.0",
-    "babel-plugin-syntax-jsx": "^6.18.0",
-    "babel-plugin-transform-class-properties": "^6.24.1",
-    "babel-plugin-transform-object-rest-spread": "^6.26.0",
-    "babel-plugin-transform-runtime": "^6.23.0",
-    "babel-plugin-transform-vue-jsx": "^3.5.0",
-    "babel-polyfill": "^6.26.0",
-    "babel-preset-env": "^1.6.1",
-    "copy-webpack-plugin": "^4.5.2",
-    "cross-env": "^5.2.0",
-    "css-loader": "^0.28.8",
-    "cssnano": "4.1.10",
-    "env-parse": "^1.0.5",
-    "eslint": "^6.8.0",
-    "eslint-config-standard": "^14.1.1",
-    "eslint-friendly-formatter": "^4.0.1",
-    "eslint-loader": "^4.0.2",
-    "eslint-plugin-import": "^2.20.2",
-    "eslint-plugin-node": "^11.1.0",
-    "eslint-plugin-promise": "^4.2.1",
-    "eslint-plugin-standard": "^4.0.1",
-    "eslint-plugin-vue": "^7.2.0",
-    "file-loader": "^5.0.2",
-    "friendly-errors-webpack-plugin": "^1.7.0",
-    "globby": "^8.0.1",
-    "html-loader": "^0.5.5",
-    "html-webpack-plugin": "^3.2.0",
-    "mini-css-extract-plugin": "^0.8.2",
-    "node-notifier": "^8.0.0",
-    "node-sass": "^4.14.1",
-    "pack": "^2.2.0",
-    "portfinder": "^1.0.28",
-    "postcss-loader": "^3.0.0",
-    "progress-bar-webpack-plugin": "^1.12.1",
-    "rimraf": "^2.6.2",
-    "sass-loader": "^8.0.0",
-    "terser-webpack-plugin": "^2.1.3",
-    "url-loader": "^3.0.0",
-    "vue-loader": "^15.8.3",
-    "vue-style-loader": "^4.1.1",
-    "vue-template-compiler": "^2.5.16",
-    "webpack": "^4.41.3",
-    "webpack-cli": "^3.3.10",
-    "webpack-dev-server": "^3.9.0",
-    "webpack-merge": "^4.2.2"
-  },
-  "browserslist": [
-    "> 1%",
-    "last 2 versions",
-    "ie >= 10",
-    "edge >= 12",
-    "firefox >= 28",
-    "chrome >= 29",
-    "opera >= 17"
-  ]
+    "@types/js-cookie": "^3.0.1",
+    "@types/lodash": "^4.14.182",
+    "@types/node": "^16.11.25",
+    "@types/nprogress": "^0.2.0",
+    "@types/qs": "^6.9.7",
+    "@typescript-eslint/eslint-plugin": "^5.12.1",
+    "@typescript-eslint/parser": "^5.12.1",
+    "@vicons/antd": "^0.11.0",
+    "@vitejs/plugin-vue": "^1.10.2",
+    "@vitejs/plugin-vue-jsx": "^1.3.7",
+    "dart-sass": "^1.25.0",
+    "eslint": "^8.9.0",
+    "eslint-config-prettier": "^8.4.0",
+    "eslint-plugin-prettier": "^4.0.0",
+    "eslint-plugin-vue": "^8.5.0",
+    "prettier": "^2.5.1",
+    "sass": "^1.49.8",
+    "sass-loader": "^12.6.0",
+    "typescript": "^4.5.5",
+    "typescript-plugin-css-modules": "^3.4.0",
+    "vite": "^2.8.4",
+    "vite-plugin-compression": "^0.3.6",
+    "vue-tsc": "^0.28.10"
+  }
 }
diff --git a/dolphinscheduler-ui-next/pnpm-lock.yaml b/dolphinscheduler-ui/pnpm-lock.yaml
similarity index 100%
rename from dolphinscheduler-ui-next/pnpm-lock.yaml
rename to dolphinscheduler-ui/pnpm-lock.yaml
diff --git a/dolphinscheduler-ui/pom.xml b/dolphinscheduler-ui/pom.xml
index 628e8c0481..9d22622417 100644
--- a/dolphinscheduler-ui/pom.xml
+++ b/dolphinscheduler-ui/pom.xml
@@ -29,8 +29,8 @@
   <name>${project.artifactId}</name>
 
   <properties>
-    <node.version>v14.15.1</node.version>
-    <npm.version>6.14.11</npm.version>
+    <node.version>v16.13.1</node.version>
+    <pnpm.version>v6.32.6</pnpm.version>
     <sonar.sources>src</sonar.sources>
   </properties>
 
@@ -45,29 +45,19 @@
             <version>${frontend-maven-plugin.version}</version>
             <executions>
               <execution>
-                <id>install node and npm</id>
+                <id>install node and pnpm</id>
                 <goals>
-                  <goal>install-node-and-npm</goal>
+                  <goal>install-node-and-pnpm</goal>
                 </goals>
                 <configuration>
                   <nodeVersion>${node.version}</nodeVersion>
-                  <npmVersion>${npm.version}</npmVersion>
+                  <pnpmVersion>${pnpm.version}</pnpmVersion>
                 </configuration>
               </execution>
               <execution>
-                <id>npm install node-sass --unsafe-perm</id>
+                <id>pnpm install</id>
                 <goals>
-                  <goal>npm</goal>
-                </goals>
-                <phase>generate-resources</phase>
-                <configuration>
-                  <arguments>install node-sass --unsafe-perm</arguments>
-                </configuration>
-              </execution>
-              <execution>
-                <id>npm install</id>
-                <goals>
-                  <goal>npm</goal>
+                  <goal>pnpm</goal>
                 </goals>
                 <phase>generate-resources</phase>
                 <configuration>
@@ -75,12 +65,12 @@
                 </configuration>
               </execution>
               <execution>
-                <id>npm run build:release</id>
+                <id>pnpm run build:prod</id>
                 <goals>
-                  <goal>npm</goal>
+                  <goal>pnpm</goal>
                 </goals>
                 <configuration>
-                  <arguments>run build:release</arguments>
+                  <arguments>run build:prod</arguments>
                 </configuration>
               </execution>
             </executions>
diff --git a/dolphinscheduler-ui-next/public/favicon.ico b/dolphinscheduler-ui/public/favicon.ico
similarity index 100%
rename from dolphinscheduler-ui-next/public/favicon.ico
rename to dolphinscheduler-ui/public/favicon.ico
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/conditions.png b/dolphinscheduler-ui/public/images/task-icons/conditions.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/conditions.png
rename to dolphinscheduler-ui/public/images/task-icons/conditions.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/conditions_hover.png b/dolphinscheduler-ui/public/images/task-icons/conditions_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/conditions_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/conditions_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/data_quality.png b/dolphinscheduler-ui/public/images/task-icons/data_quality.png
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/data_quality.png
rename to dolphinscheduler-ui/public/images/task-icons/data_quality.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/data_quality_hover.png b/dolphinscheduler-ui/public/images/task-icons/data_quality_hover.png
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/data_quality_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/data_quality_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/datax.png b/dolphinscheduler-ui/public/images/task-icons/datax.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/datax.png
rename to dolphinscheduler-ui/public/images/task-icons/datax.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/datax_hover.png b/dolphinscheduler-ui/public/images/task-icons/datax_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/datax_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/datax_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/dependent.png b/dolphinscheduler-ui/public/images/task-icons/dependent.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/dependent.png
rename to dolphinscheduler-ui/public/images/task-icons/dependent.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/dependent_hover.png b/dolphinscheduler-ui/public/images/task-icons/dependent_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/dependent_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/dependent_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/emr.png b/dolphinscheduler-ui/public/images/task-icons/emr.png
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/emr.png
rename to dolphinscheduler-ui/public/images/task-icons/emr.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/emr_hover.png b/dolphinscheduler-ui/public/images/task-icons/emr_hover.png
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/emr_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/emr_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/flink.png b/dolphinscheduler-ui/public/images/task-icons/flink.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/flink.png
rename to dolphinscheduler-ui/public/images/task-icons/flink.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/flink_hover.png b/dolphinscheduler-ui/public/images/task-icons/flink_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/flink_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/flink_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/http.png b/dolphinscheduler-ui/public/images/task-icons/http.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/http.png
rename to dolphinscheduler-ui/public/images/task-icons/http.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/http_hover.png b/dolphinscheduler-ui/public/images/task-icons/http_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/http_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/http_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/mr.png b/dolphinscheduler-ui/public/images/task-icons/mr.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/mr.png
rename to dolphinscheduler-ui/public/images/task-icons/mr.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/mr_hover.png b/dolphinscheduler-ui/public/images/task-icons/mr_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/mr_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/mr_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/pigeon.png b/dolphinscheduler-ui/public/images/task-icons/pigeon.png
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/pigeon.png
rename to dolphinscheduler-ui/public/images/task-icons/pigeon.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/pigeon_hover.png b/dolphinscheduler-ui/public/images/task-icons/pigeon_hover.png
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/pigeon_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/pigeon_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/procedure.png b/dolphinscheduler-ui/public/images/task-icons/procedure.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/procedure.png
rename to dolphinscheduler-ui/public/images/task-icons/procedure.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/procedure_hover.png b/dolphinscheduler-ui/public/images/task-icons/procedure_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/procedure_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/procedure_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/python.png b/dolphinscheduler-ui/public/images/task-icons/python.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/python.png
rename to dolphinscheduler-ui/public/images/task-icons/python.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/python_hover.png b/dolphinscheduler-ui/public/images/task-icons/python_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/python_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/python_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/seatunnel.png b/dolphinscheduler-ui/public/images/task-icons/seatunnel.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/seatunnel.png
rename to dolphinscheduler-ui/public/images/task-icons/seatunnel.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/seatunnel_hover.png b/dolphinscheduler-ui/public/images/task-icons/seatunnel_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/seatunnel_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/seatunnel_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/shell.png b/dolphinscheduler-ui/public/images/task-icons/shell.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/shell.png
rename to dolphinscheduler-ui/public/images/task-icons/shell.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/shell_hover.png b/dolphinscheduler-ui/public/images/task-icons/shell_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/shell_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/shell_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/spark.png b/dolphinscheduler-ui/public/images/task-icons/spark.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/spark.png
rename to dolphinscheduler-ui/public/images/task-icons/spark.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/spark_hover.png b/dolphinscheduler-ui/public/images/task-icons/spark_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/spark_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/spark_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/sql.png b/dolphinscheduler-ui/public/images/task-icons/sql.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/sql.png
rename to dolphinscheduler-ui/public/images/task-icons/sql.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/sql_hover.png b/dolphinscheduler-ui/public/images/task-icons/sql_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/sql_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/sql_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/sqoop.png b/dolphinscheduler-ui/public/images/task-icons/sqoop.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/sqoop.png
rename to dolphinscheduler-ui/public/images/task-icons/sqoop.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/sqoop_hover.png b/dolphinscheduler-ui/public/images/task-icons/sqoop_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/sqoop_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/sqoop_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/sub_process.png b/dolphinscheduler-ui/public/images/task-icons/sub_process.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/sub_process.png
rename to dolphinscheduler-ui/public/images/task-icons/sub_process.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/sub_process_hover.png b/dolphinscheduler-ui/public/images/task-icons/sub_process_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/sub_process_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/sub_process_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/switch.png b/dolphinscheduler-ui/public/images/task-icons/switch.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/switch.png
rename to dolphinscheduler-ui/public/images/task-icons/switch.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/switch_hover.png b/dolphinscheduler-ui/public/images/task-icons/switch_hover.png
old mode 100755
new mode 100644
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/switch_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/switch_hover.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/zeppelin.png b/dolphinscheduler-ui/public/images/task-icons/zeppelin.png
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/zeppelin.png
rename to dolphinscheduler-ui/public/images/task-icons/zeppelin.png
diff --git a/dolphinscheduler-ui-next/public/images/task-icons/zeppelin_hover.png b/dolphinscheduler-ui/public/images/task-icons/zeppelin_hover.png
similarity index 100%
rename from dolphinscheduler-ui-next/public/images/task-icons/zeppelin_hover.png
rename to dolphinscheduler-ui/public/images/task-icons/zeppelin_hover.png
diff --git a/dolphinscheduler-ui-next/public/lodash.min.js b/dolphinscheduler-ui/public/lodash.min.js
similarity index 100%
rename from dolphinscheduler-ui-next/public/lodash.min.js
rename to dolphinscheduler-ui/public/lodash.min.js
diff --git a/dolphinscheduler-ui-next/src/App.tsx b/dolphinscheduler-ui/src/App.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/App.tsx
rename to dolphinscheduler-ui/src/App.tsx
diff --git a/dolphinscheduler-ui-next/src/assets/images/logo-dark.svg b/dolphinscheduler-ui/src/assets/images/logo-dark.svg
similarity index 100%
rename from dolphinscheduler-ui-next/src/assets/images/logo-dark.svg
rename to dolphinscheduler-ui/src/assets/images/logo-dark.svg
diff --git a/dolphinscheduler-ui-next/src/assets/images/logo-light.svg b/dolphinscheduler-ui/src/assets/images/logo-light.svg
similarity index 100%
rename from dolphinscheduler-ui-next/src/assets/images/logo-light.svg
rename to dolphinscheduler-ui/src/assets/images/logo-light.svg
diff --git a/dolphinscheduler-ui-next/src/assets/styles/default.scss b/dolphinscheduler-ui/src/assets/styles/default.scss
similarity index 100%
rename from dolphinscheduler-ui-next/src/assets/styles/default.scss
rename to dolphinscheduler-ui/src/assets/styles/default.scss
diff --git a/dolphinscheduler-ui-next/src/common/column-width-config.ts b/dolphinscheduler-ui/src/common/column-width-config.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/common/column-width-config.ts
rename to dolphinscheduler-ui/src/common/column-width-config.ts
diff --git a/dolphinscheduler-ui-next/src/common/common.ts b/dolphinscheduler-ui/src/common/common.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/common/common.ts
rename to dolphinscheduler-ui/src/common/common.ts
diff --git a/dolphinscheduler-ui-next/src/common/timezone.ts b/dolphinscheduler-ui/src/common/timezone.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/common/timezone.ts
rename to dolphinscheduler-ui/src/common/timezone.ts
diff --git a/dolphinscheduler-ui-next/src/common/types.ts b/dolphinscheduler-ui/src/common/types.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/common/types.ts
rename to dolphinscheduler-ui/src/common/types.ts
diff --git a/dolphinscheduler-ui/src/components/Counter.vue b/dolphinscheduler-ui/src/components/Counter.vue
deleted file mode 100644
index 74dbfcd8de..0000000000
--- a/dolphinscheduler-ui/src/components/Counter.vue
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div>
-    <div>{{ computedCount }}</div>
-    <button @click="inc">加</button>
-    <button @click="dec">减</button>
-    <button @click="reset">重置</button>
-  </div>
-</template>
-
-<script>
-  export default {
-    props: {
-      factor: { type: Number, default: 1 }
-    },
-    data () {
-      return {
-        count: 0
-      }
-    },
-    methods: {
-      inc () {
-        this.count++
-      },
-      dec () {
-        this.count--
-      },
-      reset () {
-        this.count = 0
-      }
-    },
-    computed: {
-      computedCount: function () {
-        return this.count * this.factor
-      }
-    }
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/components/Message.vue b/dolphinscheduler-ui/src/components/Message.vue
deleted file mode 100644
index aba5ea6a56..0000000000
--- a/dolphinscheduler-ui/src/components/Message.vue
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <h1> {{ msg || 'default message' }}</h1>
-</template>
-
-<script>
-  export default {
-    name: 'message',
-    props: [
-      'msg'
-    ]
-  }
-</script>
diff --git a/dolphinscheduler-ui-next/src/components/button-link/index.module.scss b/dolphinscheduler-ui/src/components/button-link/index.module.scss
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/button-link/index.module.scss
rename to dolphinscheduler-ui/src/components/button-link/index.module.scss
diff --git a/dolphinscheduler-ui-next/src/components/button-link/index.tsx b/dolphinscheduler-ui/src/components/button-link/index.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/button-link/index.tsx
rename to dolphinscheduler-ui/src/components/button-link/index.tsx
diff --git a/dolphinscheduler-ui-next/src/components/card/index.tsx b/dolphinscheduler-ui/src/components/card/index.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/card/index.tsx
rename to dolphinscheduler-ui/src/components/card/index.tsx
diff --git a/dolphinscheduler-ui-next/src/components/chart/index.ts b/dolphinscheduler-ui/src/components/chart/index.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/chart/index.ts
rename to dolphinscheduler-ui/src/components/chart/index.ts
diff --git a/dolphinscheduler-ui-next/src/components/chart/modules/Bar.tsx b/dolphinscheduler-ui/src/components/chart/modules/Bar.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/chart/modules/Bar.tsx
rename to dolphinscheduler-ui/src/components/chart/modules/Bar.tsx
diff --git a/dolphinscheduler-ui-next/src/components/chart/modules/Gauge.tsx b/dolphinscheduler-ui/src/components/chart/modules/Gauge.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/chart/modules/Gauge.tsx
rename to dolphinscheduler-ui/src/components/chart/modules/Gauge.tsx
diff --git a/dolphinscheduler-ui-next/src/components/chart/modules/Pie.tsx b/dolphinscheduler-ui/src/components/chart/modules/Pie.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/chart/modules/Pie.tsx
rename to dolphinscheduler-ui/src/components/chart/modules/Pie.tsx
diff --git a/dolphinscheduler-ui-next/src/components/chart/modules/Tree.tsx b/dolphinscheduler-ui/src/components/chart/modules/Tree.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/chart/modules/Tree.tsx
rename to dolphinscheduler-ui/src/components/chart/modules/Tree.tsx
diff --git a/dolphinscheduler-ui-next/src/components/chart/modules/types.ts b/dolphinscheduler-ui/src/components/chart/modules/types.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/chart/modules/types.ts
rename to dolphinscheduler-ui/src/components/chart/modules/types.ts
diff --git a/dolphinscheduler-ui-next/src/components/crontab/common.ts b/dolphinscheduler-ui/src/components/crontab/common.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/crontab/common.ts
rename to dolphinscheduler-ui/src/components/crontab/common.ts
diff --git a/dolphinscheduler-ui-next/src/components/crontab/index.module.scss b/dolphinscheduler-ui/src/components/crontab/index.module.scss
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/crontab/index.module.scss
rename to dolphinscheduler-ui/src/components/crontab/index.module.scss
diff --git a/dolphinscheduler-ui-next/src/components/crontab/index.tsx b/dolphinscheduler-ui/src/components/crontab/index.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/crontab/index.tsx
rename to dolphinscheduler-ui/src/components/crontab/index.tsx
diff --git a/dolphinscheduler-ui-next/src/components/crontab/modules/day.tsx b/dolphinscheduler-ui/src/components/crontab/modules/day.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/crontab/modules/day.tsx
rename to dolphinscheduler-ui/src/components/crontab/modules/day.tsx
diff --git a/dolphinscheduler-ui-next/src/components/crontab/modules/time.tsx b/dolphinscheduler-ui/src/components/crontab/modules/time.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/crontab/modules/time.tsx
rename to dolphinscheduler-ui/src/components/crontab/modules/time.tsx
diff --git a/dolphinscheduler-ui-next/src/components/crontab/types.ts b/dolphinscheduler-ui/src/components/crontab/types.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/crontab/types.ts
rename to dolphinscheduler-ui/src/components/crontab/types.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/checkbox.ts b/dolphinscheduler-ui/src/components/form/fields/checkbox.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/checkbox.ts
rename to dolphinscheduler-ui/src/components/form/fields/checkbox.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/custom-parameters.ts b/dolphinscheduler-ui/src/components/form/fields/custom-parameters.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/custom-parameters.ts
rename to dolphinscheduler-ui/src/components/form/fields/custom-parameters.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/get-field.ts b/dolphinscheduler-ui/src/components/form/fields/get-field.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/get-field.ts
rename to dolphinscheduler-ui/src/components/form/fields/get-field.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/index.ts b/dolphinscheduler-ui/src/components/form/fields/index.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/index.ts
rename to dolphinscheduler-ui/src/components/form/fields/index.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/input-number.ts b/dolphinscheduler-ui/src/components/form/fields/input-number.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/input-number.ts
rename to dolphinscheduler-ui/src/components/form/fields/input-number.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/input.ts b/dolphinscheduler-ui/src/components/form/fields/input.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/input.ts
rename to dolphinscheduler-ui/src/components/form/fields/input.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/monaco-editor.ts b/dolphinscheduler-ui/src/components/form/fields/monaco-editor.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/monaco-editor.ts
rename to dolphinscheduler-ui/src/components/form/fields/monaco-editor.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/multi-condition.ts b/dolphinscheduler-ui/src/components/form/fields/multi-condition.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/multi-condition.ts
rename to dolphinscheduler-ui/src/components/form/fields/multi-condition.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/multi-input.ts b/dolphinscheduler-ui/src/components/form/fields/multi-input.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/multi-input.ts
rename to dolphinscheduler-ui/src/components/form/fields/multi-input.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/radio.ts b/dolphinscheduler-ui/src/components/form/fields/radio.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/radio.ts
rename to dolphinscheduler-ui/src/components/form/fields/radio.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/select.ts b/dolphinscheduler-ui/src/components/form/fields/select.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/select.ts
rename to dolphinscheduler-ui/src/components/form/fields/select.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/switch.ts b/dolphinscheduler-ui/src/components/form/fields/switch.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/switch.ts
rename to dolphinscheduler-ui/src/components/form/fields/switch.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/fields/tree-select.ts b/dolphinscheduler-ui/src/components/form/fields/tree-select.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/fields/tree-select.ts
rename to dolphinscheduler-ui/src/components/form/fields/tree-select.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/get-elements-by-json.ts b/dolphinscheduler-ui/src/components/form/get-elements-by-json.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/get-elements-by-json.ts
rename to dolphinscheduler-ui/src/components/form/get-elements-by-json.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/index.tsx b/dolphinscheduler-ui/src/components/form/index.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/index.tsx
rename to dolphinscheduler-ui/src/components/form/index.tsx
diff --git a/dolphinscheduler-ui-next/src/components/form/types.ts b/dolphinscheduler-ui/src/components/form/types.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/types.ts
rename to dolphinscheduler-ui/src/components/form/types.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/use-form.ts b/dolphinscheduler-ui/src/components/form/use-form.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/use-form.ts
rename to dolphinscheduler-ui/src/components/form/use-form.ts
diff --git a/dolphinscheduler-ui-next/src/components/form/utils.ts b/dolphinscheduler-ui/src/components/form/utils.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/form/utils.ts
rename to dolphinscheduler-ui/src/components/form/utils.ts
diff --git a/dolphinscheduler-ui-next/src/components/log-modal/index.tsx b/dolphinscheduler-ui/src/components/log-modal/index.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/log-modal/index.tsx
rename to dolphinscheduler-ui/src/components/log-modal/index.tsx
diff --git a/dolphinscheduler-ui-next/src/components/modal/index.module.scss b/dolphinscheduler-ui/src/components/modal/index.module.scss
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/modal/index.module.scss
rename to dolphinscheduler-ui/src/components/modal/index.module.scss
diff --git a/dolphinscheduler-ui-next/src/components/modal/index.tsx b/dolphinscheduler-ui/src/components/modal/index.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/modal/index.tsx
rename to dolphinscheduler-ui/src/components/modal/index.tsx
diff --git a/dolphinscheduler-ui-next/src/components/modal/types.ts b/dolphinscheduler-ui/src/components/modal/types.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/modal/types.ts
rename to dolphinscheduler-ui/src/components/modal/types.ts
diff --git a/dolphinscheduler-ui-next/src/components/monaco-editor/index.tsx b/dolphinscheduler-ui/src/components/monaco-editor/index.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/monaco-editor/index.tsx
rename to dolphinscheduler-ui/src/components/monaco-editor/index.tsx
diff --git a/dolphinscheduler-ui-next/src/components/monaco-editor/types.ts b/dolphinscheduler-ui/src/components/monaco-editor/types.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/monaco-editor/types.ts
rename to dolphinscheduler-ui/src/components/monaco-editor/types.ts
diff --git a/dolphinscheduler-ui-next/src/components/result/index.tsx b/dolphinscheduler-ui/src/components/result/index.tsx
similarity index 100%
rename from dolphinscheduler-ui-next/src/components/result/index.tsx
rename to dolphinscheduler-ui/src/components/result/index.tsx
diff --git a/dolphinscheduler-ui-next/src/env.d.ts b/dolphinscheduler-ui/src/env.d.ts
similarity index 100%
rename from dolphinscheduler-ui-next/src/env.d.ts
rename to dolphinscheduler-ui/src/env.d.ts
diff --git a/dolphinscheduler-ui/src/images/favicon.ico b/dolphinscheduler-ui/src/images/favicon.ico
deleted file mode 100644
index acf4cf74c8..0000000000
Binary files a/dolphinscheduler-ui/src/images/favicon.ico and /dev/null differ
diff --git a/dolphinscheduler-ui/src/js/conf/home/App.vue b/dolphinscheduler-ui/src/js/conf/home/App.vue
deleted file mode 100644
index c510931488..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/App.vue
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <m-layout>
-    <m-nav slot="top"></m-nav>
-    <router-view slot="bottom" v-if="isRenderRouterView"></router-view>
-  </m-layout>
-</template>
-
-<script>
-  import visibility from '@/module/visibility'
-  import mLayout from '@/module/components/layout/layout'
-  import mNav from '@/module/components/nav/nav'
-  export default {
-    name: 'app',
-    data () {
-      return {
-        isRenderRouterView: true
-      }
-    },
-    methods: {
-      reload () {
-        this.isRenderRouterView = false
-        this.$nextTick(() => {
-          this.isRenderRouterView = true
-        })
-      }
-    },
-    mounted () {
-      visibility.change((evt, hidden) => {
-        if (hidden === false && this.$route.meta.refreshInSwitchedTab) {
-          this.reload()
-        }
-      })
-    },
-    components: { mLayout, mNav }
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/index.js b/dolphinscheduler-ui/src/js/conf/home/index.js
deleted file mode 100644
index c1bcdff63d..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/index.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-// The Vue build version to load with the `import` command
-// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
-import 'babel-polyfill'
-import Vue from 'vue'
-import ElementUI from 'element-ui'
-import locale from 'element-ui/lib/locale/lang/en'
-import 'element-ui/lib/theme-chalk/index.css'
-import App from './App'
-import router from './router'
-import store from './store'
-import i18n from '@/module/i18n'
-import { sync } from 'vuex-router-sync'
-import Chart from '@/module/ana-charts'
-import '@/module/filter/formatDate'
-import '@/module/filter/filterNull'
-import themeData from '@/module/echarts/themeData.json'
-import Permissions from '@/module/permissions'
-import 'sass/conf/home/index.scss'
-import 'bootstrap/dist/css/bootstrap.min.css'
-
-import 'bootstrap/dist/js/bootstrap.min.js'
-import 'canvg/dist/browser/canvg.min.js'
-import 'remixicon/fonts/remixicon.css'
-import formCreate from '@form-create/element-ui'
-
-// Component internationalization
-const useOpt = i18n.globalScope.LOCALE === 'en_US' ? { locale: locale } : {}
-
-i18n.globalScope.LOCALE === 'en_US' ? Vue.use(ElementUI, { locale }) : Vue.use(ElementUI)
-
-// Vue.use(ans)
-Vue.use(useOpt)
-Vue.use(formCreate)
-
-sync(store, router)
-
-Vue.config.devtools = true
-Vue.config.productionTip = true
-Vue.config.silent = true
-
-Chart.config({
-  theme: {
-    name: 'themeName',
-    data: themeData,
-    default: true
-  }
-})
-
-/* eslint-disable no-new */
-Permissions.request().then(res => {
-  // instance
-  new Vue({
-    el: '#app',
-    router,
-    store,
-    render: h => h(App),
-    mounted () {
-      document.addEventListener('click', (e) => {
-        $('#contextmenu').css('visibility', 'hidden')
-      })
-    },
-    methods: {
-      initApp () {
-        $('.global-loading').hide()
-        const bootstrapTooltip = $.fn.tooltip.noConflict()
-        $.fn.tooltip = bootstrapTooltip
-        $('body').tooltip({
-          selector: '[data-toggle="tooltip"]',
-          trigger: 'hover'
-        })
-        // init
-        i18n.init()
-      }
-    },
-    created () {
-      this.initApp()
-    }
-  })
-})
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/canvas.scss b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/canvas.scss
deleted file mode 100644
index ea15323d40..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/canvas.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-.dag-canvas {
-  display: flex;
-  overflow: hidden;
-  height: calc(100% - 50px);
-  padding: 10px 0 0 0;
-  box-sizing: border-box;
-
-  .dag-container {
-    height: 100%;
-    flex: 1;
-    overflow: hidden;
-    position: relative;
-
-    .paper {
-      width: 100%;
-      height: 100%;
-    }
-
-    .minimap {
-      position: absolute;
-      right: 0px;
-      bottom: 0px;
-      border: dashed 1px #e4e4e4;
-      z-index: 9;
-    }
-
-    .scale-slider{
-      position: absolute;
-      height: 140px;
-      width: 70px;
-      right: 0px;
-      bottom: 140px;
-      z-index: 9;
-      display: flex;
-      justify-content: center;
-
-      ::v-deep .el-slider__runway{
-        background-color: #fff;
-      }
-
-      .scale-title{
-        position: absolute;
-        top: -30px;
-        left: 22px;
-        font-size: 12px;
-        color: #666;
-      }
-    }
-
-    .context-menu{
-      position: absolute;
-      left: 100px;
-      top: 100px;
-    }
-
-  }
-}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/canvas.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/canvas.vue
deleted file mode 100644
index 38fb849361..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/canvas.vue
+++ /dev/null
@@ -1,821 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div class="dag-canvas">
-    <dag-taskbar @on-drag-start="onDragStart" />
-    <div
-      class="dag-container"
-      ref="container"
-      @dragenter.prevent
-      @dragover.prevent
-      @dragleave.prevent
-      @drop.stop.prevent="onDrop"
-    >
-      <div ref="paper" class="paper"></div>
-      <div ref="minimap" class="minimap"></div>
-      <div class="scale-slider">
-        <span class="scale-title">{{$t('dagScale')}}</span>
-        <el-slider
-          v-model="scale"
-          vertical
-          :max="2"
-          :min="0.2"
-          :step="0.2"
-          :marks="SCALE_MARKS"
-          @input='scaleChange'
-        />
-      </div>
-      <context-menu ref="contextMenu" />
-    </div>
-    <layout-config-modal ref="layoutModal" @submit="format" />
-  </div>
-</template>
-
-<script>
-  import _ from 'lodash'
-  import { Graph, DataUri } from '@antv/x6'
-  import dagTaskbar from './taskbar.vue'
-  import contextMenu from './contextMenu.vue'
-  import layoutConfigModal, { LAYOUT_TYPE, DEFAULT_LAYOUT_CONFIG } from './layoutConfigModal.vue'
-  import {
-    NODE,
-    EDGE,
-    X6_NODE_NAME,
-    X6_EDGE_NAME,
-    NODE_STATUS_MARKUP
-  } from './x6-helper'
-  import { DagreLayout, GridLayout } from '@antv/layout'
-  import { tasksType, tasksState } from '../config'
-  import { mapActions, mapMutations, mapState } from 'vuex'
-  import nodeStatus from './nodeStatus'
-  import x6StyleMixin from './x6-style-mixin'
-
-  const SCALE_MARKS = {
-    0.2: '0.2',
-    1: '1',
-    2: '2'
-  }
-
-  export default {
-    name: 'dag-canvas',
-    data () {
-      return {
-        graph: null,
-        editable: true,
-        dragging: {
-          // Distance from the mouse to the top-left corner of the dragging element
-          x: 0,
-          y: 0,
-          type: ''
-        },
-        // The canvas scale
-        scale: 1,
-        SCALE_MARKS
-      }
-    },
-    provide () {
-      return {
-        dagCanvas: this
-      }
-    },
-    mixins: [x6StyleMixin],
-    inject: ['dagChart'],
-    components: {
-      dagTaskbar,
-      contextMenu,
-      layoutConfigModal
-    },
-    computed: {
-      ...mapState('dag', ['tasks'])
-    },
-    methods: {
-      ...mapActions('dag', ['genTaskCodeList']),
-      ...mapMutations('dag', ['removeTask']),
-      /**
-       * Recalculate the paper width and height
-       */
-      paperResize () {
-        const w = this.$el.offsetWidth
-        const h = this.$el.offsetHeight
-        this.graph.resize(w, h)
-      },
-      /**
-       * Init graph
-       * This will be called in the dag-chart mounted event
-       * @param {boolean} uneditable
-       */
-      graphInit (editable) {
-        const self = this
-        this.editable = !!editable
-        const paper = this.$refs.paper
-        const minimap = this.$refs.minimap
-        const graph = (this.graph = new Graph({
-          container: paper,
-          selecting: {
-            enabled: true,
-            multiple: true,
-            rubberband: true,
-            rubberEdge: true,
-            movable: true,
-            showNodeSelectionBox: false
-          },
-          scaling: {
-            min: 0.2,
-            max: 2
-          },
-          mousewheel: {
-            enabled: true,
-            modifiers: ['ctrl', 'meta']
-          },
-          scroller: true,
-          grid: {
-            size: 10,
-            visible: true
-          },
-          snapline: true,
-          minimap: {
-            enabled: true,
-            container: minimap,
-            scalable: false,
-            width: 200,
-            height: 120
-          },
-          interacting: {
-            edgeLabelMovable: false,
-            nodeMovable: !!editable,
-            magnetConnectable: !!editable
-          },
-          connecting: {
-            // Whether multiple edges can be created between the same start node and end
-            allowMulti: false,
-            // Whether a point is allowed to connect to a blank position on the canvas
-            allowBlank: false,
-            // The start node and the end node are the same node
-            allowLoop: false,
-            // Whether an edge is allowed to link to another edge
-            allowEdge: false,
-            // Whether edges are allowed to link to nodes
-            allowNode: true,
-            // Whether to allow edge links to ports
-            allowPort: false,
-            // Whether all available ports or nodes are highlighted when you drag the edge
-            highlight: true,
-            createEdge () {
-              return graph.createEdge({ shape: X6_EDGE_NAME })
-            },
-            validateConnection (data) {
-              const { sourceCell, targetCell } = data
-
-              if (
-                sourceCell &&
-                targetCell &&
-                sourceCell.isNode() &&
-                targetCell.isNode()
-              ) {
-                const edgeData = {
-                  sourceId: Number(sourceCell.id),
-                  targetId: Number(targetCell.id)
-                }
-                if (!self.edgeIsValid(edgeData)) {
-                  return false
-                }
-              }
-
-              return true
-            }
-          },
-          highlighting: {
-            nodeAvailable: {
-              name: 'className',
-              args: {
-                className: 'available'
-              }
-            },
-            magnetAvailable: {
-              name: 'className',
-              args: {
-                className: 'available'
-              }
-            },
-            magnetAdsorbed: {
-              name: 'className',
-              args: {
-                className: 'adsorbed'
-              }
-            }
-          }
-        }))
-
-        this.registerX6Shape()
-        this.bindGraphEvent()
-      },
-      /**
-       * Register custom shapes
-       */
-      registerX6Shape () {
-        Graph.unregisterNode(X6_NODE_NAME)
-        Graph.unregisterEdge(X6_EDGE_NAME)
-        Graph.registerNode(X6_NODE_NAME, { ...NODE })
-        Graph.registerEdge(X6_EDGE_NAME, { ...EDGE })
-      },
-      /**
-       * Bind grap event
-       */
-      bindGraphEvent () {
-        this.bindStyleEvent(this.graph)
-        // update scale bar
-        this.graph.on('scale', ({ sx }) => {
-          this.scale = sx
-        })
-        // right click
-        this.graph.on('node:contextmenu', ({ x, y, cell, e }) => {
-          const { x: pageX, y: pageY } = this.graph.localToPage(x, y)
-          this.$refs.contextMenu.show(pageX, pageY)
-          this.$refs.contextMenu.setCurrentTask({
-            name: cell.data.taskName,
-            type: cell.data.taskType,
-            code: Number(cell.id)
-          })
-        })
-        // node double click
-        this.graph.on('node:dblclick', ({ cell }) => {
-          this.dagChart.openFormModel(Number(cell.id), cell.data.taskType)
-        })
-        // create edge label
-        this.graph.on('edge:dblclick', ({ cell }) => {
-          const labelName = this.getEdgeLabelName(cell)
-          this.dagChart.$refs.edgeEditModel.show({
-            id: cell.id,
-            label: labelName
-          })
-        })
-        // Make sure the edge starts with node, not port
-        this.graph.on('edge:connected', ({ isNew, edge }) => {
-          if (isNew) {
-            const sourceNode = edge.getSourceNode()
-            edge.setSource(sourceNode)
-          }
-        })
-
-        // Add a node tool when the mouse entering
-        this.graph.on('node:mouseenter', ({ e, x, y, node, view }) => {
-          const nodeName = node.getData().taskName
-          node.addTools({
-            name: 'button',
-            args: {
-              markup: [
-                {
-                  tagName: 'text',
-                  textContent: nodeName,
-                  attrs: {
-                    fill: '#868686',
-                    'font-size': 16,
-                    'text-anchor': 'center'
-                  }
-                }
-              ],
-              x: 0,
-              y: 0,
-              offset: { x: 0, y: -10 }
-            }
-          })
-        })
-
-        // Remove all tools when the mouse leaving
-        this.graph.on('node:mouseleave', ({ node }) => {
-          node.removeTool('button')
-        })
-      },
-      /**
-       * @param {Edge|string} edge
-       */
-      getEdgeLabelName (edge) {
-        if (typeof edge === 'string') edge = this.graph.getCellById(edge)
-        const labels = edge.getLabels()
-        const labelName = _.get(labels, ['0', 'attrs', 'label', 'text'], '')
-        return labelName
-      },
-      /**
-       * Set edge label by id
-       * @param {string} id
-       * @param {string} label
-       */
-      setEdgeLabel (id, label) {
-        const edge = this.graph.getCellById(id)
-        edge.setLabels(label)
-      },
-      /**
-       * @param {number} limit
-       * @param {string} text
-       * Each Chinese character is equal to two chars
-       */
-      truncateText (text, n) {
-        const exp = /[\u4E00-\u9FA5]/
-        let res = ''
-        let len = text.length
-        let chinese = text.match(new RegExp(exp, 'g'))
-        if (chinese) {
-          len += chinese.length
-        }
-        if (len > n) {
-          let i = 0
-          let acc = 0
-          while (true) {
-            let char = text[i]
-            if (exp.test(char)) {
-              acc += 2
-            } else {
-              acc++
-            }
-            if (acc > n) break
-            res += char
-            i++
-          }
-          res += '...'
-        } else {
-          res = text
-        }
-        return res
-      },
-      /**
-       * Set node name by id
-       * @param {string|number} id
-       * @param {string} name
-       */
-      setNodeName (id, name) {
-        id += ''
-        const node = this.graph.getCellById(id)
-        if (node) {
-          const truncation = this.truncateText(name, 18)
-          node.attr('title/text', truncation)
-          node.setData({ taskName: name })
-        }
-      },
-      setNodeForbiddenStatus (id, flag) {
-        id += ''
-        const node = this.graph.getCellById(id)
-        if (node) {
-          if (flag) {
-            node.attr('rect/fill', '#c4c4c4')
-          } else {
-            node.attr('rect/fill', '#ffffff')
-          }
-        }
-      },
-      /**
-       * Convert the graph to JSON
-       * @return {{cells:Cell[]}}
-       */
-      toJSON () {
-        return this.graph.toJSON()
-      },
-      /**
-       * Generate graph with JSON
-       */
-      fromJSON (json) {
-        this.graph.fromJSON(json)
-      },
-      /**
-       * getNodes
-       * @return {Node[]}
-       */
-      // interface Node {
-      //   id: number;
-      //   position: {x:number;y:number};
-      //   data: {taskType:string;taskName:string;}
-      // }
-      getNodes () {
-        const nodes = this.graph.getNodes()
-        return nodes.map((node) => {
-          const position = node.getPosition()
-          const data = node.getData()
-          return {
-            id: Number(node.id),
-            position: position,
-            data: data
-          }
-        })
-      },
-      /**
-       * getEdges
-       * @return {Edge[]} Edge is inherited from the Cell
-       */
-      // interface Edge {
-      //   id: string;
-      //   label: string;
-      //   sourceId: number;
-      //   targetId: number;
-      // }
-      getEdges () {
-        const edges = this.graph.getEdges()
-        return edges.map((edge) => {
-          const labelData = edge.getLabelAt(0)
-          return {
-            id: edge.id,
-            label: _.get(labelData, ['attrs', 'label', 'text'], ''),
-            sourceId: Number(edge.getSourceCellId()),
-            targetId: Number(edge.getTargetCellId())
-          }
-        })
-      },
-      /**
-       * downloadPNG
-       * @param {string} filename
-       */
-      downloadPNG (fileName = 'chart') {
-        this.graph.toPNG(
-          (dataUri) => {
-            DataUri.downloadDataUri(dataUri, `${fileName}.png`)
-          },
-          {
-            padding: {
-              top: 50,
-              right: 50,
-              bottom: 50,
-              left: 50
-            },
-            backgroundColor: '#f2f3f7'
-          }
-        )
-      },
-      showLayoutModal () {
-        const layoutModal = this.$refs.layoutModal
-        if (layoutModal) {
-          layoutModal.show()
-        }
-      },
-      /**
-       * format
-       * @desc Auto layout use @antv/layout
-       */
-      format (layoutConfig) {
-        if (!layoutConfig) {
-          layoutConfig = DEFAULT_LAYOUT_CONFIG
-        }
-        this.graph.cleanSelection()
-
-        let layoutFunc = null
-        if (layoutConfig.type === LAYOUT_TYPE.DAGRE) {
-          layoutFunc = new DagreLayout({
-            type: LAYOUT_TYPE.DAGRE,
-            rankdir: 'LR',
-            align: 'UL',
-            // Calculate the node spacing based on the edge label length
-            ranksepFunc: (d) => {
-              const edges = this.graph.getOutgoingEdges(d.id)
-              let max = 0
-              if (edges && edges.length > 0) {
-                edges.forEach((edge) => {
-                  const edgeView = this.graph.findViewByCell(edge)
-                  const labelWidth = +edgeView.findAttr(
-                    'width',
-                    _.get(edgeView, ['labelSelectors', '0', 'body'], null)
-                  )
-                  max = Math.max(max, labelWidth)
-                })
-              }
-              return layoutConfig.ranksep + max
-            },
-            nodesep: layoutConfig.nodesep,
-            controlPoints: true
-          })
-        } else if (layoutConfig.type === LAYOUT_TYPE.GRID) {
-          layoutFunc = new GridLayout({
-            type: LAYOUT_TYPE.GRID,
-            preventOverlap: true,
-            preventOverlapPadding: layoutConfig.padding,
-            sortBy: '_index',
-            rows: layoutConfig.rows || undefined,
-            cols: layoutConfig.cols || undefined,
-            nodeSize: 220
-          })
-        }
-        const json = this.toJSON()
-        const nodes = json.cells
-          .filter((cell) => cell.shape === X6_NODE_NAME)
-          .map((item) => {
-            return {
-              ...item,
-              // sort by code aesc
-              _index: -item.id
-            }
-          })
-        const edges = json.cells.filter((cell) => cell.shape === X6_EDGE_NAME)
-        const newModel = layoutFunc.layout({
-          nodes: nodes,
-          edges: edges
-        })
-        this.fromJSON(newModel)
-      },
-      /**
-       * add a node to the graph
-       * @param {string|number} id
-       * @param {string} taskType
-       * @param {{x:number;y:number}} coordinate Default is { x: 100, y: 100 }
-       */
-      addNode (id, taskType, coordinate = { x: 100, y: 100 }) {
-        id += ''
-        if (!tasksType[taskType]) {
-          console.warn(`taskType:${taskType} is invalid!`)
-          return
-        }
-        const node = this.genNodeJSON(id, taskType, '', false, coordinate)
-        this.graph.addNode(node)
-      },
-      /**
-       * generate node json
-       * @param {number|string} id
-       * @param {string} taskType
-       * @param {boolean} forbidden flag
-       * @param {{x:number;y:number}} coordinate Default is { x: 100, y: 100 }
-       */
-      genNodeJSON (id, taskType, taskName, flag, coordinate = { x: 100, y: 100 }) {
-        id += ''
-        const url = require(`../images/task-icos/${taskType.toLocaleLowerCase()}.png`)
-        const truncation = taskName ? this.truncateText(taskName, 18) : id
-
-        const nodeJson = {
-          id: id,
-          shape: X6_NODE_NAME,
-          x: coordinate.x,
-          y: coordinate.y,
-          data: {
-            taskType: taskType,
-            taskName: taskName
-          },
-          attrs: {
-            image: {
-              // Use href instead of xlink:href, you may lose the icon when downloadPNG
-              'xlink:href': url
-            },
-            title: {
-              text: truncation
-            }
-          }
-        }
-
-        if (flag) {
-          nodeJson.attrs.rect = { fill: '#c4c4c4' }
-        }
-
-        return nodeJson
-      },
-      /**
-       * generate edge json
-       * @param {number|string} sourceId
-       * @param {number|string} targetId
-       * @param {string} label
-       */
-      genEdgeJSON (sourceId, targetId, label = '') {
-        sourceId += ''
-        targetId += ''
-        return {
-          shape: X6_EDGE_NAME,
-          source: {
-            cell: sourceId
-          },
-          target: {
-            cell: targetId
-          },
-          labels: label ? [label] : undefined
-        }
-      },
-      /**
-       * remove a node
-       * @param {string|number} id NodeId
-       */
-      removeNode (id) {
-        id += ''
-        this.graph.removeNode(id)
-        this.removeTask(+id)
-      },
-      /**
-       * remove an edge
-       * @param {string} id EdgeId
-       */
-      removeEdge (id) {
-        this.graph.removeEdge(id)
-      },
-      /**
-       * remove multiple cells
-       * @param {Cell[]} cells
-       */
-      removeCells (cells) {
-        this.graph.removeCells(cells)
-        cells.forEach((cell) => {
-          if (cell.isNode()) {
-            this.removeTask(+cell.id)
-          }
-        })
-      },
-      /**
-       * Verify whether edge is valid
-       * The number of edges start with CONDITIONS task cannot be greater than 2
-       */
-      edgeIsValid (edge) {
-        const { sourceId } = edge
-        const sourceTask = this.tasks.find((task) => task.code === sourceId)
-        if (sourceTask.taskType === 'CONDITIONS') {
-          const edges = this.getEdges()
-          return edges.filter((e) => e.sourceId === sourceTask.code).length <= 2
-        }
-        return true
-      },
-      /**
-       * Gets the current selections
-       * @return {Cell[]}
-       */
-      getSelections () {
-        return this.graph.getSelectedCells()
-      },
-      /**
-       * Lock scroller
-       */
-      lockScroller () {
-        this.graph.lockScroller()
-      },
-      /**
-       * Unlock scroller
-       */
-      unlockScroller () {
-        this.graph.unlockScroller()
-      },
-      /**
-       * set node status icon
-       * @param {number} code
-       * @param {string} state
-       */
-      setNodeStatus ({ code, state, taskInstance }) {
-        code += ''
-        const stateProps = tasksState[state]
-        const node = this.graph.getCellById(code)
-        if (node) {
-          // Destroy the previous dom
-          node.removeMarkup()
-          node.setMarkup(NODE.markup.concat(NODE_STATUS_MARKUP))
-          const nodeView = this.graph.findViewByCell(node)
-          const el = nodeView.find('div')[0]
-          nodeStatus({
-            stateProps,
-            taskInstance
-          }).$mount(el)
-        }
-      },
-      /**
-       * Drag && Drop Event
-       */
-      onDragStart (e, taskType) {
-        if (!this.editable) {
-          e.preventDefault()
-          return
-        }
-        this.dragging = {
-          x: e.offsetX,
-          y: e.offsetY,
-          type: taskType.name
-        }
-      },
-      onDrop (e) {
-        const { type, x: eX, y: eY } = this.dragging
-        const { x, y } = this.graph.clientToLocal(e.clientX, e.clientY)
-        this.genTaskCodeList({
-          genNum: 1
-        })
-          .then((res) => {
-            const [code] = res
-            this.addNode(code, type, { x: x - eX, y: y - eY })
-            this.dagChart.openFormModel(code, type)
-          })
-          .catch((err) => {
-            console.error(err)
-          })
-      },
-      /**
-       * Get prev nodes by code
-       * @param {number} code
-       * node1 -> node2 -> node3
-       * getPrevNodes(node2.code) => [node1]
-       */
-      getPrevNodes (code) {
-        const nodes = this.getNodes()
-        const edges = this.getEdges()
-        const nodesMap = {}
-        nodes.forEach((node) => {
-          nodesMap[node.id] = node
-        })
-        return edges
-          .filter((edge) => edge.targetId === code)
-          .map((edge) => nodesMap[edge.sourceId])
-      },
-      /**
-       * set prev nodes
-       * @param {number} code
-       * @param {number[]} preNodeCodes
-       * @param {boolean} override If set to true, setPreNodes will delete all edges that end with the node and rebuild
-       */
-      setPreNodes (code, preNodeCodes, override) {
-        const edges = this.getEdges()
-        const currPreCodes = []
-        edges.forEach((edge) => {
-          if (edge.targetId === code) {
-            if (override) {
-              this.removeEdge(edge.id)
-            } else {
-              currPreCodes.push(edge.sourceId)
-            }
-          }
-        })
-        preNodeCodes.forEach((preCode) => {
-          if (currPreCodes.includes(preCode) || preCode === code) return
-          const edge = this.genEdgeJSON(preCode, code)
-          this.graph.addEdge(edge)
-        })
-      },
-      /**
-       * Get post nodes by code
-       * @param {number} code
-       * node1 -> node2 -> node3
-       * getPostNodes(node2.code) => [node3]
-       */
-      getPostNodes (code) {
-        const nodes = this.getNodes()
-        const edges = this.getEdges()
-        const nodesMap = {}
-        nodes.forEach((node) => {
-          nodesMap[node.id] = node
-        })
-        return edges
-          .filter((edge) => edge.sourceId === code)
-          .map((edge) => nodesMap[edge.targetId])
-      },
-      /**
-       * set post nodes
-       * @param {number} code
-       * @param {number[]} postNodeCodes
-       * @param {boolean} override If set to true, setPreNodes will delete all edges that end with the node and rebuild
-       */
-      setPostNodes (code, postNodeCodes, override) {
-        const edges = this.getEdges()
-        const currPostCodes = []
-        edges.forEach((edge) => {
-          if (edge.sourceId === code) {
-            if (override) {
-              this.removeEdge(edge.id)
-            } else {
-              currPostCodes.push(edge.targetId)
-            }
-          }
-        })
-        postNodeCodes.forEach((postCode) => {
-          if (currPostCodes.includes(postCode) || postCode === code) return
-          const edge = this.genEdgeJSON(code, postCode)
-          this.graph.addEdge(edge)
-        })
-      },
-      /**
-       * Navigate to cell
-       * @param {string} taskName
-       */
-      navigateTo (taskName) {
-        const nodes = this.getNodes()
-        nodes.forEach((node) => {
-          if (node.data.taskName === taskName) {
-            const id = node.id
-            const cell = this.graph.getCellById(id)
-            this.graph.scrollToCell(cell, { animation: { duration: 600 } })
-            this.graph.cleanSelection()
-            this.graph.select(cell)
-          }
-        })
-      },
-      /**
-       * Canvas scale
-       */
-      scaleChange (val) {
-        this.graph.zoomTo(val)
-      }
-    }
-  }
-</script>
-
-<style lang="scss" scoped>
-@import "./canvas";
-</style>
-
-<style lang="scss">
-@import "./x6-style";
-</style>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/contextMenu.scss b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/contextMenu.scss
deleted file mode 100644
index 8872b623cc..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/contextMenu.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-.dag-context-menu{
-  position: fixed;
-  left: 0;
-  top: 0;
-  width: 100px;
-  background-color: #ffffff;
-  box-shadow: 0 2px 10px rgba(0,0,0,0.12);
-
-  .menu-item{
-    padding: 5px 10px;
-    border-bottom: solid 1px #f2f3f7;
-    cursor: pointer;
-    color: rgb(89, 89, 89);
-    font-size: 12px;
-
-    &:hover:not(.disabled){
-      color: #262626;
-      background-color: #f5f5f5; 
-    }
-
-    &.disabled{
-      cursor: not-allowed;
-      color: rgba(89, 89, 89, .4);
-    }
-  }
-}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/contextMenu.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/contextMenu.vue
deleted file mode 100644
index 7f251c54c6..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/contextMenu.vue
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div
-    class="dag-context-menu"
-    v-show="visible"
-    :style="{
-      left: `${left}px`,
-      top: `${top}px`,
-    }"
-  >
-    <menu-item :disabled="!startAvailable" @on-click="onStart">
-      {{ $t("Start") }}
-    </menu-item>
-    <menu-item :disabled="readOnly" @on-click="onEdit">
-      {{ $t("Edit") }}
-    </menu-item>
-    <menu-item :disabled="readOnly" @on-click="onCopy">
-      {{ $t("Copy") }}
-    </menu-item>
-    <menu-item :disabled="readOnly" @on-click="onDelete">
-      {{ $t("Delete") }}
-    </menu-item>
-    <menu-item v-if="dagChart.type === 'instance'" :disabled="!logMenuVisible" @on-click="showLog">
-      {{ $t('View log') }}
-    </menu-item>
-  </div>
-</template>
-
-<script>
-  import { mapState, mapActions, mapMutations } from 'vuex'
-  import { findComponentDownward, uuid } from '@/module/util/'
-  import MenuItem from './menuItem.vue'
-  import _ from 'lodash'
-
-  export default {
-    name: 'dag-context-menu',
-    inject: ['dagChart', 'dagCanvas'],
-    components: {
-      MenuItem
-    },
-    data () {
-      return {
-        visible: false,
-        left: 0,
-        top: 0,
-        canvasRef: null,
-        currentTask: {
-          code: 0,
-          name: '',
-          type: ''
-        }
-      }
-    },
-    computed: {
-      ...mapState('dag', ['isDetails', 'releaseState', 'tasks']),
-      startAvailable () {
-        return (
-          this.$route.name === 'projects-definition-details' &&
-          this.releaseState !== 'NOT_RELEASE'
-        )
-      },
-      readOnly () {
-        return this.isDetails
-      },
-      logMenuVisible () {
-        if (this.dagChart.taskInstances.length > 0) {
-          return !!this.dagChart.taskInstances.find(taskInstance => taskInstance.taskCode === this.currentTask.code)
-        }
-        return true
-      }
-    },
-    mounted () {
-      document.addEventListener('click', (e) => {
-        this.hide()
-      })
-    },
-    methods: {
-      ...mapActions('dag', ['genTaskCodeList']),
-      ...mapMutations('dag', ['addTask']),
-      getDagCanvasRef () {
-        if (this.canvasRef) {
-          return this.canvasRef
-        } else {
-          const canvas = findComponentDownward(this.dagChart, 'dag-canvas')
-          this.canvasRef = canvas
-          return canvas
-        }
-      },
-      setCurrentTask (task) {
-        this.currentTask = { ...this.currentTask, ...task }
-      },
-      onStart () {
-        this.dagChart.startRunning(this.currentTask.code)
-      },
-      onEdit () {
-        this.dagChart.openFormModel(this.currentTask.code, this.currentTask.type)
-      },
-      onCopy () {
-        const nodes = this.dagCanvas.getNodes()
-        const targetNode = nodes.find(
-          (node) => node.id === this.currentTask.code
-        )
-        const targetTask = this.tasks.find(
-          (task) => task.code === this.currentTask.code
-        )
-
-        if (!targetNode || !targetTask) return
-
-        this.genTaskCodeList({
-          genNum: 1
-        })
-          .then((res) => {
-            const [code] = res
-            const taskName = uuid(targetTask.name + '_')
-            const task = {
-              ...targetTask,
-              code,
-              name: taskName
-            }
-            if (targetTask.taskParams) {
-              task.taskParams = _.cloneDeep(targetTask.taskParams)
-            }
-
-            this.dagCanvas.addNode(code, this.currentTask.type, {
-              x: targetNode.position.x + 100,
-              y: targetNode.position.y + 100
-            })
-            this.addTask(task)
-            this.dagCanvas.setNodeName(code, taskName)
-          })
-          .catch((err) => {
-            console.error(err)
-          })
-      },
-      onDelete () {
-        this.dagCanvas.removeNode(this.currentTask.code)
-      },
-      showLog () {
-        this.dagChart.showLogDialog(this.currentTask.code)
-      },
-      show (x = 0, y = 0) {
-        this.dagCanvas.lockScroller()
-        this.visible = true
-        this.left = x + 10
-        this.top = y + 10
-      },
-      hide () {
-        this.dagCanvas.unlockScroller()
-        this.visible = false
-      }
-    }
-  }
-</script>
-
-<style lang="scss" scoped>
-@import "./contextMenu";
-</style>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/draggableBox.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/draggableBox.vue
deleted file mode 100644
index cf824da362..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/draggableBox.vue
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div
-    class="draggable-box"
-    ref="draggable"
-    draggable="true"
-    @dragstart="onDragstart"
-    @drag="onDrag"
-    @dragend="onDragend"
-  >
-    <slot></slot>
-  </div>
-</template>
-
-<script>
-  export default {
-    name: 'draggable-box',
-    data () {
-      return {
-        tmp: null
-      }
-    },
-    methods: {
-      onDragstart (e) {
-        this.$emit('onDragstart', e)
-      },
-      onDrag (e) {
-        this.$emit('onDrag', e)
-      },
-      onDragend (e) {
-        this.$emit('onDragend', e)
-      }
-    }
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/edgeEditModel.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/edgeEditModel.vue
deleted file mode 100644
index 686ac4ef51..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/edgeEditModel.vue
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <el-drawer
-    :visible.sync="drawerVisible"
-    :wrapperClosable="false"
-    size=""
-    :with-header="false"
-  >
-    <div class="form-model-wrapper">
-      <div class="title-box">
-        <span class="name">{{ $t("Current connection settings") }}</span>
-      </div>
-      <div class="content-box">
-        <div class="form-model">
-          <!-- Node name -->
-          <div class="clearfix list">
-            <div class="text-box">
-              <span>{{ $t("Connection name") }}</span>
-            </div>
-            <div class="cont-box">
-              <label class="label-box">
-                <el-input
-                  type="text"
-                  size="small"
-                  v-model="label"
-                  :disabled="isDetails"
-                  :placeholder="$t('Please enter name')"
-                  maxlength="100"
-                >
-                </el-input>
-              </label>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="bottom-box">
-        <div class="submit" style="background: #fff">
-          <el-button type="text" size="small" @click="cancel()">
-            {{ $t("Cancel") }}
-          </el-button>
-          <el-button
-            type="primary"
-            size="small"
-            @click="ok()"
-            :disabled="isDetails"
-            >{{ $t("Confirm add") }}
-          </el-button>
-        </div>
-      </div>
-    </div>
-  </el-drawer>
-</template>
-<script>
-  import disabledState from '@/module/mixin/disabledState'
-  import { mapState } from 'vuex'
-  import { findComponentDownward } from '@/module/util/'
-
-  export default {
-    name: 'edge-edit-model',
-    data () {
-      return {
-        id: '',
-        label: '',
-        drawerVisible: false
-      }
-    },
-    inject: ['dagChart'],
-    mixins: [disabledState],
-    computed: {
-      ...mapState('dag', ['isDetails'])
-    },
-    methods: {
-      getDagCanvasRef () {
-        if (this.canvasRef) {
-          return this.canvasRef
-        } else {
-          const canvas = findComponentDownward(this.dagChart, 'dag-canvas')
-          this.canvasRef = canvas
-          return canvas
-        }
-      },
-      show ({ id, label }) {
-        this.id = id
-        this.label = label
-        this.drawerVisible = true
-      },
-      cancel () {
-        this.drawerVisible = false
-        this.id = ''
-        this.label = ''
-      },
-      ok () {
-        const canvas = this.getDagCanvasRef()
-        canvas.setEdgeLabel(this.id, this.label)
-        this.cancel()
-      }
-    }
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/layoutConfigModal.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/layoutConfigModal.vue
deleted file mode 100644
index d13bd6877c..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/layoutConfigModal.vue
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <el-dialog
-    :title="$t('Format DAG')"
-    :visible.sync="visible"
-    width="500px"
-    class="dag-layout-modal"
-    :append-to-body="true"
-  >
-    <el-form
-      ref="form"
-      :model="form"
-      label-width="100px"
-      class="dag-layout-form"
-    >
-      <el-form-item :label="$t('layoutType')">
-        <el-radio-group v-model="form.type">
-          <el-radio label="grid">{{ $t("gridLayout") }}</el-radio>
-          <el-radio label="dagre">{{ $t("dagreLayout") }}</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item :label="$t('rows')" v-if="form.type === LAYOUT_TYPE.GRID">
-        <el-input-number
-          v-model="form.rows"
-          :min="0"
-          size="small"
-        ></el-input-number>
-      </el-form-item>
-      <el-form-item :label="$t('cols')" v-if="form.type === LAYOUT_TYPE.GRID">
-        <el-input-number
-          v-model="form.cols"
-          :min="0"
-          size="small"
-        ></el-input-number>
-      </el-form-item>
-    </el-form>
-    <span slot="footer" class="dialog-footer">
-      <el-button size="small" @click="close">{{ $t("Cancel") }}</el-button>
-      <el-button size="small" type="primary" @click="submit">{{
-        $t("Confirm")
-      }}</el-button>
-    </span>
-  </el-dialog>
-</template>
-<script>
-  export const LAYOUT_TYPE = {
-    GRID: 'grid',
-    DAGRE: 'dagre'
-  }
-
-  export const DEFAULT_LAYOUT_CONFIG = {
-    cols: 0,
-    nodesep: 50,
-    padding: 50,
-    ranksep: 50,
-    rows: 0,
-    type: LAYOUT_TYPE.DAGRE
-  }
-
-  export default {
-    data () {
-      return {
-        visible: false,
-        form: { ...DEFAULT_LAYOUT_CONFIG },
-        LAYOUT_TYPE
-      }
-    },
-    methods: {
-      show () {
-        this.visible = true
-      },
-      close () {
-        this.visible = false
-      },
-      submit () {
-        this.$emit('submit', this.form)
-        this.close()
-      }
-    }
-  }
-</script>
-<style lang="scss" scoped>
-.dag-layout-modal {
-  ::v-deep .el-dialog__header {
-    border-bottom: solid 1px #d4d4d4;
-  }
-
-  ::v-deep .dag-layout-form {
-    margin-top: 20px;
-  }
-
-  ::v-deep .el-radio {
-    margin-bottom: 0;
-  }
-
-  .el-form-item {
-    margin-bottom: 10px;
-  }
-}
-</style>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/menuItem.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/menuItem.vue
deleted file mode 100644
index 127a025112..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/menuItem.vue
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div class="menu-item" :class="disabled ? 'disabled' : ''" @click="onClick">
-    <slot></slot>
-  </div>
-</template>
-
-<script>
-  export default {
-    name: 'dag-context-menu-item',
-    props: {
-      disabled: {
-        type: Boolean,
-        default: false
-      }
-    },
-    data () {
-      return {}
-    },
-    methods: {
-      onClick (e) {
-        if (this.disabled) return
-        this.$emit('on-click', e)
-      }
-    }
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/nodeStatus.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/nodeStatus.js
deleted file mode 100644
index 0ff7264048..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/nodeStatus.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import Vue from 'vue'
-import './nodeStatus.scss'
-import i18n from '@/module/i18n'
-import { formatDate } from '@/module/filter/filter'
-
-const nodeStatus = ({ stateProps, taskInstance }) => {
-  const Instance = new Vue({
-    data: {},
-    methods: {},
-    render (h) {
-      return (
-        <el-tooltip placement="top">
-          <div slot="content">
-            <ul class="status-info">
-              <li>{i18n.$t('Name')}:{taskInstance.name}</li>
-              <li>{i18n.$t('State')}:{stateProps.desc}</li>
-              <li>{i18n.$t('type')}:{taskInstance.taskType}</li>
-              <li>{i18n.$t('host')}:{taskInstance.host || '-'}</li>
-              <li>{i18n.$t('Retry Count')}:{taskInstance.retryTimes}</li>
-              <li>{i18n.$t('Submit Time')}:{formatDate(taskInstance.submitTime)}</li>
-              <li>{i18n.$t('Start Time')}:{formatDate(taskInstance.startTime)}</li>
-              <li>{i18n.$t('End Time')}:{taskInstance.endTime ? formatDate(taskInstance.endTime) : '-'}</li>
-            </ul>
-          </div>
-          <em ref="statusIcon" class={`status-icon ${stateProps.icoUnicode}`} style={{
-            color: stateProps.color
-          }}></em>
-        </el-tooltip>
-      )
-    }
-  })
-  return Instance
-}
-
-export default nodeStatus
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/nodeStatus.scss b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/nodeStatus.scss
deleted file mode 100644
index 798f308d64..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/nodeStatus.scss
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-.status-icon {
-  width: 100%;
-  height: 100%;
-  display: block;
-  font-size: 18px;
-}
-
-.status-info {
-  margin-bottom: 0;
-  li {
-    margin-bottom: 5px;
-  }
-}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/taskbar.scss b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/taskbar.scss
deleted file mode 100644
index 640c86640d..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/taskbar.scss
+++ /dev/null
@@ -1,189 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-.dag-taskbar {
-  width: 190px;
-  height: 100%;
-  background-color: #fff;
-  margin-right: 20px;
-
-  .taskbar-title {
-    display: flex;
-    border-bottom: dashed 1px #e5e5e5;
-    height: 42px;
-    padding: 0 20px;
-    align-items: center;
-
-    h4 {
-      color: #666;
-      font-size: 14px;
-    }
-  }
-
-  .tasks {
-    width: 100%;
-    padding: 10px 20px;
-    display: flex;
-    flex-wrap: wrap;
-    box-sizing: border-box;
-    max-height: calc(100% - 42px);
-    overflow: auto;
-
-    .draggable-box {
-      cursor: move;
-      width: 100%;
-      height: 32px;
-      margin-bottom: 10px;
-
-      .task-item {
-        width: 100%;
-        height: 100%;
-        display: flex;
-        align-items: center;
-        border: 1px dashed #e4e4e4;
-        padding: 0 10px;
-        border-radius: 4px;
-
-        em {
-          margin-right: 10px;
-          display: block;
-          width: 18px;
-          height: 18px;
-          background-size: 100% 100%;
-          &.icos-shell {
-            background-image: url("../images/task-icos/shell.png");
-          }
-          &.icos-sub_process {
-            background-image: url("../images/task-icos/sub_process.png");
-          }
-          &.icos-procedure {
-            background-image: url("../images/task-icos/procedure.png");
-          }
-          &.icos-sql {
-            background-image: url("../images/task-icos/sql.png");
-          }
-          &.icos-flink {
-            background-image: url("../images/task-icos/flink.png");
-          }
-          &.icos-mr {
-            background-image: url("../images/task-icos/mr.png");
-          }
-          &.icos-python {
-            background-image: url("../images/task-icos/python.png");
-          }
-          &.icos-dependent {
-            background-image: url("../images/task-icos/dependent.png");
-          }
-          &.icos-http {
-            background-image: url("../images/task-icos/http.png");
-          }
-          &.icos-datax {
-            background-image: url("../images/task-icos/datax.png");
-          }
-          &.icos-pigeon {
-            background-image: url("../images/task-icos/pigeon.png");
-          }
-          &.icos-sqoop {
-            background-image: url("../images/task-icos/sqoop.png");
-          }
-          &.icos-conditions {
-            background-image: url("../images/task-icos/conditions.png");
-          }
-          &.icos-seatunnel {
-            background-image: url("../images/task-icos/seatunnel.png");
-          }
-          &.icos-spark {
-            background-image: url("../images/task-icos/spark.png");
-          }
-          &.icos-switch {
-            background-image: url("../images/task-icos/switch.png");
-          }
-          &.icos-data_quality {
-            background-image: url("../images/task-icos/data_quality.png");
-          }
-        }
-
-        span {
-          font-size: 12px;
-        }
-
-        &:hover {
-          color: #288fff;
-          border: 1px dashed #288fff;
-          background-color: rgba(40, 143, 255, 0.1);
-
-          em {
-            &.icos-shell {
-              background-image: url("../images/task-icos/shell_hover.png");
-            }
-            &.icos-sub_process {
-              background-image: url("../images/task-icos/sub_process_hover.png");
-            }
-            &.icos-procedure {
-              background-image: url("../images/task-icos/procedure_hover.png");
-            }
-            &.icos-sql {
-              background-image: url("../images/task-icos/sql_hover.png");
-            }
-            &.icos-flink {
-              background-image: url("../images/task-icos/flink_hover.png");
-            }
-            &.icos-mr {
-              background-image: url("../images/task-icos/mr_hover.png");
-            }
-            &.icos-python {
-              background-image: url("../images/task-icos/python_hover.png");
-            }
-            &.icos-dependent {
-              background-image: url("../images/task-icos/dependent_hover.png");
-            }
-            &.icos-http {
-              background-image: url("../images/task-icos/http_hover.png");
-            }
-            &.icos-datax {
-              background-image: url("../images/task-icos/datax_hover.png");
-            }
-            &.icos-pigeon {
-              background-image: url("../images/task-icos/pigeon_hover.png");
-            }
-            &.icos-sqoop {
-              background-image: url("../images/task-icos/sqoop_hover.png");
-            }
-            &.icos-conditions {
-              background-image: url("../images/task-icos/conditions_hover.png");
-            }
-            &.icos-seatunnel {
-              background-image: url("../images/task-icos/seatunnel_hover.png");
-            }
-            &.icos-spark {
-              background-image: url("../images/task-icos/spark_hover.png");
-            }
-            &.icos-switch {
-              background-image: url("../images/task-icos/switch_hover.png");
-            }
-            &.icos-data_quality {
-              background-image: url("../images/task-icos/data_quality_hover.png");
-            }
-          }
-        }
-      }
-
-      &.disabled{
-        cursor: default
-      }
-    }
-  }
-}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/taskbar.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/taskbar.vue
deleted file mode 100644
index 5a46aca5a2..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/taskbar.vue
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div class="dag-taskbar">
-    <div class="taskbar-title">
-      <h4>{{$t('Toolbar')}}</h4>
-    </div>
-    <div class="tasks">
-      <template v-for="taskType in tasksTypeList">
-        <draggable-box
-          :key="taskType.name"
-          @onDragstart="(e) => $emit('on-drag-start', e, taskType)"
-          :class="{
-            disabled: isDetails,
-            [`task-item-${taskType.name}`]: true
-          }"
-        >
-          <div class="task-item">
-            <em :class="`icos-${taskType.name.toLocaleLowerCase()}`"></em>
-            <span>{{ taskType.name }}</span>
-          </div>
-        </draggable-box>
-      </template>
-    </div>
-  </div>
-</template>
-
-<script>
-  import draggableBox from './draggableBox.vue'
-  import { tasksType } from '../config.js'
-  import { mapState } from 'vuex'
-
-  export default {
-    name: 'dag-taskbar',
-    components: {
-      draggableBox
-    },
-    data () {
-      const tasksTypeList = Object.keys(tasksType).map((type) => {
-        return {
-          name: type,
-          desc: tasksType[type].desc
-        }
-      })
-
-      return {
-        tasksTypeList
-      }
-    },
-    computed: {
-      ...mapState('dag', [
-        'isDetails'
-      ])
-    }
-  }
-</script>
-
-<style lang="scss" scoped>
-@import "./taskbar";
-</style>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/toolbar.scss b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/toolbar.scss
deleted file mode 100644
index 155083c0fc..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/toolbar.scss
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-.dag-toolbar {
-  width: 100%;
-  height: 50px;
-  background-color: #fff;
-  padding: 0 20px;
-  display: flex;
-  align-items: center;
-  box-sizing: border-box;
-
-  h3 {
-    font-size: 14px;
-    font-weight: bold;
-    margin: 0 10px 0 0;
-  }
-
-  .transparent {
-    width: 1px;
-    height: 1px;
-    opacity: 0;
-  }
-
-  .toolbar-operation {
-    font-size: 18px;
-    cursor: pointer;
-    margin-left: 20px;
-    color: #666666;
-    &:hover {
-      color: #288fff;
-    }
-    &.last{
-      margin-right: 10px;
-    }
-  }
-
-  .toolbar-btn {
-    font-size: 16px;
-  }
-
-  .toolbar-left {
-    flex: 1;
-    display: flex;
-    align-items: center;
-  }
-
-  .toolbar-right {
-    justify-self: flex-end;
-    display: flex;
-    align-items: center;
-  }
-
-  .toolbar-el-btn{
-    margin-right: 0;
-    margin-left: 10px;
-  }
-
-  .custom-ico{
-    display: block;
-    width: 18px;
-    height: 18px;
-    background-size: 100% 100%;
-
-    &.view-variables{
-      background-image: url('../images/view-variables.png');
-      &:hover{
-        background-image: url('../images/view-variables_hover.png');
-      }
-    }
-
-    &.startup-parameters{
-      background-image: url('../images/startup-params.png');
-      &:hover{
-        background-image: url('../images/startup-params_hover.png');
-      }
-    }
-
-    &.full-screen-open{
-      background-image: url('../images/full-screen-open.png');
-      &:hover{
-        background-image: url('../images/full-screen-open_hover.png');
-      }
-    }
-
-    &.full-screen-close{
-      background-image: url('../images/full-screen-close.png');
-      &:hover{
-        background-image: url('../images/full-screen-close_hover.png');
-      }
-    }
-
-    &.graph-format{
-      background-image: url('../images/graph-format.png');
-      &:hover{
-        background-image: url('../images/graph-format_hover.png');
-      }
-    }
-  }
-
-  .process-online-tag{
-    margin-left: 10px;
-  }
-
-  .search-box{
-    width: 0;
-    overflow: hidden;
-    transition: all 0.5s;
-
-    &.visible{
-      width: 200px;
-    }
-  }
-}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/toolbar.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/toolbar.vue
deleted file mode 100644
index 95f83bbbcf..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/toolbar.vue
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div class="dag-toolbar">
-    <h3>{{ dagChart.name || $t("Create process") }}</h3>
-    <el-tooltip
-      v-if="dagChart.name"
-      class="toolbar-operation"
-      :content="$t('Copy name')"
-      placement="bottom"
-    >
-      <em class="el-icon-copy-document" @click="copyName"></em>
-    </el-tooltip>
-    <textarea ref="textarea" cols="30" rows="10" class="transparent"></textarea>
-    <div class="toolbar-left">
-      <el-tag
-        class="process-online-tag"
-        size="small"
-        v-if="dagChart.type === 'definition' && releaseState === 'ONLINE'"
-        >{{ $t("processOnline") }}</el-tag
-      >
-      <el-tooltip
-        :content="$t('View variables')"
-        placement="bottom"
-        class="toolbar-operation"
-      >
-        <em
-          class="custom-ico view-variables"
-          v-if="$route.name === 'projects-instance-details'"
-          @click="toggleVariableView"
-        ></em>
-      </el-tooltip>
-      <el-tooltip
-        :content="$t('Startup parameter')"
-        placement="bottom"
-        class="toolbar-operation"
-      >
-        <em
-          class="custom-ico startup-parameters"
-          v-if="$route.name === 'projects-instance-details'"
-          @click="toggleParamView"
-        ></em>
-      </el-tooltip>
-    </div>
-    <div class="toolbar-right">
-      <el-tooltip
-        class="toolbar-operation"
-        :content="$t('searchNode')"
-        placement="bottom"
-        v-if="!searchInputVisible"
-      >
-        <em
-          class="el-icon-search"
-          @click="showSearchInput"
-        ></em>
-      </el-tooltip>
-      <div
-        :class="{
-          'search-box': true,
-          'visible': searchInputVisible
-        }"
-      >
-        <el-select v-if="searchInputVisible" ref="searchInput" v-model="searchText" size="mini" clearable prefix-icon="el-icon-search" @change="onSearch" @keyup.enter.native="onSearch" filterable :placeholder="$t('Please select task name')">
-          <el-option
-            v-for="item in getTaskNodeOptions()"
-            :key="item.id"
-            :label="item.data.taskName"
-            :value="item.data.taskName">
-          </el-option>
-        </el-select>
-      </div>
-      <el-tooltip
-        class="toolbar-operation"
-        :content="$t('Delete selected lines or nodes')"
-        placement="bottom"
-        v-if="!isDetails"
-      >
-        <em class="el-icon-delete" @click="removeCells"></em>
-      </el-tooltip>
-      <el-tooltip
-        class="toolbar-operation"
-        :content="$t('Download')"
-        placement="bottom"
-      >
-        <em class="el-icon-download" @click="downloadPNG"></em>
-      </el-tooltip>
-      <el-tooltip
-        class="toolbar-operation"
-        :content="$t('Refresh DAG status')"
-        placement="bottom"
-        v-if="dagChart.type === 'instance'"
-      >
-        <em class="el-icon-refresh" @click="refreshTaskStatus"></em>
-      </el-tooltip>
-      <el-tooltip
-        class="toolbar-operation"
-        :content="$t('Format DAG')"
-        placement="bottom"
-        v-if="!isDetails"
-      >
-        <em class="custom-ico graph-format" @click="chartFormat"></em>
-      </el-tooltip>
-      <el-tooltip
-        class="toolbar-operation last"
-        :content="$t('Full Screen')"
-        placement="bottom"
-      >
-        <em
-          :class="[
-            'custom-ico',
-            dagChart.fullScreen ? 'full-screen-close' : 'full-screen-open',
-          ]"
-          @click="toggleFullScreen"
-        ></em>
-      </el-tooltip>
-      <el-button
-        class="toolbar-el-btn"
-        type="primary"
-        size="mini"
-        v-if="dagChart.type === 'definition'"
-        @click="showVersions"
-        icon="el-icon-info"
-        >{{ $t("Version Info") }}</el-button
-      >
-      <el-button
-        class="toolbar-el-btn"
-        type="primary"
-        size="mini"
-        @click="saveProcess"
-        id="btnSave"
-        >{{ $t("Save") }}</el-button
-      >
-      <el-button
-        class="toolbar-el-btn"
-        v-if="$route.query.subs"
-        type="primary"
-        size="mini"
-        icon="el-icon-back"
-        @click="dagChart.returnToPrevProcess"
-      >
-        {{ $t("Return_1") }}
-      </el-button>
-      <el-button
-        class="toolbar-el-btn"
-        type="primary"
-        icon="el-icon-switch-button"
-        size="mini"
-        @click="returnToListPage"
-      >
-        {{ $t("Close") }}
-      </el-button>
-    </div>
-  </div>
-</template>
-
-<script>
-  import { findComponentDownward } from '@/module/util/'
-  import { mapState } from 'vuex'
-
-  export default {
-    name: 'dag-toolbar',
-    inject: ['dagChart'],
-    data () {
-      return {
-        canvasRef: null,
-        searchText: '',
-        searchInputVisible: false
-      }
-    },
-    computed: {
-      ...mapState('dag', ['isDetails', 'releaseState'])
-    },
-    methods: {
-      onSearch () {
-        const canvas = this.getDagCanvasRef()
-        canvas.navigateTo(this.searchText)
-      },
-      getTaskNodeOptions () {
-        const canvas = this.getDagCanvasRef()
-        return canvas.getNodes()
-      },
-      showSearchInput () {
-        this.searchInputVisible = true
-      },
-      getDagCanvasRef () {
-        if (this.canvasRef) {
-          return this.canvasRef
-        } else {
-          const canvas = findComponentDownward(this.dagChart, 'dag-canvas')
-          this.canvasRef = canvas
-          return canvas
-        }
-      },
-      toggleVariableView () {
-        findComponentDownward(this.$root, 'assist-dag-index')._toggleView()
-      },
-      toggleParamView () {
-        findComponentDownward(
-          this.$root,
-          'starting-params-dag-index'
-        )._toggleParam()
-      },
-      toggleFullScreen () {
-        this.dagChart.toggleFullScreen()
-      },
-      saveProcess () {
-        const canvas = this.getDagCanvasRef()
-        const nodes = canvas.getNodes()
-        if (!nodes.length) {
-          this.$message.error(this.$t('Failed to create node to save'))
-          return
-        }
-        this.dagChart.toggleSaveDialog(true)
-      },
-      downloadPNG () {
-        const canvas = this.getDagCanvasRef()
-        canvas.downloadPNG(this.processName)
-      },
-      removeCells () {
-        const canvas = this.getDagCanvasRef()
-        const selections = canvas.getSelections()
-        canvas.removeCells(selections)
-      },
-      copyName () {
-        const textarea = this.$refs.textarea
-        textarea.value = this.dagChart.name
-        textarea.select()
-        document.execCommand('copy')
-        this.$message(this.$t('Copy success'))
-      },
-      chartFormat () {
-        const canvas = this.getDagCanvasRef()
-        canvas.showLayoutModal()
-      },
-      refreshTaskStatus () {
-        this.dagChart.refreshTaskStatus()
-      },
-      returnToListPage () {
-        let $name = this.$route.name
-        if ($name && $name.indexOf('definition') !== -1) {
-          this.$router.push({ name: 'projects-definition-list' })
-        } else {
-          this.$router.push({ name: 'projects-instance-list' })
-        }
-      },
-      showVersions () {
-        this.dagChart.showVersions()
-      }
-    }
-  }
-</script>
-
-<style lang="scss" scoped>
-@import "./toolbar";
-</style>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/x6-helper.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/x6-helper.js
deleted file mode 100644
index 1be067f86b..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/x6-helper.js
+++ /dev/null
@@ -1,338 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-export const X6_NODE_NAME = 'dag-task'
-export const X6_EDGE_NAME = 'dag-edge'
-export const X6_PORT_OUT_NAME = 'dag-port-out'
-
-const EDGE_COLOR = '#999999'
-const BG_BLUE = '#DFE9F7'
-const BG_WHITE = '#FFFFFF'
-const NODE_BORDER = '#CCCCCC'
-const TITLE = '#333333'
-const STROKE_BLUE = '#288FFF'
-const NODE_SHADOW = 'drop-shadow(3px 3px 4px rgba(0, 0, 0, 0.2))'
-const EDGE_SHADOW = 'drop-shadow(3px 3px 2px rgba(0, 0, 0, 0.2))'
-
-export const PORT = {
-  groups: {
-    [X6_PORT_OUT_NAME]: {
-      position: {
-        name: 'absolute',
-        args: {
-          x: 200,
-          y: 24
-        }
-      },
-      markup: [
-        {
-          tagName: 'g',
-          selector: 'body',
-          children: [
-            {
-              tagName: 'circle',
-              selector: 'circle-outer'
-            },
-            {
-              tagName: 'text',
-              selector: 'plus-text'
-            },
-            {
-              tagName: 'circle',
-              selector: 'circle-inner'
-            }
-          ]
-        }
-      ],
-      attrs: {
-        body: {
-          magnet: true
-        },
-        'plus-text': {
-          fontSize: 12,
-          fill: NODE_BORDER,
-          text: '+',
-          textAnchor: 'middle',
-          x: 0,
-          y: 3
-        },
-        'circle-outer': {
-          stroke: NODE_BORDER,
-          strokeWidth: 1,
-          r: 6,
-          fill: BG_WHITE
-        },
-        'circle-inner': {
-          r: 4,
-          fill: 'transparent'
-        }
-      }
-    }
-  }
-}
-
-export const PORT_HOVER = {
-  groups: {
-    [X6_PORT_OUT_NAME]: {
-      attrs: {
-        'circle-outer': {
-          stroke: STROKE_BLUE,
-          fill: BG_BLUE,
-          r: 8
-        },
-        'circle-inner': {
-          fill: STROKE_BLUE,
-          r: 6
-        }
-      }
-    }
-  }
-}
-
-export const PORT_SELECTED = {
-  groups: {
-    [X6_PORT_OUT_NAME]: {
-      attrs: {
-        'plus-text': {
-          fill: STROKE_BLUE
-        },
-        'circle-outer': {
-          stroke: STROKE_BLUE,
-          fill: BG_WHITE
-        }
-      }
-    }
-  }
-}
-
-export const NODE_STATUS_MARKUP = [{
-  tagName: 'foreignObject',
-  selector: 'fo',
-  children: [
-    {
-      tagName: 'body',
-      selector: 'fo-body',
-      ns: 'http://www.w3.org/1999/xhtml',
-      children: [{
-        tagName: 'div',
-        selector: 'status'
-      }]
-    }
-  ]
-}]
-
-export const NODE = {
-  width: 220,
-  height: 48,
-  markup: [
-    {
-      tagName: 'rect',
-      selector: 'body',
-      className: 'dag-task-body'
-    },
-    {
-      tagName: 'image',
-      selector: 'image'
-    },
-    {
-      tagName: 'text',
-      selector: 'title'
-    }
-  ],
-  attrs: {
-    body: {
-      refWidth: '100%',
-      refHeight: '100%',
-      rx: 6,
-      ry: 6,
-      pointerEvents: 'visiblePainted',
-      fill: BG_WHITE,
-      stroke: NODE_BORDER,
-      strokeWidth: 1,
-      strokeDasharray: 'none',
-      filter: 'none'
-    },
-    image: {
-      width: 30,
-      height: 30,
-      refX: 12,
-      refY: 9
-    },
-    title: {
-      refX: 45,
-      refY: 18,
-      fontFamily: 'Microsoft Yahei',
-      fontSize: 12,
-      fontWeight: 'bold',
-      fill: TITLE,
-      strokeWidth: 0
-    },
-    fo: {
-      refX: '46%',
-      refY: -25,
-      width: 18,
-      height: 18
-    }
-  },
-  ports: {
-    ...PORT,
-    items: [
-      {
-        id: X6_PORT_OUT_NAME,
-        group: X6_PORT_OUT_NAME
-      }
-    ]
-  }
-}
-
-export const NODE_HOVER = {
-  attrs: {
-    body: {
-      fill: BG_BLUE,
-      stroke: STROKE_BLUE,
-      strokeDasharray: '5,2'
-    },
-    title: {
-      fill: STROKE_BLUE
-    }
-  }
-}
-
-export const NODE_SELECTED = {
-  attrs: {
-    body: {
-      filter: NODE_SHADOW,
-      fill: BG_WHITE,
-      stroke: STROKE_BLUE,
-      strokeDasharray: '5,2',
-      strokeWidth: '1.5'
-    },
-    title: {
-      fill: STROKE_BLUE
-    }
-  }
-}
-
-export const EDGE = {
-  attrs: {
-    line: {
-      stroke: EDGE_COLOR,
-      strokeWidth: 1,
-      targetMarker: {
-        tagName: 'path',
-        fill: EDGE_COLOR,
-        strokeWidth: 0,
-        d: 'M 6 -3 0 0 6 3 Z'
-      },
-      filter: 'none'
-    }
-  },
-  connector: {
-    name: 'rounded'
-  },
-  router: {
-    name: 'manhattan',
-    args: {
-      endDirections: ['top', 'bottom', 'left']
-    }
-  },
-  defaultLabel: {
-    markup: [
-      {
-        tagName: 'rect',
-        selector: 'body'
-      },
-      {
-        tagName: 'text',
-        selector: 'label'
-      }
-    ],
-    attrs: {
-      label: {
-        fill: EDGE_COLOR,
-        fontSize: 14,
-        textAnchor: 'middle',
-        textVerticalAnchor: 'middle',
-        pointerEvents: 'none'
-      },
-      body: {
-        ref: 'label',
-        fill: BG_WHITE,
-        stroke: EDGE_COLOR,
-        strokeWidth: 1,
-        rx: 4,
-        ry: 4,
-        refWidth: '140%',
-        refHeight: '140%',
-        refX: '-20%',
-        refY: '-20%'
-      }
-    },
-    position: {
-      distance: 0.5,
-      options: {
-        absoluteDistance: true,
-        reverseDistance: true
-      }
-    }
-  }
-}
-
-export const EDGE_HOVER = {
-  attrs: {
-    line: {
-      stroke: STROKE_BLUE,
-      targetMarker: {
-        fill: STROKE_BLUE
-      }
-    }
-  },
-  defaultLabel: {
-    attrs: {
-      label: {
-        fill: STROKE_BLUE
-      },
-      body: {
-        fill: BG_WHITE,
-        stroke: STROKE_BLUE
-      }
-    }
-  }
-}
-
-export const EDGE_SELECTED = {
-  attrs: {
-    line: {
-      stroke: STROKE_BLUE,
-      targetMarker: {
-        fill: STROKE_BLUE
-      },
-      strokeWidth: 2,
-      filter: EDGE_SHADOW
-    }
-  },
-  defaultLabel: {
-    attrs: {
-      label: {
-        fill: STROKE_BLUE
-      },
-      body: {
-        fill: BG_WHITE,
-        stroke: STROKE_BLUE
-      }
-    }
-  }
-}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/x6-style-mixin.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/x6-style-mixin.js
deleted file mode 100644
index d5f9f7b3a5..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/x6-style-mixin.js
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import {
-  NODE,
-  EDGE,
-  PORT,
-  NODE_HOVER,
-  PORT_HOVER,
-  EDGE_HOVER,
-  PORT_SELECTED,
-  NODE_SELECTED,
-  EDGE_SELECTED,
-  X6_PORT_OUT_NAME
-} from './x6-helper'
-import _ from 'lodash'
-
-export default {
-  data () {
-    return {
-      hoverCell: null
-    }
-  },
-  methods: {
-    bindStyleEvent (graph) {
-      // nodes and edges hover
-      graph.on('cell:mouseenter', (data) => {
-        const { cell, e } = data
-        const isStatusIcon = (tagName) =>
-          tagName &&
-          (tagName.toLocaleLowerCase() === 'em' ||
-            tagName.toLocaleLowerCase() === 'body')
-        if (!isStatusIcon(e.target.tagName)) {
-          this.hoverCell = cell
-          this.updateCellStyle(cell, graph)
-        }
-      })
-      graph.on('cell:mouseleave', ({ cell }) => {
-        this.hoverCell = null
-        this.updateCellStyle(cell, graph)
-      })
-      // select
-      graph.on('cell:selected', ({ cell }) => {
-        this.updateCellStyle(cell, graph)
-      })
-      graph.on('cell:unselected', ({ cell }) => {
-        this.updateCellStyle(cell, graph)
-      })
-    },
-    updateCellStyle (cell, graph) {
-      if (cell.isEdge()) {
-        this.setEdgeStyle(cell, graph)
-      } else if (cell.isNode()) {
-        this.setNodeStyle(cell, graph)
-      }
-    },
-    /**
-     * Set node style
-     * @param {Node} node
-     * @param {Graph} graph
-     */
-    setNodeStyle (node, graph) {
-      const isHover = node === this.hoverCell
-      const isSelected = graph.isSelected(node)
-      const portHover = _.cloneDeep(PORT_HOVER.groups[X6_PORT_OUT_NAME].attrs)
-      const portSelected = _.cloneDeep(PORT_SELECTED.groups[X6_PORT_OUT_NAME].attrs)
-      const portDefault = _.cloneDeep(PORT.groups[X6_PORT_OUT_NAME].attrs)
-      const nodeHover = _.merge(_.cloneDeep(NODE.attrs), NODE_HOVER.attrs)
-      const nodeSelected = _.merge(_.cloneDeep(NODE.attrs), NODE_SELECTED.attrs)
-
-      let img = null
-      let nodeAttrs = null
-      let portAttrs = null
-
-      if (isHover || isSelected) {
-        img = require(`../images/task-icos/${node.data.taskType.toLocaleLowerCase()}_hover.png`)
-        if (isHover) {
-          nodeAttrs = nodeHover
-          portAttrs = _.merge(portDefault, portHover)
-        } else {
-          nodeAttrs = nodeSelected
-          portAttrs = _.merge(portDefault, portSelected)
-        }
-      } else {
-        img = require(`../images/task-icos/${node.data.taskType.toLocaleLowerCase()}.png`)
-        nodeAttrs = NODE.attrs
-        portAttrs = portDefault
-      }
-      node.setAttrByPath('image/xlink:href', img)
-      node.setAttrs(nodeAttrs)
-      node.setPortProp(
-        X6_PORT_OUT_NAME,
-        'attrs',
-        portAttrs
-      )
-    },
-    /**
-     * Set edge style
-     * @param {Edge} edge
-     * @param {Graph} graph
-     */
-    setEdgeStyle (edge, graph) {
-      const isHover = edge === this.hoverCell
-      const isSelected = graph.isSelected(edge)
-      const labelName = this.getEdgeLabelName ? this.getEdgeLabelName(edge) : ''
-      let edgeProps = null
-
-      if (isHover) {
-        edgeProps = _.merge(_.cloneDeep(EDGE), EDGE_HOVER)
-      } else if (isSelected) {
-        edgeProps = _.merge(_.cloneDeep(EDGE), EDGE_SELECTED)
-      } else {
-        edgeProps = _.cloneDeep(EDGE)
-      }
-
-      edge.setAttrs(edgeProps.attrs)
-      edge.setLabels([
-        {
-          ..._.merge(
-            {
-              attrs: _.cloneDeep(edgeProps.defaultLabel.attrs)
-            },
-            {
-              attrs: { label: { text: labelName } }
-            }
-          )
-        }
-      ])
-    }
-  }
-}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/x6-style.scss b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/x6-style.scss
deleted file mode 100644
index bc56d51b35..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/canvas/x6-style.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-$STROKE_BLUE: #288fff;
-$BG_WHITE: #ffffff;
-
-.x6-node[data-shape="dag-task"] {
-  &.available {
-    .dag-task-body {
-      stroke: $STROKE_BLUE;
-      stroke-width: 1;
-      stroke-dasharray: 5, 2;
-    }
-    &.adsorbed {
-      .dag-task-body {
-        stroke-width: 3;
-      }
-    }
-  }
-}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/config.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/config.js
deleted file mode 100755
index 9d583ea8e5..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/config.js
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import i18n from '@/module/i18n'
-
-/**
- * Operation bar config
- * @code code
- * @icon icon
- * @disable disable
- * @desc tooltip
- */
-const toolOper = (dagThis) => {
-  const disabled = !!dagThis.$store.state.dag.isDetails// Permissions.getAuth() === false ? false : !dagThis.$store.state.dag.isDetails
-  return [
-    {
-      code: 'pointer',
-      icon: 'el-icon-thumb',
-      disable: disabled,
-      desc: `${i18n.$t('Drag Nodes and Selected Items')}`
-    },
-    {
-      code: 'line',
-      icon: 'el-icon-top-right',
-      disable: disabled,
-      desc: `${i18n.$t('Select Line Connection')}`
-    },
-    {
-      code: 'remove',
-      icon: 'el-icon-delete',
-      disable: disabled,
-      desc: `${i18n.$t('Delete selected lines or nodes')}`
-    },
-    {
-      code: 'download',
-      icon: 'el-icon-download',
-      disable: !dagThis.type,
-      desc: `${i18n.$t('Download')}`
-    },
-    {
-      code: 'screen',
-      icon: 'el-icon-full-screen',
-      disable: false,
-      desc: `${i18n.$t('Full Screen')}`
-    }
-  ]
-}
-
-/**
- * Post status
- * @id Front end definition id
- * @desc tooltip
- * @code Backend definition identifier
- */
-const publishStatus = [
-  {
-    id: 0,
-    desc: `${i18n.$t('Unpublished')}`,
-    code: 'NOT_RELEASE'
-  },
-  {
-    id: 1,
-    desc: `${i18n.$t('online')}`,
-    code: 'ONLINE'
-  },
-  {
-    id: 2,
-    desc: `${i18n.$t('offline')}`,
-    code: 'OFFLINE'
-  }
-]
-
-/**
- * Operation type
- * @desc tooltip
- * @code identifier
- */
-const runningType = [
-  {
-    desc: `${i18n.$t('Start Process')}`,
-    code: 'START_PROCESS'
-  },
-  {
-    desc: `${i18n.$t('Execute from the current node')}`,
-    code: 'START_CURRENT_TASK_PROCESS'
-  },
-  {
-    desc: `${i18n.$t('Recover tolerance fault process')}`,
-    code: 'RECOVER_TOLERANCE_FAULT_PROCESS'
-  },
-  {
-    desc: `${i18n.$t('Resume the suspension process')}`,
-    code: 'RECOVER_SUSPENDED_PROCESS'
-  },
-  {
-    desc: `${i18n.$t('Execute from the failed nodes')}`,
-    code: 'START_FAILURE_TASK_PROCESS'
-  },
-  {
-    desc: `${i18n.$t('Complement Data')}`,
-    code: 'COMPLEMENT_DATA'
-  },
-  {
-    desc: `${i18n.$t('Scheduling execution')}`,
-    code: 'SCHEDULER'
-  },
-  {
-    desc: `${i18n.$t('Rerun')}`,
-    code: 'REPEAT_RUNNING'
-  },
-  {
-    desc: `${i18n.$t('Pause')}`,
-    code: 'PAUSE'
-  },
-  {
-    desc: `${i18n.$t('Stop')}`,
-    code: 'STOP'
-  },
-  {
-    desc: `${i18n.$t('Recovery waiting thread')}`,
-    code: 'RECOVER_WAITING_THREAD'
-  },
-  {
-    desc: `${i18n.$t('Recover serial wait')}`,
-    code: 'RECOVER_SERIAL_WAIT'
-  }
-]
-
-/**
- * Task status
- * @key key
- * @id id
- * @desc tooltip
- * @color color
- * @icoUnicode iconfont
- * @isSpin is loading (Need to execute the code block to write if judgment)
- */
-const tasksState = {
-  SUBMITTED_SUCCESS: {
-    id: 0,
-    desc: `${i18n.$t('Submitted successfully')}`,
-    color: '#A9A9A9',
-    icoUnicode: 'ri-record-circle-fill',
-    isSpin: false,
-    classNames: 'submitted'
-  },
-  RUNNING_EXECUTION: {
-    id: 1,
-    desc: `${i18n.$t('Executing')}`,
-    color: '#0097e0',
-    icoUnicode: 'el-icon-s-tools',
-    isSpin: true,
-    classNames: 'executing'
-  },
-  READY_PAUSE: {
-    id: 2,
-    desc: `${i18n.$t('Ready to pause')}`,
-    color: '#07b1a3',
-    icoUnicode: 'ri-settings-3-line',
-    isSpin: false,
-    classNames: 'submitted'
-  },
-  PAUSE: {
-    id: 3,
-    desc: `${i18n.$t('Pause')}`,
-    color: '#057c72',
-    icoUnicode: 'el-icon-video-pause',
-    isSpin: false,
-    classNames: 'pause'
-  },
-  READY_STOP: {
-    id: 4,
-    desc: `${i18n.$t('Ready to stop')}`,
-    color: '#FE0402',
-    icoUnicode: 'ri-stop-circle-fill',
-    isSpin: false
-  },
-  STOP: {
-    id: 5,
-    desc: `${i18n.$t('Stop')}`,
-    color: '#e90101',
-    icoUnicode: 'ri-stop-circle-line',
-    isSpin: false
-  },
-  FAILURE: {
-    id: 6,
-    desc: `${i18n.$t('Failed')}`,
-    color: '#000000',
-    icoUnicode: 'el-icon-circle-close',
-    isSpin: false,
-    classNames: 'failed'
-  },
-  SUCCESS: {
-    id: 7,
-    desc: `${i18n.$t('Success')}`,
-    color: '#33cc00',
-    icoUnicode: 'el-icon-circle-check',
-    isSpin: false,
-    classNames: 'success'
-  },
-  NEED_FAULT_TOLERANCE: {
-    id: 8,
-    desc: `${i18n.$t('Need fault tolerance')}`,
-    color: '#FF8C00',
-    icoUnicode: 'el-icon-edit',
-    isSpin: false
-  },
-  KILL: {
-    id: 9,
-    desc: `${i18n.$t('Kill')}`,
-    color: '#a70202',
-    icoUnicode: 'el-icon-remove-outline',
-    isSpin: false
-  },
-  WAITING_THREAD: {
-    id: 10,
-    desc: `${i18n.$t('Waiting for thread')}`,
-    color: '#912eed',
-    icoUnicode: 'ri-time-line',
-    isSpin: false
-  },
-  WAITING_DEPEND: {
-    id: 11,
-    desc: `${i18n.$t('Waiting for dependence')}`,
-    color: '#5101be',
-    icoUnicode: 'ri-send-to-back',
-    isSpin: false
-  },
-  DELAY_EXECUTION: {
-    id: 12,
-    desc: `${i18n.$t('Delay execution')}`,
-    color: '#5102ce',
-    icoUnicode: 'ri-pause-circle-fill',
-    isSpin: false
-  },
-  FORCED_SUCCESS: {
-    id: 13,
-    desc: `${i18n.$t('Forced success')}`,
-    color: '#5102ce',
-    icoUnicode: 'el-icon-success',
-    isSpin: false
-  },
-  SERIAL_WAIT: {
-    id: 14,
-    desc: `${i18n.$t('Serial wait')}`,
-    color: '#5102ce',
-    icoUnicode: 'el-icon-loading',
-    isSpin: false
-  }
-}
-
-/**
- * Node type
- * @key key
- * @desc tooltip
- * @color color (tree and gantt)
- */
-const tasksType = {
-  SHELL: {
-    desc: 'SHELL',
-    color: '#646464'
-  },
-  SUB_PROCESS: {
-    desc: 'SUB_PROCESS',
-    color: '#0097e0'
-  },
-  PROCEDURE: {
-    desc: 'PROCEDURE',
-    color: '#525CCD',
-    helperLinkDisable: true
-  },
-  SQL: {
-    desc: 'SQL',
-    color: '#7A98A1'
-  },
-  SPARK: {
-    desc: 'SPARK',
-    color: '#E46F13'
-  },
-  FLINK: {
-    desc: 'FLINK',
-    color: '#E46F13'
-  },
-  MR: {
-    desc: 'MapReduce',
-    color: '#A0A5CC',
-    helperLinkDisable: true
-  },
-  PYTHON: {
-    desc: 'PYTHON',
-    color: '#FED52D'
-  },
-  DEPENDENT: {
-    desc: 'DEPENDENT',
-    color: '#2FBFD8'
-  },
-  HTTP: {
-    desc: 'HTTP',
-    color: '#E46F13'
-  },
-  DATAX: {
-    desc: 'DataX',
-    color: '#1fc747'
-  },
-  PIGEON: {
-    desc: 'PIGEON',
-    color: '#1fc747'
-  },
-  SQOOP: {
-    desc: 'SQOOP',
-    color: '#E46F13',
-    helperLinkDisable: true
-  },
-  CONDITIONS: {
-    desc: 'CONDITIONS',
-    color: '#E46F13'
-  },
-  DATA_QUALITY: {
-    desc: 'DATA_QUALITY',
-    color: '#E46F13'
-  },
-  SWITCH: {
-    desc: 'SWITCH',
-    color: '#E46F13'
-  },
-  SEATUNNEL: {
-    desc: 'SEATUNNEL',
-    color: '#646465',
-    helperLinkDisable: true
-  }
-}
-
-export {
-  toolOper,
-  publishStatus,
-  runningType,
-  tasksState,
-  tasksType
-}
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.scss b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.scss
deleted file mode 100755
index 49eed5361f..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-.dag-chart {
-  width: 100%;
-  height: calc(100vh - 100px);
-  padding: 10px;
-  background: #f2f3f7;
-
-  &.full-screen {
-    position: fixed;
-    width: 100%;
-    height: 100%;
-    top: 0;
-    left: 0;
-    z-index: 10000;
-  }
-}
-
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue
deleted file mode 100644
index 4ba540ecef..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue
+++ /dev/null
@@ -1,718 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div :class="['dag-chart', fullScreen ? 'full-screen' : '']">
-    <dag-toolbar />
-    <dag-canvas ref="canvas" />
-    <el-drawer
-      :visible.sync="taskDrawer"
-      size=""
-      :with-header="false"
-      :wrapperClosable="false"
-      class="task-drawer"
-    >
-      <!-- fix the bug that Element-ui(2.13.2) auto focus on the first input -->
-      <div style="width: 0px; height: 0px; overflow: hidden">
-        <el-input type="text" />
-      </div>
-      <m-form-model
-        v-if="taskDrawer"
-        :nodeData="nodeData"
-        :project-code="projectCode"
-        @seeHistory="seeHistory"
-        @addTaskInfo="addTaskInfo"
-        @close="closeTaskDrawer"
-        @onSubProcess="toSubProcess"
-        :type="type"
-      ></m-form-model>
-    </el-drawer>
-    <el-dialog
-      :title="$t('Set the DAG diagram name')"
-      :visible.sync="saveDialog"
-      width="auto"
-    >
-      <m-udp ref="mUdp" @onUdp="onSave" @close="cancelSave"></m-udp>
-    </el-dialog>
-    <el-dialog
-      :title="$t('Please set the parameters before starting')"
-      :visible.sync="startDialog"
-      width="auto"
-    >
-      <m-start
-        :startData="{ code: definitionCode, name: name }"
-        :startNodeList="startTaskName"
-        :sourceType="'contextmenu'"
-        @onUpdateStart="onUpdateStart"
-        @closeStart="closeStart"
-      ></m-start>
-    </el-dialog>
-    <edge-edit-model ref="edgeEditModel" />
-    <el-drawer :visible.sync="versionDrawer" size="" :with-header="false">
-      <!-- fix the bug that Element-ui(2.13.2) auto focus on the first input -->
-      <div style="width: 0px; height: 0px; overflow: hidden">
-        <el-input type="text" />
-      </div>
-      <m-versions
-        :versionData="versionData"
-        :isInstance="type === 'instance'"
-        @mVersionSwitchProcessDefinitionVersion="switchProcessVersion"
-        @mVersionGetProcessDefinitionVersionsPage="getProcessVersions"
-        @mVersionDeleteProcessDefinitionVersion="deleteProcessVersion"
-        @closeVersion="closeVersion"
-      ></m-versions>
-    </el-drawer>
-    <m-log
-        v-if="type === 'instance' && logDialog"
-        :item="logTaskInstance"
-        source='dag'
-        :task-instance-id="logTaskInstance.id"
-        @close="closeLogDialog"
-    ></m-log>
-  </div>
-</template>
-
-<script>
-  import { debounce } from 'lodash'
-  import dagToolbar from './canvas/toolbar.vue'
-  import dagCanvas from './canvas/canvas.vue'
-  import mFormModel from '../_source/formModel/formModel.vue'
-  import { mapActions, mapState, mapMutations } from 'vuex'
-  import mUdp from '../_source/udp/udp.vue'
-  import mStart from '../../projects/pages/definition/pages/list/_source/start.vue'
-  import edgeEditModel from './canvas/edgeEditModel.vue'
-  import mVersions from '../../projects/pages/definition/pages/list/_source/versions.vue'
-  import mLog from './formModel/log.vue'
-
-  const DEFAULT_NODE_DATA = {
-    id: null,
-    taskType: '',
-    self: {},
-    instanceId: null
-  }
-
-  export default {
-    name: 'dag-chart',
-    components: {
-      dagCanvas,
-      dagToolbar,
-      mFormModel,
-      mUdp,
-      mStart,
-      edgeEditModel,
-      mVersions,
-      mLog
-    },
-    provide () {
-      return {
-        dagChart: this
-      }
-    },
-    inject: ['definitionDetails'],
-    props: {
-      type: String,
-      releaseState: String
-    },
-    data () {
-      return {
-        definitionCode: 0,
-        // full screen mode
-        fullScreen: false,
-        // whether the task config drawer is visible
-        taskDrawer: false,
-        nodeData: { ...DEFAULT_NODE_DATA },
-        // whether the save dialog is visible
-        saveDialog: false,
-        // whether the start dialog is visible
-        startDialog: false,
-        startTaskName: '',
-        // whether the version drawer is visible
-        versionDrawer: false,
-        versionData: {
-          processDefinition: {
-            id: null,
-            version: '',
-            releaseState: ''
-          },
-          processDefinitionVersions: [],
-          total: null,
-          pageNo: null,
-          pageSize: null
-        },
-        // the task status refresh timer
-        statusTimer: null,
-        // the process instance id
-        instanceId: -1,
-        // log dialog
-        logDialog: false,
-        logTaskInstance: null,
-        taskInstances: []
-      }
-    },
-    mounted () {
-      this.setIsEditDag(false)
-
-      if (this.type === 'instance') {
-        this.instanceId = this.$route.params.id
-        this.definitionCode = this.$route.query.code || this.code
-      } else if (this.type === 'definition') {
-        this.definitionCode = this.$route.params.code
-      }
-
-      // auto resize canvas
-      this.resizeDebounceFunc = debounce(this.canvasResize, 200)
-      window.addEventListener('resize', this.resizeDebounceFunc)
-
-      // init graph
-      this.$refs.canvas.graphInit(!this.isDetails)
-
-      // backfill graph with tasks, locations and connects
-      this.backfill()
-
-      // refresh task status
-      if (this.type === 'instance') {
-        this.refreshTaskStatus()
-        // status polling
-        this.statusTimer = setInterval(() => {
-          this.refreshTaskStatus()
-        }, 90000)
-      }
-    },
-    beforeDestroy () {
-      this.resetParams()
-      clearInterval(this.statusTimer)
-      window.removeEventListener('resize', this.resizeDebounceFunc)
-    },
-    computed: {
-      ...mapState('dag', [
-        'tasks',
-        'locations',
-        'connects',
-        'name',
-        'isDetails',
-        'projectCode',
-        'version',
-        'code'
-      ])
-    },
-    methods: {
-      ...mapActions('dag', [
-        'saveDAGchart',
-        'updateInstance',
-        'updateDefinition',
-        'getTaskState',
-        'getStartCheck',
-        'genTaskCodeList',
-        'switchProcessDefinitionVersion',
-        'getProcessDefinitionVersionsPage',
-        'deleteProcessDefinitionVersion'
-      ]),
-      ...mapMutations('dag', [
-        'addTask',
-        'setConnects',
-        'resetParams',
-        'setIsEditDag',
-        'setName',
-        'setLocations',
-        'resetLocalParam',
-        'setDependResult'
-      ]),
-      /**
-       * Toggle full screen
-       */
-      canvasResize () {
-        const canvas = this.$refs.canvas
-        canvas && canvas.paperResize()
-      },
-      toggleFullScreen () {
-        this.fullScreen = !this.fullScreen
-        this.$nextTick(this.canvasResize)
-      },
-      /**
-       * Task Drawer
-       * @param {boolean} visible
-       */
-      toggleTaskDrawer (visible) {
-        this.taskDrawer = visible
-      },
-      /**
-       * Set the current node data
-       */
-      setNodeData (nodeData) {
-        this.nodeData = Object.assign(DEFAULT_NODE_DATA, nodeData)
-      },
-      /**
-       * open form model
-       * @desc Edit task config
-       * @param {number} taskCode
-       * @param {string} taskType
-       */
-      openFormModel (taskCode, taskType) {
-        this.setNodeData({
-          id: taskCode,
-          taskType: taskType
-        })
-        this.toggleTaskDrawer(true)
-      },
-      addTaskInfo ({ item }) {
-        this.addTask(item)
-        this.$refs.canvas.setNodeName(item.code, item.name)
-        this.$refs.canvas.setNodeForbiddenStatus(item.code, item.flag === 'NO')
-        this.taskDrawer = false
-      },
-      closeTaskDrawer ({ flag }) {
-        if (flag) {
-          const canvas = this.$refs.canvas
-          canvas.removeNode(this.nodeData.id)
-        }
-        this.taskDrawer = false
-      },
-      /**
-       * Save dialog
-       */
-      toggleSaveDialog (value) {
-        this.saveDialog = value
-        if (value) {
-          this.$nextTick(() => {
-            this.$refs.mUdp.reloadParam()
-          })
-        }
-      },
-      onSave (sourceType) {
-        this.toggleSaveDialog(false)
-        return new Promise((resolve, reject) => {
-          let tasks = this.tasks || []
-          const edges = this.$refs.canvas.getEdges()
-          const nodes = this.$refs.canvas.getNodes()
-          if (!nodes.length) {
-            reject(this.$t('Failed to create node to save'))
-          }
-          const connects = this.buildConnects(edges, tasks)
-          this.setConnects(connects)
-          const locations = nodes.map((node) => {
-            return {
-              taskCode: node.id,
-              x: node.position.x,
-              y: node.position.y
-            }
-          })
-          this.setLocations(locations)
-          resolve({
-            connects: connects,
-            tasks: tasks,
-            locations: locations
-          })
-        })
-          .then((res) => {
-            if (this.verifyConditions(res.tasks)) {
-              this.loading(true)
-              const isEdit = !!this.definitionCode
-              if (isEdit) {
-                const methodName = this.type === 'instance' ? 'updateInstance' : 'updateDefinition'
-                const methodParam = this.type === 'instance' ? this.instanceId : this.definitionCode
-                // Edit
-                return this[methodName](methodParam)
-                  .then((res) => {
-                    this.$message({
-                      message: res.msg,
-                      type: 'success',
-                      offset: 80
-                    })
-                    if (this.type === 'instance') {
-                      this.$router.push({
-                        path: `/projects/${this.projectCode}/instance/list/${methodParam}`
-                      })
-                    } else {
-                      this.$router.push({
-                        path: `/projects/${this.projectCode}/definition/list/${methodParam}`
-                      })
-                    }
-                  })
-                  .catch((e) => {
-                    this.$message.error(e.msg || '')
-                  })
-                  .finally((e) => {
-                    this.loading(false)
-                  })
-              } else {
-                // Create
-                return this.saveDAGchart()
-                  .then((res) => {
-                    this.$message.success(res.msg)
-                    // source @/conf/home/pages/dag/_source/editAffirmModel/index.js
-                    if (sourceType !== 'affirm') {
-                      // Jump process definition
-                      this.$router.push({ name: 'projects-definition-list' })
-                    }
-                  })
-                  .catch((e) => {
-                    this.setName('')
-                    this.$message.error(e.msg || '')
-                  })
-                  .finally((e) => {
-                    this.loading(false)
-                  })
-              }
-            }
-          })
-          .catch((err) => {
-            let msg = typeof err === 'string' ? err : err.msg || ''
-            this.$message.error(msg)
-          })
-      },
-      verifyConditions (value) {
-        let tasks = value
-        let bool = true
-        tasks.map((v) => {
-          if (
-            v.taskType === 'CONDITIONS' &&
-            (v.taskParams.conditionResult.successNode[0] === '' ||
-              v.taskParams.conditionResult.successNode[0] === null ||
-              v.taskParams.conditionResult.failedNode[0] === '' ||
-              v.taskParams.conditionResult.failedNode[0] === null)
-          ) {
-            bool = false
-            return false
-          }
-        })
-        if (!bool) {
-          this.$message.warning(
-            `${this.$t(
-              'Successful branch flow and failed branch flow are required'
-            )}`
-          )
-          return false
-        }
-        return true
-      },
-      cancelSave () {
-        this.toggleSaveDialog(false)
-      },
-      /**
-       * build graph json
-       */
-      buildGraphJSON (tasks, locations, connects) {
-        const nodes = []
-        const edges = []
-        if (!locations) { locations = [] }
-        tasks.forEach((task) => {
-          const location = locations.find((l) => l.taskCode === task.code) || {}
-          const node = this.$refs.canvas.genNodeJSON(
-            task.code,
-            task.taskType,
-            task.name,
-            task.flag === 'NO',
-            {
-              x: location.x,
-              y: location.y
-            }
-          )
-          nodes.push(node)
-        })
-
-        connects
-          .filter((r) => !!r.preTaskCode)
-          .forEach((c) => {
-            const edge = this.$refs.canvas.genEdgeJSON(
-              c.preTaskCode,
-              c.postTaskCode,
-              c.name
-            )
-            edges.push(edge)
-          })
-        return {
-          nodes,
-          edges
-        }
-      },
-      /**
-       * Build connects by edges and tasks
-       * @param {Edge[]} edges
-       * @param {Task[]} tasks
-       * @returns
-       */
-      buildConnects (edges, tasks) {
-        const preTaskMap = {}
-        const tasksMap = {}
-
-        edges.forEach((edge) => {
-          preTaskMap[edge.targetId] = {
-            sourceId: edge.sourceId,
-            edgeLabel: edge.label || ''
-          }
-        })
-        tasks.forEach((task) => {
-          tasksMap[task.code] = task
-        })
-
-        const headEdges = tasks
-          .filter((task) => !preTaskMap[task.code])
-          .map((task) => {
-            return {
-              name: '',
-              preTaskCode: 0,
-              preTaskVersion: 0,
-              postTaskCode: task.code,
-              postTaskVersion: task.version || 0,
-              // conditionType and conditionParams are reserved
-              conditionType: 0,
-              conditionParams: {}
-            }
-          })
-
-        return edges
-          .map((edge) => {
-            return {
-              name: edge.label,
-              preTaskCode: edge.sourceId,
-              preTaskVersion: tasksMap[edge.sourceId].version || 0,
-              postTaskCode: edge.targetId,
-              postTaskVersion: tasksMap[edge.targetId].version || 0,
-              // conditionType and conditionParams are reserved
-              conditionType: 0,
-              conditionParams: {}
-            }
-          })
-          .concat(headEdges)
-      },
-      backfill () {
-        const tasks = this.tasks
-        const locations = this.locations
-        const connects = this.connects
-        const json = this.buildGraphJSON(tasks, locations, connects)
-        this.$refs.canvas.fromJSON(json)
-        // Auto format
-        if (!locations) {
-          this.$refs.canvas.format()
-        }
-      },
-      /**
-       * Return to the previous process
-       */
-      returnToPrevProcess () {
-        let $name = this.$route.name.split('-')
-        let subs = this.$route.query.subs
-        let ids = subs.split(',')
-        const last = ids.pop()
-        this.$router.push({
-          path: `/${$name[0]}/${this.projectCode}/${$name[1]}/list/${last}`,
-          query: ids.length > 0 ? { subs: ids.join(',') } : null
-        })
-      },
-      toSubProcess ({ subProcessCode, subInstanceId }) {
-        const tarIdentifier =
-          this.type === 'instance' ? subInstanceId : subProcessCode
-        const curIdentifier =
-          this.type === 'instance' ? this.instanceId : this.definitionCode
-        let subs = []
-        let olds = this.$route.query.subs
-        if (olds) {
-          subs = olds.split(',')
-          subs.push(curIdentifier)
-        } else {
-          subs.push(curIdentifier)
-        }
-        let $name = this.$route.name.split('-')
-        this.$router.push({
-          path: `/${$name[0]}/${this.projectCode}/${$name[1]}/list/${tarIdentifier}`,
-          query: { subs: subs.join(',') }
-        })
-      },
-      seeHistory (taskName) {
-        this.$router.push({
-          name: 'task-instance',
-          query: {
-            processInstanceId: this.instanceId,
-            taskName: taskName
-          }
-        })
-      },
-      /**
-       * Start dialog
-       */
-      startRunning (taskName) {
-        this.startTaskName = taskName
-        this.getStartCheck({ processDefinitionCode: this.definitionCode }).then(
-          (res) => {
-            this.startDialog = true
-          }
-        )
-      },
-      onUpdateStart () {
-        this.startDialog = false
-      },
-      closeStart () {
-        this.startDialog = false
-      },
-      /**
-       * Task status
-       */
-      refreshTaskStatus () {
-        const instanceId = this.$route.params.id
-        this.loading(true)
-        this.getTaskState(instanceId)
-          .then((res) => {
-            this.$message(this.$t('Refresh status succeeded'))
-            const { taskList } = res.data
-            const list = res.list
-            if (taskList) {
-              this.taskInstances = taskList
-              taskList.forEach((taskInstance) => {
-                this.$refs.canvas.setNodeStatus({
-                  code: taskInstance.taskCode,
-                  state: taskInstance.state,
-                  taskInstance
-                })
-              })
-            }
-            if (list) {
-              list.forEach((dependent) => {
-                if (dependent.dependentResult) {
-                  this.setDependResult(JSON.parse(dependent.dependentResult))
-                }
-              })
-            }
-          })
-          .finally(() => {
-            this.loading(false)
-          })
-      },
-      /**
-       * Loading
-       * @param {boolean} visible
-       */
-      loading (visible) {
-        if (visible) {
-          this.spinner = this.$loading({
-            lock: true,
-            text: this.$t('Loading...'),
-            spinner: 'el-icon-loading',
-            background: 'rgba(0, 0, 0, 0.4)',
-            customClass: 'dag-fullscreen-loading'
-          })
-        } else {
-          this.spinner && this.spinner.close()
-        }
-      },
-      /**
-       * change process definition version
-       */
-      showVersions () {
-        this.getProcessDefinitionVersionsPage({
-          pageNo: 1,
-          pageSize: 10,
-          code: this.definitionCode
-        })
-          .then((res) => {
-            let processDefinitionVersions = res.data.totalList
-            let total = res.data.total
-            let pageSize = res.data.pageSize
-            let pageNo = res.data.currentPage
-            // this.versionData.processDefinition.id = this.urlParam.id
-            this.versionData.processDefinition.code = this.definitionCode
-            this.versionData.processDefinition.version = this.version
-            this.versionData.processDefinition.releaseState = this.releaseState
-            this.versionData.processDefinitionVersions =
-              processDefinitionVersions
-            this.versionData.total = total
-            this.versionData.pageNo = pageNo
-            this.versionData.pageSize = pageSize
-            this.versionDrawer = true
-          })
-          .catch((e) => {
-            this.$message.error(e.msg || '')
-          })
-      },
-      closeVersion () {
-        this.versionDrawer = false
-      },
-      switchProcessVersion ({ version, processDefinitionCode }) {
-        this.switchProcessDefinitionVersion({
-          version: version,
-          code: processDefinitionCode
-        })
-          .then((res) => {
-            this.$message.success($t('Switch Version Successfully'))
-            this.closeVersion()
-            this.definitionDetails.init()
-          })
-          .catch((e) => {
-            this.$message.error(e.msg || '')
-          })
-      },
-      getProcessVersions ({ pageNo, pageSize, processDefinitionCode }) {
-        this.getProcessDefinitionVersionsPage({
-          pageNo: pageNo,
-          pageSize: pageSize,
-          code: processDefinitionCode
-        })
-          .then((res) => {
-            this.versionData.processDefinitionVersions = res.data.totalList
-            this.versionData.total = res.data.total
-            this.versionData.pageSize = res.data.pageSize
-            this.versionData.pageNo = res.data.currentPage
-          })
-          .catch((e) => {
-            this.$message.error(e.msg || '')
-          })
-      },
-      deleteProcessVersion ({ version, processDefinitionCode }) {
-        this.deleteProcessDefinitionVersion({
-          version: version,
-          code: processDefinitionCode
-        })
-          .then((res) => {
-            this.$message.success(res.msg || '')
-            this.getProcessVersions({
-              pageNo: 1,
-              pageSize: 10,
-              processDefinitionCode: processDefinitionCode
-            })
-          })
-          .catch((e) => {
-            this.$message.error(e.msg || '')
-          })
-      },
-      /**
-       * Log dialog
-       */
-      closeLogDialog () {
-        this.logDialog = false
-        this.logTaskInstance = null
-      },
-      showLogDialog (taskDefinitionCode) {
-        const taskInstance = this.taskInstances.find(taskInstance => {
-          return taskInstance.taskCode === taskDefinitionCode
-        })
-        if (taskInstance) {
-          this.logTaskInstance = {
-            id: taskInstance.id,
-            type: taskInstance.taskType
-          }
-          this.logDialog = true
-        }
-      }
-    }
-  }
-</script>
-
-<style lang="scss" scoped>
-@import "./dag";
-</style>
-
-<style lang="scss">
-@import "./loading";
-</style>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/dependentTimeout.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/dependentTimeout.vue
deleted file mode 100644
index a87b666331..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/dependentTimeout.vue
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div class="timeout-alarm-model">
-    <div class="clearfix list">
-      <div class="text-box">
-        <span>{{$t('Timeout alarm')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding-top: 5px;">
-            <el-switch v-model="enable" size="small" @change="_onSwitch(0, $event)" :disabled="isDetails"></el-switch>
-          </div>
-        </label>
-      </div>
-    </div>
-
-    <div class="clearfix list" v-if="false">
-      <div class="text-box">
-        <span>{{$t('Waiting Dependent start')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding: 5px 0;">
-            <el-switch v-model="waitStartTimeout.enable" size="small" @change="_onSwitch(1, $event)" :disabled="isDetails"></el-switch>
-          </div>
-        </label>
-      </div>
-    </div>
-
-    <div class="clearfix list" v-if="enable && waitStartTimeout.enable">
-      <div class="text-box">
-        <span>{{$t('Timeout period')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding-top: 2px;">
-            <el-input v-model="waitStartTimeout.interval" size="small" style="width: 100px;" :disabled="isDetails" maxlength="9">
-              <span slot="append">{{$t('Minute')}}</span>
-            </el-input>
-          </div>
-        </label>
-      </div>
-    </div>
-
-    <div class="clearfix list" v-if="enable && waitStartTimeout.enable">
-      <div class="text-box">
-        <span>{{$t('Check interval')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding-top: 2px;">
-            <el-input v-model="waitStartTimeout.checkInterval" size="small" style="width: 100px;" :disabled="isDetails" maxlength="9">
-              <span slot="append">{{$t('Minute')}}</span>
-            </el-input>
-          </div>
-        </label>
-      </div>
-    </div>
-
-    <div class="clearfix list" v-if="enable && waitStartTimeout.enable">
-      <div class="text-box">
-        <span>{{$t('Timeout strategy')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding-top: 5px;">
-            <el-checkbox-group size="small" v-model="waitStartTimeout.strategy">
-              <el-checkbox label="FAILED" :disabled="true">{{$t('Timeout failure')}}</el-checkbox>
-            </el-checkbox-group>
-          </div>
-        </label>
-      </div>
-    </div>
-
-    <div class="clearfix list" v-if="enable">
-      <div class="text-box">
-        <span>{{$t('Waiting Dependent complete')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding: 5px 0;">
-            <el-switch v-model="waitCompleteTimeout.enable" size="small" @change="_onSwitch(2, $event)" :disabled="isDetails"></el-switch>
-          </div>
-        </label>
-      </div>
-    </div>
-
-    <div class="clearfix list" v-if="enable && waitCompleteTimeout.enable">
-      <div class="text-box">
-        <span>{{$t('Timeout period')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding-top: 2px;">
-            <el-input v-model="waitCompleteTimeout.interval" size="small" style="width: 100px;" :disabled="isDetails" maxlength="9">
-              <span slot="append">{{$t('Minute')}}</span>
-            </el-input>
-          </div>
-        </label>
-      </div>
-    </div>
-
-    <div class="clearfix list" v-if="enable && waitCompleteTimeout.enable">
-      <div class="text-box">
-        <span>{{$t('Timeout strategy')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding-top: 5px;">
-            <el-checkbox-group size="small" v-model="waitCompleteTimeout.strategy">
-              <el-checkbox label="WARN" :disabled="isDetails">{{$t('Timeout alarm')}}</el-checkbox>
-              <el-checkbox label="FAILED" :disabled="isDetails">{{$t('Timeout failure')}}</el-checkbox>
-            </el-checkbox-group>
-          </div>
-        </label>
-      </div>
-    </div>
-  </div>
-</template>
-<script>
-  import _ from 'lodash'
-  import disabledState from '@/module/mixin/disabledState'
-
-  export default {
-    name: 'form-dependent-timeout',
-    data () {
-      return {
-        // Timeout display hiding
-        enable: false,
-        waitStartTimeout: {
-          enable: false,
-          // Timeout strategy
-          strategy: ['FAILED'],
-          // Timeout period
-          interval: null,
-          checkInterval: null
-        },
-        waitCompleteTimeout: {
-          enable: false,
-          // Timeout strategy
-          strategy: [],
-          // Timeout period
-          interval: null
-        }
-      }
-    },
-    mixins: [disabledState],
-    props: {
-      backfillItem: Object
-    },
-    methods: {
-      _onSwitch (p, is) {
-        // reset timeout setting when switch timeout on/off.
-        // p = 0 for timeout switch; p = 1 for wait start timeout switch; p = 2 for wait complete timeout switch.
-        if (p === 1 || p === 0) {
-          this.waitStartTimeout.interval = is ? 30 : null
-          this.waitStartTimeout.checkInterval = is ? 1 : null
-        }
-        if (p === 2 || p === 0) {
-          this.waitCompleteTimeout.strategy = is ? ['WARN'] : []
-          this.waitCompleteTimeout.interval = is ? 30 : null
-        }
-      },
-      _verification () {
-        // Verification timeout policy
-        if (this.enable &&
-          (this.waitCompleteTimeout.enable && !this.waitCompleteTimeout.strategy.length) ||
-          (this.waitStartTimeout.enable && !this.waitStartTimeout.strategy.length)) {
-          this.$message.warning(`${this.$t('Timeout strategy must be selected')}`)
-          return false
-        }
-        // Verify timeout duration Non 0 positive integer
-        const reg = /^[1-9]\d*$/
-        if (this.enable &&
-          (this.waitCompleteTimeout.enable && !reg.test(this.waitCompleteTimeout.interval)) ||
-          (this.waitStartTimeout.enable && (!reg.test(this.waitStartTimeout.interval || !reg.test(this.waitStartTimeout.checkInterval))))) {
-          this.$message.warning(`${this.$t('Timeout must be a positive integer')}`)
-          return false
-        }
-        // Verify timeout duration longer than check interval
-        if (this.enable && this.waitStartTimeout.enable && this.waitStartTimeout.checkInterval >= this.waitStartTimeout.interval) {
-          this.$message.warning(`${this.$t('Timeout must be longer than check interval')}`)
-          return false
-        }
-        this.$emit('on-timeout', {
-          waitStartTimeout: {
-            strategy: 'FAILED',
-            interval: parseInt(this.waitStartTimeout.interval),
-            checkInterval: parseInt(this.waitStartTimeout.checkInterval),
-            enable: this.waitStartTimeout.enable
-          },
-          waitCompleteTimeout: {
-            strategy: (() => {
-              // Handling checkout sequence
-              let strategy = this.waitCompleteTimeout.strategy
-              if (strategy.length === 2 && strategy[0] === 'FAILED') {
-                return [strategy[1], strategy[0]].join(',')
-              } else {
-                return strategy.join(',')
-              }
-            })(),
-            interval: parseInt(this.waitCompleteTimeout.interval),
-            enable: this.waitCompleteTimeout.enable
-          }
-        })
-        return true
-      }
-    },
-    watch: {
-    },
-    created () {
-      let o = this.backfillItem
-      // Non-null objects represent backfill
-      if (!_.isEmpty(o)) {
-        if (o.timeout) {
-          this.enable = true
-          this.waitCompleteTimeout.enable = o.timeout.enable || false
-          this.waitCompleteTimeout.strategy = _.split(o.timeout.strategy, ',') || ['WARN']
-          this.waitCompleteTimeout.interval = o.timeout.interval || null
-        }
-        if (o.waitStartTimeout) {
-          this.enable = true
-          this.waitStartTimeout.enable = o.waitStartTimeout.enable || false
-          this.waitStartTimeout.strategy = ['FAILED']
-          this.waitStartTimeout.interval = o.waitStartTimeout.interval || null
-          this.waitStartTimeout.checkInterval = o.waitStartTimeout.checkInterval || null
-        }
-      }
-    },
-    mounted () {
-    },
-    components: {}
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/referenceFromTask.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/referenceFromTask.vue
deleted file mode 100644
index be631908ba..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/referenceFromTask.vue
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <list-box>
-    <div slot="text">{{ $t("Reference from") }}</div>
-    <div slot="content" class="copy-from" ref="copyFrom">
-      <div class="copy-from-content">
-        <el-input
-          class="copy-from-input"
-          v-model="searchVal"
-          :placeholder="getTaskName(value) || $t('Please choose')"
-          @focus="inputFocus"
-          @input="searchValChange"
-          size="small"
-          :suffix-icon="
-            dropdownVisible ? 'el-icon-arrow-up' : 'el-icon-arrow-down'
-          "
-        ></el-input>
-        <div class="copy-from-dropdown" v-show="dropdownVisible">
-          <div class="scroll-box">
-            <ul v-infinite-scroll="load">
-              <li
-                v-for="taskDefinition in taskDefinitions"
-                :key="taskDefinition.code"
-                class="dropdown-item"
-                @click="itemClick(taskDefinition)"
-              >
-                {{ taskDefinition.name }}
-              </li>
-            </ul>
-            <p class="dropdown-msg" v-if="loading">{{ $t("Loading...") }}</p>
-            <p class="dropdown-msg" v-if="noMore">{{ $t("No more...") }}</p>
-          </div>
-        </div>
-      </div>
-    </div>
-  </list-box>
-</template>
-
-<script>
-  import ListBox from '../tasks/_source/listBox'
-  import { mapActions } from 'vuex'
-
-  export default {
-    name: 'copy-from-task',
-    props: {
-      taskType: String
-    },
-    inject: ['formModel'],
-    data () {
-      return {
-        pageNo: 1,
-        pageSize: 10,
-        searchVal: '',
-        value: '',
-        loading: false,
-        noMore: false,
-        taskDefinitions: [],
-        dropdownVisible: false
-      }
-    },
-    mounted () {
-      document.addEventListener('click', this.outsideClick)
-      this.load()
-    },
-    destroyed () {
-      document.removeEventListener('click', this.outsideClick)
-    },
-    methods: {
-      ...mapActions('dag', ['getTaskDefinitionList']),
-      outsideClick (e) {
-        const elem = this.$refs.copyFrom
-        if (!elem.contains(e.target) && this.dropdownVisible) {
-          this.dropdownVisible = false
-        }
-      },
-      searchValChange (val) {
-        this.load(true)
-      },
-      load (override) {
-        if (this.loading) return
-        if (override) {
-          this.noMore = false
-          this.pageNo = 1
-        }
-        if (this.noMore) return
-        this.loading = true
-        this.getTaskDefinitionsList({
-          pageNo: this.pageNo,
-          pageSize: this.pageSize,
-          searchVal: this.searchVal,
-          taskType: this.taskType
-        }).then((res) => {
-          this.taskDefinitions = override ? res.totalList : this.taskDefinitions.concat(res.totalList)
-          this.pageNo = res.currentPage + 1
-          this.noMore = this.taskDefinitions.length >= res.total
-          this.loading = false
-        })
-      },
-      itemClick (taskDefinition) {
-        this.value = taskDefinition.code
-        this.searchVal = taskDefinition.name
-        this.dropdownVisible = false
-
-        if (this.formModel) {
-          const backfillItem = this.formModel.taskToBackfillItem(taskDefinition)
-          this.formModel.backfillRefresh = false
-          this.$nextTick(() => {
-            this.formModel.backfillItem = backfillItem
-            this.formModel.backfill(backfillItem)
-            this.formModel.backfillRefresh = true
-          })
-        }
-      },
-      inputFocus () {
-        this.searchVal = ''
-        this.dropdownVisible = true
-      },
-      inputBlur () {
-        this.dropdownVisible = false
-      },
-      getTaskName (code) {
-        const taskDefinition = this.taskDefinitions.find(
-          (taskDefinition) => taskDefinition.code === code
-        )
-        return taskDefinition ? taskDefinition.name : ''
-      }
-    },
-    components: {
-      ListBox
-    }
-  }
-</script>
-
-<style lang="scss" scoped>
-.copy-from {
-  position: relative;
-  &-content {
-    width: 100%;
-  }
-  &-input {
-    width: 100%;
-  }
-  &-dropdown {
-    width: 100%;
-    position: absolute;
-    padding: 6px 0;
-    top: 42px;
-    left: 0;
-    z-index: 10;
-    border: 1px solid #e4e7ed;
-    border-radius: 4px;
-    background-color: #fff;
-    box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
-
-    .scroll-box {
-      width: 100%;
-      max-height: 200px;
-      overflow: auto;
-    }
-
-    .dropdown-item {
-      font-size: 14px;
-      padding: 0 20px;
-      position: relative;
-      white-space: nowrap;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      color: #606266;
-      height: 34px;
-      line-height: 34px;
-      box-sizing: border-box;
-      cursor: pointer;
-      &:hover {
-        background-color: #f5f7fa;
-      }
-      &.selected {
-        color: #409eff;
-        font-weight: 700;
-      }
-    }
-
-    &:before,
-    &:after {
-      content: "";
-      position: absolute;
-      display: block;
-      width: 0;
-      height: 0;
-      top: -6px;
-      left: 35px;
-      border-width: 6px;
-      border-top-width: 0;
-      border-color: transparent;
-      border-bottom-color: #fff;
-      border-style: solid;
-      z-index: 10;
-    }
-
-    &:before {
-      top: -8px;
-      left: 33px;
-      border-width: 8px;
-      border-top-width: 0;
-      border-bottom-color: #ebeef5;
-      z-index: 9;
-    }
-
-    .dropdown-msg {
-      text-align: center;
-      color: #666;
-      font-size: 12px;
-      line-height: 34px;
-      margin: 0;
-    }
-  }
-}
-</style>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/relatedEnvironment.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/relatedEnvironment.vue
deleted file mode 100644
index ff5d0da2bc..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/relatedEnvironment.vue
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <el-select
-          :disabled="isDetails"
-          clearable
-          @change="_onChange"
-          v-model="selectedValue"
-          size="small"
-          style="width: 180px">
-    <el-option
-            v-for="item in environmentOptions"
-            :key="item.code"
-            :value="item.code"
-            :label="item.name">
-    </el-option>
-  </el-select>
-</template>
-<script>
-  import disabledState from '@/module/mixin/disabledState'
-  export default {
-    name: 'form-related-environment',
-    data () {
-      return {
-        selectedValue: '',
-        selectedWorkerGroup: this.workerGroup,
-        environmentOptions: [],
-        environmentList: []
-      }
-    },
-    mixins: [disabledState],
-    props: {
-      value: {
-        type: String
-      },
-      workerGroup: {
-        type: String
-      },
-      isNewCreate: {
-        type: Boolean
-      }
-    },
-    model: {
-      prop: 'value',
-      event: 'environmentCodeEvent'
-    },
-    methods: {
-      _onChange (o) {
-        this.$emit('environmentCodeEvent', o)
-      },
-      _getEnvironmentAll () {
-        return new Promise((resolve, reject) => {
-          this.store.dispatch('security/getEnvironmentAll').then(res => {
-            resolve(res)
-          }).catch(e => {
-            reject(e)
-          })
-        })
-      },
-      _initEnvironmentOptions (workerGroup) {
-        this.environmentOptions = []
-        this.selectedValue = ''
-        if (this.environmentList && workerGroup) {
-          this.environmentList.forEach(item => {
-            if (item.workerGroups && item.workerGroups.length > 0) {
-              if (item.workerGroups.indexOf(workerGroup) >= 0) {
-                this.environmentOptions.push({ code: item.code, name: item.name })
-                if (item.code === this.value) {
-                  this.selectedValue = this.value
-                }
-              }
-            }
-          })
-        }
-
-        if (this.environmentOptions.length > 0) {
-          /// default to select this environment when only have one environment
-          /// automatically select only when creating a new task
-          if (this.isNewCreate && this.environmentOptions.length === 1 && this.selectedValue === '') {
-            this.selectedValue = this.environmentOptions[0].code
-          }
-          this.$emit('environmentCodeEvent', this.selectedValue)
-        } else {
-          this.selectedValue = ''
-          this.$emit('environmentCodeEvent', this.selectedValue)
-        }
-      }
-    },
-    watch: {
-      value: function (val) {
-      },
-      workerGroup: function (val) {
-        this.selectedWorkerGroup = val
-        this._initEnvironmentOptions(this.selectedWorkerGroup)
-      }
-    },
-    created () {
-      this._getEnvironmentAll().then(res => {
-        this.environmentList = res
-        this._initEnvironmentOptions(this.workerGroup)
-      })
-    }
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/selectInput.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/selectInput.vue
deleted file mode 100644
index 0af6729f8d..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/selectInput.vue
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <el-select
-          style="width: 157px;"
-          :disabled="isDetails"
-          size="small"
-          @change="_onChange"
-          v-model="selectedValue"
-          filterable
-          allow-create>
-      <el-input
-              ref="input"
-              slot="trigger"
-              v-if="isInput"
-              :disabled="isDetails"
-              slot-scope="{ selectedModel }"
-              maxlength="4"
-              @blur="_onBlur"
-              :placeholder="$t('Please choose')"
-              :value="selectedModel === null ? '0' : selectedModel.value"
-              style="width: 100%;"
-              @click="_ckIcon">
-        <em slot="suffix" class="el-icon-error" style="font-size: 15px;cursor: pointer;" v-show="!isIconState"></em>
-        <em slot="suffix" class="el-icon-arrow-down" style="font-size: 12px;" v-show="isIconState"></em>
-      </el-input>
-    <el-option
-            v-for="city in list"
-            :key="city"
-            :value="city"
-            :label="city">
-    </el-option>
-  </el-select>
-</template>
-<script>
-  import _ from 'lodash'
-  import i18n from '@/module/i18n'
-  import disabledState from '@/module/mixin/disabledState'
-
-  export default {
-    name: 'form-select-input',
-    data () {
-      return {
-        selectedValue: this.value,
-        isIconState: false,
-        isInput: true
-      }
-    },
-    mixins: [disabledState],
-    props: {
-      value: String,
-      list: Array
-    },
-    model: {
-      prop: 'value',
-      event: 'valueEvent'
-    },
-    methods: {
-      _onChange (o) {
-        // positive integer judgment
-        const r = /^\+?[1-9][0-9]*$/
-        if (!r.test(o)) {
-          this.$message.warning(`${i18n.$t('Please enter a positive integer')}`)
-        } else {
-          this.$emit('valueEvent', +o)
-          this._setIconState(+o)
-        }
-      },
-      _setIconState (value) {
-        // Whether there is a list
-        this.isIconState = _.includes(this.list, parseInt(value))
-      },
-      _ckIcon () {
-        if (this.isDetails) {
-          return
-        }
-        this.isInput = false
-        this.$emit('valueEvent', +this.list[0])
-        this.isIconState = true
-        // Refresh instance
-        setTimeout(() => {
-          this.isInput = true
-        }, 1)
-      },
-      _onBlur () {
-        let val = $(this.$refs.input.$el).find('input')[0].value
-        if (this._validation(val)) {
-          this.$emit('valueEvent', val)
-          this._setIconState(val)
-        }
-      },
-      _validation (val) {
-        if (val === '0') return true
-
-        if (!(/(^[0-9]*[1-9][0-9]*$)/.test(val))) {
-          this.$message.warning(`${i18n.$t('Please enter a positive integer')}`)
-          // init
-          this._ckIcon()
-          return false
-        }
-        return true
-      }
-    },
-    watch: {
-      value (val) {
-        this.selectedValue = val
-      }
-    },
-    created () {
-      this._setIconState(this.selectedValue)
-    },
-    mounted () {
-    },
-    components: {}
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/taskGroups.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/taskGroups.vue
deleted file mode 100644
index 75b042c5ab..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/taskGroups.vue
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <el-select
-          :disabled="isDetails"
-          @change="_onChange"
-          v-model="selectedValue"
-          size="small"
-          clearable
-          style="width: 180px">
-    <el-option
-            v-for="item in taskGroupList"
-            :key="item.id"
-            :value="item.id"
-            :label="item.name">
-    </el-option>
-  </el-select>
-</template>
-<script>
-  import disabledState from '@/module/mixin/disabledState'
-  export default {
-    name: 'form-task-group',
-    data () {
-      return {
-        selectedValue: this.value,
-        taskGroupList: []
-      }
-    },
-    mixins: [disabledState],
-    props: {
-      projectCode: {
-        type: Number
-      },
-      value: {
-        type: Number
-      }
-    },
-    model: {
-      prop: 'value',
-      event: 'taskGroupIdEvent'
-    },
-    methods: {
-      _onChange (o) {
-        this.$emit('taskGroupIdEvent', o)
-      }
-    },
-    watch: {
-      value (val) {
-        this.selectedValue = val
-      }
-    },
-    created () {
-      let stateTaskGroupList = this.store.state.resource.taskGroupListAll || []
-      if (stateTaskGroupList.length) {
-        this.taskGroupList = stateTaskGroupList
-      } else {
-        let params = {
-          pageNo: 1,
-          pageSize: 2147483647,
-          projectCode: this.projectCode
-        }
-        this.store.dispatch('resource/getTaskGroupListPagingByProjectCode', params).then(res => {
-          this.$nextTick(() => {
-            if (res.totalList) {
-              this.taskGroupList = res.totalList
-            }
-          })
-        })
-      }
-    }
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/timeoutAlarm.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/timeoutAlarm.vue
deleted file mode 100644
index 18b7314877..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/timeoutAlarm.vue
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div class="timeout-alarm-model">
-    <div class="clearfix list">
-      <div class="text-box">
-        <span>{{$t('Timeout alarm')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding-top: 5px;">
-            <el-switch v-model="enable" size="small" @change="_onSwitch" :disabled="isDetails"></el-switch>
-          </div>
-        </label>
-      </div>
-    </div>
-    <div class="clearfix list" v-if="enable">
-      <div class="text-box">
-        <span>{{$t('Timeout strategy')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <div style="padding-top: 6px;">
-            <el-checkbox-group v-model="strategy" size="small">
-              <el-checkbox label="WARN" :disabled="isDetails">{{$t('Timeout alarm')}}</el-checkbox>
-              <el-checkbox label="FAILED" :disabled="isDetails">{{$t('Timeout failure')}}</el-checkbox>
-            </el-checkbox-group>
-          </div>
-        </label>
-      </div>
-    </div>
-    <div class="clearfix list" v-if="enable">
-      <div class="text-box">
-        <span>{{$t('Timeout period')}}</span>
-      </div>
-      <div class="cont-box">
-        <label class="label-box">
-          <el-input v-model="interval" size="small" style="width: 200px;" :disabled="isDetails" maxlength="9">
-            <span slot="append">{{$t('Minute')}}</span>
-          </el-input>
-        </label>
-      </div>
-    </div>
-  </div>
-</template>
-<script>
-  import _ from 'lodash'
-  import disabledState from '@/module/mixin/disabledState'
-  const StrategyMap = {
-    WARN: 'WARN',
-    FAILED: 'FAILED',
-    WARNFAILED: 'WARNFAILED'
-  }
-  export default {
-    name: 'form-timeout-alarm',
-    data () {
-      return {
-        // Timeout display hiding
-        enable: false,
-        // Timeout strategy
-        strategy: [],
-        // Timeout period
-        interval: null
-      }
-    },
-    mixins: [disabledState],
-    props: {
-      backfillItem: Object
-    },
-    methods: {
-      _onSwitch (is) {
-        // Timeout strategy
-        this.strategy = is ? ['WARN'] : []
-        // Timeout period
-        this.interval = is ? 30 : null
-      },
-      _verification () {
-        // Verification timeout policy
-        if (this.enable && !this.strategy.length) {
-          this.$message.warning(`${this.$t('Timeout strategy must be selected')}`)
-          return false
-        }
-        // Verify timeout duration Non 0 positive integer
-        const reg = /^[1-9]\d*$/
-        if (this.enable && !reg.test(this.interval)) {
-          this.$message.warning(`${this.$t('Timeout must be a positive integer')}`)
-          return false
-        }
-        this.$emit('on-timeout', {
-          strategy: (() => {
-            // Handling checkout sequence
-            let strategy = this.strategy
-            if (strategy.length > 1) {
-              return StrategyMap.WARNFAILED
-            } else if (strategy.length === 1) {
-              return strategy[0]
-            } else {
-              return ''
-            }
-          })(),
-          interval: parseInt(this.interval),
-          enable: this.enable
-        })
-        return true
-      }
-    },
-    watch: {
-    },
-    created () {
-      let o = this.backfillItem
-      // Non-null objects represent backfill
-      if (!_.isEmpty(o) && o.timeout) {
-        this.enable = o.timeout.enable || false
-        if (o.timeout.strategy) {
-          if (o.timeout.strategy === StrategyMap.WARNFAILED) {
-            this.strategy = [StrategyMap.WARN, StrategyMap.FAILED]
-          } else {
-            this.strategy = [o.timeout.strategy]
-          }
-        } else {
-          this.strategy = [StrategyMap.WARN]
-        }
-        this.interval = o.timeout.interval || null
-      }
-    },
-    mounted () {
-    },
-    components: {}
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/workerGroups.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/workerGroups.vue
deleted file mode 100644
index de2b2c73c2..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/_source/workerGroups.vue
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <el-select
-          :disabled="isDetails"
-          @change="_onChange"
-          v-model="selectedValue"
-          size="small"
-          style="width: 180px">
-    <el-option
-            v-for="item in workerGroupsList"
-            :key="item.id"
-            :value="item.id"
-            :label="item.name">
-    </el-option>
-  </el-select>
-</template>
-<script>
-  import disabledState from '@/module/mixin/disabledState'
-  export default {
-    name: 'form-worker-group',
-    data () {
-      return {
-        selectedValue: this.value,
-        workerGroupsList: []
-      }
-    },
-    mixins: [disabledState],
-    props: {
-      value: {
-        type: String,
-        default: 'default'
-      }
-    },
-    model: {
-      prop: 'value',
-      event: 'workerGroupsEvent'
-    },
-    methods: {
-      _onChange (o) {
-        this.$emit('workerGroupsEvent', o)
-      }
-    },
-    watch: {
-      value (val) {
-        this.selectedValue = val
-      }
-    },
-    created () {
-      let stateWorkerGroupsList = this.store.state.security.workerGroupsListAll || []
-      if (stateWorkerGroupsList.length) {
-        this.workerGroupsList = stateWorkerGroupsList
-      } else {
-        this.store.dispatch('security/getWorkerGroupsAll').then(res => {
-          this.$nextTick(() => {
-            this.workerGroupsList = res
-          })
-        })
-      }
-    }
-  }
-</script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formLineModel.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formLineModel.vue
deleted file mode 100644
index 7c5933467b..0000000000
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formLineModel.vue
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-<template>
-  <div class="form-model-wrapper" v-clickoutside="_handleClose">
-    <div class="title-box">
-      <span class="name">{{$t('Current connection settings')}}</span>
-    </div>
-    <div class="content-box">
-      <div class="form-model">
-        <!-- Node name -->
-        <div class="clearfix list">
-          <div class="text-box"><span>{{$t('Connection name')}}</span></div>
-          <div class="cont-box">
-            <label class="label-box">
-              <el-input
-                type="text"
-                size="small"
-                v-model="labelName"
-                :disabled="isDetails"
-                :placeholder="$t('Please enter name')"
-                maxlength="100">
-              </el-input>
-            </label>
-          </div>
-        </div>
-      </div>
-    </div>
-    <div class="bottom-box">
-      <div class="submit" style="background: #fff;">
-        <el-button type="text" size="small" @click="cancel()"> {{$t('Cancel')}} </el-button>
-        <el-button type="primary" size="small" round :loading="spinnerLoading" @click="ok()" :disabled="isDetails">{{spinnerLoading ? $t('Loading...') : $t('Confirm add')}} </el-button>
-      </div>
-    </div>
-  </div>
-</template>
-<script>
-  import disabledState from '@/module/mixin/disabledState'
-
-  export default {
-    name: 'form-line-model',
-    data () {
-      return {
-        // loading
-        spinnerLoading: false,
-        // node name
-        labelName: ''
-      }
... 58118 lines suppressed ...