Commit 6aca1fc46e0a8e32f86d42d7c5ab371ed2fd0092
1 parent
cc1ffdd9
fix: DEFECT-1310 修复脚本管理无更新脚本状态权限时状态不可见
Showing
1 changed file
with
191 additions
and
182 deletions
| 1 | -<template> | |
| 2 | - <div> | |
| 3 | - <BasicTable :clickToRowSelect="false" @register="registerTable" :searchInfo="searchInfo"> | |
| 4 | - <template #toolbar> | |
| 5 | - <Authority :value="PermissionConvertScriptEnum.PERMISSION_POST"> | |
| 6 | - <a-button | |
| 7 | - type="primary" | |
| 8 | - @click="handleBusinessModal(BusinessConvertScriptTextEnum.BUSINESS_ADD_TEXT, null)" | |
| 9 | - > | |
| 10 | - {{ BusinessConvertScriptTextEnum.BUSINESS_ADD_TEXT }} | |
| 11 | - </a-button> | |
| 12 | - </Authority> | |
| 13 | - <Authority :value="PermissionConvertScriptEnum.PERMISSION_DELETE"> | |
| 14 | - <Popconfirm | |
| 15 | - title="您确定要批量删除数据" | |
| 16 | - ok-text="确定" | |
| 17 | - cancel-text="取消" | |
| 18 | - @confirm="handleDeleteOrBatchDelete(null)" | |
| 19 | - > | |
| 20 | - <a-button type="primary" color="error" :disabled="hasBatchDelete"> | |
| 21 | - {{ BusinessConvertScriptTextEnum.BUSINESS_DELETE_TEXT }} | |
| 22 | - </a-button> | |
| 23 | - </Popconfirm> | |
| 24 | - </Authority> | |
| 25 | - </template> | |
| 26 | - <template #convertJs="{ record }"> | |
| 27 | - <a-button | |
| 28 | - type="text" | |
| 29 | - @click="handleBusinessModal(BusinessConvertScriptTextEnum.BUSINESS_VIEW_TEXT, record)" | |
| 30 | - > | |
| 31 | - <span style="color: #377dff">{{ | |
| 32 | - BusinessConvertScriptTextEnum.BUSINESS_VIEW_TEXT.slice(0, 2) | |
| 33 | - }}</span> | |
| 34 | - </a-button> | |
| 35 | - </template> | |
| 36 | - <template #action="{ record }"> | |
| 37 | - <TableAction | |
| 38 | - :actions="[ | |
| 39 | - { | |
| 40 | - label: BusinessConvertScriptTextEnum.BUSINESS_TEST_TEXT.slice(0, 2), | |
| 41 | - icon: 'ant-design:font-size-outlined', | |
| 42 | - auth: PermissionConvertScriptEnum.PERMISSION_TEST, | |
| 43 | - onClick: handleBusinessModal.bind( | |
| 44 | - null, | |
| 45 | - BusinessConvertScriptTextEnum.BUSINESS_TEST_TEXT, | |
| 46 | - record | |
| 47 | - ), | |
| 48 | - }, | |
| 49 | - { | |
| 50 | - label: BusinessConvertScriptTextEnum.BUSINESS_EDIT_TEXT.slice(0, 2), | |
| 51 | - icon: 'clarity:note-edit-line', | |
| 52 | - auth: PermissionConvertScriptEnum.PERMISSION_UPDATE, | |
| 53 | - onClick: handleBusinessModal.bind( | |
| 54 | - null, | |
| 55 | - BusinessConvertScriptTextEnum.BUSINESS_EDIT_TEXT, | |
| 56 | - record | |
| 57 | - ), | |
| 58 | - ifShow: record.status == 0, | |
| 59 | - }, | |
| 60 | - { | |
| 61 | - label: BusinessConvertScriptTextEnum.BUSINESS_DELETE_TEXT.slice(-2), | |
| 62 | - icon: 'ant-design:delete-outlined', | |
| 63 | - auth: PermissionConvertScriptEnum.PERMISSION_DELETE, | |
| 64 | - color: 'error', | |
| 65 | - ifShow: record.status == 0, | |
| 66 | - popConfirm: { | |
| 67 | - title: '是否确认删除', | |
| 68 | - confirm: handleDeleteOrBatchDelete.bind(null, record), | |
| 69 | - }, | |
| 70 | - }, | |
| 71 | - ]" | |
| 72 | - /> | |
| 73 | - </template> | |
| 74 | - <template #status="{ record }"> | |
| 75 | - <Authority :value="PermissionConvertScriptEnum.PERMISSION_UPDATE_STATUS"> | |
| 76 | - <Switch | |
| 77 | - :checked="record.status === 1" | |
| 78 | - :loading="record.pendingStatus" | |
| 79 | - checkedChildren="启用" | |
| 80 | - unCheckedChildren="禁用" | |
| 81 | - @change="(checked:boolean)=>statusChange(checked,record)" | |
| 82 | - /> | |
| 83 | - </Authority> | |
| 84 | - </template> | |
| 85 | - </BasicTable> | |
| 86 | - <ConverScriptModal @register="registerModal" @success="handleSuccess" /> | |
| 87 | - </div> | |
| 88 | -</template> | |
| 89 | - | |
| 90 | -<script lang="ts" setup name="index"> | |
| 91 | - import { reactive, nextTick, unref } from 'vue'; | |
| 92 | - import { BasicTable, useTable, TableAction } from '/@/components/Table'; | |
| 93 | - import { Authority } from '/@/components/Authority'; | |
| 94 | - import { useModal } from '/@/components/Modal'; | |
| 95 | - import { useBatchDelete } from '/@/hooks/web/useBatchDelete'; | |
| 96 | - import { Switch, Popconfirm } from 'ant-design-vue'; | |
| 97 | - import { useMessage } from '/@/hooks/web/useMessage'; | |
| 98 | - import { | |
| 99 | - ScriptPage, | |
| 100 | - deleteScriptManage, | |
| 101 | - scriptPagePutApi, | |
| 102 | - } from '/@/api/scriptmanage/scriptManager'; | |
| 103 | - import { | |
| 104 | - PermissionConvertScriptEnum, | |
| 105 | - searchFormSchema, | |
| 106 | - defaultTableAttribtes, | |
| 107 | - BusinessConvertScriptTextEnum, | |
| 108 | - } from './config'; | |
| 109 | - import { ConverScriptModal } from './components'; | |
| 110 | - | |
| 111 | - const props = defineProps<{ searchInfo: Recordable }>(); | |
| 112 | - | |
| 113 | - const searchInfo = reactive<Recordable>({}); | |
| 114 | - | |
| 115 | - const [registerTable, { reload, setProps, setSelectedRowKeys }] = useTable({ | |
| 116 | - api: ScriptPage, | |
| 117 | - ...defaultTableAttribtes, | |
| 118 | - beforeFetch: (params: Recordable) => { | |
| 119 | - return { ...unref(props.searchInfo), ...params }; | |
| 120 | - }, | |
| 121 | - formConfig: { | |
| 122 | - labelWidth: 120, | |
| 123 | - schemas: searchFormSchema, | |
| 124 | - fieldMapToTime: [['sendTime', ['startTime', 'endTime'], 'x']], | |
| 125 | - }, | |
| 126 | - }); | |
| 127 | - | |
| 128 | - const handleSuccess = () => { | |
| 129 | - reload(); | |
| 130 | - }; | |
| 131 | - | |
| 132 | - const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions, resetSelectedRowKeys } = | |
| 133 | - useBatchDelete(deleteScriptManage, handleSuccess, setProps) as any; | |
| 134 | - selectionOptions.rowSelection.getCheckboxProps = (record: Recordable) => { | |
| 135 | - if (record.status === 1) return { disabled: true }; | |
| 136 | - else return { disabled: false }; | |
| 137 | - }; | |
| 138 | - | |
| 139 | - nextTick(() => { | |
| 140 | - setProps(selectionOptions); | |
| 141 | - }); | |
| 142 | - | |
| 143 | - const [registerModal, { openModal }] = useModal(); | |
| 144 | - | |
| 145 | - // 业务弹窗 | |
| 146 | - const handleBusinessModal = (text, record: Recordable | null) => { | |
| 147 | - const modalParams = { | |
| 148 | - text, | |
| 149 | - record, | |
| 150 | - }; | |
| 151 | - openModal(true, modalParams); | |
| 152 | - }; | |
| 153 | - | |
| 154 | - const setPropsLoading = (loading) => { | |
| 155 | - setProps({ | |
| 156 | - loading, | |
| 157 | - }); | |
| 158 | - setSelectedRowKeys([]); | |
| 159 | - resetSelectedRowKeys(); | |
| 160 | - }; | |
| 161 | - | |
| 162 | - const statusChange = async (checked, record) => { | |
| 163 | - setPropsLoading(true); | |
| 164 | - const newStatus = checked ? 1 : 0; | |
| 165 | - const { createMessage } = useMessage(); | |
| 166 | - try { | |
| 167 | - await scriptPagePutApi(record.id, newStatus); | |
| 168 | - if (newStatus) | |
| 169 | - return createMessage.success(BusinessConvertScriptTextEnum.BUSINESS_ENABLE_SUCCESS); | |
| 170 | - else return createMessage.success(BusinessConvertScriptTextEnum.BUSINESS_DISABLE_SUCCESS); | |
| 171 | - } finally { | |
| 172 | - setPropsLoading(false); | |
| 173 | - reload(); | |
| 174 | - } | |
| 175 | - }; | |
| 176 | - | |
| 177 | - defineExpose({ | |
| 178 | - reload: () => { | |
| 179 | - reload(); | |
| 180 | - }, | |
| 181 | - }); | |
| 182 | -</script> | |
| 1 | +<template> | |
| 2 | + <div> | |
| 3 | + <BasicTable :clickToRowSelect="false" @register="registerTable" :searchInfo="searchInfo"> | |
| 4 | + <template #toolbar> | |
| 5 | + <Authority :value="PermissionConvertScriptEnum.PERMISSION_POST"> | |
| 6 | + <a-button | |
| 7 | + type="primary" | |
| 8 | + @click="handleBusinessModal(BusinessConvertScriptTextEnum.BUSINESS_ADD_TEXT, null)" | |
| 9 | + > | |
| 10 | + {{ BusinessConvertScriptTextEnum.BUSINESS_ADD_TEXT }} | |
| 11 | + </a-button> | |
| 12 | + </Authority> | |
| 13 | + <Authority :value="PermissionConvertScriptEnum.PERMISSION_DELETE"> | |
| 14 | + <Popconfirm | |
| 15 | + title="您确定要批量删除数据" | |
| 16 | + ok-text="确定" | |
| 17 | + cancel-text="取消" | |
| 18 | + @confirm="handleDeleteOrBatchDelete(null)" | |
| 19 | + > | |
| 20 | + <a-button type="primary" color="error" :disabled="hasBatchDelete"> | |
| 21 | + {{ BusinessConvertScriptTextEnum.BUSINESS_DELETE_TEXT }} | |
| 22 | + </a-button> | |
| 23 | + </Popconfirm> | |
| 24 | + </Authority> | |
| 25 | + </template> | |
| 26 | + <template #convertJs="{ record }"> | |
| 27 | + <a-button | |
| 28 | + type="text" | |
| 29 | + @click="handleBusinessModal(BusinessConvertScriptTextEnum.BUSINESS_VIEW_TEXT, record)" | |
| 30 | + > | |
| 31 | + <span style="color: #377dff">{{ | |
| 32 | + BusinessConvertScriptTextEnum.BUSINESS_VIEW_TEXT.slice(0, 2) | |
| 33 | + }}</span> | |
| 34 | + </a-button> | |
| 35 | + </template> | |
| 36 | + <template #action="{ record }"> | |
| 37 | + <TableAction | |
| 38 | + :actions="[ | |
| 39 | + { | |
| 40 | + label: BusinessConvertScriptTextEnum.BUSINESS_TEST_TEXT.slice(0, 2), | |
| 41 | + icon: 'ant-design:font-size-outlined', | |
| 42 | + auth: PermissionConvertScriptEnum.PERMISSION_TEST, | |
| 43 | + onClick: handleBusinessModal.bind( | |
| 44 | + null, | |
| 45 | + BusinessConvertScriptTextEnum.BUSINESS_TEST_TEXT, | |
| 46 | + record | |
| 47 | + ), | |
| 48 | + }, | |
| 49 | + { | |
| 50 | + label: BusinessConvertScriptTextEnum.BUSINESS_EDIT_TEXT.slice(0, 2), | |
| 51 | + icon: 'clarity:note-edit-line', | |
| 52 | + auth: PermissionConvertScriptEnum.PERMISSION_UPDATE, | |
| 53 | + onClick: handleBusinessModal.bind( | |
| 54 | + null, | |
| 55 | + BusinessConvertScriptTextEnum.BUSINESS_EDIT_TEXT, | |
| 56 | + record | |
| 57 | + ), | |
| 58 | + ifShow: record.status == 0, | |
| 59 | + }, | |
| 60 | + { | |
| 61 | + label: BusinessConvertScriptTextEnum.BUSINESS_DELETE_TEXT.slice(-2), | |
| 62 | + icon: 'ant-design:delete-outlined', | |
| 63 | + auth: PermissionConvertScriptEnum.PERMISSION_DELETE, | |
| 64 | + color: 'error', | |
| 65 | + ifShow: record.status == 0, | |
| 66 | + popConfirm: { | |
| 67 | + title: '是否确认删除', | |
| 68 | + confirm: handleDeleteOrBatchDelete.bind(null, record), | |
| 69 | + }, | |
| 70 | + }, | |
| 71 | + ]" | |
| 72 | + /> | |
| 73 | + </template> | |
| 74 | + <template #status="{ record }"> | |
| 75 | + <Authority :value="PermissionConvertScriptEnum.PERMISSION_UPDATE_STATUS"> | |
| 76 | + <Switch | |
| 77 | + :checked="record.status === 1" | |
| 78 | + :loading="record.pendingStatus" | |
| 79 | + checkedChildren="启用" | |
| 80 | + unCheckedChildren="禁用" | |
| 81 | + @change="(checked:boolean)=>statusChange(checked,record)" | |
| 82 | + /> | |
| 83 | + </Authority> | |
| 84 | + <Tag | |
| 85 | + v-if="!hasPermission(PermissionConvertScriptEnum.PERMISSION_UPDATE_STATUS)" | |
| 86 | + :color="record.status ? 'green' : 'red'" | |
| 87 | + > | |
| 88 | + {{ record.status ? '启用' : '禁用' }} | |
| 89 | + </Tag> | |
| 90 | + </template> | |
| 91 | + </BasicTable> | |
| 92 | + <ConverScriptModal @register="registerModal" @success="handleSuccess" /> | |
| 93 | + </div> | |
| 94 | +</template> | |
| 95 | + | |
| 96 | +<script lang="ts" setup name="index"> | |
| 97 | + import { reactive, nextTick, unref } from 'vue'; | |
| 98 | + import { BasicTable, useTable, TableAction } from '/@/components/Table'; | |
| 99 | + import { Authority } from '/@/components/Authority'; | |
| 100 | + import { useModal } from '/@/components/Modal'; | |
| 101 | + import { useBatchDelete } from '/@/hooks/web/useBatchDelete'; | |
| 102 | + import { Switch, Popconfirm, Tag } from 'ant-design-vue'; | |
| 103 | + import { useMessage } from '/@/hooks/web/useMessage'; | |
| 104 | + import { | |
| 105 | + ScriptPage, | |
| 106 | + deleteScriptManage, | |
| 107 | + scriptPagePutApi, | |
| 108 | + } from '/@/api/scriptmanage/scriptManager'; | |
| 109 | + import { | |
| 110 | + PermissionConvertScriptEnum, | |
| 111 | + searchFormSchema, | |
| 112 | + defaultTableAttribtes, | |
| 113 | + BusinessConvertScriptTextEnum, | |
| 114 | + } from './config'; | |
| 115 | + import { ConverScriptModal } from './components'; | |
| 116 | + import { usePermission } from '/@/hooks/web/usePermission'; | |
| 117 | + | |
| 118 | + const props = defineProps<{ searchInfo: Recordable }>(); | |
| 119 | + | |
| 120 | + const searchInfo = reactive<Recordable>({}); | |
| 121 | + | |
| 122 | + const { hasPermission } = usePermission(); | |
| 123 | + | |
| 124 | + const [registerTable, { reload, setProps, setSelectedRowKeys }] = useTable({ | |
| 125 | + api: ScriptPage, | |
| 126 | + ...defaultTableAttribtes, | |
| 127 | + beforeFetch: (params: Recordable) => { | |
| 128 | + return { ...unref(props.searchInfo), ...params }; | |
| 129 | + }, | |
| 130 | + formConfig: { | |
| 131 | + labelWidth: 120, | |
| 132 | + schemas: searchFormSchema, | |
| 133 | + fieldMapToTime: [['sendTime', ['startTime', 'endTime'], 'x']], | |
| 134 | + }, | |
| 135 | + }); | |
| 136 | + | |
| 137 | + const handleSuccess = () => { | |
| 138 | + reload(); | |
| 139 | + }; | |
| 140 | + | |
| 141 | + const { hasBatchDelete, handleDeleteOrBatchDelete, selectionOptions, resetSelectedRowKeys } = | |
| 142 | + useBatchDelete(deleteScriptManage, handleSuccess, setProps) as any; | |
| 143 | + selectionOptions.rowSelection.getCheckboxProps = (record: Recordable) => { | |
| 144 | + if (record.status === 1) return { disabled: true }; | |
| 145 | + else return { disabled: false }; | |
| 146 | + }; | |
| 147 | + | |
| 148 | + nextTick(() => { | |
| 149 | + setProps(selectionOptions); | |
| 150 | + }); | |
| 151 | + | |
| 152 | + const [registerModal, { openModal }] = useModal(); | |
| 153 | + | |
| 154 | + // 业务弹窗 | |
| 155 | + const handleBusinessModal = (text, record: Recordable | null) => { | |
| 156 | + const modalParams = { | |
| 157 | + text, | |
| 158 | + record, | |
| 159 | + }; | |
| 160 | + openModal(true, modalParams); | |
| 161 | + }; | |
| 162 | + | |
| 163 | + const setPropsLoading = (loading) => { | |
| 164 | + setProps({ | |
| 165 | + loading, | |
| 166 | + }); | |
| 167 | + setSelectedRowKeys([]); | |
| 168 | + resetSelectedRowKeys(); | |
| 169 | + }; | |
| 170 | + | |
| 171 | + const statusChange = async (checked, record) => { | |
| 172 | + setPropsLoading(true); | |
| 173 | + const newStatus = checked ? 1 : 0; | |
| 174 | + const { createMessage } = useMessage(); | |
| 175 | + try { | |
| 176 | + await scriptPagePutApi(record.id, newStatus); | |
| 177 | + if (newStatus) | |
| 178 | + return createMessage.success(BusinessConvertScriptTextEnum.BUSINESS_ENABLE_SUCCESS); | |
| 179 | + else return createMessage.success(BusinessConvertScriptTextEnum.BUSINESS_DISABLE_SUCCESS); | |
| 180 | + } finally { | |
| 181 | + setPropsLoading(false); | |
| 182 | + reload(); | |
| 183 | + } | |
| 184 | + }; | |
| 185 | + | |
| 186 | + defineExpose({ | |
| 187 | + reload: () => { | |
| 188 | + reload(); | |
| 189 | + }, | |
| 190 | + }); | |
| 191 | +</script> | ... | ... |