mirror of
				https://github.com/continew-org/continew-admin-ui.git
				synced 2025-11-04 20:59:23 +08:00 
			
		
		
		
	chore(system/storage): 完善存储管理权限指令
This commit is contained in:
		@@ -4,7 +4,7 @@ import hasRole from './permission/hasRole'
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  install(Vue: App) {
 | 
					  install(Vue: App) {
 | 
				
			||||||
    Vue.directive('hasPerm', hasPerm)
 | 
					    Vue.directive('permission', hasPerm)
 | 
				
			||||||
    Vue.directive('hasRole', hasRole)
 | 
					    Vue.directive('role', hasRole)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,8 @@ import type { DirectiveBinding, Directive } from 'vue'
 | 
				
			|||||||
import { useUserStore } from '@/stores'
 | 
					import { useUserStore } from '@/stores'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @desc v-hasPerm 操作权限处理
 | 
					 * @desc v-permission 操作权限处理
 | 
				
			||||||
 * @desc 使用 v-hasPerm="['home:btn:add']"
 | 
					 * @desc 使用 v-permission="['system:user:add']"
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
function checkPermission(el: HTMLElement, binding: DirectiveBinding) {
 | 
					function checkPermission(el: HTMLElement, binding: DirectiveBinding) {
 | 
				
			||||||
  const userStore = useUserStore()
 | 
					  const userStore = useUserStore()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -112,6 +112,13 @@ const { form, resetForm } = useForm<StorageReq>({
 | 
				
			|||||||
  name: '',
 | 
					  name: '',
 | 
				
			||||||
  code: '',
 | 
					  code: '',
 | 
				
			||||||
  type: 2,
 | 
					  type: 2,
 | 
				
			||||||
 | 
					  accessKey: undefined,
 | 
				
			||||||
 | 
					  secretKey: undefined,
 | 
				
			||||||
 | 
					  endpoint: undefined,
 | 
				
			||||||
 | 
					  bucketName: undefined,
 | 
				
			||||||
 | 
					  domain: undefined,
 | 
				
			||||||
 | 
					  description: undefined,
 | 
				
			||||||
 | 
					  isDefault: false,
 | 
				
			||||||
  sort: 999,
 | 
					  sort: 999,
 | 
				
			||||||
  status: 1
 | 
					  status: 1
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
@@ -2,7 +2,6 @@
 | 
				
			|||||||
  <div class="gi_page">
 | 
					  <div class="gi_page">
 | 
				
			||||||
    <a-card title="存储管理" class="general-card">
 | 
					    <a-card title="存储管理" class="general-card">
 | 
				
			||||||
      <GiTable
 | 
					      <GiTable
 | 
				
			||||||
        ref="tableRef"
 | 
					 | 
				
			||||||
        row-key="id"
 | 
					        row-key="id"
 | 
				
			||||||
        :data="dataList"
 | 
					        :data="dataList"
 | 
				
			||||||
        :columns="columns"
 | 
					        :columns="columns"
 | 
				
			||||||
@@ -27,7 +26,7 @@
 | 
				
			|||||||
          <a-button @click="reset">重置</a-button>
 | 
					          <a-button @click="reset">重置</a-button>
 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
        <template #custom-right>
 | 
					        <template #custom-right>
 | 
				
			||||||
          <a-button type="primary" @click="onAdd">
 | 
					          <a-button v-has-perm="['system:storage:add']" type="primary" @click="onAdd">
 | 
				
			||||||
            <template #icon><icon-plus /></template>
 | 
					            <template #icon><icon-plus /></template>
 | 
				
			||||||
            <span>新增</span>
 | 
					            <span>新增</span>
 | 
				
			||||||
          </a-button>
 | 
					          </a-button>
 | 
				
			||||||
@@ -48,11 +47,9 @@
 | 
				
			|||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
        <template #action="{ record }">
 | 
					        <template #action="{ record }">
 | 
				
			||||||
          <a-space>
 | 
					          <a-space>
 | 
				
			||||||
            <template #split>
 | 
					            <a-link v-permission="['system:storage:update']" @click="onUpdate(record)">修改</a-link>
 | 
				
			||||||
              <a-divider direction="vertical" :margin="0" />
 | 
					 | 
				
			||||||
            </template>
 | 
					 | 
				
			||||||
            <a-link @click="onUpdate(record)">修改</a-link>
 | 
					 | 
				
			||||||
            <a-link
 | 
					            <a-link
 | 
				
			||||||
 | 
					              v-permission="['system:storage:delete']"
 | 
				
			||||||
              status="danger"
 | 
					              status="danger"
 | 
				
			||||||
              :title="record.isDefault ? '默认存储库不能删除' : undefined"
 | 
					              :title="record.isDefault ? '默认存储库不能删除' : undefined"
 | 
				
			||||||
              :disabled="record.disabled"
 | 
					              :disabled="record.disabled"
 | 
				
			||||||
@@ -65,17 +62,18 @@
 | 
				
			|||||||
      </GiTable>
 | 
					      </GiTable>
 | 
				
			||||||
    </a-card>
 | 
					    </a-card>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <AddStorageModal ref="AddStorageModalRef" @save-success="search" />
 | 
					    <StorageAddModal ref="StorageAddModalRef" @save-success="search" />
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
import { listStorage, deleteStorage, type StorageResp } from '@/apis'
 | 
					import { listStorage, deleteStorage, type StorageResp } from '@/apis'
 | 
				
			||||||
 | 
					import StorageAddModal from './StorageAddModal.vue'
 | 
				
			||||||
import type { TableInstance } from '@arco-design/web-vue'
 | 
					import type { TableInstance } from '@arco-design/web-vue'
 | 
				
			||||||
import AddStorageModal from './AddStorageModal.vue'
 | 
					 | 
				
			||||||
import { useTable } from '@/hooks'
 | 
					import { useTable } from '@/hooks'
 | 
				
			||||||
import { useDict } from '@/hooks/app'
 | 
					import { useDict } from '@/hooks/app'
 | 
				
			||||||
import { isMobile } from '@/utils'
 | 
					import { isMobile } from '@/utils'
 | 
				
			||||||
 | 
					import has from '@/utils/has'
 | 
				
			||||||
import { DisEnableStatusList } from '@/constant/common'
 | 
					import { DisEnableStatusList } from '@/constant/common'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
defineOptions({ name: 'Storage' })
 | 
					defineOptions({ name: 'Storage' })
 | 
				
			||||||
@@ -102,7 +100,14 @@ const columns: TableInstance['columns'] = [
 | 
				
			|||||||
  { title: '创建时间', dataIndex: 'createTime', width: 180 },
 | 
					  { title: '创建时间', dataIndex: 'createTime', width: 180 },
 | 
				
			||||||
  { title: '修改人', dataIndex: 'updateUserString', show: false, ellipsis: true, tooltip: true },
 | 
					  { title: '修改人', dataIndex: 'updateUserString', show: false, ellipsis: true, tooltip: true },
 | 
				
			||||||
  { title: '修改时间', dataIndex: 'updateTime', width: 180, show: false },
 | 
					  { title: '修改时间', dataIndex: 'updateTime', width: 180, show: false },
 | 
				
			||||||
  { title: '操作', slotName: 'action', width: 130, align: 'center', fixed: !isMobile() ? 'right' : undefined }
 | 
					  {
 | 
				
			||||||
 | 
					    title: '操作',
 | 
				
			||||||
 | 
					    slotName: 'action',
 | 
				
			||||||
 | 
					    width: 130,
 | 
				
			||||||
 | 
					    show: has.hasPermOr(['system:storage:update', 'system:storage:delete']),
 | 
				
			||||||
 | 
					    align: 'center',
 | 
				
			||||||
 | 
					    fixed: !isMobile() ? 'right' : undefined
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const queryForm = reactive({
 | 
					const queryForm = reactive({
 | 
				
			||||||
@@ -131,15 +136,15 @@ const onDelete = (item: StorageResp) => {
 | 
				
			|||||||
  return handleDelete(() => deleteStorage(item.id), { content: `是否确定删除存储 [${item.name}]?`, showModal: true })
 | 
					  return handleDelete(() => deleteStorage(item.id), { content: `是否确定删除存储 [${item.name}]?`, showModal: true })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const AddStorageModalRef = ref<InstanceType<typeof AddStorageModal>>()
 | 
					const StorageAddModalRef = ref<InstanceType<typeof StorageAddModal>>()
 | 
				
			||||||
// 新增
 | 
					// 新增
 | 
				
			||||||
const onAdd = () => {
 | 
					const onAdd = () => {
 | 
				
			||||||
  AddStorageModalRef.value?.onAdd()
 | 
					  StorageAddModalRef.value?.onAdd()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 修改
 | 
					// 修改
 | 
				
			||||||
const onUpdate = (item: StorageResp) => {
 | 
					const onUpdate = (item: StorageResp) => {
 | 
				
			||||||
  AddStorageModalRef.value?.onUpdate(item.id)
 | 
					  StorageAddModalRef.value?.onUpdate(item.id)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user