diff --git a/src/api/bpm/form/index.ts b/src/api/bpm/form/index.ts index 84080f079..e8c77dcf4 100644 --- a/src/api/bpm/form/index.ts +++ b/src/api/bpm/form/index.ts @@ -47,6 +47,20 @@ export const getBusinessForm = async (params) => { }) } +// 保存工作流的业务表单定义 +export const saveBusinessForm = async (data) => { + return await request.put({ + url: 'bpm/form-visible/update', data + }) +} + +// 获取工作流的业务表单权限 +export const getLimitForm = async (params) => { + return await request.get({ + url: 'bpm/form-visible/getFormVisible', params + }) +} + // 获得工作流的表单定义分页 export const getFormPage = async (params) => { return await request.get({ diff --git a/src/components/SelectCustomer/src/index.vue b/src/components/SelectCustomer/src/index.vue index e52b332aa..d536b3102 100644 --- a/src/components/SelectCustomer/src/index.vue +++ b/src/components/SelectCustomer/src/index.vue @@ -63,7 +63,6 @@ let selectComId = ref('popper' + (Math.random().toFixed(5) * 100000)) const vElSelectLoadmore = { mounted(el, binding) { selectRef.value = el - console.log('%csrc/components/SelectCustomer/src/index.vue:63 el,444', 'color: #007acc;', el,444); const scrollHandler = function() { if (this.scrollHeight - this.scrollTop <= this.clientHeight + 20) { binding.value && binding.value() @@ -71,10 +70,8 @@ const vElSelectLoadmore = { } nextTick(() => { - // console.log('%csrc/components/SelectCustomer/src/index.vue:75 selectComId.value', 'color: #007acc;', selectComId.value); // const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap') const selectDom = document.querySelector(`.${selectComId.value} .el-select-dropdown__wrap`) - console.log('%csrc/components/SelectCustomer/src/index.vue:77 object', 'color: #007acc;', selectDom); if (selectDom) { // 先移除可能存在的旧监听器 selectDom.removeEventListener('scroll', scrollHandler) @@ -86,7 +83,7 @@ const vElSelectLoadmore = { }) }, // beforeUnmount(el) { - // const selectDom = document.querySelector('.event-select-poper .el-select-dropdown__wrap') + // const selectDom = document.querySelector(`.${selectComId.value} .el-select-dropdown__wrap`) // if (selectDom && el._scrollHandler) { // selectDom.removeEventListener('scroll', el._scrollHandler) // } diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue index aec32da35..52f4369e8 100644 --- a/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue +++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue @@ -23,7 +23,7 @@
- +
@@ -189,6 +189,55 @@
+ +
+
字段权限
+
+
字段名称
+
+ + 只读 + + + 可编辑 + + + 隐藏 + +
+
+
+
{{ item.title }}
+ +
+ +
+
+ +
+
+ +
+
+
+
+
字段权限
@@ -246,7 +295,8 @@ @@ -270,9 +320,14 @@ import { CopyTaskFormType } from '../node' import { defaultProps } from '@/utils/tree' +import { getBusinessForm, saveBusinessForm, FormVO } from '@/api/bpm/form' defineOptions({ name: 'CopyTaskNodeConfig' }) +const { t } = useI18n() // 国际化 +const message = useMessage() // 消息弹窗 +const fieldsPermissionCustomize = ref([]) +const tabName = ref('') const props = defineProps({ flowNode: { type: Object as () => SimpleFlowNode, @@ -348,6 +403,33 @@ const changeCandidateStrategy = () => { configForm.value.deptLevel = 1 configForm.value.formUser = '' } +const route = useRoute(); +const tabClick = async (tab) => { + tabName.value = tab.props.name + if(tab.props.name === 'businessFields') { + const bpmnForm = (await getBusinessForm({ + key: window.localStorage.getItem('businessKey'), + modelNodeId: props.flowNode.id + })) as unknown as FormVO + const newData = bpmnForm.fields.map( v => { + return JSON.parse(v) + }) + fieldsPermissionCustomize.value = newData + } +} +const saveCustomize = async () => { + let newData = fieldsPermissionCustomize.value.map( v => { + return JSON.stringify(v) + }) + let data = { + fields: newData, + formKey: window.localStorage.getItem('businessKey'), + modelNodeId: props.flowNode.id + } + await saveBusinessForm(data) + message.success(t('common.updateSuccess')) + settingVisible.value = false +} // 保存配置 const saveConfig = async () => { activeTabName.value = 'user' diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue index eca35e2b8..57800f247 100644 --- a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue +++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue @@ -467,32 +467,29 @@
{{ item.title }}
@@ -563,7 +560,8 @@ @@ -610,7 +608,7 @@ import { defaultProps } from '@/utils/tree' import { cloneDeep } from 'lodash-es' import { convertTimeUnit, getApproveTypeText } from '../utils' import UserTaskListener from './components/UserTaskListener.vue' -import { getBusinessForm, FormVO } from '@/api/bpm/form' +import { getBusinessForm, saveBusinessForm, FormVO } from '@/api/bpm/form' defineOptions({ name: 'UserTaskNodeConfig' }) @@ -620,6 +618,10 @@ const props = defineProps({ required: true } }) +const { t } = useI18n() // 国际化 +const message = useMessage() // 消息弹窗 +const tabName = ref('') +const fieldsPermissionCustomize = ref([]) const emits = defineEmits<{ 'find:returnTaskNodes': [nodeList: SimpleFlowNode[]] }>() @@ -1027,14 +1029,32 @@ const updatePermission = (type: string) => { const route = useRoute(); const tabClick = async (tab) => { + tabName.value = tab.props.name if(tab.props.name === 'businessFields') { const bpmnForm = (await getBusinessForm({ key: window.localStorage.getItem('businessKey'), modelNodeId: props.flowNode.id })) as unknown as FormVO - console.log('%csrc/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue:1035 object', 'color: #007acc;', bpmnForm); + const newData = bpmnForm.fields.map( v => { + return JSON.parse(v) + }) + fieldsPermissionCustomize.value = newData } } + +const saveCustomize = async () => { + let newData = fieldsPermissionCustomize.value.map( v => { + return JSON.stringify(v) + }) + let data = { + fields: newData, + formKey: window.localStorage.getItem('businessKey'), + modelNodeId: props.flowNode.id + } + await saveBusinessForm(data) + message.success(t('common.updateSuccess')) + settingVisible.value = false +} diff --git a/src/components/processForm/src/index.vue b/src/components/processForm/src/index.vue index acd36dcf6..36aae4297 100644 --- a/src/components/processForm/src/index.vue +++ b/src/components/processForm/src/index.vue @@ -3,7 +3,7 @@