Support loading available driver classes in Lite UI
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/api.js b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/api.js
index a0743c1..6d6be90 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/api.js
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/api.js
@@ -18,6 +18,7 @@
 import API from '@/utils/api'
 
 export default {
+  availableDriverClasses: (params = {}) => API.get(`/api/data-source/drivers`, params),
   load: (params = {}) => API.get(`/api/data-source/load`, params),
   delete: (params = {}) => API.delete(`/api/data-source`, params),
   add: (params = {}) => API.post(`/api/data-source/add`, params),
diff --git a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/module/dataSource.vue b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/module/dataSource.vue
index 668040b..32e943d 100644
--- a/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/module/dataSource.vue
+++ b/shardingsphere-elasticjob-lite-ui/shardingsphere-elasticjob-lite-ui-frontend/src/views/data-source/module/dataSource.vue
@@ -88,11 +88,20 @@
           <el-input :placeholder="$t('dataSource.rules.name')" v-model="form.name" autocomplete="off" />
         </el-form-item>
         <el-form-item :label="$t('dataSource.addDialog.driver')" prop="driver">
-          <el-input
-            :placeholder="$t('dataSource.rules.driver')"
+          <el-select
+            style="width: 100%;"
             v-model="form.driver"
-            autocomplete="off"
-          />
+            :placeholder="$t('dataSource.rules.driver')"
+            allow-create
+            default-first-option
+            filterable>
+            <el-option
+              v-for="each in availableDriverClasses"
+              :label="each"
+              :key="each"
+              :value="each">
+            </el-option>
+          </el-select>
         </el-form-item>
         <el-form-item :label="$t('dataSource.addDialog.url')" prop="url">
           <el-input
@@ -140,6 +149,7 @@
   data() {
     return {
       regustDialogVisible: false,
+      availableDriverClasses: [],
       isGuest: window.localStorage.getItem('isGuest') === 'true',
       column: [
         {
@@ -215,10 +225,16 @@
     }
   },
   created() {
+    this.loadAvailableDriverClasses()
     this.load()
   },
   methods: {
     ...mapActions(['setRegCenterActivated']),
+    loadAvailableDriverClasses() {
+      API.availableDriverClasses().then(res => {
+        this.availableDriverClasses = res.model
+      })
+    },
     handleCurrentChange(val) {
       const data = clone(this.cloneTableData)
       this.tableData = data.splice(val - 1, this.pageSize)