From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue | 224 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 224 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..9975d9b
--- /dev/null
+++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue
@@ -0,0 +1,224 @@
+<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) &&
+ (!startDeptIds || startDeptIds.length === 0)
+ "
+ >
+ 鍏ㄩ儴鎴愬憳鍙互鍙戣捣娴佺▼
+ </el-text>
+ <div v-else-if="startUserIds && startUserIds.length > 0">
+ <el-text v-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>
+ </div>
+ <div v-else-if="startDeptIds && startDeptIds.length > 0">
+ <el-text v-if="startDeptIds.length == 1">
+ {{ getDeptNames(startDeptIds) }} 鍙彂璧锋祦绋�
+ </el-text>
+ <el-text v-else>
+ <el-tooltip
+ class="box-item"
+ effect="dark"
+ placement="top"
+ :content="getDeptNames(startDeptIds)"
+ >
+ {{ getDeptNames(startDeptIds.slice(0, 2)) }} 绛�
+ {{ startDeptIds.length }} 涓儴闂ㄥ彲鍙戣捣娴佺▼
+ </el-tooltip>
+ </el-text>
+ </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 cursor-pointer" @click="updatePermission('READ')">
+ 鍙
+ </span>
+ <span class="setting-title-label cursor-pointer" @click="updatePermission('WRITE')">
+ 鍙紪杈�
+ </span>
+ <span class="setting-title-label cursor-pointer" @click="updatePermission('NONE')">
+ 闅愯棌
+ </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'
+import * as DeptApi from '@/api/system/dept'
+defineOptions({
+ name: 'StartUserNodeConfig'
+})
+const props = defineProps({
+ flowNode: {
+ type: Object as () => SimpleFlowNode,
+ required: true
+ }
+})
+// 鍙彂璧锋祦绋嬬殑鐢ㄦ埛缂栧彿
+const startUserIds = inject<Ref<any[]>>('startUserIds')
+// 鍙彂璧锋祦绋嬬殑閮ㄩ棬缂栧彿
+const startDeptIds = inject<Ref<any[]>>('startDeptIds')
+// 鐢ㄦ埛鍒楄〃
+const userOptions = inject<Ref<UserApi.UserVO[]>>('userList')
+// 閮ㄩ棬鍒楄〃
+const deptOptions = inject<Ref<DeptApi.DeptVO[]>>('deptList')
+// 鎶藉眽閰嶇疆
+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 getDeptNames = (deptIds: number[]): string => {
+ if (!deptIds || deptIds.length === 0) {
+ return ''
+ }
+ const deptNames: string[] = []
+ deptIds.forEach((deptId) => {
+ const found = deptOptions?.value.find((item) => item.id === deptId)
+ if (found && found.name) {
+ deptNames.push(found.name)
+ }
+ })
+ return deptNames.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)
+}
+
+/** 鎵归噺鏇存柊鏉冮檺 */
+const updatePermission = (type: string) => {
+ fieldsPermissionConfig.value.forEach((field) => {
+ field.permission =
+ type === 'READ'
+ ? FieldPermissionType.READ
+ : type === 'WRITE'
+ ? FieldPermissionType.WRITE
+ : FieldPermissionType.NONE
+ })
+}
+defineExpose({ openDrawer, showStartUserNodeConfig }) // 鏆撮湶鏂规硶缁欑埗缁勪欢
+</script>
+
+<style lang="scss" scoped></style>
--
Gitblit v1.8.0