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