Commit ef367005ad5b583222fc9c84b8cdcc13c978c096

Authored by ww
1 parent aff02bc3

perf: 新增按钮权限控制

... ... @@ -5,9 +5,10 @@
5 5 PlayCircleOutlined,
6 6 QuestionCircleOutlined,
7 7 } from '@ant-design/icons-vue';
  8 + import { Authority } from '/@/components/Authority';
8 9 import { TaskRecordType } from '/@/api/task/model';
9 10 import { StateEnum, TaskTargetNameEnum, TaskTypeEnum } from '../../config';
10   - import { TaskTypeNameEnum } from '../../config';
  11 + import { TaskTypeNameEnum, PermissionEnum } from '../../config';
11 12 import AuthDropDown from '/@/components/Widget/AuthDropDown.vue';
12 13 import { useMessage } from '/@/hooks/web/useMessage';
13 14 import { cancelTask, deleteTask, updateState } from '/@/api/task';
... ... @@ -128,13 +129,16 @@
128 129 {
129 130 text: '编辑',
130 131 event: DropMenuEvent.DELETE,
  132 + disabled: !!getRecord.state,
131 133 icon: 'ant-design:edit-outlined',
  134 + auth: PermissionEnum.UPDATE,
132 135 onClick: emit.bind(null, 'edit', getRecord),
133 136 },
134 137 {
135 138 text: '删除',
136 139 event: DropMenuEvent.DELETE,
137 140 icon: 'ant-design:delete-outlined',
  141 + auth: PermissionEnum.DELETE,
138 142 popconfirm: {
139 143 title: '是否确认删除操作?',
140 144 onConfirm: handleDelete.bind(null),
... ... @@ -154,13 +158,15 @@
154 158 >
155 159 {{ getRecord.state === StateEnum.ENABLE ? '已启用' : '未启用' }}
156 160 </span>
157   - <Switch
158   - v-if="!deviceTaskCardMode"
159   - :checked="getRecord.state === StateEnum.ENABLE"
160   - :loading="loading"
161   - size="small"
162   - @click="handleSwitchState"
163   - />
  161 + <Authority :value="PermissionEnum.START_TASK">
  162 + <Switch
  163 + v-if="!deviceTaskCardMode"
  164 + :checked="getRecord.state === StateEnum.ENABLE"
  165 + :loading="loading"
  166 + size="small"
  167 + @click="handleSwitchState"
  168 + />
  169 + </Authority>
164 170 </div>
165 171 <div class="flex gap-2 items-center">
166 172 <div
... ... @@ -194,30 +200,36 @@
194 200 >
195 201 <div class="text-gray-400 text-xs truncate">
196 202 <span class="mr-2">间隔时间重复</span>
197   - <span>{{ `${getLastExecuteTime.value}${getLastExecuteTime.unitName}前` }}</span>
  203 + <span>{{
  204 + getLastExecuteTime.value
  205 + ? `${getLastExecuteTime.value}${getLastExecuteTime.unitName}前`
  206 + : '刚刚'
  207 + }}</span>
198 208 </div>
199 209 </Tooltip>
200 210 </div>
201 211
202   - <section
203   - v-if="deviceTaskCardMode"
204   - class="border-t mt-4 pt-2 text-sm border-gray-100 flex justify-between text-gray-400"
205   - >
206   - <div>
207   - <span>允许该设备</span>
208   - <Tooltip title="设置是否允许当前设备定时执行任务。该选项不影响手动执行任务。">
209   - <QuestionCircleOutlined class="ml-1" />
210   - </Tooltip>
211   - </div>
212   - <div>
213   - <Switch
214   - size="small"
215   - :loading="loading"
216   - :checked="getCancelState"
217   - @click="handleCancelTask"
218   - />
219   - </div>
220   - </section>
  212 + <Authority :value="PermissionEnum.ALLOW">
  213 + <section
  214 + v-if="deviceTaskCardMode"
  215 + class="border-t mt-4 pt-2 text-sm border-gray-100 flex justify-between text-gray-400"
  216 + >
  217 + <div>
  218 + <span>允许该设备</span>
  219 + <Tooltip title="设置是否允许当前设备定时执行任务。该选项不影响手动执行任务。">
  220 + <QuestionCircleOutlined class="ml-1" />
  221 + </Tooltip>
  222 + </div>
  223 + <div>
  224 + <Switch
  225 + size="small"
  226 + :loading="loading"
  227 + :checked="getCancelState"
  228 + @click="handleCancelTask"
  229 + />
  230 + </div>
  231 + </section>
  232 + </Authority>
221 233 </Card>
222 234 </template>
223 235
... ...
1 1 import { FormSchema } from '/@/components/Form';
2 2
  3 +export enum PermissionEnum {
  4 + CREATE = 'api:yt:task_center:add:post',
  5 + UPDATE = 'api:yt:task_center:update:update',
  6 + START_TASK = 'api:yt:task_center:update:state',
  7 + DELETE = 'api:yt:task_center:delete',
  8 + ALLOW = 'api:yt:task_center:cancel:allow',
  9 +}
  10 +
3 11 export enum FormFieldsEnum {
4 12 DEVICE_TYPE = 'targetType',
5 13 TASK_TYPE = 'taskType',
... ... @@ -67,10 +75,6 @@ export const formSchemas: FormSchema[] = [
67 75 },
68 76 ];
69 77
70   -export enum PermissionEnum {
71   - DELETE = 'delete',
72   -}
73   -
74 78 export enum StateEnum {
75 79 CLOSE,
76 80 ENABLE,
... ...
... ... @@ -2,7 +2,7 @@
2 2 import { Button, List, Tooltip } from 'ant-design-vue';
3 3 import { PageWrapper } from '/@/components/Page';
4 4 import { BasicForm, useForm } from '/@/components/Form';
5   - import { formSchemas } from './config';
  5 + import { PermissionEnum, formSchemas } from './config';
6 6 import { TaskCard } from './components/TaskCard';
7 7 import { getTaskCenterList } from '/@/api/task';
8 8 import { ref, unref } from 'vue';
... ... @@ -95,11 +95,12 @@
95 95 class="bg-light-50 flex p-4 justify-between items-center x dark:text-gray-300 dark:bg-dark-900"
96 96 >
97 97 <div class="text-2xl">任务</div>
98   - <Authority>
  98 + <Authority :value="PermissionEnum.CREATE">
99 99 <Button
100 100 type="primary"
101 101 @click="openModal(true, { mode: DataActionModeEnum.CREATE } as ModalParamsType)"
102   - >创建任务
  102 + >
  103 + 创建任务
103 104 </Button>
104 105 </Authority>
105 106 </section>
... ...