mirror of
https://gitee.com/dromara/mayfly-go
synced 2025-11-02 07:20:24 +08:00
feat: 小问题修复
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -11,4 +11,5 @@
|
||||
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||
*.out
|
||||
|
||||
*/node_modules/
|
||||
*/node_modules/
|
||||
**/vendor/
|
||||
@@ -4,13 +4,18 @@ export const imports = {
|
||||
'RouterParent': RouterParent,
|
||||
"Home": () => import('@/views/home/index.vue'),
|
||||
'Personal': () => import('@/views/personal/index.vue'),
|
||||
// machine
|
||||
"MachineList": () => import('@/views/ops/machine'),
|
||||
// sys
|
||||
"ResourceList": () => import('@/views/system/resource'),
|
||||
"RoleList": () => import('@/views/system/role'),
|
||||
"AccountList": () => import('@/views/system/account'),
|
||||
// project
|
||||
"ProjectList": () => import('@/views/ops/project/ProjectList.vue'),
|
||||
// db
|
||||
"DbList": () => import('@/views/ops/db/DbList.vue'),
|
||||
"SqlExec": () => import('@/views/ops/db'),
|
||||
// redis
|
||||
"RedisList": () => import('@/views/ops/redis'),
|
||||
"DataOperation": () => import('@/views/ops/redis/DataOperation.vue'),
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
import Api from '@/common/Api';
|
||||
|
||||
export const serviceApi = {
|
||||
services: Api.create("/gw/services", 'get'),
|
||||
saveService: Api.create("/gw/services", 'post'),
|
||||
syncService: Api.create("/gw/services/{id}/sync", 'post'),
|
||||
// 获取服务下的api信息
|
||||
serviceApis: Api.create("/gw/services/{serviceId}/apis", 'get'),
|
||||
saveServiceApi: Api.create("/gw/services/{serviceId}/apis", 'post'),
|
||||
syncServiceApi: Api.create("/gw/services/{id}/apis/{apiId}/sync", 'post'),
|
||||
// 获取项目下的成员信息
|
||||
projectMems: Api.create("/gw/projects/{projectId}/members", 'get'),
|
||||
saveProjectMem: Api.create("/gw/projects/{projectId}/members", 'post'),
|
||||
deleteProjectMem: Api.create("/gw/projects/{projectId}/members/{accountId}", 'delete'),
|
||||
}
|
||||
@@ -1,192 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog :title="title" v-model="dialogVisible" :show-close="false" :before-close="cancel" width="65%">
|
||||
<el-form :model="form" ref="apiForm" :rules="rules" label-width="85px" size="small">
|
||||
<el-form-item prop="serviceId" label="服务:" required>
|
||||
<el-select style="width: 100%" v-model="form.serviceId" placeholder="请选择服务" @change="changeService" filterable>
|
||||
<el-option v-for="item in services" :key="item.id" :label="`${item.name}`" :value="item.id"> </el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item prop="name" label="名称:" required>
|
||||
<el-input v-model.trim="form.name" placeholder="请输入api名称" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="code" label="code:" required>
|
||||
<el-input :disabled="form.id" v-model.trim="form.code" placeholder="请输入code" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item prop="method" label="method:" required>
|
||||
<el-select style="width: 100%" v-model="form.method" placeholder="请选择请求方法" @change="changeService" filterable>
|
||||
<el-option key="get" label="GET" value="GET"> </el-option>
|
||||
<el-option key="post" label="POST" value="POST"> </el-option>
|
||||
<el-option key="put" label="PUT" value="PUT"> </el-option>
|
||||
<el-option key="delete" label="DELETE" value="DELETE"> </el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item prop="uri" label="uri:" required>
|
||||
<el-input v-model.trim="form.uri" placeholder="请输入method:uri格式"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="schema:">
|
||||
<!-- <vue3-json-editor v-model="jsonschema" @json-change="schemaChange" :show-btns="false" :expandedOnStart="true" /> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" :loading="btnLoading" @click="btnOk" size="mini">确 定</el-button>
|
||||
<el-button @click="cancel()" size="mini">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { toRefs, reactive, watch, defineComponent, ref } from 'vue';
|
||||
import { serviceApi } from '../api';
|
||||
import { ElMessage } from 'element-plus';
|
||||
// import { Vue3JsonEditor } from 'vue3-json-editor';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'RedisEdit',
|
||||
components: {
|
||||
// Vue3JsonEditor,
|
||||
},
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
},
|
||||
services: {
|
||||
type: Array,
|
||||
},
|
||||
api: {
|
||||
type: [Boolean, Object],
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
},
|
||||
},
|
||||
setup(props: any, { emit }) {
|
||||
const apiForm: any = ref(null);
|
||||
const state = reactive({
|
||||
dialogVisible: false,
|
||||
services: [],
|
||||
form: {
|
||||
id: null,
|
||||
name: null,
|
||||
code: null,
|
||||
uri: null,
|
||||
serviceName: null,
|
||||
serviceId: null,
|
||||
schema: null,
|
||||
},
|
||||
jsonschema: {},
|
||||
btnLoading: false,
|
||||
rules: {
|
||||
serviceId: [
|
||||
{
|
||||
required: true,
|
||||
message: '请选择服务',
|
||||
trigger: ['change', 'blur'],
|
||||
},
|
||||
],
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入api名称',
|
||||
trigger: ['change', 'blur'],
|
||||
},
|
||||
],
|
||||
method: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入请求method',
|
||||
trigger: ['change', 'blur'],
|
||||
},
|
||||
],
|
||||
uri: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入请求uri',
|
||||
trigger: ['change', 'blur'],
|
||||
},
|
||||
],
|
||||
code: [
|
||||
{
|
||||
required: true,
|
||||
message: '请输入code',
|
||||
trigger: ['change', 'blur'],
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
watch(props, async (newValue) => {
|
||||
state.services = newValue.services;
|
||||
if (newValue.api) {
|
||||
state.form = { ...newValue.api };
|
||||
console.log(state.form)
|
||||
if (state.form.schema) {
|
||||
state.jsonschema = JSON.parse(state.form.schema as any);
|
||||
}
|
||||
} else {
|
||||
state.form = { } as any;
|
||||
}
|
||||
state.dialogVisible = newValue.visible;
|
||||
});
|
||||
|
||||
const changeService = (serviceId: number) => {
|
||||
for (let p of state.services as any) {
|
||||
if (p.id == serviceId) {
|
||||
state.form.serviceName = p.name;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const schemaChange = (jsonValue: any) => {
|
||||
state.form.schema = JSON.stringify(jsonValue) as any;
|
||||
};
|
||||
|
||||
const btnOk = async () => {
|
||||
apiForm.value.validate((valid: boolean) => {
|
||||
if (valid) {
|
||||
serviceApi.saveServiceApi.request(state.form).then(() => {
|
||||
ElMessage.success('保存成功');
|
||||
emit('val-change', state.form);
|
||||
state.btnLoading = true;
|
||||
setTimeout(() => {
|
||||
state.btnLoading = false;
|
||||
}, 1000);
|
||||
|
||||
cancel();
|
||||
});
|
||||
} else {
|
||||
ElMessage.error('请正确填写信息');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const cancel = () => {
|
||||
emit('update:visible', false);
|
||||
emit('cancel');
|
||||
setTimeout(() => {
|
||||
apiForm.value.resetFields();
|
||||
// 重置对象属性为null
|
||||
state.form = {} as any;
|
||||
state.jsonschema = {};
|
||||
}, 200);
|
||||
};
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
schemaChange,
|
||||
apiForm,
|
||||
changeService,
|
||||
btnOk,
|
||||
cancel,
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
<style lang="scss">
|
||||
</style>
|
||||
@@ -1,239 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="toolbar">
|
||||
<el-button @click="showSaveApiDialog" v-auth="permissions.saveProject" type="primary" icon="el-icon-plus" size="mini">添加</el-button>
|
||||
<el-button
|
||||
@click="showSaveApiDialog(chooseData)"
|
||||
v-auth="permissions.saveProject"
|
||||
:disabled="chooseId == null"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
>编辑</el-button
|
||||
>
|
||||
|
||||
<el-button v-auth="'role:del'" :disabled="chooseId == null" type="danger" icon="el-icon-delete" size="mini">删除</el-button>
|
||||
|
||||
<div style="float: right">
|
||||
<el-select v-model="query.serviceId" @change="changeService" placeholder="请选择服务" filterable size="small">
|
||||
<el-option v-for="item in services" :key="item.id" :label="`${item.name}`" :value="item.id"> </el-option>
|
||||
</el-select>
|
||||
<el-input
|
||||
class="mr2 ml2"
|
||||
placeholder="请输入服务名!"
|
||||
size="small"
|
||||
style="width: 140px"
|
||||
v-model="query.name"
|
||||
@clear="search"
|
||||
clearable
|
||||
></el-input>
|
||||
<el-button @click="search" type="success" icon="el-icon-search" size="mini"></el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-table :data="apis" @current-change="choose" border ref="table" style="width: 100%">
|
||||
<el-table-column label="选择" width="50px">
|
||||
<template #default="scope">
|
||||
<el-radio v-model="chooseId" :label="scope.row.id">
|
||||
<i></i>
|
||||
</el-radio>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="serviceName" label="服务"></el-table-column>
|
||||
<el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="code" label="code" show-overflow-tooltip> </el-table-column>
|
||||
<el-table-column prop="method" label="method" min-width="45" show-overflow-tooltip> </el-table-column>
|
||||
<el-table-column prop="uri" label="uri" show-overflow-tooltip> </el-table-column>
|
||||
<el-table-column prop="createTime" label="创建时间">
|
||||
<template #default="scope">
|
||||
{{ $filters.dateFormat(scope.row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="creator" label="创建者" min-width="50"> </el-table-column>
|
||||
<el-table-column label="操作" min-width="50">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
@click="syncServiceApi(scope.row)"
|
||||
type="success"
|
||||
icom="el-icon-tickets"
|
||||
size="mini"
|
||||
plain
|
||||
:disabled="scope.row.canSync == -1"
|
||||
>同步</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="查看更多" min-width="80px">
|
||||
<template #default="scope">
|
||||
<el-link @click.prevent="showMembers(scope.row)" type="success">成员</el-link>
|
||||
|
||||
<el-link class="ml5" @click.prevent="showEnv(scope.row)" type="info">环境</el-link>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@current-change="handlePageChange"
|
||||
style="text-align: center"
|
||||
background
|
||||
layout="prev, pager, next, total, jumper"
|
||||
:total="total"
|
||||
v-model:current-page="query.pageNum"
|
||||
:page-size="query.pageSize"
|
||||
/>
|
||||
|
||||
<api-edit :services="services" v-model:visible="saveApiDialog.visible" :api="saveApiDialog.form" @val-change="valChange"/>
|
||||
|
||||
<!-- <el-dialog width="400px" title="服务编辑" :before-close="cancelAddService" v-model="addServiceDialog.visible">
|
||||
<el-form :model="addServiceDialog.form" size="small" label-width="70px">
|
||||
<el-form-item label="服务名:" required>
|
||||
<el-input :disabled="addServiceDialog.form.id ? true : false" v-model="addServiceDialog.form.name" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述:" required>
|
||||
<el-input v-model="addServiceDialog.form.remark" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="地址:">
|
||||
<el-input v-model="addServiceDialog.form.urls" auto-complete="off" placeholder="不填则注册中心获取"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="saveService" type="primary" size="small">确 定</el-button>
|
||||
<el-button @click="cancelAddService()" size="small">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog> -->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { toRefs, reactive, onMounted, defineComponent } from 'vue';
|
||||
import { serviceApi } from '../api';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { notEmpty } from '@/common/assert';
|
||||
import ApiEdit from './ApiEdit.vue'
|
||||
export default defineComponent({
|
||||
name: 'ServiceList',
|
||||
components: {
|
||||
ApiEdit
|
||||
},
|
||||
setup() {
|
||||
const state = reactive({
|
||||
permissions: {
|
||||
saveProject: 'project:save',
|
||||
saveMember: 'project:member:add',
|
||||
delMember: 'project:member:del',
|
||||
saveEnv: 'project:env:add',
|
||||
},
|
||||
query: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
name: null,
|
||||
},
|
||||
total: 0,
|
||||
apis: [],
|
||||
services: [],
|
||||
btnLoading: false,
|
||||
chooseId: null as any,
|
||||
chooseData: null as any,
|
||||
saveApiDialog: {
|
||||
title: '新增api',
|
||||
visible: false,
|
||||
form: { name: '', remark: '' },
|
||||
},
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
getServices();
|
||||
// search();
|
||||
});
|
||||
|
||||
const search = async () => {
|
||||
let res = await serviceApi.serviceApis.request(state.query);
|
||||
state.apis = res.list;
|
||||
state.total = res.total;
|
||||
};
|
||||
|
||||
const getServices = async () => {
|
||||
let res = await serviceApi.services.request({ pateNum: 1, pageSize: 100 });
|
||||
state.services = res.list;
|
||||
};
|
||||
|
||||
const changeService = async () => {
|
||||
search()
|
||||
}
|
||||
|
||||
const handlePageChange = (curPage: number) => {
|
||||
state.query.pageNum = curPage;
|
||||
search();
|
||||
};
|
||||
|
||||
const showSaveApiDialog = (data: any) => {
|
||||
if (data) {
|
||||
state.saveApiDialog.form = { ...data };
|
||||
} else {
|
||||
state.saveApiDialog.form = {} as any;
|
||||
}
|
||||
state.saveApiDialog.visible = true;
|
||||
};
|
||||
|
||||
const cancelAddApi = () => {
|
||||
state.saveApiDialog.visible = false;
|
||||
state.saveApiDialog.form = {} as any;
|
||||
};
|
||||
|
||||
const saveService = async () => {
|
||||
const form = state.saveApiDialog.form as any;
|
||||
notEmpty(form.name, '服务名不能为空');
|
||||
notEmpty(form.remark, '服务描述不能为空');
|
||||
|
||||
await serviceApi.saveService.request(form);
|
||||
ElMessage.success('保存成功');
|
||||
search();
|
||||
cancelAddApi();
|
||||
};
|
||||
|
||||
const choose = (item: any) => {
|
||||
if (!item) {
|
||||
return;
|
||||
}
|
||||
state.chooseId = item.id;
|
||||
state.chooseData = item;
|
||||
};
|
||||
|
||||
const syncServiceApi = async (item: any) => {
|
||||
await serviceApi.syncServiceApi.request({apiId: item.id, id: item.serviceId})
|
||||
ElMessage.success("同步成功")
|
||||
item.canSync = -1
|
||||
}
|
||||
|
||||
const valChange = () => {
|
||||
search();
|
||||
}
|
||||
|
||||
|
||||
|
||||
// const addEnv = async () => {
|
||||
// const envForm = state.showEnvDialog.envForm;
|
||||
// envForm.projectId = state.chooseData.id;
|
||||
// await projectApi.saveProjectEnv.request(envForm);
|
||||
// ElMessage.success('保存成功');
|
||||
// state.showEnvDialog.envs = await projectApi.projectEnvs.request({ projectId: envForm.projectId });
|
||||
// cancelAddEnv();
|
||||
// };
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
search,
|
||||
changeService,
|
||||
handlePageChange,
|
||||
choose,
|
||||
showSaveApiDialog,
|
||||
saveService,
|
||||
syncServiceApi,
|
||||
cancelAddApi,
|
||||
valChange,
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
<style lang="scss">
|
||||
</style>
|
||||
@@ -1,223 +0,0 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="toolbar">
|
||||
<el-button @click="showAddServiceDialog" v-auth="permissions.saveProject" type="primary" icon="el-icon-plus" size="mini">添加</el-button>
|
||||
<el-button
|
||||
@click="showAddServiceDialog(chooseData)"
|
||||
v-auth="permissions.saveProject"
|
||||
:disabled="chooseId == null"
|
||||
type="primary"
|
||||
icon="el-icon-edit"
|
||||
size="mini"
|
||||
>编辑</el-button
|
||||
>
|
||||
|
||||
<el-button v-auth="'role:del'" :disabled="chooseId == null" type="danger" icon="el-icon-delete" size="mini">删除</el-button>
|
||||
|
||||
<div style="float: right">
|
||||
<el-input
|
||||
class="mr2"
|
||||
placeholder="请输入项目名!"
|
||||
size="small"
|
||||
style="width: 140px"
|
||||
v-model="query.name"
|
||||
@clear="search"
|
||||
clearable
|
||||
></el-input>
|
||||
<el-button @click="search" type="success" icon="el-icon-search" size="mini"></el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-table :data="services" @current-change="choose" border ref="table" style="width: 100%">
|
||||
<el-table-column label="选择" width="50px">
|
||||
<template #default="scope">
|
||||
<el-radio v-model="chooseId" :label="scope.row.id">
|
||||
<i></i>
|
||||
</el-radio>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="服务名"></el-table-column>
|
||||
<el-table-column prop="routePath" label="路由路径"></el-table-column>
|
||||
<el-table-column prop="urls" label="服务地址">
|
||||
<template #default="scope">
|
||||
{{ scope.row.urls ? scope.row.urls : '注册中心' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="描述" min-width="80px" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column prop="createTime" label="创建时间">
|
||||
<template #default="scope">
|
||||
{{ $filters.dateFormat(scope.row.createTime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="creator" label="创建者"> </el-table-column>
|
||||
<!-- <el-table-column label="查看更多" min-width="80px">
|
||||
<template #default="scope">
|
||||
<el-link @click.prevent="showMembers(scope.row)" type="success">成员</el-link>
|
||||
|
||||
<el-link class="ml5" @click.prevent="showEnv(scope.row)" type="info">环境</el-link>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column label="操作" min-width="80px">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
@click="syncService(scope.row)"
|
||||
type="success"
|
||||
icom="el-icon-tickets"
|
||||
size="mini"
|
||||
plain
|
||||
:disabled="scope.row.canSync == -1"
|
||||
>同步</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-pagination
|
||||
@current-change="handlePageChange"
|
||||
style="text-align: center"
|
||||
background
|
||||
layout="prev, pager, next, total, jumper"
|
||||
:total="total"
|
||||
v-model:current-page="query.pageNum"
|
||||
:page-size="query.pageSize"
|
||||
/>
|
||||
|
||||
<el-dialog width="400px" title="服务编辑" :before-close="cancelAddService" v-model="addServiceDialog.visible">
|
||||
<el-form :model="addServiceDialog.form" size="small" label-width="85px">
|
||||
<el-form-item label="服务名:" required>
|
||||
<el-input :disabled="addServiceDialog.form.id ? true : false" v-model="addServiceDialog.form.name" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="路由路径:" required>
|
||||
<el-input v-model="addServiceDialog.form.routePath" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="描述:" required>
|
||||
<el-input v-model="addServiceDialog.form.remark" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="地址:">
|
||||
<el-input v-model="addServiceDialog.form.urls" auto-complete="off" placeholder="不填则注册中心获取"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="saveService" type="primary" size="small">确 定</el-button>
|
||||
<el-button @click="cancelAddService()" size="small">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { toRefs, reactive, onMounted, defineComponent } from 'vue';
|
||||
import { serviceApi } from '../api';
|
||||
import { ElMessage } from 'element-plus';
|
||||
import { notEmpty } from '@/common/assert';
|
||||
export default defineComponent({
|
||||
name: 'ServiceList',
|
||||
components: {},
|
||||
setup() {
|
||||
const state = reactive({
|
||||
permissions: {
|
||||
saveProject: 'project:save',
|
||||
saveMember: 'project:member:add',
|
||||
delMember: 'project:member:del',
|
||||
saveEnv: 'project:env:add',
|
||||
},
|
||||
query: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
name: null,
|
||||
},
|
||||
total: 0,
|
||||
services: [],
|
||||
btnLoading: false,
|
||||
chooseId: null as any,
|
||||
chooseData: null as any,
|
||||
addServiceDialog: {
|
||||
title: '新增服务',
|
||||
visible: false,
|
||||
form: { name: '', remark: '' },
|
||||
},
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
search();
|
||||
});
|
||||
|
||||
const search = async () => {
|
||||
let res = await serviceApi.services.request(state.query);
|
||||
state.services = res.list;
|
||||
state.total = res.total;
|
||||
};
|
||||
|
||||
const handlePageChange = (curPage: number) => {
|
||||
state.query.pageNum = curPage;
|
||||
search();
|
||||
};
|
||||
|
||||
const showAddServiceDialog = (data: any) => {
|
||||
if (data) {
|
||||
state.addServiceDialog.form = {...data};
|
||||
} else {
|
||||
state.addServiceDialog.form = {} as any;
|
||||
}
|
||||
state.addServiceDialog.visible = true;
|
||||
};
|
||||
|
||||
const cancelAddService = () => {
|
||||
state.addServiceDialog.visible = false;
|
||||
state.addServiceDialog.form = {} as any;
|
||||
};
|
||||
|
||||
const saveService = async () => {
|
||||
const form = state.addServiceDialog.form as any;
|
||||
notEmpty(form.name, '服务名不能为空');
|
||||
notEmpty(form.remark, '服务描述不能为空');
|
||||
|
||||
await serviceApi.saveService.request(form);
|
||||
ElMessage.success('保存成功');
|
||||
search();
|
||||
cancelAddService();
|
||||
};
|
||||
|
||||
const syncService = async (item: any) => {
|
||||
await serviceApi.syncService.request({id: item.id})
|
||||
ElMessage.success("同步成功")
|
||||
item.canSync = -1
|
||||
}
|
||||
|
||||
const choose = (item: any) => {
|
||||
if (!item) {
|
||||
return;
|
||||
}
|
||||
state.chooseId = item.id;
|
||||
state.chooseData = item;
|
||||
};
|
||||
|
||||
// const addEnv = async () => {
|
||||
// const envForm = state.showEnvDialog.envForm;
|
||||
// envForm.projectId = state.chooseData.id;
|
||||
// await projectApi.saveProjectEnv.request(envForm);
|
||||
// ElMessage.success('保存成功');
|
||||
// state.showEnvDialog.envs = await projectApi.projectEnvs.request({ projectId: envForm.projectId });
|
||||
// cancelAddEnv();
|
||||
// };
|
||||
|
||||
// const roleEditChange = (data: any) => {
|
||||
// ElMessage.success('修改成功!');
|
||||
// search();
|
||||
// };
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
search,
|
||||
handlePageChange,
|
||||
choose,
|
||||
showAddServiceDialog,
|
||||
saveService,
|
||||
syncService,
|
||||
cancelAddService,
|
||||
};
|
||||
},
|
||||
});
|
||||
</script>
|
||||
<style lang="scss">
|
||||
</style>
|
||||
@@ -74,7 +74,7 @@
|
||||
/>
|
||||
|
||||
<el-link
|
||||
v-auth="'resource:del'"
|
||||
v-auth="'resource:delete'"
|
||||
v-if="data.children == null && data.name !== '首页'"
|
||||
@click.prevent="deleteMenu(data)"
|
||||
type="danger"
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<div class="role-dialog">
|
||||
<el-dialog :title="title" v-model="visible" :show-close="false" :before-close="cancel" width="500px">
|
||||
<el-dialog :title="title" v-model="_visible" :show-close="false" :before-close="cancel" width="500px">
|
||||
<el-form :model="form" label-width="90px">
|
||||
<el-form-item label="角色名称:" required>
|
||||
<el-form-item prop="name" label="角色名称:" required>
|
||||
<el-input v-model="form.name" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="角色code:" required>
|
||||
<el-form-item prop="code" label="角色code:" required>
|
||||
<el-input :disabled="form.id != null" v-model="form.code" placeholder="COMMON开头则为所有账号共有角色" auto-complete="off"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="角色描述:">
|
||||
@@ -41,7 +41,7 @@ export default defineComponent({
|
||||
},
|
||||
setup(props: any, { emit }) {
|
||||
const state = reactive({
|
||||
visible: false,
|
||||
_visible: false,
|
||||
form: {
|
||||
id: null,
|
||||
name: '',
|
||||
@@ -52,7 +52,7 @@ export default defineComponent({
|
||||
});
|
||||
|
||||
watch(props, (newValue) => {
|
||||
state.visible = newValue.visible;
|
||||
state._visible = newValue.visible;
|
||||
if (newValue.data) {
|
||||
state.form = { ...newValue.data };
|
||||
} else {
|
||||
|
||||
@@ -145,6 +145,8 @@ export default defineComponent({
|
||||
|
||||
const roleEditChange = () => {
|
||||
ElMessage.success('修改成功!');
|
||||
state.chooseId = null;
|
||||
state.chooseData = null;
|
||||
search();
|
||||
};
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ func (r *redisAppImpl) Save(re *entity.Redis) {
|
||||
} else {
|
||||
// 如果存在该库,则校验修改的库是否为该库
|
||||
if err == nil {
|
||||
biz.IsTrue(re.Id == re.Id, "该库已存在")
|
||||
biz.IsTrue(oldRedis.Id == re.Id, "该库已存在")
|
||||
}
|
||||
// 先关闭数据库连接
|
||||
CloseRedis(re.Id)
|
||||
|
||||
Reference in New Issue
Block a user