From bf9e7c96ffb3b31931a6e467f25eeda68b71ad1a Mon Sep 17 00:00:00 2001 From: lyc Date: Wed, 24 Jul 2024 15:23:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E8=B5=84=E6=BA=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/renderer/src/utils/hasPermission.js | 18 +++++++++++ .../resource/container/resoure-search.vue | 15 +++++---- src/renderer/src/views/resource/index.vue | 4 +-- src/renderer/src/views/resource/store.js | 32 +++++++++++-------- 5 files changed, 49 insertions(+), 21 deletions(-) create mode 100644 src/renderer/src/utils/hasPermission.js diff --git a/package.json b/package.json index 99c4ada..c92e305 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "element-plus": "^2.7.6", "js-cookie": "^3.0.5", "jsencrypt": "^3.3.2", + "lodash": "^4.17.21", "pinia": "^2.1.7", "pinia-plugin-persistedstate": "^3.2.1", "spark-md5": "^3.0.2", diff --git a/src/renderer/src/utils/hasPermission.js b/src/renderer/src/utils/hasPermission.js new file mode 100644 index 0000000..2242209 --- /dev/null +++ b/src/renderer/src/utils/hasPermission.js @@ -0,0 +1,18 @@ + +import useUserStore from '@/store/modules/user' + +import array from 'lodash/array' +export const hasPermission = (value, def = true) => { + // 不传值,默认视为有权限,不做鉴权 + if (!value) { + return def + } + + const allCodeList = useUserStore().roles + // 如果不是数组,直接判断pinia里的权限数组有没有相同的元素即可 + if (!Array.isArray(value)) { + return allCodeList.includes(value) + } + // intersection是lodash提供的一个方法,用于返回一个所有给定数组都存在的元素组成的数组 + return array.intersection(value, allCodeList).length > 0 +} \ No newline at end of file diff --git a/src/renderer/src/views/resource/container/resoure-search.vue b/src/renderer/src/views/resource/container/resoure-search.vue index 11cd9ba..7272c0f 100644 --- a/src/renderer/src/views/resource/container/resoure-search.vue +++ b/src/renderer/src/views/resource/container/resoure-search.vue @@ -8,12 +8,13 @@ }} - + -
@@ -22,7 +23,7 @@ {{ - item.label }} + item.label }}
@@ -58,7 +59,8 @@ const sourceStore = useResoureStore() .query-row { justify-content: space-between; - .row-left{ + + .row-left { align-items: center; } } @@ -70,11 +72,12 @@ const sourceStore = useResoureStore() margin: 0 10px; } - + } } -.el-button.is-round{ + +.el-button.is-round { padding: 3px 15px; font-size: 13px; } diff --git a/src/renderer/src/views/resource/index.vue b/src/renderer/src/views/resource/index.vue index df5d5bf..fad1f68 100644 --- a/src/renderer/src/views/resource/index.vue +++ b/src/renderer/src/views/resource/index.vue @@ -6,7 +6,7 @@
- + 新建资源 @@ -26,6 +26,7 @@ import ResoureSearch from './container/resoure-search.vue' import ResoureList from './container/resoure-list.vue' import uploadDialog from '@/components/upload-dialog/index.vue' import uploaderState from '@/store/modules/uploader' +import { hasPermission } from '@/utils/hasPermission' const sourceStore = useResoureStore() const isDialogOpen = ref(false) @@ -76,7 +77,6 @@ const submitFile = (data) => { const fileCallBack = (res) => { - console.log(res) if (res.code == 200) { sourceStore.handleQuery() } diff --git a/src/renderer/src/views/resource/store.js b/src/renderer/src/views/resource/store.js index fdf918a..3f2342e 100644 --- a/src/renderer/src/views/resource/store.js +++ b/src/renderer/src/views/resource/store.js @@ -2,6 +2,7 @@ import { defineStore } from 'pinia' import { getSmarttalkPage } from '@/api/file/index' import { tabs, resourceType, resourceFormat } from '@/utils/resourceDict' import useUserStore from '@/store/modules/user' +import { hasPermission } from '@/utils/hasPermission' const userStore = useUserStore() @@ -21,10 +22,15 @@ const resourceFormatList = [ ] // 校本资源为学校ID -tabs.forEach(item =>{ - if( item.label == "校本资源"){ - item.value = userStore.user.deptId - } +tabs.forEach((item) => { + if (item.label == '校本资源') { + item.value = userStore.user.deptId + } +}) +tabs.forEach((item, i) => { + if (item.label == '平台资源' && !hasPermission(['platformmanager'])) { + tabs.splice(i, 1) + } }) const structQuery = { @@ -39,14 +45,14 @@ export default defineStore('resource', { resourceFormatList, searchKey: '', - + //节点数据 - nodeData:{}, + nodeData: {}, loading: false, //查询条件 query: { textbookId: '', - fileSource: '平台', + fileSource: tabs[0].value, //资源格式 mp3 ppt ... fileSuffix: -1, // 资源类型 课件 素材 教案 @@ -66,10 +72,11 @@ export default defineStore('resource', { handleQuery() { try { this.loading = true - let data = {...this.query} - if(data.fileSuffix == -1){ + let data = { ...this.query } + if (data.fileSuffix == -1) { data.fileSuffix = '' } + console.log(data, 200) getSmarttalkPage(data).then((res) => { this.result.total = res.total this.result.list = res.rows @@ -86,14 +93,13 @@ export default defineStore('resource', { this.query.fileFlag = val this.handleQuery() }, - changeSuffix(val){ + changeSuffix(val) { this.query.fileSuffix = val this.handleQuery() }, // 关键词搜索 - changeName(){ - console.log(this.query.fileName) + changeName() { this.handleQuery() - }, + } } })