Commit ef367005ad5b583222fc9c84b8cdcc13c978c096

Authored by ww
1 parent aff02bc3

perf: 新增按钮权限控制

@@ -5,9 +5,10 @@ @@ -5,9 +5,10 @@
5 PlayCircleOutlined, 5 PlayCircleOutlined,
6 QuestionCircleOutlined, 6 QuestionCircleOutlined,
7 } from '@ant-design/icons-vue'; 7 } from '@ant-design/icons-vue';
  8 + import { Authority } from '/@/components/Authority';
8 import { TaskRecordType } from '/@/api/task/model'; 9 import { TaskRecordType } from '/@/api/task/model';
9 import { StateEnum, TaskTargetNameEnum, TaskTypeEnum } from '../../config'; 10 import { StateEnum, TaskTargetNameEnum, TaskTypeEnum } from '../../config';
10 - import { TaskTypeNameEnum } from '../../config'; 11 + import { TaskTypeNameEnum, PermissionEnum } from '../../config';
11 import AuthDropDown from '/@/components/Widget/AuthDropDown.vue'; 12 import AuthDropDown from '/@/components/Widget/AuthDropDown.vue';
12 import { useMessage } from '/@/hooks/web/useMessage'; 13 import { useMessage } from '/@/hooks/web/useMessage';
13 import { cancelTask, deleteTask, updateState } from '/@/api/task'; 14 import { cancelTask, deleteTask, updateState } from '/@/api/task';
@@ -128,13 +129,16 @@ @@ -128,13 +129,16 @@
128 { 129 {
129 text: '编辑', 130 text: '编辑',
130 event: DropMenuEvent.DELETE, 131 event: DropMenuEvent.DELETE,
  132 + disabled: !!getRecord.state,
131 icon: 'ant-design:edit-outlined', 133 icon: 'ant-design:edit-outlined',
  134 + auth: PermissionEnum.UPDATE,
132 onClick: emit.bind(null, 'edit', getRecord), 135 onClick: emit.bind(null, 'edit', getRecord),
133 }, 136 },
134 { 137 {
135 text: '删除', 138 text: '删除',
136 event: DropMenuEvent.DELETE, 139 event: DropMenuEvent.DELETE,
137 icon: 'ant-design:delete-outlined', 140 icon: 'ant-design:delete-outlined',
  141 + auth: PermissionEnum.DELETE,
138 popconfirm: { 142 popconfirm: {
139 title: '是否确认删除操作?', 143 title: '是否确认删除操作?',
140 onConfirm: handleDelete.bind(null), 144 onConfirm: handleDelete.bind(null),
@@ -154,13 +158,15 @@ @@ -154,13 +158,15 @@
154 > 158 >
155 {{ getRecord.state === StateEnum.ENABLE ? '已启用' : '未启用' }} 159 {{ getRecord.state === StateEnum.ENABLE ? '已启用' : '未启用' }}
156 </span> 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 </div> 170 </div>
165 <div class="flex gap-2 items-center"> 171 <div class="flex gap-2 items-center">
166 <div 172 <div
@@ -194,30 +200,36 @@ @@ -194,30 +200,36 @@
194 > 200 >
195 <div class="text-gray-400 text-xs truncate"> 201 <div class="text-gray-400 text-xs truncate">
196 <span class="mr-2">间隔时间重复</span> 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 </div> 208 </div>
199 </Tooltip> 209 </Tooltip>
200 </div> 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 </Card> 233 </Card>
222 </template> 234 </template>
223 235
1 import { FormSchema } from '/@/components/Form'; 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 export enum FormFieldsEnum { 11 export enum FormFieldsEnum {
4 DEVICE_TYPE = 'targetType', 12 DEVICE_TYPE = 'targetType',
5 TASK_TYPE = 'taskType', 13 TASK_TYPE = 'taskType',
@@ -67,10 +75,6 @@ export const formSchemas: FormSchema[] = [ @@ -67,10 +75,6 @@ export const formSchemas: FormSchema[] = [
67 }, 75 },
68 ]; 76 ];
69 77
70 -export enum PermissionEnum {  
71 - DELETE = 'delete',  
72 -}  
73 -  
74 export enum StateEnum { 78 export enum StateEnum {
75 CLOSE, 79 CLOSE,
76 ENABLE, 80 ENABLE,
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 import { Button, List, Tooltip } from 'ant-design-vue'; 2 import { Button, List, Tooltip } from 'ant-design-vue';
3 import { PageWrapper } from '/@/components/Page'; 3 import { PageWrapper } from '/@/components/Page';
4 import { BasicForm, useForm } from '/@/components/Form'; 4 import { BasicForm, useForm } from '/@/components/Form';
5 - import { formSchemas } from './config'; 5 + import { PermissionEnum, formSchemas } from './config';
6 import { TaskCard } from './components/TaskCard'; 6 import { TaskCard } from './components/TaskCard';
7 import { getTaskCenterList } from '/@/api/task'; 7 import { getTaskCenterList } from '/@/api/task';
8 import { ref, unref } from 'vue'; 8 import { ref, unref } from 'vue';
@@ -95,11 +95,12 @@ @@ -95,11 +95,12 @@
95 class="bg-light-50 flex p-4 justify-between items-center x dark:text-gray-300 dark:bg-dark-900" 95 class="bg-light-50 flex p-4 justify-between items-center x dark:text-gray-300 dark:bg-dark-900"
96 > 96 >
97 <div class="text-2xl">任务</div> 97 <div class="text-2xl">任务</div>
98 - <Authority> 98 + <Authority :value="PermissionEnum.CREATE">
99 <Button 99 <Button
100 type="primary" 100 type="primary"
101 @click="openModal(true, { mode: DataActionModeEnum.CREATE } as ModalParamsType)" 101 @click="openModal(true, { mode: DataActionModeEnum.CREATE } as ModalParamsType)"
102 - >创建任务 102 + >
  103 + 创建任务
103 </Button> 104 </Button>
104 </Authority> 105 </Authority>
105 </section> 106 </section>