Commit a2ea7f0e by wanglizhen

资产库模块上传

parent d77aa1a5
import { queryCharset } from './index'
// 连接类型
export const oracleisinsData = [
{ key: "服务名", value: "0", label: "服务名" },
{ key: "实例名", value: "1", label: "实例名" },
]
// 字符编码
export const getCode = (key) => {
if (!key) return
const list = JSON.parse(sessionStorage.getItem(key))
return list
}
// 全部字符编码
export const getCueryCharset = async () => {
if (sessionStorage.getItem('mysql')) return
const databaseTypeList = ['mysql', 'oracle', 'postgresql', 'hive', 'hive_tdh', 'mssqlserver', 'db2', 'mariadb', 'informix', 'sybase', 'sybaseiq', 'sybaseiq', 'gbase', 'gbase8s', 'gbase8a', 'kingbase', 'dm', 'oscar', 'uxdb', 'greenplum', 'teradata', 'highgo', 'cache', 'hadoop', 'gauss', 'oceanbase', 'mongodb', 'es', 'KAFKA', 'gaussdb']
for (let i = 0; i < databaseTypeList.length; i++) {
const data = await queryCharset({ dbtype: databaseTypeList[i] })
sessionStorage.setItem(databaseTypeList[i].toLowerCase(), JSON.stringify(data.data))
}
}
\ No newline at end of file
import request from '@/utils/request'
/**
* 资产库 - 查询用户列表
* @param {*} query
* @returns
*/
export function queryUser(query) {
return request({
url: '/console/user/queryAll',
method: 'get',
params: query
})
}
/**
* 资产库 - 查询列表
* @param {*} query
* @returns
*/
export function queryAll(query) {
return request({
url: '/core/datasystem/queryAll',
method: 'get',
params: query
})
}
/**
* 资产库 - 数据源明细
* @param {*} query
* @returns
*/
export function initEdit(query) {
return request({
url: '/core/datasystem/initEdit',
method: 'get',
params: query
})
}
/**
* 资产库 - 查询数据库版本
* @param {*} query
* @returns
*/
export function queryDatadis(query) {
return request({
url: '/core/datadis/queryAll',
method: 'get',
params: query
})
}
/**
* 资产库 - 数据库版本检测
* @param {*} data
* @returns
*/
export function checkVersion(data) {
return request({
url: '/core/datasystem/checkVersion',
method: 'post',
data: data
})
}
/**
* 资产库 - 测试数据源名称是否重复
* @param {*} data
* @returns
*/
export function checkRepeatName(data) {
return request({
url: '/core/datasystem/checkRepeatName',
method: 'post',
data: data
})
}
/**
* 资产库 - 测试连接
* @param {*} data
* @returns
*/
export function testConnect(data) {
return request({
url: '/core/datasystem/testConnect',
method: 'post',
data: data
})
}
/**
* 资产库 - 新增修改接口
* @param {*} data
* @returns
*/
export function add(data) {
return request({
url: '/core/datasystem/add',
method: 'post',
data: data
})
}
/**
* 资产库 - 关联检测
* @param {*} data
* @returns
*/
export function checkDatasystemUsed(data) {
return request({
url: '/core/datasystem/checkDatasystemUsed',
method: 'post',
data: data
})
}
/**
* 资产库 - 删除数据源
* @param {*} data
* @returns
*/
export function del(data) {
return request({
url: '/core/datasystem/del',
method: 'post',
data: data
})
}
/**
* 资产库 - 查询字符编码
* @param {*} query
* @returns
*/
export function queryCharset(query) {
return request({
url: '/core/datasystem/queryCharset',
method: 'get',
params: query
})
}
\ No newline at end of file
...@@ -45,7 +45,7 @@ const hasTagsView = computed(() => settings.tagsView) ...@@ -45,7 +45,7 @@ const hasTagsView = computed(() => settings.tagsView)
const layout = computed(() => settings.layout) const layout = computed(() => settings.layout)
function onScroll(val) { function onScroll(val) {
appStore.updateScrollTop(val.scrollTop) // appStore.updateScrollTop(val.scrollTop)
} }
</script> </script>
......
<script setup lang="ts" name="QueryForm"> <script setup lang="ts" name="QueryForm">
import { ref, computed } from 'vue' import { ref, computed,onMounted } from 'vue'
import type { FormInstance } from 'element-plus' import type { FormInstance } from 'element-plus'
import PageWrapperSearch from '@/components/Search/PageWrapperSearch.vue' import PageWrapperSearch from '@/components/Search/PageWrapperSearch.vue'
import { useDict } from '@/utils/dict' import { useDict } from '@/utils/dict'
import useAppStore from '@/store/modules/app'
const appStore = useAppStore()
const emit = defineEmits(['update:modelValue', 'query', 'reset']) const emit = defineEmits(['update:modelValue', 'query', 'reset'])
const employeesList = ref([]) const dataTypeList = ref([])
const props = defineProps<{ const props = defineProps<{
modelValue: any modelValue: any
}>() }>()
...@@ -30,6 +32,10 @@ function onReset(formRef: FormInstance) { ...@@ -30,6 +32,10 @@ function onReset(formRef: FormInstance) {
emit('reset', formRef) emit('reset', formRef)
} }
onMounted(() => {
})
</script> </script>
<template> <template>
...@@ -38,14 +44,22 @@ function onReset(formRef: FormInstance) { ...@@ -38,14 +44,22 @@ function onReset(formRef: FormInstance) {
@search="onSearch" @search="onSearch"
@reset="onReset" @reset="onReset"
label-width='100'> label-width='100'>
<el-form-item label="数据源名称" prop="customerName"> <el-form-item label="数据源名称" prop="sysname">
<el-input v-model="queryForm.customerName" placeholder="请输入客户名称" clearable /> <el-input v-model="queryForm.sysname" placeholder="请输入客户名称" clearable />
</el-form-item> </el-form-item>
<el-form-item label="IP" prop="customerName"> <el-form-item label="IP" prop="ip">
<el-input v-model="queryForm.customerName" placeholder="请输入客户名称" clearable /> <el-input v-model="queryForm.ip" placeholder="请输入客户名称" clearable />
</el-form-item> </el-form-item>
<el-form-item label="数据源类型" prop="customerName"> <el-form-item label="数据源类型" prop="dbtype">
<el-input v-model="queryForm.customerName" placeholder="请输入客户名称" clearable /> <el-select v-model="queryForm.dbtype" placeholder="请选择">
<el-option
v-for="item in appStore.DATABASE_TYPE"
:key="item"
:label="item"
:value="item"
>
</el-option>
</el-select>
</el-form-item> </el-form-item>
</page-wrapper-search> </page-wrapper-search>
</template> </template>
<script setup name="AssetLibrary"> <script setup name="AssetLibrary">
import { ref, toRefs, reactive, getCurrentInstance } from 'vue' import { ref, toRefs, reactive, getCurrentInstance, onMounted } from 'vue'
import { ElMessage } from 'element-plus'
import QueryForm from './QueryForm.vue' import QueryForm from './QueryForm.vue'
import FormGroup from './modules/formGroup.vue' import FormGroup from './modules/formGroup.vue'
import img from '@/assets/images/assetLibrary/index.js'
import { queryAll, checkDatasystemUsed, del } from '@/api/assetLibrary/index'
import { getCueryCharset } from "@/api/assetLibrary/dict";
const emit = defineEmits(['page']) const emit = defineEmits(['page'])
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
...@@ -11,7 +16,11 @@ const data = reactive({ ...@@ -11,7 +16,11 @@ const data = reactive({
name: '' name: ''
}, },
queryParams: { queryParams: {
customerName: null sysname: '',
dbtype: '',
ip: '',
userId: '1',
projectId: ''
}, },
rules: { rules: {
} }
...@@ -24,6 +33,18 @@ const modalData = reactive({ ...@@ -24,6 +33,18 @@ const modalData = reactive({
text: '' text: ''
}) })
// 数据源信息
const dataSource = reactive({
current: 0, // 当前索引
currentId: '', // 当前id
currentFlag: '',
list: [], // 数据源列表
del: {
id: '',
sysname: ''
}
})
// 新增 // 新增
const handleAdd = () => { const handleAdd = () => {
emit('page', 'add') emit('page', 'add')
...@@ -32,39 +53,77 @@ const handleAdd = () => { ...@@ -32,39 +53,77 @@ const handleAdd = () => {
// 筛选查询 // 筛选查询
const onQuery = () => { const onQuery = () => {
console.log('onQuery') console.log('onQuery')
// handleQuery() getList()
} }
// 查询组件事件重置 // 查询组件事件重置
const onReset = (formQuery) => { const onReset = (formQuery) => {
console.log('onReset') console.log('onReset')
formQuery.resetFields() formQuery.resetFields()
getList()
} }
// 预览 // 预览
const onPreview = () => { const onPreview = (index) => {
console.log('onPreview') dataSource.current = index
dataSource.currentId = dataSource.list[dataSource.current].id
dataSource.currentFlag = dataSource.list[dataSource.current].flag
} }
// 删除 // 删除
const onDelete = () => { const onDelete = (val) => {
console.log('onPreview') const { id, sysname } = val
checkDatasystemUsed({ id: id }).then(res => {
console.log(res)
const flag = { res }
if (flag) {
dataSource.current = 0
dataSource.del.id = id
dataSource.del.sysname = sysname
modalData.text = `删除后无法恢复,是否确认删除[${sysname}]?`
modalData.show = true modalData.show = true
modalData.text = '删除后无法恢复,是否确认删除[若依配测系统]?' }
})
} }
// 确认删除回调 // 确认删除回调
const modalConfirm = () => { const modalConfirm = () => {
del(dataSource.del).then(res => {
const flag = { res }
if (flag) {
ElMessage.success({
message: '删除成功',
type: 'success',
})
getList()
}
})
modalData.show = false modalData.show = false
} }
// 编辑成功回调 // 编辑成功回调
const onConfirm = () => { const onConfirm = () => {
console.log('编辑成功') // console.log('编辑成功')
getList()
}
// 列表查询
const getList = () => {
queryAll(queryParams.value).then(res => {
// console.log(res)
dataSource.list = res.data
dataSource.currentId = dataSource.list[dataSource.current].id
dataSource.currentFlag = dataSource.list[dataSource.current].flag
})
} }
onMounted(() => {
getCueryCharset()
getList()
})
</script> </script>
<template> <template>
<div class="app-container scroller"> <div class="app-container">
<PageTitle> <PageTitle>
<template #title> <template #title>
资产库 资产库
...@@ -77,21 +136,22 @@ const onConfirm = () => { ...@@ -77,21 +136,22 @@ const onConfirm = () => {
<query-form ref="QueryFormRef" v-model="queryParams" @query="onQuery" @reset="onReset" /> <query-form ref="QueryFormRef" v-model="queryParams" @query="onQuery" @reset="onReset" />
<el-scrollbar> <el-scrollbar>
<div class="flex-content"> <div class="flex-content">
<el-card class="box-card" :body-style="{ padding: '0px !important' }"> <el-card class="box-card" :class="dataSource.current === index ? 'active' : ''"
<img class="img" src="https://172.19.1.166:9005/static/img/MYSQL.535270a.png" alt=""> :body-style="{ padding: '0px !important' }" v-for="(item, index) in dataSource.list" :key="index">
<img class="img" :src="img[item.dbtype]" alt="">
<div class="title"> <div class="title">
<div class="title-content">若依配测系统</div> <div class="title-content">{{ item.sysname }}</div>
</div> </div>
<div class="mask"> <div class="mask">
<div class="maskbutton"> <div class="maskbutton">
<div class="maskbutton-item" @click="onDelete"> <div class="maskbutton-item" @click="onDelete(item)">
<el-icon :size="18"> <el-icon :size="18">
<delete /> <delete />
</el-icon> </el-icon>
<br> <br>
<span>删除</span> <span>删除</span>
</div> </div>
<div class="maskbutton-item" @click="onPreview"> <div class="maskbutton-item" @click="onPreview(index)" v-if="dataSource.current !== index">
<el-icon :size="18"> <el-icon :size="18">
<View /> <View />
</el-icon> </el-icon>
...@@ -103,9 +163,9 @@ const onConfirm = () => { ...@@ -103,9 +163,9 @@ const onConfirm = () => {
</el-card> </el-card>
</div> </div>
</el-scrollbar> </el-scrollbar>
<div class="mt20"> <div class="mt20" v-if="dataSource.list.length > 0" style="padding-bottom: 20px;">
<div class="mb20">数据源明细:{{ form.name }}</div> <div class="mb20">数据源明细:{{ form.name }}</div>
<FormGroup :id="'1111'" page="edit" @confirm="onConfirm" /> <FormGroup :id="dataSource.currentId" :flag="dataSource.currentFlag" page="edit" @confirm="onConfirm" />
</div> </div>
</div> </div>
<Modal v-model="modalData.show" icon="error" :cancel="true" :text="modalData.text" @confirm="modalConfirm"></Modal> <Modal v-model="modalData.show" icon="error" :cancel="true" :text="modalData.text" @confirm="modalConfirm"></Modal>
...@@ -115,7 +175,7 @@ const onConfirm = () => { ...@@ -115,7 +175,7 @@ const onConfirm = () => {
<style lang="scss" scoped> <style lang="scss" scoped>
.flex-content { .flex-content {
display: flex; display: flex;
height: 190px; height: 205px;
.box-card { .box-card {
position: relative; position: relative;
flex-shrink: 0; flex-shrink: 0;
...@@ -193,6 +253,12 @@ const onConfirm = () => { ...@@ -193,6 +253,12 @@ const onConfirm = () => {
} }
} }
} }
.active {
.title {
background: #2c9ef7;
color: #fff;
}
}
.box-card:hover { .box-card:hover {
width: 250px; width: 250px;
height: 190px; height: 190px;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论