From 3aedad63dd01f1fc5154cb520af32edab967d6e0 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周一, 12 5月 2025 09:15:26 +0800
Subject: [PATCH] Merge branch 'master' of http://222.71.245.114:9086/r/HIA24016N_PipeLineDemo
---
PipeLineLems/pipelinelems_web/src/widgets/OrderManagement-main/hooks/use-permission.ts | 179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 179 insertions(+), 0 deletions(-)
diff --git a/PipeLineLems/pipelinelems_web/src/widgets/OrderManagement-main/hooks/use-permission.ts b/PipeLineLems/pipelinelems_web/src/widgets/OrderManagement-main/hooks/use-permission.ts
new file mode 100644
index 0000000..1a0f71d
--- /dev/null
+++ b/PipeLineLems/pipelinelems_web/src/widgets/OrderManagement-main/hooks/use-permission.ts
@@ -0,0 +1,179 @@
+import { reactive, ref, onUnmounted, provide, inject } from 'vue'
+// @ts-ignore
+import sdk from 'sdk'
+import { ElMessage } from 'element-plus'
+import { get, uniqBy } from 'lodash'
+import { _t } from '@/libs/Language/Language'
+const KEY = 'ORDER_MANAGEMENT_PERMISSION'
+const isDev = process.env.NODE_ENV === 'development'
+
+export function usePermission(props: any) {
+ // 鍓嶇椤甸潰鏉冮檺璁剧疆
+ const node = reactive(props.node || {})
+
+ const subs = [
+ {
+ id: 'Order-tabs-management',
+ name: '宸ュ崟绠$悊Tab',
+ },
+ {
+ id: 'Order-tabs-records',
+ name: '宸ュ崟璁板綍Tab',
+ },
+ {
+ id: 'OrderManagement-actions-add',
+ name: '娣诲姞',
+ },
+ {
+ id: 'OrderManagement-actions-update',
+ name: '缂栬緫',
+ },
+ {
+ id: 'OrderManagement-actions-delete',
+ name: '鍒犻櫎',
+ },
+ {
+ id: 'OrderManagement-actions-export',
+ name: '瀵煎嚭',
+ },
+ {
+ id: 'OrderManagement-actions-import',
+ name: '瀵煎叆',
+ },
+ {
+ id: 'OrderManagement-actions-download',
+ name: '涓嬭浇妯℃澘',
+ },
+ {
+ id: 'OrderManagement-actions-deliver',
+ name: '涓嬪彂',
+ },
+ {
+ id: 'OrderManagement-actions-pause',
+ name: '鏆傚仠',
+ },
+ {
+ id: 'OrderManagement-actions-finish',
+ name: '缁撴潫',
+ },
+ {
+ id: 'OrderManagement-actions-sort',
+ name: '鎺掑簭',
+ },
+ {
+ id: 'OrderRecords-actions-export',
+ name: '瀵煎嚭',
+ },
+ ]
+
+ const subsType = subs.map((e) => e.id)
+
+ const allTabs = ['Order-tabs-management', 'Order-tabs-records']
+
+ const permissionCodes = ref<any[]>([])
+
+ const showTabs: any = ref([])
+
+ // @ts-ignore
+ const page = isDev
+ ? {
+ permissions: [],
+ }
+ : window.app.current.project?.current.page
+ const permission = {
+ id: node?.id,
+ name: node?.name,
+ subs,
+ }
+ const children = get(
+ window.app.current.project?.current.page,
+ 'body.children',
+ []
+ )
+ const childrenIds = children.map((item: any) => item.id)
+ page.permissions = uniqBy(page.permissions, 'id').filter((item: any) =>
+ childrenIds.includes(item.id)
+ )
+
+ if (
+ page.permissions.every(
+ (item: typeof permission) => item.id !== permission.id
+ )
+ ) {
+ page.permissions.push(permission)
+ }
+
+ if (childrenIds.includes(permission.id)) {
+ const currentPermission = page.permissions.find(
+ (item: typeof permission) => item.id === permission.id
+ )
+ currentPermission && Object.assign(currentPermission, permission)
+ }
+
+ const initPermission = () => {
+ const userInfo = sdk.userInfo
+
+ // mock data
+ if (isDev) {
+ userInfo.permissions = {
+ all: false,
+ // @ts-ignore
+ widgets: subs.map((item) => item.id),
+ }
+ }
+
+ if (userInfo.permissions.all) {
+ permissionCodes.value = permission.subs.map((item) => item.id)
+ showTabs.value = allTabs
+ } else {
+ permissionCodes.value = userInfo.permissions.widgets
+ permissionCodes.value.forEach((item: any) => {
+ if (allTabs.includes(item)) {
+ showTabs.value.push(item)
+ }
+ })
+ }
+ }
+
+ const curTab: any = ref('OrderManagement')
+ const changeTab = (tab: string) => {
+ curTab.value = tab
+ }
+
+ const isHasPermission = (code: (typeof subsType)[number]) => {
+ if (!permissionCodes.value.includes(code)) {
+ ElMessage.warning(_t('鐢ㄦ埛娌℃湁璇ユ潈闄愶紒'))
+ return false
+ }
+ return true
+ }
+
+ onUnmounted(() => {
+ if (node) {
+ const index = page.permissions.findIndex((f: any) => f.id === node?.id)
+ if (index !== -1) {
+ page.permissions.splice(index, 1)
+ }
+ }
+ })
+
+ return {
+ permissionCodes,
+ showTabs,
+ initPermission,
+ isHasPermission,
+ curTab,
+ changeTab,
+ }
+}
+
+// @ts-ignore
+export function createProvider(props: any): ReturnType<typeof useStore> {
+ let value = usePermission(props)
+ provide(KEY, value)
+ return value
+}
+
+export function createInjector(): ReturnType<typeof usePermission> {
+ return inject(KEY) as ReturnType<typeof usePermission>
+}
--
Gitblit v1.9.3