提交 d30bf39a authored 作者: lhh's avatar lhh

update

上级 2fd8592d
...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue' ...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue'
import { getMaterialList, deleteMaterial } from '@/api/base' import { getMaterialList, deleteMaterial } from '@/api/base'
import type { MaterialProp } from '@/types' import type { MaterialProp } from '@/types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue')) const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue'))
...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) { ...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) {
<template #header-buttons> <template #header-buttons>
<el-space> <el-space>
<el-button <el-button
v-if="!userStore.status.material_status"
type="primary" type="primary"
:icon="Plus" :icon="Plus"
@click="handleAdd" @click="handleAdd"
...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) { ...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) {
:data="currentRow" :data="currentRow"
@update="handleRefresh()" @update="handleRefresh()"
v-if="updateVisible" v-if="updateVisible"
v-model="updateVisible"></UpdateMaterialDialog> v-model="updateVisible"
></UpdateMaterialDialog>
</AppCard> </AppCard>
</template> </template>
...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue' ...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue'
import { getMaterialList, deleteMaterial } from '@/api/base' import { getMaterialList, deleteMaterial } from '@/api/base'
import type { MaterialProp } from '@/types' import type { MaterialProp } from '@/types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue')) const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue'))
...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) { ...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) {
<template #header-buttons> <template #header-buttons>
<el-space> <el-space>
<el-button <el-button
v-if="!userStore.status.material_status"
type="primary" type="primary"
:icon="Plus" :icon="Plus"
@click="handleAdd" @click="handleAdd"
...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) { ...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) {
:data="currentRow" :data="currentRow"
@update="handleRefresh()" @update="handleRefresh()"
v-if="updateVisible" v-if="updateVisible"
v-model="updateVisible"></UpdateMaterialDialog> v-model="updateVisible"
></UpdateMaterialDialog>
</AppCard> </AppCard>
</template> </template>
...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue' ...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue'
import { getMaterialList, deleteMaterial } from '@/api/base' import { getMaterialList, deleteMaterial } from '@/api/base'
import type { MaterialProp } from '@/types' import type { MaterialProp } from '@/types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue')) const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue'))
...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) { ...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) {
<template #header-buttons> <template #header-buttons>
<el-space> <el-space>
<el-button <el-button
v-if="!userStore.status.material_status"
type="primary" type="primary"
:icon="Plus" :icon="Plus"
@click="handleAdd" @click="handleAdd"
...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) { ...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) {
:data="currentRow" :data="currentRow"
@update="handleRefresh()" @update="handleRefresh()"
v-if="updateVisible" v-if="updateVisible"
v-model="updateVisible"></UpdateMaterialDialog> v-model="updateVisible"
></UpdateMaterialDialog>
</AppCard> </AppCard>
</template> </template>
...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue' ...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue'
import { getMaterialList, deleteMaterial } from '@/api/base' import { getMaterialList, deleteMaterial } from '@/api/base'
import type { MaterialProp } from '@/types' import type { MaterialProp } from '@/types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue')) const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue'))
...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) { ...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) {
<template #header-buttons> <template #header-buttons>
<el-space> <el-space>
<el-button <el-button
v-if="!userStore.status.material_status"
type="primary" type="primary"
:icon="Plus" :icon="Plus"
@click="handleAdd" @click="handleAdd"
......
...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue' ...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue'
import { getMaterialList, deleteMaterial } from '@/api/base' import { getMaterialList, deleteMaterial } from '@/api/base'
import type { MaterialProp } from '@/types' import type { MaterialProp } from '@/types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue')) const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue'))
...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) { ...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) {
<template #header-buttons> <template #header-buttons>
<el-space> <el-space>
<el-button <el-button
v-if="!userStore.status.material_status"
type="primary" type="primary"
:icon="Plus" :icon="Plus"
@click="handleAdd" @click="handleAdd"
...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) { ...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) {
:data="currentRow" :data="currentRow"
@update="handleRefresh()" @update="handleRefresh()"
v-if="updateVisible" v-if="updateVisible"
v-model="updateVisible"></UpdateMaterialDialog> v-model="updateVisible"
></UpdateMaterialDialog>
</AppCard> </AppCard>
</template> </template>
...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue' ...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue'
import { getMaterialList, deleteMaterial } from '@/api/base' import { getMaterialList, deleteMaterial } from '@/api/base'
import type { MaterialProp } from '@/types' import type { MaterialProp } from '@/types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue')) const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue'))
...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) { ...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) {
<template #header-buttons> <template #header-buttons>
<el-space> <el-space>
<el-button <el-button
v-if="!userStore.status.material_status"
type="primary" type="primary"
:icon="Plus" :icon="Plus"
@click="handleAdd" @click="handleAdd"
...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) { ...@@ -151,6 +155,7 @@ const deleteMembers = function (ids: string) {
:data="currentRow" :data="currentRow"
@update="handleRefresh()" @update="handleRefresh()"
v-if="updateVisible" v-if="updateVisible"
v-model="updateVisible"></UpdateMaterialDialog> v-model="updateVisible"
></UpdateMaterialDialog>
</AppCard> </AppCard>
</template> </template>
...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue' ...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue'
import { getMaterialList, deleteMaterial } from '@/api/base' import { getMaterialList, deleteMaterial } from '@/api/base'
import type { MaterialProp } from '@/types' import type { MaterialProp } from '@/types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue')) const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue'))
...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) { ...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) {
<template #header-buttons> <template #header-buttons>
<el-space> <el-space>
<el-button <el-button
v-if="!userStore.status.material_status"
type="primary" type="primary"
:icon="Plus" :icon="Plus"
@click="handleAdd" @click="handleAdd"
......
...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue' ...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue'
import { getMaterialList, deleteMaterial } from '@/api/base' import { getMaterialList, deleteMaterial } from '@/api/base'
import type { MaterialProp } from '@/types' import type { MaterialProp } from '@/types'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue')) const UpdateMaterialDialog = defineAsyncComponent(() => import('@/components/base/UpdateMaterialDialog.vue'))
...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) { ...@@ -117,6 +120,7 @@ const deleteMembers = function (ids: string) {
<template #header-buttons> <template #header-buttons>
<el-space> <el-space>
<el-button <el-button
v-if="!userStore.status.material_status"
type="primary" type="primary"
:icon="Plus" :icon="Plus"
@click="handleAdd" @click="handleAdd"
......
...@@ -4,9 +4,6 @@ import { Plus } from '@element-plus/icons-vue' ...@@ -4,9 +4,6 @@ import { Plus } from '@element-plus/icons-vue'
import { ElMessageBox, ElMessage } from 'element-plus' import { ElMessageBox, ElMessage } from 'element-plus'
import AppList from '@/components/base/AppList.vue' import AppList from '@/components/base/AppList.vue'
import { getMetaEvent, getConnectionsList, deleteMetaEvent } from '../api' import { getMetaEvent, getConnectionsList, deleteMetaEvent } from '../api'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const FormDialog = defineAsyncComponent(() => import('../components/FormDialog.vue')) const FormDialog = defineAsyncComponent(() => import('../components/FormDialog.vue'))
const ViewDialog = defineAsyncComponent(() => import('../components/ViewDialog.vue')) const ViewDialog = defineAsyncComponent(() => import('../components/ViewDialog.vue'))
...@@ -119,7 +116,7 @@ const handleField = function (row: EventProp) { ...@@ -119,7 +116,7 @@ const handleField = function (row: EventProp) {
<AppCard> <AppCard>
<AppList v-bind="listOptions" ref="appList"> <AppList v-bind="listOptions" ref="appList">
<template #header-buttons> <template #header-buttons>
<el-space v-if="!userStore.status.tag_status"> <el-space>
<el-button type="primary" :icon="Plus" @click="handleAdd">新建</el-button> <el-button type="primary" :icon="Plus" @click="handleAdd">新建</el-button>
</el-space> </el-space>
</template> </template>
......
...@@ -5,9 +5,6 @@ import { ElMessageBox, ElMessage } from 'element-plus' ...@@ -5,9 +5,6 @@ import { ElMessageBox, ElMessage } from 'element-plus'
import AppList from '@/components/base/AppList.vue' import AppList from '@/components/base/AppList.vue'
import { getMemberMeta, deleteMemberMeta } from '../api' import { getMemberMeta, deleteMemberMeta } from '../api'
import { useMapStore } from '@/stores/map' import { useMapStore } from '@/stores/map'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const store = useMapStore() const store = useMapStore()
...@@ -105,7 +102,7 @@ function handleRemove(row: UserProp) { ...@@ -105,7 +102,7 @@ function handleRemove(row: UserProp) {
<AppCard> <AppCard>
<AppList v-bind="listOptions" ref="appList"> <AppList v-bind="listOptions" ref="appList">
<template #header-buttons> <template #header-buttons>
<el-space v-if="!userStore.status.status"> <el-space>
<el-button type="primary" :icon="Plus" @click="handleAdd">新建</el-button> <el-button type="primary" :icon="Plus" @click="handleAdd">新建</el-button>
</el-space> </el-space>
</template> </template>
......
...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue' ...@@ -4,6 +4,9 @@ import AppList from '@/components/base/AppList.vue'
import { getMemberList, deleteMember, getMemberConnectionsList } from '../api' import { getMemberList, deleteMember, getMemberConnectionsList } from '../api'
import { ElMessage, ElMessageBox, ElLoading } from 'element-plus' import { ElMessage, ElMessageBox, ElLoading } from 'element-plus'
import type { MemberProp, ConnectionsProp } from '../types' import type { MemberProp, ConnectionsProp } from '../types'
import { useUserStore } from '@/stores/user'
const userStore = useUserStore()
const UpdateDialog = defineAsyncComponent(() => import('../components/UpdateDialog.vue')) const UpdateDialog = defineAsyncComponent(() => import('../components/UpdateDialog.vue'))
const UploadEventsDialog = defineAsyncComponent(() => import('../components/UploadEventsDialog.vue')) const UploadEventsDialog = defineAsyncComponent(() => import('../components/UploadEventsDialog.vue'))
...@@ -207,13 +210,22 @@ const downloadMember = function (isAll?: boolean) { ...@@ -207,13 +210,22 @@ const downloadMember = function (isAll?: boolean) {
<template #header-buttons> <template #header-buttons>
<el-row justify="space-between"> <el-row justify="space-between">
<el-space> <el-space>
<el-button type="primary" :icon="Plus" @click="handleAdd" v-permission="'v1-experiment-member-create'">新建</el-button> <el-button
v-if="!userStore.status.status"
type="primary"
:icon="Plus"
@click="handleAdd"
v-permission="'v1-experiment-member-create'"
>新建</el-button
>
<el-dropdown v-permission="'v1-experiment-member-download'"> <el-dropdown v-permission="'v1-experiment-member-download'">
<el-button type="primary" :icon="Download">导出</el-button> <el-button type="primary" :icon="Download">导出</el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item @click="downloadMember(true)">全部用户数据</el-dropdown-item> <el-dropdown-item @click="downloadMember(true)">全部用户数据</el-dropdown-item>
<el-dropdown-item :disabled="!multipleSelection.length" @click="downloadMember(false)">勾选用户数据</el-dropdown-item> <el-dropdown-item :disabled="!multipleSelection.length" @click="downloadMember(false)"
>勾选用户数据</el-dropdown-item
>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
...@@ -226,14 +238,18 @@ const downloadMember = function (isAll?: boolean) { ...@@ -226,14 +238,18 @@ const downloadMember = function (isAll?: boolean) {
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
<el-button type="primary" @click="progressVisible = true" v-permission="'v1-experiment-member-tasks'">数据导入进度</el-button> <el-button type="primary" @click="progressVisible = true" v-permission="'v1-experiment-member-tasks'"
>数据导入进度</el-button
>
<!-- <el-button type="danger" plain :icon="Delete" :disabled="!multipleSelection.length" @click="handleRemoves()" v-permission="'v1-experiment-member-delete'">删除</el-button> --> <!-- <el-button type="danger" plain :icon="Delete" :disabled="!multipleSelection.length" @click="handleRemoves()" v-permission="'v1-experiment-member-delete'">删除</el-button> -->
<el-dropdown v-permission="'v1-experiment-member-delete'"> <el-dropdown v-permission="'v1-experiment-member-delete'">
<el-button type="danger" :icon="Delete">删除</el-button> <el-button type="danger" :icon="Delete">删除</el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item @click="handleRemoves(true)">删除全部用户</el-dropdown-item> <el-dropdown-item @click="handleRemoves(true)">删除全部用户</el-dropdown-item>
<el-dropdown-item :disabled="!multipleSelection.length" @click="handleRemoves(false)">删除勾选用户</el-dropdown-item> <el-dropdown-item :disabled="!multipleSelection.length" @click="handleRemoves(false)"
>删除勾选用户</el-dropdown-item
>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
...@@ -244,8 +260,12 @@ const downloadMember = function (isAll?: boolean) { ...@@ -244,8 +260,12 @@ const downloadMember = function (isAll?: boolean) {
<template #table-x="{ row }"> <template #table-x="{ row }">
<el-button type="primary" plain @click="handleImage(row)">画像</el-button> <el-button type="primary" plain @click="handleImage(row)">画像</el-button>
<el-button type="primary" plain @click="handleView(row)">查看</el-button> <el-button type="primary" plain @click="handleView(row)">查看</el-button>
<el-button type="primary" plain @click="handleEdit(row)" v-permission="'v1-experiment-member-update'">编辑</el-button> <el-button type="primary" plain @click="handleEdit(row)" v-permission="'v1-experiment-member-update'"
<el-button type="primary" plain @click="handleRemove(row)" v-permission="'v1-experiment-member-delete'">删除</el-button> >编辑</el-button
>
<el-button type="primary" plain @click="handleRemove(row)" v-permission="'v1-experiment-member-delete'"
>删除</el-button
>
<el-button type="primary" plain @click="goPage(row)">事件</el-button> <el-button type="primary" plain @click="goPage(row)">事件</el-button>
</template> </template>
</AppList> </AppList>
......
...@@ -5,7 +5,7 @@ import type { DirectiveBinding } from 'vue' ...@@ -5,7 +5,7 @@ import type { DirectiveBinding } from 'vue'
export function checkPermission(value: string | string[]): boolean { export function checkPermission(value: string | string[]): boolean {
const userStore = useUserStore() const userStore = useUserStore()
// true 是学员且使用公共数据(学员不能自己创建数据) false 学员可以自己创建数据 // true 是学员且使用公共数据(学员不能自己创建数据) false 学员可以自己创建数据
// if (!userStore.status) return true if (!userStore.status.status || !userStore.status.group_status || !userStore.status.material_status || !userStore.status.tag_status) return true
const permissions = userStore.permissions const permissions = userStore.permissions
if (Array.isArray(value)) { if (Array.isArray(value)) {
return permissions.some(item => value.includes(item.tag)) return permissions.some(item => value.includes(item.tag))
...@@ -13,7 +13,6 @@ export function checkPermission(value: string | string[]): boolean { ...@@ -13,7 +13,6 @@ export function checkPermission(value: string | string[]): boolean {
return !!permissions.find(item => item.tag === value) return !!permissions.find(item => item.tag === value)
} }
} }
// 权限指令 // 权限指令
export function permissionDirective(el: HTMLElement, binding: DirectiveBinding) { export function permissionDirective(el: HTMLElement, binding: DirectiveBinding) {
const { value } = binding const { value } = binding
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论