Browse Source

节点授权

q_v1
herenshan112 2 weeks ago
parent
commit
5b567abe76
  1. 20
      src/api/taskapi/types.ts
  2. 80
      src/components/formTable/formItemGroup.vue
  3. 0
      src/utils/pinia/stores/lowCode/entry.ts
  4. 2
      src/views/formTable/page/flowAndLog.vue

20
src/api/taskapi/types.ts

@ -0,0 +1,20 @@
//节点赋权
export interface nodePoweInfo {
nodeKey:string;
powerAry:powerAryInfo[];
apiSetup?:apiSetupInfo
}
//节点福泉结构体
export interface powerAryInfo{
id:string;
isEdit:boolean;
isLook:boolean;
name:string;
status?:number
}
//节点福泉补充
export interface apiSetupInfo{
library?:any[];
title?:any[];
}

80
src/components/formTable/formItemGroup.vue

@ -12,6 +12,8 @@ import { constFormBtnEvent,constFormProps } from '@/api/lowCode/utils';
import { useDesignFormStore } from '@/utils/pinia/stores/lowCode/designForm'
import { AnalysisCss,AnalysisInputCss } from '@/api/common/cssInfo'
import { useAttrs,computed, onMounted, nextTick,ref,watch,onBeforeMount} from 'vue'
import { nodePoweInfo,powerAryInfo } from "@/api/taskapi/types";
import { formTableInfo } from '@/utils/pinia/stores/lowCode/entry'
const props = withDefaults(
defineProps<{
@ -539,6 +541,50 @@ const linksIf = (obj: FormList) => {
}
return true;
};
const allNodePwoer = inject('flowNodePower') as any
const currentNodePowerKey = inject('currentNodeKey') as any
//
const curNodePowerAry = () => {
if(currentNodePowerKey && currentNodePowerKey.value && currentNodePowerKey.value != ""){
if(allNodePwoer.value && Array.isArray(allNodePwoer.value) && allNodePwoer.value.length > 0){
let powerAry: any[] = []
allNodePwoer.value.forEach((item:nodePoweInfo) => {
if(item.nodeKey == currentNodePowerKey.value){
powerAry = item.powerAry
}
})
return powerAry
}else{
return []
}
}else{
return []
}
}
/**
@ 作者: 秦东
@ 时间: 2025-11-06 14:03:21
@ 功能: 判断此组件是否可见
*/
const judgeIsShow = (key: string) => {
let myPower = curNodePowerAry() //
if(Array.isArray(myPower) && myPower.length > 0){
let isOk = true
myPower.forEach((item:powerAryInfo) => {
if(key == item.id){
isOk = item.isLook
}
})
return isOk
}else{
return true
}
}
</script>
<template>
@ -551,17 +597,19 @@ const linksIf = (obj: FormList) => {
v-bind="element.control"
:class="[element.config?.className]"
>
<el-tab-pane
v-for="(item, tIndex) in element.columns"
:label="item.label"
:key="tIndex"
>
<FormItemGroup :data="item.list" :tableinfo="tableinfo" :org-and-man-tree="orgAndManTree" data-type="not-nested" />
</el-tab-pane>
<template v-for="(item, tIndex) in element.columns">
<el-tab-pane
:label="item.label"
:key="tIndex"
v-if="judgeIsShow(item.name)"
>
<FormItemGroup :data="item.list" :tableinfo="tableinfo" :org-and-man-tree="orgAndManTree" data-type="not-nested" />
</el-tab-pane>
</template>
</el-tabs>
</template>
<template v-else-if="element.type === 'title'">
<template v-else-if="element.type === 'title' && judgeIsShow(element.name)">
<!--标题-->
<div
class="title"
@ -576,7 +624,7 @@ const linksIf = (obj: FormList) => {
/>
</div>
</template>
<template v-else-if="element.type === 'txt'">
<template v-else-if="element.type === 'txt' && judgeIsShow(element.name)">
<!--文字-->
<div
v-bind="element.control"
@ -585,12 +633,12 @@ const linksIf = (obj: FormList) => {
>
</div>
</template>
<template v-else-if="element.type === 'table'">
<template v-else-if="element.type === 'table' && judgeIsShow(element.name)">
<el-divider v-if="element.item&&element.item.label" content-position="left" >{{element.item.label}}</el-divider>
<!-- <el-text class="tableTitle" v-if="element.item&&element.item.label">{{element.item.label}}</el-text> -->
<TablePage :data="element" :tableinfo="tableinfo" :org-and-man-tree="orgAndManTree" :type="type" @asf-value-changed="asfValueChanged" />
</template>
<template v-else-if="element.type === 'grid'">
<template v-else-if="element.type === 'grid' && judgeIsShow(element.name)">
<el-row class="form-row" :style="type === 15?'padding: 0 0 20px 0;':''" :class="[element.className]">
<el-col
@ -617,7 +665,7 @@ const linksIf = (obj: FormList) => {
</el-col>
</el-row>
</template>
<template v-else-if="element.type === 'card'">
<template v-else-if="element.type === 'card' && judgeIsShow(element.name)">
<el-collapse model-value="1">
<el-collapse-item :title="element.item.label" name="1">
<template #title v-if="element.help">
@ -628,11 +676,11 @@ const linksIf = (obj: FormList) => {
</el-collapse-item>
</el-collapse>
</template>
<template v-else-if="element.type === 'divider'">
<template v-else-if="element.type === 'divider' && judgeIsShow(element.name)">
<!--分割线-->
<el-divider v-bind="element.control">{{ element.item && element.item.label }}</el-divider>
</template>
<template v-else-if="element.type === 'div'">
<template v-else-if="element.type === 'div' && judgeIsShow(element.name)">
<!--div容器-->
<div
class="div-layout "
@ -648,7 +696,7 @@ const linksIf = (obj: FormList) => {
</div>
</template>
<template v-else-if="element.type === 'flex'">
<template v-else-if="element.type === 'flex' && judgeIsShow(element.name)">
<!---->
<FormItemGroup :tableinfo="props.tableinfo" :data="element.list" :alldata="props.alldata" data-type="not-flex" v-if="type === 15" />

0
src/utils/pinia/stores/lowCode/entry.ts

2
src/views/formTable/page/flowAndLog.vue

@ -614,7 +614,7 @@ defineExpose({
<el-step v-for="item in flowMap" :key="item.step">
<template #title>
{{ item.nodeName }}<span v-if="item.examinemode==1"> 依次审批</span><span v-if="item.examinemode==2"> 会签</span><span v-if="item.examinemode==3"> 或签</span>
{{ item.nodeName }}<span v-if="item.examinemode==1&&item.type!=2"> 依次审批</span><span v-if="item.examinemode==2&&item.type!=2"> 会签</span><span v-if="item.examinemode==3&&item.type!=2"> 或签</span>
<el-tooltip
v-if="item.helpTips!=''&&item.helpTips!='<p><br></p>'"
:content="item.helpTips"

Loading…
Cancel
Save