From 1220f5ca98b10b735a47c37a81fbfc554b01e2fe Mon Sep 17 00:00:00 2001 From: liriming <1343021927@qq.com> Date: 星期一, 20 一月 2025 14:41:35 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue | 163 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 163 insertions(+), 0 deletions(-) diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue new file mode 100644 index 0000000..26c8e13 --- /dev/null +++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue @@ -0,0 +1,163 @@ +<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"> + <el-text v-if="!startUserIds || startUserIds.length === 0"> 全部成员可以发起流程 </el-text> + <el-text v-else-if="startUserIds.length == 1"> + {{ getUserNicknames(startUserIds) }} 可发起流程 + </el-text> + <el-text v-else> + <el-tooltip + class="box-item" + effect="dark" + placement="top" + :content="getUserNicknames(startUserIds)" + > + {{ getUserNicknames(startUserIds.slice(0,2)) }} 等 {{ startUserIds.length }} 人可发起流程 + </el-tooltip> + </el-text> + </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' +import * as UserApi from '@/api/system/user' +defineOptions({ + name: 'StartUserNodeConfig' +}) +const props = defineProps({ + flowNode: { + type: Object as () => SimpleFlowNode, + required: true + } +}) +// 可发起流程的用户编号 +const startUserIds = inject<Ref<any[]>>('startUserIds') +// 用户列表 +const userOptions = inject<Ref<UserApi.UserVO[]>>('userList') +// 抽屉配置 +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 getUserNicknames = (userIds: number[]): string => { + if (!userIds || userIds.length === 0) { + return '' + } + const nicknames: string[] = [] + userIds.forEach((userId) => { + const found = userOptions?.value.find((item) => item.id === userId) + if (found && found.nickname) { + nicknames.push(found.nickname) + } + }) + return nicknames.join(',') +} +// 保存配置 +const saveConfig = async () => { + activeTabName.value = 'user' + currentNode.value.name = nodeName.value! + 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> -- Gitblit v1.9.3