update: 系统管理模块添加面包屑

This commit is contained in:
easy 2023-02-23 10:18:15 +08:00
parent d526158076
commit 063c6bbe8d
14 changed files with 6409 additions and 4971 deletions

View File

@ -1,13 +1,8 @@
<template> <template>
<div> <page-container> 应用管理
应用管理 </page-container>
</div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts"></script>
</script> <style scoped></style>
<style scoped>
</style>

View File

@ -1,124 +1,134 @@
<template> <template>
<div class="data-source-container"> <page-container>
<Search :columns="query.columns" @search="query.search" /> <div class="data-source-container">
<Search :columns="query.columns" @search="query.search" />
<JTable <JTable
ref="tableRef" ref="tableRef"
:columns="table.columns" :columns="table.columns"
:request="getDataSourceList_api" :request="getDataSourceList_api"
model="TABLE" model="TABLE"
:params="query.params.value" :params="query.params.value"
:defaultParams="{ sorts: [{ name: 'createTime', order: 'desc' }] }" :defaultParams="{
> sorts: [{ name: 'createTime', order: 'desc' }],
<template #headerTitle> }"
<PermissionButton >
type="primary" <template #headerTitle>
:uhasPermission="`${permission}:add`"
@click="table.openDialog({})"
>
<AIcon type="PlusOutlined" />新增
</PermissionButton>
</template>
<template #state="slotProps">
<BadgeStatus
:status="slotProps.state?.value"
:text="slotProps.state?.text"
:statusNames="{
enabled: 'success',
disabled: 'error',
}"
>
</BadgeStatus>
</template>
<template #typeId="slotProps">
{{
(table.typeOptions.value.length &&
table.getTypeLabel(slotProps.typeId)) ||
''
}}
</template>
<template #action="slotProps">
<a-space :size="16">
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:update`" type="primary"
type="link" :uhasPermission="`${permission}:add`"
:tooltip="{ @click="table.openDialog({})"
title: '编辑',
}"
@click="table.openDialog(slotProps)"
> >
<AIcon type="EditOutlined" /> <AIcon type="PlusOutlined" />新增
</PermissionButton> </PermissionButton>
<PermissionButton </template>
:uhasPermission="`${permission}:manage`" <template #state="slotProps">
type="link" <BadgeStatus
:tooltip="{ :status="slotProps.state?.value"
title: :text="slotProps.state?.text"
slotProps?.typeId === 'rabbitmq' :statusNames="{
? '暂不支持管理功能' enabled: 'success',
: table.getRowStatus(slotProps) disabled: 'error',
? '管理'
: '请先启用数据源',
}"
@click="
() =>
router.push(
`/system/DataSource/Management?id=${slotProps.id}`,
)
"
:disabled="slotProps?.typeId === 'rabbitmq' || !table.getRowStatus(slotProps)"
>
<AIcon type="icon-ziyuankuguanli" />
</PermissionButton>
<PermissionButton
:uhasPermission="`${permission}:action`"
type="link"
:popConfirm="{
title: `确定要${
table.getRowStatus(slotProps) ? '禁用' : '启用'
}`,
onConfirm: () => table.clickChangeStatus(slotProps),
}"
:tooltip="{
title: table.getRowStatus(slotProps)
? '禁用'
: '启用',
}" }"
> >
<AIcon </BadgeStatus>
:type=" </template>
table.getRowStatus(slotProps) <template #typeId="slotProps">
? 'StopOutlined' {{
: 'PlayCircleOutlined' (table.typeOptions.value.length &&
table.getTypeLabel(slotProps.typeId)) ||
''
}}
</template>
<template #action="slotProps">
<a-space :size="16">
<PermissionButton
:uhasPermission="`${permission}:update`"
type="link"
:tooltip="{
title: '编辑',
}"
@click="table.openDialog(slotProps)"
>
<AIcon type="EditOutlined" />
</PermissionButton>
<PermissionButton
:uhasPermission="`${permission}:manage`"
type="link"
:tooltip="{
title:
slotProps?.typeId === 'rabbitmq'
? '暂不支持管理功能'
: table.getRowStatus(slotProps)
? '管理'
: '请先启用数据源',
}"
@click="
() =>
router.push(
`/system/DataSource/Management?id=${slotProps.id}`,
)
" "
/> :disabled="
<!-- <AIcon type="PlayCircleOutlined" /> --> slotProps?.typeId === 'rabbitmq' ||
</PermissionButton> !table.getRowStatus(slotProps)
"
>
<AIcon type="icon-ziyuankuguanli" />
</PermissionButton>
<PermissionButton
:uhasPermission="`${permission}:action`"
type="link"
:popConfirm="{
title: `确定要${
table.getRowStatus(slotProps)
? '禁用'
: '启用'
}`,
onConfirm: () =>
table.clickChangeStatus(slotProps),
}"
:tooltip="{
title: table.getRowStatus(slotProps)
? '禁用'
: '启用',
}"
>
<AIcon
:type="
table.getRowStatus(slotProps)
? 'StopOutlined'
: 'PlayCircleOutlined'
"
/>
<!-- <AIcon type="PlayCircleOutlined" /> -->
</PermissionButton>
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:delete`" :uhasPermission="`${permission}:delete`"
type="link" type="link"
:tooltip="{ :tooltip="{
title: table.getRowStatus(slotProps) title: table.getRowStatus(slotProps)
? '请先禁用,再删除' ? '请先禁用,再删除'
: '删除', : '删除',
}" }"
:popConfirm="{ :popConfirm="{
title: `确认删除`, title: `确认删除`,
onConfirm: () => table.clickDel(slotProps), onConfirm: () => table.clickDel(slotProps),
}" }"
:disabled="table.getRowStatus(slotProps)" :disabled="table.getRowStatus(slotProps)"
> >
<AIcon type="DeleteOutlined" /> <AIcon type="DeleteOutlined" />
</PermissionButton> </PermissionButton>
</a-space> </a-space>
</template> </template>
</JTable> </JTable>
<div class="dialogs"> <div class="dialogs">
<EditDialog ref="editDialogRef" @confirm="table.refresh" /> <EditDialog ref="editDialogRef" @confirm="table.refresh" />
</div>
</div> </div>
</div> </page-container>
</template> </template>
<script setup lang="ts" name="DataSource"> <script setup lang="ts" name="DataSource">
@ -132,7 +142,7 @@ import {
getDataSourceList_api, getDataSourceList_api,
getDataTypeDict_api, getDataTypeDict_api,
changeStatus_api, changeStatus_api,
delDataSource_api delDataSource_api,
} from '@/api/system/dataSource'; } from '@/api/system/dataSource';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
@ -243,7 +253,7 @@ const table = {
key: 'action', key: 'action',
scopedSlots: true, scopedSlots: true,
width: '200px', width: '200px',
fixed:'right' fixed: 'right',
}, },
], ],
@ -298,7 +308,6 @@ table.getTypeOption();
<style lang="less" scoped> <style lang="less" scoped>
.data-source-container { .data-source-container {
padding: 24px;
:deep(.ant-table-cell) { :deep(.ant-table-cell) {
.ant-btn-link { .ant-btn-link {
padding: 0; padding: 0;

View File

@ -1,30 +1,32 @@
<template> <template>
<div class="department-container"> <page-container>
<a-card class="department-content"> <div class="department-container">
<div class="left"> <a-card class="department-content">
<LeftTree @change="(id) => (departmentId = id)" /> <div class="left">
</div> <LeftTree @change="(id) => (departmentId = id)" />
<div class="right"> </div>
<a-tabs v-model:activeKey="activeKey"> <div class="right">
<a-tab-pane key="product" tab="产品"> <a-tabs v-model:activeKey="activeKey">
<Product <a-tab-pane key="product" tab="产品">
:parentId="departmentId" <Product
@open-device-bind="openDeviceBind" :parentId="departmentId"
/> @open-device-bind="openDeviceBind"
</a-tab-pane> />
<a-tab-pane key="device" tab="设备"> </a-tab-pane>
<Device <a-tab-pane key="device" tab="设备">
:parentId="departmentId" <Device
v-model:bindBool="bindBool" :parentId="departmentId"
/> v-model:bindBool="bindBool"
</a-tab-pane> />
<a-tab-pane key="user" tab="用户"> </a-tab-pane>
<User :parentId="departmentId" /> <a-tab-pane key="user" tab="用户">
</a-tab-pane> <User :parentId="departmentId" />
</a-tabs> </a-tab-pane>
</div> </a-tabs>
</a-card> </div>
</div> </a-card>
</div>
</page-container>
</template> </template>
<script setup lang="ts" name="Department"> <script setup lang="ts" name="Department">
@ -46,7 +48,6 @@ const openDeviceBind = () => {
<style lang="less" scoped> <style lang="less" scoped>
.department-container { .department-container {
padding: 24px;
.department-content { .department-content {
:deep(.ant-card-body) { :deep(.ant-card-body) {
display: flex; display: flex;

View File

@ -1,12 +1,16 @@
<template> <template>
<div class="menu-detail-container"> <page-container>
<a-tabs v-model:activeKey="activeKey"> <div class="menu-detail-container">
<a-tab-pane key="basic" tab="基本信息"> <BasicInfo /> </a-tab-pane> <a-tabs v-model:activeKey="activeKey">
<a-tab-pane key="button" tab="按钮管理"> <a-tab-pane key="basic" tab="基本信息">
<ButtonMange /> <BasicInfo />
</a-tab-pane> </a-tab-pane>
</a-tabs> <a-tab-pane key="button" tab="按钮管理">
</div> <ButtonMange />
</a-tab-pane>
</a-tabs>
</div>
</page-container>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -24,7 +28,7 @@ const activeKey = ref('basic');
} }
.ant-tabs-tabpane { .ant-tabs-tabpane {
background-color: #f0f2f5; background-color: #f0f2f5;
padding: 24px; padding-top: 24px;
} }
} }
</style> </style>

View File

@ -1,73 +1,79 @@
<template> <template>
<div class="menu-container"> <page-container>
<Search :columns="query.columns" @search="query.search" /> <div class="menu-container">
<Search :columns="query.columns" @search="query.search" />
<JTable
ref="tableRef"
:columns="table.columns"
:request="table.getList"
model="TABLE"
:params="query.params"
>
<template #headerTitle>
<PermissionButton
type="primary"
:uhasPermission="`${permission}:add`"
@click="table.toDetails({})"
>
<AIcon type="PlusOutlined" />新增
</PermissionButton>
<a-button
style="margin-left: 12px"
@click="router.push('/system/Menu/Setting')"
>菜单配置</a-button
>
<!-- <PermissionButton
:uhasPermission="true"
@click="router.push('/system/Menu/Setting')"
>
菜单配置
</PermissionButton> -->
</template>
<template #createTime="slotProps">
{{ moment(slotProps.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
<template #action="slotProps">
<a-space :size="16">
<a-tooltip>
<template #title>查看</template>
<a-button
style="padding: 0"
type="link"
@click="table.toDetails(slotProps)"
>
<search-outlined />
</a-button>
</a-tooltip>
<JTable
ref="tableRef"
:columns="table.columns"
:request="table.getList"
model="TABLE"
:params="query.params"
>
<template #headerTitle>
<PermissionButton <PermissionButton
type="link" type="primary"
:uhasPermission="`${permission}:add`" :uhasPermission="`${permission}:add`"
:tooltip="{ title: '新增子菜单' }" @click="table.toDetails({})"
@click="table.addChildren(slotProps)"
> >
<AIcon type="PlusCircleOutlined" /> <AIcon type="PlusOutlined" />新增
</PermissionButton> </PermissionButton>
<PermissionButton <a-button
type="link" style="margin-left: 12px"
:uhasPermission="`${permission}:delete`" @click="router.push('/system/Menu/Setting')"
:tooltip="{ title: '删除' }" >菜单配置</a-button
:popConfirm="{
title: `是否删除该菜单`,
onConfirm: () => table.clickDel(slotProps),
}"
> >
<AIcon type="DeleteOutlined" /> <!-- <PermissionButton
</PermissionButton> :uhasPermission="true"
</a-space> @click="router.push('/system/Menu/Setting')"
</template> >
</JTable> 菜单配置
</div> </PermissionButton> -->
</template>
<template #createTime="slotProps">
{{
moment(slotProps.createTime).format(
'YYYY-MM-DD HH:mm:ss',
)
}}
</template>
<template #action="slotProps">
<a-space :size="16">
<a-tooltip>
<template #title>查看</template>
<a-button
style="padding: 0"
type="link"
@click="table.toDetails(slotProps)"
>
<search-outlined />
</a-button>
</a-tooltip>
<PermissionButton
type="link"
:uhasPermission="`${permission}:add`"
:tooltip="{ title: '新增子菜单' }"
@click="table.addChildren(slotProps)"
>
<AIcon type="PlusCircleOutlined" />
</PermissionButton>
<PermissionButton
type="link"
:uhasPermission="`${permission}:delete`"
:tooltip="{ title: '删除' }"
:popConfirm="{
title: `是否删除该菜单`,
onConfirm: () => table.clickDel(slotProps),
}"
>
<AIcon type="DeleteOutlined" />
</PermissionButton>
</a-space>
</template>
</JTable>
</div>
</page-container>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -269,8 +275,6 @@ const table = reactive({
<style lang="less" scoped> <style lang="less" scoped>
.menu-container { .menu-container {
padding: 24px;
:deep(.ant-table-cell) { :deep(.ant-table-cell) {
.ant-btn-link { .ant-btn-link {
padding: 0; padding: 0;

View File

@ -1,120 +1,127 @@
<template> <template>
<div class="permission-container"> <page-container>
<Search :columns="query.columns" @search="query.search" /> <div class="permission-container">
<Search :columns="query.columns" @search="query.search" />
<JTable <JTable
ref="tableRef" ref="tableRef"
:columns="table.columns" :columns="table.columns"
:request="getPermission_api" :request="getPermission_api"
model="TABLE" model="TABLE"
:params="query.params" :params="query.params"
:defaultParams="{ sorts: [{ name: 'id', order: 'asc' }] }" :defaultParams="{ sorts: [{ name: 'id', order: 'asc' }] }"
> >
<template #headerTitle> <template #headerTitle>
<PermissionButton <PermissionButton
type="primary" type="primary"
:uhasPermission="`${permission}:add`" :uhasPermission="`${permission}:add`"
@click="table.openDialog(undefined)" @click="table.openDialog(undefined)"
> >
<AIcon type="PlusOutlined" />新增 <AIcon type="PlusOutlined" />新增
</PermissionButton> </PermissionButton>
<a-dropdown trigger="hover"> <a-dropdown trigger="hover">
<a-button>批量操作</a-button> <a-button>批量操作</a-button>
<template #overlay> <template #overlay>
<a-menu> <a-menu>
<a-menu-item> <a-menu-item>
<a-upload <a-upload
name="file" name="file"
action="#" action="#"
accept=".json" accept=".json"
:showUploadList="false" :showUploadList="false"
:before-upload="table.clickImport" :before-upload="table.clickImport"
:disabled=" :disabled="
!hasPermission(`${permission}:import`) !hasPermission(
" `${permission}:import`,
> )
<PermissionButton "
:hasPermission="`${permission}:import`"
> >
导入 <PermissionButton
:hasPermission="`${permission}:import`"
>
导入
</PermissionButton>
</a-upload>
</a-menu-item>
<a-menu-item>
<PermissionButton
:uhasPermission="`${permission}:export`"
:popConfirm="{
title: `确认导出?`,
onConfirm: () =>
table.clickExport(),
}"
>
导出
</PermissionButton> </PermissionButton>
</a-upload> </a-menu-item>
</a-menu-item> </a-menu>
<a-menu-item> </template>
<PermissionButton </a-dropdown>
:uhasPermission="`${permission}:export`" </template>
:popConfirm="{ <template #status="slotProps">
title: `确认导出?`, <StatusLabel :status-value="slotProps.status" />
onConfirm: () => table.clickExport(), </template>
}" <template #action="slotProps">
> <a-space :size="16">
导出 <PermissionButton
</PermissionButton> :uhasPermission="`${permission}:update`"
</a-menu-item> type="link"
</a-menu> :tooltip="{
</template> title: '编辑',
</a-dropdown> }"
</template> @click="table.openDialog(slotProps)"
<template #status="slotProps"> >
<StatusLabel :status-value="slotProps.status" /> <AIcon type="EditOutlined" />
</template> </PermissionButton>
<template #action="slotProps">
<a-space :size="16">
<PermissionButton
:uhasPermission="`${permission}:update`"
type="link"
:tooltip="{
title: '编辑',
}"
@click="table.openDialog(slotProps)"
>
<AIcon type="EditOutlined" />
</PermissionButton>
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:action`" :uhasPermission="`${permission}:action`"
type="link" type="link"
:popConfirm="{ :popConfirm="{
title: `确定要${ title: `确定要${
slotProps.status ? '禁用' : '启用' slotProps.status ? '禁用' : '启用'
}`, }`,
onConfirm: () => table.changeStatus(slotProps), onConfirm: () => table.changeStatus(slotProps),
}" }"
:tooltip="{ title: slotProps.status ? '禁用' : '启用' }" :tooltip="{
> title: slotProps.status ? '禁用' : '启用',
<AIcon }"
:type=" >
slotProps.status <AIcon
? 'StopOutlined' :type="
: 'PlayCircleOutlined ' slotProps.status
" ? 'StopOutlined'
/> : 'PlayCircleOutlined '
</PermissionButton> "
/>
</PermissionButton>
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:delete`" :uhasPermission="`${permission}:delete`"
type="link" type="link"
:tooltip="{ :tooltip="{
title: slotProps.status title: slotProps.status
? '请先禁用,再删除' ? '请先禁用,再删除'
: '删除', : '删除',
}" }"
:popConfirm="{ :popConfirm="{
title: `确认删除`, title: `确认删除`,
onConfirm: () => table.clickDel(slotProps), onConfirm: () => table.clickDel(slotProps),
}" }"
:disabled="slotProps.status" :disabled="slotProps.status"
> >
<AIcon type="DeleteOutlined" /> <AIcon type="DeleteOutlined" />
</PermissionButton> </PermissionButton>
</a-space> </a-space>
</template> </template>
</JTable> </JTable>
<div class="dialogs"> <div class="dialogs">
<EditDialog ref="editDialogRef" @refresh="table.refresh" /> <EditDialog ref="editDialogRef" @refresh="table.refresh" />
</div>
</div> </div>
</div> </page-container>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -281,7 +288,6 @@ const table = reactive({
<style lang="less" scoped> <style lang="less" scoped>
.permission-container { .permission-container {
padding: 24px;
.ant-dropdown-trigger { .ant-dropdown-trigger {
margin-left: 12px; margin-left: 12px;

View File

@ -1,5 +1,8 @@
<template> <template>
<a-card class="api-page-container"> <a-card class="api-page-container">
<p>
<AIcon type="ExclamationCircleOutlined" style="margin-right: 12px;" />配置系统支持API赋权的范围
</p>
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :span="5"> <a-col :span="5">
<LeftTree @select="treeSelect" :mode="props.mode" /> <LeftTree @select="treeSelect" :mode="props.mode" />
@ -117,7 +120,6 @@ function init() {
<style scoped> <style scoped>
.api-page-container { .api-page-container {
padding: 24px;
height: 100%; height: 100%;
background-color: transparent; background-color: transparent;
} }

View File

@ -1,7 +1,7 @@
<template> <template>
<div> <page-container>
<Api mode="api" /> <Api mode="api" />
</div> </page-container>
</template> </template>
<script setup lang="ts" name="Platforms"> <script setup lang="ts" name="Platforms">

View File

@ -1,55 +1,59 @@
<template> <template>
<div class="relationship-container"> <page-container>
<Search :columns="query.columns" @search="query.search" /> <div class="relationship-container">
<Search :columns="query.columns" @search="query.search" />
<JTable <JTable
ref="tableRef" ref="tableRef"
:columns="table.columns" :columns="table.columns"
:request="getRelationshipList_api" :request="getRelationshipList_api"
model="TABLE" model="TABLE"
:params="query.params.value" :params="query.params.value"
:defaultParams="{ sorts: [{ name: 'createTime', order: 'desc' }] }" :defaultParams="{
> sorts: [{ name: 'createTime', order: 'desc' }],
<template #headerTitle> }"
<PermissionButton >
type="primary" <template #headerTitle>
:uhasPermission="`${permission}:add`"
@click="table.openDialog(undefined)"
>
<AIcon type="PlusOutlined" />新增
</PermissionButton>
</template>
<template #action="slotProps">
<a-space :size="16">
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:update`" type="primary"
type="link" :uhasPermission="`${permission}:add`"
:tooltip="{ @click="table.openDialog(undefined)"
title: '编辑',
}"
@click="table.openDialog(slotProps)"
> >
<AIcon type="EditOutlined" /> <AIcon type="PlusOutlined" />新增
</PermissionButton> </PermissionButton>
</template>
<template #action="slotProps">
<a-space :size="16">
<PermissionButton
:uhasPermission="`${permission}:update`"
type="link"
:tooltip="{
title: '编辑',
}"
@click="table.openDialog(slotProps)"
>
<AIcon type="EditOutlined" />
</PermissionButton>
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:delete`" :uhasPermission="`${permission}:delete`"
type="link" type="link"
:tooltip="{ title: '删除' }" :tooltip="{ title: '删除' }"
:popConfirm="{ :popConfirm="{
title: `确认删除`, title: `确认删除`,
onConfirm: () => table.clickDel(slotProps), onConfirm: () => table.clickDel(slotProps),
}" }"
:disabled="slotProps.status" :disabled="slotProps.status"
> >
<AIcon type="DeleteOutlined" /> <AIcon type="DeleteOutlined" />
</PermissionButton> </PermissionButton>
</a-space> </a-space>
</template> </template>
</JTable> </JTable>
<EditDialog ref="editDialogRef" @refresh="table.refresh" /> <EditDialog ref="editDialogRef" @refresh="table.refresh" />
</div> </div>
</page-container>
</template> </template>
<script setup lang="ts" name="Relationship"> <script setup lang="ts" name="Relationship">
@ -181,7 +185,6 @@ const table = {
<style lang="less" scoped> <style lang="less" scoped>
.relationship-container { .relationship-container {
padding: 24px;
:deep(.ant-table-cell) { :deep(.ant-table-cell) {
.ant-btn-link { .ant-btn-link {
padding: 0; padding: 0;

View File

@ -1,10 +1,12 @@
<template> <template>
<div class="details-container"> <page-container>
<a-tabs v-model:activeKey="activeKey"> <div class="details-container">
<a-tab-pane key="1" tab="权限分配"><Permiss /></a-tab-pane> <a-tabs v-model:activeKey="activeKey">
<a-tab-pane key="2" tab="用户管理"><User /></a-tab-pane> <a-tab-pane key="1" tab="权限分配"><Permiss /></a-tab-pane>
</a-tabs> <a-tab-pane key="2" tab="用户管理"><User /></a-tab-pane>
</div> </a-tabs>
</div>
</page-container>
</template> </template>
<script setup lang="ts" name="Detail"> <script setup lang="ts" name="Detail">
@ -17,17 +19,9 @@ const activeKey = ref('1');
<style lang="less" scoped> <style lang="less" scoped>
.details-container { .details-container {
:deep(.ant-tabs-nav-wrap) { :deep(.ant-tabs-nav-wrap) {
background-color: #fff; background-color: #fff;
padding: 24px 0 0 24px; padding-left: 24px;
}
:deep(.ant-tabs-content-holder) {
padding: 24px;
} }
} }
</style> </style>

View File

@ -1,55 +1,57 @@
<template> <template>
<a-card class="role-container"> <page-container>
<Search :columns="query.columns" /> <a-card class="role-container">
<Search :columns="query.columns" />
<JTable <JTable
ref="tableRef" ref="tableRef"
:columns="table.columns" :columns="table.columns"
:request="getRoleList_api" :request="getRoleList_api"
model="TABLE" model="TABLE"
:params="query.params" :params="query.params"
> >
<template #headerTitle> <template #headerTitle>
<PermissionButton
type="primary"
:uhasPermission="`${permission}:add`"
@click="table.clickAdd"
>
<AIcon type="PlusOutlined" />新增
</PermissionButton>
</template>
<template #action="slotProps">
<a-space :size="16">
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:update`" type="primary"
type="link" :uhasPermission="`${permission}:add`"
:tooltip="{ @click="table.clickAdd"
title: '编辑',
}"
@click="table.clickEdit(slotProps)"
> >
<AIcon type="EditOutlined" /> <AIcon type="PlusOutlined" />新增
</PermissionButton> </PermissionButton>
<PermissionButton </template>
type="link"
:uhasPermission="`${permission}:delete`"
:tooltip="{ title: '删除' }"
:popConfirm="{
title: `确定要删除吗`,
onConfirm: () => table.clickDel(slotProps),
}"
>
<AIcon type="DeleteOutlined" />
</PermissionButton>
</a-space>
</template>
</JTable>
<div class="dialogs"> <template #action="slotProps">
<AddDialog ref="addDialogRef" /> <a-space :size="16">
</div> <PermissionButton
</a-card> :uhasPermission="`${permission}:update`"
type="link"
:tooltip="{
title: '编辑',
}"
@click="table.clickEdit(slotProps)"
>
<AIcon type="EditOutlined" />
</PermissionButton>
<PermissionButton
type="link"
:uhasPermission="`${permission}:delete`"
:tooltip="{ title: '删除' }"
:popConfirm="{
title: `确定要删除吗`,
onConfirm: () => table.clickDel(slotProps),
}"
>
<AIcon type="DeleteOutlined" />
</PermissionButton>
</a-space>
</template>
</JTable>
<div class="dialogs">
<AddDialog ref="addDialogRef" />
</div>
</a-card>
</page-container>
</template> </template>
<script setup lang="ts" name="Role"> <script setup lang="ts" name="Role">
@ -146,12 +148,10 @@ nextTick(() => {
<style lang="less" scoped> <style lang="less" scoped>
.role-container { .role-container {
:deep(.ant-table-cell) { :deep(.ant-table-cell) {
.ant-btn-link { .ant-btn-link {
padding: 0; padding: 0;
} }
} }
} }
</style> </style>

View File

@ -1,46 +1,49 @@
<template> <template>
<div class="user-container"> <page-container>
<Search :columns="query.columns" @search="query.search" /> <div class="user-container">
<Search :columns="query.columns" @search="query.search" />
<JTable <JTable
ref="tableRef" ref="tableRef"
:columns="table.columns" :columns="table.columns"
:request="getUserList_api" :request="getUserList_api"
model="TABLE" model="TABLE"
:params="query.params.value" :params="query.params.value"
:defaultParams="{ sorts: [{ name: 'createTime', order: 'desc' }] }" :defaultParams="{
> sorts: [{ name: 'createTime', order: 'desc' }],
<template #headerTitle> }"
<!-- <a-button >
<template #headerTitle>
<!-- <a-button
type="primary" type="primary"
@click="table.openDialog('add')" @click="table.openDialog('add')"
style="margin-right: 10px" style="margin-right: 10px"
><AIcon type="PlusOutlined" />新增</a-button ><AIcon type="PlusOutlined" />新增</a-button
> --> > -->
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:add`" :uhasPermission="`${permission}:add`"
type="primary" type="primary"
@click="table.openDialog('add')" @click="table.openDialog('add')"
> >
<AIcon type="PlusOutlined" />新增 <AIcon type="PlusOutlined" />新增
</PermissionButton> </PermissionButton>
</template> </template>
<template #type="slotProps"> <template #type="slotProps">
{{ slotProps.type.name }} {{ slotProps.type.name }}
</template> </template>
<template #status="slotProps"> <template #status="slotProps">
<BadgeStatus <BadgeStatus
:status="slotProps.status" :status="slotProps.status"
:text="slotProps.status ? '正常' : '禁用'" :text="slotProps.status ? '正常' : '禁用'"
:statusNames="{ :statusNames="{
1: 'success', 1: 'success',
0: 'error', 0: 'error',
}" }"
></BadgeStatus> ></BadgeStatus>
</template> </template>
<template #action="slotProps"> <template #action="slotProps">
<a-space :size="16"> <a-space :size="16">
<!-- <a-tooltip> <!-- <a-tooltip>
<template #title>编辑</template> <template #title>编辑</template>
<a-button <a-button
style="padding: 0" style="padding: 0"
@ -50,7 +53,7 @@
<AIcon type="EditOutlined" /> <AIcon type="EditOutlined" />
</a-button> </a-button>
</a-tooltip> --> </a-tooltip> -->
<!-- <a-popconfirm <!-- <a-popconfirm
:title="`确定${slotProps.status ? '禁用' : '启用'}吗?`" :title="`确定${slotProps.status ? '禁用' : '启用'}吗?`"
ok-text="确定" ok-text="确定"
cancel-text="取消" cancel-text="取消"
@ -66,7 +69,7 @@
</a-button> </a-button>
</a-tooltip> </a-tooltip>
</a-popconfirm> --> </a-popconfirm> -->
<!-- <a-tooltip> <!-- <a-tooltip>
<template #title>重置密码</template> <template #title>重置密码</template>
<a-button <a-button
style="padding: 0" style="padding: 0"
@ -76,7 +79,7 @@
<AIcon type="icon-zhongzhimima" /> <AIcon type="icon-zhongzhimima" />
</a-button> </a-button>
</a-tooltip> --> </a-tooltip> -->
<!-- <a-popconfirm <!-- <a-popconfirm
title="确认删除" title="确认删除"
ok-text="确定" ok-text="确定"
cancel-text="取消" cancel-text="取消"
@ -97,66 +100,67 @@
</a-tooltip> </a-tooltip>
</a-popconfirm> --> </a-popconfirm> -->
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:update`" :uhasPermission="`${permission}:update`"
type="link" type="link"
:tooltip="{ :tooltip="{
title: '编辑', title: '编辑',
}" }"
@click="table.openDialog('edit')" @click="table.openDialog('edit')"
> >
<AIcon type="EditOutlined" /> <AIcon type="EditOutlined" />
</PermissionButton> </PermissionButton>
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:action`" :uhasPermission="`${permission}:action`"
type="link" type="link"
:tooltip="{ :tooltip="{
title: `${slotProps.status ? '禁用' : '启用'}`, title: `${slotProps.status ? '禁用' : '启用'}`,
}" }"
:popConfirm="{ :popConfirm="{
title: `确定${ title: `确定${
slotProps.status ? '禁用' : '启用' slotProps.status ? '禁用' : '启用'
}`, }`,
onConfirm: () => table.changeStatus(slotProps), onConfirm: () => table.changeStatus(slotProps),
}" }"
> >
<stop-outlined v-if="slotProps.status" /> <stop-outlined v-if="slotProps.status" />
<play-circle-outlined v-else /> <play-circle-outlined v-else />
</PermissionButton> </PermissionButton>
<PermissionButton <PermissionButton
:uhasPermission="`${permission}:update`" :uhasPermission="`${permission}:update`"
type="link" type="link"
:tooltip="{ :tooltip="{
title: '重置密码', title: '重置密码',
}" }"
@click="table.openDialog('reset', slotProps)" @click="table.openDialog('reset', slotProps)"
> >
<AIcon type="icon-zhongzhimima" /> <AIcon type="icon-zhongzhimima" />
</PermissionButton> </PermissionButton>
<PermissionButton <PermissionButton
type="link" type="link"
:uhasPermission="`${permission}:delete`" :uhasPermission="`${permission}:delete`"
:tooltip="{ :tooltip="{
title: slotProps.status title: slotProps.status
? '请先禁用,再删除' ? '请先禁用,再删除'
: '删除', : '删除',
}" }"
:popConfirm="{ :popConfirm="{
title: `确认删除`, title: `确认删除`,
onConfirm: () => table.clickDel(slotProps), onConfirm: () => table.clickDel(slotProps),
}" }"
:disabled="slotProps.status" :disabled="slotProps.status"
> >
<AIcon type="DeleteOutlined" /> <AIcon type="DeleteOutlined" />
</PermissionButton> </PermissionButton>
</a-space> </a-space>
</template> </template>
</JTable> </JTable>
<div class="dialogs"> <div class="dialogs">
<EditUserDialog ref="editDialogRef" @confirm="table.refresh" /> <EditUserDialog ref="editDialogRef" @confirm="table.refresh" />
</div>
</div> </div>
</div> </page-container>
</template> </template>
<script setup lang="ts" name="UserMange"> <script setup lang="ts" name="UserMange">
@ -354,8 +358,6 @@ type modalType = '' | 'add' | 'edit' | 'reset';
<style lang="less" scoped> <style lang="less" scoped>
.user-container { .user-container {
padding: 24px;
:deep(.ant-table-tbody) { :deep(.ant-table-tbody) {
.ant-table-cell { .ant-table-cell {
.ant-space-item { .ant-space-item {

View File

@ -85,8 +85,8 @@ export default defineConfig(({ mode}) => {
// target: 'http://192.168.33.22:8800', // target: 'http://192.168.33.22:8800',
// target: 'http://192.168.32.244:8881', // target: 'http://192.168.32.244:8881',
// target: 'http://47.112.135.104:5096', // opcua // target: 'http://47.112.135.104:5096', // opcua
// target: 'http://120.77.179.54:8844', // 120测试 target: 'http://120.77.179.54:8844', // 120测试
target: 'http://47.108.63.174:8845', // 测试 // target: 'http://47.108.63.174:8845', // 测试
// target: 'http://120.77.179.54:8844', // target: 'http://120.77.179.54:8844',
ws: 'ws://120.77.179.54:8844', ws: 'ws://120.77.179.54:8844',
changeOrigin: true, changeOrigin: true,

10268
yarn.lock

File diff suppressed because it is too large Load Diff