Browse Source

数据中台

v7_master
超级管理员 2 years ago
parent
commit
430dedf258
  1. 1
      .env.development
  2. 1
      .env.production
  3. 9
      src/api/date/apidate.ts
  4. 49
      src/api/date/type.ts
  5. 9
      src/types/components.d.ts
  6. 2
      src/utils/request.ts
  7. 2
      src/utils/requestfile.ts
  8. 222
      src/views/date/assets.vue
  9. 37
      src/views/sysworkflow/lowcodepage/appPage/index.vue
  10. 9
      src/views/sysworkflow/lowcodepage/index.vue
  11. 16
      src/views/sysworkflow/lowcodepage/pageFlow/tableFlow.vue

1
.env.development

@ -8,3 +8,4 @@ VITE_APP_PORT = 9999
VITE_APP_BASE_API = '/dev-api'
VITE_APP_BASE_URL = 'http://myvuetest.net'
VITE_APP_TOKEN_KEY = 'offlineAccessSystemAppToken'
VITE_APP_SJZT_URL = 'http://172.20.5.86/prod-api'

1
.env.production

@ -4,3 +4,4 @@ VITE_APP_TITLE = '数通智联化工云平台'
VITE_APP_PORT = 17777
VITE_APP_BASE_API = ''
VITE_APP_TOKEN_KEY = 'onlineAccessSystemAppToken'
VITE_APP_SJZT_URL = 'http://120.224.6.6:29911/prod-api'

9
src/api/date/apidate.ts

@ -0,0 +1,9 @@
import request from '@/utils/request';
export function getOrPostDate(methodStr:string,data?: any) {
return request({
url: "/systemapi/dataCenter/gaindataCenter",
method: "POST",
data: data
});
}

49
src/api/date/type.ts

@ -0,0 +1,49 @@
//数据库类型
export const dateTypes = [
{
value: '1',
label: '关系型数据库',
},
{
value: '2',
label: '时序数据库',
},
{
value: '3',
label: '非关系型数据库',
}
]
//数据库产品
export const dataSourceTypes = [
{
value: '1',
label: 'mysql',
},
{
value: '2',
label: 'RTD',
},
{
value: '3',
label: '暂时未知',
},
{
value: '4',
label: 'sql server',
},
{
value: '5',
label: 'redis',
}
]
//接口方式
export const interfaceTypes = [
{
value: '1',
label: 'SQL',
},
{
value: '2',
label: 'API',
}
]

9
src/types/components.d.ts

@ -31,6 +31,7 @@ declare module '@vue/runtime-core' {
ElCard: typeof import('element-plus/es')['ElCard']
ElCarousel: typeof import('element-plus/es')['ElCarousel']
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
ElCascader: typeof import('element-plus/es')['ElCascader']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
ElCol: typeof import('element-plus/es')['ElCol']
@ -62,6 +63,7 @@ declare module '@vue/runtime-core' {
ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElPopover: typeof import('element-plus/es')['ElPopover']
ElProgress: typeof import('element-plus/es')['ElProgress']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
@ -109,8 +111,15 @@ declare module '@vue/runtime-core' {
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']
IEpCaretTop: typeof import('~icons/ep/caret-top')['default']
IEpClose: typeof import('~icons/ep/close')['default']
IEpDelete: typeof import('~icons/ep/delete')['default']
IEpEdit: typeof import('~icons/ep/edit')['default']
IEpPlus: typeof import('~icons/ep/plus')['default']
IEpRefresh: typeof import('~icons/ep/refresh')['default']
IEpSearch: typeof import('~icons/ep/search')['default']
IEpSetting: typeof import('~icons/ep/setting')['default']
IEpView: typeof import('~icons/ep/view')['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']

2
src/utils/request.ts

@ -33,7 +33,7 @@ service.interceptors.request.use(
service.interceptors.response.use(
(response: AxiosResponse) => {
const { code, msg } = response.data;
if (code === 0 || code === 10001) {
if (code === 0 || code === 200 || code === 10001) {
return response.data;
}
if (code === 7 || code === 300 || code === 301 || code === 302){

2
src/utils/requestfile.ts

@ -31,7 +31,7 @@ service.interceptors.request.use(
service.interceptors.response.use(
(response: AxiosResponse) => {
const { code, msg } = response.data;
if (code === 0) {
if (code === 0 || code === 200) {
return response.data;
}
if (code === 7 || code === 300 || code === 301 || code === 302){

222
src/views/date/assets.vue

@ -0,0 +1,222 @@
<!--
@ 作者: 秦东
@ 时间: 2024-04-18 14:52:06
@ 备注: 数据资源
-->
<script lang='ts' setup>
import { getOrPostDate } from "@/api/date/apidate"
import { dateTypes,dataSourceTypes,interfaceTypes } from "@/api/date/type"
const dataList = ref<any[]>([])
const searchData = reactive({
pageNum: 1,
pageSize: 10,
databaseName:"",
dataType:"",
total:0
})
/**
@ 作者: 秦东
@ 时间: 2024-04-18 14:57:24
@ 功能: 获取数据
*/
const gainDateList = () =>{
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)=>{
searchData.total = data.data.total
if(data.data.records&&data.data.records.length > 0){
data.data.records.forEach((item:any)=>{
dateTypes.forEach((items:any)=>{
if(items.value == item.dataType){
item.dataTypeName = items.label
}
})
dataSourceTypes.forEach((itemsd:any)=>{
if(itemsd.value == item.datasourceType){
item.datasourceTypeName = itemsd.label
}
})
interfaceTypes.forEach((interItem:any)=>{
if(interItem.value == item.interfaceType){
item.interfaceTypeName = interItem.label
}
})
})
}
dataList.value = data.data.records
console.log("获取数据=====>",searchData)
})
}
/**
@ 作者: 秦东
@ 时间: 2024-04-19 08:09:40
@ 功能: 判断数据库类型
*/
function dataBaseType (val:any) {
// console.log("-->",val,dateTypes,val.dataType)
let titleVal = ""
if(val.dataType){
try{
dateTypes.forEach((item:any)=>{
// console.log("-1->",item.value,val.dataType,item.value==val.dataType)
if(item.value == val.dataType){
// console.log("-3->",item.value,val.dataType,item.value==val.dataType,item.label)
titleVal = item.label
// return item.label
throw item.label
}
})
} catch(e) {
// console.log("-12->",e)
}
}
// console.log("-2->",titleVal)
return titleVal
}
/**
@ 作者: 秦东
@ 时间: 2024-04-19 09:21:09
@ 功能: 重置查询条件
*/
const resuct = () =>{
searchData.pageNum=1
searchData.pageSize=10
searchData.databaseName=""
searchData.dataType=""
gainDateList()
}
/**
@ 作者: 秦东
@ 时间: 2024-04-19 09:28:53
@ 功能: 翻页操作
*/
const handleSizeChange = (val: number) => {
console.log(`${val} items per page`)
}
const handleCurrentChange = (val: number) => {
console.log(`current page: ${val}`)
}
onMounted(()=>{
gainDateList()
})
</script>
<template>
<div class="dataBox">
<el-card style="width: 100%">
<template #header>
<div class="card_header">
<div>
<el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="数据源名称">
<el-input v-model="searchData.databaseName" placeholder="请输入" clearable />
</el-form-item>
<el-form-item label="数据源类型">
<el-select v-model="searchData.dataType" placeholder="请选择" clearable>
<el-option
v-for="item in dateTypes"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
</div>
<div>
<el-button type="primary" @click="gainDateList"><el-space wrap><i class="fa fa-search "></i>查询</el-space></el-button>
<el-button plain @click="resuct">重置</el-button>
</div>
</div>
</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 plain>导出数据源</el-button>
</el-col>
</el-row>
<el-table :data="dataList" :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" />
<el-table-column prop="dataTypeName" label="数据库类型" width="160" />
<el-table-column prop="databaseName" label="数据库名称" width="160" />
<el-table-column prop="interfaceTypeName" label="接口方式" width="100" />
<el-table-column prop="ipAddress" label="IP地址" width="160" />
<el-table-column prop="port" label="端口" width="100" align="center" />
<el-table-column prop="account" label="帐号" width="160" />
<el-table-column prop="author" label="帐号权限" width="100" align="center" />
<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>
</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>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="24" class="pageSetUp">
<el-pagination
:small="small"
:total="searchData.total"
layout="total"
/>
<el-pagination
v-model:current-page="searchData.pageNum"
v-model:page-size="searchData.pageSize"
:page-sizes="[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]"
:small="small"
:background="true"
:total="searchData.total"
layout="sizes, prev, pager,next,jumper"
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</el-col>
</el-row>
</el-card>
</div>
</template>
<style lang='scss' scoped>
.dataBox{
padding: 10px;
.el-table .el-table__header td {
background:#f5f8fd;
}
.newAddBox{
margin-bottom: 20px;
}
.card_header{
display: flex;
align-items: center;
justify-content: space-between;
}
.el-form-item{
margin-bottom: 0px;
}
.pageSetUp{
display: flex;
align-items: center;
justify-content: space-between;
padding: 20px 0 10px 0;
height: 55px;
}
}
</style>

37
src/views/sysworkflow/lowcodepage/appPage/index.vue

@ -0,0 +1,37 @@
<!--
@ 作者: 秦东
@ 时间: 2024-04-18 14:08:56
@ 备注: 设置自建应用
-->
<script lang='ts' setup>
const props = defineProps({
drawerWith:{
type:Number,
default:0
},
formKey:{
type:String,
default:""
}
});
const drawerOpenOrClose = ref(true)
</script>
<template>
<div class="drawerClass">
<el-drawer v-model="drawerOpenOrClose" title="设置/编辑自定义表单" :with-header="false" :close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :size="props.drawerWith">
<div class="common-layout">
<el-container>
<el-header>Header</el-header>
<el-container>
<el-aside width="200px">Aside</el-aside>
<el-main>Main</el-main>
</el-container>
</el-container>
</div>
</el-drawer >
</div>
</template>
<style lang='scss' scoped>
</style>

9
src/views/sysworkflow/lowcodepage/index.vue

@ -17,6 +17,9 @@ import LowCodeFormPage from "@/views/sysworkflow/lowcodepage/lowCodeFormPage.vue
import LowCodeFormGroupPage from "@/views/sysworkflow/lowcodepage/lowCodeFormGroupPage.vue"
import AppFormList from "@/views/sysworkflow/lowcodepage/appFormList.vue"
import DesignAPPpage from "@/views/sysworkflow/lowcodepage/appPage/index.vue" //
const appPageShow = ref(false)
const contbody = ref() //
const addFormIsShow = ref(false)
const addFormGroupIsShow = ref(false)
@ -44,7 +47,9 @@ const handleCommand = (command: string,groupId: string) => {
// addFormIsShow.value = true
drawerWith.value = contbody.value?.clientWidth
addFormIsShow.value = true;
}else if(command == "addFormApp"){
drawerWith.value = contbody.value?.clientWidth
appPageShow.value = true
}else{
addFormGroupIsShow.value = true
drawerGroupWith.value = 400
@ -190,7 +195,7 @@ const getRongQiAttr = () => {
<el-pagination layout="prev, pager, next" v-model:current-page="page" :page-size="pageSize" :total="pageTotal" />
</div>
<DesignAPPpage v-if="appPageShow" :drawer-with="drawerWith" v-model:form-key="formKey" @refreshPage="refreshPage" />
<LowCodeFormPage v-if="addFormIsShow" :drawer-with="drawerWith" v-model:form-key="formKey" :form-group-key="formGroupKey" @refreshPage="refreshPage" />
<LowCodeFormGroupPage v-if="addFormGroupIsShow" :drawer-with="drawerGroupWith" :group-key="groupKey" @refreshPage="refreshPage" />

16
src/views/sysworkflow/lowcodepage/pageFlow/tableFlow.vue

@ -69,6 +69,19 @@ const drawerOpenOrClose = computed({
emits("update:isopen", val);
},
});
const drawbox = computed({
get: () => {
if(props.drawerwith > 1200){
return '50%';
}else{
return props.drawerwith
}
},
set: (val:number) => {
return val
},
});
const isFlowTable = ref(false) //
//
const getTaskFormData = () =>{
@ -108,6 +121,7 @@ const getTaskFormData = () =>{
//
watch(()=>props.isopen,()=>{
if(props.isopen){
getTaskFormData();
}else{
initData()
@ -396,7 +410,7 @@ const saveDraftPage = (type: string,val?:any) => {
}
</script>
<template>
<el-drawer v-model="drawerOpenOrClose" v-loading="loadingData" :title="versiontitle" :close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :size="props.drawerwith" class="drawerClass" >
<el-drawer v-model="drawerOpenOrClose" v-loading="loadingData" :title="versiontitle" :close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :size="drawbox" class="drawerClass" >
<div v-if="isFlowTable" class="common-layout">
<el-container>
<el-main v-loading="formLoading" element-loading-text="Loading...">

Loading…
Cancel
Save