Parcourir la source

feat: 添加table

double.huang il y a 5 ans
Parent
commit
22e161ea2f

+ 4 - 0
src/api/modules/index.js

@@ -33,6 +33,10 @@ module.exports.sysRole = require('./sys_role')
 module.exports.sysScheduling = require('./sys_scheduling')
 // sysSetting 设置
 module.exports.sysSetting = require('./sys_setting')
+// sysTable 表
+module.exports.sysTable = require('./sys_table')
+// sysTableColumn 表字段
+module.exports.sysTableColumn = require('./sys_table_column')
 // sysTag 标签
 module.exports.sysTag = require('./sys_tag')
 // sysTagGroup 标签组

+ 10 - 0
src/api/modules/sys_client.js

@@ -21,6 +21,16 @@ module.exports.del = (data) => {
   })
 }
 
+// batchDel 删除客户端
+module.exports.batchDel = (data) => {
+  const url = '/api/sys/client/batch_del'
+  return axios({
+    url: url,
+    method: 'delete',
+    data
+  })
+}
+
 // update 更新客户端
 module.exports.update = (data) => {
   const url = '/api/sys/client/update'

+ 10 - 0
src/api/modules/sys_role.js

@@ -21,6 +21,16 @@ module.exports.del = (data) => {
   })
 }
 
+// batchDel 删除角色
+module.exports.batchDel = (data) => {
+  const url = '/api/sys/role/batch_del'
+  return axios({
+    url: url,
+    method: 'delete',
+    data
+  })
+}
+
 // update 更新角色
 module.exports.update = (data) => {
   const url = '/api/sys/role/update'

+ 10 - 0
src/api/modules/sys_setting.js

@@ -21,6 +21,16 @@ module.exports.del = (data) => {
   })
 }
 
+// batchDel 删除设置
+module.exports.batchDel = (data) => {
+  const url = '/api/sys/setting/batch_del'
+  return axios({
+    url: url,
+    method: 'delete',
+    data
+  })
+}
+
 // update 更新设置
 module.exports.update = (data) => {
   const url = '/api/sys/setting/update'

+ 66 - 0
src/api/modules/sys_table.js

@@ -0,0 +1,66 @@
+// Code generated by dol build. DO NOT EDIT.
+const axios = require('@/utils/request').default
+
+// add 添加表
+module.exports.add = (data) => {
+  const url = '/api/sys/table/add'
+  return axios({
+    url: url,
+    method: 'post',
+    data
+  })
+}
+
+// del 删除表
+module.exports.del = (data) => {
+  const url = '/api/sys/table/del'
+  return axios({
+    url: url,
+    method: 'delete',
+    data
+  })
+}
+
+// batchDel 删除表
+module.exports.batchDel = (data) => {
+  const url = '/api/sys/table/batch_del'
+  return axios({
+    url: url,
+    method: 'delete',
+    data
+  })
+}
+
+// update 更新表
+module.exports.update = (data) => {
+  const url = '/api/sys/table/update'
+  return axios({
+    url: url,
+    method: 'put',
+    data
+  })
+}
+
+// page 表分页查询
+module.exports.page = (data) => {
+  let url = '/api/sys/table/page?'
+  for (var key in data) {
+    url += key + '=' + encodeURIComponent(data[key]) + '&'
+  }
+  return axios({
+    url: url,
+    method: 'get'
+  })
+}
+
+// get 获取表信息
+module.exports.get = (data) => {
+  let url = '/api/sys/table/get?'
+  for (var key in data) {
+    url += key + '=' + encodeURIComponent(data[key]) + '&'
+  }
+  return axios({
+    url: url,
+    method: 'get'
+  })
+}

+ 66 - 0
src/api/modules/sys_table_column.js

@@ -0,0 +1,66 @@
+// Code generated by dol build. DO NOT EDIT.
+const axios = require('@/utils/request').default
+
+// add 添加表字段
+module.exports.add = (data) => {
+  const url = '/api/sys/table/column/add'
+  return axios({
+    url: url,
+    method: 'post',
+    data
+  })
+}
+
+// del 删除表字段
+module.exports.del = (data) => {
+  const url = '/api/sys/table/column/del'
+  return axios({
+    url: url,
+    method: 'delete',
+    data
+  })
+}
+
+// batchDel 删除表字段
+module.exports.batchDel = (data) => {
+  const url = '/api/sys/table/column/batch_del'
+  return axios({
+    url: url,
+    method: 'delete',
+    data
+  })
+}
+
+// update 更新表字段
+module.exports.update = (data) => {
+  const url = '/api/sys/table/column/update'
+  return axios({
+    url: url,
+    method: 'put',
+    data
+  })
+}
+
+// page 表字段分页查询
+module.exports.page = (data) => {
+  let url = '/api/sys/table/column/page?'
+  for (var key in data) {
+    url += key + '=' + encodeURIComponent(data[key]) + '&'
+  }
+  return axios({
+    url: url,
+    method: 'get'
+  })
+}
+
+// get 获取表字段信息
+module.exports.get = (data) => {
+  let url = '/api/sys/table/column/get?'
+  for (var key in data) {
+    url += key + '=' + encodeURIComponent(data[key]) + '&'
+  }
+  return axios({
+    url: url,
+    method: 'get'
+  })
+}

+ 1 - 0
src/i18n/en.js

@@ -27,6 +27,7 @@ export default {
     'Scheduling': 'Scheduling',
     'Attachment': 'Attachment',
     'Tracker': 'Tracker',
+    'Table': 'Table',
     'Documentation': 'Documentation',
     'Guide': 'Guide',
     'Permission': 'Permission',

+ 1 - 0
src/i18n/es.js

@@ -27,6 +27,7 @@ export default {
     'Scheduling': 'Planificador',
     'Attachment': 'Adjunto archivo',
     'Tracker': 'Iniciar sesión',
+    'Table': 'mesa',
     'Documentation': 'Documentación',
     'Guide': 'Guía',
     'Permission': 'Permisos',

+ 1 - 0
src/i18n/ja.js

@@ -27,6 +27,7 @@ export default {
     'Scheduling': 'スケジューラー',
     'Attachment': '別添',
     'Tracker': 'ログ',
+    'Table': 'テーブル',
     'Documentation': 'ドキュメント',
     'Guide': 'ガイド',
     'Permission': '権限',

+ 1 - 0
src/i18n/zh.js

@@ -27,6 +27,7 @@ export default {
     'Scheduling': '调度',
     'Attachment': '附件',
     'Tracker': '日志',
+    'Table': '模型',
     'Documentation': '文档',
     'Guide': '引导页',
     'Permission': '权限测试页',

+ 175 - 0
src/views/table/index.vue

@@ -0,0 +1,175 @@
+<template>
+  <el-container>
+    <el-main class="page-main">
+      <el-container>
+        <el-header style="margin-bottom: 10px;">
+          <query ref="searchForm" :form-config="query" @onSubmit="search" />
+        </el-header>
+        <el-main>
+          <sheet ref="qtable" :api="this.$api.sysTable.page" :columns="tableColumns" :data-query="dataQuery" :operates="operates" :float-type="'right'" :select-type="'selection'" />
+        </el-main>
+      </el-container>
+    </el-main>
+    <el-dialog :title="$t('tracker.detail')" :visible.sync="dialogVisible" width="70%">
+      <el-form ref="form" label-width="120px">
+        <el-form-item :label="$t('tracker.ipAddress').concat(':')" class="notice-input" label-width="120px">
+          <el-input v-model="temp.client_ip" />
+        </el-form-item>
+        <el-form-item :label="$t('tracker.reqHeader').concat(':')" class="notice-input" label-width="120px">
+          <el-input v-model="temp.header" type="textarea" :autosize="{minRows:4}" />
+        </el-form-item>
+        <el-form-item :label="$t('tracker.reqAddress').concat(':')" class="notice-input" label-width="120px">
+          <el-input v-model="temp.path" />
+        </el-form-item>
+        <el-form-item :label="$t('tracker.reqContent').concat(':')" class="notice-input" label-width="120px">
+          <el-input v-model="temp.req_body" />
+        </el-form-item>
+        <el-form-item :label="$t('tracker.resContent').concat(':')" class="notice-input" label-width="120px">
+          <el-input v-model="temp.res_body" type="textarea" :autosize="{minRows:4}" />
+        </el-form-item>
+      </el-form>
+    </el-dialog>
+  </el-container>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import Sheet from '@/components/Sheet/index'
+import Query from '@/components/Query'
+import { table } from './query'
+
+export default {
+  name: 'Table',
+  components: {
+    Sheet,
+    Query
+  },
+  mixins: [table],
+  data() {
+    return {
+      maps: [{ value: '', text: '' }],
+      tableColumns: [
+        {
+          prop: 'name',
+          label: 'Name',
+          align: 'center',
+          minWidth: 150,
+          maxWidth: 220
+        },
+        {
+          prop: 'desc',
+          label: 'Desc',
+          align: 'center',
+          minWidth: 150,
+          maxWidth: 180
+        },
+        {
+          prop: 'charset',
+          label: 'Charset',
+          align: 'center',
+          minWidth: 150,
+          maxWidth: 180
+        },
+        {
+          prop: 'auto_increment',
+          label: 'AutoIncrement',
+          align: 'center',
+          minWidth: 150,
+          maxWidth: 180
+        },
+        {
+          prop: 'store_engine',
+          label: 'StoreEngine',
+          align: 'center',
+          minWidth: 150,
+          maxWidth: 180
+        }
+      ],
+      operates: {
+        list: [
+          {
+            label: '详情',
+            show: true,
+            type: 'text',
+            method: row => {
+              this.detail(row)
+            }
+          }
+        ],
+        width: 150
+      },
+      dataQuery: {
+        page: 1,
+        size: 10,
+        name: '',
+        code: ''
+      },
+      rules: {
+        name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
+        code: [{ required: true, message: '请输入编码', trigger: 'blur' }]
+      },
+      temp: {
+        user_name: '',
+        status_code: '',
+        latency: '',
+        client_ip: '',
+        method: '',
+        path: '',
+        create_time: '',
+        header: '',
+        req_body: '',
+        res_body: ''
+      },
+      dataLoading: false,
+      dialogStatus: '',
+      dialogVisible: false
+    }
+  },
+  computed: {
+    ...mapGetters(['size', 'minMainHeight'])
+  },
+  watch: {
+    maps(val) {
+      this.temp.value = JSON.stringify(val)
+    }
+  },
+  created() {},
+  methods: {
+    search(obj) {
+      this.$refs.qtable.getData(obj)
+    },
+    resetFields() {
+      this.$refs['searchForm'].resetFields()
+      this.$refs.qtable.getData()
+    },
+    dialogClose() {
+      this.$refs['temp'].resetFields()
+      this.maps = [{ value: '', text: '' }]
+    },
+    detail(row) {
+      this.temp = Object.assign({}, row)
+      this.$api.sysTracker.get({ id: row.id }).then(res => {
+        const { data: { header, res_body, req_body }} = res
+        this.temp.header = header && decodeURIComponent(atob(header))
+        this.temp.res_body = res_body && JSON.stringify(JSON.parse(decodeURIComponent(atob(res_body))), null, '\t')
+        this.temp.req_body = req_body && JSON.stringify(JSON.parse(decodeURIComponent(atob(req_body))), null, '\t')
+        this.dialogVisible = true
+      })
+    }
+  }
+}
+</script>
+
+<style>
+.repair-item .oprate {
+  color: #409eff;
+}
+.repair-item .button {
+  width: 100%;
+  height: 30px;
+  line-height: 30px;
+  text-align: center;
+  border: 2px dotted #eee;
+  background-color: white;
+}
+</style>

+ 32 - 0
src/views/table/query.js

@@ -0,0 +1,32 @@
+import i18n from '@/i18n'
+
+export const table = {
+  data() {
+    return {
+      query: {
+        export: {
+          name: 'tables.xlsx',
+          size: 1000
+        },
+        items: [
+          {
+            name: 'name',
+            placeholder: i18n.t('Name'),
+            span: 4,
+            style: '',
+            type: '',
+            value: ''
+          },
+          {
+            name: 'code',
+            placeholder: i18n.t('Code'),
+            span: 4,
+            style: '',
+            type: '',
+            code: ''
+          }
+        ]
+      }
+    }
+  }
+}