Merge pull request '邓洁 : 修改页面细节' (#10) from dengjie into master

Reviewed-on: http://git.feashow.cn/feashow/tunnel-cloud-front/pulls/10
This commit is contained in:
odjbin
2023-11-06 08:42:34 +00:00
15 changed files with 293 additions and 232 deletions

View File

@@ -1,8 +1,8 @@
<template> <template>
<div> <div>
<el-form :model="queryParams" inline class="query-form" ref="queryForm"> <el-form :model="queryParams" inline class="query-form" ref="queryForm">
<el-form-item label="数据名称" prop="dsName"> <el-form-item label="数据模型名称" prop="dsName">
<el-input v-model="queryParams.dsName" placeholder="请输入数据名称" clearable></el-input> <el-input v-model="queryParams.dsName" placeholder="请输入数据模型名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="数据库名称" prop="dbName"> <el-form-item label="数据库名称" prop="dbName">
<el-input v-model="queryParams.dbName" placeholder="请输入数据库名称" clearable></el-input> <el-input v-model="queryParams.dbName" placeholder="请输入数据库名称" clearable></el-input>
@@ -20,9 +20,8 @@
</el-form> </el-form>
<div class="query-btn"> <div class="query-btn">
<el-button type="primary" v-perm="['query:source:add']" @click="handleAdd" :icon="Plus" plain>新增</el-button> <el-button type="primary" v-perm="['query:source:add']" @click="handleAdd" :icon="Plus" plain>新增</el-button>
<el-button type="danger" v-perm="['query:source:del']" @click="handleDelete" :icon="Delete" plain <popover-delete :name="sourceName" btn-type="danger" :type="'数据模型'" :is-plain="true" :btn-icon="Delete" :is-disabled="disabled" :perm="['query:source:del']"
:disabled="disabled">删除 @delete="handleDelete(sourceId)"/>
</el-button>
<el-button type="warning" v-perm="['query:source:export']" @click="handleExport" :icon="Download" plain>导出 <el-button type="warning" v-perm="['query:source:export']" @click="handleExport" :icon="Download" plain>导出
</el-button> </el-button>
</div> </div>
@@ -37,27 +36,23 @@
> >
<el-table-column type="selection" width="55"/> <el-table-column type="selection" width="55"/>
<el-table-column label="序号" type="index" width="60" align="center"/> <el-table-column label="序号" type="index" width="60" align="center"/>
<el-table-column prop="dsName" label="数据名称" align="center"/> <el-table-column prop="dsName" label="数据模型名称" align="center"/>
<el-table-column prop="dbName" label="数据库名称" align="center"/> <el-table-column prop="dbName" label="数据库名称" align="center"/>
<el-table-column prop="username" label="数据用户名" align="center"/> <el-table-column prop="username" label="数据模型用户名" align="center"/>
<el-table-column prop="type" label="数据类型" align="center"/> <el-table-column prop="type" label="数据模型类型" align="center"/>
<el-table-column prop="confType" label="数据配置类型" align="center"> <el-table-column prop="confType" label="数据模型配置类型" align="center">
<template #default="scope"> <template #default="scope">
<el-tag :type="scope.row.configType === 1? '':'warning'">{{ <tag dict-type="data_source_config" :value="scope.row.configType"/>
scope.row.configType === 1 ? '主机' : 'JDBC'
}}
</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="url" label="数据连接地址" align="center"/> <el-table-column prop="url" label="数据模型连接地址" align="center"/>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button type="text" size="mini" v-perm="['query:source:edit']" <el-button type="text" size="mini" v-perm="['query:source:edit']"
@click="handleEdit(scope.row.id)" :icon="Edit">编辑 @click="handleEdit(scope.row.id)" >编辑
</el-button>
<el-button type="text" size="mini" v-perm="['query:source:del']" @click="handleDelete(scope.row)"
:icon="Delete">删除
</el-button> </el-button>
<popover-delete :name="scope.row.dsName" :type="'数据模型'" :perm="['query:source:del']"
@delete="handleDelete(scope.row.id)"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -68,23 +63,23 @@
<el-form :model="form" ref="formInstance" :rules="formRules" class="dialog-form" :validate-on-rule-change="false"> <el-form :model="form" ref="formInstance" :rules="formRules" class="dialog-form" :validate-on-rule-change="false">
<el-row> <el-row>
<el-col :span="11"> <el-col :span="11">
<el-form-item label="数据名称" prop="dsName"> <el-form-item label="数据模型名称" prop="dsName">
<el-input v-model="form.dsName" placeholder="请输入数据名称"></el-input> <el-input v-model="form.dsName" placeholder="请输入数据模型名称"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="11" :offset="2"> <el-col :span="11" :offset="2">
<el-form-item label="数据用户名" prop="username"> <el-form-item label="数据模型用户名" prop="username">
<el-input v-model="form.username" placeholder="请输入数据用户名"></el-input> <el-input v-model="form.username" placeholder="请输入数据模型用户名"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="11"> <el-col :span="11">
<el-form-item label="数据密码" prop="password"> <el-form-item label="数据模型密码" prop="password">
<el-input v-model="form.password" placeholder="请输入数据密码"></el-input> <el-input v-model="form.password" placeholder="请输入数据模型密码"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="11" :offset="2"> <el-col :span="11" :offset="2">
<el-form-item label="数据类型" prop="type"> <el-form-item label="数据模型类型" prop="type">
<el-select v-model="form.type" placeholder="请选择数据类型" filterable @change="handleTypeChange(form.type)"> <el-select v-model="form.type" placeholder="请选择数据模型类型" filterable @change="handleTypeChange(form.type)">
<el-option <el-option
v-for="typeItem in typeList" v-for="typeItem in typeList"
:key="typeItem.value" :key="typeItem.value"
@@ -103,13 +98,13 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="11" :offset="2" v-if="form.configType === 1"> <el-col :span="11" :offset="2" v-if="form.configType === 1">
<el-form-item label="数据端口" prop="port"> <el-form-item label="数据模型端口" prop="port">
<el-input-number v-model="form.port"></el-input-number> <el-input-number v-model="form.port"></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="11" v-if="form.configType === 1"> <el-col :span="11" v-if="form.configType === 1">
<el-form-item label="数据服务地址" prop="host"> <el-form-item label="数据模型服务地址" prop="host">
<el-input v-model="form.host" placeholder="请输入数据服务地址"></el-input> <el-input v-model="form.host" placeholder="请输入数据模型服务地址"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="11" :offset="2"> <el-col :span="11" :offset="2">
@@ -118,14 +113,14 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="form.configType === 2"> <el-col :span="24" v-if="form.configType === 2">
<el-form-item label="数据连接地址" prop="url"> <el-form-item label="数据模型连接地址" prop="url">
<el-input v-model="form.url" :rows="2" <el-input v-model="form.url" :rows="4"
type="textarea" placeholder="请输入数据连接地址"></el-input> type="textarea" placeholder="请输入数据模型连接地址"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="form.configType === 1"> <el-col :span="24" v-if="form.configType === 1">
<el-form-item label="配置参数" prop="args"> <el-form-item label="配置参数" prop="args">
<el-input v-model="form.args" :rows="2" <el-input v-model="form.args" :rows="4"
type="textarea" placeholder="请输入配置参数"></el-input> type="textarea" placeholder="请输入配置参数"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -142,10 +137,8 @@
</el-row> </el-row>
</el-form> </el-form>
<template #footer> <template #footer>
<span>
<el-button @click="handleCancel">取消</el-button> <el-button @click="handleCancel">取消</el-button>
<el-button type="primary" @click="handleSubmit(formInstance)">确定</el-button> <el-button type="primary" @click="handleSubmit(formInstance)">确定</el-button>
</span>
</template> </template>
</el-dialog> </el-dialog>
</div> </div>
@@ -183,21 +176,22 @@ const queryForm = ref([])
const loading = ref(true) const loading = ref(true)
const total = ref() const total = ref()
const sourceId = ref() const sourceId = ref()
const sourceName = ref()
const singleTable = ref() const singleTable = ref()
const title = ref('') const title = ref('')
const isVisited = ref(false) const isVisited = ref(false)
const form = ref() const form = ref()
const formInstance = ref() const formInstance = ref()
const formRules = ref({ const formRules = ref({
dsName: [{required: true, message: '请输入数据名称', trigger: 'blur'}], dsName: [{required: true, message: '请输入数据模型名称', trigger: 'blur'}],
username: [{required: true, message: '请输入数据用户名', trigger: 'blur'}], username: [{required: true, message: '请输入数据模型用户名', trigger: 'blur'}],
password: [{required: true, message: '请输入数据密码', trigger: 'blur'}], password: [{required: true, message: '请输入数据模型密码', trigger: 'blur'}],
type: [{required: true, message: '请选择数据类型', trigger: 'blur'}], type: [{required: true, message: '请选择数据模型类型', trigger: 'blur'}],
configType: [{required: true, message: '请选择配置类型', trigger: 'blur'}], configType: [{required: true, message: '请选择配置类型', trigger: 'blur'}],
port: [{required: true, message: '请输入数据端口', trigger: 'blur'}], port: [{required: true, message: '请输入数据模型端口', trigger: 'blur'}],
host: [{required: true, message: '请输入数据服务地址', trigger: 'blur'}], host: [{required: true, message: '请输入数据模型服务地址', trigger: 'blur'}],
dbName: [{required: true, message: '请输入数据库名称', trigger: 'blur'}], dbName: [{required: true, message: '请输入数据库名称', trigger: 'blur'}],
url: [{required: true, message: '请输入数据连接地址', trigger: 'blur'}], url: [{required: true, message: '请输入数据模型连接地址', trigger: 'blur'}],
params:{ params:{
serviceName: [{required: true, message: '请输入服务名称', trigger: 'blur'}], serviceName: [{required: true, message: '请输入服务名称', trigger: 'blur'}],
namespace: [{required: true, message: '请输入命名空间', trigger: 'blur'}] namespace: [{required: true, message: '请输入命名空间', trigger: 'blur'}]
@@ -278,7 +272,7 @@ const handleSubmit = async (instance) => {
if (!instance) return if (!instance) return
instance.validate(async (valid) => { instance.validate(async (valid) => {
if (!valid) return if (!valid) return
if (title.value === '新增数据管理') { if (title.value === '新增数据模型管理') {
addDataSourceManage(form.value).then(res => { addDataSourceManage(form.value).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
ElMessage.success(res.msg) ElMessage.success(res.msg)
@@ -305,7 +299,7 @@ const handleSubmit = async (instance) => {
const handleAdd = async () => { const handleAdd = async () => {
formRules.value.password[0].required = true formRules.value.password[0].required = true
restFrom() restFrom()
title.value = "新增数据管理" title.value = "新增数据模型管理"
isVisited.value = true isVisited.value = true
nextTick(()=>{ nextTick(()=>{
// 清空校验 // 清空校验
@@ -320,7 +314,7 @@ const handleEdit = async (id) => {
console.log('res', res.data) console.log('res', res.data)
formRules.value.password[0].required = false formRules.value.password[0].required = false
form.value = res.data form.value = res.data
title.value = "编辑数据管理" title.value = "编辑数据模型管理"
isVisited.value = true isVisited.value = true
nextTick(()=>{ nextTick(()=>{
// 清空校验 // 清空校验
@@ -341,6 +335,7 @@ const handleSelect = async (selection, row) => {
if (selection.length !== 0) { if (selection.length !== 0) {
disabled.value = false disabled.value = false
sourceId.value = row.id sourceId.value = row.id
sourceName.value = row.dsName
if (selection.length > 1) { if (selection.length > 1) {
const del_row = selection.shift(); const del_row = selection.shift();
singleTable.value.toggleRowSelection(del_row, false); singleTable.value.toggleRowSelection(del_row, false);
@@ -362,13 +357,8 @@ const handleCurrentChange = async (val) => {
await getList() await getList()
} }
//删除 //删除
const handleDelete = async (row) => { const handleDelete = async (id) => {
ElMessageBox.confirm(`确认删除名称为${row.dsName}的数据源管理吗?`, '系统提示', { delDataSourceManage(id).then(res => {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
delDataSourceManage(row.id).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
ElMessage.success(res.msg) ElMessage.success(res.msg)
getList() getList()
@@ -376,7 +366,6 @@ const handleDelete = async (row) => {
ElMessage.error(res.msg) ElMessage.error(res.msg)
} }
}) })
})
} }
getTypeOption() getTypeOption()

View File

@@ -71,6 +71,7 @@ const getData = () => {
queryData.push(queryItem) queryData.push(queryItem)
} }
}) })
tableLoading.value = true
getPageData(pageInfo,{list:queryData,queryId}).then(res=>{ getPageData(pageInfo,{list:queryData,queryId}).then(res=>{
let data = res.data let data = res.data
tableData.value = data.rows tableData.value = data.rows

View File

@@ -17,7 +17,9 @@
</el-form> </el-form>
<div class="query-btn"> <div class="query-btn">
<el-button type="primary" @click="handleAdd" :icon="Plus" plain>新增</el-button> <el-button type="primary" @click="handleAdd" :icon="Plus" plain>新增</el-button>
<el-button type="danger" @click="handleMoreDelete" :icon="Delete" plain>删除</el-button> <popover-delete :name="uqNameList" btn-type="danger" :type="'SQL查询'"
:is-disabled="disabled" :is-plain="true" :btn-icon="Delete"
@delete="handleDelete(uqIds)"/>
</div> </div>
<div class="table"> <div class="table">
<el-table <el-table
@@ -48,14 +50,13 @@
<template #default="scope"> <template #default="scope">
<div v-if="scope.row.publish == false"> <div v-if="scope.row.publish == false">
<el-button type="text" size="mini" <el-button type="text" size="mini"
@click="handleEdit(scope.row.id)" :icon="Edit">编辑 @click="handleEdit(scope.row.id)" >编辑
</el-button> </el-button>
<el-button type="text" size="mini" <el-button type="text" size="mini"
@click="handleDesign(scope.row)" :icon="Edit">设计 @click="handleDesign(scope.row)" >设计
</el-button>
<el-button type="text" size="mini" @click="handleDelete(scope.row)"
:icon="Delete" style="color: red">删除
</el-button> </el-button>
<popover-delete :name="scope.row.uqName" :type="'SQL查询'"
@delete="handleDelete(scope.row.id)"/>
</div> </div>
<div v-else> <div v-else>
<el-button type="text" size="mini" @click="handleDownLine(scope.row)" <el-button type="text" size="mini" @click="handleDownLine(scope.row)"
@@ -133,9 +134,12 @@ const queryParams = reactive({
}) })
const dataSourceOption = ref([]) const dataSourceOption = ref([])
const queryForm = ref([]) const queryForm = ref([])
const uqIds = ref([])
const uqNameList = ref([])
const list = ref([]) const list = ref([])
const total = ref() const total = ref()
const loading = ref(true) const loading = ref(true)
const disabled = ref(true)
const title = ref('') const title = ref('')
const isVisited = ref(false) const isVisited = ref(false)
const pageInfo = reactive({ const pageInfo = reactive({
@@ -253,15 +257,15 @@ const handleDownLine = (row) => {
} }
//单个删除 //单个删除
const handleDelete = async (row) => { const handleDelete = async (id) => {
let list = [] // let list = []
list.push(row.id) // list.push(row.id)
ElMessageBox.confirm(`确认删除名称为${row.uqName}的数据吗?`, '系统提示', { // ElMessageBox.confirm(`确认删除名称为${row.uqName}的数据吗?`, '系统提示', {
confirmButtonText: '确定', // confirmButtonText: '确定',
cancelButtonText: '取消', // cancelButtonText: '取消',
type: 'warning' // type: 'warning'
}).then(() => { // }).then(() => {
delSql(list).then(res => { delSql(id).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
ElMessage.success(res.msg) ElMessage.success(res.msg)
getList() getList()
@@ -269,7 +273,7 @@ const handleDelete = async (row) => {
ElMessage.error(res.msg) ElMessage.error(res.msg)
} }
}) })
}) // })
} }
//取消 //取消
const handleCancel = () => { const handleCancel = () => {
@@ -305,14 +309,16 @@ const handleSubmit = async (instance) => {
} }
}) })
} }
//可删除多行
const handleMoreDelete = () => {
}
//勾选table数据行事件 //勾选table数据行事件
const handleSelect = (selection) => { const handleSelect = async (selection) => {
console.log('selection', selection) if (selection.length !== 0) {
// tableNameArray.value=selection.map(item => item.tableName) disabled.value = false
uqIds.value=selection.map(item => item.id).join()
uqNameList.value = selection.map(item => item.uqName).join()
} else {
disabled.value = true
}
} }
//切换每页显示条数 //切换每页显示条数
const handleSizeChange = async (val) => { const handleSizeChange = async (val) => {

View File

@@ -39,13 +39,13 @@
<el-table <el-table
:data="queryParams.relationMappings" :data="queryParams.relationMappings"
row-key="mainId" row-key="mainId"
:lazy="true" v-loading="loading"
@selection-change="handleSelectionChange" @selection-change="handleSelectionChange"
:header-cell-style="{'background':'#f5f5f8'}" :header-cell-style="{'background':'#f5f5f8'}"
ref="relationalMap"> ref="relationalMap">
<el-table-column type="selection" width="55" align="center" prop="index"/> <el-table-column type="selection" width="55" align="center" prop="index"/>
<el-table-column label="序号" align="center" type="index" width="55"/> <el-table-column label="序号" align="center" type="index" width="60"/>
<el-table-column label="外键" prop="mainKey"> <el-table-column label="外键" prop="mainKey" align="center">
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.mainKey" placeholder="外键" filterable clearable> <el-select v-model="scope.row.mainKey" placeholder="外键" filterable clearable>
<el-option <el-option
@@ -57,7 +57,7 @@
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="关联表" prop="childId"> <el-table-column label="关联表" prop="childId" align="center">
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.childId" placeholder="关联表" filterable clearable> <el-select v-model="scope.row.childId" placeholder="关联表" filterable clearable>
<el-option <el-option
@@ -69,7 +69,7 @@
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="关联字段" prop="childKey"> <el-table-column label="关联字段" prop="childKey" align="center">
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.childKey" placeholder="关联字段" <el-select v-model="scope.row.childKey" placeholder="关联字段"
@visible-change="handleVisibleChange(scope.row.childId,scope.$index,$event)" filterable @visible-change="handleVisibleChange(scope.row.childId,scope.$index,$event)" filterable
@@ -83,7 +83,7 @@
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="关联方式" prop="type"> <el-table-column label="关联方式" prop="type" align="center">
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.type" multiple placeholder="关联方式" filterable clearable> <el-select v-model="scope.row.type" multiple placeholder="关联方式" filterable clearable>
<el-option label="hasOne" value="1"/> <el-option label="hasOne" value="1"/>
@@ -101,21 +101,22 @@
:data="queryParams.columnList" :data="queryParams.columnList"
row-key="columnId" row-key="columnId"
:lazy="true" :lazy="true"
v-loading="loading"
:header-cell-style="{'background':'#f5f5f8'}" :header-cell-style="{'background':'#f5f5f8'}"
ref="topSearchColumn"> ref="topSearchColumn">
<el-table-column label="序号" align="center" type="index" width="60"/> <el-table-column label="序号" align="center" type="index" width="60" />
<el-table-column label="列名称" prop="columnName"> <el-table-column label="列名称" prop="columnName" align="center">
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.columnName }}</span> <span>{{ scope.row.columnName }}</span>
<span class="isPk" v-if="scope.row.pk">*</span> <span class="isPk" v-if="scope.row.pk">*</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="列描述" prop="columnComment"> <el-table-column label="列描述" prop="columnComment" align="center">
<template #default="scope"> <template #default="scope">
<el-input v-model="scope.row.columnComment" placeholder="请输入列描述"/> <el-input v-model="scope.row.columnComment" placeholder="请输入列描述"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="列类型" prop="columnType"> <el-table-column label="列类型" prop="columnType" align="center">
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.columnType }}</span> <span>{{ scope.row.columnType }}</span>
</template> </template>
@@ -149,7 +150,7 @@ import {
import {getRoleOption} from "@/api/role/role"; import {getRoleOption} from "@/api/role/role";
const isVisited = ref(false) const isVisited = ref(false)
const queryParams = reactive({ let queryParams = reactive({
table: { table: {
dataSourceId: '', dataSourceId: '',
dataSourceType: '', dataSourceType: '',
@@ -161,6 +162,7 @@ const queryParams = reactive({
columnList: [] columnList: []
}) })
const roleList = ref([]); const roleList = ref([]);
const loading = ref(true)
const tableInfoList = ref([]); const tableInfoList = ref([]);
const rules = reactive({ const rules = reactive({
roleIds: [ roleIds: [
@@ -178,6 +180,19 @@ const props = defineProps({
default: '' default: ''
} }
}) })
const restForm = () => {
queryParams = {
table: {
dataSourceId: '',
dataSourceType: '',
tableName: '',
tableComment: '',
},
roleIds: [],
relationMappings: [],
columnList: []
}
}
//获取角色option //获取角色option
const getRole = () => { const getRole = () => {
getRoleOption().then(res => { getRoleOption().then(res => {
@@ -206,10 +221,10 @@ const handleVisibleChange = (id, index, e) => {
} }
//获取表详情 //获取表详情
const getTableDetail = async () => { const getTableDetail = async () => {
// console.log('props.tableId',props.tableId) loading.value = true
getTableDetails(props.tableId).then(res => { await getTableDetails(props.tableId).then(res => {
console.log('详情', res)
if (res.code === 1000) { if (res.code === 1000) {
loading.value = false
if (res.data.roleIds) { if (res.data.roleIds) {
queryParams.table = res.data.table queryParams.table = res.data.table
getAssociationOption(res.data.table.dataSourceId) getAssociationOption(res.data.table.dataSourceId)
@@ -224,6 +239,7 @@ const getTableDetail = async () => {
queryParams.columnList = res.data.columnList queryParams.columnList = res.data.columnList
} }
isVisited.value = true isVisited.value = true
} else { } else {
ElMessage.error(res.msg) ElMessage.error(res.msg)
} }
@@ -269,7 +285,8 @@ const show = () => {
getRole() getRole()
} }
defineExpose({ defineExpose({
show show,
restForm
}) })
</script> </script>

View File

@@ -21,10 +21,11 @@
<el-config-provider> <el-config-provider>
<el-date-picker <el-date-picker
v-model="dateValue" v-model="dateValue"
type="daterange" type="datetimerange"
:shortcuts="shortcuts"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss"
/> />
</el-config-provider> </el-config-provider>
</el-form-item> </el-form-item>
@@ -42,8 +43,9 @@
@selection-change="handleSelect" @selection-change="handleSelect"
> >
<el-table-column type="selection" width="55"/> <el-table-column type="selection" width="55"/>
<el-table-column label="序号" type="index" width="60" align="center"/>
<el-table-column prop="tableName" label="表名称" align="center"/> <el-table-column prop="tableName" label="表名称" align="center"/>
<el-table-column prop="tableComment" label="表描述" sortable align="center"/> <el-table-column prop="tableComment" label="表描述" align="center"/>
<el-table-column prop="createTime" label="创建时间" sortable align="center"/> <el-table-column prop="createTime" label="创建时间" sortable align="center"/>
<el-table-column prop="updateTime" label="更新时间" sortable align="center"/> <el-table-column prop="updateTime" label="更新时间" sortable align="center"/>
</el-table> </el-table>
@@ -69,7 +71,7 @@ import Paging from "@/components/pagination/index.vue";
const emit = defineEmits(['importSuccess','changeEdit']) const emit = defineEmits(['importSuccess','changeEdit'])
const queryParams = reactive({ let queryParams = reactive({
dataSourceId: '', dataSourceId: '',
tableName: '', tableName: '',
tableComment: '' tableComment: ''
@@ -80,9 +82,38 @@ const pageInfo = reactive({
}) })
const list = ref([]) const list = ref([])
const tableNameArray = ref([]) const tableNameArray = ref([])
const queryForm = ref([]) const queryForm = ref()
const loading = ref(true) const loading = ref(true)
const dateValue = ref(); const dateValue = ref();
const shortcuts = [
{
text: "上周",
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
return [start, end];
}
},
{
text: "上月",
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
return [start, end];
}
},
{
text: "三月前",
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
return [start, end];
}
}
];
const total = ref(0) const total = ref(0)
const isVisited = ref(false) const isVisited = ref(false)
const props = defineProps({ const props = defineProps({
@@ -91,9 +122,11 @@ const props = defineProps({
default: [] default: []
} }
}) })
const show = () => { const show = () => {
isVisited.value = true isVisited.value = true
queryParams.dataSourceId = props.dataSourceOption[0].value queryParams.dataSourceId = props.dataSourceOption[0].value
dateValue.value = []
searchTableSearch() searchTableSearch()
} }
const searchTableSearch = async () => { const searchTableSearch = async () => {
@@ -108,7 +141,6 @@ const searchTableSearch = async () => {
} }
loading.value = true loading.value = true
getDynamicTableList(params).then(res => { getDynamicTableList(params).then(res => {
console.log('searchTableSearch',res)
if (res.code === 1000) { if (res.code === 1000) {
list.value = res.data.rows list.value = res.data.rows
total.value = res.data.total total.value = res.data.total

View File

@@ -2,7 +2,7 @@
<div> <div>
<el-form :model="queryParams" inline class="query-form" ref="queryForm"> <el-form :model="queryParams" inline class="query-form" ref="queryForm">
<el-form-item label="数据源" prop="dataSourceId"> <el-form-item label="数据源" prop="dataSourceId">
<el-select v-model="queryParams.dataSourceId" placeholder="数据源" clearable filterable> <el-select v-model="queryParams.dataSourceId" placeholder="数据源" clearable filterable>
<el-option <el-option
v-for="item in dataSourceOption" v-for="item in dataSourceOption"
:key="item.value" :key="item.value"
@@ -18,10 +18,11 @@
<el-config-provider> <el-config-provider>
<el-date-picker <el-date-picker
v-model="dateValue" v-model="dateValue"
type="daterange" type="datetimerange"
:shortcuts="shortcuts"
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD HH:mm:ss"
/> />
</el-config-provider> </el-config-provider>
</el-form-item> </el-form-item>
@@ -43,12 +44,12 @@
v-loading="loading" v-loading="loading"
@selection-change="handleSelect" @selection-change="handleSelect"
> >
<!-- <el-table-column type="selection" width="55"/>--> <!-- <el-table-column type="selection" width="55"/>-->
<el-table-column label="序号" type="index" width="60" align="center"/> <el-table-column label="序号" type="index" width="60" align="center"/>
<el-table-column prop="tableName" label="表名" align="center"/> <el-table-column prop="tableName" label="表名" align="center"/>
<el-table-column prop="dataSourceId" label="数据源名称" align="center"> <el-table-column prop="dataSourceId" label="数据源名称" align="center">
<template #default="scope"> <template #default="scope">
{{ getDataSourceOptionItem(scope.row.dataSourceId) }} <el-tag> {{ getDataSourceOptionItem(scope.row.dataSourceId) }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="dataSourceType" label="数据源类型" align="center"/> <el-table-column prop="dataSourceType" label="数据源类型" align="center"/>
@@ -57,18 +58,18 @@
<el-table-column label="操作"> <el-table-column label="操作">
<template #default="scope"> <template #default="scope">
<el-button type="text" size="mini" <el-button type="text" size="mini"
@click="handleEdit(scope.row.tableId)" :icon="Edit">编辑 @click="handleEdit(scope.row.tableId)">编辑
</el-button>
<el-button type="text" size="mini" @click="handleDelete(scope.row)"
:icon="Delete">删除
</el-button> </el-button>
<popover-delete :name="scope.row.tableName" :type="'表格'"
@delete="handleDelete(scope.row.tableId)"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<paging :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :page-sizes="[10, 20, 30, 40,50]" <paging :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :page-sizes="[10, 20, 30, 40,50]"
:total="total" @changeSize="handleSizeChange" @goPage="handleCurrentChange"/> :total="total" @changeSize="handleSizeChange" @goPage="handleCurrentChange"/>
<import-table ref="importTableRef" :data-source-option="dataSourceOption" @importSuccess="getList" @changeEdit="changeEdit"/> <import-table ref="importTableRef" :data-source-option="dataSourceOption" @importSuccess="getList"
@changeEdit="changeEdit"/>
<edit-table ref="editTableRef" :data-source-name="dataSourceName" :table-id="editTableId"/> <edit-table ref="editTableRef" :data-source-name="dataSourceName" :table-id="editTableId"/>
@@ -81,7 +82,7 @@ import EditTable from "./editTable.vue";
import {Search, Refresh, Delete, Edit, UploadFilled, Download} from '@element-plus/icons-vue' import {Search, Refresh, Delete, Edit, UploadFilled, Download} from '@element-plus/icons-vue'
import {ElMessage, ElMessageBox} from "element-plus"; import {ElMessage, ElMessageBox} from "element-plus";
import {useRouter} from "vue-router"; import {useRouter} from "vue-router";
import {getTableInfo,delTable} from "@/api/custom-query/table"; import {getTableInfo, delTable} from "@/api/custom-query/table";
import {getDataSourceOption} from "@/api/custom-query/datamodel"; import {getDataSourceOption} from "@/api/custom-query/datamodel";
import Paging from "@/components/pagination/index.vue"; import Paging from "@/components/pagination/index.vue";
@@ -99,6 +100,35 @@ const editTableId = ref()
const queryForm = ref([]) const queryForm = ref([])
const list = ref([]) const list = ref([])
const dateValue = ref(); const dateValue = ref();
const shortcuts = [
{
text: "上周",
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
return [start, end];
}
},
{
text: "上月",
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
return [start, end];
}
},
{
text: "三月前",
value: () => {
const end = new Date();
const start = new Date();
start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
return [start, end];
}
}
];
const dataSourceName = ref() const dataSourceName = ref()
const dataSourceOption = ref() const dataSourceOption = ref()
const total = ref() const total = ref()
@@ -150,7 +180,7 @@ const getOption = () => {
const getDataSourceOptionItem = (dataSourceId) => { const getDataSourceOptionItem = (dataSourceId) => {
for (let item of dataSourceOption.value) { for (let item of dataSourceOption.value) {
if (item.value === dataSourceId) { if (item.value === dataSourceId) {
dataSourceName.value=item.label dataSourceName.value = item.label
return item.label; return item.label;
} }
} }
@@ -163,7 +193,7 @@ const handleImport = async () => {
}) })
} }
//导入单个表格, 直接进入编辑页面 //导入单个表格, 直接进入编辑页面
const changeEdit=(data)=>{ const changeEdit = (data) => {
editTableId.value = data editTableId.value = data
nextTick(() => { nextTick(() => {
editTableRef.value.show() editTableRef.value.show()
@@ -178,20 +208,14 @@ const handleEdit = async (tableId) => {
} }
//删除 //删除
const handleDelete = async (row) => { const handleDelete = async (tableId) => {
ElMessageBox.confirm(`确认删除名称为${row.tableName}的表格吗?`, '系统提示', { delTable(tableId).then(res => {
confirmButtonText: '确定', if (res.code === 1000) {
cancelButtonText: '取消', ElMessage.success(res.msg)
type: 'warning' getList()
}).then(() => { } else {
delTable(row.tableId).then(res => { ElMessage.error(res.msg)
if (res.code === 1000) { }
ElMessage.success(res.msg)
getList()
} else {
ElMessage.error(res.msg)
}
})
}) })
} }
//切换每页显示条数 //切换每页显示条数

View File

@@ -6,7 +6,7 @@
</el-form-item> </el-form-item>
<el-form-item label="是否发布" prop="publish"> <el-form-item label="是否发布" prop="publish">
<el-select v-model="queryParams.publish" placeholder="请选择发布类型" clearable filterable> <el-select v-model="queryParams.publish" placeholder="请选择发布类型" clearable filterable>
<el-option label="已发布" value="2"/> <el-option label="已发布" value="1"/>
<el-option label="未发布" value="0"/> <el-option label="未发布" value="0"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
@@ -17,7 +17,9 @@
</el-form> </el-form>
<div class="query-btn"> <div class="query-btn">
<el-button type="primary" @click="handleAdd" :icon="Plus" plain>新增</el-button> <el-button type="primary" @click="handleAdd" :icon="Plus" plain>新增</el-button>
<el-button type="danger" @click="handleMoreDelete" :icon="Delete" plain>删除</el-button> <popover-delete :name="uqNameList" btn-type="danger" :type="'拓扑图查询'"
:is-disabled="disabled" :is-plain="true" :btn-icon="Delete"
@delete="handleDelete(uqIds)"/>
</div> </div>
<div class="table"> <div class="table">
<el-table <el-table
@@ -44,25 +46,24 @@
<el-table-column prop="uqDescribe" label="描述" align="center"/> <el-table-column prop="uqDescribe" label="描述" align="center"/>
<el-table-column prop="createTime" label="创建时间" align="center"/> <el-table-column prop="createTime" label="创建时间" align="center"/>
<el-table-column prop="updateTime" label="更新时间" align="center"/> <el-table-column prop="updateTime" label="更新时间" align="center"/>
<el-table-column label="操作"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<div v-if="scope.row.publish == false"> <div v-if="scope.row.publish == false">
<el-button type="text" size="mini" <el-button type="text" size="mini"
@click="handleEdit(scope.row.id)" :icon="Edit">编辑 @click="handleEdit(scope.row.id)" >编辑
</el-button> </el-button>
<el-button type="text" size="mini" <el-button type="text" size="mini"
@click="handleDesign(scope.row)" :icon="Edit">设计 @click="handleDesign(scope.row)" >设计
</el-button>
<el-button type="text" size="mini" @click="handleDelete(scope.row)"
:icon="Delete" style="color: red">删除
</el-button> </el-button>
<popover-delete :name="scope.row.uqName" :type="'拓扑图查询'"
@delete="handleDelete(scope.row.id)"/>
</div> </div>
<div v-else> <div v-else>
<el-button type="text" size="mini" @click="handleDownLine(scope.row)" <el-button type="text" size="mini" @click="handleDownLine(scope.row)"
:icon="Bottom" style="color: red">下线 :icon="Bottom" style="color: red">下线
</el-button> </el-button>
<el-button type="text" size="mini" <el-button type="text" size="mini"
@click="handleView(scope.row)" :icon="View">查看 @click="handleView(scope.row.id)" :icon="View">查看
</el-button> </el-button>
</div> </div>
</template> </template>
@@ -134,8 +135,11 @@ const queryParams = reactive({
const dataSourceOption = ref() const dataSourceOption = ref()
const queryForm = ref([]) const queryForm = ref([])
const list = ref([]) const list = ref([])
const uqIds = ref([])
const uqNameList = ref([])
const total = ref() const total = ref()
const loading = ref(true) const loading = ref(true)
const disabled = ref(true)
const title = ref('') const title = ref('')
const isVisited = ref(false) const isVisited = ref(false)
const pageInfo = reactive({ const pageInfo = reactive({
@@ -160,6 +164,7 @@ const getOption = () => {
}) })
} }
const getDataSourceOptionItem = (dataSourceId) => { const getDataSourceOptionItem = (dataSourceId) => {
if(dataSourceOption.value===undefined)return;
for (let item of dataSourceOption.value) { for (let item of dataSourceOption.value) {
if (item.value === dataSourceId) { if (item.value === dataSourceId) {
return item.label; return item.label;
@@ -251,17 +256,25 @@ const handleDownLine = (row) => {
}) })
}) })
} }
//查看
const handleView=(id)=>{
//router.push({path: `/custom/query/page/${id}`})
}
//单个删除 //单个删除
const handleDelete = async (row) => { const handleDelete = async (id) => {
let list = [] // let list = []
list.push(row.id) // if(Array.isArray(id)){
ElMessageBox.confirm(`确认删除名称为${row.uqName}的拓扑图吗?`, '系统提示', { // list=Object.values(id)
confirmButtonText: '确定', // }else {
cancelButtonText: '取消', // list.push(id)
type: 'warning' // }
}).then(() => { // console.log(list,'list')
delTopo(list).then(res => { // ElMessageBox.confirm(`确认删除名称为${row.uqName}的拓扑图吗?`, '系统提示', {
// confirmButtonText: '确定',
// cancelButtonText: '取消',
// type: 'warning'
// }).then(() => {
delTopo(id).then(res => {
if (res.code === 1000) { if (res.code === 1000) {
ElMessage.success(res.msg) ElMessage.success(res.msg)
getList() getList()
@@ -269,7 +282,7 @@ const handleDelete = async (row) => {
ElMessage.error(res.msg) ElMessage.error(res.msg)
} }
}) })
}) // })
} }
//取消 //取消
const handleCancel = () => { const handleCancel = () => {
@@ -304,15 +317,16 @@ const handleSubmit = async (instance) => {
}) })
} }
}) })
}
//可删除多行
const handleMoreDelete = () => {
} }
//勾选table数据行事件 //勾选table数据行事件
const handleSelect = (selection) => { const handleSelect = async (selection) => {
console.log('selection', selection) if (selection.length !== 0) {
// tableNameArray.value=selection.map(item => item.tableName) disabled.value = false
uqIds.value=selection.map(item => item.id).join()
uqNameList.value = selection.map(item => item.uqName).join()
} else {
disabled.value = true
}
} }
//切换每页显示条数 //切换每页显示条数
const handleSizeChange = async (val) => { const handleSizeChange = async (val) => {

View File

@@ -8,7 +8,7 @@
<el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable></el-input> <el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable></el-input>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="state"> <el-form-item label="状态" prop="state">
<el-select v-model="queryParams.state" placeholder="登录状态" clearable filterable> <el-select v-model="queryParams.state" placeholder="登录状态" clearable filterable>
<el-option <el-option
v-for="item in [{label:'成功',value: '0'},{label:'失败',value: '1'}]" v-for="item in [{label:'成功',value: '0'},{label:'失败',value: '1'}]"
:key="item.value" :key="item.value"
@@ -35,7 +35,9 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div class="query-btn"> <div class="query-btn">
<el-button type="danger" @click="handleDelete(infoId)" :icon="Delete" plain :disabled="disabled">删除</el-button> <popover-delete :name="infoId" btn-type="danger" :type="'日志'"
:is-disabled="disabled" :is-plain="true" :btn-icon="Delete"
@delete="handleDelete(infoId)"/>
</div> </div>
<div class="table"> <div class="table">
<el-table <el-table
@@ -48,21 +50,22 @@
> >
<el-table-column type="selection" width="55"/> <el-table-column type="selection" width="55"/>
<el-table-column prop="infoId" label="访问编号" align="center"/> <el-table-column prop="infoId" label="访问编号" align="center"/>
<el-table-column prop="userName" label="用户名称" sortable align="center"/> <el-table-column prop="userName" label="用户名称" align="center"/>
<el-table-column prop="ipddr" label="登录地址" align="center"/> <el-table-column prop="ipddr" label="登录地址" align="center"/>
<el-table-column prop="loginLocation" label="登录地点" align="center"/> <el-table-column prop="loginLocation" label="登录地点" align="center"/>
<el-table-column prop="browser" label="浏览器" align="center"/> <el-table-column prop="browser" label="浏览器" align="center"/>
<el-table-column prop="os" label="操作系统" align="center"/> <el-table-column prop="os" label="操作系统" align="center"/>
<el-table-column prop="state" label="登录状态" align="center"> <el-table-column prop="state" label="登录状态" align="center">
<template #default="scope"> <template #default="scope">
<el-tag :type="scope.row.state == '0'? '':'danger'">{{ scope.row.state == '0' ? '成功' : '失败' }}</el-tag> <tag dict-type="common_state" :value="scope.row.state"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="msg" label="操作信息" align="center"/> <el-table-column prop="msg" label="操作信息" align="center"/>
<el-table-column prop="loginTime" label="登录日期" sortable align="center"/> <el-table-column prop="loginTime" label="登录日期" sortable align="center"/>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button type="text" size="mini" @click="handleDelete(scope.row.infoId)" :icon="Delete" style="color: red">删除</el-button> <popover-delete :name="scope.row.userName" :type="'日志'"
@delete="handleDelete(scope.row.infoId)"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -157,19 +160,13 @@ const handleReset = () => {
//删除功能 //删除功能
const handleDelete = async (infoId) => { const handleDelete = async (infoId) => {
ElMessageBox.confirm(`是否确认删除访问编号为${infoId}的数据项吗?`, '系统提示', { deleteLoginLog(infoId).then(res => {
confirmButtonText: '确定', if (res.code === 1000) {
cancelButtonText: '取消', ElMessage.success(res.msg)
type: 'warning' getList()
}).then(() => { } else {
deleteLoginLog(infoId).then(res => { ElMessage.error(res.msg)
if (res.code === 1000) { }
ElMessage.success(res.msg)
getList()
} else {
ElMessage.error(res.msg)
}
})
}) })
} }
@@ -177,7 +174,7 @@ const handleDelete = async (infoId) => {
const handleSelect = async (selection) => { const handleSelect = async (selection) => {
if (selection.length !== 0) { if (selection.length !== 0) {
disabled.value = false disabled.value = false
infoId.value=selection.map(item=>item.infoId).join() infoId.value = selection.map(item => item.infoId).join()
} else { } else {
disabled.value = true disabled.value = true
} }

View File

@@ -26,7 +26,7 @@
<!-- <el-table-column type="selection" width="55" align="center"/>--> <!-- <el-table-column type="selection" width="55" align="center"/>-->
<!-- <el-table-column prop="tokenId" label="会话id" align="center"/>--> <!-- <el-table-column prop="tokenId" label="会话id" align="center"/>-->
<el-table-column prop="username" label="用户名" align="center"/> <el-table-column prop="username" label="用户名" align="center"/>
<el-table-column prop="deptName" label="部门名称" sortable align="center"/> <el-table-column prop="deptName" label="部门名称" align="center"/>
<el-table-column prop="ipAddr" label="登录ip" align="center"/> <el-table-column prop="ipAddr" label="登录ip" align="center"/>
<el-table-column prop="loginLocation" label="登录地点" align="center"/> <el-table-column prop="loginLocation" label="登录地点" align="center"/>
<el-table-column prop="browser" label="浏览器类型" align="center"/> <el-table-column prop="browser" label="浏览器类型" align="center"/>

View File

@@ -66,16 +66,16 @@
<tag dict-type="oper_type" :value="scope.row.businessType"/> <tag dict-type="oper_type" :value="scope.row.businessType"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="operName" label="操作人员" sortable align="center"/> <el-table-column prop="operName" label="操作人员" align="center"/>
<el-table-column prop="operIp" label="操作地址" align="center"/> <el-table-column prop="operIp" label="操作地址" align="center"/>
<el-table-column prop="operLocation" label="操作地点" align="center"/> <el-table-column prop="operLocation" label="操作地点" align="center"/>
<el-table-column prop="state" label="操作状态" align="center"> <el-table-column prop="state" label="操作状态" align="center">
<template #default="scope"> <template #default="scope">
<el-tag :type="scope.row.state == '0'? '':'danger'">{{ scope.row.state == "0" ? "成功" : "失败" }}</el-tag> <tag dict-type="common_state" :value="scope.row.state"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="operTime" label="操作日期" sortable align="center"/> <el-table-column prop="operTime" label="操作日期" sortable align="center"/>
<el-table-column prop="consumeTime" label="消耗时间" align="center"> <el-table-column prop="consumeTime" label="消耗时间" sortable align="center">
<template #default="scope"> <template #default="scope">
{{ scope.row.consumeTime }}ms {{ scope.row.consumeTime }}ms
</template> </template>
@@ -83,9 +83,8 @@
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button type="text" size="mini" @click="handleViewDetails(scope.row.operId)" >详细</el-button> <el-button type="text" size="mini" @click="handleViewDetails(scope.row.operId)" >详细</el-button>
<popover-delete :name="operIds" btn-type="text" :type="'日志'" <popover-delete :name="operIds" :type="'日志'"
:is-plain="false" @delete="handleDelete(scope.row.operId)"/>
@delete="handleDelete(scope.row.operId)" />
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -148,7 +147,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="操作状态:" prop="state"> <el-form-item label="操作状态:" prop="state">
<el-tag :type="form.state == '0'? '':'danger'">{{ form.state == "0" ? "成功" : "失败" }}</el-tag> <tag dict-type="common_state" :value="form.state"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">

View File

@@ -44,9 +44,9 @@
> >
<el-table-column type="selection" width="80"/> <el-table-column type="selection" width="80"/>
<el-table-column prop="tableName" label="表名称" align="center"/> <el-table-column prop="tableName" label="表名称" align="center"/>
<el-table-column prop="tableComment" label="表描述" sortable align="center"/> <el-table-column prop="tableComment" label="表描述" align="center"/>
<el-table-column prop="createTime" label="创建时间" sortable align="center"/> <el-table-column prop="createTime" label="创建时间" sortable align="center"/>
<el-table-column prop="updateTime" label="更新时间" align="center"/> <el-table-column prop="updateTime" label="更新时间" sortable align="center"/>
<el-table-column label="操作"> <el-table-column label="操作">
<template #default="scope"> <template #default="scope">
<el-button type="text" size="mini" @click="handleImport(scope.row)" :icon="View">导入</el-button> <el-button type="text" size="mini" @click="handleImport(scope.row)" :icon="View">导入</el-button>

View File

@@ -47,23 +47,24 @@
v-loading="loading" v-loading="loading"
> >
<el-table-column label="序号" type="index" align="center" width="60"/> <el-table-column label="序号" type="index" align="center" width="60"/>
<el-table-column prop="tableName" label="表名称" align="center"/> <el-table-column prop="tableName" label="表名称" align="center"/>
<el-table-column prop="tableComment" label="表描述" sortable align="center"/> <el-table-column prop="tableComment" label="表描述" align="center"/>
<el-table-column prop="className" label="实体类" align="center"/> <el-table-column prop="className" label="实体类" align="center"/>
<el-table-column prop="dataSourceId" label="数据源" align="center"> <el-table-column prop="dataSourceId" label="数据源" align="center">
<template #default="scope"> <template #default="scope">
{{ getDataSourceOptionItem(scope.row.dataSourceId) }} <el-tag >{{ getDataSourceOptionItem(scope.row.dataSourceId) }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="创建时间" sortable align="center"/> <el-table-column prop="createTime" label="创建时间" sortable align="center"/>
<el-table-column prop="updateTime" label="更新时间" align="center"/> <el-table-column prop="updateTime" label="更新时间" sortable align="center"/>
<el-table-column label="操作" width="300" align="center"> <el-table-column label="操作" width="260" align="center">
<template #default="scope"> <template #default="scope">
<el-button type="text" size="mini" @click="handlePreview(scope.row.tableId)" :icon="View">预览</el-button> <el-button type="text" size="mini" @click="handlePreview(scope.row.tableId)">预览</el-button>
<el-button type="text" size="mini" @click="handleEdit(scope.row.tableId)" :icon="Edit">编辑</el-button> <el-button type="text" size="mini" @click="handleEdit(scope.row.tableId)">编辑</el-button>
<el-button type="text" size="mini" @click="handleDownLoad(scope.row.tableId)" :icon="Download">下载 <el-button type="text" size="mini" @click="handleDownLoad(scope.row.tableId)">下载
</el-button> </el-button>
<el-button type="text" size="mini" @click="handleDeleteTable(scope.row)" :icon="Delete">删除</el-button> <popover-delete :name="scope.row.tableName" :type="'表'"
@delete="handleDeleteTable(scope.row.tableId)"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -231,20 +232,14 @@ const handleCurrentChange = (val) => {
getList() getList()
} }
const handleDeleteTable = async (item) => { const handleDeleteTable = async (tableId) => {
ElMessageBox.confirm(`确认删除名称为${item.tableName}的表吗?`, '系统提示', { deleteTable(tableId).then(res => {
confirmButtonText: '确定', if (res.code === 1000) {
cancelButtonText: '取消', ElMessage.success(res.msg)
type: 'warning' getList()
}).then(() => { } else {
deleteTable(item.tableId).then(res => { ElMessage.error(res.msg)
if (res.code === 1000) { }
ElMessage.success(res.msg)
getList()
} else {
ElMessage.error(res.msg)
}
})
}) })
} }

View File

@@ -27,14 +27,11 @@
<el-table-column label="序号" type="index" width="60" align="center"/> <el-table-column label="序号" type="index" width="60" align="center"/>
<el-table-column prop="dsName" label="数据源名称" align="center"/> <el-table-column prop="dsName" label="数据源名称" align="center"/>
<el-table-column prop="dbName" label="数据库名称" align="center"/> <el-table-column prop="dbName" label="数据库名称" align="center"/>
<el-table-column prop="username" label="用户名称" sortable align="center"/> <el-table-column prop="username" label="用户名称" align="center"/>
<el-table-column prop="jdbcUrl" label="数据库连接url" sortable align="center" width="140" /> <el-table-column prop="jdbcUrl" label="数据库连接url" align="center" width="140" />
<el-table-column prop="confType" label="数据源配置类型" align="center"> <el-table-column prop="confType" label="数据源配置类型" align="center">
<template #default="scope"> <template #default="scope">
<el-tag :type="scope.row.confType === 1? '':'warning'">{{ <tag dict-type="data_source_config" :value="scope.row.confType"/>
scope.row.confType === 1 ? '主机' : 'JDBC'
}}
</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="创建时间" align="center"/> <el-table-column prop="createTime" label="创建时间" align="center"/>
@@ -104,13 +101,13 @@
<el-col :span="24" v-if="form.confType === 2"> <el-col :span="24" v-if="form.confType === 2">
<el-form-item label="连接地址" prop="jdbcUrl"> <el-form-item label="连接地址" prop="jdbcUrl">
<el-input v-model="form.jdbcUrl" <el-input v-model="form.jdbcUrl"
:rows="2" :rows="4"
type="textarea" placeholder="请输入连接地址"></el-input> type="textarea" placeholder="请输入连接地址"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="24" v-if="form.confType === 1"> <el-col :span="24" v-if="form.confType === 1">
<el-form-item label="配置参数" prop="args"> <el-form-item label="配置参数" prop="args">
<el-input v-model="form.args" :rows="3" <el-input v-model="form.args" :rows="4"
type="textarea" placeholder="请输入配置参数"></el-input> type="textarea" placeholder="请输入配置参数"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@@ -23,10 +23,7 @@
<el-table-column prop="noticeTitle" label="公告标题" align="center"/> <el-table-column prop="noticeTitle" label="公告标题" align="center"/>
<el-table-column prop="state" label="阅读状态" align="center"> <el-table-column prop="state" label="阅读状态" align="center">
<template #default="scope"> <template #default="scope">
<el-tag :type="scope.row.state == 0? '':'warning'">{{ <tag dict-type="read_state" :value="scope.row.state"/>
scope.row.state == 0 ? '未读' : '已读'
}}
</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">

View File

@@ -82,11 +82,10 @@
<el-table-column label="操作" align="center"> <el-table-column label="操作" align="center">
<template #default="scope"> <template #default="scope">
<el-button type="text" size="mini" v-perm="['dict:data:edit']" <el-button type="text" size="mini" v-perm="['dict:data:edit']"
@click="handleEditData(scope.row.dictCode)" :icon="Edit">编辑 @click="handleEditData(scope.row.dictCode)">编辑
</el-button>
<el-button type="text" size="mini" v-perm="['dict:data:del']" @click="handleDeleteData(scope.row)"
:icon="Delete">删除
</el-button> </el-button>
<popover-delete :name="scope.row.dictLabel" :type="'字典数据'" :perm="['dict:data:del']" :btn-icon="Delete"
@delete="handleDeleteData(scope.row.dictCode)"/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@@ -474,19 +473,13 @@ const handleEditData = async (dictCode) => {
}; };
//删除字典数据 //删除字典数据
const handleDeleteData = async (row) => { const handleDeleteData = async (row) => {
ElMessageBox.confirm(`确认删除标签名为${row.dictLabel}的字典类型表吗?`, "系统提示", { delDictData(row.dictCode).then(res => {
confirmButtonText: "确定", if (res.code === 1000) {
cancelButtonText: "取消", ElMessage.success(res.msg);
type: "warning" getList('', typeData.value);
}).then(() => { } else {
delDictData(row.dictCode).then(res => { ElMessage.error(res.msg);
if (res.code === 1000) { }
ElMessage.success(res.msg);
getList('', typeData.value);
} else {
ElMessage.error(res.msg);
}
});
}); });
}; };