@befly-addon/admin 1.0.31 → 1.0.33

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.
@@ -1,65 +1,54 @@
1
- <template>
1
+ <template>
2
2
  <div class="page-menu page-table">
3
3
  <div class="main-tool">
4
4
  <div class="left">
5
- <TinyButton type="primary" @click="$Method.onAction('add', {})">
5
+ <t-button type="primary" @click="$Method.onAction('add', {})">
6
6
  <template #icon>
7
7
  <IconLucidePlus />
8
8
  </template>
9
9
  添加菜单
10
- </TinyButton>
10
+ </t-button>
11
11
  </div>
12
12
  <div class="right">
13
- <TinyButton @click="$Method.handleRefresh">
13
+ <t-button @click="$Method.handleRefresh">
14
14
  <template #icon>
15
15
  <IconLucideRotateCw />
16
16
  </template>
17
17
  刷新
18
- </TinyButton>
18
+ </t-button>
19
19
  </div>
20
20
  </div>
21
21
  <div class="main-table">
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
- <template #default="{ row }">
28
- <IconLucideSquare v-if="row.icon" />
29
- <span v-else>-</span>
30
- </template>
31
- </TinyGridColumn>
32
- <TinyGridColumn field="sort" title="排序" :width="80" />
33
- <TinyGridColumn field="state" title="状态" :width="100">
34
- <template #default="{ row }">
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
- </template>
39
- </TinyGridColumn>
40
- <TinyGridColumn title="操作" :width="120" align="right">
41
- <template #default="{ row }">
42
- <TinyDropdown title="操作" trigger="click" size="small" border visible-arrow @item-click="(data) => $Method.onAction(data.itemData.command, row)">
43
- <template #dropdown>
44
- <TinyDropdownMenu>
45
- <TinyDropdownItem :item-data="{ command: 'upd' }">
46
- <IconLucidePencil />
47
- 编辑
48
- </TinyDropdownItem>
49
- <TinyDropdownItem :item-data="{ command: 'del' }" divided>
50
- <IconLucideTrash2 style="width: 14px; height: 14px; margin-right: 6px" />
51
- 删除
52
- </TinyDropdownItem>
53
- </TinyDropdownMenu>
54
- </template>
55
- </TinyDropdown>
56
- </template>
57
- </TinyGridColumn>
58
- </TinyGrid>
22
+ <t-table :data="$Data.menuList" :columns="$Data.columns" header-cell-class-name="custom-table-cell-class" size="small" height="100%" row-key="id">
23
+ <template #icon="{ row }">
24
+ <IconLucideSquare v-if="row.icon" />
25
+ <span v-else>-</span>
26
+ </template>
27
+ <template #state="{ row }">
28
+ <t-tag v-if="row.state === 1" theme="success">正常</t-tag>
29
+ <t-tag v-else-if="row.state === 2" theme="warning">禁用</t-tag>
30
+ <t-tag v-else theme="danger">已删除</t-tag>
31
+ </template>
32
+ <template #operation="{ row }">
33
+ <t-dropdown trigger="click" min-column-width="120" @click="(data) => $Method.onAction(data.value, row)">
34
+ <t-button variant="text" size="small">操作</t-button>
35
+ <t-dropdown-menu slot="dropdown">
36
+ <t-dropdown-item value="upd">
37
+ <IconLucidePencil />
38
+ 编辑
39
+ </t-dropdown-item>
40
+ <t-dropdown-item value="del" :divider="true">
41
+ <IconLucideTrash2 style="width: 14px; height: 14px; margin-right: 6px" />
42
+ 删除
43
+ </t-dropdown-item>
44
+ </t-dropdown-menu>
45
+ </t-dropdown>
46
+ </template>
47
+ </t-table>
59
48
  </div>
60
49
 
61
50
  <div class="main-page">
62
- <TinyPager :current-page="$Data.pagerConfig.currentPage" :page-size="$Data.pagerConfig.pageSize" :total="$Data.pagerConfig.total" @current-change="$Method.onPageChange" @size-change="$Method.handleSizeChange" />
51
+ <t-pagination :current-page="$Data.pagerConfig.currentPage" :page-size="$Data.pagerConfig.pageSize" :total="$Data.pagerConfig.total" @current-change="$Method.onPageChange" @size-change="$Method.handleSizeChange" />
63
52
  </div>
64
53
 
65
54
  <!-- 编辑对话框组件 -->
@@ -68,27 +57,21 @@
68
57
  </template>
69
58
 
70
59
  <script setup>
71
- import TinyButton from '@opentiny/vue-button';
72
- import TinyGrid from '@opentiny/vue-grid';
73
- import TinyGridColumn from '@opentiny/vue-grid-column';
74
- import TinyTag from '@opentiny/vue-tag';
75
- import TinyDropdown from '@opentiny/vue-dropdown';
76
- import TinyDropdownMenu from '@opentiny/vue-dropdown-menu';
77
- import TinyDropdownItem from '@opentiny/vue-dropdown-item';
78
- import TinyPager from '@opentiny/vue-pager';
79
- import Modal from '@opentiny/vue-modal';
80
- import IconLucidePlus from '~icons/lucide/plus';
81
- import IconLucideRotateCw from '~icons/lucide/rotate-cw';
82
- import IconLucideSquare from '~icons/lucide/square';
83
- import IconLucidePencil from '~icons/lucide/pencil';
84
- import IconLucideTrash2 from '~icons/lucide/trash-2';
85
-
86
60
  import EditDialog from './components/edit.vue';
87
61
  import { $Http } from '@/plugins/http';
88
62
 
89
63
  // 响应式数据
90
64
  const $Data = $ref({
91
65
  menuList: [],
66
+ columns: [
67
+ { colKey: 'index', title: '序号', width: 60, align: 'center' },
68
+ { colKey: 'name', title: '菜单名称' },
69
+ { colKey: 'path', title: '路径', width: 200 },
70
+ { colKey: 'icon', title: '图标', width: 100 },
71
+ { colKey: 'sort', title: '排序', width: 80 },
72
+ { colKey: 'state', title: '状态', width: 100 },
73
+ { colKey: 'operation', title: '操作', width: 120, align: 'right' }
74
+ ],
92
75
  pagerConfig: {
93
76
  currentPage: 1,
94
77
  pageSize: 30,
@@ -118,7 +101,7 @@ const $Method = {
118
101
  $Data.pagerConfig.total = res.data.total || 0;
119
102
  } catch (error) {
120
103
  console.error('加载菜单列表失败:', error);
121
- Modal.message({
104
+ MessagePlugin.info({
122
105
  message: '加载数据失败',
123
106
  status: 'error'
124
107
  });
@@ -127,7 +110,7 @@ const $Method = {
127
110
 
128
111
  // 删除菜单
129
112
  async apiMenuDel(row) {
130
- Modal.confirm({
113
+ DialogPlugin.confirm({
131
114
  header: '确认删除',
132
115
  body: `确定要删除菜单"${row.name}" 吗?`,
133
116
  status: 'warning'
@@ -135,14 +118,14 @@ const $Method = {
135
118
  try {
136
119
  const res = await $Http('/addon/admin/menu/del', { id: row.id });
137
120
  if (res.code === 0) {
138
- Modal.message({ message: '删除成功', status: 'success' });
121
+ MessagePlugin.info({ message: '删除成功', status: 'success' });
139
122
  $Method.apiMenuList();
140
123
  } else {
141
- Modal.message({ message: res.msg || '删除失败', status: 'error' });
124
+ MessagePlugin.info({ message: res.msg || '删除失败', status: 'error' });
142
125
  }
143
126
  } catch (error) {
144
127
  console.error('删除失败:', error);
145
- Modal.message({ message: '删除失败', status: 'error' });
128
+ MessagePlugin.info({ message: '删除失败', status: 'error' });
146
129
  }
147
130
  });
148
131
  },
@@ -9,7 +9,6 @@
9
9
  </template>
10
10
 
11
11
  <script setup>
12
- import Modal from '@opentiny/vue-modal';
13
12
  // 新闻页面逻辑
14
13
  </script>
15
14
 
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <TinyDialogBox v-model:visible="$Data.visible" title="接口权限" width="900px" :append-to-body="true" :show-footer="true" top="5vh" @close="$Method.onClose">
2
+ <t-dialog 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">
@@ -21,24 +21,18 @@
21
21
 
22
22
  <template #footer>
23
23
  <div class="footer-left">
24
- <TinyButton size="small" @click="$Method.onCheckAll">全选</TinyButton>
25
- <TinyButton size="small" @click="$Method.onUncheckAll">取消全选</TinyButton>
24
+ <t-button size="small" @click="$Method.onCheckAll">全选</t-button>
25
+ <t-button size="small" @click="$Method.onUncheckAll">取消全选</t-button>
26
26
  </div>
27
27
  <div class="footer-right">
28
- <TinyButton @click="$Method.onClose">取消</TinyButton>
29
- <TinyButton type="primary" @click="$Method.onSubmit">保存</TinyButton>
28
+ <t-button @click="$Method.onClose">取消</t-button>
29
+ <t-button type="primary" @click="$Method.onSubmit">保存</t-button>
30
30
  </div>
31
31
  </template>
32
- </TinyDialogBox>
32
+ </t-dialog>
33
33
  </template>
34
34
 
35
35
  <script setup>
36
- import TinyButton from '@opentiny/vue-button';
37
- import TinyDialogBox from '@opentiny/vue-dialog-box';
38
- import TinySearch from '@opentiny/vue-search';
39
- import TinyCheckbox from '@opentiny/vue-checkbox';
40
- import TinyCheckboxGroup from '@opentiny/vue-checkbox-group';
41
- import Modal from '@opentiny/vue-modal';
42
36
  import { $Http } from '@/plugins/http';
43
37
 
44
38
  const $Prop = defineProps({
@@ -113,7 +107,7 @@ const $Method = {
113
107
  $Data.apiData = Array.from(apiMap.values());
114
108
  } catch (error) {
115
109
  console.error('加载接口失败:', error);
116
- Modal.message({ message: '加载接口失败', status: 'error' });
110
+ MessagePlugin.info({ message: '加载接口失败', status: 'error' });
117
111
  }
118
112
  },
119
113
 
@@ -173,21 +167,21 @@ const $Method = {
173
167
  });
174
168
 
175
169
  if (res.code === 0) {
176
- Modal.message({
170
+ MessagePlugin.info({
177
171
  message: '保存成功',
178
172
  status: 'success'
179
173
  });
180
174
  $Data.visible = false;
181
175
  $Emit('success');
182
176
  } else {
183
- Modal.message({
177
+ MessagePlugin.info({
184
178
  message: res.msg || '保存失败',
185
179
  status: 'error'
186
180
  });
187
181
  }
188
182
  } catch (error) {
189
183
  console.error('保存失败:', error);
190
- Modal.message({
184
+ MessagePlugin.info({
191
185
  message: '保存失败',
192
186
  status: 'error'
193
187
  });
@@ -1,44 +1,35 @@
1
1
  <template>
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">
2
+ <t-dialog 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
- <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>
4
+ <t-form :model="$Data.formData" label-width="120px" label-position="left" :rules="$Data2.formRules" :ref="(el) => ($From.form = el)">
5
+ <t-form-item label="角色名称" prop="name">
6
+ <t-input v-model="$Data.formData.name" placeholder="请输入角色名称" />
7
+ </t-form-item>
8
+ <t-form-item label="角色代码" prop="code">
9
+ <t-input v-model="$Data.formData.code" placeholder="请输入角色代码,如:admin" />
10
+ </t-form-item>
11
+ <t-form-item label="角色描述" prop="description">
12
+ <t-input v-model="$Data.formData.description" type="textarea" placeholder="请输入角色描述" :rows="3" />
13
+ </t-form-item>
14
+ <t-form-item label="排序" prop="sort">
15
+ <t-input-number v-model="$Data.formData.sort" :min="0" :max="9999" />
16
+ </t-form-item>
17
+ <t-form-item label="状态" prop="state">
18
+ <t-radio-group v-model="$Data.formData.state">
19
+ <t-radio :label="1">正常</t-radio>
20
+ <t-radio :label="2">禁用</t-radio>
21
+ </t-radio-group>
22
+ </t-form-item>
23
+ </t-form>
24
24
  </div>
25
25
  <template #footer>
26
- <TinyButton @click="$Method.onClose">取消</TinyButton>
27
- <TinyButton type="primary" @click="$Method.onSubmit">确定</TinyButton>
26
+ <t-button @click="$Method.onClose">取消</t-button>
27
+ <t-button type="primary" @click="$Method.onSubmit">确定</t-button>
28
28
  </template>
29
- </TinyDialogBox>
29
+ </t-dialog>
30
30
  </template>
31
31
 
32
32
  <script setup>
33
- import TinyButton from '@opentiny/vue-button';
34
- import TinyDialogBox from '@opentiny/vue-dialog-box';
35
- import TinyForm from '@opentiny/vue-form';
36
- import TinyFormItem from '@opentiny/vue-form-item';
37
- import TinyInput from '@opentiny/vue-input';
38
- import TinyNumeric from '@opentiny/vue-numeric';
39
- import TinyRadio from '@opentiny/vue-radio';
40
- import TinyRadioGroup from '@opentiny/vue-radio-group';
41
- import Modal from '@opentiny/vue-modal';
42
33
  import { $Http } from '@/plugins/http';
43
34
 
44
35
  const $Prop = defineProps({
@@ -115,7 +106,7 @@ const $Method = {
115
106
 
116
107
  const res = await $Http($Prop.actionType === 'upd' ? '/addon/admin/roleUpd' : '/addon/admin/roleIns', $Data.formData);
117
108
 
118
- Modal.message({
109
+ MessagePlugin.info({
119
110
  message: $Prop.actionType === 'upd' ? '更新成功' : '添加成功',
120
111
  status: 'success'
121
112
  });
@@ -123,7 +114,7 @@ const $Method = {
123
114
  $Emit('success');
124
115
  } catch (error) {
125
116
  console.error('提交失败:', error);
126
- Modal.message({
117
+ MessagePlugin.info({
127
118
  message: '提交失败',
128
119
  status: 'error'
129
120
  });
@@ -1,22 +1,17 @@
1
1
  <template>
2
- <TinyDialogBox v-model:visible="$Data.visible" title="菜单权限" width="600px" :append-to-body="true" :show-footer="true" top="10vh" @close="$Method.onClose">
2
+ <t-dialog 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
- <TinyTree :data="$Data.menuTreeData" node-key="id" show-checkbox default-expand-all :props="{ label: 'name' }" :ref="(el) => ($From.tree = el)" />
4
+ <t-tree :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
- <TinyButton @click="$Method.onClose">取消</TinyButton>
8
- <TinyButton type="primary" @click="$Method.onSubmit">保存</TinyButton>
7
+ <t-button @click="$Method.onClose">取消</t-button>
8
+ <t-button type="primary" @click="$Method.onSubmit">保存</t-button>
9
9
  </template>
10
- </TinyDialogBox>
10
+ </t-dialog>
11
11
  </template>
12
12
 
13
13
  <script setup>
14
14
  import { nextTick } from 'vue';
15
- import TinyButton from '@opentiny/vue-button';
16
- import TinyDialogBox from '@opentiny/vue-dialog-box';
17
- import TinyTree from '@opentiny/vue-tree';
18
- import Modal from '@opentiny/vue-modal';
19
-
20
15
  import { arrayToTree } from '@/utils';
21
16
  import { $Http } from '@/plugins/http';
22
17
 
@@ -73,7 +68,7 @@ const $Method = {
73
68
  $Data.menuTreeData = arrayToTree(menuList);
74
69
  } catch (error) {
75
70
  console.error('加载菜单失败:', error);
76
- Modal.message({ message: '加载菜单失败', status: 'error' });
71
+ MessagePlugin.info({ message: '加载菜单失败', status: 'error' });
77
72
  }
78
73
  },
79
74
 
@@ -104,7 +99,7 @@ const $Method = {
104
99
  async onSubmit() {
105
100
  try {
106
101
  if (!$From.tree) {
107
- Modal.message({ message: '菜单树未初始化', status: 'error' });
102
+ MessagePlugin.info({ message: '菜单树未初始化', status: 'error' });
108
103
  return;
109
104
  }
110
105
 
@@ -119,21 +114,21 @@ const $Method = {
119
114
  });
120
115
 
121
116
  if (res.code === 0) {
122
- Modal.message({
117
+ MessagePlugin.info({
123
118
  message: '保存成功',
124
119
  status: 'success'
125
120
  });
126
121
  $Data.visible = false;
127
122
  $Emit('success');
128
123
  } else {
129
- Modal.message({
124
+ MessagePlugin.info({
130
125
  message: res.msg || '保存失败',
131
126
  status: 'error'
132
127
  });
133
128
  }
134
129
  } catch (error) {
135
130
  console.error('保存失败:', error);
136
- Modal.message({
131
+ MessagePlugin.info({
137
132
  message: '保存失败',
138
133
  status: 'error'
139
134
  });
@@ -1,68 +1,58 @@
1
- <template>
1
+ <template>
2
2
  <div class="page-role page-table">
3
3
  <div class="main-tool">
4
4
  <div class="left">
5
- <TinyButton type="primary" @click="$Method.onAction('add', {})">
5
+ <t-button type="primary" @click="$Method.onAction('add', {})">
6
6
  <template #icon>
7
7
  <IconLucidePlus />
8
8
  </template>
9
9
  添加角色
10
- </TinyButton>
10
+ </t-button>
11
11
  </div>
12
12
  <div class="right">
13
- <TinyButton @click="$Method.handleRefresh">
13
+ <t-button @click="$Method.handleRefresh">
14
14
  <template #icon>
15
15
  <IconLucideRotateCw />
16
16
  </template>
17
17
  刷新
18
- </TinyButton>
18
+ </t-button>
19
19
  </div>
20
20
  </div>
21
21
  <div class="main-table">
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
- <template #default="{ row }">
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
- </template>
34
- </TinyGridColumn>
35
- <TinyGridColumn title="操作" :width="120" align="center" fixed="right">
36
- <template #default="{ row }">
37
- <TinyDropdown title="操作" trigger="click" size="small" border visible-arrow @item-click="(data) => $Method.onAction(data.itemData.command, row)">
38
- <template #dropdown>
39
- <TinyDropdownMenu>
40
- <TinyDropdownItem :item-data="{ command: 'upd' }">
41
- <IconLucidePencil />
42
- 编辑
43
- </TinyDropdownItem>
44
- <TinyDropdownItem :item-data="{ command: 'menu' }">
45
- <IconLucideSettings />
46
- 菜单权限
47
- </TinyDropdownItem>
48
- <TinyDropdownItem :item-data="{ command: 'api' }">
49
- <IconLucideCode />
50
- 接口权限
51
- </TinyDropdownItem>
52
- <TinyDropdownItem :item-data="{ command: 'del' }" divided>
53
- <IconLucideTrash2 style="width: 14px; height: 14px; margin-right: 6px" />
54
- 删除
55
- </TinyDropdownItem>
56
- </TinyDropdownMenu>
57
- </template>
58
- </TinyDropdown>
59
- </template>
60
- </TinyGridColumn>
61
- </TinyGrid>
22
+ <t-table :data="$Data.tableData" :columns="$Data.columns" header-cell-class-name="custom-table-cell-class" size="small" height="100%" row-key="id" bordered>
23
+ <template #state="{ row }">
24
+ <t-tag v-if="row.state === 1" theme="success">正常</t-tag>
25
+ <t-tag v-else-if="row.state === 2" theme="warning">禁用</t-tag>
26
+ <t-tag v-else theme="danger">已删除</t-tag>
27
+ </template>
28
+ <template #operation="{ row }">
29
+ <t-dropdown trigger="click" min-column-width="120" @click="(data) => $Method.onAction(data.value, row)">
30
+ <t-button variant="text" size="small">操作</t-button>
31
+ <t-dropdown-menu slot="dropdown">
32
+ <t-dropdown-item value="upd">
33
+ <IconLucidePencil />
34
+ 编辑
35
+ </t-dropdown-item>
36
+ <t-dropdown-item value="menu">
37
+ <IconLucideSettings />
38
+ 菜单权限
39
+ </t-dropdown-item>
40
+ <t-dropdown-item value="api">
41
+ <IconLucideCode />
42
+ 接口权限
43
+ </t-dropdown-item>
44
+ <t-dropdown-item value="del" :divider="true">
45
+ <IconLucideTrash2 style="width: 14px; height: 14px; margin-right: 6px" />
46
+ 删除
47
+ </t-dropdown-item>
48
+ </t-dropdown-menu>
49
+ </t-dropdown>
50
+ </template>
51
+ </t-table>
62
52
  </div>
63
53
 
64
54
  <div class="main-page">
65
- <TinyPager :current-page="$Data.pagerConfig.currentPage" :page-size="$Data.pagerConfig.pageSize" :total="$Data.pagerConfig.total" @current-change="$Method.onPageChange" @size-change="$Method.handleSizeChange" />
55
+ <t-pagination :current-page="$Data.pagerConfig.currentPage" :page-size="$Data.pagerConfig.pageSize" :total="$Data.pagerConfig.total" @current-change="$Method.onPageChange" @size-change="$Method.handleSizeChange" />
66
56
  </div>
67
57
 
68
58
  <!-- 编辑对话框组件 -->
@@ -77,21 +67,6 @@
77
67
  </template>
78
68
 
79
69
  <script setup>
80
- import TinyButton from '@opentiny/vue-button';
81
- import TinyGrid from '@opentiny/vue-grid';
82
- import TinyGridColumn from '@opentiny/vue-grid-column';
83
- import TinyTag from '@opentiny/vue-tag';
84
- import TinyDropdown from '@opentiny/vue-dropdown';
85
- import TinyDropdownMenu from '@opentiny/vue-dropdown-menu';
86
- import TinyDropdownItem from '@opentiny/vue-dropdown-item';
87
- import TinyPager from '@opentiny/vue-pager';
88
- import Modal from '@opentiny/vue-modal';
89
- import IconLucidePlus from '~icons/lucide/plus';
90
- import IconLucideRotateCw from '~icons/lucide/rotate-cw';
91
- import IconLucidePencil from '~icons/lucide/pencil';
92
- import IconLucideSettings from '~icons/lucide/settings';
93
- import IconLucideCode from '~icons/lucide/code';
94
- import IconLucideTrash2 from '~icons/lucide/trash-2';
95
70
  import EditDialog from './components/edit.vue';
96
71
  import MenuDialog from './components/menu.vue';
97
72
  import ApiDialog from './components/api.vue';
@@ -100,6 +75,15 @@ import { $Http } from '@/plugins/http';
100
75
  // 响应式数据
101
76
  const $Data = $ref({
102
77
  tableData: [],
78
+ columns: [
79
+ { colKey: 'index', title: '序号', width: 100, align: 'center' },
80
+ { colKey: 'name', title: '角色名称', width: 150 },
81
+ { colKey: 'code', title: '角色代码', width: 150 },
82
+ { colKey: 'description', title: '描述', minWidth: 150, ellipsis: true },
83
+ { colKey: 'sort', title: '排序', width: 80, align: 'center' },
84
+ { colKey: 'state', title: '状态', width: 100, align: 'center' },
85
+ { colKey: 'operation', title: '操作', width: 120, align: 'center', fixed: 'right' }
86
+ ],
103
87
  pagerConfig: {
104
88
  currentPage: 1,
105
89
  pageSize: 30,
@@ -130,7 +114,7 @@ const $Method = {
130
114
  $Data.pagerConfig.total = res.data.total || 0;
131
115
  } catch (error) {
132
116
  console.error('加载角色列表失败:', error);
133
- Modal.message({
117
+ MessagePlugin.info({
134
118
  message: '加载数据失败',
135
119
  status: 'error'
136
120
  });
@@ -139,7 +123,7 @@ const $Method = {
139
123
 
140
124
  // 删除角色
141
125
  async apiRoleDel(row) {
142
- Modal.confirm({
126
+ DialogPlugin.confirm({
143
127
  header: '确认删除',
144
128
  body: `确定要删除角色"${row.name}" 吗?`,
145
129
  status: 'warning'
@@ -147,14 +131,14 @@ const $Method = {
147
131
  try {
148
132
  const res = await $Http('/addon/admin/role/del', { id: row.id });
149
133
  if (res.code === 0) {
150
- Modal.message({ message: '删除成功', status: 'success' });
134
+ MessagePlugin.info({ message: '删除成功', status: 'success' });
151
135
  $Method.apiRoleList();
152
136
  } else {
153
- Modal.message({ message: res.msg || '删除失败', status: 'error' });
137
+ MessagePlugin.info({ message: res.msg || '删除失败', status: 'error' });
154
138
  }
155
139
  } catch (error) {
156
140
  console.error('删除失败:', error);
157
- Modal.message({ message: '删除失败', status: 'error' });
141
+ MessagePlugin.info({ message: '删除失败', status: 'error' });
158
142
  }
159
143
  });
160
144
  },
@@ -1,4 +1,4 @@
1
- <template>
1
+ <template>
2
2
  <div class="user-manage">
3
3
  <!-- 上:过滤和操作栏 -->
4
4
  <div class="toolbar">
@@ -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
- <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>
37
+ <t-tag v-if="row.state === 1" type="success">正常</t-tag>
38
+ <t-tag v-else-if="row.state === 2" type="warning">禁用</t-tag>
39
+ <t-tag v-else type="danger">已删除</t-tag>
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
- <TinyTag type="primary">{{ $Data.currentUser.username }}</TinyTag>
66
+ <t-tag type="primary">{{ $Data.currentUser.username }}</t-tag>
67
67
  <span class="user-email">{{ $Data.currentUser.email }}</span>
68
68
  </div>
69
69
  <t-divider />
@@ -74,11 +74,6 @@
74
74
  </template>
75
75
 
76
76
  <script setup>
77
- import TinyTag from '@opentiny/vue-tag';
78
- import Modal from '@opentiny/vue-modal';
79
- import IconLucidePlus from '~icons/lucide/plus';
80
- import IconLucideSearch from '~icons/lucide/search';
81
- import IconLucideRotateCw from '~icons/lucide/rotate-cw';
82
77
  import { $Http } from '@/plugins/http';
83
78
 
84
79
  // 响应式数据