diff --git a/frontend/packages/web/src/components/business/crm-approval-popover/useApprovalPopoverDetail.ts b/frontend/packages/web/src/components/business/crm-approval-popover/useApprovalPopoverDetail.ts index 85eed5d740..32cf887dbe 100644 --- a/frontend/packages/web/src/components/business/crm-approval-popover/useApprovalPopoverDetail.ts +++ b/frontend/packages/web/src/components/business/crm-approval-popover/useApprovalPopoverDetail.ts @@ -6,7 +6,7 @@ import { ApproverItem } from '@/components/business/crm-approver-avatar-list/ind export type ApprovalPopoverFormKeyType = | FormDesignKeyEnum.CONTRACT - | FormDesignKeyEnum.CONTRACT_INVOICE + | FormDesignKeyEnum.INVOICE | FormDesignKeyEnum.OPPORTUNITY_QUOTATION | FormDesignKeyEnum.ORDER; @@ -26,7 +26,7 @@ const detailApiMap: Record Pro approveUserList: [], resourceId: '', }), - [FormDesignKeyEnum.CONTRACT_INVOICE]: (sourceId: string) => + [FormDesignKeyEnum.INVOICE]: (sourceId: string) => Promise.resolve({ approveStatus: ProcessStatusEnum.NONE, approveUserList: [], diff --git a/frontend/packages/web/src/components/business/crm-approver-avatar-list/index.vue b/frontend/packages/web/src/components/business/crm-approver-avatar-list/index.vue index 351b95cfcb..4654d47167 100644 --- a/frontend/packages/web/src/components/business/crm-approver-avatar-list/index.vue +++ b/frontend/packages/web/src/components/business/crm-approver-avatar-list/index.vue @@ -104,14 +104,15 @@ display: flex; padding: 8px 2px; flex-wrap: wrap; - gap: 8px; + gap: 4px; } .crm-approver-avatar-list__item { display: flex; align-items: center; min-width: 0; max-width: 100%; - gap: 8px; + column-gap: 8px; + row-gap: 4px; cursor: pointer; } .crm-approver-avatar-list__avatar-wrap { @@ -125,7 +126,7 @@ transition: box-shadow 0.18s ease; @apply flex flex-shrink-0 items-center justify-between; &--active { - box-shadow: 0 0 0 0.5px var(--primary-8); + box-shadow: 0 0 0 1px var(--primary-8); } } .crm-approver-avatar-list__item:hover { diff --git a/frontend/packages/web/src/components/business/crm-editable-text/index.vue b/frontend/packages/web/src/components/business/crm-editable-text/index.vue index ef8566983a..046fd024e4 100644 --- a/frontend/packages/web/src/components/business/crm-editable-text/index.vue +++ b/frontend/packages/web/src/components/business/crm-editable-text/index.vue @@ -5,17 +5,23 @@ v-model:value="inputValue" :maxlength="255" clearable + @update-value="handleInput" @keydown.enter="confirmEdit" @blur="handleBlur" /> -
+
{{ value }}
@@ -28,10 +34,14 @@ const props = defineProps<{ value: string; permission: string[]; + clickToEdit?: boolean; + emptyTextTip?: string; }>(); const emit = defineEmits<{ (e: 'handleEdit', value: string, done?: () => void): void; + (e: 'input', value: string): void; + (e: 'cancel'): void; }>(); const { t } = useI18n(); @@ -51,7 +61,7 @@ function confirmEdit() { if (!inputValue.value.trim().length) { - Message.warning(t('common.value.notNull')); + Message.warning(props.emptyTextTip ?? t('common.value.notNull')); return; } emit('handleEdit', inputValue.value, () => { @@ -61,10 +71,19 @@ function handleBlur() { isEditing.value = false; + emit('cancel'); + } + + function handleInput(value: string) { + emit('input', value); } diff --git a/frontend/packages/web/src/config/process.ts b/frontend/packages/web/src/config/process.ts index 42ba2bdec5..b6409b5901 100644 --- a/frontend/packages/web/src/config/process.ts +++ b/frontend/packages/web/src/config/process.ts @@ -1,3 +1,4 @@ +import { FormDesignKeyEnum } from '@lib/shared/enums/formDesignEnum'; import { ProcessStatusEnum } from '@lib/shared/enums/process'; import { useI18n } from '@lib/shared/hooks/useI18n'; import { ProcessStatusType } from '@lib/shared/models/system/process'; @@ -43,3 +44,17 @@ export const processStatusOptions = Object.entries(processStatusMap).map(([key, label: value.label, value: key, })); + +export const defaultBasicForm = { + businessType: FormDesignKeyEnum.OPPORTUNITY_QUOTATION, + name: '', + executionTiming: ['CREATE'], + description: '', +}; + +export const defaultMoreConfig = { + submitterAuthority: true, + approverAuthority: [], + autoApproval: 'firstNodeApproval', + approvalOpinion: false, +}; diff --git a/frontend/packages/web/src/router/routes/modules/system.ts b/frontend/packages/web/src/router/routes/modules/system.ts index 494e876e9b..b0c70d9741 100644 --- a/frontend/packages/web/src/router/routes/modules/system.ts +++ b/frontend/packages/web/src/router/routes/modules/system.ts @@ -17,6 +17,7 @@ const system: AppRouteRecordRaw = { 'SYSTEM_NOTICE:READ', 'SYSTEM_SETTING:READ', 'OPERATION_LOG:READ', + 'APPROVAL_FLOW:READ', ], icon: 'iconicon_set_up', collapsedLocale: 'menu.collapsedSettings', @@ -65,7 +66,7 @@ const system: AppRouteRecordRaw = { meta: { hideChildrenInMenu: true, locale: 'menu.settings.processSetting', - permissions: [], // todo xinxinwu + permissions: ['APPROVAL_FLOW:READ'], }, children: [ { @@ -75,7 +76,7 @@ const system: AppRouteRecordRaw = { meta: { locale: 'menu.settings.approvalFlow', isTopMenu: true, - permissions: [], // todo xinxinwu + permissions: ['APPROVAL_FLOW:READ'], }, }, // todo 这个版本不上工作流 diff --git a/frontend/packages/web/src/views/contract/invoice/components/invoiceTable.vue b/frontend/packages/web/src/views/contract/invoice/components/invoiceTable.vue index 785d7757e9..46897b19bd 100644 --- a/frontend/packages/web/src/views/contract/invoice/components/invoiceTable.vue +++ b/frontend/packages/web/src/views/contract/invoice/components/invoiceTable.vue @@ -459,7 +459,7 @@ approvalStatus: (row: ContractInvoiceItem) => h(CrmApprovalPopover, { status: row.approvalStatus, - formKey: FormDesignKeyEnum.CONTRACT_INVOICE, + formKey: FormDesignKeyEnum.INVOICE, sourceId: row.id, disabled: row.approvalStatus !== ProcessStatusEnum.UNAPPROVED, onMore: () => { diff --git a/frontend/packages/web/src/views/system/process/locale/en-US.ts b/frontend/packages/web/src/views/system/process/locale/en-US.ts index 409e6d8391..a82ab92241 100644 --- a/frontend/packages/web/src/views/system/process/locale/en-US.ts +++ b/frontend/packages/web/src/views/system/process/locale/en-US.ts @@ -31,4 +31,8 @@ export default { 'process.process.approvalAuthority.allowAddSign': 'Allow adding signatory', 'process.process.approvalAuthority.allowAddTempApprover': 'When checked, approver can add temporary approver in the approval flow', + 'process.process.processName': 'Process Name', + 'process.process.basic.businessType': 'Business Type', + 'process.process.basic.executionTiming': 'Execution timing', + 'process.process.basic.description': 'Description', }; diff --git a/frontend/packages/web/src/views/system/process/locale/zh-CN.ts b/frontend/packages/web/src/views/system/process/locale/zh-CN.ts index 56e3b70dd0..d61f6ce48a 100644 --- a/frontend/packages/web/src/views/system/process/locale/zh-CN.ts +++ b/frontend/packages/web/src/views/system/process/locale/zh-CN.ts @@ -28,4 +28,8 @@ export default { 'process.process.approvalAuthority.addTempApprover': '勾选后,审批人可在审批流程中增加临时审批人', 'process.process.approvalAuthority.allowAddSign': '允许加签', 'process.process.approvalAuthority.allowAddTempApprover': '勾选后,审批人可在审批流程中增加临时审批人', + 'process.process.processName': '流程名称', + 'process.process.basic.businessType': '业务类型', + 'process.process.basic.executionTiming': '执行时机', + 'process.process.basic.description': '描述信息', }; diff --git a/frontend/packages/web/src/views/system/process/process/components/addProcessDrawer.vue b/frontend/packages/web/src/views/system/process/process/components/addProcessDrawer.vue index 0ba0c7e90c..0829400864 100644 --- a/frontend/packages/web/src/views/system/process/process/components/addProcessDrawer.vue +++ b/frontend/packages/web/src/views/system/process/process/components/addProcessDrawer.vue @@ -7,23 +7,50 @@ @next-step="handleNextStep" @cancel="() => emit('cancel')" > + - + diff --git a/frontend/packages/web/src/views/system/process/process/components/approvalFlowDesign.vue b/frontend/packages/web/src/views/system/process/process/components/approvalFlowDesign.vue index 28a07c81d7..cc128a486c 100644 --- a/frontend/packages/web/src/views/system/process/process/components/approvalFlowDesign.vue +++ b/frontend/packages/web/src/views/system/process/process/components/approvalFlowDesign.vue @@ -26,6 +26,7 @@
@@ -34,6 +35,8 @@ + + diff --git a/frontend/packages/web/src/views/system/process/process/components/moreSetting.vue b/frontend/packages/web/src/views/system/process/process/components/moreSetting.vue index b01bb8bcdb..b6329d6242 100644 --- a/frontend/packages/web/src/views/system/process/process/components/moreSetting.vue +++ b/frontend/packages/web/src/views/system/process/process/components/moreSetting.vue @@ -118,14 +118,14 @@ import { useI18n } from '@lib/shared/hooks/useI18n'; + import { defaultMoreConfig } from '@/config/process'; + const { t } = useI18n(); - const Message = useMessage(); - const form = ref({ - submitterAuthority: true, - approverAuthority: [], - autoApproval: 'firstNodeApproval', - approvalOpinion: false, + const form = defineModel>('moreConfig', { + default: () => ({ + ...defaultMoreConfig, + }), }); const approverAuthorityList = [ diff --git a/frontend/packages/web/src/views/system/process/process/index.vue b/frontend/packages/web/src/views/system/process/process/index.vue index 1e2b145fe7..ec6759a1ef 100644 --- a/frontend/packages/web/src/views/system/process/process/index.vue +++ b/frontend/packages/web/src/views/system/process/process/index.vue @@ -12,7 +12,7 @@ >