<template>
|
<el-drawer
|
:append-to-body="true"
|
v-model="settingVisible"
|
:show-close="false"
|
:size="550"
|
:before-close="saveConfig"
|
>
|
<template #header>
|
<div class="config-header">
|
<input
|
v-if="showInput"
|
type="text"
|
class="config-editable-input"
|
@blur="blurEvent()"
|
v-mountedFocus
|
v-model="nodeName"
|
:placeholder="nodeName"
|
/>
|
<div v-else class="node-name">
|
{{ nodeName }} <Icon class="ml-1" icon="ep:edit-pen" :size="16" @click="clickIcon()" />
|
</div>
|
<div class="divide-line"></div>
|
</div>
|
</template>
|
<el-tabs type="border-card" v-model="activeTabName">
|
<el-tab-pane label="权限" name="user">
|
<div> 待实现 </div>
|
</el-tab-pane>
|
<el-tab-pane label="表单字段权限" name="fields" v-if="formType === 10">
|
<div class="field-setting-pane">
|
<div class="field-setting-desc">字段权限</div>
|
<div class="field-permit-title">
|
<div class="setting-title-label first-title"> 字段名称 </div>
|
<div class="other-titles">
|
<span class="setting-title-label">只读</span>
|
<span class="setting-title-label">可编辑</span>
|
<span class="setting-title-label">隐藏</span>
|
</div>
|
</div>
|
<div
|
class="field-setting-item"
|
v-for="(item, index) in fieldsPermissionConfig"
|
:key="index"
|
>
|
<div class="field-setting-item-label"> {{ item.title }} </div>
|
<el-radio-group class="field-setting-item-group" v-model="item.permission">
|
<div class="item-radio-wrap">
|
<el-radio
|
:value="FieldPermissionType.READ"
|
size="large"
|
:label="FieldPermissionType.READ"
|
><span></span
|
></el-radio>
|
</div>
|
<div class="item-radio-wrap">
|
<el-radio
|
:value="FieldPermissionType.WRITE"
|
size="large"
|
:label="FieldPermissionType.WRITE"
|
><span></span
|
></el-radio>
|
</div>
|
<div class="item-radio-wrap">
|
<el-radio
|
:value="FieldPermissionType.NONE"
|
size="large"
|
:label="FieldPermissionType.NONE"
|
><span></span
|
></el-radio>
|
</div>
|
</el-radio-group>
|
</div>
|
</div>
|
</el-tab-pane>
|
</el-tabs>
|
<template #footer>
|
<el-divider />
|
<div>
|
<el-button type="primary" @click="saveConfig">确 定</el-button>
|
<el-button @click="closeDrawer">取 消</el-button>
|
</div>
|
</template>
|
</el-drawer>
|
</template>
|
<script setup lang="ts">
|
import { SimpleFlowNode, NodeType, FieldPermissionType, START_USER_BUTTON_SETTING } from '../consts'
|
import { useWatchNode, useDrawer, useNodeName, useFormFieldsPermission } from '../node'
|
|
defineOptions({
|
name: 'StartUserNodeConfig'
|
})
|
const props = defineProps({
|
flowNode: {
|
type: Object as () => SimpleFlowNode,
|
required: true
|
}
|
})
|
// 抽屉配置
|
const { settingVisible, closeDrawer, openDrawer } = useDrawer()
|
// 当前节点
|
const currentNode = useWatchNode(props)
|
// 节点名称
|
const { nodeName, showInput, clickIcon, blurEvent } = useNodeName(NodeType.COPY_TASK_NODE)
|
// 激活的 Tab 标签页
|
const activeTabName = ref('user')
|
// 表单字段权限配置
|
const { formType, fieldsPermissionConfig, getNodeConfigFormFields } = useFormFieldsPermission(
|
FieldPermissionType.WRITE
|
)
|
|
// 保存配置
|
const saveConfig = async () => {
|
activeTabName.value = 'user'
|
currentNode.value.name = nodeName.value!
|
// TODO 暂时写死。后续可以显示谁有权限可以发起
|
currentNode.value.showText = '已设置'
|
// 设置表单权限
|
currentNode.value.fieldsPermission = fieldsPermissionConfig.value
|
// 设置发起人的按钮权限
|
currentNode.value.buttonsSetting = START_USER_BUTTON_SETTING
|
settingVisible.value = false
|
return true
|
}
|
// 显示发起人节点配置, 由父组件传过来
|
const showStartUserNodeConfig = (node: SimpleFlowNode) => {
|
nodeName.value = node.name
|
// 表单字段权限
|
getNodeConfigFormFields(node.fieldsPermission)
|
}
|
|
defineExpose({ openDrawer, showStartUserNodeConfig }) // 暴露方法给父组件
|
</script>
|
|
<style lang="scss" scoped></style>
|