mirror of
https://gitee.com/cai_xiao_feng/lowflow-design.git
synced 2025-12-06 16:18:22 +08:00
抄送人表单字段权限
This commit is contained in:
parent
196409aa9e
commit
d1b1855074
@ -148,7 +148,17 @@ const useNode = (node: Ref<FlowNode>, fields: Ref<Field[]>) => {
|
||||
type: 'cc',
|
||||
name: '抄送人',
|
||||
child: child,
|
||||
users: []
|
||||
users: [],
|
||||
formProperties: fields.value.map(item => {
|
||||
return {
|
||||
id: item.id,
|
||||
name: item.title,
|
||||
readable: true,
|
||||
writeable: false,
|
||||
hidden: false,
|
||||
required: false
|
||||
} as FormProperty
|
||||
})
|
||||
} as CcNode
|
||||
if (child) {
|
||||
child.pid = id
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
import { FlowNode } from '../Node/index'
|
||||
import {FormProperty} from "~/views/flowDesign/index";
|
||||
export interface CcNode extends FlowNode {
|
||||
users: string[]
|
||||
// 表单字段
|
||||
formProperties: FormProperty[]
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
import Segmented from '~/components/Segmented'
|
||||
import {useVModels} from '@vueuse/core'
|
||||
import {ApprovalNode} from '../nodes/Approval/index'
|
||||
import {computed, inject, Ref, ref} from "vue";
|
||||
import {computed, inject, Ref, ref, watchEffect} from "vue";
|
||||
import {CircleCheck, CircleClose, Switch, Plus, Minus} from "@element-plus/icons-vue";
|
||||
import {Field} from "~/components/Render/index";
|
||||
import {FormProperty} from "~/views/flowDesign/index";
|
||||
@ -123,6 +123,26 @@ const changeHidden = (row: FormProperty) => {
|
||||
row.required = false
|
||||
}
|
||||
}
|
||||
watchEffect(() => {
|
||||
const formProperties = node.value.formProperties
|
||||
node.value.formProperties = fields.value.filter(e => e.value !== undefined).map(e => ({
|
||||
id: e.id,
|
||||
name: e.title,
|
||||
readable: e.props.disabled || false,
|
||||
writeable: !e.props.disabled || false,
|
||||
hidden: e.props.hidden || false,
|
||||
required: (e.props.required && !e.props.disabled) || false
|
||||
}))
|
||||
node.value.formProperties.forEach(item => {
|
||||
const properties = formProperties.find(f => f.id === item.id)
|
||||
if (properties) {
|
||||
item.readable = properties.readable
|
||||
item.writeable = properties.writeable
|
||||
item.hidden = properties.hidden
|
||||
item.required = properties.required
|
||||
}
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
@ -2,7 +2,8 @@
|
||||
import Segmented from '~/components/Segmented'
|
||||
import {useVModels} from '@vueuse/core'
|
||||
import {CcNode} from '../nodes/Cc/index'
|
||||
import {ref} from "vue";
|
||||
import {computed, inject, Ref, ref, watchEffect} from "vue";
|
||||
import {Field} from "~/components/Render/index";
|
||||
|
||||
const activeName = ref('properties')
|
||||
|
||||
@ -15,6 +16,48 @@ const $emits = defineEmits<{
|
||||
(e: 'update:node', modelValue: CcNode): void
|
||||
}>()
|
||||
const {node} = useVModels($props, $emits)
|
||||
const {fields} = inject<{
|
||||
fields: Ref<Field[]>
|
||||
}>('nodeHooks')!
|
||||
const allReadable = computed({
|
||||
get() {
|
||||
return node.value.formProperties.every(e => e.readable)
|
||||
},
|
||||
set(val) {
|
||||
node.value.formProperties.forEach(e => e.readable = val)
|
||||
allHidden.value = !val
|
||||
}
|
||||
})
|
||||
const allHidden = computed({
|
||||
get() {
|
||||
return node.value.formProperties.every(e => e.hidden)
|
||||
},
|
||||
set(val) {
|
||||
node.value.formProperties.forEach(e => e.hidden = val)
|
||||
allReadable.value = !val
|
||||
}
|
||||
})
|
||||
|
||||
watchEffect(() => {
|
||||
const formProperties = node.value.formProperties
|
||||
node.value.formProperties = fields.value.filter(e => e.value !== undefined).map(e => ({
|
||||
id: e.id,
|
||||
name: e.title,
|
||||
readable: true,
|
||||
writeable: false,
|
||||
required: false,
|
||||
hidden: e.props.hidden || false,
|
||||
}))
|
||||
node.value.formProperties.forEach(item => {
|
||||
const properties = formProperties.find(f => f.id === item.id)
|
||||
if (properties) {
|
||||
item.readable = properties.readable
|
||||
item.writeable = properties.writeable
|
||||
item.hidden = properties.hidden
|
||||
item.required = properties.required
|
||||
}
|
||||
})
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -27,7 +70,25 @@ const {node} = useVModels($props, $emits)
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="表单权限" name="formPermissions">
|
||||
待添加...
|
||||
<el-table :data="node.formProperties" style="width: 100%">
|
||||
<el-table-column prop="name" label="字段"/>
|
||||
<el-table-column prop="readable">
|
||||
<template #header>
|
||||
<el-checkbox v-model="allReadable" label="可读"/>
|
||||
</template>
|
||||
<template #default="{row}">
|
||||
<el-checkbox v-model="row.readable" @change="row.hidden=!$event"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="hidden">
|
||||
<template #header>
|
||||
<el-checkbox v-model="allHidden" label="隐藏"/>
|
||||
</template>
|
||||
<template #default="{row}">
|
||||
<el-checkbox v-model="row.hidden" @change="row.readable=!$event"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-tab-pane>
|
||||
</segmented>
|
||||
</template>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user