You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by li...@apache.org on 2020/12/11 14:58:37 UTC

[incubator-dolphinscheduler] branch dev updated: [Feature-3878]Replace the page with element-ui (#4065)

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

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


The following commit(s) were added to refs/heads/dev by this push:
     new e033f81  [Feature-3878]Replace the page with element-ui (#4065)
e033f81 is described below

commit e033f81e9d340d45896a89144668762fe1f7d5b7
Author: break60 <79...@qq.com>
AuthorDate: Fri Dec 11 22:58:28 2020 +0800

    [Feature-3878]Replace the page with element-ui (#4065)
    
    * [Feature-3878]Introduce elment-ui and replace the security center module page with elment-ui
    
    * Change node version
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * Replace the page with element-ui
    
    * Replace user management with elment-ui
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * fix
    
    * Repair the last Sunday of each month
---
 .github/workflows/ci_frontend.yml                  |   3 +-
 dolphinscheduler-dist/release-docs/LICENSE         |   1 +
 .../licenses/ui-licenses/LICENSE-element-ui        |  21 +
 dolphinscheduler-ui/build/config.js                |   2 +-
 dolphinscheduler-ui/package.json                   |   6 +-
 dolphinscheduler-ui/pom.xml                        |   3 +-
 dolphinscheduler-ui/src/js/conf/home/index.js      |  13 +-
 .../src/js/conf/home/pages/dag/_source/config.js   |  38 +-
 .../src/js/conf/home/pages/dag/_source/dag.js      |  35 +-
 .../src/js/conf/home/pages/dag/_source/dag.scss    |   3 +-
 .../src/js/conf/home/pages/dag/_source/dag.vue     | 577 +++++++++----------
 .../_source/formModel/_source/dependentTimeout.vue |  32 +-
 .../dag/_source/formModel/_source/selectInput.vue  |  27 +-
 .../dag/_source/formModel/_source/timeoutAlarm.vue |  14 +-
 .../dag/_source/formModel/_source/workerGroups.vue |  15 +-
 .../pages/dag/_source/formModel/formLineModel.vue  |  32 +-
 .../home/pages/dag/_source/formModel/formModel.vue | 171 +++---
 .../conf/home/pages/dag/_source/formModel/log.vue  |  33 +-
 .../_source/formModel/tasks/_source/datasource.vue |  22 +-
 .../formModel/tasks/_source/dependItemList.vue     |  56 +-
 .../_source/formModel/tasks/_source/httpParams.vue |  27 +-
 .../tasks/_source/{scriptBox.vue => jsonBox.vue}   |  13 +-
 .../formModel/tasks/_source/localParams.vue        |  38 +-
 .../_source/formModel/tasks/_source/nodeStatus.vue |  26 +-
 .../_source/formModel/tasks/_source/resources.vue  |   9 +-
 .../_source/formModel/tasks/_source/scriptBox.vue  |   7 -
 .../_source/formModel/tasks/_source/sqlType.vue    |  15 +-
 .../formModel/tasks/_source/statementList.vue      |  13 +-
 .../dag/_source/formModel/tasks/_source/udfs.vue   |   9 +-
 .../dag/_source/formModel/tasks/conditions.vue     |   6 +-
 .../pages/dag/_source/formModel/tasks/datax.vue    |  99 +---
 .../dag/_source/formModel/tasks/dependent.vue      |   6 +-
 .../pages/dag/_source/formModel/tasks/flink.vue    |  93 ++--
 .../pages/dag/_source/formModel/tasks/http.vue     |  40 +-
 .../home/pages/dag/_source/formModel/tasks/mr.vue  |  32 +-
 .../dag/_source/formModel/tasks/pre_tasks.vue      |   9 +-
 .../dag/_source/formModel/tasks/procedure.vue      |  14 +-
 .../pages/dag/_source/formModel/tasks/python.vue   |  51 +-
 .../pages/dag/_source/formModel/tasks/shell.vue    |  58 +-
 .../pages/dag/_source/formModel/tasks/spark.vue    | 148 +++--
 .../home/pages/dag/_source/formModel/tasks/sql.vue |  69 +--
 .../pages/dag/_source/formModel/tasks/sqoop.vue    | 263 +++++----
 .../dag/_source/formModel/tasks/sub_process.vue    |  21 +-
 .../dag/_source/formModel/tasks/waterdrop.vue      |  43 +-
 .../home/pages/dag/_source/jumpAffirm/index.js     |  43 +-
 .../home/pages/dag/_source/plugIn/jsPlumbHandle.js |  83 +--
 .../js/conf/home/pages/dag/_source/plugIn/util.js  |  12 +-
 .../home/pages/dag/_source/startingParam/index.vue |   2 +-
 .../pages/dag/_source/udp/_source/selectTenant.vue |  15 +-
 .../src/js/conf/home/pages/dag/_source/udp/udp.vue |  26 +-
 .../pages/dag/_source/variable/variablesView.vue   |  16 +-
 .../pages/list/_source/createDataSource.vue        |  99 ++--
 .../pages/datasource/pages/list/_source/list.vue   | 142 ++---
 .../home/pages/datasource/pages/list/index.vue     |  62 ++-
 .../src/js/conf/home/pages/home/index.vue          |   2 +-
 .../src/js/conf/home/pages/monitor/index.vue       |   2 +-
 .../pages/servers/_source/zookeeperDirectories.vue |  23 +-
 .../pages/servers/_source/zookeeperList.vue        | 108 +---
 .../home/pages/monitor/pages/servers/apiserver.vue |   6 -
 .../conf/home/pages/monitor/pages/servers/db.vue   |  17 +-
 .../home/pages/monitor/pages/servers/worker.vue    |  23 +-
 .../conditions/instance/processInstance.vue        |  61 +-
 .../_source/conditions/instance/taskInstance.vue   |  63 +--
 .../_source/taskRecordList/_source/conditions.vue  |  68 ++-
 .../pages/_source/taskRecordList/_source/list.vue  |  96 ++--
 .../pages/_source/taskRecordList/index.vue         |  11 +-
 .../pages/definition/pages/list/_source/email.vue  |  38 +-
 .../pages/definition/pages/list/_source/list.vue   | 615 +++++++++------------
 .../definition/pages/list/_source/relatedItems.vue |  12 +-
 .../pages/definition/pages/list/_source/start.vue  | 101 ++--
 .../pages/definition/pages/list/_source/timing.vue | 143 +++--
 .../definition/pages/list/_source/versions.vue     | 171 ++----
 .../projects/pages/definition/pages/list/index.vue |  17 +-
 .../projects/pages/definition/pages/tree/index.vue |  24 +-
 .../pages/definition/timing/_source/list.vue       | 240 ++++----
 .../projects/pages/definition/timing/index.vue     |   2 +-
 .../conf/home/pages/projects/pages/index/index.vue |  26 +-
 .../projects/pages/instance/pages/gantt/index.vue  |   2 +-
 .../pages/instance/pages/list/_source/list.vue     | 487 +++++++---------
 .../projects/pages/instance/pages/list/index.vue   |  12 +-
 .../pages/kinship/_source/graphGridOption.js       |  53 +-
 .../home/pages/projects/pages/kinship/index.vue    |  26 +-
 .../projects/pages/list/_source/createProject.vue  |  24 +-
 .../pages/projects/pages/list/_source/list.vue     | 142 ++---
 .../conf/home/pages/projects/pages/list/index.vue  |  47 +-
 .../projects/pages/taskInstance/_source/list.vue   | 196 +++----
 .../pages/projects/pages/taskInstance/index.vue    |  12 +-
 .../src/js/conf/home/pages/resource/index.vue      |   1 -
 .../conf/home/pages/resource/pages/file/index.vue  |   1 -
 .../resource/pages/file/pages/create/index.vue     |  29 +-
 .../pages/file/pages/createFolder/index.vue        |  34 +-
 .../pages/file/pages/createUdfFolder/index.vue     |  22 +-
 .../resource/pages/file/pages/details/index.vue    |   6 +-
 .../pages/resource/pages/file/pages/edit/index.vue |   4 +-
 .../pages/file/pages/list/_source/list.vue         | 215 +++----
 .../pages/file/pages/list/_source/rename.vue       |  21 +-
 .../pages/resource/pages/file/pages/list/index.vue |  22 +-
 .../resource/pages/file/pages/subFile/index.vue    |  26 +-
 .../pages/file/pages/subFileFolder/index.vue       |  34 +-
 .../pages/file/pages/subdirectory/_source/list.vue | 211 +++----
 .../file/pages/subdirectory/_source/rename.vue     |  21 +-
 .../pages/file/pages/subdirectory/index.vue        |  22 +-
 .../pages/udf/pages/createUdfFolder/index.vue      |  21 +-
 .../pages/udf/pages/function/_source/createUdf.vue |  48 +-
 .../pages/udf/pages/function/_source/list.vue      | 186 ++-----
 .../resource/pages/udf/pages/function/index.vue    |  59 +-
 .../pages/udf/pages/resource/_source/list.vue      | 208 +++----
 .../pages/udf/pages/resource/_source/rename.vue    |  21 +-
 .../resource/pages/udf/pages/resource/index.vue    |  20 +-
 .../udf/pages/subUdfDirectory/_source/list.vue     | 203 +++----
 .../udf/pages/subUdfDirectory/_source/rename.vue   |  21 +-
 .../pages/udf/pages/subUdfDirectory/index.vue      |  20 +-
 .../pages/udf/pages/subUdfFolder/index.vue         |  21 +-
 .../src/js/conf/home/pages/security/index.vue      |   1 -
 .../security/pages/queue/_source/createQueue.vue   |  22 +-
 .../pages/security/pages/queue/_source/list.vue    |  96 +---
 .../conf/home/pages/security/pages/queue/index.vue |  61 +-
 .../pages/tenement/_source/createTenement.vue      |  37 +-
 .../pages/security/pages/tenement/_source/list.vue | 123 ++---
 .../home/pages/security/pages/tenement/index.vue   |  61 +-
 .../conf/home/pages/security/pages/token/index.vue |   1 -
 .../security/pages/users/_source/createUser.vue    |  56 +-
 .../pages/security/pages/users/_source/list.vue    | 426 ++++++--------
 .../conf/home/pages/security/pages/users/index.vue |  62 ++-
 .../pages/warningGroups/_source/createWarning.vue  |  30 +-
 .../security/pages/warningGroups/_source/list.vue  | 176 +++---
 .../pages/security/pages/warningGroups/index.vue   |  62 ++-
 .../pages/workerGroups/_source/createWorker.vue    |  10 +-
 .../security/pages/workerGroups/_source/list.vue   |  64 +--
 .../pages/security/pages/workerGroups/index.vue    |  38 +-
 .../src/js/conf/home/pages/user/index.vue          |   1 -
 .../home/pages/user/pages/account/_source/info.vue |  56 +-
 .../conf/home/pages/user/pages/account/index.vue   |   1 -
 .../pages/user/pages/password/_source/info.vue     |  12 +-
 .../conf/home/pages/user/pages/password/index.vue  |   1 -
 .../pages/user/pages/token/_source/createToken.vue |  43 +-
 .../home/pages/user/pages/token/_source/list.vue   | 110 ++--
 .../js/conf/home/pages/user/pages/token/index.vue  |  60 +-
 .../src/js/conf/home/store/dag/actions.js          |  18 +-
 .../src/js/conf/home/store/dag/mutations.js        |   4 +-
 .../src/js/conf/home/store/kinship/actions.js      |  26 +-
 .../src/js/conf/home/store/projects/mutations.js   |   4 +-
 .../src/js/conf/home/store/projects/state.js       |   2 +-
 dolphinscheduler-ui/src/js/conf/login/App.vue      |  16 +-
 dolphinscheduler-ui/src/js/conf/login/index.js     |   8 +-
 .../js/module/components/conditions/conditions.vue |  10 +-
 .../crontab/source/_source/input-number.vue        |   9 +-
 .../components/crontab/source/_times/day.vue       | 104 ++--
 .../components/crontab/source/_times/hour.vue      |  36 +-
 .../components/crontab/source/_times/minute.vue    |  36 +-
 .../components/crontab/source/_times/month.vue     |  36 +-
 .../components/crontab/source/_times/second.vue    |  36 +-
 .../components/crontab/source/_times/year.vue      |  36 +-
 .../js/module/components/crontab/source/app.vue    |  14 +-
 .../module/components/crontab/source/util/index.js |   2 +-
 .../components/fileUpdate/definitionUpdate.vue     |  29 +-
 .../components/fileUpdate/fileChildReUpdate.vue    |  25 +-
 .../components/fileUpdate/fileChildUpdate.vue      |  37 +-
 .../module/components/fileUpdate/fileReUpload.vue  |  25 +-
 .../js/module/components/fileUpdate/fileUpdate.vue |  34 +-
 .../components/fileUpdate/resourceChildUpdate.vue  |  35 +-
 .../js/module/components/fileUpdate/udfUpdate.vue  |  18 +-
 .../src/js/module/components/layout/layout.vue     |   4 +-
 .../src/js/module/components/nav/nav.vue           | 351 ++++++------
 .../src/js/module/components/popup/popup.vue       |   5 +-
 .../src/js/module/components/priority/priority.vue |  47 +-
 .../components/secondaryMenu/_source/menu.js       |  32 +-
 .../components/secondaryMenu/secondaryMenu.vue     |   6 +-
 .../components/tooltipsJSON/tooltipsJSON.vue       |  10 +-
 .../src/js/module/components/transfer/resource.vue |  68 +--
 .../src/js/module/components/transfer/transfer.vue |  66 +--
 .../src/js/module/i18n/locale/en_US.js             |  42 +-
 .../src/js/module/i18n/locale/zh_CN.js             |  36 +-
 dolphinscheduler-ui/src/sass/common/_table.scss    |   9 +
 dolphinscheduler-ui/src/sass/common/index.scss     |   1 -
 e2e/testng.xml                                     |   8 +-
 176 files changed, 4308 insertions(+), 5667 deletions(-)

diff --git a/.github/workflows/ci_frontend.yml b/.github/workflows/ci_frontend.yml
index b8e1125..1feaaba 100644
--- a/.github/workflows/ci_frontend.yml
+++ b/.github/workflows/ci_frontend.yml
@@ -52,7 +52,6 @@ jobs:
           npm install
           npm run lint
           npm run build
-
   License-check:
     runs-on: ubuntu-latest
     steps:
@@ -68,4 +67,4 @@ jobs:
         with:
           java-version: 1.8
       - name: Check
-        run: mvn -B apache-rat:check
+        run: mvn -B apache-rat:check
\ No newline at end of file
diff --git a/dolphinscheduler-dist/release-docs/LICENSE b/dolphinscheduler-dist/release-docs/LICENSE
index 038eea9..27bbaed 100644
--- a/dolphinscheduler-dist/release-docs/LICENSE
+++ b/dolphinscheduler-dist/release-docs/LICENSE
@@ -490,6 +490,7 @@ MIT licenses
     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
diff --git a/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-element-ui b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-element-ui
new file mode 100644
index 0000000..4b275d0
--- /dev/null
+++ b/dolphinscheduler-dist/release-docs/licenses/ui-licenses/LICENSE-element-ui
@@ -0,0 +1,21 @@
+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-ui/build/config.js b/dolphinscheduler-ui/build/config.js
index 2800115..11bbec5 100644
--- a/dolphinscheduler-ui/build/config.js
+++ b/dolphinscheduler-ui/build/config.js
@@ -207,7 +207,7 @@ const baseConfig = {
       'jquery':'jquery/dist/jquery.min.js',
       'jquery-ui': 'jquery-ui'
     },
-    extensions: ['.js', 'json', '.vue', '.scss']
+    extensions: ['*', '.js', 'json', '.vue', '.scss']
   },
   plugins: [
     new VueLoaderPlugin(),
diff --git a/dolphinscheduler-ui/package.json b/dolphinscheduler-ui/package.json
index 9624fa6..8a9291c 100644
--- a/dolphinscheduler-ui/package.json
+++ b/dolphinscheduler-ui/package.json
@@ -13,7 +13,6 @@
   },
   "dependencies": {
     "@riophae/vue-treeselect": "^0.4.0",
-    "ans-ui": "1.1.9",
     "axios": "^0.16.2",
     "bootstrap": "3.3.7",
     "canvg": "1.5.1",
@@ -23,6 +22,8 @@
     "dagre": "^0.8.5",
     "dayjs": "^1.7.8",
     "echarts": "4.1.0",
+    "element-ui": "2.13.2",
+    "font-awesome": "^4.7.0",
     "html2canvas": "^0.5.0-beta4",
     "jquery": "3.3.1",
     "jquery-ui": "^1.12.1",
@@ -31,7 +32,7 @@
     "lodash": "^4.17.11",
     "normalize.css": "^8.0.1",
     "vue": "^2.5.17",
-    "vue-router": "2.7.0",
+    "vue-router": "^3.0.0",
     "vuex": "^3.0.0",
     "vuex-router-sync": "^5.0.0"
   },
@@ -65,6 +66,7 @@
     "html-webpack-plugin": "^3.2.0",
     "mini-css-extract-plugin": "^0.8.2",
     "node-sass": "^4.14.1",
+    "pack": "^2.2.0",
     "postcss-loader": "^3.0.0",
     "progress-bar-webpack-plugin": "^1.12.1",
     "rimraf": "^2.6.2",
diff --git a/dolphinscheduler-ui/pom.xml b/dolphinscheduler-ui/pom.xml
index 8e644de..1263502 100644
--- a/dolphinscheduler-ui/pom.xml
+++ b/dolphinscheduler-ui/pom.xml
@@ -203,5 +203,4 @@
   </profiles>
 
 
-
-</project>
+</project>
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/js/conf/home/index.js b/dolphinscheduler-ui/src/js/conf/home/index.js
index efec218..1324705 100644
--- a/dolphinscheduler-ui/src/js/conf/home/index.js
+++ b/dolphinscheduler-ui/src/js/conf/home/index.js
@@ -18,6 +18,9 @@
 // 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 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'
@@ -27,20 +30,20 @@ import Chart from '@/module/ana-charts'
 import '@/module/filter/formatDate'
 import themeData from '@/module/echarts/themeData.json'
 import Permissions from '@/module/permissions'
-import 'ans-ui/lib/ans-ui.min.css'
-import ans from 'ans-ui/lib/ans-ui.min'
-import en_US from 'ans-ui/lib/locale/en' // eslint-disable-line
 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 'font-awesome/css/font-awesome.min.css'
 
 // Component internationalization
-const useOpt = i18n.globalScope.LOCALE === 'en_US' ? { locale: en_US } : {}
+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(ans, useOpt)
+Vue.use(useOpt)
 
 sync(store, router)
 
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
index 18fbd94..f759496 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/config.js
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/config.js
@@ -29,31 +29,31 @@ const toolOper = (dagThis) => {
   return [
     {
       code: 'pointer',
-      icon: 'ans-icon-pointer',
+      icon: 'el-icon-thumb',
       disable: disabled,
       desc: `${i18n.$t('Drag Nodes and Selected Items')}`
     },
     {
       code: 'line',
-      icon: 'ans-icon-slash',
+      icon: 'el-icon-top-right',
       disable: disabled,
       desc: `${i18n.$t('Select Line Connection')}`
     },
     {
       code: 'remove',
-      icon: 'ans-icon-trash',
+      icon: 'el-icon-delete',
       disable: disabled,
       desc: `${i18n.$t('Delete selected lines or nodes')}`
     },
     {
       code: 'download',
-      icon: 'ans-icon-download',
+      icon: 'el-icon-download',
       disable: !dagThis.type,
       desc: `${i18n.$t('Download')}`
     },
     {
       code: 'screen',
-      icon: 'ans-icon-max',
+      icon: 'el-icon-rank',
       disable: false,
       desc: `${i18n.$t('Full Screen')}`
     }
@@ -150,98 +150,98 @@ const tasksState = {
     id: 0,
     desc: `${i18n.$t('Submitted successfully')}`,
     color: '#A9A9A9',
-    icoUnicode: 'ans-icon-dot-circle',
+    icoUnicode: 'fa-dot-circle-o',
     isSpin: false
   },
   RUNNING_EXECUTION: {
     id: 1,
     desc: `${i18n.$t('Executing')}`,
     color: '#0097e0',
-    icoUnicode: 'ans-icon-gear',
+    icoUnicode: 'el-icon-s-tools',
     isSpin: true
   },
   READY_PAUSE: {
     id: 2,
     desc: `${i18n.$t('Ready to pause')}`,
     color: '#07b1a3',
-    icoUnicode: 'ans-icon-pause-solid',
+    icoUnicode: 'fa-pause-circle',
     isSpin: false
   },
   PAUSE: {
     id: 3,
     desc: `${i18n.$t('Pause')}`,
     color: '#057c72',
-    icoUnicode: 'ans-icon-pause',
+    icoUnicode: 'el-icon-video-pause',
     isSpin: false
   },
   READY_STOP: {
     id: 4,
     desc: `${i18n.$t('Ready to stop')}`,
     color: '#FE0402',
-    icoUnicode: 'ans-icon-coin',
+    icoUnicode: 'fa-stop-circle-o',
     isSpin: false
   },
   STOP: {
     id: 5,
     desc: `${i18n.$t('Stop')}`,
     color: '#e90101',
-    icoUnicode: 'ans-icon-stop',
+    icoUnicode: 'fa-stop-circle',
     isSpin: false
   },
   FAILURE: {
     id: 6,
     desc: `${i18n.$t('failed')}`,
     color: '#000000',
-    icoUnicode: 'ans-icon-fail-empty',
+    icoUnicode: 'el-icon-circle-close',
     isSpin: false
   },
   SUCCESS: {
     id: 7,
     desc: `${i18n.$t('success')}`,
     color: '#33cc00',
-    icoUnicode: 'ans-icon-success-empty',
+    icoUnicode: 'el-icon-circle-check',
     isSpin: false
   },
   NEED_FAULT_TOLERANCE: {
     id: 8,
     desc: `${i18n.$t('Need fault tolerance')}`,
     color: '#FF8C00',
-    icoUnicode: 'ans-icon-pen',
+    icoUnicode: 'el-icon-edit',
     isSpin: false
   },
   KILL: {
     id: 9,
     desc: `${i18n.$t('kill')}`,
     color: '#a70202',
-    icoUnicode: 'ans-icon-minus-circle-empty',
+    icoUnicode: 'el-icon-remove-outline',
     isSpin: false
   },
   WAITTING_THREAD: {
     id: 10,
     desc: `${i18n.$t('Waiting for thread')}`,
     color: '#912eed',
-    icoUnicode: 'ans-icon-sand-clock',
+    icoUnicode: 'fa-hourglass-end',
     isSpin: false
   },
   WAITTING_DEPEND: {
     id: 11,
     desc: `${i18n.$t('Waiting for dependence')}`,
     color: '#5101be',
-    icoUnicode: 'ans-icon-dependence',
+    icoUnicode: 'fa-window-restore',
     isSpin: false
   },
   DELAY_EXECUTION: {
     id: 12,
     desc: `${i18n.$t('Delay execution')}`,
     color: '#5102ce',
-    icoUnicode: 'ans-icon-coin',
+    icoUnicode: 'fa-stop-circle-o',
     isSpin: false
   },
   FORCED_SUCCESS: {
     id: 13,
     desc: `${i18n.$t('Forced success')}`,
     color: '#5102ce',
-    icoUnicode: 'ans-icon-success-solid',
+    icoUnicode: 'el-icon-success',
     isSpin: false
   }
 }
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
index 937b739..e98cda2 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.js
@@ -15,14 +15,13 @@
  * limitations under the License.
  */
 import Vue from 'vue'
-let v = new Vue()
 import _ from 'lodash'
 import i18n from '@/module/i18n'
 import { jsPlumb } from 'jsplumb'
 import JSP from './plugIn/jsPlumbHandle'
 import DownChart from './plugIn/downChart'
 import store from '@/conf/home/store'
-import dagre from "dagre"
+import dagre from 'dagre'
 
 /**
  * Prototype method
@@ -53,7 +52,7 @@ Dag.prototype.setConfig = function (o) {
  */
 Dag.prototype.create = function () {
   const self = this
-  let plumbIns = jsPlumb.getInstance()
+  const plumbIns = jsPlumb.getInstance()
   plumbIns.reset()
   plumbIns.ready(() => {
     JSP.init({
@@ -78,7 +77,7 @@ Dag.prototype.create = function () {
  * Action event on the right side of the toolbar
  */
 Dag.prototype.toolbarEvent = function ({ item, code, is }) {
-  let self = this
+  const self = this
   switch (code) {
     case 'pointer':
       JSP.handleEventPointer(is)
@@ -93,21 +92,15 @@ Dag.prototype.toolbarEvent = function ({ item, code, is }) {
       JSP.handleEventScreen({ item, is })
       break
     case 'download':
-      v.$modal.dialog({
-        width: 350,
-        closable: false,
-        showMask: true,
-        maskClosable: true,
-        title: i18n.$t('Download'),
-        content: i18n.$t('Please confirm whether the workflow has been saved before downloading'),
-        ok: {
-          handle (e) {
-            DownChart.download({
-              dagThis: self.dag
-            })
-          }
-        },
-        cancel: {}
+      Vue.prototype.$confirm(`${i18n.$t('Please confirm whether the workflow has been saved before downloading')}`, `${i18n.$t('Download')}`, {
+        confirmButtonText: `${i18n.$t('Confirm')}`,
+        cancelButtonText: `${i18n.$t('Cancel')}`,
+        type: 'warning'
+      }).then(() => {
+        DownChart.download({
+          dagThis: self.dag
+        })
+      }).catch(() => {
       })
       break
   }
@@ -130,7 +123,7 @@ Dag.prototype.backfill = function (arg) {
 
     for (const i in store.state.dag.connects) {
       const connect = store.state.dag.connects[i]
-      g.setEdge(connect['endPointSourceId'], connect['endPointTargetId'])
+      g.setEdge(connect.endPointSourceId, connect.endPointTargetId)
     }
     dagre.layout(g)
 
@@ -166,7 +159,7 @@ Dag.prototype.backfill = function (arg) {
       })
     })
   } else {
-    let plumbIns = jsPlumb.getInstance()
+    const plumbIns = jsPlumb.getInstance()
     plumbIns.reset()
     plumbIns.ready(() => {
       JSP.init({
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
index 88f2d11..cc9ae76 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.scss
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.scss
@@ -277,8 +277,9 @@ svg path:hover {
   background: #fff;
   border-radius: 3px;
   box-shadow: 0 2px 4px 1px rgba(0, 0, 0, 0.1);
-  padding: 4px 0;
+  padding: 4px 4px;
   visibility:hidden;
+  z-index: 10000;
   a {
     height: 30px;
     line-height: 28px;
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
index 1880adc..a47d729 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue
@@ -34,31 +34,33 @@
     <div class="dag-contect">
       <div class="dag-toolbar">
         <div class="assist-btn">
-          <x-button
-                  style="vertical-align: middle;"
-                  data-toggle="tooltip"
-                  :title="$t('View variables')"
-                  data-container="body"
-                  type="primary"
-                  size="xsmall"
-                  :disabled="$route.name !== 'projects-instance-details'"
-                  @click="_toggleView"
-                  icon="ans-icon-code">
-          </x-button>
-          <x-button
+          <el-button
             style="vertical-align: middle;"
             data-toggle="tooltip"
-            :title="$t('Startup parameter')"
+            :title="$t('View variables')"
             data-container="body"
             type="primary"
-            size="xsmall"
+            size="mini"
             :disabled="$route.name !== 'projects-instance-details'"
-            @click="_toggleParam"
-            icon="ans-icon-arrow-circle-right">
-          </x-button>
+            @click="_toggleView"
+            icon="el-icon-c-scale-to-original">
+          </el-button>
+          <span>
+            <el-button
+              style="vertical-align: middle;"
+              data-toggle="tooltip"
+              :title="$t('Startup parameter')"
+              data-container="body"
+              type="primary"
+              size="mini"
+              :disabled="$route.name !== 'projects-instance-details'"
+              @click="_toggleParam"
+              icon="el-icon-arrow-right">
+            </el-button>
+          </span>
           <span class="name">{{name}}</span>
           &nbsp;
-          <span v-if="name"  class="copy-name" @click="_copyName" :data-clipboard-text="name"><em class="ans-icon-copy" data-container="body"  data-toggle="tooltip" :title="$t('Copy name')" ></em></span>
+          <span v-if="name"  class="copy-name" @click="_copyName" :data-clipboard-text="name"><em class="el-icon-copy-document" data-container="body"  data-toggle="tooltip" :title="$t('Copy name')" ></em></span>
         </div>
         <div class="save-btn">
           <div class="operation" style="vertical-align: middle;">
@@ -68,71 +70,75 @@
                :id="item.code"
                :key="$index"
                @click="_ckOperation(item,$event)">
-              <x-button type="text" data-container="body" :icon="item.icon" v-tooltip.light="item.desc"></x-button>
+              <el-button type="text" class="operBtn" data-container="body" :icon="item.icon" v-tooltip.light="item.desc"></el-button>
             </a>
           </div>
-          <x-button
-                  type="primary"
-                  v-tooltip.light="$t('Format DAG')"
-                  icon="ans-icon-triangle-solid-right"
-                  size="xsmall"
-                  data-container="body"
-                  v-if="(type === 'instance' || 'definition') && urlParam.id !=undefined"
-                  style="vertical-align: middle;"
-                  @click="dagAutomaticLayout">
-          </x-button>
-          <x-button
-                  v-tooltip.light="$t('Refresh DAG status')"
-                  data-container="body"
-                  style="vertical-align: middle;"
-                  icon="ans-icon-refresh"
-                  type="primary"
-                  :loading="isRefresh"
-                  v-if="type === 'instance'"
-                  @click="!isRefresh && _refresh()"
-                  size="xsmall" >
-          </x-button>
-          <x-button
+          <el-button
+            type="primary"
+            v-tooltip.light="$t('Format DAG')"
+            icon="el-icon-caret-right"
+            size="mini"
+            data-container="body"
+            v-if="(type === 'instance' || 'definition') && urlParam.id !=undefined"
+            style="vertical-align: middle;"
+            @click="dagAutomaticLayout">
+          </el-button>
+          <span>
+            <el-button
+              v-tooltip.light="$t('Refresh DAG status')"
+              data-container="body"
+              style="vertical-align: middle;"
+              icon="el-icon-refresh"
+              type="primary"
+              :loading="isRefresh"
+              v-if="type === 'instance'"
+              @click="!isRefresh && _refresh()"
+              size="mini" >
+            </el-button>
+          </span>
+          <el-button
                   v-if="isRtTasks"
                   style="vertical-align: middle;"
                   type="primary"
-                  size="xsmall"
-                  icon="ans-icon-play"
+                  size="mini"
+                  icon="el-icon-back"
                   @click="_rtNodesDag" >
             {{$t('Return_1')}}
-          </x-button>
-          <x-button
-            type="primary"
-            v-tooltip.light="$t('Close')"
-            icon="ans-icon-off"
-            size="xsmall"
-            data-container="body"
-            v-if="(type === 'instance' || 'definition') "
-            style="vertical-align: middle;"
-            @click="_closeDAG">
-            {{$t('Close')}}
-          </x-button>
-          <x-button
+          </el-button>
+          <span>
+            <el-button
+              type="primary"
+              v-tooltip.light="$t('Close')"
+              icon="el-icon-switch-button"
+              size="mini"
+              data-container="body"
+              v-if="(type === 'instance' || 'definition') "
+              style="vertical-align: middle;"
+              @click="_closeDAG">
+              {{$t('Close')}}
+            </el-button>
+          </span>
+          <el-button
                   style="vertical-align: middle;"
                   type="primary"
-                  size="xsmall"
+                  size="mini"
                   :loading="spinnerLoading"
                   @click="_saveChart"
-                  icon="ans-icon-save"
+                  icon="el-icon-document-checked"
                   >
             {{spinnerLoading ? 'Loading...' : $t('Save')}}
-          </x-button>
-          <x-button
-                  style="vertical-align: middle;"
-                  type="primary"
-                  size="xsmall"
-                  v-if="this.type !== 'instance' && this.urlParam.id !== null"
-                  :loading="spinnerLoading"
-                  @click="_version"
-                  icon="ans-icon-dependence"
-                  >
-            {{spinnerLoading ? 'Loading...' : $t('Version Info')}}
-          </x-button>
+          </el-button>
+          <span>
+            <el-button
+              style="vertical-align: middle;"
+              type="primary"
+              size="mini"
+              :loading="spinnerLoading"
+              @click="_version"
+              icon="el-icon-info">
+              {{spinnerLoading ? 'Loading...' : $t('Version Info')}}
+            </el-button>
+          </span>
         </div>
       </div>
       <div class="scrollbar dag-container">
@@ -140,6 +146,45 @@
           <div class="jtk-demo-canvas canvas-wide statemachine-demo jtk-surface jtk-surface-nopan jtk-draggable" id="canvas" ></div>
         </div>
       </div>
+      <el-drawer
+        :visible.sync="drawer"
+        size="35%"
+        :with-header="false">
+        <m-versions :versionData = versionData @mVersionSwitchProcessDefinitionVersion="mVersionSwitchProcessDefinitionVersion" @mVersionGetProcessDefinitionVersionsPage="mVersionGetProcessDefinitionVersionsPage" @mVersionDeleteProcessDefinitionVersion="mVersionDeleteProcessDefinitionVersion"></m-versions>
+      </el-drawer>
+      <el-drawer
+        :visible.sync="nodeDrawer"
+        size="50%"
+        :with-header="false">
+        <m-form-model v-if="nodeDrawer" :nodeData = nodeData @addTaskInfo="addTaskInfo" @cacheTaskInfo="cacheTaskInfo" @close="close" @onSubProcess="onSubProcess"></m-form-model>
+      </el-drawer>
+      <el-drawer
+        :visible.sync="lineDrawer"
+        size="50%"
+        :wrapperClosable="false"
+        :with-header="false">
+        <m-form-line-model :lineData = lineData @addLineInfo="addLineInfo" @cancel="cancel"></m-form-line-model>
+      </el-drawer>
+      <el-drawer
+        :visible.sync="udpDrawer"
+        size="50%"
+        :wrapperClosable="false"
+        :with-header="false">
+        <m-udp></m-udp>
+      </el-drawer>
+      <el-dialog
+        :title="$t('Set the DAG diagram name')"
+        :visible.sync="dialogVisible"
+        width="45%">
+        <m-udp @onUdp="onUdpDialog" @close="closeDialog"></m-udp>
+      </el-dialog>
+
+      <el-dialog
+      :title="$t('Please set the parameters before starting')"
+      :visible.sync="startDialog"
+      width="65%">
+      <m-start :startData= "startData" :startNodeList="startNodeList" :sourceType="sourceType" @onUpdateStart="onUpdateStart" @closeStart="closeStart"></m-start>
+    </el-dialog>
     </div>
   </div>
 </template>
@@ -159,6 +204,7 @@
   import disabledState from '@/module/mixin/disabledState'
   import { mapActions, mapState, mapMutations } from 'vuex'
   import mVersions from '../../projects/pages/definition/pages/list/_source/versions'
+  import mStart from '../../projects/pages/definition/pages/list/_source/start'
 
   let eventModel
 
@@ -179,7 +225,39 @@
         isLoading: false,
         taskId: null,
         arg: false,
-
+        versionData: {
+          processDefinition: {
+            id: null,
+            version: '',
+            state: ''
+          },
+          processDefinitionVersions: [],
+          total: null,
+          pageNo: null,
+          pageSize: null
+        },
+        drawer: false,
+        nodeData: {
+          id: null,
+          taskType: '',
+          self: {},
+          preNode: [],
+          rearList: [],
+          instanceId: null
+        },
+        nodeDrawer: false,
+        lineData: {
+          id: null,
+          sourceId: '',
+          targetId: ''
+        },
+        lineDrawer: false,
+        udpDrawer: false,
+        dialogVisible: false,
+        startDialog: false,
+        startData: {},
+        startNodeList: '',
+        sourceType: ''
       }
     },
     mixins: [disabledState],
@@ -190,7 +268,18 @@
     methods: {
       ...mapActions('dag', ['saveDAGchart', 'updateInstance', 'updateDefinition', 'getTaskState', 'switchProcessDefinitionVersion', 'getProcessDefinitionVersionsPage', 'deleteProcessDefinitionVersion']),
       ...mapMutations('dag', ['addTasks', 'cacheTasks', 'resetParams', 'setIsEditDag', 'setName', 'addConnects']),
-
+      startRunning(item,startNodeList,sourceType) {
+        this.startData = item
+        this.startNodeList.startNodeList
+        this.sourceType = sourceType
+        this.startDialog = true
+      },
+      onUpdateStart() {
+        this.startDialog = false
+      },
+      closeStart() {
+        this.startDialog = false
+      },
       // DAG automatic layout
       dagAutomaticLayout() {
         if(this.store.state.dag.isEditDag) {
@@ -379,7 +468,12 @@
                  * @param saveEditDAGChart => Process definition editing
                  */
                 this[this.type === 'instance' ? 'updateInstance' : 'updateDefinition'](this.urlParam.id).then(res => {
-                  this.$message.success(res.msg)
+                  // this.$message.success(res.msg)
+                  this.$message({
+                    message: res.msg,
+                    type: 'success',
+                    offset: 80
+                  })
                   this.spinnerLoading = false
                   // Jump process definition
                   if (this.type === 'instance') {
@@ -439,33 +533,12 @@
         }
         return true
       },
-      /**
-       * Global parameter
-       * @param Promise
-       */
-      _udpTopFloorPop () {
-        return new Promise((resolve, reject) => {
-          let modal = this.$modal.dialog({
-            closable: false,
-            showMask: true,
-            escClose: true,
-            className: 'v-modal-custom',
-            transitionName: 'opacityp',
-            render (h) {
-              return h(mUdp, {
-                on: {
-                  onUdp () {
-                    modal.remove()
-                    resolve()
-                  },
-                  close () {
-                    modal.remove()
-                  }
-                }
-              })
-            }
-          })
-        })
+      onUdpDialog () {
+        this._save()
+        this.dialogVisible = false
+      },
+      closeDialog () {
+        this.dialogVisible = false
       },
       /**
        * Save chart
@@ -476,11 +549,7 @@
           this.$message.warning(`${i18n.$t('Failed to create node to save')}`)
           return
         }
-
-        // Global parameters (optional)
-        this._udpTopFloorPop().then(() => {
-          return this._save()
-        })
+        this.dialogVisible = true
       },
       /**
        * Return to the previous child node
@@ -540,44 +609,46 @@
       _toggleParam () {
         findComponentDownward(this.$root, `starting-params-dag-index`)._toggleParam()
       },
+      addLineInfo ({ item, fromThis }) {
+        this.addConnects(item)
+        this.lineDrawer = false
+      },
+      cancel ({fromThis}) {
+        this.lineDrawer = false
+      },
+
       /**
        * Create a node popup layer
        * @param Object id
        */
       _createLineLabel({id, sourceId, targetId}) {
-        // $('#jsPlumb_2_50').text('111')
-        let self = this
-        self.$modal.destroy()
-        const removeNodesEvent = (fromThis) => {
-          // Manually destroy events inside the component
-          fromThis.$destroy()
-          // Close the popup
-          eventModel.remove()
+        this.lineData.id = id
+        this.lineData.sourceId = sourceId
+        this.lineData.targetId = targetId
+        this.lineDrawer = true
+      },
+
+      addTaskInfo ({ item, fromThis }) {
+        this.addTasks(item)
+        this.nodeDrawer = false
+      },
+
+      cacheTaskInfo({item, fromThis}) {
+        this.cacheTasks(item)
+      },
+
+      close ({ item,flag, fromThis }) {
+        this.addTasks(item)
+        // Edit status does not allow deletion of nodes
+        if (flag) {
+          jsPlumb.remove(this.nodeData.id)
         }
-        eventModel = this.$drawer({
-          className: 'dagMask',
-          render (h) {
-            return h(mFormLineModel,{
-              on: {
-                addLineInfo ({ item, fromThis }) {
-                  self.addConnects(item)
-                  setTimeout(() => {
-                    removeNodesEvent(fromThis)
-                  }, 100)
-                },
-                cancel ({fromThis}) {
-                  removeNodesEvent(fromThis)
-                }
-              },
-              props: {
-                id: id,
-                sourceId: sourceId,
-                targetId: targetId
-              }
-            })
-          }
-        })
+        this.nodeDrawer = false
       },
+      onSubProcess ({ subProcessId, fromThis }) {
+        this._subProcessHandle(subProcessId)
+      },
+
       _createNodes ({ id, type }) {
         let self = this
         let preNode = []
@@ -609,66 +680,19 @@
         } else {
           preNode = []
         }
-        if (eventModel) {
-          // Close the popup
-          eventModel.remove()
-        }
-
-        const removeNodesEvent = (fromThis) => {
-          // Manually destroy events inside the component
-          fromThis.$destroy()
-          // Close the popup
-          eventModel.remove()
-        }
 
         this.taskId = id
         type = type || self.dagBarId
 
-        eventModel = this.$drawer({
-          closable: false,
-          direction: 'right',
-          escClose: true,
-          className: 'dagMask',
-          render: h => h(mFormModel, {
-            on: {
-              addTaskInfo ({ item, fromThis }) {
-                self.addTasks(item)
-                setTimeout(() => {
-                  removeNodesEvent(fromThis)
-                }, 100)
-              },
-              /**
-               * Cache the item
-               * @param item
-               * @param fromThis
-               */
-              cacheTaskInfo({item, fromThis}) {
-                self.cacheTasks(item)
-              },
-              close ({ item,flag, fromThis }) {
-                self.addTasks(item)
-                // Edit status does not allow deletion of nodes
-                if (flag) {
-                  jsPlumb.remove(id)
-                }
-
-                removeNodesEvent(fromThis)
-              },
-              onSubProcess ({ subProcessId, fromThis }) {
-                removeNodesEvent(fromThis)
-                self._subProcessHandle(subProcessId)
-              }
-            },
-            props: {
-              id: id,
-              taskType: type,
-              self: self,
-              preNode: preNode,
-              rearList: rearList,
-              instanceId: this.$route.params.id
-            }
-          })
-        })
+        this.nodeData.id = id
+        this.nodeData.taskType = type
+        this.nodeData.self = self
+        this.nodeData.preNode = preNode
+        this.nodeData.rearList = rearList
+        this.nodeData.instanceId = this.$route.params.id
+        
+        this.nodeDrawer = true
+        
       },
       removeEventModelById ($id) {
         if(eventModel && this.taskId == $id){
@@ -677,6 +701,50 @@
       },
 
       /**
+        * switch version in process definition version list
+        *
+        * @param version the version user want to change
+        * @param processDefinitionId the process definition id
+        * @param fromThis fromThis
+      */
+      mVersionSwitchProcessDefinitionVersion({ version, processDefinitionId, fromThis }) {
+        this.$store.state.dag.isSwitchVersion = true
+        this.switchProcessDefinitionVersion({
+          version: version,
+          processDefinitionId: processDefinitionId
+        }).then(res=>{
+          this.$message.success($t('Switch Version Successfully'))
+          this.$router.push({ path: `/projects/definition/list/${processDefinitionId}?_t=${new Date().getTime()}` })
+        }).catch(e => {
+          this.$store.state.dag.isSwitchVersion = false
+          this.$message.error(e.msg || '')
+        })
+      },
+      
+      /**
+        * Paging event of process definition versions
+        *
+        * @param pageNo page number
+        * @param pageSize page size
+        * @param processDefinitionId the process definition id of page version
+        * @param fromThis fromThis
+      */
+      mVersionGetProcessDefinitionVersionsPage({ pageNo, pageSize, processDefinitionId, fromThis }) {
+        this.getProcessDefinitionVersionsPage({
+          pageNo: pageNo,
+          pageSize: pageSize,
+          processDefinitionId: processDefinitionId
+        }).then(res=>{
+          this.versionData.processDefinitionVersions = res.data.lists
+          this.versionData.total = res.data.totalCount
+          this.versionData.pageSize = res.data.pageSize
+          this.versionData.pageNo = res.data.currentPage
+        }).catch(e=>{
+          this.$message.error(e.msg || '')
+        })
+      },
+
+      /**
        * query the process definition pagination version
        */
       _version (item) {
@@ -690,117 +758,15 @@
           let total = res.data.totalCount
           let pageSize = res.data.pageSize
           let pageNo = res.data.currentPage
-          if (this.versionsModel) {
-            this.versionsModel.remove()
-          }
-          this.versionsModel = this.$drawer({
-            direction: 'right',
-            closable: true,
-            showMask: true,
-            escClose: true,
-            render (h) {
-              return h(mVersions, {
-                on: {
-                  /**
-                   * switch version in process definition version list
-                   *
-                   * @param version the version user want to change
-                   * @param processDefinitionId the process definition id
-                   * @param fromThis fromThis
-                   */
-                  mVersionSwitchProcessDefinitionVersion ({ version, processDefinitionId, fromThis }) {
-
-                    self.$store.state.dag.isSwitchVersion = true
-
-                    self.switchProcessDefinitionVersion({
-                      version: version,
-                      processDefinitionId: processDefinitionId
-                    }).then(res => {
-                      self.$message.success($t('Switch Version Successfully'))
-                      setTimeout(() => {
-                        fromThis.$destroy()
-                        self.versionsModel.remove()
-                      }, 0)
-                      self.$router.push({ path: `/projects/definition/list/${processDefinitionId}?_t=${new Date().getTime()}` })
-                    }).catch(e => {
-                      self.$store.state.dag.isSwitchVersion = false
-                      self.$message.error(e.msg || '')
-                    })
-                  },
-
-                  /**
-                   * Paging event of process definition versions
-                   *
-                   * @param pageNo page number
-                   * @param pageSize page size
-                   * @param processDefinitionId the process definition id of page version
-                   * @param fromThis fromThis
-                   */
-                  mVersionGetProcessDefinitionVersionsPage ({ pageNo, pageSize, processDefinitionId, fromThis }) {
-                    self.getProcessDefinitionVersionsPage({
-                      pageNo: pageNo,
-                      pageSize: pageSize,
-                      processDefinitionId: processDefinitionId
-                    }).then(res => {
-                      fromThis.processDefinitionVersions = res.data.lists
-                      fromThis.total = res.data.totalCount
-                      fromThis.pageSize = res.data.pageSize
-                      fromThis.pageNo = res.data.currentPage
-                    }).catch(e => {
-                      self.$message.error(e.msg || '')
-                    })
-                  },
-
-                  /**
-                   * delete one version of process definition
-                   *
-                   * @param version the version need to delete
-                   * @param processDefinitionId the process definition id user want to delete
-                   * @param fromThis fromThis
-                   */
-                  mVersionDeleteProcessDefinitionVersion ({ version, processDefinitionId, fromThis }) {
-                    self.deleteProcessDefinitionVersion({
-                      version: version,
-                      processDefinitionId: processDefinitionId
-                    }).then(res => {
-                      self.$message.success(res.msg || '')
-                      fromThis.$emit('mVersionGetProcessDefinitionVersionsPage', {
-                        pageNo: 1,
-                        pageSize: 10,
-                        processDefinitionId: processDefinitionId,
-                        fromThis: fromThis
-                      })
-                    }).catch(e => {
-                      self.$message.error(e.msg || '')
-                    })
-                  },
-
-                  /**
-                   * remove this drawer
-                   *
-                   * @param fromThis
-                   */
-                  close ({ fromThis }) {
-                    setTimeout(() => {
-                      fromThis.$destroy()
-                      self.versionsModel.remove()
-                    }, 0)
-                  }
-                },
-                props: {
-                  processDefinition: {
-                    id: self.urlParam.id,
-                    version: self.$store.state.dag.version,
-                    state: self.releaseState
-                  },
-                  processDefinitionVersions: processDefinitionVersions,
-                  total: total,
-                  pageNo: pageNo,
-                  pageSize: pageSize
-                }
-              })
-            }
-          })
+          this.versionData.processDefinition.id = this.urlParam.id
+          this.versionData.processDefinition.version = this.$store.state.dag.version
+          this.versionData.processDefinition.state = this.releaseState
+          this.versionData.processDefinitionVersions = processDefinitionVersions
+          this.versionData.total = total
+          this.versionData.pageNo = pageNo
+          this.versionData.pageSize = pageSize
+          this.drawer = true
+          
         }).catch(e => {
           this.$message.error(e.msg || '')
         })
@@ -869,10 +835,13 @@
     computed: {
       ...mapState('dag', ['tasks', 'locations', 'connects', 'isEditDag', 'name'])
     },
-    components: {}
+    components: { mVersions, mFormModel, mFormLineModel, mUdp, mStart }
   }
 </script>
 
 <style lang="scss" rel="stylesheet/scss">
   @import "./dag";
+  .operBtn {
+    padding: 8px 20px;
+  }
 </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
index 2b2ed78..7d2c711 100644
--- 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
@@ -23,7 +23,7 @@
       <div class="cont-box">
         <label class="label-box">
           <div style="padding-top: 5px;">
-            <x-switch v-model="enable" @on-click="_onSwitch(0, $event)" :disabled="isDetails"></x-switch>
+            <el-switch v-model="enable" size="small" @change="_onSwitch(0, $event)" :disabled="isDetails"></el-switch>
           </div>
         </label>
       </div>
@@ -35,7 +35,7 @@
       <div class="cont-box">
         <label class="label-box">
           <div style="padding: 5px 0;">
-            <x-switch v-model="waitStartTimeout.enable" @on-click="_onSwitch(1, $event)" :disabled="isDetails"></x-switch>
+            <el-switch v-model="waitStartTimeout.enable" size="small" @change="_onSwitch(1, $event)" :disabled="isDetails"></el-switch>
           </div>
         </label>
       </div>
@@ -46,22 +46,22 @@
           <span class="text-box">
             <span>{{$t('Timeout period')}}</span>
           </span>
-          <x-input v-model="waitStartTimeout.interval" style="width: 100px;" :disabled="isDetails" maxlength="9">
+          <el-input v-model="waitStartTimeout.interval" size="small" style="width: 100px;" :disabled="isDetails" maxlength="9">
             <span slot="append">{{$t('Minute')}}</span>
-          </x-input>
+          </el-input>
           <span class="text-box">
             <span>{{$t('Check interval')}}</span>
           </span>
-          <x-input v-model="waitStartTimeout.checkInterval" style="width: 100px;" :disabled="isDetails" maxlength="9">
+          <el-input v-model="waitStartTimeout.checkInterval" size="small" style="width: 100px;" :disabled="isDetails" maxlength="9">
             <span slot="append">{{$t('Minute')}}</span>
-          </x-input>
+          </el-input>
           <span class="text-box">
             <span>{{$t('Timeout strategy')}}</span>
           </span>
           <div style="padding-top: 6px;">
-            <x-checkbox-group v-model="waitStartTimeout.strategy">
-              <x-checkbox label="FAILED" :disabled="true">{{$t('Timeout failure')}}</x-checkbox>
-            </x-checkbox-group>
+            <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>
@@ -73,7 +73,7 @@
       <div class="cont-box">
         <label class="label-box">
           <div style="padding: 5px 0;">
-            <x-switch v-model="waitCompleteTimeout.enable" @on-click="_onSwitch(2, $event)" :disabled="isDetails"></x-switch>
+            <el-switch v-model="waitCompleteTimeout.enable" size="small" @change="_onSwitch(2, $event)" :disabled="isDetails"></el-switch>
           </div>
         </label>
       </div>
@@ -84,17 +84,17 @@
           <span class="text-box">
             <span>{{$t('Timeout period')}}</span>
           </span>
-          <x-input v-model="waitCompleteTimeout.interval" style="width: 100px;" :disabled="isDetails" maxlength="9">
+          <el-input v-model="waitCompleteTimeout.interval" size="small" style="width: 100px;" :disabled="isDetails" maxlength="9">
             <span slot="append">{{$t('Minute')}}</span>
-          </x-input>
+          </el-input>
           <span class="text-box">
             <span>{{$t('Timeout strategy')}}</span>
           </span>
           <div style="padding-top: 6px;">
-            <x-checkbox-group v-model="waitCompleteTimeout.strategy">
-              <x-checkbox label="WARN" :disabled="isDetails">{{$t('Timeout alarm')}}</x-checkbox>
-              <x-checkbox label="FAILED" :disabled="isDetails">{{$t('Timeout failure')}}</x-checkbox>
-            </x-checkbox-group>
+            <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>
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
index 1d3902c..297cfaa 100644
--- 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
@@ -15,33 +15,34 @@
  * limitations under the License.
  */
 <template>
-  <x-select
+  <el-select
           style="width: 157px;"
           :disabled="isDetails"
-          @on-change="_onChange"
+          size="small"
+          @change="_onChange"
           v-model="value">
-      <x-input
+      <el-input
               ref="input"
               slot="trigger"
               v-if="isInput"
               :disabled="isDetails"
               slot-scope="{ selectedModel }"
               maxlength="4"
-              @on-blur="_onBlur"
+              @blur="_onBlur"
               :placeholder="$t('Please choose')"
               :value="selectedModel === null ? '0' : selectedModel.value"
               style="width: 100%;"
-              @on-click-icon.stop="_ckIcon">
-        <em slot="suffix" class="ans-icon-fail-solid" style="font-size: 15px;cursor: pointer;" v-show="!isIconState"></em>
-        <em slot="suffix" class="ans-icon-arrow-down" style="font-size: 12px;" v-show="isIconState"></em>
-      </x-input>
-    <x-option
+              @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">
-    </x-option>
-  </x-select>
+    </el-option>
+  </el-select>
 </template>
 <script>
   import _ from 'lodash'
@@ -67,8 +68,8 @@
     },
     methods: {
       _onChange (o) {
-        this.$emit('valueEvent', +o.value)
-        this._setIconState(+o.value)
+        this.$emit('valueEvent', +o)
+        this._setIconState(+o)
       },
       _setIconState (value) {
         // Whether there is a list
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
index 0dcab3e..0d11a1e 100644
--- 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
@@ -23,7 +23,7 @@
       <div class="cont-box">
         <label class="label-box">
           <div style="padding-top: 5px;">
-            <x-switch v-model="enable" @on-click="_onSwitch" :disabled="isDetails"></x-switch>
+            <el-switch v-model="enable" size="small" @change="_onSwitch" :disabled="isDetails"></el-switch>
           </div>
         </label>
       </div>
@@ -35,10 +35,10 @@
       <div class="cont-box">
         <label class="label-box">
           <div style="padding-top: 6px;">
-            <x-checkbox-group v-model="strategy">
-              <x-checkbox label="WARN" :disabled="isDetails">{{$t('Timeout alarm')}}</x-checkbox>
-              <x-checkbox label="FAILED" :disabled="isDetails">{{$t('Timeout failure')}}</x-checkbox>
-            </x-checkbox-group>
+            <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>
@@ -49,9 +49,9 @@
       </div>
       <div class="cont-box">
         <label class="label-box">
-          <x-input v-model="interval" style="width: 200px;" :disabled="isDetails" maxlength="9">
+          <el-input v-model="interval" size="small" style="width: 200px;" :disabled="isDetails" maxlength="9">
             <span slot="append">{{$t('Minute')}}</span>
-          </x-input>
+          </el-input>
         </label>
       </div>
     </div>
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
index 8efe5c2..4ab4efb 100644
--- 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
@@ -15,18 +15,19 @@
  * limitations under the License.
  */
 <template>
-  <x-select
+  <el-select
           :disabled="isDetails"
-          @on-change="_onChange"
+          @change="_onChange"
           v-model="value"
+          size="small"
           style="width: 180px">
-    <x-option
+    <el-option
             v-for="item in workerGroupsList"
             :key="item.id"
             :value="item.id"
             :label="item.name">
-    </x-option>
-  </x-select>
+    </el-option>
+  </el-select>
 </template>
 <script>
   import disabledState from '@/module/mixin/disabledState'
@@ -50,8 +51,8 @@
     },
     methods: {
       _onChange (o) {
-        this.value = o.value
-        this.$emit('workerGroupsEvent', o.value)
+        this.value = o
+        this.$emit('workerGroupsEvent', o)
       }
     },
     watch: {
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
index 2864b3c..a46057c 100644
--- 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
@@ -26,14 +26,14 @@
           <div class="text-box"><span>{{$t('Connection name')}}</span></div>
           <div class="cont-box">
             <label class="label-box">
-              <x-input
+              <el-input
                 type="text"
+                size="small"
                 v-model="labelName"
                 :disabled="isDetails"
                 :placeholder="$t('Please enter name')"
-                maxlength="100"
-                autocomplete="off">
-              </x-input>
+                maxlength="100">
+              </el-input>
             </label>
           </div>
         </div>
@@ -41,8 +41,8 @@
     </div>
     <div class="bottom-box">
       <div class="submit" style="background: #fff;">
-        <x-button type="text" @click="cancel()"> {{$t('Cancel')}} </x-button>
-        <x-button type="primary" shape="circle" :loading="spinnerLoading" @click="ok()" :disabled="isDetails">{{spinnerLoading ? 'Loading...' : $t('Confirm add')}} </x-button>
+        <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 ? 'Loading...' : $t('Confirm add')}} </el-button>
       </div>
     </div>
   </div>
@@ -66,9 +66,7 @@
     },
     mixins: [disabledState],
     props: {
-      id: String,
-      sourceId: String,
-      targetId: String
+      lineData: Object
     },
     methods: {
         cancel() {
@@ -77,15 +75,15 @@
             })
         },
         ok() {
-          if($(`#${this.id}`).prev().attr('class')==='jtk-overlay') {
-            $(`#${this.id}`).prev().empty()
+          if($(`#${this.lineData.id}`).prev().attr('class')==='jtk-overlay') {
+            $(`#${this.lineData.id}`).prev().empty()
           }
-          $(`#${this.id}`).text(this.labelName)
+          $(`#${this.lineData.id}`).text(this.labelName)
             this.$emit('addLineInfo', {
               item: {
                 labelName: this.labelName,
-                sourceId: this.sourceId,
-                targetId: this.targetId
+                sourceId: this.lineData.sourceId,
+                targetId: this.lineData.targetId
               },
               fromThis: this
             })
@@ -95,10 +93,10 @@
       
     },
     created () {
-      if($(`#${this.id}`).prev().attr('class').indexOf('jtk-overlay')!==-1) {
-        this.labelName = $(`#${this.id}`).prev().text()
+      if($(`#${this.lineData.id}`).prev().attr('class').indexOf('jtk-overlay')!==-1) {
+        this.labelName = $(`#${this.lineData.id}`).prev().text()
       } else {
-        this.labelName = $(`#${this.id}`).text()
+        this.labelName = $(`#${this.lineData.id}`).text()
       }
     },
     mounted () {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue
index b6c48fe..b602658 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/formModel.vue
@@ -21,10 +21,10 @@
       <span class="go-subtask">
         <!-- Component can't pop up box to do component processing -->
         <m-log :item="backfillItem">
-          <template slot="history"><a href="javascript:" @click="_seeHistory" ><em class="ansicon ans-icon-timer"></em><em>{{$t('View history')}}</em></a></template>
-          <template slot="log"><a href="javascript:"><em class="ansicon ans-icon-log"></em><em>{{$t('View log')}}</em></a></template>
+          <template slot="history"><a href="javascript:" @click="_seeHistory" ><em class="ansicon el-icon-alarm-clock"></em><em>{{$t('View history')}}</em></a></template>
+          <template slot="log"><a href="javascript:"><em class="ansicon el-icon-document"></em><em>{{$t('View log')}}</em></a></template>
         </m-log>
-        <a href="javascript:" @click="_goSubProcess" v-if="_isGoSubProcess"><em class="ansicon ans-icon-node"></em><em>{{$t('Enter this child node')}}</em></a>
+        <a href="javascript:" @click="_goSubProcess" v-if="_isGoSubProcess"><em class="ansicon fa fa-tasks"></em><em>{{$t('Enter this child node')}}</em></a>
       </span>
     </div>
     <div class="content-box" v-if="isContentBox">
@@ -34,15 +34,15 @@
           <div class="text-box"><span>{{$t('Node name')}}</span></div>
           <div class="cont-box">
             <label class="label-box">
-              <x-input
+              <el-input
                 type="text"
                 v-model="name"
+                size="small"
                 :disabled="isDetails"
                 :placeholder="$t('Please enter name (required)')"
                 maxlength="100"
-                @on-blur="_verifName()"
-                autocomplete="off">
-              </x-input>
+                @blur="_verifName()">
+              </el-input>
             </label>
           </div>
         </div>
@@ -52,10 +52,10 @@
           <div class="text-box"><span>{{$t('Run flag')}}</span></div>
           <div class="cont-box">
             <label class="label-box">
-              <x-radio-group v-model="runFlag" >
-                <x-radio :label="'NORMAL'" :disabled="isDetails">{{$t('Normal')}}</x-radio>
-                <x-radio :label="'FORBIDDEN'" :disabled="isDetails">{{$t('Prohibition execution')}}</x-radio>
-              </x-radio-group>
+              <el-radio-group v-model="runFlag" size="small" style="vertical-align: sub;">
+                <el-radio :label="'NORMAL'" :disabled="isDetails">{{$t('Normal')}}</el-radio>
+                <el-radio :label="'FORBIDDEN'" :disabled="isDetails">{{$t('Prohibition execution')}}</el-radio>
+              </el-radio-group>
             </label>
           </div>
         </div>
@@ -67,15 +67,13 @@
           </div>
           <div class="cont-box">
             <label class="label-box">
-              <x-input
-                resize
-                :autosize="{minRows:2}"
+              <el-input
+                :rows="2"
                 type="textarea"
                 :disabled="isDetails"
                 v-model="description"
-                :placeholder="$t('Please enter description')"
-                autocomplete="off">
-              </x-input>
+                :placeholder="$t('Please enter description')">
+              </el-input>
             </label>
           </div>
         </div>
@@ -95,81 +93,74 @@
         </div>
 
         <!-- Number of failed retries -->
-        <div class="clearfix list" v-if="taskType !== 'SUB_PROCESS'">
+        <div class="clearfix list" v-if="nodeData.taskType !== 'SUB_PROCESS'">
           <div class="text-box">
             <span>{{$t('Number of failed retries')}}</span>
           </div>
           <div class="cont-box">
-            <m-select-input v-model="maxRetryTimes" :list="[0,1,2,3,4]">
-            </m-select-input>
+            <m-select-input v-model="maxRetryTimes" :list="[0,1,2,3,4]"></m-select-input>
             <span>({{$t('Times')}})</span>
             <span class="text-b">{{$t('Failed retry interval')}}</span>
-            <m-select-input v-model="retryInterval" :list="[1,10,30,60,120]">
-            </m-select-input>
+            <m-select-input v-model="retryInterval" :list="[1,10,30,60,120]"></m-select-input>
             <span>({{$t('Minute')}})</span>
           </div>
         </div>
 
         <!-- Delay execution time -->
-        <div class="clearfix list" v-if="taskType !== 'SUB_PROCESS' && taskType !== 'CONDITIONS' && taskType !== 'DEPENDENT'">
+        <div class="clearfix list" v-if="nodeData.taskType !== 'SUB_PROCESS' && nodeData.taskType !== 'CONDITIONS' && nodeData.taskType !== 'DEPENDENT'">
           <div class="text-box">
             <span>{{$t('Delay execution time')}}</span>
           </div>
           <div class="cont-box">
-            <m-select-input v-model="delayTime" :list="[0,1,5,10]">
-            </m-select-input>
+            <m-select-input v-model="delayTime" :list="[0,1,5,10]"></m-select-input>
             <span>({{$t('Minute')}})</span>
           </div>
         </div>
 
         <!-- Branch flow -->
-        <div class="clearfix list" v-if="taskType === 'CONDITIONS'">
+        <div class="clearfix list" v-if="nodeData.taskType === 'CONDITIONS'">
           <div class="text-box">
             <span>{{$t('State')}}</span>
           </div>
           <div class="cont-box">
             <span class="label-box" style="width: 193px;display: inline-block;">
-              <x-select style="width: 157px;" v-model="successNode" :disabled="true">
-              <x-option v-for="item in stateList" :key="item.value" :value="item.value" :label="item.label">
-              </x-option>
-            </x-select>
+              <el-select style="width: 157px;" size="small" v-model="successNode" :disabled="true">
+                <el-option v-for="item in stateList" :key="item.value" :value="item.value" :label="item.label"></el-option>
+              </el-select>
             </span>
             <span class="text-b" style="padding-left: 38px">{{$t('Branch flow')}}</span>
-            <x-select style="width: 157px;" v-model="successBranch" clearable>
-              <x-option v-for="item in rearList" :key="item.value" :value="item.value" :label="item.label">
-              </x-option>
-            </x-select>
+            <el-select style="width: 157px;" size="small" v-model="successBranch" clearable>
+              <el-option v-for="item in nodeData.rearList" :key="item.value" :value="item.value" :label="item.label"></el-option>
+            </el-select>
           </div>
         </div>
-        <div class="clearfix list" v-if="taskType === 'CONDITIONS'">
+        <div class="clearfix list" v-if="nodeData.taskType === 'CONDITIONS'">
           <div class="text-box">
             <span>{{$t('State')}}</span>
           </div>
           <div class="cont-box">
             <span class="label-box" style="width: 193px;display: inline-block;">
-              <x-select style="width: 157px;" v-model="failedNode" :disabled="true">
-              <x-option v-for="item in stateList" :key="item.value" :value="item.value" :label="item.label">
-              </x-option>
-            </x-select>
+              <el-select style="width: 157px;" size="small" v-model="failedNode" :disabled="true">
+                <el-option v-for="item in stateList" :key="item.value" :value="item.value" :label="item.label"></el-option>
+              </el-select>
             </span>
             <span class="text-b" style="padding-left: 38px">{{$t('Branch flow')}}</span>
-            <x-select style="width: 157px;" v-model="failedBranch" clearable>
-              <x-option v-for="item in rearList" :key="item.value" :value="item.value" :label="item.label">
-              </x-option>
-            </x-select>
+            <el-select style="width: 157px;" size="small" v-model="failedBranch" clearable>
+              <el-option v-for="item in nodeData.rearList" :key="item.value" :value="item.value" :label="item.label"></el-option>
+            </el-select>
           </div>
         </div>
 
         <!-- Task timeout alarm -->
         <m-timeout-alarm
-          v-if="taskType !== 'DEPENDENT'"
+          v-if="nodeData.taskType !== 'DEPENDENT'"
           ref="timeout"
           :backfill-item="backfillItem"
           @on-timeout="_onTimeout">
         </m-timeout-alarm>
         <!-- Dependent timeout alarm -->
         <m-dependent-timeout
-          v-if="taskType === 'DEPENDENT'"
+          v-if="nodeData.taskType === 'DEPENDENT'"
           ref="dependentTimeout"
           :backfill-item="backfillItem"
           @on-timeout="_onDependentTimeout">
@@ -177,7 +168,7 @@
 
         <!-- shell node -->
         <m-shell
-          v-if="taskType === 'SHELL'"
+          v-if="nodeData.taskType === 'SHELL'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="SHELL"
@@ -185,7 +176,7 @@
         </m-shell>
         <!-- waterdrop node -->
         <m-waterdrop
-          v-if="taskType === 'WATERDROP'"
+          v-if="nodeData.taskType === 'WATERDROP'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="WATERDROP"
@@ -193,7 +184,7 @@
         </m-waterdrop>
         <!-- sub_process node -->
         <m-sub-process
-          v-if="taskType === 'SUB_PROCESS'"
+          v-if="nodeData.taskType === 'SUB_PROCESS'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           @on-set-process-name="_onSetProcessName"
@@ -202,7 +193,7 @@
         </m-sub-process>
         <!-- procedure node -->
         <m-procedure
-          v-if="taskType === 'PROCEDURE'"
+          v-if="nodeData.taskType === 'PROCEDURE'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="PROCEDURE"
@@ -210,23 +201,23 @@
         </m-procedure>
         <!-- sql node -->
         <m-sql
-          v-if="taskType === 'SQL'"
+          v-if="nodeData.taskType === 'SQL'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="SQL"
-          :create-node-id="id"
+          :create-node-id="nodeData.id"
           :backfill-item="backfillItem">
         </m-sql>
         <!-- spark node -->
         <m-spark
-          v-if="taskType === 'SPARK'"
+          v-if="nodeData.taskType === 'SPARK'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="SPARK"
           :backfill-item="backfillItem">
         </m-spark>
         <m-flink
-          v-if="taskType === 'FLINK'"
+          v-if="nodeData.taskType === 'FLINK'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="FLINK"
@@ -234,7 +225,7 @@
         </m-flink>
         <!-- mr node -->
         <m-mr
-          v-if="taskType === 'MR'"
+          v-if="nodeData.taskType === 'MR'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="MR"
@@ -242,7 +233,7 @@
         </m-mr>
         <!-- python node -->
         <m-python
-          v-if="taskType === 'PYTHON'"
+          v-if="nodeData.taskType === 'PYTHON'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="PYTHON"
@@ -250,44 +241,44 @@
         </m-python>
         <!-- dependent node -->
         <m-dependent
-          v-if="taskType === 'DEPENDENT'"
+          v-if="nodeData.taskType === 'DEPENDENT'"
           @on-dependent="_onDependent"
           @on-cache-dependent="_onCacheDependent"
           ref="DEPENDENT"
           :backfill-item="backfillItem">
         </m-dependent>
         <m-http
-          v-if="taskType === 'HTTP'"
+          v-if="nodeData.taskType === 'HTTP'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="HTTP"
           :backfill-item="backfillItem">
         </m-http>
         <m-datax
-          v-if="taskType === 'DATAX'"
+          v-if="nodeData.taskType === 'DATAX'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="DATAX"
           :backfill-item="backfillItem">
         </m-datax>
         <m-sqoop
-          v-if="taskType === 'SQOOP'"
+          v-if="nodeData.taskType === 'SQOOP'"
           @on-params="_onParams"
           @on-cache-params="_onCacheParams"
           ref="SQOOP"
           :backfill-item="backfillItem">
         </m-sqoop>
         <m-conditions
-          v-if="taskType === 'CONDITIONS'"
+          v-if="nodeData.taskType === 'CONDITIONS'"
           ref="CONDITIONS"
           @on-dependent="_onDependent"
           @on-cache-dependent="_onCacheDependent"
           :backfill-item="backfillItem"
-          :pre-node="preNode">
+          :pre-node="nodeData.preNode">
         </m-conditions>
         <!-- Pre-tasks in workflow -->
         <m-pre-tasks
-          v-if="['SHELL', 'SUB_PROCESS'].indexOf(taskType) > -1"
+          v-if="['SHELL', 'SUB_PROCESS'].indexOf(nodeData.taskType) > -1"
           @on-pre-tasks="_onPreTasks"
           ref="PRE_TASK"
           :backfill-item="backfillItem"></m-pre-tasks>
@@ -295,8 +286,8 @@
     </div>
     <div class="bottom-box">
       <div class="submit" style="background: #fff;">
-        <x-button type="text" id="cancelBtn"> {{$t('Cancel')}} </x-button>
-        <x-button type="primary" shape="circle" :loading="spinnerLoading" @click="ok()" :disabled="isDetails">{{spinnerLoading ? 'Loading...' : $t('Confirm add')}} </x-button>
+        <el-button type="text" size="small" id="cancelBtn"> {{$t('Cancel')}} </el-button>
+        <el-button type="primary" size="small" round :loading="spinnerLoading" @click="ok()" :disabled="isDetails">{{spinnerLoading ? 'Loading...' : $t('Confirm add')}} </el-button>
       </div>
     </div>
   </div>
@@ -400,12 +391,7 @@
     directives: { clickoutside },
     mixins: [disabledState],
     props: {
-      id: Number,
-      taskType: String,
-      self: Object,
-      preNode: Array,
-      rearList: Array,
-      instanceId: Number
+      nodeData: Object
     },
     methods: {
       ...mapActions('dag', ['getTaskInstanceList']),
@@ -452,14 +438,13 @@
        * Jump to task instance
        */
       _seeHistory () {
-        this.self.$router.push({
+        this.nodeData.self.$router.push({
           name: 'task-instance',
           query: {
-            processInstanceId: this.self.$route.params.id,
+            processInstanceId: this.nodeData.self.$route.params.id,
             taskName: this.backfillItem.name
           }
         })
-        this.$modal.destroy()
       },
       /**
        * Enter the child node to judge the process instance or the process definition
@@ -471,7 +456,7 @@
           return
         }
         if (this.router.history.current.name === 'projects-instance-details') {
-          let stateId = $(`#${this.id}`).attr('data-state-id') || null
+          let stateId = $(`#${this.nodeData.id}`).attr('data-state-id') || null
           if (!stateId) {
             this.$message.warning(`${i18n.$t('The task has not been executed and cannot enter the sub-Process')}`)
             return
@@ -508,8 +493,8 @@
         this.conditionResult.failedNode[0] = this.failedBranch
         this.$emit('cacheTaskInfo', {
           item: {
-            type: this.taskType,
-            id: this.id,
+            type: this.nodeData.taskType,
+            id: this.nodeData.id,
             name: this.name,
             params: this.params,
             description: this.description,
@@ -574,7 +559,7 @@
           return
         }
         // Verify task alarm parameters
-        if (this.taskType === 'DEPENDENT') {
+        if (this.nodeData.taskType === 'DEPENDENT') {
           if (!this.$refs['dependentTimeout']._verification()) {
             return
           }
@@ -585,7 +570,7 @@
         }
         
         // Verify node parameters
-        if (!this.$refs[this.taskType]._verification()) {
+        if (!this.$refs[this.nodeData.taskType]._verification()) {
           return
         }
         // Verify preTasks and update dag-things
@@ -595,12 +580,12 @@
           }
           else {
             // Sync data-targetarr
-            $(`#${this.id}`).attr(
+            $(`#${this.nodeData.id}`).attr(
               'data-targetarr', this.preTaskIdsInWorkflow ? this.preTaskIdsInWorkflow.join(',') : '')
 
             // Update JSP connections
             let plumbIns = JSP.JspInstance
-            var targetId = this.id
+            var targetId = this.nodeData.id
 
             // Update new connections
             this.preTasksToAdd.map(sourceId => {
@@ -626,14 +611,14 @@
           }
         }
 
-        $(`#${this.id}`).find('span').text(this.name)
+        $(`#${this.nodeData.id}`).find('span').text(this.name)
         this.conditionResult.successNode[0] = this.successBranch
         this.conditionResult.failedNode[0] = this.failedBranch
         // Store the corresponding node data structure
         this.$emit('addTaskInfo', {
           item: {
-            type: this.taskType,
-            id: this.id,
+            type: this.nodeData.taskType,
+            id: this.nodeData.id,
             name: this.name,
             params: this.params,
             description: this.description,
@@ -666,7 +651,7 @@
        *  set run flag
        */
       _setRunFlag () {
-        let dom = $(`#${this.id}`).find('.ban-p')
+        let dom = $(`#${this.nodeData.id}`).find('.ban-p')
         dom.html('')
         if (this.runFlag === 'FORBIDDEN') {
           dom.append(rtBantpl())
@@ -713,13 +698,13 @@
       //fillback use cacheTasks
       let cacheTasks = this.store.state.dag.cacheTasks
       let o = {}
-      if (cacheTasks[this.id]) {
-        o = cacheTasks[this.id]
-        this.backfillItem = cacheTasks[this.id]
+      if (cacheTasks[this.nodeData.id]) {
+        o = cacheTasks[this.nodeData.id]
+        this.backfillItem = cacheTasks[this.nodeData.id]
       } else {
         if (taskList.length) {
           taskList.forEach(v => {
-            if (v.id === this.id) {
+            if (v.id === this.nodeData.id) {
               o = v
               this.backfillItem = v
             }
@@ -750,7 +735,7 @@
         }
         if(o.workerGroup == undefined) {
           this.store.dispatch('dag/getTaskInstanceList',{
-            pageSize: 10, pageNo: 1, processInstanceId: this.instanceId, name: o.name
+            pageSize: 10, pageNo: 1, processInstanceId: this.nodeData.instanceId, name: o.name
           }).then(res => {
             this.workerGroup = res.totalList[0].workerGroup
           })
@@ -769,7 +754,7 @@
       this.isContentBox = true
 
       // Init value of preTask selector
-      let preTaskIds = $(`#${this.id}`).attr('data-targetarr')
+      let preTaskIds = $(`#${this.nodeData.id}`).attr('data-targetarr')
       if (!_.isEmpty(this.backfillItem)) {
         if (preTaskIds && preTaskIds.length) {
           this.backfillItem.preTasks = preTaskIds.split(',')
@@ -796,14 +781,14 @@
        * Child workflow entry show/hide
        */
       _isGoSubProcess () {
-        return this.taskType === 'SUB_PROCESS' && this.name
+        return this.nodeData.taskType === 'SUB_PROCESS' && this.name
       },
 
       //Define the item model
       _item () {
         return {
-          type: this.taskType,
-          id: this.id,
+          type: this.nodeData.taskType,
+          id: this.nodeData.id,
           name: this.name,
           description: this.description,
           runFlag: this.runFlag,
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/log.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/log.vue
index 96e560a..aa869c6 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/log.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/log.vue
@@ -29,16 +29,16 @@
             <span>{{$t('View log')}}</span>
             <div class="full-screen">
               <a href="javascript:" @click="_downloadLog" data-container="body" data-toggle="tooltip" :title="$t('Download Log')">
-                <em class="ans-icon-download" style="font-size: 20px"></em>
+                <em class="el-icon-download" style="font-size: 20px"></em>
               </a>
               <a href="javascript:" class="refresh-log" :class="loading ? 'active' :''" @click="!loading && _refreshLog()" data-container="body" data-toggle="tooltip" :title="$t('Refresh Log')">
-                <em class="ans-icon-refresh"></em>
+                <em class="el-icon-refresh"></em>
               </a>
               <a href="javascript:" @click="_screenOpen" v-show="!isScreen" data-container="body" data-toggle="tooltip" :title="$t('Enter full screen')">
-                <em class="ans-icon-max"></em>
+                <em class="el-icon-rank"></em>
               </a>
               <a href="javascript:" @click="_screenClose" v-show="isScreen" data-container="body" data-toggle="tooltip" :title="$t('Cancel full screen')">
-                <em class="ans-icon-min"></em>
+                <em class="el-icon-full-screen"></em>
               </a>
             </div>
           </div>
@@ -48,7 +48,7 @@
             </div>
           </div>
           <div class="operation">
-            <x-button type="primary" shape="circle" @click="close"> {{$t('Close')}} </x-button>
+            <el-button type="primary" size="small" round @click="close"> {{$t('Close')}} </el-button>
           </div>
         </div>
       </div>
@@ -118,8 +118,8 @@
       },
       _ckLog () {
         this.isLog = true
+
         this.store.dispatch('dag/getLog', this._rtParam).then(res => {
-          this.$message.destroy()
           if (!res.data) {
             this.isData = false
             setTimeout(() => {
@@ -138,7 +138,6 @@
             }, 800)
           }
         }).catch(e => {
-          this.$message.destroy()
           this.$message.error(e.msg || '')
         })
       },
@@ -169,7 +168,7 @@
        * Download log
        */
       _downloadLog () {
-        downloadFile('log/download-log', {
+        downloadFile('/log/download-log', {
           taskInstanceId: this.stateId || this.logId
         })
       },
@@ -203,11 +202,7 @@
           // Listen for scrollbar events
           if (($this.scrollTop() + $this.height()) === $this.height()) {
             if (self.loadingIndex > 0) {
-              self.$message.loading({
-                content: `${i18n.$t('Loading Log...')}`,
-                duration: 0,
-                closable: false
-              })
+              self.$message.info(`${i18n.$t('Loading Log...')}`)
               self._onUp()
             }
           }
@@ -215,11 +210,7 @@
           if ($this.get(0).scrollHeight === ($this.height() + $this.scrollTop())) {
             // No data is not requested
             if (self.isData) {
-              self.$message.loading({
-                content: `${i18n.$t('Loading Log...')}`,
-                duration: 0,
-                closable: false
-              })
+              self.$message.info(`${i18n.$t('Loading Log...')}`)
               self._onDown()
             }
           }
@@ -240,11 +231,7 @@
     created () {
       // Source is a task instance
       if (this.source === 'list') {
-        this.$message.loading({
-          content: `${i18n.$t('Loading Log...')}`,
-          duration: 0,
-          closable: false
-        })
+        this.$message.info(`${i18n.$t('Loading Log...')}`)
         this._ckLog()
       }
     },
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue
index 05e248f..1344666 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/datasource.vue
@@ -17,28 +17,30 @@
 <template>
   <div class="datasource-model">
     <div class="select-listpp">
-      <x-select v-model="type"
+      <el-select v-model="type"
                 style="width: 160px;"
-                @on-change="_handleTypeChanged"
+                size="small"
+                @change="_handleTypeChanged"
                 :disabled="isDetails">
-        <x-option
+        <el-option
                 v-for="city in typeList"
                 :key="city.code"
                 :value="city.code"
                 :label="city.code">
-        </x-option>
-      </x-select>
-      <x-select :placeholder="$t('Please select the datasource')"
+        </el-option>
+      </el-select>
+      <el-select :placeholder="$t('Please select the datasource')"
                 v-model="datasource"
                 style="width: 288px;"
+                size="small"
                 :disabled="isDetails">
-        <x-option
+        <el-option
                 v-for="city in datasourceList"
                 :key="city.id"
                 :value="city.id"
                 :label="city.code">
-        </x-option>
-      </x-select>
+        </el-option>
+      </el-select>
     </div>
   </div>
 </template>
@@ -101,7 +103,7 @@
       /**
        * Brush type
        */
-      _handleTypeChanged ({ value }) {
+      _handleTypeChanged (value) {
         this.type = value
         this._getDatasourceData().then(res => {
           this.datasource = this.datasourceList.length && this.datasourceList[0].id || ''
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue
index abec923..ead747e 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/dependItemList.vue
@@ -17,39 +17,39 @@
 <template>
   <div class="dep-list-model">
     <div v-for="(el,$index) in dependItemList" :key='$index' class="list" @click="itemIndex = $index">
-      <x-select filterable :style="{width:isInstance ? '450px' : '450px'}" :disabled="isDetails" v-model="el.projectId" @on-change="_onChangeProjectId">
-        <x-option v-for="item in projectList" :key="item.value" :value="item.value" :label="item.label">
-        </x-option>
-      </x-select>
-      <x-select filterable :style="{width:isInstance ? '450px' : '450px'}" :disabled="isDetails" v-model="el.definitionId" @on-change="_onChangeDefinitionId">
-        <x-option v-for="item in el.definitionList" :key="item.value" :value="item.value" :label="item.label">
-        </x-option>
-      </x-select>
-      <x-select filterable :style="{width:isInstance ? '450px' : '450px'}" :disabled="isDetails" v-model="el.depTasks">
-        <x-option v-for="item in el.depTasksList || []" :key="item" :value="item" :label="item">
-        </x-option>
-      </x-select>
-      <x-select style="width: 150px;" v-model="el.cycle" :disabled="isDetails" @on-change="_onChangeCycle">
-        <x-option v-for="item in cycleList" :key="item.value" :value="item.value" :label="item.label">
-        </x-option>
-      </x-select>
-      <x-select style="width: 116px;" v-model="el.dateValue" :disabled="isDetails">
-        <x-option v-for="item in el.dateValueList || []" :key="item.value" :value="item.value" :label="item.label">
-        </x-option>
-      </x-select>
+      <el-select filterable :style="{width:isInstance ? '450px' : '450px'}" :disabled="isDetails" v-model="el.projectId" @change="_onChangeProjectId" size="small">
+        <el-option v-for="item in projectList" :key="item.value" :value="item.value" :label="item.label">
+        </el-option>
+      </el-select>
+      <el-select filterable :style="{width:isInstance ? '450px' : '450px'}" :disabled="isDetails" v-model="el.definitionId" @change="_onChangeDefinitionId" size="small">
+        <el-option v-for="item in el.definitionList" :key="item.value" :value="item.value" :label="item.label">
+        </el-option>
+      </el-select>
+      <el-select filterable :style="{width:isInstance ? '450px' : '450px'}" :disabled="isDetails" v-model="el.depTasks" size="small">
+        <el-option v-for="item in el.depTasksList || []" :key="item" :value="item" :label="item">
+        </el-option>
+      </el-select>
+      <el-select style="width: 150px;" v-model="el.cycle" :disabled="isDetails" @change="_onChangeCycle">
+        <el-option v-for="item in cycleList" :key="item.value" :value="item.value" :label="item.label">
+        </el-option>
+      </el-select>
+      <el-select style="width: 116px;" v-model="el.dateValue" :disabled="isDetails">
+        <el-option v-for="item in el.dateValueList || []" :key="item.value" :value="item.value" :label="item.label">
+        </el-option>
+      </el-select>
       <template v-if="isInstance">
         <span class="instance-state">
-          <em class="iconfont ans-icon-success-solid" :class="'icon-' + el.state" v-if="el.state === 'SUCCESS'" data-toggle="tooltip" data-container="body" :title="$t('success')"></em>
-          <em class="iconfont ans-icon-clock" :class="'icon-' + el.state" v-if="el.state === 'WAITING'" data-toggle="tooltip" data-container="body" :title="$t('waiting')"></em>
-          <em class="iconfont ans-icon-fail-solid" :class="'icon-' + el.state" v-if="el.state === 'FAILED'" data-toggle="tooltip" data-container="body" :title="$t('failed')"></em>
+          <em class="iconfont el-icon-success" :class="'icon-' + el.state" v-if="el.state === 'SUCCESS'" data-toggle="tooltip" data-container="body" :title="$t('success')"></em>
+          <em class="iconfont el-icon-timer" :class="'icon-' + el.state" v-if="el.state === 'WAITING'" data-toggle="tooltip" data-container="body" :title="$t('waiting')"></em>
+          <em class="iconfont el-icon-error" :class="'icon-' + el.state" v-if="el.state === 'FAILED'" data-toggle="tooltip" data-container="body" :title="$t('failed')"></em>
         </span>
       </template>
       <span class="operation">
         <a href="javascript:" class="delete" @click="!isDetails && _remove($index)">
-          <em class="ans-icon-trash" :class="_isDetails" data-toggle="tooltip" data-container="body" :title="$t('delete')" ></em>
+          <em class="el-icon-delete" :class="_isDetails" data-toggle="tooltip" data-container="body" :title="$t('delete')" ></em>
         </a>
         <a href="javascript:" class="add" @click="!isDetails && _add()" v-if="$index === (dependItemList.length - 1)">
-          <em class="iconfont ans-icon-increase" :class="_isDetails" data-toggle="tooltip" data-container="body" :title="$t('Add')"></em>
+          <em class="iconfont el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" data-container="body" :title="$t('Add')"></em>
         </a>
       </span>
     </div>
@@ -174,7 +174,7 @@
       /**
        * change process get dependItemList
        */
-      _onChangeProjectId ({ value }) {
+      _onChangeProjectId (value) {
         this._getProcessByProjectId(value).then(definitionList => {
           /*this.$set(this.dependItemList, this.itemIndex, this._dlOldParams(value, definitionList, item))*/
           let definitionId = definitionList[0].value
@@ -187,7 +187,7 @@
           })
         })
       },
-      _onChangeDefinitionId ({ value }) {
+      _onChangeDefinitionId (value) {
         // get depItem list data
         this._getDependItemList(value).then(depTasksList => {
           let item = this.dependItemList[this.itemIndex]
@@ -197,7 +197,7 @@
           this.$set(this.dependItemList, this.itemIndex, this._rtOldParams(value, item.definitionList, depTasksList, item))
         })
       },
-      _onChangeCycle ({ value }) {
+      _onChangeCycle (value) {
         let list = _.cloneDeep(dateValueList[value])
         this.$set(this.dependItemList[this.itemIndex], 'dateValue', list[0].value)
         this.$set(this.dependItemList[this.itemIndex], 'dateValueList', list)
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/httpParams.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/httpParams.vue
index de5f781..7f9724c 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/httpParams.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/httpParams.vue
@@ -20,50 +20,51 @@
          v-for="(item,$index) in httpParamsList"
          :key="item.id"
          @click="_getIndex($index)">
-      <x-input
+      <el-input
         :disabled="isDetails"
         type="text"
+        size="small"
         v-model="httpParamsList[$index].prop"
         :placeholder="$t('prop(required)')"
-        @on-blur="_verifProp()"
+        @blur="_verifProp()"
         :style="inputStyle">
-      </x-input>
-      <x-select
+      </el-input>
+      <el-select
         @change="_handlePositionChanged"
         v-model="httpParamsList[$index].httpParametersType"
         :placeholder="$t('Http Parameters Position')"
         :disabled="isDetails"
         :style="inputStyle"
       >
-        <x-option
+        <el-option
           v-for="position in positionList"
           :key="position.code"
           :value="position.id"
           :label="position.code">
-        </x-option>
-      </x-select>
-      <x-input
+        </el-option>
+      </el-select>
+      <el-input
         :disabled="isDetails"
         type="text"
         v-model="httpParamsList[$index].value"
         :placeholder="$t('value(required)')"
-        @on-blur="_handleValue()"
+        @blur="_handleValue()"
         :style="inputStyle">
-      </x-input>
+      </el-input>
       <span class="lt-add">
         <a href="javascript:" style="color:red;" @click="!isDetails && _removeUdp($index)" >
-          <em class="ans-icon-trash" :class="_isDetails" data-toggle="tooltip" :title="$t('delete')" ></em>
+          <em class="el-icon-delete" :class="_isDetails" data-toggle="tooltip" :title="$t('delete')" ></em>
         </a>
       </span>
       <span class="add" v-if="$index === (httpParamsList.length - 1)">
         <a href="javascript:" @click="!isDetails && _addUdp()" >
-          <em class="ans-icon-increase" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
+          <em class="el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
         </a>
       </span>
     </div>
     <span class="add-dp" v-if="!httpParamsList.length">
       <a href="javascript:" @click="!isDetails && _addUdp()" >
-        <em class="iconfont ans-icon-increase" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
+        <em class="iconfont el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
       </a>
     </span>
   </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/scriptBox.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/jsonBox.vue
similarity index 90%
copy from dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/scriptBox.vue
copy to dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/jsonBox.vue
index 91e1cb7..71e4d80 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/scriptBox.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/jsonBox.vue
@@ -27,9 +27,6 @@
         </div>
       </div>
     </m-list-box>
-    <a class="ans-modal-box-close">
-      <em class="ans-icon-min" @click="closeModal"></em>
-    </a>
   </div>
 </template>
 <script>
@@ -51,7 +48,7 @@
     },
     mixins: [disabledState],
     props: {
-      item: String
+      jsonItem: String
     },
     methods: {
       /**
@@ -65,7 +62,7 @@
           readOnly: this.isDetails
         })
         editor.on("change",function(){
-          self.$emit('getSriptBoxValue',editor.getValue())
+          self.$emit('getJsonBoxValue',editor.getValue())
         })
 
         this.keypress = () => {
@@ -83,14 +80,10 @@
 
         return editor
       },
-      closeModal() {
-        let self = this
-        self.$emit('closeAble')
-      }
     },
     watch: {},
     created () {
-      let o = this.item
+      let o = this.jsonItem
 
       // Non-null objects represent backfill
       if (!_.isEmpty(o)) {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue
index 0bbbb66..ea5f299 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/localParams.vue
@@ -20,64 +20,68 @@
          v-for="(item,$index) in localParamsList"
          :key="item.id"
          @click="_getIndex($index)">
-      <x-input
+      <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="localParamsList[$index].prop"
               :placeholder="$t('prop(required)')"
               maxlength="256"
-              @on-blur="_verifProp()"
+              @blur="_verifProp()"
               :style="inputStyle">
-      </x-input>
+      </el-input>
       <template v-if="hide">
-        <x-select
+        <el-select
                 style="width: 80px;"
+                size="small"
                 @change="_handleDirectChanged"
                 v-model="localParamsList[$index].direct"
                 :disabled="isDetails">
-          <x-option
+          <el-option
                   v-for="city in directList"
                   :key="city.code"
                   :value="city.code"
                   :label="city.code">
-          </x-option>
-        </x-select>
-        <x-select
+          </el-option>
+        </el-select>
+        <el-select
                 style="width: 118px;"
+                size="small"
                 @change="_handleTypeChanged"
                 v-model="localParamsList[$index].type"
                 :disabled="isDetails">
-          <x-option
+          <el-option
                   v-for="city in typeList"
                   :key="city.code"
                   :value="city.code"
                   :label="city.code">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </template>
-      <x-input
+      <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="localParamsList[$index].value"
               :placeholder="$t('value(optional)')"
               maxlength="256"
-              @on-blur="_handleValue()"
+              @blur="_handleValue()"
               :style="inputStyle">
-      </x-input>
+      </el-input>
       <span class="lt-add">
         <a href="javascript:" style="color:red;" @click="!isDetails && _removeUdp($index)" >
-          <em class="ans-icon-trash" :class="_isDetails" data-toggle="tooltip" :title="$t('delete')" ></em>
+          <em class="el-icon-delete" :class="_isDetails" data-toggle="tooltip" :title="$t('delete')" ></em>
         </a>
       </span>
       <span class="add" v-if="$index === (localParamsList.length - 1)">
         <a href="javascript:" @click="!isDetails && _addUdp()" >
-          <em class="iconfont ans-icon-increase" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
+          <em class="el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
         </a>
       </span>
     </div>
     <span class="add-dp" v-if="!localParamsList.length">
       <a href="javascript:" @click="!isDetails && _addUdp()" >
-        <em class="iconfont ans-icon-increase" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
+        <em class="iconfont el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
       </a>
     </span>
   </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/nodeStatus.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/nodeStatus.vue
index fe9b28b..3d6d0e6 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/nodeStatus.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/nodeStatus.vue
@@ -17,27 +17,27 @@
 <template>
   <div class="dep-list-model">
     <div v-for="(el,$index) in dependItemList" :key='$index' class="list" @click="itemIndex = $index">
-      <x-select style="width: 150px;" v-model="el.depTasks" :disabled="isDetails">
-        <x-option v-for="item in preNode" :key="item.value" :value="item.value" :label="item.label">
-        </x-option>
-      </x-select>
-      <x-select style="width: 116px;" v-model="el.status" :disabled="isDetails">
-        <x-option v-for="item in nodeStatusList || []" :key="item.value" :value="item.value" :label="item.label">
-        </x-option>
-      </x-select>
+      <el-select style="width: 150px;" size="small" v-model="el.depTasks" :disabled="isDetails">
+        <el-option v-for="item in preNode" :key="item.value" :value="item.value" :label="item.label">
+        </el-option>
+      </el-select>
+      <el-select style="width: 116px;" size="small" v-model="el.status" :disabled="isDetails">
+        <el-option v-for="item in nodeStatusList || []" :key="item.value" :value="item.value" :label="item.label">
+        </el-option>
+      </el-select>
       <template v-if="isInstance">
         <span class="instance-state">
-          <em class="iconfont ans-icon-success-solid" :class="'icon-' + el.state" v-if="el.state === 'SUCCESS'" data-toggle="tooltip" data-container="body" :title="$t('success')"></em>
-          <em class="iconfont ans-icon-clock" :class="'icon-' + el.state" v-if="el.state === 'RUNNING_EXECUTION'" data-toggle="tooltip" data-container="body" :title="$t('waiting')"></em>
-          <em class="iconfont ans-icon-fail-solid" :class="'icon-' + el.state" v-if="el.state === 'FAILURE'" data-toggle="tooltip" data-container="body" :title="$t('failed')"></em>
+          <em class="iconfont el-icon-success" :class="'icon-' + el.state" v-if="el.state === 'SUCCESS'" data-toggle="tooltip" data-container="body" :title="$t('success')"></em>
+          <em class="iconfont el-icon-timer" :class="'icon-' + el.state" v-if="el.state === 'RUNNING_EXECUTION'" data-toggle="tooltip" data-container="body" :title="$t('waiting')"></em>
+          <em class="iconfont el-icon-error" :class="'icon-' + el.state" v-if="el.state === 'FAILURE'" data-toggle="tooltip" data-container="body" :title="$t('failed')"></em>
         </span>
       </template>
       <span class="operation">
         <a href="javascript:" class="delete" @click="!isDetails && _remove($index)">
-          <em class="iconfont ans-icon-trash" :class="_isDetails" data-toggle="tooltip" data-container="body" :title="$t('delete')" ></em>
+          <em class="iconfont el-icon-delete" :class="_isDetails" data-toggle="tooltip" data-container="body" :title="$t('delete')" ></em>
         </a>
         <a href="javascript:" class="add" @click="!isDetails && _add()" v-if="$index === (dependItemList.length - 1)">
-          <em class="iconfont ans-icon-increase" :class="_isDetails" data-toggle="tooltip" data-container="body" :title="$t('Add')"></em>
+          <em class="iconfont el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" data-container="body" :title="$t('Add')"></em>
         </a>
       </span>
     </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue
index 8b578c7..99c2816 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/resources.vue
@@ -16,19 +16,20 @@
  */
 <template>
   <div class="resource-list-model">
-    <x-select multiple
+    <el-select multiple
               v-model="value"
               filterable
+              size="small"
               :disabled="isDetails"
               :placeholder="$t('Please select resources')"
               style="width: 100%;">
-      <x-option
+      <el-option
               v-for="city in resList"
               :key="city.code"
               :value="city.code"
               :label="city.code">
-      </x-option>
-    </x-select>
+      </el-option>
+    </el-select>
   </div>
 </template>
 <script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/scriptBox.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/scriptBox.vue
index 91e1cb7..c986448 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/scriptBox.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/scriptBox.vue
@@ -27,9 +27,6 @@
         </div>
       </div>
     </m-list-box>
-    <a class="ans-modal-box-close">
-      <em class="ans-icon-min" @click="closeModal"></em>
-    </a>
   </div>
 </template>
 <script>
@@ -83,10 +80,6 @@
 
         return editor
       },
-      closeModal() {
-        let self = this
-        self.$emit('closeAble')
-      }
     },
     watch: {},
     created () {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue
index ecb7d2c..f239c4c 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/sqlType.vue
@@ -16,18 +16,19 @@
  */
 <template>
   <div class="sql-type-model">
-    <x-select
+    <el-select
             v-model="sqlTypeId"
             :disabled="isDetails"
-            @on-change="_handleSqlTypeChanged"
-            style="width: 120px;">
-      <x-option
+            @change="_handleSqlTypeChanged"
+            style="width: 120px;"
+            size="small">
+      <el-option
               v-for="city in sqlTypeList"
               :key="city.id"
               :value="city.id"
               :label="city.code">
-      </x-option>
-    </x-select>
+      </el-option>
+    </el-select>
   </div>
 </template>
 <script>
@@ -53,7 +54,7 @@
        * return sqlType
        */
       _handleSqlTypeChanged (val) {
-        this.$emit('on-sqlType', val.value)
+        this.$emit('on-sqlType', val)
       }
     },
     watch: {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/statementList.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/statementList.vue
index ecd10a9..145bcb9 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/statementList.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/statementList.vue
@@ -20,30 +20,31 @@
          v-for="(item,$index) in localStatementList"
          :key="item.id"
          @click="_getIndex($index)">
-      <x-input
+      <el-input
         :disabled="isDetails"
         type="textarea"
+        size="small"
         resize="none"
         :autosize="{minRows:1}"
         :placeholder="$t('Please enter a non-query SQL statement')"
         v-model="localStatementList[$index]"
-        @on-blur="_verifProp()"
+        @blur="_verifProp()"
         style="width: 525px;">
-      </x-input>
+      </el-input>
       <span class="lt-add">
         <a href="javascript:" style="color:red;" @click="!isDetails && _removeStatement($index)" >
-          <em class="ans-icon-trash" :class="_isDetails" data-toggle="tooltip" :title="$t('delete')" ></em>
+          <em class="el-icon-delete" :class="_isDetails" data-toggle="tooltip" :title="$t('delete')" ></em>
         </a>
       </span>
       <span class="add" v-if="$index === (localStatementList.length - 1)">
         <a href="javascript:" @click="!isDetails && _addStatement()" >
-          <em class="iconfont ans-icon-increase" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
+          <em class="el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
         </a>
       </span>
     </div>
     <span class="add" v-if="!localStatementList.length">
       <a href="javascript:" @click="!isDetails && _addStatement()" >
-        <em class="iconfont ans-icon-increase" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
+        <em class="el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
       </a>
     </span>
   </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue
index e27a683..c67f344 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/_source/udfs.vue
@@ -16,17 +16,18 @@
  */
 <template>
   <div class="udfs-model">
-    <x-select multiple
+    <el-select multiple
               v-model="udfsStr"
               :disabled="isDetails"
+              size="small"
               style="width: 100%;">
-      <x-option
+      <el-option
               v-for="city in udfsList"
               :key="city.id"
               :value="city.id"
               :label="city.code"> 
-      </x-option>
-    </x-select>
+      </el-option>
+    </el-select>
   </div>
 </template>
 <script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/conditions.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/conditions.vue
index 621de81..e475441 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/conditions.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/conditions.vue
@@ -23,8 +23,8 @@
           <a href="javascript:"
              @click="!isDetails && _addDep()"
              class="add-dep">
-            <em v-if="!isLoading" class="ans-icon-increase" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
-            <em v-if="isLoading" class="ans-icon-spinner2 as as-spin" data-toggle="tooltip" :title="$t('Add')"></em>
+            <em v-if="!isLoading" class="el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
+            <em v-if="isLoading" class="el-icon-loading as as-spin" data-toggle="tooltip" :title="$t('Add')"></em>
           </a>
         </div>
         <div class="dep-box">
@@ -40,7 +40,7 @@
                   @click="!isDetails && _setRelation($index)">
               {{el.relation === 'AND' ? $t('and') : $t('or')}}
             </span>
-            <em class="ans-icon-trash dep-delete"
+            <em class="el-icon-delete dep-delete"
                data-toggle="tooltip"
                data-container="body"
                :class="_isDetails"
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/datax.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/datax.vue
index 42bd234..56898d3 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/datax.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/datax.vue
@@ -21,7 +21,7 @@
       <div slot="content">
         <label class="label-box">
           <div style="padding-top: 5px;">
-            <x-switch v-model="enable" @on-click="_onSwitch" :disabled="isDetails"></x-switch>
+            <el-switch v-model="enable" @change="_onSwitch" :disabled="isDetails"></el-switch>
           </div>
         </label>
       </div>
@@ -31,10 +31,10 @@
         <div slot="text">{{$t('Datasource')}}</div>
         <div slot="content">
           <m-datasource
-                  ref="refDs"
-                  @on-dsData="_onDsData"
-                  :supportType="['MYSQL','POSTGRESQL', 'ORACLE', 'SQLSERVER']"
-                  :data="{ type:dsType,datasource:datasource }">
+            ref="refDs"
+            @on-dsData="_onDsData"
+            :supportType="['MYSQL','POSTGRESQL', 'ORACLE', 'SQLSERVER']"
+            :data="{ type:dsType,datasource:datasource }">
           </m-datasource>
         </div>
       </m-list-box>
@@ -48,7 +48,7 @@
               style="opacity: 0;">
             </textarea>
             <a class="ans-modal-box-max">
-              <em class="ans-icon-max" @click="setEditorVal"></em>
+              <em class="el-icon-rank" @click="setEditorVal"></em>
             </a>
           </div>
         </div>
@@ -57,22 +57,22 @@
         <div slot="text">{{$t('TargetDataBase')}}</div>
         <div slot="content">
           <m-datasource
-                  ref="refDt"
-                  @on-dsData="_onDtData"
-                  :supportType="['MYSQL','POSTGRESQL', 'ORACLE', 'SQLSERVER']"
-                  :data="{ type:dtType,datasource:datatarget }">
+            ref="refDt"
+            @on-dsData="_onDtData"
+            :supportType="['MYSQL','POSTGRESQL', 'ORACLE', 'SQLSERVER']"
+            :data="{ type:dtType,datasource:datatarget }">
           </m-datasource>
         </div>
       </m-list-box>
       <m-list-box>
         <div slot="text">{{$t('TargetTable')}}</div>
         <div slot="content">
-          <x-input
+          <el-input
             type="input"
+            size="small"
             v-model="targetTable"
-            :placeholder="$t('Please enter the table of target')"
-            autocomplete="off">
-          </x-input>
+            :placeholder="$t('Please enter the table of target')">
+          </el-input>
         </div>
       </m-list-box>
       <m-list-box>
@@ -126,9 +126,6 @@
               name="code-json-mirror"
               style="opacity: 0;">
             </textarea>
-            <a class="ans-modal-box-max">
-              <em class="ans-icon-max" @click="setJsonEditorVal"></em>
-            </a>
           </div>
         </div>
       </m-list-box>
@@ -159,7 +156,12 @@
         <span>&nbsp;&nbsp;&nbsp;G</span>
       </div>
     </div>
-
+    <el-dialog
+      :visible.sync="scriptBoxDialog"
+      append-to-body="true"
+      width="80%">
+      <m-script-box :item="item" @getSriptBoxValue="getSriptBoxValue" @closeAble="closeAble"></m-script-box>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -216,6 +218,8 @@
         xms: 1,
         //jvm memory xms
         xmx: 1,
+        scriptBoxDialog: false,
+        item: '',
       }
     },
     mixins: [disabledState],
@@ -225,60 +229,11 @@
     },
     methods: {
       setEditorVal() {
-        let self = this
-        let modal = self.$modal.dialog({
-          className: 'scriptModal',
-          closable: false,
-          showMask: true,
-          maskClosable: true,
-          onClose: function() {
-
-          },
-          render (h) {
-            return h(mScriptBox, {
-              on: {
-                getSriptBoxValue (val) {
-                  editor.setValue(val)
-                },
-                closeAble () {
-                  // this.$modal.destroy()
-                  modal.remove()
-                }
-              },
-              props: {
-                item: editor.getValue()
-              }
-            })
-          }
-        })
+        this.item = editor.getValue()
+        this.scriptBoxDialog = true
       },
-      setJsonEditorVal() {
-        let self = this
-        let modal = self.$modal.dialog({
-          className: 'scriptModal',
-          closable: false,
-          showMask: true,
-          maskClosable: true,
-          onClose: function() {
-
-          },
-          render (h) {
-            return h(mScriptBox, {
-              on: {
-                getSriptBoxValue (val) {
-                  jsonEditor.setValue(val)
-                },
-                closeAble () {
-                  // this.$modal.destroy()
-                  modal.remove()
-                }
-              },
-              props: {
-                item: jsonEditor.getValue()
-              }
-            })
-          }
-        })
+      getSriptBoxValue (val) {
+        editor.setValue(val)
       },
       _onSwitch (is) {
         if(is) {
@@ -566,7 +521,7 @@
         }
       }
     },
-    components: { mListBox, mDatasource, mLocalParams, mStatementList, mSelectInput }
+    components: { mListBox, mDatasource, mLocalParams, mStatementList, mSelectInput, mScriptBox }
   }
 </script>
 <style lang="scss" rel="stylesheet/scss" scope>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue
index 79d127a..46c1c83 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/dependent.vue
@@ -23,8 +23,8 @@
           <a href="javascript:"
              @click="!isDetails && _addDep()"
              class="add-dep">
-            <em v-if="!isLoading" class="ans-icon-increase" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
-            <em v-if="isLoading" class="ans-icon-spinner2 as as-spin" data-toggle="tooltip" :title="$t('Add')"></em>
+            <em v-if="!isLoading" class="el-icon-circle-plus-outline" :class="_isDetails" data-toggle="tooltip" :title="$t('Add')"></em>
+            <em v-if="isLoading" class="el-icon-loading as as-spin" data-toggle="tooltip" :title="$t('Add')"></em>
           </a>
         </div>
         <div class="dep-box">
@@ -40,7 +40,7 @@
                   @click="!isDetails && _setRelation($index)">
               {{el.relation === 'AND' ? $t('and') : $t('or')}}
             </span>
-            <em class="ans-icon-trash dep-delete"
+            <em class="el-icon-delete dep-delete"
                data-toggle="tooltip"
                data-container="body"
                :class="_isDetails"
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue
index 0fb4ee3..c81f3e6 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/flink.vue
@@ -19,30 +19,31 @@
     <m-list-box>
       <div slot="text">{{$t('Program Type')}}</div>
       <div slot="content">
-        <x-select
+        <el-select
                 style="width: 130px;"
+                size="small"
                 v-model="programType"
                 :disabled="isDetails">
-          <x-option
+          <el-option
                   v-for="city in programTypeList"
                   :key="city.code"
                   :value="city.code"
                   :label="city.code">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
     </m-list-box>
 
     <m-list-box v-if="programType !== 'PYTHON'">
       <div slot="text">{{$t('Main class')}}</div>
       <div slot="content">
-        <x-input
-                :disabled="isDetails"
-                type="input"
-                v-model="mainClass"
-                :placeholder="$t('Please enter main class')"
-                autocomplete="off">
-        </x-input>
+        <el-input
+          :disabled="isDetails"
+          type="input"
+          size="small"
+          v-model="mainClass"
+          :placeholder="$t('Please enter main class')">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
@@ -56,76 +57,77 @@
     <m-list-box>
       <div slot="text">{{$t('Deploy Mode')}}</div>
       <div slot="content">
-        <x-radio-group v-model="deployMode">
-          <x-radio :label="'cluster'" :disabled="isDetails"></x-radio>
-          <x-radio :label="'local'" :disabled="isDetails"></x-radio>
-        </x-radio-group>
+        <el-radio-group v-model="deployMode" size="small">
+          <el-radio :label="'cluster'" :disabled="isDetails"></el-radio>
+          <el-radio :label="'local'" :disabled="isDetails"></el-radio>
+        </el-radio-group>
       </div>
     </m-list-box>
     <m-list-box v-if="deployMode === 'cluster'">
       <div slot="text">{{$t('Flink Version')}}</div>
       <div slot="content">
-        <x-select
+        <el-select
           style="width: 100px;"
+          size="small"
           v-model="flinkVersion"
           :disabled="isDetails">
-          <x-option
+          <el-option
             v-for="version in flinkVersionList"
             :key="version.code"
             :value="version.code"
             :label="version.code">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
     </m-list-box>
     <div class="list-box-4p" v-if="deployMode === 'cluster'">
       <div class="clearfix list">
         <span class="sp1" style="word-break:break-all">{{$t('jobManagerMemory')}}</span>
         <span class="sp2">
-          <x-input
+          <el-input
             :disabled="isDetails"
             type="input"
+            size="small"
             v-model="jobManagerMemory"
             :placeholder="$t('Please enter jobManager memory')"
-            style="width: 200px;"
-            autocomplete="off">
-        </x-input>
+            style="width: 200px;">
+        </el-input>
         </span>
         <span class="sp1 sp3">{{$t('taskManagerMemory')}}</span>
         <span class="sp2">
-          <x-input
+          <el-input
             :disabled="isDetails"
             type="input"
+            size="small"
             v-model="taskManagerMemory"
             :placeholder="$t('Please enter the taskManager memory')"
-            style="width: 186px;"
-            autocomplete="off">
-        </x-input>
+            style="width: 186px;">
+        </el-input>
         </span>
       </div>
       <div class="clearfix list">
         <span class="sp1">{{$t('slot')}}</span>
         <span class="sp2">
-          <x-input
+          <el-input
                   :disabled="isDetails"
                   type="input"
+                  size="small"
                   v-model="slot"
                   :placeholder="$t('Please enter solt number')"
-                  style="width: 200px;"
-                  autocomplete="off">
-        </x-input>
+                  style="width: 200px;">
+        </el-input>
         </span>
         <div v-if="flinkVersion !== '>=1.10'">
         <span class="sp1 sp3">{{$t('taskManager')}}</span>
         <span class="sp2">
-          <x-input
+          <el-input
                   :disabled="isDetails"
                   type="input"
+                  size="small"
                   v-model="taskManager"
                   :placeholder="$t('Please enter taskManager number')"
-                  style="width: 186px;"
-                  autocomplete="off">
-        </x-input>
+                  style="width: 186px;">
+        </el-input>
         </span>
         </div>
       </div>
@@ -133,26 +135,27 @@
     <m-list-box>
       <div slot="text">{{$t('Command-line parameters')}}</div>
       <div slot="content">
-        <x-input
+        <el-input
                 :autosize="{minRows:2}"
                 :disabled="isDetails"
                 type="textarea"
+                size="small"
                 v-model="mainArgs"
-                :placeholder="$t('Please enter Command-line parameters')"
-                autocomplete="off">
-        </x-input>
+                :placeholder="$t('Please enter Command-line parameters')">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
       <div slot="text">{{$t('Other parameters')}}</div>
       <div slot="content">
-        <x-input
+        <el-input
                 :disabled="isDetails"
                 :autosize="{minRows:2}"
                 type="textarea"
+                size="small"
                 v-model="others"
                 :placeholder="$t('Please enter other parameters')">
-        </x-input>
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
@@ -167,10 +170,10 @@
       <div slot="text">{{$t('Custom Parameters')}}</div>
       <div slot="content">
         <m-local-params
-                ref="refLocalParams"
-                @on-local-params="_onLocalParams"
-                :udp-list="localParams"
-                :hide="false">
+            ref="refLocalParams"
+            @on-local-params="_onLocalParams"
+            :udp-list="localParams"
+            :hide="false">
         </m-local-params>
       </div>
     </m-list-box>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/http.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/http.vue
index 425cb2e..50a9a28 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/http.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/http.vue
@@ -19,30 +19,32 @@
     <m-list-box>
       <div slot="text">{{$t('Http Url')}}</div>
       <div slot="content">
-        <x-input
+        <el-input
           :autosize="{minRows:2}"
           :disabled="isDetails"
           type="textarea"
+          size="small"
           v-model="url"
           :placeholder="$t('Please Enter Http Url')"
           autocomplete="off">
-        </x-input>
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
       <div slot="text">{{$t('Http Method')}}</div>
       <div slot="content">
-        <x-select
+        <el-select
           style="width: 150px;"
+          size="small"
           v-model="httpMethod"
           :disabled="isDetails">
-          <x-option
+          <el-option
             v-for="city in httpMethodList"
             :key="city.code"
             :value="city.code"
             :label="city.code">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
     </m-list-box>
     <m-list-box>
@@ -59,30 +61,31 @@
     <m-list-box>
       <div slot="text">{{$t('Http Check Condition')}}</div>
       <div slot="content">
-        <x-select
+        <el-select
           style="width: 230px;"
+          size="small"
           v-model="httpCheckCondition"
           :disabled="isDetails">
-          <x-option
+          <el-option
             v-for="city in httpCheckConditionList"
             :key="city.code"
             :value="city.code"
             :label="city.value">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
     </m-list-box>
     <m-list-box>
       <div slot="text">{{$t('Http Condition')}}</div>
       <div slot="content">
-        <x-input
+        <el-input
           :autosize="{minRows:2}"
           :disabled="isDetails"
           type="textarea"
+          size="small"
           v-model="condition"
-          :placeholder="$t('Please Enter Http Condition')"
-          autocomplete="off">
-        </x-input>
+          :placeholder="$t('Please Enter Http Condition')">
+        </el-input>
       </div>
     </m-list-box>
 
@@ -92,10 +95,7 @@
       <div slot="content">
         <label class="label-box">
           <div style="padding-top: 5px;">
-            <x-switch
-              v-model="timeoutSettings"
-              :disabled="isDetails"
-            ></x-switch>
+            <el-switch size="small" v-model="timeoutSettings" :disabled="isDetails"></el-switch>
           </div>
         </label>
       </div>
@@ -107,12 +107,12 @@
       </div>
       <div class="cont-box">
         <span  class="label-box"  style="width: 193px;display: inline-block;" >
-          <x-input v-model='connectTimeout' maxlength="7" />
+          <el-input size="small" v-model='connectTimeout' maxlength="7"></el-input>
         </span>
         <span>{{$t('ms')}}</span>
         <span class="text-b">{{$t('Socket Timeout')}}</span>
         <span  class="label-box" style="width: 193px;display: inline-block;" >
-          <x-input v-model='socketTimeout' maxlength="7" />
+          <el-input size="small" v-model='socketTimeout' maxlength="7"></el-input>
         </span>
         <span>{{$t('ms')}}</span>
       </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue
index a53501d..ffeba7c 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/mr.vue
@@ -19,26 +19,26 @@
     <m-list-box>
       <div slot="text">{{$t('Program Type')}}</div>
       <div slot="content">
-        <x-select v-model="programType" :disabled="isDetails" style="width: 110px;">
-          <x-option
+        <el-select v-model="programType" :disabled="isDetails" style="width: 110px;" size="small">
+          <el-option
                   v-for="city in programTypeList"
                   :key="city.code"
                   :value="city.code"
                   :label="city.code">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
     </m-list-box>
     <m-list-box v-if="programType !== 'PYTHON'">
       <div slot="text">{{$t('Main class')}}</div>
       <div slot="content">
-        <x-input
+        <el-input
                 :disabled="isDetails"
                 type="input"
+                size="small"
                 v-model="mainClass"
-                :placeholder="$t('Please enter main class')"
-                autocomplete="off">
-        </x-input>
+                :placeholder="$t('Please enter main class')">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
@@ -52,27 +52,27 @@
     <m-list-box>
       <div slot="text">{{$t('Command-line parameters')}}</div>
       <div slot="content">
-        <x-input
+        <el-input
                 :autosize="{minRows:2}"
                 :disabled="isDetails"
                 type="textarea"
+                size="small"
                 v-model="mainArgs"
-                :placeholder="$t('Please enter Command-line parameters')"
-                autocomplete="off">
-        </x-input>
+                :placeholder="$t('Please enter Command-line parameters')">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
       <div slot="text">{{$t('Other parameters')}}</div>
       <div slot="content">
-        <x-input
+        <el-input
                 :disabled="isDetails"
                 :autosize="{minRows:2}"
                 type="textarea"
+                size="small"
                 v-model="others"
-                :placeholder="$t('Please enter other parameters')"
-                autocomplete="off">
-        </x-input>
+                :placeholder="$t('Please enter other parameters')">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/pre_tasks.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/pre_tasks.vue
index adf889e..cb3aedc 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/pre_tasks.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/pre_tasks.vue
@@ -22,21 +22,22 @@
       </div>
       <div class="cont-box">
         <div class="label-box">
-          <x-select
+          <el-select
               ref="preTasksSelector"
               style="width: 100%;"
               filterable
               multiple
+              size="small"
               v-model="preTasks"
               :disabled="isDetails"
               :id="preTasksSelectorId">
-            <x-option
+            <el-option
                 v-for="task in preTaskList"
                 :key="task.id"
                 :value="task.id"
                 :label="task.name">
-            </x-option>
-          </x-select>
+            </el-option>
+          </el-select>
         </div>
       </div>
     </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue
index e84f37d..be88111 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/procedure.vue
@@ -30,13 +30,13 @@
     <m-list-box>
       <div slot="text">{{$t('methods')}}</div>
       <div slot="content">
-        <x-input
-                type="input"
-                :disabled="isDetails"
-                v-model="method"
-                :placeholder="$t('Please enter method(optional)')"
-                autocomplete="off">
-        </x-input>
+        <el-input
+            type="input"
+            size="small"
+            :disabled="isDetails"
+            v-model="method"
+            :placeholder="$t('Please enter method(optional)')">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue
index c6c2a22..d9aa4ce 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/python.vue
@@ -23,7 +23,7 @@
           <textarea id="code-python-mirror" name="code-python-mirror" style="opacity: 0;">
           </textarea>
           <a class="ans-modal-box-max">
-            <em class="ans-icon-max" @click="setEditorVal"></em>
+            <em class="el-icon-rank" @click="setEditorVal"></em>
           </a>
         </div>
       </div>
@@ -34,12 +34,6 @@
         <treeselect v-model="resourceList" :multiple="true" maxHeight="200" :options="resourceOptions" :normalizer="normalizer" :value-consists-of="valueConsistsOf" :disabled="isDetails" :placeholder="$t('Please select resources')">
           <div slot="value-label" slot-scope="{ node }">{{ node.raw.fullName }}</div>
         </treeselect>
-        <!-- <m-resources
-            ref="refResources"
-            @on-resourcesData="_onResourcesData"
-            @on-cache-resourcesData="_onCacheResourcesData"
-            :resource-list="resourceList">
-        </m-resources> -->
       </div>
     </m-list-box>
 
@@ -54,6 +48,12 @@
         </m-local-params>
       </div>
     </m-list-box>
+    <el-dialog
+      :visible.sync="scriptBoxDialog"
+      append-to-body="true"
+      width="80%">
+      <m-script-box :item="item" @getSriptBoxValue="getSriptBoxValue" @closeAble="closeAble"></m-script-box>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -90,7 +90,9 @@
           }
         },
         allNoResources: [],
-        noRes: []
+        noRes: [],
+        item: '',
+        scriptBoxDialog: false
       }
     },
     mixins: [disabledState],
@@ -105,32 +107,11 @@
         this.localParams = a
       },
       setEditorVal() {
-        let self = this
-          let modal = self.$modal.dialog({
-            className: 'scriptModal',
-            closable: false,
-            showMask: true,
-            maskClosable: true,
-            onClose: function() {
-
-            },
-            render (h) {
-              return h(mScriptBox, {
-                on: {
-                  getSriptBoxValue (val) {
-                    editor.setValue(val)
-                  },
-                  closeAble () {
-                    // this.$modal.destroy()
-                    modal.remove()
-                  }
-                },
-                props: {
-                  item: editor.getValue()
-                }
-              })
-            }
-          })
+        this.item = editor.getValue()
+        this.scriptBoxDialog = true
+      },
+      getSriptBoxValue (val) {
+        editor.setValue(val)
       },
       /**
        * return resourceList
@@ -362,7 +343,7 @@
       editor.toTextArea() // Uninstall
       editor.off($('.code-python-mirror'), 'keypress', this.keypress)
     },
-    components: { mLocalParams, mListBox, mResources,Treeselect }
+    components: { mLocalParams, mListBox, mResources,Treeselect, mScriptBox }
   }
 </script>
 <style lang="scss" rel="stylesheet/scss" scope>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue
index da94162..3d099d4 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/shell.vue
@@ -26,7 +26,7 @@
             style="opacity: 0">
           </textarea>
           <a class="ans-modal-box-max">
-            <em class="ans-icon-max" @click="setEditorVal"></em>
+            <em class="el-icon-rank" @click="setEditorVal"></em>
           </a>
         </div>
       </div>
@@ -39,17 +39,6 @@
         </treeselect>
       </div>
     </m-list-box>
-    <!-- <m-list-box>
-      <div slot="text">{{$t('Resources')}}</div>
-      <div slot="content">
-        <m-resources
-                ref="refResources"
-                @on-resourcesData="_onResourcesData"
-                @on-cache-resourcesData="_onCacheResourcesData"
-                :resource-list="resourceList">
-        </m-resources>
-      </div>
-    </m-list-box> -->
     <m-list-box>
       <div slot="text">{{$t('Custom Parameters')}}</div>
       <div slot="content">
@@ -61,6 +50,12 @@
         </m-local-params>
       </div>
     </m-list-box>
+    <el-dialog
+      :visible.sync="scriptBoxDialog"
+      modal-append-to-body="true"
+      width="80%">
+      <m-script-box :item="item" @getSriptBoxValue="getSriptBoxValue" @closeAble="closeAble"></m-script-box>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -98,7 +93,9 @@
           }
         },
         allNoResources: [],
-        noRes: []
+        noRes: [],
+        item: '',
+        scriptBoxDialog: false
       }
     },
     mixins: [disabledState],
@@ -113,32 +110,15 @@
         this.localParams = a
       },
       setEditorVal() {
-        let self = this
-          let modal = self.$modal.dialog({
-            className: 'scriptModal',
-            closable: false,
-            showMask: true,
-            maskClosable: true,
-            onClose: function() {
-
-            },
-            render (h) {
-              return h(mScriptBox, {
-                on: {
-                  getSriptBoxValue (val) {
-                    editor.setValue(val)
-                  },
-                  closeAble () {
-                    // this.$modal.destroy()
-                    modal.remove()
-                  }
-                },
-                props: {
-                  item: editor.getValue()
-                }
-              })
-            }
-          })
+        this.item = editor.getValue()
+        this.scriptBoxDialog = true
+      },
+      getSriptBoxValue (val) {
+        editor.setValue(val)
+        // this.scriptBoxDialog = false
+      },
+      closeAble () {
+        // this.scriptBoxDialog = false            
       },
       /**
        * return resourceList
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue
index 0948c97..ac37727 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/spark.vue
@@ -19,45 +19,47 @@
     <m-list-box>
       <div slot="text">{{$t('Program Type')}}</div>
       <div slot="content">
-        <x-select
+        <el-select
                 style="width: 130px;"
+                size="small"
                 v-model="programType"
                 :disabled="isDetails">
-          <x-option
+          <el-option
                   v-for="city in programTypeList"
                   :key="city.code"
                   :value="city.code"
                   :label="city.code">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
     </m-list-box>
     <m-list-box>
       <div slot="text">{{$t('Spark Version')}}</div>
       <div slot="content">
-        <x-select
+        <el-select
                 style="width: 130px;"
+                size="small"
                 v-model="sparkVersion"
                 :disabled="isDetails">
-          <x-option
+          <el-option
                   v-for="city in sparkVersionList"
                   :key="city.code"
                   :value="city.code"
                   :label="city.code">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
     </m-list-box>
     <m-list-box v-if="programType !== 'PYTHON'">
       <div slot="text">{{$t('Main class')}}</div>
       <div slot="content">
-        <x-input
-                :disabled="isDetails"
-                type="input"
-                v-model="mainClass"
-                :placeholder="$t('Please enter main class')"
-                autocomplete="off">
-        </x-input>
+        <el-input
+            :disabled="isDetails"
+            type="input"
+            size="small"
+            v-model="mainClass"
+            :placeholder="$t('Please enter main class')">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
@@ -71,99 +73,100 @@
     <m-list-box>
       <div slot="text">{{$t('Deploy Mode')}}</div>
       <div slot="content">
-        <x-radio-group v-model="deployMode">
-          <x-radio :label="'cluster'" :disabled="isDetails"></x-radio>
-          <x-radio :label="'client'" :disabled="isDetails"></x-radio>
-          <x-radio :label="'local'" :disabled="isDetails"></x-radio>
-        </x-radio-group>
+        <el-radio-group v-model="deployMode" size="small">
+          <el-radio :label="'cluster'" :disabled="isDetails"></el-radio>
+          <el-radio :label="'client'" :disabled="isDetails"></el-radio>
+          <el-radio :label="'local'" :disabled="isDetails"></el-radio>
+        </el-radio-group>
       </div>
     </m-list-box>
     <div class="list-box-4p">
       <div class="clearfix list">
         <span class="sp1">{{$t('Driver core number')}}</span>
         <span class="sp2">
-          <x-input
+          <el-input
                   :disabled="isDetails"
                   type="input"
+                  size="small"
                   v-model="driverCores"
                   :placeholder="$t('Please enter driver core number')"
-                  style="width: 200px;"
-                  autocomplete="off">
-        </x-input>
+                  style="width: 200px;">
+        </el-input>
         </span>
         <span class="sp1 sp3">{{$t('Driver memory use')}}</span>
         <span class="sp2">
-          <x-input
+          <el-input
                   :disabled="isDetails"
                   type="input"
+                  size="small"
                   v-model="driverMemory"
                   :placeholder="$t('Please enter driver memory use')"
-                  style="width: 186px;"
-                  autocomplete="off">
-        </x-input>
+                  style="width: 186px;">
+        </el-input>
         </span>
       </div>
       <div class="clearfix list">
         <span class="sp1">{{$t('Number of Executors')}}</span>
         <span class="sp2">
-          <x-input
-                  :disabled="isDetails"
-                  type="input"
-                  v-model="numExecutors"
-                  :placeholder="$t('Please enter the number of Executor')"
-                  style="width: 200px;"
-                  autocomplete="off">
-        </x-input>
+          <el-input
+              :disabled="isDetails"
+              type="input"
+              size="small"
+              v-model="numExecutors"
+              :placeholder="$t('Please enter the number of Executor')"
+              style="width: 200px;">
+        </el-input>
         </span>
         <span class="sp1 sp3">{{$t('Executor memory')}}</span>
         <span class="sp2">
-          <x-input
-                  :disabled="isDetails"
-                  type="input"
-                  v-model="executorMemory"
-                  :placeholder="$t('Please enter the Executor memory')"
-                  style="width: 186px;"
-                  autocomplete="off">
-        </x-input>
+          <el-input
+              :disabled="isDetails"
+              type="input"
+              size="small"
+              v-model="executorMemory"
+              :placeholder="$t('Please enter the Executor memory')"
+              style="width: 186px;">
+        </el-input>
         </span>
       </div>
       <div class="clearfix list">
         <span class="sp1">{{$t('Executor core number')}}</span>
         <span class="sp2">
-          <x-input
-                  :disabled="isDetails"
-                  type="input"
-                  v-model="executorCores"
-                  :placeholder="$t('Please enter Executor core number')"
-                  style="width: 200px;"
-                  autocomplete="off">
-          </x-input>
+          <el-input
+              :disabled="isDetails"
+              type="input"
+              size="small"
+              v-model="executorCores"
+              :placeholder="$t('Please enter Executor core number')"
+              style="width: 200px;">
+          </el-input>
         </span>
       </div>
     </div>
     <m-list-box>
       <div slot="text">{{$t('Command-line parameters')}}</div>
       <div slot="content">
-        <x-input
-                :autosize="{minRows:2}"
-                :disabled="isDetails"
-                type="textarea"
-                v-model="mainArgs"
-                :placeholder="$t('Please enter Command-line parameters')"
-                autocomplete="off">
-        </x-input>
+        <el-input
+            :autosize="{minRows:2}"
+            :disabled="isDetails"
+            type="textarea"
+            size="small"
+            v-model="mainArgs"
+            :placeholder="$t('Please enter Command-line parameters')">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
       <div slot="text">{{$t('Other parameters')}}</div>
       <div slot="content">
-        <x-input
-                :disabled="isDetails"
-                :autosize="{minRows:2}"
-                type="textarea"
-                v-model="others"
-                :placeholder="$t('Please enter other parameters')">
-        </x-input>
+        <el-input
+            :disabled="isDetails"
+            :autosize="{minRows:2}"
+            type="textarea"
+            size="small"
+            v-model="others"
+            :placeholder="$t('Please enter other parameters')">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
@@ -174,17 +177,6 @@
         </treeselect>
       </div>
     </m-list-box>
-    <!-- <m-list-box>
-      <div slot="text">{{$t('Resources')}}</div>
-      <div slot="content">
-        <m-resources
-                ref="refResources"
-                @on-resourcesData="_onResourcesData"
-                @on-cache-resourcesData="_onCacheResourcesData"
-                :resource-list="resourceList">
-        </m-resources>
-      </div>
-    </m-list-box> -->
     <m-list-box>
       <div slot="text">{{$t('Custom Parameters')}}</div>
       <div slot="content">
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue
index 94ddaf8..f0542f8 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sql.vue
@@ -36,10 +36,10 @@
           </m-sql-type>
         </div>
         <div v-if="sqlType==0" style="display: inline-block;padding-left: 10px;margin-top: 2px;">
-          <x-checkbox-group v-model="showType">
-            <x-checkbox :label="'TABLE'" :disabled="isDetails">{{$t('TableMode')}}</x-checkbox>
-            <x-checkbox :label="'ATTACHMENT'" :disabled="isDetails">{{$t('Attachment')}}</x-checkbox>
-          </x-checkbox-group>
+          <el-checkbox-group v-model="showType" size="small">
+            <el-checkbox :label="'TABLE'" :disabled="isDetails">{{$t('TableMode')}}</el-checkbox>
+            <el-checkbox :label="'ATTACHMENT'" :disabled="isDetails">{{$t('Attachment')}}</el-checkbox>
+          </el-checkbox-group>
         </div>
       </div>
     </m-list-box>
@@ -47,12 +47,12 @@
       <m-list-box>
         <div slot="text"><strong class='requiredIcon'>*</strong>{{$t('Title')}}</div>
         <div slot="content">
-          <x-input
+          <el-input
             type="input"
+            size="small"
             v-model="title"
-            :placeholder="$t('Please enter the title of email')"
-            autocomplete="off">
-          </x-input>
+            :placeholder="$t('Please enter the title of email')">
+          </el-input>
         </div>
       </m-list-box>
       <m-list-box>
@@ -71,13 +71,13 @@
     <m-list-box v-show="type === 'HIVE'">
       <div slot="text">{{$t('SQL Parameter')}}</div>
       <div slot="content">
-        <x-input
+        <el-input
                 :disabled="isDetails"
                 type="input"
+                size="small"
                 v-model="connParams"
-                :placeholder="$t('Please enter format') + ' key1=value1;key2=value2...'"
-                autocomplete="off">
-        </x-input>
+                :placeholder="$t('Please enter format') + ' key1=value1;key2=value2...'">
+        </el-input>
       </div>
     </m-list-box>
     <m-list-box>
@@ -90,7 +90,7 @@
                   style="opacity: 0;">
           </textarea>
           <a class="ans-modal-box-max">
-            <em class="ans-icon-max" @click="setEditorVal"></em>
+            <em class="el-icon-rank" @click="setEditorVal"></em>
           </a>
         </div>
       </div>
@@ -136,6 +136,12 @@
         </m-statement-list>
       </div>
     </m-list-box>
+    <el-dialog
+      :visible.sync="scriptBoxDialog"
+      append-to-body="true"
+      width="80%">
+      <m-script-box :item="item" @getSriptBoxValue="getSriptBoxValue" @closeAble="closeAble"></m-script-box>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -185,7 +191,9 @@
         // recipients
         receivers: [],
         // copy to
-        receiversCc: []
+        receiversCc: [],
+        item: '',
+        scriptBoxDialog: false
       }
     },
     mixins: [disabledState],
@@ -195,32 +203,11 @@
     },
     methods: {
       setEditorVal() {
-        let self = this
-          let modal = self.$modal.dialog({
-            className: 'scriptModal',
-            closable: false,
-            showMask: true,
-            maskClosable: true,
-            onClose: function() {
-
-            },
-            render (h) {
-              return h(mScriptBox, {
-                on: {
-                  getSriptBoxValue (val) {
-                    editor.setValue(val)
-                  },
-                  closeAble () {
-                    // this.$modal.destroy()
-                    modal.remove()
-                  }
-                },
-                props: {
-                  item: editor.getValue()
-                }
-              })
-            }
-          })
+        this.item = editor.getValue()
+        this.scriptBoxDialog = true
+      },
+      getSriptBoxValue (val) {
+        editor.setValue(val)
       },
       /**
        * return sqlType
@@ -519,7 +506,7 @@
         }
       }
     },
-    components: { mListBox, mDatasource, mLocalParams, mUdfs, mSqlType, mStatementList, mEmail }
+    components: { mListBox, mDatasource, mLocalParams, mUdfs, mSqlType, mStatementList, mEmail, mScriptBox }
   }
 </script>
 <style lang="scss" rel="stylesheet/scss">
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sqoop.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sqoop.vue
index c852f7f..0686a4e 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sqoop.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sqoop.vue
@@ -20,23 +20,14 @@
     <m-list-box>
       <div slot="text">{{$t('Custom Job')}}</div>
       <div slot="content">
-        <x-switch
-          v-model="isCustomTask"
-          @on-click="_onSwitch"
-          :disabled="isDetails"
-        >
-        </x-switch>
+        <el-switch size="small" v-model="isCustomTask" @change="_onSwitch" :disabled="isDetails"></el-switch>
       </div>
     </m-list-box>
     <m-list-box v-show="isCustomTask">
       <div slot="text">{{$t('Custom Script')}}</div>
       <div slot="content">
         <div class="from-mirror">
-          <textarea
-            id="code-shell-mirror"
-            name="code-shell-mirror"
-            style="opacity: 0;">
-          </textarea>
+          <textarea id="code-shell-mirror" name="code-shell-mirror" style="opacity: 0;"></textarea>
         </div>
       </div>
     </m-list-box>
@@ -44,29 +35,25 @@
       <m-list-box>
         <div slot="text">{{$t('Sqoop Job Name')}}</div>
         <div slot="content">
-          <x-input
-            :disabled="isDetails"
-            type="text"
-            v-model="jobName"
-            :placeholder="$t('Please enter Job Name(required)')">
-          </x-input>
+          <el-input :disabled="isDetails" size="small" type="text" v-model="jobName" :placeholder="$t('Please enter Job Name(required)')"></el-input>
         </div>
       </m-list-box>
       <m-list-box>
         <div slot="text">{{$t('Direct')}}</div>
         <div slot="content">
-          <x-select
+          <el-select
             style="width: 130px;"
+            size="small"
             v-model="modelType"
             :disabled="isDetails"
-            @on-change="_handleModelTypeChange">
-            <x-option
+            @change="_handleModelTypeChange">
+            <el-option
               v-for="city in modelTypeList"
               :key="city.code"
               :value="city.code"
               :label="city.code">
-            </x-option>
-          </x-select>
+            </el-option>
+          </el-select>
         </div>
       </m-list-box>
       <m-list-box>
@@ -100,18 +87,19 @@
         <m-list-box>
           <div slot="text">{{$t('Type')}}</div>
           <div slot="content">
-            <x-select
+            <el-select
               style="width: 130px;"
+              size="small"
               v-model="sourceType"
               :disabled="isDetails"
-              @on-change="_handleSourceTypeChange">
-              <x-option
+              @change="_handleSourceTypeChange">
+              <el-option
                 v-for="city in sourceTypeList"
                 :key="city.code"
                 :value="city.code"
                 :label="city.code">
-              </x-option>
-            </x-select>
+              </el-option>
+            </el-select>
           </div>
         </m-list-box>
 
@@ -134,10 +122,10 @@
           <m-list-box>
             <div slot="text">{{$t('ModelType')}}</div>
             <div slot="content">
-              <x-radio-group v-model="srcQueryType" @on-change="_handleQueryType">
-                <x-radio label="0">{{$t('Form')}}</x-radio>
-                <x-radio label="1">SQL</x-radio>
-              </x-radio-group>
+              <el-radio-group v-model="srcQueryType" size="small" @change="_handleQueryType" style="vertical-align: sub;">
+                <el-radio label="0">{{$t('Form')}}</el-radio>
+                <el-radio label="1">SQL</el-radio>
+              </el-radio-group>
             </div>
           </m-list-box>
 
@@ -146,34 +134,36 @@
             <m-list-box>
               <div slot="text">{{$t('Table')}}</div>
               <div slot="content">
-                <x-input
+                <el-input
                   :disabled="isDetails"
                   type="text"
+                  size="small"
                   v-model="sourceMysqlParams.srcTable"
                   :placeholder="$t('Please enter Mysql Table(required)')">
-                </x-input>
+                </el-input>
               </div>
             </m-list-box>
 
             <m-list-box>
               <div slot="text">{{$t('ColumnType')}}</div>
               <div slot="content">
-                <x-radio-group v-model="sourceMysqlParams.srcColumnType">
-                  <x-radio label="0">{{$t('All Columns')}}</x-radio>
-                  <x-radio label="1">{{$t('Some Columns')}}</x-radio>
-                </x-radio-group>
+                <el-radio-group v-model="sourceMysqlParams.srcColumnType" size="small" style="vertical-align: sub;">
+                  <el-radio label="0">{{$t('All Columns')}}</el-radio>
+                  <el-radio label="1">{{$t('Some Columns')}}</el-radio>
+                </el-radio-group>
               </div>
             </m-list-box>
 
             <m-list-box v-if="sourceMysqlParams.srcColumnType=='1'">
               <div slot="text">{{$t('Column')}}</div>
               <div slot="content">
-                <x-input
+                <el-input
                   :disabled="isDetails"
                   type="text"
+                  size="small"
                   v-model="sourceMysqlParams.srcColumns"
                   :placeholder="$t('Please enter Columns (Comma separated)')">
-                </x-input>
+                </el-input>
               </div>
             </m-list-box>
           </template>
@@ -184,45 +174,49 @@
         <m-list-box>
           <div slot="text">{{$t('Database')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="sourceHiveParams.hiveDatabase"
               :placeholder="$t('Please enter Hive Database(required)')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('Table')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="sourceHiveParams.hiveTable"
               :placeholder="$t('Please enter Hive Table(required)')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('Hive partition Keys')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="sourceHiveParams.hivePartitionKey"
               :placeholder="$t('Please enter Hive Partition Keys')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('Hive partition Values')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="sourceHiveParams.hivePartitionValue"
               :placeholder="$t('Please enter Hive Partition Values')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
       </template>
@@ -231,12 +225,13 @@
         <m-list-box>
           <div slot="text">{{$t('Export Dir')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="sourceHdfsParams.exportDir"
               :placeholder="$t('Please enter Export Dir(required)')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
       </template>
@@ -251,7 +246,7 @@
                   style="opacity: 0;">
           </textarea>
           <a class="ans-modal-box-max">
-            <em class="ans-icon-max" @click="setEditorVal"></em>
+            <em class="el-icon-rank" @click="setEditorVal"></em>
           </a>
         </div>
       </div>
@@ -290,91 +285,97 @@
       <m-list-box>
         <div slot="text">{{$t('Type')}}</div>
         <div slot="content">
-          <x-select
+          <el-select
             style="width: 130px;"
+            size="small"
             v-model="targetType"
             :disabled="isDetails">
-            <x-option
+            <el-option
               v-for="city in targetTypeList"
               :key="city.code"
               :value="city.code"
               :label="city.code">
-            </x-option>
-          </x-select>
+            </el-option>
+          </el-select>
         </div>
       </m-list-box>
       <div v-show="targetType==='HIVE'">
         <m-list-box>
           <div slot="text">{{$t('Database')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetHiveParams.hiveDatabase"
               :placeholder="$t('Please enter Hive Database(required)')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('Table')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetHiveParams.hiveTable"
               :placeholder="$t('Please enter Hive Table(required)')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('CreateHiveTable')}}</div>
           <div slot="content">
-            <x-switch v-model="targetHiveParams.createHiveTable"></x-switch>
+            <el-switch v-model="targetHiveParams.createHiveTable" size="small"></el-switch>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('DropDelimiter')}}</div>
           <div slot="content">
-            <x-switch v-model="targetHiveParams.dropDelimiter"></x-switch>
+            <el-switch v-model="targetHiveParams.dropDelimiter" size="small"></el-switch>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('OverWriteSrc')}}</div>
           <div slot="content">
-            <x-switch v-model="targetHiveParams.hiveOverWrite"></x-switch>
+            <el-switch v-model="targetHiveParams.hiveOverWrite" size="small"></el-switch>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('ReplaceDelimiter')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetHiveParams.replaceDelimiter"
               :placeholder="$t('Please enter Replace Delimiter')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('Hive partition Keys')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetHiveParams.hivePartitionKey"
               :placeholder="$t('Please enter Hive Partition Keys')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('Hive partition Values')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetHiveParams.hivePartitionValue"
               :placeholder="$t('Please enter Hive Partition Values')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
       </div>
@@ -382,62 +383,65 @@
         <m-list-box>
           <div slot="text">{{$t('Target Dir')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetHdfsParams.targetPath"
               :placeholder="$t('Please enter Target Dir(required)')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('DeleteTargetDir')}}</div>
           <div slot="content">
-            <x-switch v-model="targetHdfsParams.deleteTargetDir"></x-switch>
+            <el-switch v-model="targetHdfsParams.deleteTargetDir" size="small"></el-switch>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('CompressionCodec')}}</div>
           <div slot="content">
-            <x-radio-group v-model="targetHdfsParams.compressionCodec">
-              <x-radio label="snappy">snappy</x-radio>
-              <x-radio label="lzo">lzo</x-radio>
-              <x-radio label="gzip">gzip</x-radio>
-              <x-radio label="">no</x-radio>
-            </x-radio-group>
+            <el-radio-group v-model="targetHdfsParams.compressionCodec" size="small">
+              <el-radio label="snappy">snappy</el-radio>
+              <el-radio label="lzo">lzo</el-radio>
+              <el-radio label="gzip">gzip</el-radio>
+              <el-radio label="">no</el-radio>
+            </el-radio-group>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('FileType')}}</div>
           <div slot="content">
-            <x-radio-group v-model="targetHdfsParams.fileType">
-              <x-radio label="--as-avrodatafile">avro</x-radio>
-              <x-radio label="--as-sequencefile">sequence</x-radio>
-              <x-radio label="--as-textfile">text</x-radio>
-              <x-radio label="--as-parquetfile">parquet</x-radio>
-            </x-radio-group>
+            <el-radio-group v-model="targetHdfsParams.fileType" size="small">
+              <el-radio label="--as-avrodatafile">avro</el-radio>
+              <el-radio label="--as-sequencefile">sequence</el-radio>
+              <el-radio label="--as-textfile">text</el-radio>
+              <el-radio label="--as-parquetfile">parquet</el-radio>
+            </el-radio-group>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('FieldsTerminated')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetHdfsParams.fieldsTerminated"
               :placeholder="$t('Please enter Fields Terminated')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('LinesTerminated')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetHdfsParams.linesTerminated"
               :placeholder="$t('Please enter Lines Terminated')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
       </div>
@@ -458,71 +462,76 @@
         <m-list-box>
           <div slot="text">{{$t('Table')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetMysqlParams.targetTable"
               :placeholder="$t('Please enter Mysql Table(required)')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('Column')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetMysqlParams.targetColumns"
               :placeholder="$t('Please enter Columns (Comma separated)')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('FieldsTerminated')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetMysqlParams.fieldsTerminated"
               :placeholder="$t('Please enter Fields Terminated')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('LinesTerminated')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetMysqlParams.linesTerminated"
               :placeholder="$t('Please enter Lines Terminated')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box>
           <div slot="text">{{$t('IsUpdate')}}</div>
           <div slot="content">
-            <x-switch v-model="targetMysqlParams.isUpdate"></x-switch>
+            <el-switch v-model="targetMysqlParams.isUpdate" size="small"></el-switch>
           </div>
         </m-list-box>
         <m-list-box v-show="targetMysqlParams.isUpdate">
           <div slot="text">{{$t('UpdateKey')}}</div>
           <div slot="content">
-            <x-input
+            <el-input
               :disabled="isDetails"
               type="text"
+              size="small"
               v-model="targetMysqlParams.targetUpdateKey"
               :placeholder="$t('Please enter Update Key')">
-            </x-input>
+            </el-input>
           </div>
         </m-list-box>
         <m-list-box v-show="targetMysqlParams.isUpdate">
           <div slot="text">{{$t('UpdateMode')}}</div>
           <div slot="content">
-            <x-radio-group v-model="targetMysqlParams.targetUpdateMode">
-              <x-radio label="updateonly">{{$t('OnlyUpdate')}}</x-radio>
-              <x-radio label="allowinsert">{{$t('AllowInsert')}}</x-radio>
-            </x-radio-group>
+            <el-radio-group v-model="targetMysqlParams.targetUpdateMode" size="small">
+              <el-radio label="updateonly">{{$t('OnlyUpdate')}}</el-radio>
+              <el-radio label="allowinsert">{{$t('AllowInsert')}}</el-radio>
+            </el-radio-group>
           </div>
         </m-list-box>
 
@@ -530,13 +539,13 @@
       <m-list-box>
         <div slot="text">{{$t('Concurrency')}}</div>
         <div slot="content">
-          <x-input
+          <el-input
             :disabled="isDetails"
             type="text"
+            size="small"
             v-model="concurrency"
             :placeholder="$t('Please enter Concurrency')">
-
-          </x-input>
+          </el-input>
         </div>
       </m-list-box>
     </template>
@@ -551,6 +560,12 @@
         </m-local-params>
       </div>
     </m-list-box>
+    <el-dialog
+      :visible.sync="scriptBoxDialog"
+      append-to-body="true"
+      width="80%">
+      <m-script-box :item="item" @getSriptBoxValue="getSriptBoxValue" @closeAble="closeAble"></m-script-box>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -696,8 +711,9 @@
           replaceDelimiter:"",
           hivePartitionKey:"",
           hivePartitionValue:""
-
-        }
+        },
+        item: '',
+        scriptBoxDialog: false
       }
     },
     mixins: [disabledState],
@@ -706,32 +722,11 @@
     },
     methods: {
       setEditorVal() {
-        let self = this
-          let modal = self.$modal.dialog({
-            className: 'scriptModal',
-            closable: false,
-            showMask: true,
-            maskClosable: true,
-            onClose: function() {
-
-            },
-            render (h) {
-              return h(mScriptBox, {
-                on: {
-                  getSriptBoxValue (val) {
-                    editor.setValue(val)
-                  },
-                  closeAble () {
-                    // this.$modal.destroy()
-                    modal.remove()
-                  }
-                },
-                props: {
-                  item: editor.getValue()
-                }
-              })
-            }
-          })
+        this.item = editor.getValue()
+        this.scriptBoxDialog = true
+      },
+      getSriptBoxValue (val) {
+        editor.setValue(val)
       },
       _handleQueryType(o){
         this.sourceMysqlParams.srcQueryType = this.srcQueryType
@@ -740,7 +735,7 @@
       },
 
       _handleModelTypeChange(a){
-        this._getSourceTypeList(a.label)
+        this._getSourceTypeList(a)
         this.sourceType = this.sourceTypeList[0].code
         this._handleSourceTypeChange({label: this.sourceType, value: this.sourceType})
       },
@@ -1267,7 +1262,7 @@
         }
       }
     },
-    components: { mListBox, mDatasource, mLocalParams}
+    components: { mListBox, mDatasource, mLocalParams, mScriptBox}
   }
 </script>
 <style lang="scss" rel="stylesheet/scss">
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue
index e96d409..1f59bfc 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/sub_process.vue
@@ -22,19 +22,20 @@
       </div>
       <div class="cont-box">
         <div class="label-box">
-          <x-select
+          <el-select
                   style="width: 100%;"
+                  size="small"
                   filterable
                   v-model="wdiCurr"
                   :disabled="isDetails"
-                  @on-change="_handleWdiChanged">
-            <x-option
-                    v-for="city in processDefinitionList"
-                    :key="city.code"
-                    :value="city.id"
-                    :label="city.code">
-            </x-option>
-          </x-select>
+                  @change="_handleWdiChanged">
+            <el-option
+                  v-for="city in processDefinitionList"
+                  :key="city.code"
+                  :value="city.id"
+                  :label="city.code">
+            </el-option>
+          </el-select>
         </div>
       </div>
     </div>
@@ -77,7 +78,7 @@
        * The selected process defines the upper component name padding
        */
       _handleWdiChanged (o) {
-        this.$emit('on-set-process-name', this._handleName(o.value))
+        this.$emit('on-set-process-name', this._handleName(o))
       },
       /**
        * Return the name according to the process definition id
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/waterdrop.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/waterdrop.vue
index f67ec6d..9d2feb4 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/waterdrop.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/formModel/tasks/waterdrop.vue
@@ -21,22 +21,22 @@
       <div class="clearfix list">
         <span class="sp1">{{$t('Deploy Mode')}}</span>
         <span class="sp2">
-          <x-radio-group v-model="deployMode">
-            <x-radio :label="'client'" :disabled="isDetails"></x-radio>
-            <x-radio :label="'cluster'" :disabled="isDetails"></x-radio>
-            <x-radio :label="'local'" :disabled="isDetails"></x-radio>
-          </x-radio-group>
+          <el-radio-group size="small" v-model="deployMode">
+            <el-radio :label="'client'" :disabled="isDetails"></el-radio>
+            <el-radio :label="'cluster'" :disabled="isDetails"></el-radio>
+            <el-radio :label="'local'" :disabled="isDetails"></el-radio>
+          </el-radio-group>
         </span>
         <span class="sp1 sp3">{{$t('Queue')}}</span>
         <span class="sp4">
-          <x-input
+          <el-input
             :disabled="isDetails"
             type="input"
+            size="small"
             v-model="queue"
             :placeholder="$t('Please enter queue value')"
-            style="width: 60%;"
-            autocomplete="off">
-        </x-input>
+            style="width: 60%;">
+        </el-input>
         </span>
       </div>
     </div>
@@ -45,27 +45,28 @@
       <div class="clearfix list">
         <span class="sp1">{{$t('Master')}}</span>
         <span class="sp4">
-          <x-select
+          <el-select
             style="width: 130px;"
+            size="small"
             v-model="master"
             :disabled="isDetails">
-          <x-option
-            v-for="city in masterType"
-            :key="city.code"
-            :value="city.code"
-            :label="city.code">
-          </x-option>
-          </x-select>
+            <el-option
+              v-for="city in masterType"
+              :key="city.code"
+              :value="city.code"
+              :label="city.code">
+            </el-option>
+          </el-select>
         </span>
         <span v-if="masterUrlState">
-          <x-input
+          <el-input
             :disabled="isDetails"
             type="input"
+            size="small"
             v-model="masterUrl"
             :placeholder="$t('Please Enter Url')"
-            style="width: 60%;"
-            autocomplete="off">
-        </x-input>
+            style="width: 60%;">
+        </el-input>
         </span>
       </div>
     </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/jumpAffirm/index.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/jumpAffirm/index.js
index c1f77f6..9f55265 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/jumpAffirm/index.js
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/jumpAffirm/index.js
@@ -14,10 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 import Vue from 'vue'
-import mAffirm from './jumpAffirm'
 import store from '@/conf/home/store'
+import i18n from '@/module/i18n'
 import router from '@/conf/home/router'
 import { uuid, findComponentDownward } from '@/module/util/'
 
@@ -81,34 +80,18 @@ Affirm.paramVerification = (name) => {
  * Pop-up judgment
  */
 Affirm.isPop = (fn) => {
-  Vue.$modal.dialog({
-    closable: false,
-    showMask: true,
-    escClose: true,
-    className: 'v-modal-custom',
-    transitionName: 'opacityp',
-    render (h) {
-      return h(mAffirm, {
-        on: {
-          ok () {
-            // save
-            findComponentDownward($root, 'dag-chart')._save('affirm').then(() => {
-              fn()
-              Vue.$modal.destroy()
-            }).catch(() => {
-              fn()
-              Vue.$modal.destroy()
-            })
-          },
-          close () {
-            fn()
-            Vue.$modal.destroy()
-          }
-        },
-        props: {
-        }
-      })
-    }
+  Vue.prototype.$confirm(`${i18n.$t('Whether to save the DAG graph')}`, '', {
+    confirmButtonText: `${i18n.$t('Save')}`,
+    cancelButtonText: `${i18n.$t('Cancel')}`,
+    type: 'warning'
+  }).then(() => {
+    findComponentDownward($root, 'dag-chart')._save('affirm').then(() => {
+      fn()
+    }).catch(() => {
+      fn()
+    })
+  }).catch(() => {
+    fn()
   })
 }
 
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js
index 03c3d2d..21f0293 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/jsPlumbHandle.js
@@ -17,7 +17,6 @@
 import 'jquery-ui/ui/widgets/draggable'
 import 'jquery-ui/ui/widgets/droppable'
 import 'jquery-ui/ui/widgets/resizable'
-import Vue from 'vue'
 import _ from 'lodash'
 import i18n from '@/module/i18n'
 import { jsPlumb } from 'jsplumb'
@@ -34,7 +33,6 @@ import {
   rtTargetarrArr,
   computeScale
 } from './util'
-import mStart from '@/conf/home/pages/projects/pages/definition/pages/list/_source/start'
 import multiDrag from './multiDrag'
 
 const JSP = function () {
@@ -88,7 +86,7 @@ JSP.prototype.init = function ({ dag, instance, options }) {
     if (this.config.isClick) {
       this.connectClick(e)
     } else {
-      findComponentDownward(this.dag.$root, 'dag-chart')._createLineLabel({id: e._jsPlumb.overlays.label.canvas.id, sourceId: e.sourceId, targetId: e.targetId})
+      findComponentDownward(this.dag.$root, 'dag-chart')._createLineLabel({ id: e._jsPlumb.overlays.label.canvas.id, sourceId: e.sourceId, targetId: e.targetId })
     }
   })
 
@@ -208,8 +206,8 @@ JSP.prototype.jsonHandle = function ({ largeJson, locations }) {
       taskType: v.type,
       runFlag: v.runFlag,
       nodenumber: locations[v.id].nodenumber,
-      successNode: v.conditionResult === undefined? '' : v.conditionResult.successNode[0],
-      failedNode: v.conditionResult === undefined? '' : v.conditionResult.failedNode[0]
+      successNode: v.conditionResult === undefined ? '' : v.conditionResult.successNode[0],
+      failedNode: v.conditionResult === undefined ? '' : v.conditionResult.failedNode[0]
     }))
 
     // contextmenu event
@@ -280,10 +278,10 @@ JSP.prototype.tasksContextmenu = function (event) {
     const isTwo = store.state.dag.isDetails
 
     const html = [
-      `<a href="javascript:" id="startRunning" class="${isOne ? '' : 'disbled'}"><em class="ans-icon-play"></em><span>${i18n.$t('Start')}</span></a>`,
-      `<a href="javascript:" id="editNodes" class="${isTwo ? 'disbled' : ''}"><em class="ans-icon-edit"></em><span>${i18n.$t('Edit')}</span></a>`,
-      `<a href="javascript:" id="copyNodes" class="${isTwo ? 'disbled' : ''}"><em class="ans-icon-copy"></em><span>${i18n.$t('Copy')}</span></a>`,
-      `<a href="javascript:" id="removeNodes" class="${isTwo ? 'disbled' : ''}"><em class="ans-icon-trash"></em><span>${i18n.$t('Delete')}</span></a>`
+      `<a href="javascript:" id="startRunning" class="${isOne ? '' : 'disbled'}"><em class="el-icon-video-play"></em><span>${i18n.$t('Start')}</span></a>`,
+      `<a href="javascript:" id="editNodes" class="${isTwo ? 'disbled' : ''}"><em class="el-icon-edit-outline"></em><span>${i18n.$t('Edit')}</span></a>`,
+      `<a href="javascript:" id="copyNodes" class="${isTwo ? 'disbled' : ''}"><em class="el-icon-copy-document"></em><span>${i18n.$t('Copy')}</span></a>`,
+      `<a href="javascript:" id="removeNodes" class="${isTwo ? 'disbled' : ''}"><em class="el-icon-delete"></em><span>${i18n.$t('Delete')}</span></a>`
     ]
 
     const operationHtml = () => {
@@ -310,35 +308,7 @@ JSP.prototype.tasksContextmenu = function (event) {
         const name = store.state.dag.name
         const id = router.history.current.params.id
         store.dispatch('dag/getStartCheck', { processDefinitionId: id }).then(res => {
-          const modal = Vue.$modal.dialog({
-            closable: false,
-            showMask: true,
-            escClose: true,
-            className: 'v-modal-custom',
-            transitionName: 'opacityp',
-            render (h) {
-              return h(mStart, {
-                on: {
-                  onUpdate () {
-                    modal.remove()
-                  },
-                  close () {
-                    modal.remove()
-                  }
-                },
-                props: {
-                  item: {
-                    id: id,
-                    name: name
-                  },
-                  startNodeList: $name,
-                  sourceType: 'contextmenu'
-                }
-              })
-            }
-          })
-        }).catch(e => {
-          Vue.$message.error(e.msg || '')
+          this.dag.startRunning({ id: id, name: name }, $name, 'contextmenu')
         })
       })
     }
@@ -370,7 +340,6 @@ JSP.prototype.tasksDblclick = function (e) {
   // Untie event
   if (this.config.isDblclick) {
     const id = $(e.currentTarget.offsetParent).attr('id')
-
     findComponentDownward(this.dag.$root, 'dag-chart')._createNodes({
       id: id,
       type: $(`#${id}`).attr('data-tasks-type')
@@ -499,7 +468,7 @@ JSP.prototype.removeNodes = function ($id) {
 
   // callback onRemoveNodes event
   this.options && this.options.onRemoveNodes && this.options.onRemoveNodes($id)
-  let connects = []
+  const connects = []
   _.map(this.JspInstance.getConnections(), v => {
     connects.push({
       endPointSourceId: v.sourceId,
@@ -604,10 +573,10 @@ JSP.prototype.copyNodes = function ($id) {
 JSP.prototype.handleEventScreen = function ({ item, is }) {
   let screenOpen = true
   if (is) {
-    item.icon = 'ans-icon-min'
+    item.icon = 'el-icon-full-screen'
     screenOpen = true
   } else {
-    item.icon = 'ans-icon-max'
+    item.icon = 'el-icon-rank'
     screenOpen = false
   }
   const $mainLayoutModel = $('.main-layout-model')
@@ -658,7 +627,7 @@ JSP.prototype.saveStore = function () {
         tasks.push(tasksParam)
       }
     })
-    if(store.state.dag.connects.length ===this.JspInstance.getConnections().length) {
+    if (store.state.dag.connects.length === this.JspInstance.getConnections().length) {
       _.map(store.state.dag.connects, u => {
         connects.push({
           endPointSourceId: u.endPointSourceId,
@@ -666,7 +635,7 @@ JSP.prototype.saveStore = function () {
           label: u.label
         })
       })
-    } else if(store.state.dag.connects.length>0 && store.state.dag.connects.length < this.JspInstance.getConnections().length) {
+    } else if (store.state.dag.connects.length > 0 && store.state.dag.connects.length < this.JspInstance.getConnections().length) {
       _.map(this.JspInstance.getConnections(), v => {
         connects.push({
           endPointSourceId: v.sourceId,
@@ -676,12 +645,12 @@ JSP.prototype.saveStore = function () {
       })
       _.map(store.state.dag.connects, u => {
         _.map(connects, v => {
-          if(u.label && u.endPointSourceId === v.endPointSourceId && u.endPointTargetId===v.endPointTargetId) {
+          if (u.label && u.endPointSourceId === v.endPointSourceId && u.endPointTargetId === v.endPointTargetId) {
             v.label = u.label
           }
         })
       })
-    } else if(store.state.dag.connects.length===0) {
+    } else if (store.state.dag.connects.length === 0) {
       _.map(this.JspInstance.getConnections(), v => {
         connects.push({
           endPointSourceId: v.sourceId,
@@ -690,7 +659,7 @@ JSP.prototype.saveStore = function () {
         })
       })
     }
-    
+
     _.map(tasksAll(), v => {
       locations[v.id] = {
         name: v.name,
@@ -783,7 +752,7 @@ JSP.prototype.jspBackfill = function ({ connects, locations, largeJson }) {
     _.map(connects, v => {
       let sourceId = v.endPointSourceId.split('-')
       let targetId = v.endPointTargetId.split('-')
-      let labels = v.label
+      const labels = v.label
       if (sourceId.length === 4 && targetId.length === 4) {
         sourceId = `${sourceId[0]}-${sourceId[1]}-${sourceId[2]}`
         targetId = `${targetId[0]}-${targetId[1]}-${targetId[2]}`
@@ -791,24 +760,24 @@ JSP.prototype.jspBackfill = function ({ connects, locations, largeJson }) {
         sourceId = v.endPointSourceId
         targetId = v.endPointTargetId
       }
-      
-      if($(`#${sourceId}`).attr('data-tasks-type') === 'CONDITIONS' && $(`#${sourceId}`).attr('data-successnode') === $(`#${targetId}`).find('.name-p').text()) {
+
+      if ($(`#${sourceId}`).attr('data-tasks-type') === 'CONDITIONS' && $(`#${sourceId}`).attr('data-successnode') === $(`#${targetId}`).find('.name-p').text()) {
         this.JspInstance.connect({
           source: sourceId,
           target: targetId,
           type: 'basic',
           paintStyle: { strokeWidth: 2, stroke: '#4caf50' },
-          HoverPaintStyle: {stroke: '#ccc', strokeWidth: 3},
-          overlays:[["Label", { label: labels} ]]
+          HoverPaintStyle: { stroke: '#ccc', strokeWidth: 3 },
+          overlays: [['Label', { label: labels }]]
         })
-      } else if($(`#${sourceId}`).attr('data-tasks-type') === 'CONDITIONS' && $(`#${sourceId}`).attr('data-failednode') === $(`#${targetId}`).find('.name-p').text()) {
+      } else if ($(`#${sourceId}`).attr('data-tasks-type') === 'CONDITIONS' && $(`#${sourceId}`).attr('data-failednode') === $(`#${targetId}`).find('.name-p').text()) {
         this.JspInstance.connect({
           source: sourceId,
           target: targetId,
           type: 'basic',
           paintStyle: { strokeWidth: 2, stroke: '#252d39' },
-          HoverPaintStyle: {stroke: '#ccc', strokeWidth: 3},
-          overlays:[["Label", { label: labels} ]]
+          HoverPaintStyle: { stroke: '#ccc', strokeWidth: 3 },
+          overlays: [['Label', { label: labels }]]
         })
       } else {
         this.JspInstance.connect({
@@ -816,8 +785,8 @@ JSP.prototype.jspBackfill = function ({ connects, locations, largeJson }) {
           target: targetId,
           type: 'basic',
           paintStyle: { strokeWidth: 2, stroke: '#2d8cf0' },
-          HoverPaintStyle: {stroke: '#ccc', strokeWidth: 3},
-          overlays:[["Label", { label: labels} ]]
+          HoverPaintStyle: { stroke: '#ccc', strokeWidth: 3 },
+          overlays: [['Label', { label: labels }]]
         })
       }
     })
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/util.js b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/util.js
index f5aacf2..176f852 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/util.js
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/plugIn/util.js
@@ -37,7 +37,7 @@ const saveTargetarr = (valId, domId) => {
 }
 
 const rtBantpl = () => {
-  return `<em class="ans-icon-forbidden" data-toggle="tooltip" data-html="true" data-container="body" data-placement="left" title="${i18n.$t('Prohibition execution')}"></em>`
+  return `<em class="fa fa-ban" data-toggle="tooltip" data-html="true" data-container="body" data-placement="left" title="${i18n.$t('Prohibition execution')}"></em>`
 }
 
 /**
@@ -100,13 +100,13 @@ const setSvgColor = (e, color) => {
   // Traverse clear all colors
   $('.jtk-connector').each((i, o) => {
     _.map($(o)[0].childNodes, v => {
-      if($(v).attr('fill') ==='#ccc') {
+      if ($(v).attr('fill') === '#ccc') {
         $(v).attr('fill', '#2d8cf0')
       }
-      if($(v).attr('fill') ==='#4caf50') {
-        $(v).attr('fill','#4caf50').attr('stroke', '#4caf50').attr('stroke-width', 2)
+      if ($(v).attr('fill') === '#4caf50') {
+        $(v).attr('fill', '#4caf50').attr('stroke', '#4caf50').attr('stroke-width', 2)
         $(v).prev().attr('stroke', '#4caf50').attr('stroke-width', 2)
-      } else if($(v).attr('fill') ==='#252d39') {
+      } else if ($(v).attr('fill') === '#252d39') {
         $(v).attr('stroke', '#252d39').attr('stroke-width', 2)
         $(v).prev().attr('stroke', '#252d39').attr('stroke-width', 2)
       } else {
@@ -117,7 +117,7 @@ const setSvgColor = (e, color) => {
 
   // Add color to the selection
   _.map($(e.canvas)[0].childNodes, (v, i) => {
-    if($(v).attr('fill') ==='#2d8cf0') {
+    if ($(v).attr('fill') === '#2d8cf0') {
       $(v).attr('fill', '#ccc')
     }
     $(v).attr('stroke', '#ccc')
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/startingParam/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/startingParam/index.vue
index 516f03b..07b2774 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/startingParam/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/startingParam/index.vue
@@ -18,7 +18,7 @@
   <div class="starting-params-dag-index">
     <template v-if="isView && isActive">
        <div class="box">
-         <p class="box-hd"><em class="fa ans-icon-arrow-circle-right"></em><strong>{{$t('Startup parameter')}}</strong></p>
+         <p class="box-hd"><em class="fa fa-chevron-circle-right"></em><strong>{{$t('Startup parameter')}}</strong></p>
          <ul class="box-bd">
            <li><span class="tab">{{$t('Startup type')}}:</span><span class="content">{{_rtRunningType(startupParam.commandType)}}</span></li>
            <li><span class="tab">{{$t('Complement range')}}:</span><span class="content" v-if="startupParam.commandParam && startupParam.commandParam.complementStartDate">{{startupParam.commandParam.complementStartDate}}-{{startupParam.commandParam.complementEndDate}}</span><span class="content" v-else>-</span></li>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/udp/_source/selectTenant.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/udp/_source/selectTenant.vue
index 33635e8..bb98bec 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/udp/_source/selectTenant.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/udp/_source/selectTenant.vue
@@ -15,18 +15,19 @@
  * limitations under the License.
  */
 <template>
-  <x-select
+  <el-select
           :disabled="isDetails"
-          @on-change="_onChange"
+          @change="_onChange"
           v-model="value"
+          size="small"
           style="width: 180px">
-    <x-option
+    <el-option
             v-for="item in itemList"
             :key="item.id"
             :value="item.id"
             :label="item.tenantCode">
-    </x-option>
-  </x-select>
+    </el-option>
+  </el-select>
 </template>
 <script>
   import disabledState from '@/module/mixin/disabledState'
@@ -60,8 +61,8 @@
     },
     methods: {
       _onChange (o) {
-        this.value = o.value
-        this.$emit('tenantSelectEvent', o.value)
+        this.value = o
+        this.$emit('tenantSelectEvent', o)
       }
     },
     watch: {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/udp/udp.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/udp/udp.vue
index 18cf86a..b4ce039 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/udp/udp.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/udp/udp.vue
@@ -17,28 +17,26 @@
 <template>
   <div class="udp-model">
     <div class="scrollbar contpi-boxt">
-      <div class="title">
-        <span>{{$t('Set the DAG diagram name')}}</span>
-      </div>
-
       <div>
-        <x-input
+        <el-input
                 type="text"
+                size="small"
                 v-model="name"
                 :disabled="router.history.current.name === 'projects-instance-details'"
                 :placeholder="$t('Please enter name (required)')">
-        </x-input>
+        </el-input>
       </div>
 
       <template v-if="router.history.current.name !== 'projects-instance-details'">
         <div style="padding-top: 12px;">
-          <x-input
+          <el-input
                   type="textarea"
+                  size="small"
                   v-model="description"
                   :autosize="{minRows:2}"
                   :placeholder="$t('Please enter description(optional)')"
                   autocomplete="off">
-          </x-input>
+          </el-input>
         </div>
       </template>
 
@@ -49,14 +47,14 @@
       <div class="title" style="padding-top: 6px;">
         <span class="text-b">{{$t('warning of timeout')}}</span>
         <span style="padding-left: 6px;">
-          <x-switch v-model="checkedTimeout"></x-switch>
+          <el-switch v-model="checkedTimeout" size="small"></el-switch>
         </span>
       </div>
       <div class="content" style="padding-bottom: 10px;" v-if="checkedTimeout">
         <span>
-          <x-input v-model="timeout" style="width: 160px;" maxlength="9">
+          <el-input v-model="timeout" style="width: 160px;" maxlength="9" size="small">
             <span slot="append">{{$t('Minute')}}</span>
-          </x-input>
+          </el-input>
         </span>
       </div>
 
@@ -78,11 +76,11 @@
       <div class="submit">
         <template v-if="router.history.current.name === 'projects-instance-details'">
           <div class="lint-pt">
-            <x-checkbox v-model="syncDefine">{{$t('Whether to update the process definition')}}</x-checkbox>
+            <el-checkbox v-model="syncDefine" size="small">{{$t('Whether to update the process definition')}}</el-checkbox>
           </div>
         </template>
-        <x-button type="text" @click="close()"> {{$t('Cancel')}} </x-button>
-        <x-button type="primary" shape="circle" :disabled="isDetails" @click="ok()">{{$t('Add')}}</x-button>
+        <el-button type="text" size="small" @click="close()"> {{$t('Cancel')}} </el-button>
+        <el-button type="primary" size="small" round :disabled="isDetails" @click="ok()">{{$t('Add')}}</el-button>
       </div>
     </div>
   </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/variable/variablesView.vue b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/variable/variablesView.vue
index 7209c4d..23e4bdc 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/variable/variablesView.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/dag/_source/variable/variablesView.vue
@@ -18,23 +18,23 @@
   <div class="variable-model">
     <template v-if="list">
       <div class="list">
-        <div class="name"><em class="fa ans-icon-code"></em><strong style="padding-top: 3px;display: inline-block">{{$t('Global parameters')}}</strong></div>
+        <div class="name"><em class="fa fa-tasks"></em><strong style="padding-top: 3px;display: inline-block">{{$t('Global parameters')}}</strong></div>
         <div class="var-cont">
           <template v-for="(item,$index) in list.globalParams">
-            <x-button
-                    size="xsmall"
-                    type="ghost"
+            <el-button
+                    size="mini"
+                    type="primary"
                     @click="_copy('gbudp-' + $index)"
                     :key="$index"
                     :data-clipboard-text="item.prop + ' = ' +item.value"
                     :class="'gbudp-' + $index">
               <strong style="color: #2A455B;">{{item.prop}}</strong> = {{item.value}}
-            </x-button>
+            </el-button>
           </template>
         </div>
       </div>
       <div class="list" style="height: 30px;">
-        <div class="name"><em class="fa ans-icon-code"></em><strong style="padding-top: 3px;display: inline-block">{{$t('Local parameters')}}</strong></div>
+        <div class="name"><em class="fa fa-code"></em><strong style="padding-top: 3px;display: inline-block">{{$t('Local parameters')}}</strong></div>
         <div class="var-cont">
           &nbsp;
         </div>
@@ -43,7 +43,7 @@
         <div class="task-name">Task({{$index}}):{{key}}</div>
         <div class="var-cont" v-if="item.localParamsList.length">
           <template v-for="(el,index) in item.localParamsList">
-            <x-button size="xsmall" type="ghost" :key="index" @click="_copy('copy-part-' + index)" :data-clipboard-text="_rtClipboard(el,item.taskType)" :class="'copy-part-' + index">
+            <el-button size="mini" type="primary" :key="index" @click="_copy('copy-part-' + index)" :data-clipboard-text="_rtClipboard(el,item.taskType)" :class="'copy-part-' + index">
               <span v-for="(e,k,i) in el" :key="i">
                 <template v-if="item.taskType === 'SQL' || item.taskType === 'PROCEDURE'">
                   <template v-if="(k !== 'direct' && k !== 'type')">
@@ -54,7 +54,7 @@
                   <strong style="color: #2A455B;">{{k}}</strong> = {{e}}
                 </template>
               </span>
-            </x-button>
+            </el-button>
           </template>
         </div>
       </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/_source/createDataSource.vue b/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/_source/createDataSource.vue
index adf4753..f578f02 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/_source/createDataSource.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/_source/createDataSource.vue
@@ -16,139 +16,136 @@
  */
 <template>
   <div class="datasource-popup-model">
-    <div class="top-p">
-      <span>{{item ? `${$t('Edit')}` : `${$t('Create')}`}}{{`${$t('Datasource')}`}}</span>
-    </div>
     <div class="content-p">
       <div class="create-datasource-model">
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('Datasource')}}</template>
-          <template slot="content">
-              <x-select style="width: 100%;" v-model="type">
-                <x-option v-for="item in datasourceTypeList" :key="item.value" :value="item.value" :label="item.label">
-                </x-option>
-              </x-select>
+          <template slot="content" size="small">
+              <el-select style="width: 100%;" v-model="type">
+                <el-option v-for="item in datasourceTypeList" :key="item.value" :value="item.value" :label="item.label">
+                </el-option>
+              </el-select>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('Datasource Name')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="input"
                     v-model="name"
                     maxlength="60"
-                    :placeholder="$t('Please enter datasource name')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter datasource name')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name">{{$t('Description')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="textarea"
                     v-model="note"
-                    :placeholder="$t('Please enter description')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter description')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('IP')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="input"
                     v-model="host"
                     maxlength="60"
-                    :placeholder="$t('Please enter IP')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter IP')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('Port')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="input"
                     v-model="port"
-                    :placeholder="$t('Please enter port')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter port')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f :class="{hidden:showPrincipal}">
           <template slot="name"><strong>*</strong>Principal</template>
           <template slot="content">
-            <x-input
+            <el-input
               type="input"
               v-model="principal"
-              :placeholder="$t('Please enter Principal')"
-              autocomplete="off">
-            </x-input>
+              size="small"
+              :placeholder="$t('Please enter Principal')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('User Name')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="input"
                     v-model="userName"
                     maxlength="60"
-                    :placeholder="$t('Please enter user name')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter user name')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name">{{$t('Password')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="password"
                     v-model="password"
-                    :placeholder="$t('Please enter your password')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter your password')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name"><strong :class="{hidden:showdDatabase}">*</strong>{{$t('Database Name')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="input"
                     v-model="database"
                     maxlength="60"
-                    :placeholder="$t('Please enter database name')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter database name')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f v-if="showConnectType">
           <template slot="name"><strong>*</strong>{{$t('Oracle Connect Type')}}</template>
           <template slot="content">
-            <x-radio-group v-model="connectType" size="small">
-              <x-radio :label="'ORACLE_SERVICE_NAME'">{{$t('Oracle Service Name')}}</x-radio>
-              <x-radio :label="'ORACLE_SID'">{{$t('Oracle SID')}}</x-radio>
-            </x-radio-group>
+            <el-radio-group v-model="connectType" size="small" style="vertical-align: sub;">
+              <el-radio :label="'ORACLE_SERVICE_NAME'">{{$t('Oracle Service Name')}}</el-radio>
+              <el-radio :label="'ORACLE_SID'">{{$t('Oracle SID')}}</el-radio>
+            </el-radio-group>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name">{{$t('jdbc connect parameters')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="textarea"
                     v-model="other"
                     :autosize="{minRows:2}"
-                    :placeholder="_rtOtherPlaceholder()"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="_rtOtherPlaceholder()">
+            </el-input>
           </template>
         </m-list-box-f>
       </div>
     </div>
     <div class="bottom-p">
-      <x-button type="text" @click="_close()"> {{$t('Cancel')}} </x-button>
-      <x-button type="success" shape="circle" @click="_testConnect()" :loading="testLoading">{{testLoading ? 'Loading...' : $t('Test Connect')}}</x-button>
-      <x-button type="primary" shape="circle" :loading="spinnerLoading" @click="_ok()">{{spinnerLoading ? 'Loading...' :item ? `${$t('Edit')}` : `${$t('Submit')}`}} </x-button>
+      <el-button type="text" ize="mini" @click="_close()"> {{$t('Cancel')}} </el-button>
+      <el-button type="success" size="mini" round @click="_testConnect()" :loading="testLoading">{{testLoading ? 'Loading...' : $t('Test Connect')}}</el-button>
+      <el-button type="primary" size="mini" round :loading="spinnerLoading" @click="_ok()">{{spinnerLoading ? 'Loading...' :item ? `${$t('Edit')}` : `${$t('Submit')}`}} </el-button>
     </div>
   </div>
 </template>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/_source/list.vue
index a496fe8..eaed955 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/_source/list.vue
@@ -17,97 +17,52 @@
 <template>
   <div class="list-model">
     <div class="table-box">
-      <table class="fixed">
-        <tr>
-          <th scope="col">
-            <span>{{$t('#')}}</span>
-          </th>
-          <th scope="col">
-            <span>{{$t('Datasource Name')}}</span>
-          </th>
-          <th scope="col" width="120">
-            <span>{{$t('Datasource Type')}}</span>
-          </th>
-          <th scope="col" width="100">
-            <span>{{$t('Datasource Parameter')}}</span>
-          </th>
-          <th scope="col">
-            <span>{{$t('Description')}}</span>
-          </th>
-          <th scope="col" width="150">
-            <span>{{$t('Create Time')}}</span>
-          </th>
-          <th scope="col" width="150">
-            <span>{{$t('Update Time')}}</span>
-          </th>
-          <th scope="col" width="80">
-            <span>{{$t('Operation')}}</span>
-          </th>
-        </tr>
-        <tr v-for="(item, $index) in list" :key="$index">
-          <td>
-            <span>{{parseInt(pageNo === 1 ? ($index + 1) : (($index + 1) + (pageSize * (pageNo - 1))))}}</span>
-          </td>
-          <td>
-            <span class="ellipsis">
-              {{item.name}}
-            </span>
-          </td>
-          <td>
-            <span>{{item.type}}</span>
-          </td>
-          <td>
-            <m-tooltips-JSON :JSON="JSON.parse(item.connectionParams)" :id="item.id">
-              <span slot="reference">
-                <a href="javascript:" class="links" style="font-size: 12px;">{{$t('Click to view')}}</a>
-              </span>
+      <el-table :data="list" size="mini" style="width: 100%">
+        <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+        <el-table-column prop="name" :label="$t('Datasource Name')"></el-table-column>
+        <el-table-column prop="type" :label="$t('Datasource Type')"></el-table-column>
+        <el-table-column :label="$t('Datasource Parameter')">
+          <template slot-scope="scope">
+            <div>
+              <m-tooltips-JSON :JSON="JSON.parse(scope.row.connectionParams)" :id="scope.row.id">
+                <span slot="reference">
+                  <el-button size="small" type="text">{{$t('Click to view')}}</el-button>
+                </span>
             </m-tooltips-JSON>
-          </td>
-          <td>
-            <span v-if="item.note" class="ellipsis" v-tooltip.large.top.start.light="{text: item.note, maxWidth: '500px'}">{{item.note}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.createTime">{{item.createTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.updateTime">{{item.updateTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <x-button
-                    type="info"
-                    shape="circle"
-                    size="xsmall"
-                    data-toggle="tooltip"
-                    :title="$t('Edit')"
-                    icon="ans-icon-edit"
-                    @click="_edit(item)">
-            </x-button>
-            <x-poptip
-                    :ref="'poptip-delete-' + $index"
-                    placement="bottom-end"
-                    width="90">
-              <p>{{$t('Delete?')}}</p>
-              <div style="text-align: right; margin: 0;padding-top: 4px;">
-                <x-button type="text" size="xsmall" shape="circle" @click="_closeDelete($index)">{{$t('Cancel')}}</x-button>
-                <x-button type="primary" size="xsmall" shape="circle" @click="_delete(item,$index)">{{$t('Confirm')}}</x-button>
-              </div>
-              <template slot="reference">
-                <x-button
-                        type="error"
-                        shape="circle"
-                        size="xsmall"
-                        icon="ans-icon-trash"
-                        data-toggle="tooltip"
-                        :title="$t('delete')">
-                </x-button>
-              </template>
-            </x-poptip>
-          </td>
-        </tr>
-      </table>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="description" :label="$t('Description')" width="200"></el-table-column>
+        <el-table-column :label="$t('Create Time')" min-width="120">
+          <template slot-scope="scope">
+            <span>{{scope.row.createTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Update Time')" min-width="120">
+          <template slot-scope="scope">
+            <span>{{scope.row.updateTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Operation')" width="150">
+          <template slot-scope="scope">
+            <el-tooltip :content="$t('Edit')" placement="top" :enterable="false">
+              <span><el-button type="primary" size="mini" icon="el-icon-edit-outline" @click="_edit(scope.row)" circle></el-button></span>
+            </el-tooltip>
+            <el-tooltip :content="$t('delete')" placement="top" :enterable="false">
+              <el-popconfirm
+                :confirmButtonText="$t('Confirm')"
+                :cancelButtonText="$t('Cancel')"
+                icon="el-icon-info"
+                iconColor="red"
+                :title="$t('Delete?')"
+                @onConfirm="_delete(scope.row,scope.row.id)"
+              >
+                <el-button type="danger" size="mini" icon="el-icon-delete" circle slot="reference"></el-button>
+              </el-popconfirm>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+      </el-table>
     </div>
   </div>
 </template>
@@ -135,16 +90,9 @@
     methods: {
       ...mapActions('datasource', ['deleteDatasource']),
       /**
-       * Close delete popup layer
-       */
-      _closeDelete (i) {
-        this.$refs[`poptip-delete-${i}`][0].doClose()
-      },
-      /**
        * Delete current line
        */
       _delete (item, i) {
-        this.$refs[`poptip-delete-${i}`][0].doClose()
         this.deleteDatasource({
           id: item.id
         }).then(res => {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/index.vue
index e843558..1c5e41e 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/datasource/pages/list/index.vue
@@ -19,7 +19,14 @@
     <template slot="conditions">
       <m-conditions @on-conditions="_onConditions">
         <template slot="button-group">
-          <x-button type="ghost" size="small" @click="_create('')">{{$t('Create Datasource')}}</x-button>
+          <el-button size="mini" @click="_create('')">{{$t('Create Datasource')}}</el-button>
+          <el-dialog
+            :title="item ?($t('Edit')+$t('Datasource')) : ($t('Create')+$t('Datasource'))"
+            :visible.sync="dialogVisible"
+            width="65%"
+            :append-to-body="true">
+            <m-create-data-source :item="item" @onUpdate="onUpdate" @close="close"></m-create-data-source>
+          </el-dialog>
         </template>
       </m-conditions>
     </template>
@@ -27,7 +34,16 @@
       <template v-if="datasourcesList.length || total>0">
         <m-list @on-update="_onUpdate" :datasources-list="datasourcesList" :page-no="searchParams.pageNo" :page-size="searchParams.pageSize"></m-list>
         <div class="page-box">
-          <x-page :current="parseInt(searchParams.pageNo)" :total="total" :page-size="searchParams.pageSize" show-elevator @on-change="_page" show-sizer :page-size-options="[10,30,50]" @on-size-change="_pageSize"></x-page>
+          <el-pagination
+            background
+            @current-change="_page"
+            @size-change="_pageSize"
+            :page-size="searchParams.pageSize"
+            :current-page.sync="searchParams.pageNo"
+            :page-sizes="[10, 30, 50]"
+            layout="sizes, prev, pager, next, jumper"
+            :total="total">
+          </el-pagination>
         </div>
       </template>
       <template v-if="!datasourcesList.length && total<=0">
@@ -65,8 +81,11 @@
           // Number of pages
           pageNo: 1,
           // Search value
-          searchVal: ''
-        }
+          searchVal: '',
+          
+        },
+        dialogVisible: false,
+        item: {},
       }
     },
     mixins: [listUrlParamHandle],
@@ -77,30 +96,15 @@
        * create data source
        */
       _create (item) {
-        let self = this
-        let modal = this.$modal.dialog({
-          closable: false,
-          showMask: true,
-          escClose: true,
-          className: 'v-modal-custom',
-          transitionName: 'opacityp',
-          render (h) {
-            return h(mCreateDataSource, {
-              on: {
-                onUpdate () {
-                  self._debounceGET('false')
-                  modal.remove()
-                },
-                close () {
-                  modal.remove()
-                }
-              },
-              props: {
-                item: item
-              }
-            })
-          }
-        })
+        this.item = item
+        this.dialogVisible = true
+      },
+      onUpdate () {
+        this._debounceGET('false')
+        this.dialogVisible = false
+      },
+      close () {
+        this.dialogVisible = false
       },
       /**
        * page
@@ -151,6 +155,6 @@
     },
     mounted () {
     },
-    components: { mList, mConditions, mSpin, mListConstruction, mNoData }
+    components: { mList, mConditions, mSpin, mListConstruction, mNoData, mCreateDataSource }
   }
 </script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/home/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/home/index.vue
index 2c8e188..6f7d5ae 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/home/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/home/index.vue
@@ -25,7 +25,7 @@ export default {
   name: 'home',
   components: { mProjectHome, mListConstruction },
   mounted() {
-    this.$modal.destroy()
+    
   },
 }
 </script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/index.vue
index 6a02b09..c1ad81f 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/index.vue
@@ -26,7 +26,7 @@
   export default {
     name: 'monitor-index',
     mounted() {
-      this.$modal.destroy()
+      
     },
     components: { mSecondaryMenu }
   }
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/zookeeperDirectories.vue b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/zookeeperDirectories.vue
index 1201cb5..ca4f6ad 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/zookeeperDirectories.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/zookeeperDirectories.vue
@@ -21,25 +21,10 @@
     </div>
 
     <div class="table-box" v-if="zkDirectories.length > 0">
-      <table class="fixed">
-        <caption><!-- placeHolder --></caption>
-        <tr>
-          <th scope="col" style="min-width: 40px">
-            <span>#</span>
-          </th>
-          <th scope="col" style="min-width: 40px">
-            <span>{{$t('zkDirectory')}}</span>
-          </th>
-        </tr>
-        <tr v-for="(item, $index) in zkDirectories" :key="item.id">
-          <td>
-            <span>{{$index + 1}}</span>
-          </td>
-          <td>
-            <span>{{item.zkDirectory}}</span>
-          </td>
-        </tr>
-      </table>
+      <el-table :data="zkDirectories" size="mini" style="width: 100%">
+        <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+        <el-table-column prop="zkDirectory" :label="$t('zkDirectory')"></el-table-column>
+      </el-table>
     </div>
 
     <div v-if="zkDirectories.length === 0">
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/zookeeperList.vue b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/zookeeperList.vue
index de187dd..88fcfb0 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/zookeeperList.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/_source/zookeeperList.vue
@@ -17,92 +17,32 @@
 <template>
   <div class="list-model zookeeper-list">
     <div class="table-box">
-      <table>
-        <tr>
-          <th>
-            <span>{{$t('#')}}</span>
-          </th>
-          <th>
-            <span>{{$t('host')}}</span>
-          </th>
-          <th>
-            <span>{{$t('Number of connections')}}</span>
-          </th>
-          <th>
-            <span>watches {{$t('Number')}}</span>
-          </th>
-          <th>
-            <span>{{$t('Sent')}}</span>
-          </th>
-          <th>
-            <span>{{$t('Received')}}</span>
-          </th>
-          <th>
-            <span>leader/follower</span>
-          </th>
-          <th>
-            <span>{{$t('Min latency')}}</span>
-          </th>
-          <th>
-            <span>{{$t('Avg latency')}}</span>
-          </th>
-          <th>
-            <span>{{$t('Max latency')}}</span>
-          </th>
-          <th>
-            <span>{{$t('Node count')}}</span>
-          </th>
-          <th>
-            <span>{{$t('Query time')}}</span>
-          </th>
-          <th style="text-align: center">
-            <span>{{$t('Node self-test status')}}</span>
-          </th>
-        </tr>
-        <tr v-for="(item, $index) in list" :key="$index">
-          <td>
-            <span>{{$index + 1}}</span>
-          </td>
-          <td>
-            <span>
-              {{item.hostname}}
-            </span>
-          </td>
-          <td><span>{{item.connections}}</span></td>
-          <td>
-            <span>{{item.watches}}</span>
-          </td>
-          <td>
-            <span>{{item.sent}}</span>
-          </td>
-          <td>
-            <span>{{item.received}}</span>
-          </td>
-          <td><span>{{item.mode}}</span></td>
-          <td>
-            <span>{{item.minLatency}}</span>
-          </td>
-          <td>
-            <span>{{item.avgLatency}}</span>
-          </td>
-          <td>
-            <span>{{item.maxLatency}}</span>
-          </td>
-          <td>
-            <span>{{item.nodeCount}}</span>
-          </td>
-          <td>
-            <span v-if="item.date">{{item.date | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
+      <el-table :data="list" size="mini" style="width: 100%">
+        <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+        <el-table-column prop="hostname" :label="$t('host')" min-width="130"></el-table-column>
+        <el-table-column prop="connections" :label="$t('Number of connections')"></el-table-column>
+        <el-table-column prop="watches" :label="'watches'+$t('Number')"></el-table-column>
+        <el-table-column prop="sent" :label="$t('Sent')"></el-table-column>
+        <el-table-column prop="received" :label="$t('Received')"></el-table-column>
+        <el-table-column prop="mode" label="leader/follower"></el-table-column>
+        <el-table-column prop="minLatency" :label="$t('Min latency')"></el-table-column>
+        <el-table-column prop="avgLatency" :label="$t('Avg latency')"></el-table-column>
+        <el-table-column prop="maxLatency" :label="$t('Max latency')"></el-table-column>
+        <el-table-column prop="nodeCount" :label="$t('Node count')"></el-table-column>
+        <el-table-column :label="$t('Query time')" min-width="130">
+          <template slot-scope="scope">
+            <span>{{scope.row.date | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Node self-test status')" min-width="90">
+          <template slot-scope="scope">
             <span class="state">
-              <em class="ans-icon-success-solid success" v-if="item.state"></em>
-              <em class="ans-icon-fail-solid error" v-else></em>
+              <em class="el-icon-success success" v-if="scope.row.state"></em>
+              <em class="el-icon-error error" v-else></em>
             </span>
-          </td>
-        </tr>
-      </table>
+          </template>
+        </el-table-column>
+      </el-table>
     </div>
   </div>
 </template>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/apiserver.vue b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/apiserver.vue
index 41cd420..4241bbf 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/apiserver.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/apiserver.vue
@@ -48,9 +48,3 @@
     components: {}
   }
 </script>
-
-<style lang="scss" rel="stylesheet/scss">
-  .apiserver-model {
-
-  }
-</style>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/db.vue b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/db.vue
index 873cd4a..123d47b 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/db.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/db.vue
@@ -30,8 +30,8 @@
             </div>
             <div class="value-p">
               <span class="state">
-                <em class="ans-icon-success-solid success" v-if="item.state"></em>
-                <em class="ans-icon-fail-solid error" v-else></em>
+                <em class="el-icon-success success" v-if="item.state"></em>
+                <em class="el-icon-error error" v-else></em>
               </span>
             </div>
             <div class="text-1">{{$t('Health status')}}</div>
@@ -59,19 +59,6 @@
             <div class="text-1">{{$t('Threads connections')}}</div>
           </div>
         </div>
-        <!-- <div class="col-md-2">
-            <div class="text-num-model text">
-              <div class="title">
-                <span>{{$t('Max used connections')}}</span>
-              </div>
-              <div class="value-p">
-                <strong :style="{color:color[2]}">{{item.maxUsedConnections}}</strong>
-              </div>
-              <div class="text-1">
-                {{$t('Max used connections')}}
-              </div>
-            </div>
-        </div>-->
         <div class="col-md-3">
           <div class="text-num-model text">
             <div class="title">
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue
index 609987e..c4e2abd 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/monitor/pages/servers/worker.vue
@@ -57,6 +57,11 @@
           </div>
         </div>
       </div>
+      <el-drawer
+        :visible.sync="drawer"
+        :with-header="false">
+        <zookeeper-directories-popup :zkDirectories = zkDirectories></zookeeper-directories-popup>
+      </el-drawer>
       <div v-if="!workerList.length">
         <m-no-data></m-no-data>
       </div>
@@ -81,29 +86,21 @@
       return {
         isLoading: false,
         workerList: [],
-        color: themeData.color
+        color: themeData.color,
+        drawer: false,
+        zkDirectories: []
       }
     },
     props: {},
     methods: {
       ...mapActions('monitor', ['getWorkerData']),
       _showZkDirectories (item) {
-        let zkDirectories = []
         item.zkDirectories.forEach(zkDirectory => {
-          zkDirectories.push({
+          this.zkDirectories.push({
             zkDirectory: zkDirectory
           })
         })
-        this.$drawer({
-          direction: 'right',
-          render (h) {
-            return h(zookeeperDirectoriesPopup, {
-              props: {
-                zkDirectories: zkDirectories
-              }
-            })
-          }
-        })
+        this.drawer = true
       }
     },
     watch: {},
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/conditions/instance/processInstance.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/conditions/instance/processInstance.vue
index d4c05cf..9f32fcf 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/conditions/instance/processInstance.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/conditions/instance/processInstance.vue
@@ -18,47 +18,39 @@
   <m-conditions>
     <template slot="search-group">
       <div class="list">
-        <x-button type="ghost" size="small" @click="_ckQuery" icon="ans-icon-search"></x-button>
+        <el-button type="primary" size="small" @click="_ckQuery" icon="el-icon-search"></el-button>
       </div>
       <div class="list">
-        <x-datepicker
-                ref="datepicker"
-                @on-change="_onChangeStartStop"
-                type="daterange"
-                format="YYYY-MM-DD HH:mm:ss"
-                placement="bottom-end"
-                :value="[searchParams.startDate,searchParams.endDate]"
-                :panelNum="2">
-          <x-input slot="input" readonly slot-scope="{value}" :value="value" style="width: 310px;" size="small" :placeholder="$t('Select date range')">
-            <em slot="suffix"
-               @click.stop="_dateEmpty()"
-               class="ans-icon-fail-solid"
-               v-show="value"
-               style="font-size: 13px;cursor: pointer;margin-top: 1px;">
-            </em>
-          </x-input>
-        </x-datepicker>
+        <el-date-picker
+          style="width: 310px"
+          v-model="dataTime"
+          size="mini"
+          @change="_onChangeStartStop"
+          type="datetimerange"
+          range-separator="-"
+          :start-placeholder="$t('startDate')"
+          :end-placeholder="$t('endDate')"
+          value-format="yyyy-MM-dd HH:mm:ss">
+        </el-date-picker>
       </div>
       <div class="list">
-        <x-select style="width: 160px;" @on-change="_onChangeState" :value="searchParams.stateType" >
-          <x-input slot="trigger" readonly :value="selectedModel ? selectedModel.label : ''" slot-scope="{ selectedModel }" style="width: 160px;" size="small" :placeholder="$t('State')" suffix-icon="ans-icon-arrow-down">
-          </x-input>
-          <x-option
+        <el-select style="width: 140px;" @change="_onChangeState" :value="searchParams.stateType" :placeholder="$t('State')" size="mini">
+          <el-option
                   v-for="city in stateTypeList"
                   :key="city.label"
                   :value="city.code"
                   :label="city.label">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
       <div class="list">
-        <x-input v-model.trim="searchParams.host" @on-enterkey="_ckQuery" style="width: 140px;" size="small" :placeholder="$t('host')"></x-input>
+        <el-input v-model="searchParams.host" @keyup.enter.native="_ckQuery" style="width: 140px;" size="mini" :placeholder="$t('host')"></el-input>
       </div>
       <div class="list">
-        <x-input v-model.trim="searchParams.executorName" @on-enterkey="_ckQuery" style="width: 140px;" size="small" :placeholder="$t('Executor')"></x-input>
+        <el-input v-model="searchParams.executorName" @keyup.enter.native="_ckQuery" style="width: 140px;" size="mini" :placeholder="$t('Executor')"></el-input>
       </div>
       <div class="list">
-        <x-input v-model.trim="searchParams.searchVal" @on-enterkey="_ckQuery" style="width: 200px;" size="small" :placeholder="$t('name')"></x-input>
+        <el-input v-model="searchParams.searchVal" @keyup.enter.native="_ckQuery" style="width: 200px;" size="mini" :placeholder="$t('name')"></el-input>
       </div>
     </template>
   </m-conditions>
@@ -86,7 +78,8 @@
           host: '',
           // executor name
           executorName: ''
-        }
+        },
+        dataTime: []
       }
     },
     props: {},
@@ -100,21 +93,15 @@
       _onChangeStartStop (val) {
         this.searchParams.startDate = val[0]
         this.searchParams.endDate = val[1]
+        this.dataTime[0] = val[0]
+        this.dataTime[1]= val[1]
       },
       /**
        * change state
        */
       _onChangeState (val) {
-        this.searchParams.stateType = val.value
+        this.searchParams.stateType = val
       },
-      /**
-       * empty date
-       */
-      _dateEmpty () {
-        this.searchParams.startDate = ''
-        this.searchParams.endDate = ''
-        this.$refs.datepicker.empty()
-      }
     },
     watch: {
     },
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/conditions/instance/taskInstance.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/conditions/instance/taskInstance.vue
index 08f61a8..9e206a3 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/conditions/instance/taskInstance.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/conditions/instance/taskInstance.vue
@@ -18,50 +18,42 @@
   <m-conditions>
     <template slot="search-group">
       <div class="list">
-        <x-button type="ghost" size="small" @click="_ckQuery" icon="ans-icon-search"></x-button>
+        <el-button size="mini" @click="_ckQuery" icon="el-icon-search"></el-button>
       </div>
       <div class="list">
-        <x-datepicker
-                ref="datepicker"
-                @on-change="_onChangeStartStop"
-                type="daterange"
-                format="YYYY-MM-DD HH:mm:ss"
-                placement="bottom-end"
-                :value="[searchParams.startDate,searchParams.endDate]"
-                :panelNum="2">
-          <x-input slot="input" readonly slot-scope="{value}" :value="value" style="width: 310px;" size="small" :placeholder="$t('Select date range')">
-            <em slot="suffix"
-               @click.stop="_dateEmpty()"
-               class="ans-icon-fail-solid"
-               v-show="value"
-               style="font-size: 13px;cursor: pointer;margin-top: 1px;">
-            </em>
-          </x-input>
-        </x-datepicker>
+        <el-date-picker
+          style="width: 310px"
+          v-model="dataTime"
+          size="mini"
+          @change="_onChangeStartStop"
+          type="datetimerange"
+          range-separator="-"
+          :start-placeholder="$t('startDate')"
+          :end-placeholder="$t('endDate')"
+          value-format="yyyy-MM-dd HH:mm:ss">
+        </el-date-picker>
       </div>
       <div class="list">
-        <x-select style="width: 140px;" @on-change="_onChangeState" :value="searchParams.stateType" >
-          <x-input slot="trigger" readonly :value="selectedModel ? selectedModel.label : ''" slot-scope="{ selectedModel }" style="width: 140px;" size="small" :placeholder="$t('State')" suffix-icon="ans-icon-arrow-down">
-          </x-input>
-          <x-option
+        <el-select style="width: 140px;" @change="_onChangeState" :value="searchParams.stateType" :placeholder="$t('State')" size="mini">
+          <el-option
                   v-for="city in stateTypeList"
                   :key="city.label"
                   :value="city.code"
                   :label="city.label">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
       <div class="list">
-        <x-input v-model.trim="searchParams.host" @on-enterkey="_ckQuery" style="width: 140px;" size="small" :placeholder="$t('host')"></x-input>
+        <el-input v-model="searchParams.host" @keyup.enter.native="_ckQuery" style="width: 140px;" size="mini" :placeholder="$t('host')"></el-input>
       </div>
       <div class="list">
-        <x-input v-model.trim="searchParams.executorName" @on-enterkey="_ckQuery" style="width: 140px;" size="small" :placeholder="$t('Executor')"></x-input>
+        <el-input v-model="searchParams.executorName" @keyup.enter.native="_ckQuery" style="width: 140px;" size="mini" :placeholder="$t('Executor')"></el-input>
       </div>
       <div class="list">
-        <x-input v-model.trim="searchParams.processInstanceName" @on-enterkey="_ckQuery" style="width: 160px;" size="small" :placeholder="$t('Process Instance')"></x-input>
+        <el-input v-model="searchParams.processInstanceName" @keyup.enter.native="_ckQuery" style="width: 160px;" size="mini" :placeholder="$t('Process Instance')"></el-input>
       </div>
       <div class="list">
-        <x-input v-model.trim="searchParams.searchVal" @on-enterkey="_ckQuery" style="width: 160px;" size="small" :placeholder="$t('name')"></x-input>
+        <el-input v-model="searchParams.searchVal" @keyup.enter.native="_ckQuery" style="width: 160px;" size="mini" :placeholder="$t('name')"></el-input>
       </div>
     </template>
   </m-conditions>
@@ -90,7 +82,8 @@
           // executor name
           executorName: '',
           processInstanceName: ''
-        }
+        },
+        dataTime: [],
       }
     },
     props: {},
@@ -104,21 +97,15 @@
       _onChangeStartStop (val) {
         this.searchParams.startDate = val[0]
         this.searchParams.endDate = val[1]
+        this.dataTime[0] = val[0]
+        this.dataTime[1]= val[1]
       },
       /**
        * change state
        */
       _onChangeState (val) {
-        this.searchParams.stateType = val.value
+        this.searchParams.stateType = val
       },
-      /**
-       * empty date
-       */
-      _dateEmpty () {
-        this.searchParams.startDate = ''
-        this.searchParams.endDate = ''
-        this.$refs.datepicker.empty()
-      }
     },
     watch: {
     },
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/_source/conditions.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/_source/conditions.vue
index a82bd45..fcae664 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/_source/conditions.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/_source/conditions.vue
@@ -18,55 +18,48 @@
   <m-conditions>
     <template slot="search-group">
       <div class="list">
-        <x-button type="ghost" size="small" @click="_ckQuery" icon="ans-icon-search"></x-button>
+        <el-button type="ghost" size="mini" @click="_ckQuery" icon="el-icon-search"></el-button>
       </div>
       <div class="list">
-        <x-datepicker
-                :value="[searchParams.startDate,searchParams.endDate]"
-                ref="datepicker"
-                @on-change="_onChangeStartStop"
-                type="daterange"
-                format="YYYY-MM-DD HH:mm:ss"
-                placement="bottom-end"
-                :panelNum="2">
-          <x-input slot="input" readonly slot-scope="{value}" :value="value" style="width: 310px;" size="small" :placeholder="$t('Select date range')">
-            <em slot="suffix"
-               @click.stop="_dateEmpty()"
-               class="ans-icon-fail-solid"
-               v-show="value"
-               style="font-size: 13px;cursor: pointer;margin-top: 1px;">
-            </em>
-          </x-input>
-        </x-datepicker>
+        <el-date-picker
+          v-model="dataTime"
+          type="datetimerange"
+          size="mini"
+          @change="_onChangeStartStop"
+          range-separator="-"
+          :start-placeholder="$t('startDate')"
+          :end-placeholder="$t('endDate')"
+          value-format="yyyy-MM-dd HH:mm:ss">
+        </el-date-picker>
       </div>
       <div class="list">
-        <x-input v-model="searchParams.destTable" style="width: 120px;" size="small" :placeholder="$t('Target Table')"></x-input>
+        <el-input v-model="searchParams.destTable" style="width: 120px;" size="mini" :placeholder="$t('Target Table')"></el-input>
       </div>
       <div class="list">
-        <x-input v-model="searchParams.sourceTable" style="width: 120px;" size="small" :placeholder="$t('Source Table')"></x-input>
+        <el-input v-model="searchParams.sourceTable" style="width: 120px;" size="mini" :placeholder="$t('Source Table')"></el-input>
       </div>
       <div class="list">
-        <x-select style="width: 90px;" @on-change="_onChangeState" :value="searchParams.state">
-          <x-input slot="trigger" readonly :value="selectedModel ? selectedModel.label : ''" slot-scope="{ selectedModel }" style="width: 90px;" size="small" :placeholder="$t('State')" suffix-icon="ans-icon-arrow-down"></x-input>
-          <x-option
+        <el-select style="width: 90px;" @change="_onChangeState" :value="searchParams.state" :placeholder="$t('State')" size="mini">
+          <el-option
                   v-for="city in stateList"
                   :key="city.label"
                   :value="city.code"
                   :label="city.label">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
       <div class="list">
-        <x-datepicker
-                v-model="searchParams.taskDate"
-                @on-change="_onChangeDate"
-                format="YYYY-MM-DD"
-                :panelNum="1">
-          <x-input slot="input" readonly slot-scope="{value}" style="width: 130px;" :value="value" size="small" :placeholder="$t('Date')"></x-input>
-        </x-datepicker>
+        <el-date-picker
+          v-model="searchParams.taskDate"
+          value-format="yyyy-MM-dd"
+          size="mini"
+          @change="_onChangeDate"
+          type="date"
+          :placeholder="$t('Date')">
+        </el-date-picker>
       </div>
       <div class="list">
-        <x-input v-model="searchParams.taskName" style="width: 130px;" size="small" :placeholder="$t('Task Name')"></x-input>
+        <el-input v-model="searchParams.taskName" style="width: 130px;" size="mini" :placeholder="$t('Task Name')"></el-input>
       </div>
     </template>
   </m-conditions>
@@ -111,7 +104,8 @@
           taskDate: '',
           startDate: '',
           endDate: ''
-        }
+        },
+        dataTime: [],
       }
     },
     props: {},
@@ -124,13 +118,13 @@
        */
       _onChangeStartStop (val) {
         this.searchParams.startDate = val[0]
-        this.searchParams.endDate = val[1]
+        this.searchParams.endDate = val[1] 
       },
       /**
        * change state
        */
       _onChangeState (val) {
-        this.searchParams.state = val.value
+        this.searchParams.state = val
       },
       /**
        * empty date
@@ -141,7 +135,7 @@
         this.$refs.datepicker.empty()
       },
       _onChangeDate (val) {
-        this.searchParams.taskDate = val.replace(/-/g, '')
+        this.searchParams.taskDate = val
       }
     },
     created () {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/_source/list.vue
index a1649a3..b3173b0 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/_source/list.vue
@@ -17,68 +17,40 @@
 <template>
   <div class="list-model">
     <div class="table-box">
-      <table class="fixed">
-        <tr>
-          <th>
-            <span>{{$t('#')}}</span>
-          </th>
-          <th>
-            <span>{{$t('Task Name')}}</span>
-          </th>
-          <th width="66">
-            <span>{{$t('Task Date')}}</span>
-          </th>
-          <th width="150">
-            <span>{{$t('Start Time')}}</span>
-          </th>
-          <th width="150">
-            <span>{{$t('End Time')}}</span>
-          </th>
-          <th width="134">
-            <span>{{$t('Duration')}}(s)</span>
-          </th>
-          <th>
-            <span>{{$t('Source Table')}}</span>
-          </th>
-          <th width="100">
-            <span>{{$t('Record Number')}}</span>
-          </th>
-          <th>
-            <span>{{$t('Target Table')}}</span>
-          </th>
-          <th width="100">
-            <span>{{$t('Record Number')}}</span>
-          </th>
-          <th width="88">
-            <span>{{$t('State')}}</span>
-          </th>
-        </tr>
-        <tr v-for="(item, $index) in list" :key="item.id">
-          <td>
-            <span>{{parseInt(pageNo === 1 ? ($index + 1) : (($index + 1) + (pageSize * (pageNo - 1))))}}</span>
-          </td>
-          <td>
-            <span class="ellipsis"  data-toggle="tooltip" data-container="body" :title="_rtTooltip(item.procName)" data-html="true">{{item.procName}}</span>
-          </td>
-          <td><span>{{item.procDate}}</span></td>
-          <td>
-            <span v-if="item.startTime">{{item.startTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.endTime">{{item.endTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td><span>{{item.duration}}</span></td>
-          <td><span class="ellipsis" data-toggle="tooltip" data-container="body" :title="_rtTooltip(item.sourceTab)" data-html="true">{{item.sourceTab}}</span></td>
-          <td>
-            <span>{{item.sourceRowCount}}</span>
-          </td>
-          <td><span class="ellipsis" data-toggle="tooltip" data-container="body" :title="_rtTooltip(item.targetTab)" data-html="true">{{item.targetTab}}</span></td>
-          <td><span>{{item.targetRowCount}}</span></td>
-          <td><span>{{item.note}}</span></td>
-        </tr>
-      </table>
+      <el-table :data="list" size="mini" style="width: 100%">
+        <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+        <el-table-column :label="$t('Task Name')" min-width="100">
+          <template slot-scope="scope">
+            <el-popover trigger="hover" placement="top">
+              <p>{{ scope.row.procName }}</p>
+              <div slot="reference" class="name-wrapper">
+                {{ scope.row.procName }}
+              </div>
+            </el-popover>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Task Date')">
+          <template slot-scope="scope">
+            <span>{{scope.row.procDate | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Start Time')" width="135">
+          <template slot-scope="scope">
+            <span>{{scope.row.startTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('End Time')" width="135">
+          <template slot-scope="scope">
+            <span>{{scope.row.endTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="description" :label="$t('Duration')+'(s)'"></el-table-column>
+        <el-table-column prop="sourceTab" :label="$t('Source Table')"></el-table-column>
+        <el-table-column prop="sourceRowCount" :label="$t('Record Number')"></el-table-column>
+        <el-table-column prop="targetTab" :label="$t('Target Table')"></el-table-column>
+        <el-table-column prop="targetRowCount" :label="$t('Record Number')"></el-table-column>
+        <el-table-column prop="note" :label="$t('State')"></el-table-column>
+      </el-table>
     </div>
   </div>
 </template>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/index.vue
index 08a964f..59f097f 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/_source/taskRecordList/index.vue
@@ -24,7 +24,16 @@
         <m-list :task-record-list="taskRecordList" @on-update="_onUpdate" :page-no="searchParams.pageNo" :page-size="searchParams.pageSize">
         </m-list>
         <div class="page-box">
-          <x-page :current="parseInt(searchParams.pageNo)" :total="total" show-elevator @on-change="_page"></x-page>
+          <el-pagination
+              background
+              @current-change="_page"
+              @size-change="_pageSize"
+              :page-size="searchParams.pageSize"
+              :current-page.sync="searchParams.pageNo"
+              :page-sizes="[10, 30, 50]"
+              layout="sizes, prev, pager, next, jumper"
+              :total="total">
+            </el-pagination>
         </div>
       </template>
       <template v-if="!taskRecordList.length && total<=0">
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue
index 2585744..94fb9b4 100755
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/email.vue
@@ -19,9 +19,9 @@
     <div class="clearfix input-element" :class="disabled ? 'disabled' : ''">
       <span class="tag-wrapper" v-for="(item,$index) in activeList" :key="$index" :class="activeIndex === $index ? 'active' : ''">
         <span class="tag-text">{{item}}</span>
-        <em class="remove-tag ans-icon-close" @click.stop="_del($index)" v-if="!disabled"></em>
+        <em class="remove-tag el-icon-close" @click.stop="_del($index)" v-if="!disabled"></em>
       </span>
-      <x-poptip
+      <el-popover
               placement="bottom-start"
               :append-to-body="true"
               :visible-arrow="false"
@@ -41,23 +41,23 @@
         <span class="label-wrapper" slot="reference" >
           <!--@keydown.tab="_emailTab"-->
           <input
-                  class="email-input"
-                  ref="emailInput"
-                  :style="{width:emailWidth + 'px'}"
-                  type="text"
-                  v-model="email"
-                  :disabled="disabled"
-                  :placeholder="$t('Please enter email')"
-                  @blur="_emailEnter"
-                  @keydown.tab="_emailTab"
-                  @keyup.delete="_emailDelete"
-                  @keyup.enter="_emailEnter"
-                  @keyup.space="_emailEnter"
-                  @keyup.186="_emailEnter"
-                  @keyup.up="_emailKeyup('up')"
-                  @keyup.down="_emailKeyup('down')">
+              class="email-input"
+              ref="emailInput"
+              :style="{width:emailWidth + 'px'}"
+              type="text"
+              v-model="email"
+              :disabled="disabled"
+              :placeholder="$t('Please enter email')"
+              @blur="_emailEnter"
+              @keydown.tab="_emailTab"
+              @keyup.delete="_emailDelete"
+              @keyup.enter="_emailEnter"
+              @keyup.space="_emailEnter"
+              @keyup.186="_emailEnter"
+              @keyup.up="_emailKeyup('up')"
+              @keyup.down="_emailKeyup('down')">
         </span>
-      </x-poptip>
+      </el-popover>
     </div>
   </div>
 </template>
@@ -299,6 +299,8 @@
 <style lang="scss" rel="stylesheet/scss">
   .email-model {
     width: 100%;
+    border: 1px solid #dcdfe6;
+    border-radius: 5px;
     .input-element {
       min-height: 32px;
       padding: 1px 8px;
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/list.vue
index 3caf30a..f1d5bef 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/list.vue
@@ -17,129 +17,131 @@
 <template>
   <div class="list-model" style="position: relative;">
     <div class="table-box">
-      <table class="fixed">
-        <tr>
-          <th scope="col" style="min-width: 50px">
-            <x-checkbox @on-change="_topCheckBoxClick" v-model="checkAll"></x-checkbox>
-          </th>
-          <th scope="col" style="min-width: 40px">
-            <span>{{$t('#')}}</span>
-          </th>
-          <th scope="col" style="min-width: 200px;max-width: 300px;">
-            <span>{{$t('Process Name')}}</span>
-          </th>
-          <th scope="col" style="min-width: 50px">
-            <span>{{$t('State')}}</span>
-          </th>
-          <th scope="col" style="min-width: 130px">
-            <span>{{$t('Create Time')}}</span>
-          </th>
-          <th scope="col" style="min-width: 130px">
-            <span>{{$t('Update Time')}}</span>
-          </th>
-          <th scope="col" style="min-width: 150px">
-            <span>{{$t('Description')}}</span>
-          </th>
-          <th scope="col" style="min-width: 70px">
-            <span>{{$t('Modify User')}}</span>
-          </th>
-          <th scope="col" style="min-width: 70px">
-            <div style="width: 80px">
-              <span>{{$t('Timing state')}}</span>
-            </div>
-          </th>
-          <th scope="col" style="min-width: 300px">
-            <span>{{$t('Operation')}}</span>
-          </th>
-        </tr>
-        <tr v-for="(item, $index) in list" :key="item.id">
-          <td width="50"><x-checkbox v-model="item.isCheck" :disabled="item.releaseState === 'ONLINE'" @on-change="_arrDelChange"></x-checkbox></td>
-          <td width="50">
-            <span>{{parseInt(pageNo === 1 ? ($index + 1) : (($index + 1) + (pageSize * (pageNo - 1))))}}</span>
-          </td>
-          <td style="min-width: 200px;max-width: 300px;padding-right: 10px;">
-            <span class="ellipsis">
-              <router-link :to="{ path: '/projects/definition/list/' + item.id}" tag="a" class="links" :title="item.name">
-                {{item.name}}
-              </router-link>
-            </span>
-          </td>
-          <td><span>{{_rtPublishStatus(item.releaseState)}}</span></td>
-          <td>
-            <span v-if="item.createTime">{{item.createTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.updateTime">{{item.updateTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.description" class="ellipsis" v-tooltip.large.top.start.light="{text: item.description, maxWidth: '500px'}">{{item.description}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.modifyBy">{{item.modifyBy}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.scheduleReleaseState === 'OFFLINE'">{{$t('offline')}}</span>
-            <span v-if="item.scheduleReleaseState === 'ONLINE'">{{$t('online')}}</span>
-            <span v-if="!item.scheduleReleaseState">-</span>
-          </td>
-          <td style="z-index: inherit;">
-            <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Edit')" @click="_edit(item)" :disabled="item.releaseState === 'ONLINE'"  icon="ans-icon-edit"><!--{{$t('编辑')}}--></x-button>
-            <x-button type="success" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Start')" @click="_start(item)" :disabled="item.releaseState !== 'ONLINE'"  icon="ans-icon-play"><!--{{$t('启动')}}--></x-button>
-            <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Timing')" @click="_timing(item)" :disabled="item.releaseState !== 'ONLINE' || item.scheduleReleaseState !== null"  icon="ans-icon-timer"><!--{{$t('定时')}}--></x-button>
-            <x-button type="warning" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('online')" @click="_poponline(item)" v-if="item.releaseState === 'OFFLINE'"  icon="ans-icon-upward"><!--{{$t('下线')}}--></x-button>
-            <x-button type="error" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('offline')" @click="_downline(item)" v-if="item.releaseState === 'ONLINE'"  icon="ans-icon-downward"><!--{{$t('上线')}}--></x-button>
-            <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Copy Workflow')" @click="_copyProcess(item)" :disabled="item.releaseState === 'ONLINE'"  icon="ans-icon-copy"><!--{{$t('复制')}}--></x-button>
-            <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Cron Manage')" @click="_timingManage(item)" :disabled="item.releaseState !== 'ONLINE'"  icon="ans-icon-datetime"><!--{{$t('定时管理')}}--></x-button>
-            <x-poptip
-              :ref="'poptip-delete-' + $index"
-              placement="bottom-end"
-              width="90">
-              <p>{{$t('Delete?')}}</p>
-              <div style="text-align: right; margin: 0;padding-top: 4px;">
-                <x-button type="text" size="xsmall" shape="circle" @click="_closeDelete($index)">{{$t('Cancel')}}</x-button>
-                <x-button type="primary" size="xsmall" shape="circle" @click="_delete(item,$index)">{{$t('Confirm')}}</x-button>
+      <el-table :data="list" size="mini" style="width: 100%" @selection-change="_arrDelChange">
+        <el-table-column type="selection" width="50" :selectable="selectable"></el-table-column>
+        <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+        <el-table-column :label="$t('Process Name')" min-width="200">
+          <template slot-scope="scope">
+            <el-popover trigger="hover" placement="top">
+              <p>{{ scope.row.name }}</p>
+              <div slot="reference" class="name-wrapper">
+                <router-link :to="{ path: '/projects/definition/list/' + scope.row.id}" tag="a" class="links" :title="scope.row.name">
+                  {{scope.row.name}}
+                </router-link>
               </div>
-              <template slot="reference">
-                <x-button
-                  icon="ans-icon-trash"
-                  type="error"
-                  shape="circle"
-                  size="xsmall"
-                  :disabled="item.releaseState === 'ONLINE'"
-                  data-toggle="tooltip"
-                  :title="$t('delete')">
-                </x-button>
-              </template>
-            </x-poptip>
-            <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('TreeView')" @click="_treeView(item)"  icon="ans-icon-node"><!--{{$t('树形图')}}--></x-button>
-            <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Export')" @click="_export(item)"  icon="ans-icon-download"><!--{{$t('导出')}}--></x-button>
-            <x-button type="info" shape="circle" size="xsmall" data-toggle="tooltip" :title="$t('Version Info')" @click="_version(item)" :disabled="item.releaseState === 'ONLINE'" icon="ans-icon-dependence"><!--{{$t('版本信息')}}--></x-button>
-
-          </td>
-        </tr>
-      </table>
+            </el-popover>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('State')">
+          <template slot-scope="scope">
+            {{_rtPublishStatus(scope.row.releaseState)}}
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Create Time')" width="135">
+          <template slot-scope="scope">
+            <span>{{scope.row.createTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Update Time')" width="135">
+          <template slot-scope="scope">
+            <span>{{scope.row.updateTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="description" :label="$t('Description')"></el-table-column>
+        <el-table-column prop="modifyBy" :label="$t('Modify User')"></el-table-column>
+        <el-table-column :label="$t('Timing state')">
+          <template slot-scope="scope">
+            <span v-if="scope.row.scheduleReleaseState === 'OFFLINE'">{{$t('offline')}}</span>
+            <span v-if="scope.row.scheduleReleaseState === 'ONLINE'">{{$t('online')}}</span>
+            <span v-if="!scope.row.scheduleReleaseState">-</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Operation')" width="335" fixed="right">
+          <template slot-scope="scope">
+            <el-tooltip :content="$t('Edit')" placement="top" :enterable="false">
+              <el-button type="primary" size="mini" icon="el-icon-edit-outline" :disabled="scope.row.releaseState === 'ONLINE'" @click="_edit(scope.row)" circle></el-button>
+            </el-tooltip>
+            <el-tooltip :content="$t('Start')" placement="top" :enterable="false">
+              <span><el-button type="success" size="mini" :disabled="scope.row.releaseState !== 'ONLINE'"  icon="el-icon-video-play" @click="_start(scope.row)" circle></el-button></span>
+            </el-tooltip>
+            <el-tooltip :content="$t('Timing')" placement="top" :enterable="false">
+              <el-button type="primary" size="mini" icon="el-icon-time" :disabled="scope.row.releaseState !== 'ONLINE' || scope.row.scheduleReleaseState !== null" @click="_timing(scope.row)" circle></el-button>
+            </el-tooltip>
+            <el-tooltip :content="$t('online')" placement="top" :enterable="false">
+              <span><el-button type="warning" size="mini" v-if="scope.row.releaseState === 'OFFLINE'"  icon="el-icon-upload2" @click="_poponline(scope.row)" circle></el-button></span>
+            </el-tooltip>
+            <el-tooltip :content="$t('offline')" placement="top" :enterable="false">
+              <el-button type="danger" size="mini" icon="el-icon-download" v-if="scope.row.releaseState === 'ONLINE'" @click="_downline(scope.row)" circle></el-button>
+            </el-tooltip>
+            <el-tooltip :content="$t('Copy Workflow')" placement="top" :enterable="false">
+              <span><el-button type="primary" size="mini" :disabled="scope.row.releaseState === 'ONLINE'"  icon="el-icon-document-copy" @click="_copyProcess(scope.row)" circle></el-button></span>
+            </el-tooltip>
+            <el-tooltip :content="$t('Cron Manage')" placement="top" :enterable="false">
+              <el-button type="primary" size="mini" icon="el-icon-date" :disabled="scope.row.releaseState !== 'ONLINE'" @click="_timingManage(scope.row)" circle></el-button>
+            </el-tooltip>
+            <el-tooltip :content="$t('delete')" placement="top" :enterable="false">
+              <el-button type="danger" size="mini" icon="el-icon-delete" circle></el-button>
+              <el-popconfirm
+                :confirmButtonText="$t('Confirm')"
+                :cancelButtonText="$t('Cancel')"
+                icon="el-icon-info"
+                iconColor="red"
+                :title="$t('Delete?')"
+                @onConfirm="_delete(scope.row,scope.row.id)"
+              >
+                <el-button type="danger" size="mini" icon="el-icon-delete" :disabled="scope.row.releaseState === 'ONLINE'" circle slot="reference"></el-button>
+              </el-popconfirm>
+            </el-tooltip>
+            <el-tooltip :content="$t('TreeView')" placement="top" :enterable="false">
+              <el-button type="primary" size="mini" icon="el-icon-s-data" @click="_treeView(scope.row)" circle></el-button>
+            </el-tooltip>
+            <el-tooltip :content="$t('Export')" placement="top" :enterable="false">
+              <span><el-button type="primary" size="mini" icon="el-icon-s-unfold" @click="_export(scope.row)" circle></el-button></span>
+            </el-tooltip>
+            <el-tooltip :content="$t('Version Info')" placement="top" :enterable="false">
+              <el-button type="primary" size="mini" icon="el-icon-info" :disabled="scope.row.releaseState === 'ONLINE'" @click="_version(scope.row)" circle></el-button>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+      </el-table>
     </div>
-    <x-poptip
-            ref="poptipDeleteAll"
-            placement="bottom-start"
-            width="90">
-      <p>{{$t('Delete?')}}</p>
-      <div style="text-align: right; margin: 0;padding-top: 4px;">
-        <x-button type="text" size="xsmall" shape="circle" @click="_closeDelete(-1)">{{$t('Cancel')}}</x-button>
-        <x-button type="primary" size="xsmall" shape="circle" @click="_delete({},-1)">{{$t('Confirm')}}</x-button>
-      </div>
-      <template slot="reference">
-        <x-button size="xsmall" :disabled="!strSelectIds" style="position: absolute; bottom: -48px; left: 22px;" >{{$t('Delete')}}</x-button>
-      </template>
-    </x-poptip>
-    <x-button size="xsmall" :disabled="!strSelectIds" style="position: absolute; bottom: -48px; left: 80px;" @click="_batchExport(item)" >{{$t('Export')}}</x-button>
-    <x-button size="xsmall" :disabled="!strSelectIds" style="position: absolute; bottom: -48px; left: 140px;" @click="_batchCopy(item)" >{{$t('Batch copy')}}</x-button>
-    <x-button size="xsmall" :disabled="!strSelectIds" style="position: absolute; bottom: -48px; left: 225px;" @click="_batchMove(item)" >{{$t('Batch move')}}</x-button>
-
+    <el-tooltip :content="$t('delete')" placement="top">
+      <el-popconfirm
+        :confirmButtonText="$t('Confirm')"
+        :cancelButtonText="$t('Cancel')"
+        :title="$t('Delete?')"
+        @onConfirm="_delete({},-1)"
+      >
+        <el-button style="position: absolute; bottom: -48px; left: 19px;"  type="primary" size="mini" :disabled="!strSelectIds" slot="reference">{{$t('Delete')}}</el-button>
+      </el-popconfirm>
+    </el-tooltip>
+    <el-button type="primary" size="mini" :disabled="!strSelectIds" style="position: absolute; bottom: -48px; left: 80px;" @click="_batchExport(item)" >{{$t('Export')}}</el-button>
+    <span><el-button type="primary" size="mini" :disabled="!strSelectIds" style="position: absolute; bottom: -48px; left: 140px;" @click="_batchCopy(item)" >{{$t('Batch copy')}}</el-button></span>
+    <el-button type="primary" size="mini" :disabled="!strSelectIds" style="position: absolute; bottom: -48px; left: 225px;" @click="_batchMove(item)" >{{$t('Batch move')}}</el-button>
+    <el-drawer
+      :visible.sync="drawer"
+      size="35%"
+      :with-header="false">
+      <m-versions :versionData = versionData @mVersionSwitchProcessDefinitionVersion="mVersionSwitchProcessDefinitionVersion" @mVersionGetProcessDefinitionVersionsPage="mVersionGetProcessDefinitionVersionsPage" @mVersionDeleteProcessDefinitionVersion="mVersionDeleteProcessDefinitionVersion"></m-versions>
+    </el-drawer>
+    <el-dialog
+      :title="$t('Please set the parameters before starting')"
+      :visible.sync="startDialog"
+      width="65%">
+      <m-start :startData= "startData" @onUpdateStart="onUpdateStart" @closeStart="closeStart"></m-start>
+    </el-dialog>
+    <el-dialog
+      :title="$t('Set parameters before timing')"
+      :visible.sync="timingDialog"
+      width="65%">
+      <m-timing :timingData="timingData" @onUpdateTiming="onUpdateTiming" @closeTiming="closeTiming"></m-timing>
+    </el-dialog>
+    <el-dialog
+      title="提示"
+      :visible.sync="relatedItemsDialog"
+      width="30%">
+      <m-related-items :tmp="tmp" @onBatchCopy="onBatchCopy" @onBatchMove="onBatchMove" @closeRelatedItems="closeRelatedItems"></m-related-items>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -157,7 +159,26 @@
       return {
         list: [],
         strSelectIds: '',
-        checkAll: false
+        checkAll: false,
+        drawer: false,
+        versionData: {
+          processDefinition: {},
+          processDefinitionVersions: [],
+          total: null,
+          pageNo: null,
+          pageSize: null
+        },
+        startDialog: false,
+        startData: {},
+        timingDialog: false,
+        timingData: {
+          item: {},
+          receiversD: [],
+          receiversCcD: [],
+          type: ''
+        },
+        relatedItemsDialog: false,
+        tmp: false
       }
     },
     props: {
@@ -168,6 +189,14 @@
     methods: {
       ...mapActions('dag', ['editProcessState', 'getStartCheck', 'getReceiver', 'deleteDefinition', 'batchDeleteDefinition', 'exportDefinition', 'getProcessDefinitionVersionsPage', 'copyProcess', 'switchProcessDefinitionVersion', 'deleteProcessDefinitionVersion', 'moveProcess']),
       ...mapActions('security', ['getWorkerGroupsAll']),
+
+      selectable(row,index) {
+        if(row.releaseState === 'ONLINE') {
+          return false
+        } else {
+          return true
+        }
+      },
       _rtPublishStatus (code) {
         return _.filter(publishStatus, v => v.code === code)[0].desc
       },
@@ -180,34 +209,19 @@
       _start (item) {
         this.getWorkerGroupsAll()
         this.getStartCheck({ processDefinitionId: item.id }).then(res => {
-          let self = this
-          let modal = this.$modal.dialog({
-            closable: false,
-            showMask: true,
-            escClose: true,
-            className: 'v-modal-custom',
-            transitionName: 'opacityp',
-            render (h) {
-              return h(mStart, {
-                on: {
-                  onUpdate () {
-                    self._onUpdate()
-                    modal.remove()
-                  },
-                  close () {
-                    modal.remove()
-                  }
-                },
-                props: {
-                  item: item
-                }
-              })
-            }
-          })
+        this.startData = item
+        this.startDialog = true
         }).catch(e => {
           this.$message.error(e.msg || '')
         })
       },
+      onUpdateStart () {
+        this._onUpdate()
+        this.startDialog = false
+      },
+      closeStart () {
+        this.startDialog = false
+      },
       /**
        * get emial
        */
@@ -227,34 +241,20 @@
       _timing (item) {
         let self = this
         this._getReceiver(item.id).then(res => {
-          let modal = this.$modal.dialog({
-            closable: false,
-            showMask: true,
-            escClose: true,
-            className: 'v-modal-custom',
-            transitionName: 'opacityp',
-            render (h) {
-              return h(mTiming, {
-                on: {
-                  onUpdate () {
-                    self._onUpdate()
-                    modal.remove()
-                  },
-                  close () {
-                    modal.remove()
-                  }
-                },
-                props: {
-                  item: item,
-                  receiversD: res.receivers,
-                  receiversCcD: res.receiversCc,
-                  type: 'timing'
-                }
-              })
-            }
-          })
+          this.timingData.item = item,
+          this.timingData.receiversD = res.receivers,
+          this.timingData.receiversCcD = res.receiversCc,
+          this.timingData.type = 'timing'
+          this.timingDialog = true
         })
       },
+      onUpdateTiming () {
+        this._onUpdate()
+        this.timingDialog = false
+      },
+      closeTiming () {
+        this.timingDialog = false
+      },
       /**
        * Timing manage
        */
@@ -262,18 +262,6 @@
         this.$router.push({ path: `/projects/definition/list/timing/${item.id}` })
       },
       /**
-       * Close the delete layer
-       */
-      _closeDelete (i) {
-        // close batch
-        if (i < 0) {
-          this.$refs['poptipDeleteAll'].doClose()
-          return
-        }
-        // close one
-        this.$refs[`poptip-delete-${i}`][0].doClose()
-      },
-      /**
        * delete
        */
       _delete (item, i) {
@@ -286,11 +274,9 @@
         this.deleteDefinition({
           processDefinitionId: item.id
         }).then(res => {
-          this.$refs[`poptip-delete-${i}`][0].doClose()
           this._onUpdate()
           this.$message.success(res.msg)
         }).catch(e => {
-          this.$refs[`poptip-delete-${i}`][0].doClose()
           this.$message.error(e.msg || '')
         })
       },
@@ -328,7 +314,7 @@
         }).then(res => {
           this.strSelectIds = ''
           this.$message.success(res.msg)
-          $('body').find('.tooltip.fade.top.in').remove()
+          // $('body').find('.tooltip.fade.top.in').remove()
           this._onUpdate()
         }).catch(e => {
           this.$message.error(e.msg || '')
@@ -360,7 +346,69 @@
           this.$message.error(e.msg || '')
         })
       },
-
+      /**
+        * switch version in process definition version list
+        *
+        * @param version the version user want to change
+        * @param processDefinitionId the process definition id
+        * @param fromThis fromThis
+      */
+      mVersionSwitchProcessDefinitionVersion({ version, processDefinitionId, fromThis }) {
+        this.switchProcessDefinitionVersion({
+          version: version,
+          processDefinitionId: processDefinitionId
+        }).then(res=>{
+          this.$message.success($t('Switch Version Successfully'))
+          this.$router.push({ path: `/projects/definition/list/${processDefinitionId}` })
+        }).catch(e => {
+          this.$message.error(e.msg || '')
+        })
+      },
+      /**
+        * Paging event of process definition versions
+        *
+        * @param pageNo page number
+        * @param pageSize page size
+        * @param processDefinitionId the process definition id of page version
+        * @param fromThis fromThis
+      */
+      mVersionGetProcessDefinitionVersionsPage({ pageNo, pageSize, processDefinitionId, fromThis }) {
+        this.getProcessDefinitionVersionsPage({
+        pageNo: pageNo,
+        pageSize: pageSize,
+        processDefinitionId: processDefinitionId
+       }).then(res=>{
+        this.versionData.processDefinitionVersions = res.data.lists
+        this.versionData.total = res.data.totalCount
+        this.versionData.pageSize = res.data.pageSize
+        this.versionData.pageNo = res.data.currentPage
+       }).catch(e=>{
+        this.$message.error(e.msg || '')
+       })
+      },
+      /**
+        * delete one version of process definition
+        *
+        * @param version the version need to delete
+        * @param processDefinitionId the process definition id user want to delete
+        * @param fromThis fromThis
+      */
+      mVersionDeleteProcessDefinitionVersion({ version, processDefinitionId, fromThis }) {
+        this.deleteProcessDefinitionVersion({
+          version: version,
+          processDefinitionId: processDefinitionId
+        }).then(res=>{
+          this.$message.success(res.msg || '')
+          this.mVersionGetProcessDefinitionVersionsPage({
+            pageNo: 1,
+            pageSize: 10,
+            processDefinitionId: processDefinitionId,
+            fromThis: fromThis
+          })
+        }).catch(e => {
+          this.$message.error(e.msg || '')
+        })
+      },
       _version (item) {
         let self = this
         this.getProcessDefinitionVersionsPage({
@@ -372,109 +420,14 @@
           let total = res.data.totalCount
           let pageSize = res.data.pageSize
           let pageNo = res.data.currentPage
-          if (this.versionsModel) {
-            this.versionsModel.remove()
-          }
-          this.versionsModel = this.$drawer({
-            direction: 'right',
-            closable: true,
-            showMask: true,
-            escClose: true,
-            render (h) {
-              return h(mVersions, {
-                on: {
-                  /**
-                   * switch version in process definition version list
-                   *
-                   * @param version the version user want to change
-                   * @param processDefinitionId the process definition id
-                   * @param fromThis fromThis
-                   */
-                  mVersionSwitchProcessDefinitionVersion ({ version, processDefinitionId, fromThis }) {
-                    self.switchProcessDefinitionVersion({
-                      version: version,
-                      processDefinitionId: processDefinitionId
-                    }).then(res => {
-                      self.$message.success($t('Switch Version Successfully'))
-                      setTimeout(() => {
-                        fromThis.$destroy()
-                        self.versionsModel.remove()
-                      }, 0)
-                      self.$router.push({ path: `/projects/definition/list/${processDefinitionId}` })
-                    }).catch(e => {
-                      self.$message.error(e.msg || '')
-                    })
-                  },
-
-                  /**
-                   * Paging event of process definition versions
-                   *
-                   * @param pageNo page number
-                   * @param pageSize page size
-                   * @param processDefinitionId the process definition id of page version
-                   * @param fromThis fromThis
-                   */
-                  mVersionGetProcessDefinitionVersionsPage ({ pageNo, pageSize, processDefinitionId, fromThis }) {
-                    self.getProcessDefinitionVersionsPage({
-                      pageNo: pageNo,
-                      pageSize: pageSize,
-                      processDefinitionId: processDefinitionId
-                    }).then(res => {
-                      fromThis.processDefinitionVersions = res.data.lists
-                      fromThis.total = res.data.totalCount
-                      fromThis.pageSize = res.data.pageSize
-                      fromThis.pageNo = res.data.currentPage
-                    }).catch(e => {
-                      self.$message.error(e.msg || '')
-                    })
-                  },
+          
+          this.versionData.processDefinition = item,
+          this.versionData.processDefinitionVersions = processDefinitionVersions,
+          this.versionData.total = total,
+          this.versionData.pageNo = pageNo,
+          this.versionData.pageSize = pageSize
+          this.drawer = true
 
-                  /**
-                   * delete one version of process definition
-                   *
-                   * @param version the version need to delete
-                   * @param processDefinitionId the process definition id user want to delete
-                   * @param fromThis fromThis
-                   */
-                  mVersionDeleteProcessDefinitionVersion ({ version, processDefinitionId, fromThis }) {
-                    self.deleteProcessDefinitionVersion({
-                      version: version,
-                      processDefinitionId: processDefinitionId
-                    }).then(res => {
-                      self.$message.success(res.msg || '')
-                      fromThis.$emit('mVersionGetProcessDefinitionVersionsPage', {
-                        pageNo: 1,
-                        pageSize: 10,
-                        processDefinitionId: processDefinitionId,
-                        fromThis: fromThis
-                      })
-                    }).catch(e => {
-                      self.$message.error(e.msg || '')
-                    })
-                  },
-
-                  /**
-                   * remove this drawer
-                   *
-                   * @param fromThis
-                   */
-                  close ({ fromThis }) {
-                    setTimeout(() => {
-                      fromThis.$destroy()
-                      self.versionsModel.remove()
-                    }, 0)
-                  }
-                },
-                props: {
-                  processDefinition: item,
-                  processDefinitionVersions: processDefinitionVersions,
-                  total: total,
-                  pageNo: pageNo,
-                  pageSize: pageSize
-                }
-              })
-            }
-          })
         }).catch(e => {
           this.$message.error(e.msg || '')
         })
@@ -498,59 +451,26 @@
        * Batch Copy
        */
       _batchCopy () {
-          let self = this
-          let modal = this.$modal.dialog({
-            closable: false,
-            showMask: true,
-            escClose: true,
-            className: 'v-modal-custom',
-            transitionName: 'opacityp',
-            render (h) {
-              return h(mRelatedItems, {
-                on: {
-                  onBatchCopy (item) {
-                    self._copyProcess({id: self.strSelectIds,projectId: item})
-                    modal.remove()
-                  },
-                  close () {
-                    modal.remove()
-                  }
-                },
-                props: {
-                  tmp: false
-                }
-              })
-            }
-          })
+        this.relatedItemsDialog= true
+        this.tmp = false
+      },
+      onBatchCopy (item) {
+        this._copyProcess({id: this.strSelectIds,projectId: item})
+        this.relatedItemsDialog = false
+      },
+      closeRelatedItems () {
+        this.relatedItemsDialog = false
       },
       /**
        * _batchMove
        */
       _batchMove() {
-        let self = this
-        let modal = this.$modal.dialog({
-          closable: false,
-          showMask: true,
-          escClose: true,
-          className: 'v-modal-custom',
-          transitionName: 'opacityp',
-          render (h) {
-            return h(mRelatedItems, {
-              on: {
-                onBatchMove (item) {
-                  self._moveProcess({id: self.strSelectIds,projectId: item})
-                  modal.remove()
-                },
-                close () {
-                  modal.remove()
-                }
-              },
-              props: {
-                tmp: true
-              }
-            })
-          }
-        })
+        this.tmp = true
+        this.relatedItemsDialog = true
+      },
+      onBatchMove (item) {
+        this._moveProcess({id: this.strSelectIds,projectId: item})
+        this.relatedItemsDialog = false
       },
       /**
        * Edit state
@@ -568,32 +488,17 @@
         this.$emit('on-update')
       },
       /**
-       * click the select-all checkbox
-       */
-      _topCheckBoxClick (is) {
-        _.map(this.list , v => v.isCheck = v.releaseState === 'ONLINE' ? false : is)
-        this._arrDelChange()
-      },
-      /**
        * the array that to be delete
        */
       _arrDelChange (v) {
         let arr = []
-        this.list.forEach((item)=>{
-          if (item.isCheck) {
-            arr.push(item.id)
-          }
-        })
+        arr = _.map(v, 'id');
         this.strSelectIds = _.join(arr, ',')
-        if (v === false) {
-          this.checkAll = false
-        }
       },
       /**
        * batch delete
        */
       _batchDelete () {
-        this.$refs['poptipDeleteAll'].doClose()
         this.batchDeleteDefinition({
           processDefinitionIds: this.strSelectIds
         }).then(res => {
@@ -628,6 +533,6 @@
     },
     mounted () {
     },
-    components: { mVersions }
+    components: { mVersions, mStart, mTiming, mRelatedItems }
   }
 </script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/relatedItems.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/relatedItems.vue
index 9090bbd..89fd761 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/relatedItems.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/relatedItems.vue
@@ -25,14 +25,14 @@
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('Project Name')}}</template>
           <template slot="content">
-            <x-select v-model="itemId">
-              <x-option
+            <el-select v-model="itemId" size="small">
+              <el-option
                       v-for="item in itemList"
                       :key="item.id"
                       :value="item.id"
                       :label="item.name">
-              </x-option>
-            </x-select>
+              </el-option>
+            </el-select>
           </template>
         </m-list-box-f>
       </div>
@@ -62,9 +62,9 @@
       _ok () {
         if(this._verification()) {
             if(this.tmp) {
-                this.$emit('onBatchMove',this.itemId)
+              this.$emit('onBatchMove',this.itemId)
             } else {
-                this.$emit('onBatchCopy',this.itemId)
+              this.$emit('onBatchCopy',this.itemId)
             }
         }
       },
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue
index 87c0f62..e0fc482 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/start.vue
@@ -16,9 +16,6 @@
  */
 <template>
   <div class="start-process-model">
-    <div class="title-box">
-      <span>{{$t('Please set the parameters before starting')}}</span>
-    </div>
     <div class="clearfix list">
       <div class="text">
         {{$t('Process Name')}}
@@ -30,10 +27,10 @@
         {{$t('Failure Strategy')}}
       </div>
       <div class="cont">
-        <x-radio-group v-model="failureStrategy" style="margin-top: 7px;">
-          <x-radio :label="'CONTINUE'">{{$t('Continue')}}</x-radio>
-          <x-radio :label="'END'">{{$t('End')}}</x-radio>
-        </x-radio-group>
+        <el-radio-group v-model="failureStrategy" style="margin-top: 7px;" size="small">
+          <el-radio :label="'CONTINUE'">{{$t('Continue')}}</el-radio>
+          <el-radio :label="'END'">{{$t('End')}}</el-radio>
+        </el-radio-group>
       </div>
     </div>
     <div class="clearfix list" v-if="sourceType === 'contextmenu'" style="margin-top: -8px;">
@@ -41,11 +38,11 @@
         {{$t('Node execution')}}
       </div>
       <div class="cont" style="padding-top: 6px;">
-        <x-radio-group v-model="taskDependType">
-          <x-radio :label="'TASK_POST'">{{$t('Backward execution')}}</x-radio>
-          <x-radio :label="'TASK_PRE'">{{$t('Forward execution')}}</x-radio>
-          <x-radio :label="'TASK_ONLY'">{{$t('Execute only the current node')}}</x-radio>
-        </x-radio-group>
+        <el-radio-group v-model="taskDependType" size="small">
+          <el-radio :label="'TASK_POST'">{{$t('Backward execution')}}</el-radio>
+          <el-radio :label="'TASK_PRE'">{{$t('Forward execution')}}</el-radio>
+          <el-radio :label="'TASK_ONLY'">{{$t('Execute only the current node')}}</el-radio>
+        </el-radio-group>
       </div>
     </div>
     <div class="clearfix list">
@@ -53,14 +50,14 @@
         {{$t('Notification strategy')}}
       </div>
       <div class="cont">
-        <x-select style="width: 200px;" v-model="warningType">
-          <x-option
+        <el-select style="width: 200px;" v-model="warningType" size="small">
+          <el-option
                   v-for="city in warningTypeList"
                   :key="city.id"
                   :value="city.id"
                   :label="city.code">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
     </div>
     <div class="clearfix list">
@@ -84,21 +81,22 @@
         {{$t('Notification group')}}
       </div>
       <div class="cont">
-        <x-select
-                style="width: 200px;"
-                v-model="warningGroupId"
-                :disabled="!notifyGroupList.length">
-          <x-input slot="trigger" slot-scope="{ selectedModel }" readonly :placeholder="$t('Please select a notification group')" :value="selectedModel ? selectedModel.label : ''" style="width: 200px;" @on-click-icon.stop="warningGroupId = ''">
-            <em slot="suffix" class="ans-icon-fail-solid" style="font-size: 15px;cursor: pointer;" v-show="warningGroupId"></em>
-            <em slot="suffix" class="ans-icon-arrow-down" style="font-size: 12px;" v-show="!warningGroupId"></em>
-          </x-input>
-          <x-option
+        <el-select
+           style="width: 200px;"
+           size="small"
+           v-model="warningGroupId"
+          :disabled="!notifyGroupList.length">           
+          <el-input slot="trigger" slot-scope="{ selectedModel }" readonly :placeholder="$t('Please select a notification group')" size="small" :value="selectedModel ? selectedModel.label : ''" style="width: 200px;" @on-click-icon.stop="warningGroupId = ''">
+            <em slot="suffix" class="el-icon-error" style="font-size: 15px;cursor: pointer;" v-show="warningGroupId"></em>
+            <em slot="suffix" class="el-icon-bottom" style="font-size: 12px;" v-show="!warningGroupId"></em>
+          </el-input>
+          <el-option
                   v-for="city in notifyGroupList"
                   :key="city.id"
                   :value="city.id"
                   :label="city.code">
-          </x-option>
-        </x-select>
+          </el-option>
+        </el-select>
       </div>
     </div>
     <div class="clearfix list">
@@ -123,7 +121,7 @@
       </div>
       <div class="cont">
         <div style="padding-top: 6px;">
-          <x-checkbox v-model="execType">{{$t('Whether it is a complement process?')}}</x-checkbox>
+          <el-checkbox v-model="execType" size="small">{{$t('Whether it is a complement process?')}}</el-checkbox>
         </div>
       </div>
     </div>
@@ -133,10 +131,10 @@
           {{$t('Mode of execution')}}
         </div>
         <div class="cont">
-          <x-radio-group v-model="runMode" style="margin-top: 7px;">
-            <x-radio :label="'RUN_MODE_SERIAL'">{{$t('Serial execution')}}</x-radio>
-            <x-radio :label="'RUN_MODE_PARALLEL'">{{$t('Parallel execution')}}</x-radio>
-          </x-radio-group>
+          <el-radio-group v-model="runMode" style="margin-top: 7px;">
+            <el-radio :label="'RUN_MODE_SERIAL'">{{$t('Serial execution')}}</el-radio>
+            <el-radio :label="'RUN_MODE_PARALLEL'">{{$t('Parallel execution')}}</el-radio>
+          </el-radio-group>
         </div>
       </div>
       <div class="clearfix list">
@@ -144,22 +142,23 @@
           {{$t('Schedule date')}}
         </div>
         <div class="cont">
-          <x-datepicker
-                  style="width: 360px;"
-                  :panel-num="2"
-                  placement="bottom-start"
-                  @on-change="_datepicker"
-                  :value="scheduleTime"
-                  type="daterange"
-                  :placeholder="$t('Select date range')"
-                  format="YYYY-MM-DD HH:mm:ss">
-          </x-datepicker>
+          <el-date-picker
+            style="width: 360px"
+            v-model="scheduleTime"
+            size="small"
+            @change="_datepicker"
+            type="datetimerange"
+            range-separator="-"
+            :start-placeholder="$t('startDate')"
+            :end-placeholder="$t('endDate')"
+            value-format="yyyy-MM-dd HH:mm:ss">
+          </el-date-picker>
         </div>
       </div>
     </template>
     <div class="submit">
-      <x-button type="text" @click="close()"> {{$t('Cancel')}} </x-button>
-      <x-button type="primary" shape="circle" :loading="spinnerLoading" @click="ok()">{{spinnerLoading ? 'Loading...' : $t('Start')}} </x-button>
+      <el-button type="text" size="small" @click="close()"> {{$t('Cancel')}} </el-button>
+      <el-button type="primary" size="small" round :loading="spinnerLoading" @click="ok()">{{spinnerLoading ? 'Loading...' : $t('Start')}} </el-button>
     </div>
   </div>
 </template>
@@ -197,7 +196,7 @@
       }
     },
     props: {
-      item: Object,
+      startData: Object,
       startNodeList: {
         type: String,
         default: ''
@@ -211,7 +210,7 @@
       _start () {
         this.spinnerLoading = true
         let param = {
-          processDefinitionId: this.item.id,
+          processDefinitionId: this.startData.id,
           scheduleTime: this.scheduleTime.length && this.scheduleTime.join(',') || '',
           failureStrategy: this.failureStrategy,
           warningType: this.warningType,
@@ -231,7 +230,7 @@
         }
         this.store.dispatch('dag/processStart', param).then(res => {
           this.$message.success(res.msg)
-          this.$emit('onUpdate')
+          this.$emit('onUpdateStart')
           setTimeout(() => {
             this.spinnerLoading = false
             this.close()
@@ -250,7 +249,7 @@
         })
       },
       _getReceiver () {
-        this.store.dispatch('dag/getReceiver', { processDefinitionId: this.item.id }).then(res => {
+        this.store.dispatch('dag/getReceiver', { processDefinitionId: this.startData.id }).then(res => {
           this.receivers = res.receivers && res.receivers.split(',') || []
           this.receiversCc = res.receiversCc && res.receiversCc.split(',') || []
         })
@@ -259,7 +258,7 @@
         this._start()
       },
       close () {
-        this.$emit('close')
+        this.$emit('closeStart')
       }
     },
     watch: {
@@ -269,7 +268,7 @@
     },
     created () {
       this.warningType = this.warningTypeList[0].id
-      this.workflowName = this.item.name
+      this.workflowName = this.startData.name
 
       this._getReceiver()
       let stateWorkerGroupsList = this.store.state.security.workerGroupsListAll || []
@@ -291,7 +290,7 @@
           this.warningGroupId = ''
         })
       })
-      this.workflowName = this.item.name
+      this.workflowName = this.startData.name
     },
     computed: {},
     components: { mEmail, mPriority, mWorkerGroups }
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/timing.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/timing.vue
index 65b9176..94214f4 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/timing.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/timing.vue
@@ -16,48 +16,48 @@
  */
 <template>
   <div class="timing-process-model">
-    <div class="title-box">
-      <span>{{$t('Set parameters before timing')}}</span>
-    </div>
     <div class="clearfix list">
       <div class="text">
         {{$t('Start and stop time')}}
       </div>
       <div class="cont">
-        <x-datepicker
-                style="width: 360px;"
-                :panel-num="2"
-                placement="bottom-start"
-                @on-change="_datepicker"
-                :value="scheduleTime"
-                type="daterange"
-                :placeholder="$t('Select date range')"
-                format="YYYY-MM-DD HH:mm:ss">
-        </x-datepicker>
+        <el-date-picker
+            style="width: 360px"
+            v-model="scheduleTime"
+            size="small"
+            @change="_datepicker"
+            type="datetimerange"
+            range-separator="-"
+            :start-placeholder="$t('startDate')"
+            :end-placeholder="$t('endDate')"
+            value-format="yyyy-MM-dd HH:mm:ss">
+          </el-date-picker>
       </div>
     </div>
     <div class="clearfix list">
-      <x-button type="info"  style="margin-left:20px" shape="circle" :loading="spinnerLoading" @click="preview()">{{$t('Execute time')}}</x-button>
+      <el-button type="info"  style="margin-left:20px" size="small" round :loading="spinnerLoading" @click="preview()">{{$t('Execute time')}}</el-button>
       <div class="text">
         {{$t('Timing')}}
       </div>
 
       <div class="cont">
         <template>
-          <x-poptip :ref="'poptip'" placement="bottom-start">
-            <div class="crontab-box">
-              <v-crontab v-model="crontab" :locale="i18n"></v-crontab>
-            </div>
+          <el-popover
+            placement="bottom-start"
+            trigger="click">
             <template slot="reference">
-              <x-input
+              <el-input
                       style="width: 360px;"
                       type="text"
+                      size="small"
                       readonly
-                      :value="crontab"
-                      autocomplete="off">
-              </x-input>
+                      :value="crontab">
+              </el-input>
             </template>
-          </x-poptip>
+            <div class="crontab-box">
+              <v-crontab v-model="crontab" :locale="i18n"></v-crontab>
+            </div>
+          </el-popover>
         </template>
       </div>
     </div>
@@ -73,10 +73,10 @@
         {{$t('Failure Strategy')}}
       </div>
       <div class="cont">
-        <x-radio-group v-model="failureStrategy" style="margin-top: 7px;">
-          <x-radio :label="'CONTINUE'">{{$t('Continue')}}</x-radio>
-          <x-radio :label="'END'">{{$t('End')}}</x-radio>
-        </x-radio-group>
+        <el-radio-group v-model="failureStrategy" style="margin-top: 7px;" size="small">
+          <el-radio :label="'CONTINUE'">{{$t('Continue')}}</el-radio>
+          <el-radio :label="'END'">{{$t('End')}}</el-radio>
+        </el-radio-group>
       </div>
     </div>
     <div class="clearfix list">
@@ -84,16 +84,17 @@
         {{$t('Notification strategy')}}
       </div>
       <div class="cont">
-        <x-select
-                style="width: 200px;"
-                v-model="warningType">
-          <x-option
-                  v-for="city in warningTypeList"
-                  :key="city.id"
-                  :value="city.id"
-                  :label="city.code">
-          </x-option>
-        </x-select>
+        <el-select
+          style="width: 200px;"
+          size="small"
+          v-model="warningType">
+          <el-option
+            v-for="city in warningTypeList"
+            :key="city.id"
+            :value="city.id"
+            :label="city.code">
+          </el-option>
+        </el-select>
       </div>
     </div>
     <div class="clearfix list">
@@ -117,21 +118,22 @@
         {{$t('Notification group')}}
       </div>
       <div class="cont">
-        <x-select
-                style="width: 200px;"
-                :disabled="!notifyGroupList.length"
-                v-model="warningGroupId">
-          <x-input slot="trigger" readonly slot-scope="{ selectedModel }" :placeholder="$t('Please select a notification group')" :value="selectedModel ? selectedModel.label : ''" style="width: 200px;" @on-click-icon.stop="warningGroupId = {}">
-            <em slot="suffix" class="ans-icon-fail-solid" style="font-size: 15px;cursor: pointer;" v-show="warningGroupId.id"></em>
-            <em slot="suffix" class="ans-icon-arrow-down" style="font-size: 12px;" v-show="!warningGroupId.id"></em>
-          </x-input>
-          <x-option
-                  v-for="city in notifyGroupList"
-                  :key="city.id"
-                  :value="city.id"
-                  :label="city.code">
-          </x-option>
-        </x-select>
+        <el-select
+          style="width: 200px;"
+          size="small"
+          :disabled="!notifyGroupList.length"
+          v-model="warningGroupId">
+          <el-input slot="trigger" readonly slot-scope="{ selectedModel }" :placeholder="$t('Please select a notification group')" :value="selectedModel ? selectedModel.label : ''" style="width: 200px;" @on-click-icon.stop="warningGroupId = {}">
+            <em slot="suffix" class="el-icon-error" style="font-size: 15px;cursor: pointer;" v-show="warningGroupId.id"></em>
+            <em slot="suffix" class="el-icon-bottom" style="font-size: 12px;" v-show="!warningGroupId.id"></em>
+          </el-input>
+          <el-option
+            v-for="city in notifyGroupList"
+            :key="city.id"
+            :value="city.id"
+            :label="city.code">
+          </el-option>
+        </el-select>
       </div>
     </div>
     <div class="clearfix list">
@@ -151,8 +153,8 @@
       </div>
     </div>
     <div class="submit">
-      <x-button type="text" @click="close()"> {{$t('Cancel')}} </x-button>
-      <x-button type="primary" shape="circle" :loading="spinnerLoading" @click="ok()">{{spinnerLoading ? 'Loading...' : (item.crontab ? $t('Edit') : $t('Create'))}} </x-button>
+      <el-button type="text" size="small" @click="close()"> {{$t('Cancel')}} </el-button>
+      <el-button type="primary" size="small" round :loading="spinnerLoading" @click="ok()">{{spinnerLoading ? 'Loading...' : (timingData.item.crontab ? $t('Edit') : $t('Create'))}} </el-button>
     </div>
   </div>
 </template>
@@ -191,10 +193,7 @@
       }
     },
     props: {
-      item: Object,
-      receiversD: Array,
-      receiversCcD: Array,
-      type: String
+      timingData: Object
     },
     methods: {
       _datepicker (val) {
@@ -237,19 +236,19 @@
           let msg = ''
 
           // edit
-          if (this.item.crontab) {
+          if (this.timingData.item.crontab) {
             api = 'dag/updateSchedule'
-            searchParams.id = this.item.id
+            searchParams.id = this.timingData.item.id
             msg = `${i18n.$t('Edit')}${i18n.$t('success')},${i18n.$t('Please go online')}`
           } else {
             api = 'dag/createSchedule'
-            searchParams.processDefinitionId = this.item.id
+            searchParams.processDefinitionId = this.timingData.item.id
             msg = `${i18n.$t('Create')}${i18n.$t('success')}`
           }
 
           this.store.dispatch(api, searchParams).then(res => {
             this.$message.success(msg)
-            this.$emit('onUpdate')
+            this.$emit('onUpdateTiming')
           }).catch(e => {
             this.$message.error(e.msg || '')
           })
@@ -294,7 +293,7 @@
         this._timing()
       },
       close () {
-        this.$emit('close')
+        this.$emit('closeTiming')
       },
       preview () {
         this._preview()
@@ -303,7 +302,7 @@
     watch: {
     },
     created () {
-      if(this.item.workerGroup===undefined) {
+      if(this.timingData.item.workerGroup===undefined) {
         let stateWorkerGroupsList = this.store.state.security.workerGroupsListAll || []
         if (stateWorkerGroupsList.length) {
           this.workerGroup = stateWorkerGroupsList[0].id
@@ -315,12 +314,12 @@
           })
         }
       } else {
-        this.workerGroup = this.item.workerGroup
+        this.workerGroup = this.timingData.item.workerGroup
       }
-      if(this.item.crontab !== null){
-        this.crontab = this.item.crontab
+      if(this.timingData.item.crontab !== null){
+        this.crontab = this.timingData.item.crontab
       }
-      if(this.type == 'timing') {
+      if(this.timingData.type == 'timing') {
         let date = new Date()
         let year = date.getFullYear()
         let month = date.getMonth() + 1
@@ -339,13 +338,13 @@
         this.crontab = '0 0 * * * ? *'
         this.scheduleTime = times
       }
-      this.receivers = _.cloneDeep(this.receiversD)
-      this.receiversCc = _.cloneDeep(this.receiversCcD)
+      this.receivers = _.cloneDeep(this.timingData.receiversD)
+      this.receiversCc = _.cloneDeep(this.timingData.receiversCcD)
     },
     mounted () {
-      let item = this.item
+      let item = this.timingData.item
       // Determine whether to echo
-      if (this.item.crontab) {
+      if (this.timingData.item.crontab) {
         this.crontab = item.crontab
         this.scheduleTime = [formatDate(item.startTime), formatDate(item.endTime)]
         this.failureStrategy = item.failureStrategy
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/versions.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/versions.vue
index fcc3410..14fe497 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/versions.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/_source/versions.vue
@@ -21,103 +21,69 @@
       <span class="name">{{$t('Version Info')}}</span>
     </div>
 
-    <div class="table-box" v-if="processDefinitionVersions.length > 0">
-      <table class="fixed">
-        <caption><!-- placeHolder --></caption>
-        <tr>
-          <th scope="col" style="min-width: 40px;text-align: left">
-            <span>{{$t('Version')}}</span>
-          </th>
-          <th scope="col" style="min-width: 30px">
-            <span>{{$t('Description')}}</span>
-          </th>
-          <th scope="col" style="min-width: 50px">
-            <span>{{$t('Create Time')}}</span>
-          </th>
-          <th scope="col" style="min-width: 300px">
-            <span>{{$t('Operation')}}</span>
-          </th>
-        </tr>
-        <tr v-for="(item, $index) in processDefinitionVersions" :key="item.id">
-          <td>
-            <span v-if="item.version">
-              <span v-if="item.version === processDefinition.version" style="color: green"><strong>{{item.version}} {{$t('Current Version')}}</strong></span>
-              <span v-else>{{item.version}}</span>
+    <div class="table-box" v-if="versionData.processDefinitionVersions.length > 0">
+      <el-table :data="versionData.processDefinitionVersions" size="mini" style="width: 100%">
+        <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+        <el-table-column prop="userName" :label="$t('Version')">
+          <template slot-scope="scope">
+            <span v-if="scope.row.version">
+              <span v-if="scope.row.version === versionData.processDefinition.version" style="color: green"><strong>{{scope.row.version}} {{$t('Current Version')}}</strong></span>
+              <span v-else>{{scope.row.version}}</span>
             </span>
             <span v-else>-</span>
-          </td>
-          <td style="word-break:break-all;">
-            <span v-if="item.description">{{item.description}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.createTime">{{item.createTime}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <x-poptip
-              :ref="'poptip-switch-version-' + $index"
-              placement="top-end"
-              width="260">
-              <p>{{$t('Confirm Switch To This Version?')}}</p>
-              <div style="text-align: right; margin: 0;padding-top: 4px;">
-                <x-button type="text" size="xsmall" shape="circle" @click="_closeSwitchVersion($index)">
-                  {{$t('Cancel')}}
-                </x-button>
-                <x-button type="primary" size="xsmall" shape="circle"
-                          @click="_mVersionSwitchProcessDefinitionVersion(item)">{{$t('Confirm')}}
-                </x-button>
-              </div>
-              <template slot="reference">
-                <x-button
-                  icon="ans-icon-dependence"
-                  type="primary"
-                  shape="circle"
-                  size="xsmall"
-                  :disabled="item.version === processDefinition.version || 'ONLINE' === processDefinition.state"
-                  data-toggle="tooltip"
-                  :title="$t('Switch To This Version')">
-                </x-button>
-              </template>
-            </x-poptip>
-            <x-poptip
-              :ref="'poptip-delete-' + $index"
-              placement="top-end"
-              width="90">
-              <p>{{$t('Delete?')}}</p>
-              <div style="text-align: right; margin: 0;padding-top: 4px;">
-                <x-button type="text" size="xsmall" shape="circle" @click="_closeDelete($index)">{{$t('Cancel')}}
-                </x-button>
-                <x-button type="primary" size="xsmall" shape="circle"
-                          @click="_mVersionDeleteProcessDefinitionVersion(item,$index)">{{$t('Confirm')}}
-                </x-button>
-              </div>
-              <template slot="reference">
-                <x-button
-                  icon="ans-icon-trash"
-                  type="error"
-                  shape="circle"
-                  size="xsmall"
-                  :disabled="item.version === processDefinition.version || 'ONLINE' === processDefinition.state"
-                  data-toggle="tooltip"
-                  :title="$t('delete')">
-                </x-button>
-              </template>
-            </x-poptip>
-          </td>
-        </tr>
-      </table>
+          </template>
+        </el-table-column>
+        <el-table-column prop="description" :label="$t('Description')"></el-table-column>
+        <el-table-column :label="$t('Create Time')" min-width="120">
+          <template slot-scope="scope">
+            <span>{{scope.row.createTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Operation')" width="100">
+          <template slot-scope="scope">
+            <el-tooltip :content="$t('Switch To This Version')" placement="top">
+              <el-popconfirm
+                :confirmButtonText="$t('Confirm')"
+                :cancelButtonText="$t('Cancel')"
+                icon="el-icon-info"
+                iconColor="red"
+                :title="$t('Confirm Switch To This Version?')"
+                @onConfirm="_mVersionSwitchProcessDefinitionVersion(scope.row)"
+              >
+                <el-button type="primary" size="mini" icon="el-icon-warning" circle slot="reference"></el-button>
+              </el-popconfirm>
+            </el-tooltip>
+            <el-tooltip :content="$t('delete')" placement="top">
+              <el-popconfirm
+                :confirmButtonText="$t('Confirm')"
+                :cancelButtonText="$t('Cancel')"
+                icon="el-icon-info"
+                iconColor="red"
+                :title="$t('Delete?')"
+                @onConfirm="_mVersionDeleteProcessDefinitionVersion(scope.row,scope.row.id)"
+              >
+                <el-button type="danger" size="mini" icon="el-icon-delete" circle slot="reference"></el-button>
+              </el-popconfirm>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+      </el-table>
     </div>
 
-    <div v-if="processDefinitionVersions.length === 0">
+    <div v-if="versionData.processDefinitionVersions.length === 0">
       <m-no-data><!----></m-no-data>
     </div>
 
-    <div v-if="processDefinitionVersions.length > 0">
+    <div v-if="versionData.processDefinitionVersions.length > 0">
       <div class="bottom-box">
-        <x-button type="text" @click="_close()"> {{$t('Cancel')}}</x-button>
-        <x-page :current="pageNo" :total="total" @on-change="_mVersionGetProcessDefinitionVersionsPage" small>
-          <!----></x-page>
+        <el-pagination
+            style="float:right"
+            background
+            @current-change="_mVersionGetProcessDefinitionVersionsPage"
+            layout="prev, pager, next"
+            :total="versionData.total">
+          </el-pagination>
+        <el-button type="text" size="mini" @click="_close()" style="float:right">{{$t('Cancel')}}</el-button>
       </div>
     </div>
 
@@ -144,11 +110,7 @@
       }
     },
     props: {
-      processDefinition: Object,
-      processDefinitionVersions: Array,
-      total: Number,
-      pageNo: Number,
-      pageSize: Number
+      versionData: Object
     },
     methods: {
       /**
@@ -157,7 +119,7 @@
       _mVersionSwitchProcessDefinitionVersion (item) {
         this.$emit('mVersionSwitchProcessDefinitionVersion', {
           version: item.version,
-          processDefinitionId: this.processDefinition.id,
+          processDefinitionId: this.versionData.processDefinition.id,
           fromThis: this
         })
       },
@@ -168,7 +130,7 @@
       _mVersionDeleteProcessDefinitionVersion (item) {
         this.$emit('mVersionDeleteProcessDefinitionVersion', {
           version: item.version,
-          processDefinitionId: this.processDefinition.id,
+          processDefinitionId: this.versionData.processDefinition.id,
           fromThis: this
         })
       },
@@ -180,25 +142,10 @@
         this.$emit('mVersionGetProcessDefinitionVersionsPage', {
           pageNo: val,
           pageSize: this.pageSize,
-          processDefinitionId: this.processDefinition.id,
+          processDefinitionId: this.versionData.processDefinition.id,
           fromThis: this
         })
       },
-
-      /**
-       * Close the switch version layer
-       */
-      _closeSwitchVersion (i) {
-        this.$refs[`poptip-switch-version-${i}`][0].doClose()
-      },
-
-      /**
-       * Close the delete layer
-       */
-      _closeDelete (i) {
-        this.$refs[`poptip-delete-${i}`][0].doClose()
-      },
-
       /**
        * Close and destroy component and component internal events
        */
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/index.vue
index eb5d335..fabd736 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/list/index.vue
@@ -20,8 +20,8 @@
       <template slot="conditions">
         <m-conditions @on-conditions="_onConditions">
           <template slot="button-group">
-            <x-button type="ghost" size="small"  @click="() => this.$router.push({name: 'definition-create'})">{{$t('Create process')}}</x-button>
-            <x-button type="ghost" size="small"  @click="_uploading">{{$t('Import process')}}</x-button>
+            <el-button size="mini"  @click="() => this.$router.push({name: 'definition-create'})">{{$t('Create process')}}</el-button>
+            <el-button size="mini"  @click="_uploading">{{$t('Import process')}}</el-button>
           </template>
         </m-conditions>
       </template>
@@ -29,7 +29,16 @@
         <template v-if="processListP.length || total>0">
           <m-list :process-list="processListP" @on-update="_onUpdate" :page-no="searchParams.pageNo" :page-size="searchParams.pageSize"></m-list>
           <div class="page-box">
-            <x-page :current="parseInt(searchParams.pageNo)" :total="total" show-elevator @on-change="_page" show-sizer :page-size-options="[10,30,50]" @on-size-change="_pageSize"></x-page>
+            <el-pagination
+              background
+              @current-change="_page"
+              @size-change="_pageSize"
+              :page-size="searchParams.pageSize"
+              :current-page.sync="searchParams.pageNo"
+              :page-sizes="[10, 30, 50]"
+              layout="sizes, prev, pager, next, jumper"
+              :total="total">
+            </el-pagination>
           </div>
         </template>
         <template v-if="!processListP.length && total<=0">
@@ -138,7 +147,7 @@
       localStore.removeItem('subProcessId')
     },
     mounted() {
-      this.$modal.destroy()
+      
     },
     beforeDestroy () {
       sessionStorage.setItem('isLeft',1)
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/tree/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/tree/index.vue
index bbc1825..0c80d18 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/tree/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/pages/tree/index.vue
@@ -18,29 +18,29 @@
   <m-list-construction :title="$t('TreeView')">
     <template slot="operation">
       <span style=" float: right; padding-right:50px">
-        <em class="ans-icon-fail-empty" style="font-size:20px " data-container="body" data-toggle="tooltip" :title="$t('Return')" @click="_close()"></em>
+        <em class="el-icon-back" style="font-size:20px " data-container="body" data-toggle="tooltip" :title="$t('Return')" @click="_close()"></em>
       </span>
     </template>
     <template slot="conditions"></template>
     <template slot="content">
       <div class="tree-view-index-model">
         <div class="tree-limit-select">
-          <x-select v-model="limit" style="width: 70px;" @on-change="_onChangeSelect">
-            <x-option
+          <el-select v-model="limit" style="width: 70px;" @change="_onChangeSelect" size="small">
+            <el-option
                     v-for="city in [{value:25},{value:50},{value:75},{value:100}]"
                     :key="city.value"
                     :value="city.value"
                     :label="city.value">
-            </x-option>
-          </x-select>
-          <x-button
+            </el-option>
+          </el-select>
+          <el-button
                   @click="_rtTasksDag"
                   v-if="$route.query.subProcessIds"
                   type="primary"
-                  size="default"
-                  icon="ans-icon-arrow-to-left">
+                  size="small"
+                  icon="el-icon-d-arrow-left">
             {{$t('Return_1')}}
-          </x-button>
+          </el-button>
         </div>
         <div class="tasks-color">
           <div class="toolbar-color-sp">
@@ -48,7 +48,7 @@
               <span>Node Type</span>
             </a>
             <a href="javascript:" v-for="(k,v) in tasksType" :key="v">
-              <em class="ans-icon-circle-solid" :style="{color:k.color}"></em>
+              <em class="el-icon-user-solid" :style="{color:k.color}"></em>
               <span>{{v}}</span>
             </a>
           </div>
@@ -57,7 +57,7 @@
               <span>{{$t('Task Status')}}</span>
             </a>
             <a href="javascript:" v-for="(item) in tasksState" :key="item.id">
-              <em class="ans-icon-rect-solid" :style="{color:item.color}"></em>
+              <em class="fa fa-square" :style="{color:item.color}"></em>
               <span>{{item.desc}}</span>
             </a>
           </div>
@@ -189,7 +189,7 @@
         this.$router.push({ path: `/projects/definition/tree/${subProcessId}`, query: { subProcessIds: subProcessIds.join(',') } })
       },
       _onChangeSelect (o) {
-        this.limit = o.value
+        this.limit = o
         this._getViewTree()
       }
     },
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/_source/list.vue
index 7b0b2c3..68ec207 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/_source/list.vue
@@ -22,125 +22,74 @@
     <div class="list-model" v-if="!isLoading">
       <template v-if="list.length">
         <div class="table-box">
-          <table>
-            <tr>
-              <th>
-                <span>{{$t('#')}}</span>
-              </th>
-              <th>
-                <span>{{$t('Process Name')}}</span>
-              </th>
-              <th>
-                <span>{{$t('Start Time')}}</span>
-              </th>
-              <th>
-                <span>{{$t('End Time')}}</span>
-              </th>
-              <th>
-                <span>{{$t('crontab')}}</span>
-              </th>
-              <th>
-                <span>{{$t('Failure Strategy')}}</span>
-              </th>
-              <th>
-                <span>{{$t('State')}}</span>
-              </th>
-              <th>
-                <span>{{$t('Create Time')}}</span>
-              </th>
-              <th>
-                <span>{{$t('Update Time')}}</span>
-              </th>
-              <th width="120">
-                <span>{{$t('Operation')}}</span>
-              </th>
-            </tr>
-            <tr v-for="(item, $index) in list" :key="item.id">
-              <td>
-                <span>{{parseInt(pageNo === 1 ? ($index + 1) : (($index + 1) + (pageSize * (pageNo - 1))))}}</span>
-              </td>
-              <td>
-                <span><a href="javascript:">{{item.processDefinitionName}}</a></span>
-              </td>
-              <td>
-                <span>{{item.startTime | formatDate}}</span>
-              </td>
-              <td>
-                <span>{{item.endTime | formatDate}}</span>
-              </td>
-              <td>
-                <span>{{item.crontab}}</span>
-              </td>
-              <td>
-                <span>{{item.failureStrategy}}</span>
-              </td>
-              <td>
-                <span>{{_rtReleaseState(item.releaseState)}}</span>
-              </td>
-              <td>
-                <span>{{item.createTime | formatDate}}</span>
-              </td>
-              <td>
-                <span>{{item.updateTime | formatDate}}</span>
-              </td>
-              <td>
-                <x-button
-                        type="info"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="$t('Edit')"
-                        @click="_editTiming(item)"
-                        icon="ans-icon-edit"
-                        :disabled="item.releaseState === 'ONLINE'" >
-                </x-button>
-                <x-button
-                        type="warning"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="$t('online')"
-                        @click="_online(item)"
-                        icon="ans-icon-upward"
-                        v-if="item.releaseState === 'OFFLINE'">
-                </x-button>
-                <x-button
-                        type="error"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="$t('offline')"
-                        icon="ans-icon-downward"
-                        @click="_offline(item)"
-                        v-if="item.releaseState === 'ONLINE'">
-                </x-button>
-                <x-poptip
-                        :ref="'poptip-delete-' + $index"
-                        placement="bottom-end"
-                        width="90">
-                  <p>{{$t('Delete?')}}</p>
-                  <div style="text-align: right; margin: 0;padding-top: 4px;">
-                    <x-button type="text" size="xsmall" shape="circle" @click="_closeDelete($index)">{{$t('Cancel')}}</x-button>
-                    <x-button type="primary" size="xsmall" shape="circle" @click="_delete(item,$index)">{{$t('Confirm')}}</x-button>
-                  </div>
-                  <template slot="reference">
-                    <x-button
-                            icon="ans-icon-trash"
-                            type="error"
-                            shape="circle"
-                            size="xsmall"
-                            :disabled="item.releaseState === 'ONLINE'"
-                            data-toggle="tooltip"
-                            :title="$t('delete')">
-                    </x-button>
-                  </template>
-                </x-poptip>
-              </td>
-            </tr>
-          </table>
+          <el-table :data="list" size="mini" style="width: 100%">
+            <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+            <el-table-column prop="processDefinitionName" :label="$t('Process Name')"></el-table-column>
+            <el-table-column :label="$t('Start Time')" min-width="120">
+              <template slot-scope="scope">
+                <span>{{scope.row.startTime | formatDate}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column :label="$t('End Time')" min-width="120">
+              <template slot-scope="scope">
+                <span>{{scope.row.endTime | formatDate}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column prop="crontab" :label="$t('crontab')"></el-table-column>
+            <el-table-column prop="failureStrategy" :label="$t('Failure Strategy')"></el-table-column>
+            <el-table-column :label="$t('State')">
+              <template slot-scope="scope">
+                <span>{{_rtReleaseState(scope.row.releaseState)}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column :label="$t('Create Time')" min-width="120">
+              <template slot-scope="scope">
+                <span>{{scope.row.createTime | formatDate}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column :label="$t('Update Time')" min-width="120">
+              <template slot-scope="scope">
+                <span>{{scope.row.updateTime | formatDate}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column :label="$t('Operation')" width="120">
+              <template slot-scope="scope">
+                <el-tooltip :content="$t('Edit')" placement="top">
+                  <span><el-button type="primary" size="mini" icon="el-icon-edit-outline" :disabled="scope.row.releaseState === 'ONLINE'" @click="_editTiming(scope.row)" circle></el-button></span>
+                </el-tooltip>
+                <el-tooltip :content="$t('online')" placement="top" v-if="scope.row.releaseState === 'OFFLINE'">
+                  <span><el-button type="warning" size="mini" icon="el-icon-upload2" @click="_online(scope.row)" circle></el-button></span>
+                </el-tooltip>
+                <el-tooltip :content="$t('offline')" placement="top" v-if="scope.row.releaseState === 'ONLINE'">
+                  <span><el-button type="danger" size="mini" icon="el-icon-download" @click="_offline(scope.row)" circle></el-button></span>
+                </el-tooltip>
+                <el-tooltip :content="$t('delete')" placement="top">
+                  <el-popconfirm
+                    :confirmButtonText="$t('Confirm')"
+                    :cancelButtonText="$t('Cancel')"
+                    icon="el-icon-info"
+                    iconColor="red"
+                    :title="$t('Delete?')"
+                    @onConfirm="_delete(scope.row,scope.row.id)"
+                  >
+                    <el-button type="danger" size="mini" icon="el-icon-delete" circle slot="reference"></el-button>
+                  </el-popconfirm>
+                </el-tooltip>
+              </template>
+            </el-table-column>
+          </el-table>
         </div>
         <div class="page-box">
-          <x-page :current="pageNo" :total="total" show-elevator @on-change="_page" show-sizer :page-size-options="[10,30,50]" @on-size-change="_pageSize"></x-page>
+          <el-pagination
+            background
+            @current-change="_page"
+            @size-change="_pageSize"
+            :page-size="pageSize"
+            :current-page.sync="pageNo"
+            :page-sizes="[10, 30, 50]"
+            layout="sizes, prev, pager, next, jumper"
+            :total="total">
+          </el-pagination>
         </div>
       </template>
       <template v-if="!list.length">
@@ -148,6 +97,12 @@
       </template>
     </div>
     <m-spin :is-spin="isLoading"></m-spin>
+    <el-dialog
+      :title="$t('Set parameters before timing')"
+      :visible.sync="timingDialog"
+      width="65%">
+      <m-timing :timingData="timingData" @onUpdateTiming="onUpdateTiming" @closeTiming="closeTiming"></m-timing>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -166,7 +121,13 @@
         total: null,
         pageNo: 1,
         pageSize: 10,
-        list: []
+        list: [],
+        timingDialog: false,
+        timingData: {
+          item: {},
+          receiversD: [],
+          receiversCcD: []
+        }
       }
     },
     props: {
@@ -285,43 +246,28 @@
        * timing
        */
       _editTiming (item) {
-        let self = this
         this._getReceiver(item.processDefinitionId).then(res => {
-          let modal = this.$modal.dialog({
-            closable: false,
-            showMask: true,
-            escClose: true,
-            className: 'v-modal-custom',
-            transitionName: 'opacityp',
-            render (h) {
-              return h(mTiming, {
-                on: {
-                  onUpdate () {
-                    self.pageNo = 1
-                    self._getScheduleList('false')
-                    modal.remove()
-                  },
-                  close () {
-                    modal.remove()
-                  }
-                },
-                props: {
-                  item: item,
-                  receiversD: res.receivers,
-                  receiversCcD: res.receiversCc
-                }
-              })
-            }
-          })
+          this.timingData.item = item
+          this.timingData.receiversD = res.receivers
+          this.timingData.receiversCcD = res.receiversCc
+          this.timingDialog = true
         })
-      }
+      },
+      onUpdateTiming () {
+        this.pageNo = 1
+        this._getScheduleList('false')
+        this.timingDialog = false
+      },
+      closeTiming () {
+        this.timingDialog = false
+      },
     },
     watch: {},
     created () {
       this._getScheduleList()
     },
     mounted () {},
-    components: { mSpin, mNoData }
+    components: { mSpin, mNoData, mTiming }
   }
 </script>
 
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/index.vue
index efd5489..17a4964 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/definition/timing/index.vue
@@ -18,7 +18,7 @@
   <m-list-construction :title="$t('Cron Manage')">
     <template slot="operation">
       <span style=" float: right; padding-right:50px">
-        <em class="ans-icon-fail-empty" style="font-size:20px " data-container="body" data-toggle="tooltip" :title="$t('Return')" @click="_close()"></em>
+        <em class="el-icon-circle-close" style="font-size:20px " data-container="body" data-toggle="tooltip" :title="$t('Return')" @click="_close()"></em>
       </span>
     </template>
     <template slot="content">
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/index/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/index/index.vue
index 7ca6e3a..560b72e 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/index/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/index/index.vue
@@ -19,15 +19,16 @@
     <template slot="content">
       <div class="perject-home-content">
         <div class="time-model">
-          <x-datepicker
-                  :panel-num="2"
-                  placement="bottom-end"
-                  @on-change="_datepicker"
-                  :value="[searchParams.startDate,searchParams.endDate]"
-                  type="daterange"
-                  :placeholder="$t('Select date range')"
-                  format="YYYY-MM-DD HH:mm:ss">
-          </x-datepicker>
+          <el-date-picker
+            v-model="dataTime"
+            type="datetimerange"
+            size="small"
+            @change="_datepicker"
+            range-separator="-"
+            :start-placeholder="$t('startDate')"
+            :end-placeholder="$t('endDate')"
+            value-format="yyyy-MM-dd HH:mm:ss">
+          </el-date-picker>
         </div>
         <div class="row" >
           <div class="col-md-6">
@@ -83,7 +84,8 @@
           projectId: null,
           startDate: '',
           endDate: ''
-        }
+        },
+        dataTime: [],
       }
     },
     props: {
@@ -97,8 +99,8 @@
     },
     created () {
       this.searchParams.projectId = this.id === 0 ? 0 : localStore.getItem('projectId')
-      this.searchParams.startDate = dayjs().format('YYYY-MM-DD 00:00:00')
-      this.searchParams.endDate = dayjs().format('YYYY-MM-DD HH:mm:ss')
+      this.dataTime[0] = dayjs().format('YYYY-MM-DD 00:00:00')
+      this.dataTime[1] = dayjs().format('YYYY-MM-DD HH:mm:ss')
     },
     components: {
       mSecondaryMenu,
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/gantt/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/gantt/index.vue
index e2e7d9b..b39152e 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/gantt/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/gantt/index.vue
@@ -24,7 +24,7 @@
               <span>{{$t('Task Status')}}</span>
             </a>
             <a href="javascript:" v-for="(item) in tasksState" :key="item.id">
-              <em class="ans-icon-rect-solid" :style="{color:item.color}"></em>
+              <em class="fa fa-square" :style="{color:item.color}"></em>
               <span>{{item.desc}}</span>
             </a>
           </div>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/_source/list.vue
index cda5996..9e869f5 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/_source/list.vue
@@ -17,289 +17,206 @@
 <template>
   <div class="list-model" style="position: relative;">
     <div class="table-box">
-      <table class="fixed">
-        <tr>
-          <th scope="col" style="min-width: 50px">
-            <x-checkbox @on-change="_topCheckBoxClick" v-model="checkAll"></x-checkbox>
-          </th>
-          <th scope="col" style="min-width: 30px">
-            <span>{{$t('#')}}</span>
-          </th>
-          <th scope="col" style="min-width: 200px;max-width: 300px;">
-            <span>{{$t('Process Name')}}</span>
-          </th>
-          <th scope="col" style="min-width: 30px">
-            <span>{{$t('State')}}</span>
-          </th>
-          <th scope="col" style="min-width: 70px">
-            <span>{{$t('Run Type')}}</span>
-          </th>
-          <th scope="col" style="min-width: 130px">
-            <span>{{$t('Scheduling Time')}}</span>
-          </th>
-          <th scope="col" style="min-width: 130px">
-            <span>{{$t('Start Time')}}</span>
-          </th>
-          <th scope="col" style="min-width: 130px">
-            <span>{{$t('End Time')}}</span>
-          </th>
-          <th scope="col" style="min-width: 60px">
-            <span>{{$t('Duration')}}s</span>
-          </th>
-          <th scope="col" style="min-width: 60px">
-            <span>{{$t('Run Times')}}</span>
-          </th>
-          <th scope="col" style="min-width: 55px">
-            <span>{{$t('fault-tolerant sign')}}</span>
-          </th>
-          <th scope="col" style="min-width: 135px">
-            <span>{{$t('Executor')}}</span>
-          </th>
-          <th scope="col" style="min-width: 100px">
-            <div style="width: 100px">
-              <span>{{$t('host')}}</span>
-            </div>
-          </th>
-          <th scope="col" style="min-width: 210px">
-            <span>{{$t('Operation')}}</span>
-          </th>
-        </tr>
-        <tr v-for="(item, $index) in list" :key="item.id">
-          <td width="50"><x-checkbox v-model="item.isCheck" @on-change="_arrDelChange"></x-checkbox></td>
-          <td width="50">
-            <span>{{parseInt(pageNo === 1 ? ($index + 1) : (($index + 1) + (pageSize * (pageNo - 1))))}}</span>
-          </td>
-          <td style="min-width: 200px;max-width: 300px;padding-right: 10px;">
-            <span class="ellipsis" style="padding-left: 4px;"><router-link :to="{ path: '/projects/instance/list/' + item.id , query:{id: item.processDefinitionId}}" tag="a" class="links" :title="item.name">{{item.name}}</router-link></span>
-          </td>
-          <td>
-            <span v-html="_rtState(item.state)" style="cursor: pointer;"></span>
-          </td>
-          <td><span>{{_rtRunningType(item.commandType)}}</span></td>
-          <td>
-            <span v-if="item.scheduleTime">{{item.scheduleTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.startTime">{{item.startTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.endTime">{{item.endTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td width="70"><span>{{item.duration || '-'}}</span></td>
-          <td width="70"><span>{{item.runTimes}}</span></td>
-          <td><span>{{item.recovery}}</span></td>
-          <td>
-            <span v-if="item.executorName">{{item.executorName}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.host" style="word-break: break-all">{{item.host}}</span>
+      <el-table :data="list" size="mini" style="width: 100%" @selection-change="_arrDelChange">
+        <el-table-column type="selection" width="50"></el-table-column>
+        <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+        <el-table-column :label="$t('Process Name')" min-width="200">
+          <template slot-scope="scope">
+            <el-popover trigger="hover" placement="top">
+              <p>{{ scope.row.name }}</p>
+              <div slot="reference" class="name-wrapper">
+                <router-link :to="{ path: '/projects/instance/list/' + scope.row.id , query:{id: scope.row.processDefinitionId}}" tag="a" class="links" :title="scope.row.name">{{scope.row.name}}</router-link>
+              </div>
+            </el-popover>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('State')" width="50">
+          <template slot-scope="scope">
+            <span v-html="_rtState(scope.row.state)" style="cursor: pointer;"></span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Run Type')">
+          <template slot-scope="scope">
+            {{_rtRunningType(scope.row.commandType)}}
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Scheduling Time')" width="135">
+          <template slot-scope="scope">
+            <span v-if="scope.row.scheduleTime">{{scope.row.scheduleTime | formatDate}}</span>
             <span v-else>-</span>
-          </td>
-          <td style="z-index: inherit;">
-            <div v-show="item.disabled">
-              <x-button type="info"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="$t('Edit')"
-                        @click="_reEdit(item)"
-                        icon="ans-icon-edit"
-                        :disabled="item.state !== 'SUCCESS' && item.state !== 'PAUSE' && item.state !== 'FAILURE' && item.state !== 'STOP'"></x-button>
-              <x-button type="info"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="$t('Rerun')"
-                        @click="_reRun(item,$index)"
-                        icon="ans-icon-refresh"
-                        :disabled="item.state !== 'SUCCESS' && item.state !== 'PAUSE' && item.state !== 'FAILURE' && item.state !== 'STOP'"></x-button>
-              <x-button type="success"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="$t('Recovery Failed')"
-                        @click="_restore(item,$index)"
-                        icon="ans-icon-fail-empty"
-                        :disabled="item.state !== 'FAILURE'"></x-button>
-              <x-button type="error"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="item.state === 'STOP' ? $t('Recovery Suspend') : $t('Stop')"
-                        @click="_stop(item,$index)"
-                        :icon="item.state === 'STOP' ? 'ans-icon-pause-solid' : 'ans-icon-stop'"
-                        :disabled="item.state !== 'RUNNING_EXECUTION' && item.state != 'STOP'"></x-button>
-              <x-button type="warning"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="item.state === 'PAUSE' ? $t('Recovery Suspend') : $t('Pause')"
-                        @click="_suspend(item,$index)"
-                        :icon="item.state === 'PAUSE' ? 'ans-icon-pause-solid' : 'ans-icon-pause'"
-                        :disabled="item.state !== 'RUNNING_EXECUTION' && item.state !== 'PAUSE'"></x-button>
-              <x-poptip
-                      :ref="'poptip-delete-' + $index"
-                      placement="top-end"
-                      width="90">
-                <p>{{$t('Delete?')}}</p>
-                <div style="text-align: right; margin: 0;padding-top: 4px;">
-                  <x-button type="text" size="xsmall" shape="circle" @click="_closeDelete($index)">{{$t('Cancel')}}</x-button>
-                  <x-button type="primary" size="xsmall" shape="circle" @click="_delete(item,$index)">{{$t('Confirm')}}</x-button>
-                </div>
-                <template slot="reference">
-                  <x-button
-                          icon="ans-icon-trash"
-                          type="error"
-                          shape="circle"
-                          size="xsmall"
-                          data-toggle="tooltip"
-                          :disabled="item.state !== 'SUCCESS' && item.state !== 'FAILURE' && item.state !== 'STOP' && item.state !== 'PAUSE'"
-                          :title="$t('delete')">
-                  </x-button>
-                </template>
-              </x-poptip>
-
-              <x-button type="info"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="$t('Gantt')"
-                        @click="_gantt(item)"
-                        icon="ans-icon-gantt">
-              </x-button>
-
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Start Time')" width="135">
+          <template slot-scope="scope">
+            <span>{{scope.row.startTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('End Time')" width="135">
+          <template slot-scope="scope">
+            <span>{{scope.row.endTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="duration" :label="$t('Duration')"></el-table-column>
+        <el-table-column prop="runTimes" :label="$t('Run Times')"></el-table-column>
+        <el-table-column prop="recovery" :label="$t('fault-tolerant sign')"></el-table-column>
+        <el-table-column prop="executorName" :label="$t('Executor')"></el-table-column>
+        <el-table-column prop="host" :label="$t('host')" width="150"></el-table-column>
+        <el-table-column :label="$t('Operation')" width="240" fixed="right">
+          <template slot-scope="scope">
+            <div v-show="scope.row.disabled">
+              <el-tooltip :content="$t('Edit')" placement="top" :enterable="false">
+                <span>
+                  <el-button type="primary" size="mini" icon="el-icon-edit-outline" :disabled="scope.row.state !== 'SUCCESS' && scope.row.state !== 'PAUSE' && scope.row.state !== 'FAILURE' && scope.row.state !== 'STOP'" @click="_reEdit(scope.row)" circle></el-button>
+                </span>
+              </el-tooltip>
+              <el-tooltip :content="$t('Rerun')" placement="top" :enterable="false">
+                <span><el-button type="primary" size="mini" :disabled="scope.row.state !== 'SUCCESS' && scope.row.state !== 'PAUSE' && scope.row.state !== 'FAILURE' && scope.row.state !== 'STOP'"  icon="el-icon-refresh" @click="_reRun(scope.row,scope.$index)" circle></el-button></span>
+              </el-tooltip>
+              <el-tooltip :content="$t('Recovery Failed')" placement="top" :enterable="false">
+                <span>
+                  <el-button type="success" size="mini" icon="el-icon-circle-close" :disabled="scope.row.state !== 'FAILURE'" @click="_restore(scope.row,scope.$index)" circle></el-button>
+                </span>
+              </el-tooltip>
+              <el-tooltip :content="scope.row.state === 'STOP' ? $t('Recovery Suspend') : $t('Stop')" placement="top" :enterable="false">
+                <span><el-button type="warning" size="mini" :disabled="scope.row.state !== 'RUNNING_EXECUTION' && scope.row.state != 'STOP'"  :icon="scope.row.state === 'STOP' ? 'el-icon-video-play' : 'el-icon-close'" @click="_stop(scope.row,scope.$index)" circle></el-button></span>
+              </el-tooltip>
+              <el-tooltip :content="scope.row.state === 'PAUSE' ? $t('Recovery Suspend') : $t('Pause')" placement="top" :enterable="false">
+                <span><el-button type="error" size="mini" :icon="scope.row.state === 'PAUSE' ? 'el-icon-video-play' : 'el-icon-video-pause'" :disabled="scope.row.state !== 'RUNNING_EXECUTION' && scope.row.state !== 'PAUSE'" @click="_suspend(scope.row,scope.$index)" circle></el-button></span>
+              </el-tooltip>
+              <el-tooltip :content="$t('delete')" placement="top" :enterable="false">
+                <el-button type="danger" size="mini" icon="el-icon-delete" circle></el-button>
+                <el-popconfirm
+                  :confirmButtonText="$t('Confirm')"
+                  :cancelButtonText="$t('Cancel')"
+                  icon="el-icon-info"
+                  iconColor="red"
+                  :title="$t('Delete?')"
+                  @onConfirm="_delete(scope.row,scope.row.id)">
+                  <el-button type="danger" size="mini" icon="el-icon-delete" :disabled="scope.row.releaseState === 'ONLINE'" circle slot="reference"></el-button>
+                </el-popconfirm>
+              </el-tooltip>
+              <el-tooltip :content="$t('Gantt')" placement="top" :enterable="false">
+                <span><el-button type="primary" size="mini" icon="el-icon-s-operation" @click="_gantt(scope.row)" circle></el-button></span>
+              </el-tooltip>
             </div>
-            <div v-show="!item.disabled">
+            <div v-show="!scope.row.disabled">
               <!--Edit-->
-              <x-button
+              <el-button
                       type="info"
-                      shape="circle"
-                      size="xsmall"
-                      icon="ans-icon-edit"
-                      disabled="true">
-              </x-button>
+                      size="mini"
+                      icon="el-icon-edit-outline"
+                      disabled="true"
+                      circle>
+              </el-button>
 
               <!--Rerun-->
-              <x-button
-                      v-show="buttonType === 'run'"
-                      type="info"
-                      shape="circle"
-                      size="xsmall"
-                      disabled="true">
-                {{item.count}}
-              </x-button>
-              <x-button
+              <el-tooltip :content="$t('Rerun')" placement="top" :enterable="false">
+                <span>
+                  <el-button
+                    v-show="buttonType === 'run'"
+                    type="info"
+                    size="mini"
+                    disabled="true"
+                    circle>
+                    <span style="padding: 0 2px">{{scope.row.count}}</span>
+                  </el-button>
+                </span>
+              </el-tooltip>
+              <el-button
                       v-show="buttonType !== 'run'"
                       type="info"
-                      shape="circle"
-                      size="xsmall"
-                      icon="ans-icon-refresh"
-                      disabled="true">
-              </x-button>
+                      size="mini"
+                      icon="el-icon-refresh"
+                      disabled="true"
+                      circle>
+              </el-button>
 
-              <!--Recovery Failed-->
-              <x-button
-                      v-show="buttonType === 'store'"
-                      type="success"
-                      shape="circle"
-                      size="xsmall"
-                      disabled="true">
-                {{item.count}}
-              </x-button>
-              <x-button
-                      v-show="buttonType !== 'store'"
-                      type="success"
-                      shape="circle"
-                      size="xsmall"
-                      icon="ans-icon-fail-empty"
-                      disabled="true">
-              </x-button>
+              <span>
+                <el-button
+                  v-show="buttonType === 'store'"
+                  type="success"
+                  size="mini"
+                  circle
+                  disabled="true">
+                  <span style="padding: 0 3px">{{scope.row.count}}</span>
+                </el-button>
+              </span>
+              <el-button
+                  v-show="buttonType !== 'store'"
+                  type="success"
+                  size="mini"
+                  circle
+                  icon="el-icon-circle-close"
+                  disabled="true">
+              </el-button>
 
-              <!--Stop-->
-              <!--<x-button-->
-                      <!--type="error"-->
-                      <!--shape="circle"-->
-                      <!--size="xsmall"-->
-                      <!--icon="ans-icon-pause"-->
-                      <!--disabled="true">-->
-              <!--</x-button>-->
-
-              <!--倒计时 => Recovery Suspend/Pause-->
-              <x-button
-                      v-show="(item.state === 'PAUSE' || item.state == 'STOP') && buttonType === 'suspend'"
-                      type="warning"
-                      shape="circle"
-                      size="xsmall"
-                      disabled="true">
-                {{item.count}}
-              </x-button>
+              <!--Recovery Suspend/Pause-->
+              <span>
+                <el-button
+                  style="padding: 0 3px"
+                  v-show="(scope.row.state === 'PAUSE' || scope.row.state == 'STOP') && buttonType === 'suspend'"
+                  type="warning"
+                  size="mini"
+                  circle
+                  disabled="true">
+                  {{scope.row.count}}
+                </el-button>
+              </span>
+              
               <!--Recovery Suspend-->
-              <x-button
-                      v-show="(item.state === 'PAUSE' || item.state == 'STOP') && buttonType !== 'suspend'"
-                      type="warning"
-                      shape="circle"
-                      size="xsmall"
-                      icon="ans-icon-pause-solid"
-                      disabled="true">
-              </x-button>
+              <el-button
+                  v-show="(scope.row.state === 'PAUSE' || scope.row.state == 'STOP') && buttonType !== 'suspend'"
+                  type="warning"
+                  size="mini"
+                  circle
+                  icon="el-icon-video-play"
+                  disabled="true">
+              </el-button>
+
               <!--Pause-->
-              <x-button
-                      v-show="item.state !== 'PAUSE'"
-                      type="warning"
-                      shape="circle"
-                      size="xsmall"
-                      icon="ans-icon-stop"
-                      disabled="true">
-              </x-button>
-            <!--Stop-->
-              <x-button
-                      v-show="item.state !== 'STOP'"
-                      type="warning"
-                      shape="circle"
-                      size="xsmall"
-                      icon="ans-icon-pause"
-                      disabled="true">
-              </x-button>
+              <span>
+                <el-button
+                  v-show="scope.row.state !== 'PAUSE'"
+                  type="warning"
+                  size="mini"
+                  circle
+                  icon="el-icon-close"
+                  disabled="true">
+                </el-button>
+              </span>
 
               <!--delete-->
-              <x-button
-                      type="error"
-                      shape="circle"
-                      size="xsmall"
-                      icon="ans-icon-trash"
-                      :disabled="true">
-              </x-button>
+              <el-button
+                  type="danger"
+                  circle
+                  size="mini"
+                  icon="el-icon-delete"
+                  :disabled="true">
+              </el-button>
 
               <!--Gantt-->
-              <x-button
-                      type="info"
-                      shape="circle"
-                      size="xsmall"
-                      icon="ans-icon-gantt"
-                      disabled="true">
-              </x-button>
+              <el-button
+                  type="success"
+                  circle
+                  size="mini"
+                  icon="el-icon-s-operation"
+                  disabled="true">
+              </el-button>
             </div>
-          </td>
-        </tr>
-      </table>
+          </template>
+        </el-table-column>
+      </el-table>
     </div>
-    <x-poptip
-            ref="poptipDeleteAll"
-            placement="bottom-start"
-            width="90">
-      <p>{{$t('Delete?')}}</p>
-      <div style="text-align: right; margin: 0;padding-top: 4px;">
-        <x-button type="text" size="xsmall" shape="circle" @click="_closeDelete(-1)">{{$t('Cancel')}}</x-button>
-        <x-button type="primary" size="xsmall" shape="circle" @click="_delete({},-1)">{{$t('Confirm')}}</x-button>
-      </div>
-      <template slot="reference">
-        <x-button size="xsmall" :disabled="!strDelete" style="position: absolute; bottom: -48px; left: 22px;" >{{$t('Delete')}}</x-button>
-      </template>
-    </x-poptip>
+    <el-tooltip :content="$t('delete')" placement="top" :enterable="false">
+      <el-popconfirm
+        :confirmButtonText="$t('Confirm')"
+        :cancelButtonText="$t('Cancel')"
+        :title="$t('Delete?')"
+        @onConfirm="_delete({},-1)"
+      >
+        <el-button style="position: absolute; bottom: -48px; left: 19px;"  type="primary" size="mini" :disabled="!strDelete" slot="reference">{{$t('Delete')}}</el-button>
+      </el-popconfirm>
+    </el-tooltip>
   </div>
 </template>
 <script>
@@ -337,19 +254,7 @@
        */
       _rtState (code) {
         let o = tasksState[code]
-        return `<em class="ansfont ${o.icoUnicode} ${o.isSpin ? 'as as-spin' : ''}" style="color:${o.color}" data-toggle="tooltip" data-container="body" title="${o.desc}"></em>`
-      },
-      /**
-       * Close the delete layer
-       */
-      _closeDelete (i) {
-        // close batch
-        if (i < 0) {
-          this.$refs['poptipDeleteAll'].doClose()
-          return
-        }
-        // close one
-        this.$refs[`poptip-delete-${i}`][0].doClose()
+        return `<em class="fa ansfont ${o.icoUnicode} ${o.isSpin ? 'as as-spin' : ''}" style="color:${o.color}" data-toggle="tooltip" data-container="body" title="${o.desc}"></em>`
       },
       /**
        * delete
@@ -364,11 +269,9 @@
         this.deleteInstance({
           processInstanceId: item.id
         }).then(res => {
-          this.$refs[`poptip-delete-${i}`][0].doClose()
           this._onUpdate()
           this.$message.success(res.msg)
         }).catch(e => {
-          this.$refs[`poptip-delete-${i}`][0].doClose()
           this.$message.error(e.msg || '')
         })
       },
@@ -383,6 +286,7 @@
        * @param REPEAT_RUNNING
        */
       _reRun (item, index) {
+        console.log(index)
         this._countDownFn({
           id: item.id,
           executeType: 'REPEAT_RUNNING',
@@ -525,20 +429,25 @@
         })
         this._arrDelChange()
       },
+      // _arrDelChange (v) {
+      //   let arr = []
+      //   this.list.forEach((item)=>{
+      //     if (item.isCheck) {
+      //       arr.push(item.id)
+      //     }
+      //   })
+      //   this.strDelete = _.join(arr, ',')
+      //   if (v === false) {
+      //     this.checkAll = false
+      //   }
+      // },
       _arrDelChange (v) {
         let arr = []
-        this.list.forEach((item)=>{
-          if (item.isCheck) {
-            arr.push(item.id)
-          }
-        })
+        arr = _.map(v, 'id');
+        console.log(arr)
         this.strDelete = _.join(arr, ',')
-        if (v === false) {
-          this.checkAll = false
-        }
       },
       _batchDelete () {
-        this.$refs['poptipDeleteAll'].doClose()
         this.batchDeleteInstance({
           processInstanceIds: this.strDelete
         }).then(res => {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/index.vue
index e684206..413a37a 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/instance/pages/list/index.vue
@@ -25,7 +25,16 @@
           <m-list :process-instance-list="processInstanceList" @on-update="_onUpdate" :page-no="searchParams.pageNo" :page-size="searchParams.pageSize">
           </m-list>
           <div class="page-box">
-            <x-page :current="parseInt(searchParams.pageNo)" :total="total" show-elevator @on-change="_page" show-sizer :page-size-options="[10,30,50]" @on-size-change="_pageSize"></x-page>
+            <el-pagination
+              background
+              @current-change="_page"
+              @size-change="_pageSize"
+              :page-size="searchParams.pageSize"
+              :current-page.sync="searchParams.pageNo"
+              :page-sizes="[10, 30, 50]"
+              layout="sizes, prev, pager, next, jumper"
+              :total="total">
+            </el-pagination>
           </div>
         </template>
         <template v-if="!processInstanceList.length && total<=0">
@@ -182,7 +191,6 @@
       }
     },
     mounted () {
-      this.$modal.destroy()
       // Cycle acquisition status
       this.setIntervalP = setInterval(() => {
         this._debounceGET('false')
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/_source/graphGridOption.js b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/_source/graphGridOption.js
index 117a177..1352e24 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/_source/graphGridOption.js
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/_source/graphGridOption.js
@@ -14,29 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import _ from 'lodash';
+import _ from 'lodash'
 import i18n from '@/module/i18n/index.js'
 
 const getCategory = (categoryDic, { workFlowPublishStatus, schedulePublishStatus, id }, sourceWorkFlowId) => {
-  if (id === sourceWorkFlowId) return categoryDic['active']
+  if (id === sourceWorkFlowId) return categoryDic.active
   switch (true) {
     case workFlowPublishStatus === '0':
-      return categoryDic['0'];
+      return categoryDic['0']
     case workFlowPublishStatus === '1' && schedulePublishStatus === '0':
-      return categoryDic['10'];
+      return categoryDic['10']
     case workFlowPublishStatus === '1' && schedulePublishStatus === '1':
     default:
-      return categoryDic['1'];
+      return categoryDic['1']
   }
 }
 
 export default function (locations, links, sourceWorkFlowId, isShowLabel) {
-
   const categoryDic = {
-    'active': { color: '#2D8DF0', category: i18n.$t('KinshipStateActive')},
-    '1': { color: '#00C800', category: i18n.$t('KinshipState1')},
-    '0': { color: '#999999', category: i18n.$t('KinshipState0')},
-    '10': { color: '#FF8F05', category: i18n.$t('KinshipState10')},
+    active: { color: '#2D8DF0', category: i18n.$t('KinshipStateActive') },
+    1: { color: '#00C800', category: i18n.$t('KinshipState1') },
+    0: { color: '#999999', category: i18n.$t('KinshipState0') },
+    10: { color: '#FF8F05', category: i18n.$t('KinshipState10') }
   }
   const newData = _.map(locations, (item) => {
     const { color, category } = getCategory(categoryDic, item, sourceWorkFlowId)
@@ -45,27 +44,27 @@ export default function (locations, links, sourceWorkFlowId, isShowLabel) {
       emphasis: {
         itemStyle: {
           color
-        },
+        }
       },
       category
     }
-  });
+  })
 
   const categories = [
-    { name: categoryDic.active.category},
-    { name: categoryDic['1'].category},
-    { name: categoryDic['0'].category},
-    { name: categoryDic['10'].category},
+    { name: categoryDic.active.category },
+    { name: categoryDic['1'].category },
+    { name: categoryDic['0'].category },
+    { name: categoryDic['10'].category }
   ]
-  let option = {
+  const option = {
     tooltip: {
       trigger: 'item',
       triggerOn: 'mousemove',
       backgroundColor: '#2D303A',
       padding: [8, 12],
       formatter: (params) => {
-        if (!params.data.name) return '';
-        const { name, scheduleStartTime, scheduleEndTime, crontab, workFlowPublishStatus, schedulePublishStatus } = params.data;
+        if (!params.data.name) return ''
+        const { name, scheduleStartTime, scheduleEndTime, crontab, workFlowPublishStatus, schedulePublishStatus } = params.data
         const str = `
       工作流名字:${name}<br/>
       调度开始时间:${scheduleStartTime}<br/>
@@ -74,7 +73,7 @@ export default function (locations, links, sourceWorkFlowId, isShowLabel) {
       工作流发布状态:${workFlowPublishStatus}<br/>
       调度发布状态:${schedulePublishStatus}<br/>
       `
-        return str;
+        return str
       },
       color: '#2D303A',
       textStyle: {
@@ -85,16 +84,16 @@ export default function (locations, links, sourceWorkFlowId, isShowLabel) {
             lineHeight: 12,
             align: 'left',
             padding: [4, 4, 4, 4]
-          },
+          }
         }
-      },
+      }
     },
     color: [categoryDic.active.color, categoryDic['1'].color, categoryDic['0'].color, categoryDic['10'].color],
     legend: [{
       orient: 'horizontal',
       top: 6,
       left: 6,
-      data: categories,
+      data: categories
     }],
     series: [{
       type: 'graph',
@@ -111,9 +110,9 @@ export default function (locations, links, sourceWorkFlowId, isShowLabel) {
         show: isShowLabel,
         position: 'inside',
         formatter: (params) => {
-          if (!params.data.name) return '';
+          if (!params.data.name) return ''
           const str = params.data.name.split('_').map(item => `{a|${item}\n}`).join('')
-          return str;
+          return str
         },
         color: '#222222',
         textStyle: {
@@ -124,7 +123,7 @@ export default function (locations, links, sourceWorkFlowId, isShowLabel) {
               lineHeight: 12,
               align: 'left',
               padding: [4, 4, 4, 4]
-            },
+            }
           }
         }
       },
@@ -139,7 +138,7 @@ export default function (locations, links, sourceWorkFlowId, isShowLabel) {
         color: '#999999'
       }
     }]
-  };
+  }
 
   return option
 }
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue
index 2472a69..ebfb74a 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/kinship/index.vue
@@ -18,33 +18,33 @@
   <div class="home-main index-model">
     <div class="project-kinship-content">
       <div class="search-bar">
-        <x-select filterable clearable
+        <el-select filterable clearable
                   :placeholder="$t('Process Name')"
-                  @on-change="onChange"
+                  @change="onChange"
                   :style="inputFocusStyle"
                   v-tooltip="tooltipOption(currentItemName)"
                   size="small">
-          <x-option
+          <el-option
             v-for="work in workList"
             :key="work.id"
             :value="work.id"
             :label="work.name"
             v-tooltip="tooltipOption(work.name)"
             >
-          </x-option>
-        </x-select>
-        <x-button type="primary"
-                  icon="ans-icon-dot-circle"
-                  size="small"
+          </el-option>
+        </el-select>
+        <el-button type="primary"
+                  icon="fa-dot-circle-o"
+                  size="mini"
                   v-tooltip.small.top.start="$t('Reset')"
                   @click="reset"
-                  ></x-button>
-        <x-button type="ghost"
-                  icon="ans-icon-eye"
-                  size="small"
+                  ></el-button>
+        <el-button 
+                  icon="el-icon-view"
+                  size="mini"
                   v-tooltip.small.top="$t('Dag label display control')"
                   @click="changeLabel"
-                  ></x-button>
+                  ></el-button>
       </div>
       <graph-grid v-if="!isLoading && !!locations.length" :isShowLabel="isShowLabel"></graph-grid>
       <template v-if="!isLoading && !locations.length">
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/_source/createProject.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/_source/createProject.vue
index b5a2c52..8398076 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/_source/createProject.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/_source/createProject.vue
@@ -21,24 +21,24 @@
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('Project Name')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="input"
                     v-model="projectName"
                     maxlength="60"
-                    :placeholder="$t('Please enter name')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter name')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name">{{$t('Description')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="textarea"
                     v-model="description"
-                    :placeholder="$t('Please enter description')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter description')">
+            </el-input>
           </template>
         </m-list-box-f>
       </div>
@@ -83,8 +83,12 @@
         this.$refs['popup'].spinnerLoading = true
 
         this.store.dispatch(`projects/${this.item ? 'updateProjects' : 'createProjects'}`, param).then(res => {
-          this.$emit('onUpdate')
-          this.$message.success(res.msg)
+          this.$emit('_onUpdate')
+          this.$message({
+            message: res.msg,
+            type: 'success',
+            offset: 70
+          });
           setTimeout(() => {
             this.$refs['popup'].spinnerLoading = false
           }, 800)
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/_source/list.vue
index 8acee8e..72c0d82 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/_source/list.vue
@@ -17,99 +17,52 @@
 <template>
   <div class="list-model">
     <div class="table-box">
-      <table class="fixed">
-        <tr>
-          <th scope="col">
-            <span>{{$t('#')}}</span>
-          </th>
-          <th scope="col">
-            <span>{{$t('Project Name')}}</span>
-          </th>
-          <th scope="col">
-            <span>{{$t('Owned Users')}}</span>
-          </th>
-          <th scope="col">
-            <span>{{$t('Process Define Count')}}</span>
-          </th>
-          <th scope="col">
-            <span>{{$t('Process Instance Running Count')}}</span>
-          </th>
-          <th scope="col">
-            <span>{{$t('Description')}}</span>
-          </th>
-          <th scope="col">
-            <span>{{$t('Create Time')}}</span>
-          </th>
-          <th scope="col">
-            <span>{{$t('Update Time')}}</span>
-          </th>
-          <th scope="col" width="80">
-            <span>{{$t('Operation')}}</span>
-          </th>
-        </tr>
-        <tr v-for="(item, $index) in list" :key="$index">
-          <td>
-            <span>{{parseInt(pageNo === 1 ? ($index + 1) : (($index + 1) + (pageSize * (pageNo - 1))))}}</span>
-          </td>
-          <td>
-            <span>
-              <a href="javascript:" @click="_switchProjects(item)" class="links">{{item.name}}</a>
-            </span>
-          </td>
-          <td>
-            <span>{{item.userName || '-'}}</span>
-          </td>
-          <td>
-            <span>{{item.defCount}}</span>
-          </td>
-          <td>
-            <span>{{item.instRunningCount}}</span>
-          </td>
-          <td>
-            <span v-if="item.description" class="ellipsis" v-tooltip.large.top.start.light="{text: item.description, maxWidth: '500px'}">{{item.description}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.createTime">{{item.createTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.updateTime">{{item.updateTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <x-button
-                    type="info"
-                    shape="circle"
-                    size="xsmall"
-                    data-toggle="tooltip"
-                    :title="$t('Edit')"
-                    @click="_edit(item)"
-                    icon="ans-icon-edit">
-            </x-button>
-            <x-poptip
-                    :ref="'poptip-' + $index"
-                    placement="bottom-end"
-                    width="90">
-              <p>{{$t('Delete?')}}</p>
-              <div style="text-align: right; margin: 0;padding-top: 4px;">
-                <x-button type="text" size="xsmall" shape="circle" @click="_closeDelete($index)">{{$t('Cancel')}}</x-button>
-                <x-button type="primary" size="xsmall" shape="circle" @click="_delete(item,$index)">{{$t('Confirm')}}</x-button>
+      <el-table :data="list" size="mini" style="width: 100%">
+        <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+        <el-table-column :label="$t('Project Name')">
+          <template slot-scope="scope">
+            <el-popover trigger="hover" placement="top">
+              <p>{{ scope.row.name }}</p>
+              <div slot="reference" class="name-wrapper">
+                <a href="javascript:" class="links" @click="_switchProjects(scope.row)">{{ scope.row.name }}</a>
               </div>
-              <template slot="reference">
-                <x-button
-                        type="error"
-                        shape="circle"
-                        size="xsmall"
-                        data-toggle="tooltip"
-                        :title="$t('delete')"
-                        icon="ans-icon-trash">
-                </x-button>
-              </template>
-            </x-poptip>
-          </td>
-        </tr>
-      </table>
+            </el-popover>
+          </template>
+        </el-table-column>
+        <el-table-column prop="userName" :label="$t('Owned Users')"></el-table-column>
+        <el-table-column prop="defCount" :label="$t('Process Define Count')"></el-table-column>
+        <el-table-column prop="instRunningCount" :label="$t('Process Instance Running Count')"></el-table-column>
+        <el-table-column prop="description" :label="$t('Description')" width="200"></el-table-column>
+        <el-table-column :label="$t('Create Time')" min-width="120">
+          <template slot-scope="scope">
+            <span>{{scope.row.createTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Update Time')" min-width="120">
+          <template slot-scope="scope">
+            <span>{{scope.row.updateTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Operation')" width="150">
+          <template slot-scope="scope">
+            <el-tooltip :content="$t('Edit')" placement="top" :enterable="false">
+              <span><el-button type="primary" size="mini" icon="el-icon-edit-outline" @click="_edit(scope.row)" circle></el-button></span>
+            </el-tooltip>
+            <el-tooltip :content="$t('delete')" placement="top" :enterable="false">
+              <el-popconfirm
+                :confirmButtonText="$t('Confirm')"
+                :cancelButtonText="$t('Cancel')"
+                icon="el-icon-info"
+                iconColor="red"
+                :title="$t('Delete?')"
+                @onConfirm="_delete(scope.row,scope.row.id)"
+              >
+                <el-button type="danger" size="mini" icon="el-icon-delete" circle slot="reference"></el-button>
+              </el-popconfirm>
+            </el-tooltip>
+          </template>
+        </el-table-column>
+      </el-table>
     </div>
   </div>
 </template>
@@ -139,9 +92,6 @@
         localStore.setItem('projectId', `${item.id}`)
         this.$router.push({ path: `/projects/index` })
       },
-      _closeDelete (i) {
-        this.$refs[`poptip-${i}`][0].doClose()
-      },
       /**
        * Delete Project
        * @param item Current record
@@ -151,11 +101,9 @@
         this.deleteProjects({
           projectId: item.id
         }).then(res => {
-          this.$refs[`poptip-${i}`][0].doClose()
           this.$emit('on-update')
           this.$message.success(res.msg)
         }).catch(e => {
-          this.$refs[`poptip-${i}`][0].doClose()
           this.$message.error(e.msg || '')
         })
       },
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/index.vue
index d9828c0..db92e46 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/list/index.vue
@@ -19,7 +19,12 @@
     <template slot="conditions">
       <m-conditions @on-conditions="_onConditions">
         <template slot="button-group">
-          <x-button type="ghost" size="small" @click="_create('')">{{$t('Create Project')}}</x-button>
+          <el-button size="mini" @click="_create('')">{{$t('Create Project')}}</el-button>
+          <el-dialog
+            :visible.sync="createProjectDialog"
+            width="40%">
+            <m-create-project :item="item" @_onUpdate="_onUpdate"></m-create-project>
+          </el-dialog>
         </template>
       </m-conditions>
     </template>
@@ -27,7 +32,16 @@
       <template v-if="projectsList.length || total>0">
         <m-list :projects-list="projectsList" @on-update="_onUpdate" :page-no="searchParams.pageNo" :page-size="searchParams.pageSize"></m-list>
         <div class="page-box">
-          <x-page :current="parseInt(searchParams.pageNo)" :total="total" :page-size="searchParams.pageSize" show-elevator @on-change="_page" show-sizer :page-size-options="[10,30,50]" @on-size-change="_pageSize"></x-page>
+          <el-pagination
+            background
+            @current-change="_page"
+            @size-change="_pageSize"
+            :page-size="searchParams.pageSize"
+            :current-page.sync="searchParams.pageNo"
+            :page-sizes="[10, 30, 50]"
+            layout="sizes, prev, pager, next, jumper"
+            :total="total">
+          </el-pagination>
         </div>
       </template>
       <template v-if="!projectsList.length && total<=0">
@@ -60,7 +74,9 @@
           pageSize: 10,
           pageNo: 1,
           searchVal: ''
-        }
+        },
+        createProjectDialog: false,
+        item: {}
       }
     },
     mixins: [listUrlParamHandle],
@@ -82,29 +98,11 @@
         this.searchParams.pageSize = val
       },
       _create (item) {
-        let self = this
-        let modal = this.$modal.dialog({
-          closable: false,
-          showMask: true,
-          escClose: true,
-          className: 'v-modal-custom',
-          transitionName: 'opacityp',
-          render (h) {
-            return h(mCreateProject, {
-              on: {
-                onUpdate () {
-                  self._debounceGET()
-                  modal.remove()
-                }
-              },
-              props: {
-                item: item
-              }
-            })
-          }
-        })
+        this.createProjectDialog = true
+        this.item = item
       },
       _onUpdate () {
+        this.createProjectDialog = false
         this._debounceGET()
       },
       _getList (flag) {
@@ -133,7 +131,6 @@
     created () {
     },
     mounted () {
-      this.$modal.destroy()
     },
     components: { mListConstruction, mSpin, mConditions, mList, mCreateProject, mNoData }
   }
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
index 9ad09380..596afcf 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/_source/list.vue
@@ -17,104 +17,66 @@
 <template>
   <div class="list-model">
     <div class="table-box">
-      <table class="fixed">
-        <tr>
-          <th scope="col" style="min-width: 50px">
-            <span>{{$t('#')}}</span>
-          </th>
-          <th scope="col" style="min-width: 200px;max-width: 300px;">
-            <span>{{$t('Name')}}</span>
-          </th>
-          <th scope="col" style="min-width: 200px;max-width: 300px;">
-            <span>{{$t('Process Instance')}}</span>
-          </th>
-          <th scope="col" style="min-width: 60px">
-            <span>{{$t('Executor')}}</span>
-          </th>
-          <th scope="col" style="min-width: 70px">
-            <span style="margin-left: 5px">{{$t('Node Type')}}</span>
-          </th>
-          <th scope="col" style="min-width: 30px">
-            <span>{{$t('State')}}</span>
-          </th>
-          <th scope="col" style="min-width: 130px">
-            <span>{{$t('Submit Time')}}</span>
-          </th>
-          <th scope="col" style="min-width: 130px">
-            <span>{{$t('Start Time')}}</span>
-          </th>
-          <th scope="col" style="min-width: 130px">
-            <span>{{$t('End Time')}}</span>
-          </th>
-          <th scope="col" style="min-width: 130px">
-            <span>{{$t('host')}}</span>
-          </th>
-          <th scope="col" style="min-width: 70px">
-            <span>{{$t('Duration')}}(s)</span>
-          </th>
-          <th scope="col" style="min-width: 60px">
-            <div style="width: 50px">
-              <span>{{$t('Retry Count')}}</span>
-            </div>
-          </th>
-          <th scope="col" style="min-width: 60px">
-            <span>{{$t('Operation')}}</span>
-          </th>
-        </tr>
-        <tr v-for="(item, $index) in list" :key="item.id">
-          <td>
-            <span>{{parseInt(pageNo === 1 ? ($index + 1) : (($index + 1) + (pageSize * (pageNo - 1))))}}</span>
-          </td>
-          <td style="min-width: 200px;max-width: 300px;padding-right: 10px;">
-            <span class="ellipsis" :title="item.name">{{item.name}}</span>
-          </td>
-          <td style="min-width: 200px;max-width: 300px;padding-right: 10px;"><a href="javascript:" class="links" @click="_go(item)"><span class="ellipsis" :title="item.processInstanceName">{{item.processInstanceName}}</span></a></td>
-          <td>
-            <span v-if="item.executorName">{{item.executorName}}</span>
-            <span v-else>-</span>
-          </td>
-          <td><span style="margin-left: 5px">{{item.taskType}}</span></td>
-          <td><span v-html="_rtState(item.state)" style="cursor: pointer;"></span></td>
-          <td>
-            <span v-if="item.submitTime">{{item.submitTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.startTime">{{item.startTime | formatDate}}</span>
+      <el-table :data="list" size="mini" style="width: 100%">
+        <el-table-column type="index" :label="$t('#')" width="50"></el-table-column>
+        <el-table-column prop="name" :label="$t('Name')"></el-table-column>
+        <el-table-column :label="$t('Process Instance')" min-width="200">
+          <template slot-scope="scope">
+            <el-popover trigger="hover" placement="top">
+              <p>{{ scope.row.processInstanceName }}</p>
+              <div slot="reference" class="name-wrapper">
+                <a href="javascript:" class="links" @click="_go(scope.row)"><span class="ellipsis" :title="scope.row.processInstanceName">{{scope.row.processInstanceName}}</span></a>
+              </div>
+            </el-popover>
+          </template>
+        </el-table-column>
+        <el-table-column prop="executorName" :label="$t('Executor')"></el-table-column>
+        <el-table-column prop="taskType" :label="$t('Node Type')"></el-table-column>
+        <el-table-column :label="$t('State')" width="50">
+          <template slot-scope="scope">
+            <span v-html="_rtState(scope.row.state)" style="cursor: pointer;"></span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Submit Time')" width="135">
+          <template slot-scope="scope">
+            <span v-if="scope.row.scheduleTime">{{scope.row.scheduleTime | formatDate}}</span>
             <span v-else>-</span>
-          </td>
-          <td>
-            <span v-if="item.endTime">{{item.endTime | formatDate}}</span>
-            <span v-else>-</span>
-          </td>
-          <td><span>{{item.host || '-'}}</span></td>
-          <td><span>{{item.duration}}</span></td>
-          <td><span>{{item.retryTimes}}</span></td>
-          <td>
-            <x-button
-                    v-if="item.state === 'FAILURE' || item.state === 'NEED_FAULT_TOLERANCE' || item.state === 'KILL'"
-                    type="error"
-                    shape="circle"
-                    size="xsmall"
-                    data-toggle="tooltip"
-                    :title="$t('Force success')"
-                    icon="ans-icon-success-solid"
-                    @click="_forceSuccess(item)">
-            </x-button>
-            <x-button
-                    type="info"
-                    shape="circle"
-                    size="xsmall"
-                    data-toggle="tooltip"
-                    :title="$t('View log')"
-                    icon="ans-icon-log"
-                    :disabled="item.taskType==='SUB_PROCESS'? true: false"
-                    @click="_refreshLog(item)">
-            </x-button>
-          </td>
-        </tr>
-      </table>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('Start Time')" width="135">
+          <template slot-scope="scope">
+            <span>{{scope.row.startTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column :label="$t('End Time')" width="135">
+          <template slot-scope="scope">
+            <span>{{scope.row.endTime | formatDate}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="host" :label="$t('host')" width="150"></el-table-column>
+        <el-table-column prop="duration" :label="$t('Duration')"></el-table-column>
+        <el-table-column prop="retryTimes" :label="$t('Retry Count')"></el-table-column>
+        <el-table-column :label="$t('Operation')" width="80" fixed="right">
+          <template slot-scope="scope">
+            <div>
+              <el-tooltip :content="$t('Force success')" placement="top" :enterable="false">
+                <span>
+                  <el-button type="primary" size="mini" icon="el-icon-success" :disabled="!(scope.row.state === 'FAILURE' || scope.row.state === 'NEED_FAULT_TOLERANCE' || scope.row.state === 'KILL')" @click="_forceSuccess(scope.row)" circle></el-button>
+                </span>
+              </el-tooltip>
+              <el-tooltip :content="$t('View log')" placement="top" :enterable="false">
+                <span><el-button type="primary" size="mini" :disabled="scope.row.taskType==='SUB_PROCESS'? true: false"  icon="el-icon-tickets" @click="_refreshLog(scope.row)" circle></el-button></span>
+              </el-tooltip>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
     </div>
+    <el-dialog
+      :visible.sync="logDialog"
+      width="30%">
+      <m-log :item="item" :source="source" :logId="logId" @ok="ok" @close="close"></m-log>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -129,7 +91,11 @@
       return {
         list: [],
         isAuth: Permissions.getAuth(),
-        backfillItem: {}
+        backfillItem: {},
+        logDialog: false,
+        item: {},
+        source: '',
+        logId: null
       }
     },
     props: {
@@ -144,31 +110,17 @@
         return `<em class="${o.icoUnicode} ${o.isSpin ? 'as as-spin' : ''}" style="color:${o.color}" data-toggle="tooltip" data-container="body" title="${o.desc}"></em>`
       },
       _refreshLog (item) {
-        let self = this
-        let instance = this.$modal.dialog({
-          closable: false,
-          showMask: true,
-          escClose: true,
-          className: 'v-modal-custom',
-          transitionName: 'opacityp',
-          render (h) {
-            return h(mLog, {
-              on: {
-                ok () {
-                },
-                close () {
-                  instance.remove()
-                }
-              },
-              props: {
-                self: self,
-                source: 'list',
-                logId: item.id
-              }
-            })
-          }
-        })
+        this.item = item
+        this.source = 'list'
+        this.logId = item.id
+        this.logDialog = true
       },
+      ok () {},
+
+      close () {
+        this.logDialog = false
+      },
+
       _forceSuccess (item) {
         this.forceTaskSuccess({taskInstanceId: item.id}).then(res => {
           if (res.code === 0) {
@@ -197,6 +149,6 @@
     mounted () {
       this.list = this.taskInstanceList
     },
-    components: { }
+    components: { mLog}
   }
 </script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/index.vue
index 1922f9d..00c7b5e 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/projects/pages/taskInstance/index.vue
@@ -26,7 +26,16 @@
           <m-list :task-instance-list="taskInstanceList" :page-no="searchParams.pageNo" :page-size="searchParams.pageSize">
           </m-list>
           <div class="page-box">
-            <x-page :current="parseInt(searchParams.pageNo)" :total="total" show-elevator @on-change="_page" show-sizer :page-size-options="[10,30,50]" @on-size-change="_pageSize"></x-page>
+            <el-pagination
+              background
+              @current-change="_page"
+              @size-change="_pageSize"
+              :page-size="searchParams.pageSize"
+              :current-page.sync="searchParams.pageNo"
+              :page-sizes="[10, 30, 50]"
+              layout="sizes, prev, pager, next, jumper"
+              :total="total">
+            </el-pagination>
           </div>
         </template>
         <template v-if="!taskInstanceList.length">
@@ -147,7 +156,6 @@
     created () {
     },
     mounted () {
-      this.$modal.destroy()
       // Cycle acquisition status
       this.setIntervalP = setInterval(() => {
         this._debounceGET('false')
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/resource/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/resource/index.vue
index 3e0215c..afed416 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/resource/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/resource/index.vue
@@ -26,7 +26,6 @@
     name: 'resource-index',
     components: { mSecondaryMenu },
     mounted() {
-      this.$modal.destroy()
     },
   }
 </script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/index.vue
index e47aa57..3a89a53 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/index.vue
@@ -21,7 +21,6 @@
   export default {
     name: 'file-manage-index',
     mounted() {
-      this.$modal.destroy()
     },
   }
 </script>
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/create/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/create/index.vue
index fac37a4..9477373 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/create/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/create/index.vue
@@ -21,39 +21,39 @@
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('File Name')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="input"
                     v-model="fileName"
                     maxlength="60"
                     style="width: 300px;"
-                    :placeholder="$t('Please enter name')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter name')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('File Format')}}</template>
           <template slot="content">
-            <x-select v-model="suffix" style="width: 100px;" @on-change="_onChange">
-              <x-option
+            <el-select v-model="suffix" style="width: 100px;" size="small" @change="_onChange">
+              <el-option
                       v-for="city in fileTypeList"
                       :key="city"
                       :value="city"
                       :label="city">
-              </x-option>
-            </x-select>
+              </el-option>
+            </el-select>
           </template>
         </m-list-box-f>
         <m-list-box-f>
           <template slot="name">{{$t('Description')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="textarea"
                     v-model="description"
                     style="width: 430px;"
-                    :placeholder="$t('Please enter description')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter description')">
+            </el-input>
           </template>
         </m-list-box-f>
         <m-list-box-f>
@@ -66,8 +66,8 @@
           <template slot="name">&nbsp;</template>
           <template slot="content">
             <div class="submit">
-              <x-button type="primary" shape="circle" :loading="spinnerLoading" @click="ok()">{{spinnerLoading ? 'Loading...' : $t('Create')}} </x-button>
-              <x-button type="text" @click="() => $router.push({name: 'file'})"> {{$t('Cancel')}} </x-button>
+              <el-button type="primary" size="small" round :loading="spinnerLoading" @click="ok()">{{spinnerLoading ? 'Loading...' : $t('Create')}} </el-button>
+              <el-button type="text" size="small" @click="() => $router.push({name: 'file'})"> {{$t('Cancel')}} </el-button>
             </div>
           </template>
         </m-list-box-f>
@@ -172,7 +172,6 @@
     created () {
     },
     mounted () {
-      this.$modal.destroy()
       this._handlerEditor()
     },
     destroyed () {
diff --git a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/createFolder/index.vue b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/createFolder/index.vue
index be53033..7982f6b 100644
--- a/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/createFolder/index.vue
+++ b/dolphinscheduler-ui/src/js/conf/home/pages/resource/pages/file/pages/createFolder/index.vue
@@ -21,47 +21,34 @@
         <m-list-box-f>
           <template slot="name"><strong>*</strong>{{$t('Folder Name')}}</template>
           <template slot="content">
-            <x-input
+            <el-input
                     type="input"
                     v-model="name"
                     maxlength="60"
                     style="width: 300px;"
-                    :placeholder="$t('Please enter name')"
-                    autocomplete="off">
-            </x-input>
+                    size="small"
+                    :placeholder="$t('Please enter name')">
+            </el-input>
           </template>
         </m-list-box-f>
-        <!-- <m-list-box-f>
-          <template slot="name"><strong>*</strong>{{$t('Folder Format')}}</template>
-          <template slot="content">
-            <x-select v-model="type" style="width: 100px;">
-              <x-option
-                      v-for="item in folderList"
-                      :key="item.value"
-                      :value="item.value"
-                      :label="item.label">
-              </x-option>
... 7533 lines suppressed ...