@befly-addon/admin 1.0.20 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/views/403/index.vue +5 -3
- package/views/admin/components/edit.vue +33 -31
- package/views/admin/components/role.vue +9 -7
- package/views/admin/index.vue +44 -39
- package/views/dict/components/edit.vue +33 -31
- package/views/dict/index.vue +41 -35
- package/views/index/components/addonList.vue +7 -4
- package/views/index/components/environmentInfo.vue +3 -2
- package/views/index/components/operationLogs.vue +5 -4
- package/views/index/components/performanceMetrics.vue +12 -7
- package/views/index/components/quickActions.vue +6 -3
- package/views/index/components/serviceStatus.vue +23 -12
- package/views/index/components/systemNotifications.vue +15 -8
- package/views/index/components/systemOverview.vue +10 -5
- package/views/index/components/systemResources.vue +13 -8
- package/views/index/components/userInfo.vue +14 -8
- package/views/login/components/emailLoginForm.vue +20 -16
- package/views/login/components/registerForm.vue +30 -24
- package/views/login/index_1.vue +0 -2
- package/views/menu/components/edit.vue +27 -26
- package/views/menu/index.vue +40 -35
- package/views/news/index.vue +2 -0
- package/views/role/components/api.vue +12 -12
- package/views/role/components/edit.vue +27 -26
- package/views/role/components/menu.vue +8 -7
- package/views/role/index.vue +45 -37
- package/views/user/index.vue +12 -8
package/views/menu/index.vue
CHANGED
|
@@ -2,64 +2,64 @@
|
|
|
2
2
|
<div class="page-menu page-table">
|
|
3
3
|
<div class="main-tool">
|
|
4
4
|
<div class="left">
|
|
5
|
-
<
|
|
5
|
+
<TinyButton type="primary" @click="$Method.onAction('add', {})">
|
|
6
6
|
<template #icon>
|
|
7
|
-
<
|
|
7
|
+
<IconLucidePlus />
|
|
8
8
|
</template>
|
|
9
9
|
添加菜单
|
|
10
|
-
</
|
|
10
|
+
</TinyButton>
|
|
11
11
|
</div>
|
|
12
12
|
<div class="right">
|
|
13
|
-
<
|
|
13
|
+
<TinyButton @click="$Method.handleRefresh">
|
|
14
14
|
<template #icon>
|
|
15
|
-
<
|
|
15
|
+
<IconLucideRotateCw />
|
|
16
16
|
</template>
|
|
17
17
|
刷新
|
|
18
|
-
</
|
|
18
|
+
</TinyButton>
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
21
21
|
<div class="main-table">
|
|
22
|
-
<
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
<
|
|
26
|
-
<
|
|
22
|
+
<TinyGrid :data="$Data.menuList" header-cell-class-name="custom-table-cell-class" size="small" height="100%" seq-serial>
|
|
23
|
+
<TinyGridColumn type="index" title="序号" :width="60" />
|
|
24
|
+
<TinyGridColumn field="name" title="菜单名称" />
|
|
25
|
+
<TinyGridColumn field="path" title="路径" :width="200" />
|
|
26
|
+
<TinyGridColumn field="icon" title="图标" :width="100">
|
|
27
27
|
<template #default="{ row }">
|
|
28
|
-
<
|
|
28
|
+
<IconLucideSquare v-if="row.icon" />
|
|
29
29
|
<span v-else>-</span>
|
|
30
30
|
</template>
|
|
31
|
-
</
|
|
32
|
-
<
|
|
33
|
-
<
|
|
31
|
+
</TinyGridColumn>
|
|
32
|
+
<TinyGridColumn field="sort" title="排序" :width="80" />
|
|
33
|
+
<TinyGridColumn field="state" title="状态" :width="100">
|
|
34
34
|
<template #default="{ row }">
|
|
35
|
-
<
|
|
36
|
-
<
|
|
37
|
-
<
|
|
35
|
+
<TinyTag v-if="row.state === 1" type="success">正常</TinyTag>
|
|
36
|
+
<TinyTag v-else-if="row.state === 2" type="warning">禁用</TinyTag>
|
|
37
|
+
<TinyTag v-else type="danger">已删除</TinyTag>
|
|
38
38
|
</template>
|
|
39
|
-
</
|
|
40
|
-
<
|
|
39
|
+
</TinyGridColumn>
|
|
40
|
+
<TinyGridColumn title="操作" :width="120" align="right">
|
|
41
41
|
<template #default="{ row }">
|
|
42
|
-
<
|
|
42
|
+
<TinyDropdown title="操作" trigger="click" size="small" border visible-arrow @item-click="(data) => $Method.onAction(data.itemData.command, row)">
|
|
43
43
|
<template #dropdown>
|
|
44
|
-
<
|
|
45
|
-
<
|
|
46
|
-
<
|
|
44
|
+
<TinyDropdownMenu>
|
|
45
|
+
<TinyDropdownItem :item-data="{ command: 'upd' }">
|
|
46
|
+
<IconLucidePencil />
|
|
47
47
|
编辑
|
|
48
|
-
</
|
|
49
|
-
<
|
|
50
|
-
<
|
|
48
|
+
</TinyDropdownItem>
|
|
49
|
+
<TinyDropdownItem :item-data="{ command: 'del' }" divided>
|
|
50
|
+
<IconLucideTrash2 style="width: 14px; height: 14px; margin-right: 6px" />
|
|
51
51
|
删除
|
|
52
|
-
</
|
|
53
|
-
</
|
|
52
|
+
</TinyDropdownItem>
|
|
53
|
+
</TinyDropdownMenu>
|
|
54
54
|
</template>
|
|
55
|
-
</
|
|
55
|
+
</TinyDropdown>
|
|
56
56
|
</template>
|
|
57
|
-
</
|
|
58
|
-
</
|
|
57
|
+
</TinyGridColumn>
|
|
58
|
+
</TinyGrid>
|
|
59
59
|
</div>
|
|
60
60
|
|
|
61
61
|
<div class="main-page">
|
|
62
|
-
<
|
|
62
|
+
<TinyPager :current-page="$Data.pagerConfig.currentPage" :page-size="$Data.pagerConfig.pageSize" :total="$Data.pagerConfig.total" @current-change="$Method.onPageChange" @size-change="$Method.handleSizeChange" />
|
|
63
63
|
</div>
|
|
64
64
|
|
|
65
65
|
<!-- 编辑对话框组件 -->
|
|
@@ -68,10 +68,15 @@
|
|
|
68
68
|
</template>
|
|
69
69
|
|
|
70
70
|
<script setup>
|
|
71
|
-
import {
|
|
72
|
-
import
|
|
71
|
+
import { Button as TinyButton, Grid as TinyGrid, GridColumn as TinyGridColumn, Tag as TinyTag, Dropdown as TinyDropdown, DropdownMenu as TinyDropdownMenu, DropdownItem as TinyDropdownItem, Pager as TinyPager, Modal } from '@opentiny/vue';
|
|
72
|
+
import IconLucidePlus from '~icons/lucide/plus';
|
|
73
|
+
import IconLucideRotateCw from '~icons/lucide/rotate-cw';
|
|
74
|
+
import IconLucideSquare from '~icons/lucide/square';
|
|
75
|
+
import IconLucidePencil from '~icons/lucide/pencil';
|
|
76
|
+
import IconLucideTrash2 from '~icons/lucide/trash-2';
|
|
73
77
|
|
|
74
78
|
import EditDialog from './components/edit.vue';
|
|
79
|
+
import { $Http } from '@/plugins/http';
|
|
75
80
|
|
|
76
81
|
// 响应式数据
|
|
77
82
|
const $Data = $ref({
|
package/views/news/index.vue
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<TinyDialogBox v-model:visible="$Data.visible" title="接口权限" width="900px" :append-to-body="true" :show-footer="true" top="5vh" @close="$Method.onClose">
|
|
3
3
|
<div class="comp-role-api">
|
|
4
4
|
<!-- 搜索框 -->
|
|
5
5
|
<div class="search-box">
|
|
6
|
-
<
|
|
6
|
+
<TinySearch v-model="$Data.searchText" placeholder="搜索接口名称或路径" clearable @update:modelValue="$Method.onSearch" />
|
|
7
7
|
</div>
|
|
8
8
|
|
|
9
9
|
<!-- 接口分组列表 -->
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
<div v-for="group in $Data.filteredApiData" :key="group.name" class="api-group">
|
|
12
12
|
<div class="group-header">{{ group.title }}</div>
|
|
13
13
|
<div class="api-checkbox-list">
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
</
|
|
14
|
+
<TinyCheckboxGroup v-model="$Data.checkedApiIds">
|
|
15
|
+
<TinyCheckbox v-for="api in group.apis" :key="api.id" :label="api.id"> {{ api.label }} </TinyCheckbox>
|
|
16
|
+
</TinyCheckboxGroup>
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
19
19
|
</div>
|
|
@@ -21,20 +21,20 @@
|
|
|
21
21
|
|
|
22
22
|
<template #footer>
|
|
23
23
|
<div class="footer-left">
|
|
24
|
-
<
|
|
25
|
-
<
|
|
24
|
+
<TinyButton size="small" @click="$Method.onCheckAll">全选</TinyButton>
|
|
25
|
+
<TinyButton size="small" @click="$Method.onUncheckAll">取消全选</TinyButton>
|
|
26
26
|
</div>
|
|
27
27
|
<div class="footer-right">
|
|
28
|
-
<
|
|
29
|
-
<
|
|
28
|
+
<TinyButton @click="$Method.onClose">取消</TinyButton>
|
|
29
|
+
<TinyButton type="primary" @click="$Method.onSubmit">保存</TinyButton>
|
|
30
30
|
</div>
|
|
31
31
|
</template>
|
|
32
|
-
</
|
|
32
|
+
</TinyDialogBox>
|
|
33
33
|
</template>
|
|
34
34
|
|
|
35
35
|
<script setup>
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
36
|
+
import { Button as TinyButton, DialogBox as TinyDialogBox, Search as TinySearch, Checkbox as TinyCheckbox, CheckboxGroup as TinyCheckboxGroup, Modal } from '@opentiny/vue';
|
|
37
|
+
import { $Http } from '@/plugins/http';
|
|
38
38
|
|
|
39
39
|
const $Prop = defineProps({
|
|
40
40
|
modelValue: {
|
|
@@ -1,37 +1,38 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<TinyDialogBox v-model:visible="$Data.visible" :title="$Prop.actionType === 'upd' ? '更新角色' : '添加角色'" width="600px" :append-to-body="true" :show-footer="true" :esc-closable="false" top="10vh" @close="$Method.onClose">
|
|
3
3
|
<div class="comp-role-edit">
|
|
4
|
-
<
|
|
5
|
-
<
|
|
6
|
-
<
|
|
7
|
-
</
|
|
8
|
-
<
|
|
9
|
-
<
|
|
10
|
-
</
|
|
11
|
-
<
|
|
12
|
-
<
|
|
13
|
-
</
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
</
|
|
17
|
-
<
|
|
18
|
-
<
|
|
19
|
-
<
|
|
20
|
-
<
|
|
21
|
-
</
|
|
22
|
-
</
|
|
23
|
-
</
|
|
4
|
+
<TinyForm :model="$Data.formData" label-width="120px" label-position="left" :rules="$Data2.formRules" :ref="(el) => ($From.form = el)">
|
|
5
|
+
<TinyFormItem label="角色名称" prop="name">
|
|
6
|
+
<TinyInput v-model="$Data.formData.name" placeholder="请输入角色名称" />
|
|
7
|
+
</TinyFormItem>
|
|
8
|
+
<TinyFormItem label="角色代码" prop="code">
|
|
9
|
+
<TinyInput v-model="$Data.formData.code" placeholder="请输入角色代码,如:admin" />
|
|
10
|
+
</TinyFormItem>
|
|
11
|
+
<TinyFormItem label="角色描述" prop="description">
|
|
12
|
+
<TinyInput v-model="$Data.formData.description" type="textarea" placeholder="请输入角色描述" :rows="3" />
|
|
13
|
+
</TinyFormItem>
|
|
14
|
+
<TinyFormItem label="排序" prop="sort">
|
|
15
|
+
<TinyNumeric v-model="$Data.formData.sort" :min="0" :max="9999" />
|
|
16
|
+
</TinyFormItem>
|
|
17
|
+
<TinyFormItem label="状态" prop="state">
|
|
18
|
+
<TinyRadioGroup v-model="$Data.formData.state">
|
|
19
|
+
<TinyRadio :label="1">正常</TinyRadio>
|
|
20
|
+
<TinyRadio :label="2">禁用</TinyRadio>
|
|
21
|
+
</TinyRadioGroup>
|
|
22
|
+
</TinyFormItem>
|
|
23
|
+
</TinyForm>
|
|
24
24
|
</div>
|
|
25
25
|
<template #footer>
|
|
26
|
-
<
|
|
27
|
-
<
|
|
26
|
+
<TinyButton @click="$Method.onClose">取消</TinyButton>
|
|
27
|
+
<TinyButton type="primary" @click="$Method.onSubmit">确定</TinyButton>
|
|
28
28
|
</template>
|
|
29
|
-
</
|
|
29
|
+
</TinyDialogBox>
|
|
30
30
|
</template>
|
|
31
31
|
|
|
32
32
|
<script setup>
|
|
33
|
-
import {
|
|
34
|
-
import { Modal } from '@opentiny/vue';
|
|
33
|
+
import { shallowRef } from 'vue';
|
|
34
|
+
import { Button as TinyButton, DialogBox as TinyDialogBox, Form as TinyForm, FormItem as TinyFormItem, Input as TinyInput, Numeric as TinyNumeric, Radio as TinyRadio, RadioGroup as TinyRadioGroup, Modal } from '@opentiny/vue';
|
|
35
|
+
import { $Http } from '@/plugins/http';
|
|
35
36
|
|
|
36
37
|
const $Prop = defineProps({
|
|
37
38
|
modelValue: {
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
2
|
+
<TinyDialogBox v-model:visible="$Data.visible" title="菜单权限" width="600px" :append-to-body="true" :show-footer="true" top="10vh" @close="$Method.onClose">
|
|
3
3
|
<div class="comp-role-menu">
|
|
4
|
-
<
|
|
4
|
+
<TinyTree :data="$Data.menuTreeData" node-key="id" show-checkbox default-expand-all :props="{ label: 'name' }" :ref="(el) => ($From.tree = el)" />
|
|
5
5
|
</div>
|
|
6
6
|
<template #footer>
|
|
7
|
-
<
|
|
8
|
-
<
|
|
7
|
+
<TinyButton @click="$Method.onClose">取消</TinyButton>
|
|
8
|
+
<TinyButton type="primary" @click="$Method.onSubmit">保存</TinyButton>
|
|
9
9
|
</template>
|
|
10
|
-
</
|
|
10
|
+
</TinyDialogBox>
|
|
11
11
|
</template>
|
|
12
12
|
|
|
13
13
|
<script setup>
|
|
14
|
-
import {
|
|
15
|
-
import { Modal } from '@opentiny/vue';
|
|
14
|
+
import { nextTick, shallowRef } from 'vue';
|
|
15
|
+
import { Button as TinyButton, DialogBox as TinyDialogBox, Tree as TinyTree, Modal } from '@opentiny/vue';
|
|
16
16
|
|
|
17
17
|
import { arrayToTree } from '@/utils';
|
|
18
|
+
import { $Http } from '@/plugins/http';
|
|
18
19
|
|
|
19
20
|
const $Prop = defineProps({
|
|
20
21
|
modelValue: {
|
package/views/role/index.vue
CHANGED
|
@@ -2,67 +2,67 @@
|
|
|
2
2
|
<div class="page-role page-table">
|
|
3
3
|
<div class="main-tool">
|
|
4
4
|
<div class="left">
|
|
5
|
-
<
|
|
5
|
+
<TinyButton type="primary" @click="$Method.onAction('add', {})">
|
|
6
6
|
<template #icon>
|
|
7
|
-
<
|
|
7
|
+
<IconLucidePlus />
|
|
8
8
|
</template>
|
|
9
9
|
添加角色
|
|
10
|
-
</
|
|
10
|
+
</TinyButton>
|
|
11
11
|
</div>
|
|
12
12
|
<div class="right">
|
|
13
|
-
<
|
|
13
|
+
<TinyButton @click="$Method.handleRefresh">
|
|
14
14
|
<template #icon>
|
|
15
|
-
<
|
|
15
|
+
<IconLucideRotateCw />
|
|
16
16
|
</template>
|
|
17
17
|
刷新
|
|
18
|
-
</
|
|
18
|
+
</TinyButton>
|
|
19
19
|
</div>
|
|
20
20
|
</div>
|
|
21
21
|
<div class="main-table">
|
|
22
|
-
<
|
|
23
|
-
<
|
|
24
|
-
<
|
|
25
|
-
<
|
|
26
|
-
<
|
|
27
|
-
<
|
|
28
|
-
<
|
|
22
|
+
<TinyGrid :data="$Data.tableData" header-cell-class-name="custom-table-cell-class" size="small" height="100%" show-overflow="tooltip" border seq-serial>
|
|
23
|
+
<TinyGridColumn type="index" title="序号" align="center" :width="100" />
|
|
24
|
+
<TinyGridColumn field="name" title="角色名称" :width="150" />
|
|
25
|
+
<TinyGridColumn field="code" title="角色代码" :width="150" />
|
|
26
|
+
<TinyGridColumn field="description" title="描述" :min-width="150" />
|
|
27
|
+
<TinyGridColumn field="sort" title="排序" align="center" :width="80" />
|
|
28
|
+
<TinyGridColumn field="state" title="状态" align="center" :width="100">
|
|
29
29
|
<template #default="{ row }">
|
|
30
|
-
<
|
|
31
|
-
<
|
|
32
|
-
<
|
|
30
|
+
<TinyTag v-if="row.state === 1" type="success">正常</TinyTag>
|
|
31
|
+
<TinyTag v-else-if="row.state === 2" type="warning">禁用</TinyTag>
|
|
32
|
+
<TinyTag v-else type="danger">已删除</TinyTag>
|
|
33
33
|
</template>
|
|
34
|
-
</
|
|
35
|
-
<
|
|
34
|
+
</TinyGridColumn>
|
|
35
|
+
<TinyGridColumn title="操作" :width="120" align="center" fixed="right">
|
|
36
36
|
<template #default="{ row }">
|
|
37
|
-
<
|
|
37
|
+
<TinyDropdown title="操作" trigger="click" size="small" border visible-arrow @item-click="(data) => $Method.onAction(data.itemData.command, row)">
|
|
38
38
|
<template #dropdown>
|
|
39
|
-
<
|
|
40
|
-
<
|
|
41
|
-
<
|
|
39
|
+
<TinyDropdownMenu>
|
|
40
|
+
<TinyDropdownItem :item-data="{ command: 'upd' }">
|
|
41
|
+
<IconLucidePencil />
|
|
42
42
|
编辑
|
|
43
|
-
</
|
|
44
|
-
<
|
|
45
|
-
<
|
|
43
|
+
</TinyDropdownItem>
|
|
44
|
+
<TinyDropdownItem :item-data="{ command: 'menu' }">
|
|
45
|
+
<IconLucideSettings />
|
|
46
46
|
菜单权限
|
|
47
|
-
</
|
|
48
|
-
<
|
|
49
|
-
<
|
|
47
|
+
</TinyDropdownItem>
|
|
48
|
+
<TinyDropdownItem :item-data="{ command: 'api' }">
|
|
49
|
+
<IconLucideCode />
|
|
50
50
|
接口权限
|
|
51
|
-
</
|
|
52
|
-
<
|
|
53
|
-
<
|
|
51
|
+
</TinyDropdownItem>
|
|
52
|
+
<TinyDropdownItem :item-data="{ command: 'del' }" divided>
|
|
53
|
+
<IconLucideTrash2 style="width: 14px; height: 14px; margin-right: 6px" />
|
|
54
54
|
删除
|
|
55
|
-
</
|
|
56
|
-
</
|
|
55
|
+
</TinyDropdownItem>
|
|
56
|
+
</TinyDropdownMenu>
|
|
57
57
|
</template>
|
|
58
|
-
</
|
|
58
|
+
</TinyDropdown>
|
|
59
59
|
</template>
|
|
60
|
-
</
|
|
61
|
-
</
|
|
60
|
+
</TinyGridColumn>
|
|
61
|
+
</TinyGrid>
|
|
62
62
|
</div>
|
|
63
63
|
|
|
64
64
|
<div class="main-page">
|
|
65
|
-
<
|
|
65
|
+
<TinyPager :current-page="$Data.pagerConfig.currentPage" :page-size="$Data.pagerConfig.pageSize" :total="$Data.pagerConfig.total" @current-change="$Method.onPageChange" @size-change="$Method.handleSizeChange" />
|
|
66
66
|
</div>
|
|
67
67
|
|
|
68
68
|
<!-- 编辑对话框组件 -->
|
|
@@ -77,9 +77,17 @@
|
|
|
77
77
|
</template>
|
|
78
78
|
|
|
79
79
|
<script setup>
|
|
80
|
+
import { Button as TinyButton, Grid as TinyGrid, GridColumn as TinyGridColumn, Tag as TinyTag, Dropdown as TinyDropdown, DropdownMenu as TinyDropdownMenu, DropdownItem as TinyDropdownItem, Pager as TinyPager, Modal } from '@opentiny/vue';
|
|
81
|
+
import IconLucidePlus from '~icons/lucide/plus';
|
|
82
|
+
import IconLucideRotateCw from '~icons/lucide/rotate-cw';
|
|
83
|
+
import IconLucidePencil from '~icons/lucide/pencil';
|
|
84
|
+
import IconLucideSettings from '~icons/lucide/settings';
|
|
85
|
+
import IconLucideCode from '~icons/lucide/code';
|
|
86
|
+
import IconLucideTrash2 from '~icons/lucide/trash-2';
|
|
80
87
|
import EditDialog from './components/edit.vue';
|
|
81
88
|
import MenuDialog from './components/menu.vue';
|
|
82
89
|
import ApiDialog from './components/api.vue';
|
|
90
|
+
import { $Http } from '@/plugins/http';
|
|
83
91
|
|
|
84
92
|
// 响应式数据
|
|
85
93
|
const $Data = $ref({
|
package/views/user/index.vue
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<div class="toolbar-left">
|
|
6
6
|
<t-button theme="primary" @click="$Method.handleAdd">
|
|
7
7
|
<template #icon>
|
|
8
|
-
<
|
|
8
|
+
<IconLucidePlus />
|
|
9
9
|
</template>
|
|
10
10
|
添加管理员
|
|
11
11
|
</t-button>
|
|
@@ -16,13 +16,13 @@
|
|
|
16
16
|
<t-select v-model="$Data.searchState" placeholder="状态" clearable style="width: 120px" :options="$Data.stateOptions" @change="$Method.handleSearch" />
|
|
17
17
|
<t-button theme="default" @click="$Method.handleSearch">
|
|
18
18
|
<template #icon>
|
|
19
|
-
<
|
|
19
|
+
<IconLucideSearch />
|
|
20
20
|
</template>
|
|
21
21
|
搜索
|
|
22
22
|
</t-button>
|
|
23
23
|
<t-button theme="default" @click="$Method.handleReset">
|
|
24
24
|
<template #icon>
|
|
25
|
-
<
|
|
25
|
+
<IconLucideRotateCw />
|
|
26
26
|
</template>
|
|
27
27
|
重置
|
|
28
28
|
</t-button>
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
<div class="table-wrapper">
|
|
35
35
|
<t-table :data="$Data.userList" :columns="$Data.columns" row-key="id" :loading="$Data.loading" bordered stripe hover max-height="100%">
|
|
36
36
|
<template #state="{ row }">
|
|
37
|
-
<
|
|
38
|
-
<
|
|
39
|
-
<
|
|
37
|
+
<TinyTag v-if="row.state === 1" type="success">正常</TinyTag>
|
|
38
|
+
<TinyTag v-else-if="row.state === 2" type="warning">禁用</TinyTag>
|
|
39
|
+
<TinyTag v-else type="danger">已删除</TinyTag>
|
|
40
40
|
</template>
|
|
41
41
|
|
|
42
42
|
<template #lastLoginTime="{ row }">
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
<t-dialog v-model:visible="$Data.roleVisible" header="分配角色" width="600px" :on-confirm="$Method.handleRoleSubmit">
|
|
64
64
|
<div class="role-dialog">
|
|
65
65
|
<div class="user-info">
|
|
66
|
-
<
|
|
66
|
+
<TinyTag type="primary">{{ $Data.currentUser.username }}</TinyTag>
|
|
67
67
|
<span class="user-email">{{ $Data.currentUser.email }}</span>
|
|
68
68
|
</div>
|
|
69
69
|
<t-divider />
|
|
@@ -74,7 +74,11 @@
|
|
|
74
74
|
</template>
|
|
75
75
|
|
|
76
76
|
<script setup>
|
|
77
|
-
import {
|
|
77
|
+
import { Tag as TinyTag, Modal } from '@opentiny/vue';
|
|
78
|
+
import IconLucidePlus from '~icons/lucide/plus';
|
|
79
|
+
import IconLucideSearch from '~icons/lucide/search';
|
|
80
|
+
import IconLucideRotateCw from '~icons/lucide/rotate-cw';
|
|
81
|
+
import { $Http } from '@/plugins/http';
|
|
78
82
|
|
|
79
83
|
// 响应式数据
|
|
80
84
|
const $Data = $ref({
|