Browse Source

完成数据中台数据源的CURD操作

v7_master
超级管理员 2 years ago
parent
commit
19a5f66c32
  1. 149
      src/types/components.d.ts
  2. 144
      src/views/date/assets.vue

149
src/types/components.d.ts

@ -0,0 +1,149 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
import '@vue/runtime-core'
export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
AceDrawer: typeof import('./../components/DesignForm/aceDrawer.vue')['default']
AddNode: typeof import('./../components/workflow/addNode.vue')['default']
ApproverDrawer: typeof import('./../components/workflow/drwer/approverDrawer.vue')['default']
BianXian: typeof import('./../components/DesignForm/designLayout/bianXian.vue')['default']
Breadcrumb: typeof import('./../components/Breadcrumb/index.vue')['default']
ChildTable: typeof import('./../components/DesignForm/public/form/childTable.vue')['default']
ConditionDrawer: typeof import('./../components/workflow/drwer/conditionDrawer.vue')['default']
CopyerDrawer: typeof import('./../components/workflow/drwer/copyerDrawer.vue')['default']
DesignLayoutButPage: typeof import('./../components/DesignForm/designLayout/designLayoutButPage.vue')['default']
DesignLayoutPage: typeof import('./../components/DesignForm/designLayout/designLayoutPage.vue')['default']
DiyIconfont: typeof import('./../components/DesignForm/public/expand/diy-iconfont.vue')['default']
DragControl: typeof import('./../components/DesignForm/dragControl.vue')['default']
ElAffix: typeof import('element-plus/es')['ElAffix']
ElAside: typeof import('element-plus/es')['ElAside']
ElAvatar: typeof import('element-plus/es')['ElAvatar']
ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
ElButton: typeof import('element-plus/es')['ElButton']
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
ElCard: typeof import('element-plus/es')['ElCard']
ElCarousel: typeof import('element-plus/es')['ElCarousel']
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol']
ElCollapse: typeof import('element-plus/es')['ElCollapse']
ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
ElColorPicker: typeof import('element-plus/es')['ElColorPicker']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
ElDescriptions: typeof import('element-plus/es')['ElDescriptions']
ElDescriptionsItem: typeof import('element-plus/es')['ElDescriptionsItem']
ElDialog: typeof import('element-plus/es')['ElDialog']
ElDivider: typeof import('element-plus/es')['ElDivider']
ElDrawer: typeof import('element-plus/es')['ElDrawer']
ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput']
ElMain: typeof import('element-plus/es')['ElMain']
ElMenu: typeof import('element-plus/es')['ElMenu']
ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSpace: typeof import('element-plus/es')['ElSpace']
ElStep: typeof import('element-plus/es')['ElStep']
ElSteps: typeof import('element-plus/es')['ElSteps']
ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable']
ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElText: typeof import('element-plus/es')['ElText']
ElTimeline: typeof import('element-plus/es')['ElTimeline']
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTree: typeof import('element-plus/es')['ElTree']
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
ElUpload: typeof import('element-plus/es')['ElUpload']
EmployeesDialog: typeof import('./../components/workflow/dialog/employeesDialog.vue')['default']
EmployeesRoleDialog: typeof import('./../components/workflow/dialog/employeesRoleDialog.vue')['default']
ErrorDialog: typeof import('./../components/workflow/dialog/errorDialog.vue')['default']
FlexBox: typeof import('./../components/DesignForm/public/form/flexBox.vue')['default']
Flow: typeof import('./../components/DesignForm/public/form/components/flow.vue')['default']
Form: typeof import('./../components/DesignForm/public/form/form.vue')['default']
Form2: typeof import('./../components/DesignForm/public/form/form2.vue')['default']
FormControlAttr: typeof import('./../components/DesignForm/formControlAttr.vue')['default']
FormControlAttr_2024024: typeof import('./../components/DesignForm/formControlAttr_2024024.vue')['default']
FormControlAttres: typeof import('./../components/DesignForm/formControlAttres.vue')['default']
FormGroup: typeof import('./../components/DesignForm/public/form/formGroup.vue')['default']
FormGroup1: typeof import('./../components/DesignForm/public/form/formGroup1.vue')['default']
FormItem: typeof import('./../components/DesignForm/public/form/formItem.vue')['default']
FormPageCont: typeof import('./../components/DesignForm/tableListPage/formPageCont.vue')['default']
FormWord: typeof import('./../components/workflow/dialog/formWord.vue')['default']
GithubCorner: typeof import('./../components/GithubCorner/index.vue')['default']
Hamburger: typeof import('./../components/Hamburger/index.vue')['default']
HeadTools: typeof import('./../components/DesignForm/public/headTools.vue')['default']
HeadToolsNew: typeof import('./../components/DesignForm/public/headToolsNew.vue')['default']
IconSelect: typeof import('./../components/IconSelect/index.vue')['default']
IEpCaretBottom: typeof import('~icons/ep/caret-bottom')['default']
IEpClose: typeof import('~icons/ep/close')['default']
IEpSetting: typeof import('~icons/ep/setting')['default']
LangSelect: typeof import('./../components/LangSelect/index.vue')['default']
LayoutPage: typeof import('./../components/DesignForm/layoutPage/index.vue')['default']
List: typeof import('./../components/DesignForm/public/form/components/list.vue')['default']
ListTreeSide: typeof import('./../components/DesignForm/public/form/components/listTreeSide.vue')['default']
MathFormula: typeof import('./../components/DesignForm/math/mathFormula.vue')['default']
Matrix: typeof import('./../components/workflow/dialog/matrix.vue')['default']
MultiUpload: typeof import('./../components/Upload/MultiUpload.vue')['default']
NodeWrap: typeof import('./../components/workflow/nodeWrap.vue')['default']
PageSize: typeof import('./../components/DesignForm/designLayout/pageSize.vue')['default']
PageSizeSmail: typeof import('./../components/DesignForm/designLayout/pageSizeSmail.vue')['default']
Pagination: typeof import('./../components/Pagination/index.vue')['default']
PositionDialog: typeof import('./../components/workflow/dialog/positionDialog.vue')['default']
PromoterDrawer: typeof import('./../components/workflow/drwer/promoterDrawer.vue')['default']
RightPanel: typeof import('./../components/RightPanel/index.vue')['default']
RoleDialog: typeof import('./../components/workflow/dialog/roleDialog.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
Screen: typeof import('./../components/DesignForm/public/form/components/screen.vue')['default']
Select: typeof import('./../components/DesignForm/public/form/select.vue')['default']
SelectBoxs: typeof import('./../components/workflow/selectBoxs.vue')['default']
SelectResult: typeof import('./../components/workflow/selectResult.vue')['default']
SingleUpload: typeof import('./../components/Upload/SingleUpload.vue')['default']
SizeSelect: typeof import('./../components/SizeSelect/index.vue')['default']
SvgIcon: typeof import('./../components/SvgIcon/index.vue')['default']
TableListPage: typeof import('./../components/DesignForm/tableListPage/index.vue')['default']
Template: typeof import('./../components/DesignForm/template.vue')['default']
TextPage: typeof import('./../components/DesignForm/designLayout/textPage.vue')['default']
Tinymce: typeof import('./../components/DesignForm/public/form/tinymce.vue')['default']
Tinymce_1: typeof import('./../components/DesignForm/public/form/tinymce_1.vue')['default']
Tooltip: typeof import('./../components/DesignForm/tooltip.vue')['default']
UnitBackGround: typeof import('./../components/DesignForm/designLayout/unitBackGround.vue')['default']
User: typeof import('./../components/DesignForm/public/expand/user.vue')['default']
UserDialog: typeof import('./../components/DesignForm/public/expand/userDialog.vue')['default']
VueFile: typeof import('./../components/DesignForm/vueFile.vue')['default']
WangEditor: typeof import('./../components/WangEditor/index.vue')['default']
Yuanjao: typeof import('./../components/DesignForm/designLayout/yuanjao.vue')['default']
}
export interface ComponentCustomProperties {
vLoading: typeof import('element-plus/es')['ElLoadingDirective']
}
}

144
src/views/date/assets.vue

@ -4,11 +4,20 @@
@ 备注: 数据资源
-->
<script lang='ts' setup>
import { getOrPostDate } from "@/api/date/apidate"
import { dateTypes,dataSourceTypes,interfaceTypes } from "@/api/date/type"
import { getOrPostDate,postSaveData } from "@/api/date/apidate"
import { dateTypes,dataSourceTypes,interfaceTypes,dataBaseStruct } from "@/api/date/type"
/**
@ 作者: 秦东
@ 时间: 2024-04-19 11:50:16
@ 功能: 引入页面
*/
import EditAssets from "@/views/date/editAssets.vue"
const dataList = ref<any[]>([])
const editAssetsOpen = ref(false)
const editAssetsInfo = reactive<dataBaseStruct>({})
const dataLoading = ref(false)
const dataList = ref<dataBaseStruct[]>([])
const searchData = reactive({
pageNum: 1,
pageSize: 10,
@ -22,13 +31,14 @@ const searchData = reactive({
@ 功能: 获取数据
*/
const gainDateList = () =>{
dataLoading.value = true;
let sendData = {
url:import.meta.env.VITE_APP_SJZT_URL+"/database/app/datasource/page",
methodType:"GET",
where:"pageNum="+searchData.pageNum+"&pageSize="+searchData.pageSize+"&databaseName="+searchData.databaseName+"&dataType="+searchData.dataType
}
getOrPostDate("POST",sendData)
.then((data)=>{
.then((data:any)=>{
searchData.total = data.data.total
if(data.data.records&&data.data.records.length > 0){
@ -52,7 +62,9 @@ const gainDateList = () =>{
}
dataList.value = data.data.records
console.log("获取数据=====>",searchData)
dataLoading.value = false
})
}
/**
@ 作者: 秦东
@ -96,23 +108,127 @@ const resuct = () =>{
/**
@ 作者: 秦东
@ 时间: 2024-04-19 09:28:53
@ 功能: 翻页操作
@ 功能: 选择每页显示几条数据
*/
const handleSizeChange = (val: number) => {
console.log(`${val} items per page`)
searchData.pageSize=val
gainDateList()
}
/**
@ 作者: 秦东
@ 时间: 2024-04-19 09:28:53
@ 功能: 翻页操作
*/
const handleCurrentChange = (val: number) => {
console.log(`current page: ${val}`)
searchData.pageNum=val
gainDateList()
}
/**
@ 作者: 秦东
@ 时间: 2024-04-19 10:44:53
@ 功能: 连接
*/
const openLink = (val:any) => {
let sendData = {
url:import.meta.env.VITE_APP_SJZT_URL+"/database/app/datasource/test",
methodType:"GET",
where:"databaseName="+val.databaseName+"&port="+val.port+"&ipAddress="+val.ipAddress+"&datasourceType="+val.datasourceType+"&dataType="+val.dataType+"&interfaceType="+val.interfaceType+"&account="+val.account+"&password="+val.password+"&id="+val.id+"&redashDatasourceId="+val.redashDatasourceId
}
console.log("连接-1->",sendData)
getOrPostDate("POST",sendData)
.then((data:any)=>{
console.log("连接-->",data)
if(data.code == 200){
ElMessage.success(data.msg)
}else{
ElMessage.error(data.msg)
}
gainDateList()
})
}
onMounted(()=>{
gainDateList()
})
/**
@ 作者: 秦东
@ 时间: 2024-04-19 11:54:12
@ 功能: 重置
*/
const resettingHandel = () => {
editAssetsOpen.value = false
editAssetsInfo.databaseName = "";
editAssetsInfo.port = "";
editAssetsInfo.ipAddress = "";
editAssetsInfo.datasourceType = "";
editAssetsInfo.dataType = "";
editAssetsInfo.interfaceType = "";
editAssetsInfo.account = "";
editAssetsInfo.password = "";
editAssetsInfo.id = "";
editAssetsInfo.redashDatasourceId = "";
editAssetsInfo.author = ""
gainDateList()
}
/**
@ 作者: 秦东
@ 时间: 2024-04-19 12:59:18
@ 功能: 新增数据源
*/
const addDataBase = () => {
editAssetsInfo.id = ""
editAssetsOpen.value = true
}
/**
@ 作者: 秦东
@ 时间: 2024-04-19 13:35:02
@ 功能: 编辑数据源
*/
const editDataBase = (val:dataBaseStruct) => {
editAssetsInfo.databaseName = val.databaseName;
editAssetsInfo.port = val.port;
editAssetsInfo.ipAddress = val.ipAddress;
editAssetsInfo.datasourceType = val.datasourceType;
editAssetsInfo.dataType = val.dataType;
editAssetsInfo.interfaceType = val.interfaceType;
editAssetsInfo.account = val.account;
editAssetsInfo.password = val.password;
editAssetsInfo.id = val.id;
editAssetsInfo.redashDatasourceId = val.redashDatasourceId;
editAssetsInfo.author = val.author
editAssetsOpen.value = true
}
/**
@ 作者: 秦东
@ 时间: 2024-04-19 14:26:27
@ 功能: 删除数据
*/
const delDataBase = (val:dataBaseStruct) => {
ElMessageBox.confirm("确认删除<"+val.databaseName+">此数据项?一经删除!数据将不可恢复!", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
let sendData = {
url:import.meta.env.VITE_APP_SJZT_URL+"/database/app/datasource/delete",
dataInfo:val
}
postSaveData(sendData)
.then((data:any)=>{
if(data.code == 0){
ElMessage.success(data.msg)
gainDateList()
}else{
ElMessage.error(data.msg)
}
})
});
}
</script>
<template>
<div class="dataBox">
<EditAssets v-model:is-show="editAssetsOpen" :data-info="editAssetsInfo" @setResetting="resettingHandel" />
<el-card style="width: 100%">
<template #header>
<div class="card_header">
@ -141,11 +257,11 @@ onMounted(()=>{
</template>
<el-row class="newAddBox">
<el-col :span="24">
<el-button type="primary"><el-space wrap><i class="fa fa-plus "></i>新增数据源</el-space></el-button>
<el-button type="primary" @click="addDataBase"><el-space wrap><i class="fa fa-plus "></i>新增数据源</el-space></el-button>
<el-button plain>导出数据源</el-button>
</el-col>
</el-row>
<el-table :data="dataList" :header-cell-style="{'background':'#f5f8fd'}" style="width: 100%">
<el-table :data="dataList" v-loading="dataLoading" :header-cell-style="{'background':'#f5f8fd'}" style="width: 100%">
<el-table-column fixed type="selection" width="50" align="center" />
<el-table-column fixed label="序号" type="index" width="60" align="center" />
<el-table-column prop="datasourceTypeName" label="数据库产品" width="120" />
@ -159,14 +275,14 @@ onMounted(()=>{
<el-table-column prop="status" label="状态" width="100" align="center">
<template #default="scope">
<el-text v-if="scope.row.status==1" class="mx-1" type="success">已连接</el-text>
<el-text v-else class="mx-1" type="danger">断开链接</el-text>
<el-text v-else class="mx-1" type="danger">连接失败</el-text>
</template>
</el-table-column>
<el-table-column fixed="right" label="操作" width="220" align="center">
<template #default="scope">
<el-button size="small" color="#626aef" :dark="isDark" plain>连接</el-button>
<el-button size="small" color="#626aef" :dark="isDark" plain>编辑</el-button>
<el-button size="small" color="#626aef" :dark="isDark" plain>删除</el-button>
<el-button size="small" color="#626aef" :dark="isDark" plain @click="openLink(scope.row)">连接</el-button>
<el-button size="small" color="#626aef" :dark="isDark" plain @click="editDataBase(scope.row)">编辑</el-button>
<el-button size="small" color="#626aef" :dark="isDark" plain @click="delDataBase(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>

Loading…
Cancel
Save