diff --git a/apps/web-antdv-next/package.json b/apps/web-antdv-next/package.json index 89894ed58..257e584dc 100644 --- a/apps/web-antdv-next/package.json +++ b/apps/web-antdv-next/package.json @@ -20,7 +20,7 @@ "build:analyze": "pnpm vite build --mode analyze", "dev": "pnpm vite --mode development", "preview": "vite preview", - "#typecheck": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vue-tsc --noEmit --skipLibCheck --incremental --tsBuildInfoFile node_modules/.cache/vue-tsc/tsconfig.tsbuildinfo" + "typecheck": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vue-tsc --noEmit --skipLibCheck --incremental --tsBuildInfoFile node_modules/.cache/vue-tsc/tsconfig.tsbuildinfo" }, "imports": { "#/*": "./src/*" diff --git a/apps/web-antdv-next/src/views/bpm/components/simple-process-design/components/nodes-config/trigger-node-config.vue b/apps/web-antdv-next/src/views/bpm/components/simple-process-design/components/nodes-config/trigger-node-config.vue index 2bb33304e..84f9e0d23 100644 --- a/apps/web-antdv-next/src/views/bpm/components/simple-process-design/components/nodes-config/trigger-node-config.vue +++ b/apps/web-antdv-next/src/views/bpm/components/simple-process-design/components/nodes-config/trigger-node-config.vue @@ -258,14 +258,14 @@ function updateFormFieldKey( ) { if (!formSetting?.updateFormFields || !newKey) return; const value = formSetting.updateFormFields[oldKey]; - delete formSetting.updateFormFields.oldKey; + delete formSetting.updateFormFields[oldKey]; formSetting.updateFormFields[String(newKey)] = value; } /** 删除修改字段设置项 */ function deleteFormFieldSetting(formSetting: FormTriggerSetting, key: string) { if (!formSetting?.updateFormFields) return; - delete formSetting.updateFormFields.key; + delete formSetting.updateFormFields[key]; } /** 保存配置 */ diff --git a/apps/web-antdv-next/src/views/bpm/model/form/modules/basic-info.vue b/apps/web-antdv-next/src/views/bpm/model/form/modules/basic-info.vue index 35139a19d..82ca508f9 100644 --- a/apps/web-antdv-next/src/views/bpm/model/form/modules/basic-info.vue +++ b/apps/web-antdv-next/src/views/bpm/model/form/modules/basic-info.vue @@ -135,6 +135,7 @@ function openStartDeptSelect() { /** 处理部门选择确认 */ function handleDeptSelectConfirm(depts: SystemDeptApi.Dept[]) { + selectedStartDepts.value = depts; modelData.value = { ...modelData.value, startDeptIds: depts.map((d) => d.id), diff --git a/apps/web-antdv-next/src/views/crm/business/detail/index.vue b/apps/web-antdv-next/src/views/crm/business/detail/index.vue index 166d897f7..00260c353 100644 --- a/apps/web-antdv-next/src/views/crm/business/detail/index.vue +++ b/apps/web-antdv-next/src/views/crm/business/detail/index.vue @@ -8,13 +8,14 @@ import { useRoute, useRouter } from 'vue-router'; import { Page, useVbenModal } from '@vben/common-ui'; import { useTabs } from '@vben/hooks'; -import { Button, Card, TabPane, Tabs } from 'antdv-next'; +import { Card, TabPane, Tabs } from 'antdv-next'; import { getBusiness } from '#/api/crm/business'; import { getOperateLogPage } from '#/api/crm/operateLog'; import { BizTypeEnum } from '#/api/crm/permission'; import { useDescription } from '#/components/description'; import { OperateLog } from '#/components/operate-log'; +import { ACTION_ICON, TableAction } from '#/components/table-action'; import { $t } from '#/locales'; import { ContactDetailsList } from '#/views/crm/contact/components'; import { ContractDetailsList } from '#/views/crm/contract/components'; @@ -108,27 +109,36 @@ onMounted(() => { diff --git a/apps/web-antdv-next/src/views/crm/contract/config/data.ts b/apps/web-antdv-next/src/views/crm/contract/config/data.ts index ad6b5642c..0cd005495 100644 --- a/apps/web-antdv-next/src/views/crm/contract/config/data.ts +++ b/apps/web-antdv-next/src/views/crm/contract/config/data.ts @@ -1,5 +1,7 @@ import type { VbenFormSchema } from '#/adapter/form'; +import { z } from '#/adapter/form'; + export const schema: VbenFormSchema[] = [ { component: 'RadioGroup', @@ -14,17 +16,17 @@ export const schema: VbenFormSchema[] = [ defaultValue: true, }, { - component: 'InputNumber', + component: 'Input', fieldName: 'notifyDays', componentProps: { + placeholder: '请输入天数', class: '!w-full', - min: 0, - precision: 0, }, renderComponentContent: () => ({ addonBefore: () => '提前', addonAfter: () => '天提醒', }), + rules: z.coerce.number().int().min(0, '天数不能小于 0'), dependencies: { triggerFields: ['notifyEnabled'], show: (values) => values.notifyEnabled, diff --git a/apps/web-antdv-next/src/views/crm/customer/poolConfig/data.ts b/apps/web-antdv-next/src/views/crm/customer/poolConfig/data.ts index 8c5bbadf6..e36ab0339 100644 --- a/apps/web-antdv-next/src/views/crm/customer/poolConfig/data.ts +++ b/apps/web-antdv-next/src/views/crm/customer/poolConfig/data.ts @@ -1,5 +1,7 @@ import type { VbenFormSchema } from '#/adapter/form'; +import { z } from '#/adapter/form'; + export const schema: VbenFormSchema[] = [ { component: 'RadioGroup', @@ -13,33 +15,33 @@ export const schema: VbenFormSchema[] = [ }, }, { - component: 'InputNumber', + component: 'Input', fieldName: 'contactExpireDays', componentProps: { + placeholder: '请输入天数', class: '!w-full', - min: 0, - precision: 0, }, renderComponentContent: () => ({ addonAfter: () => '天不跟进或', }), + rules: z.coerce.number().int().min(0, '天数不能小于 0'), dependencies: { triggerFields: ['enabled'], show: (value) => value.enabled, }, }, { - component: 'InputNumber', + component: 'Input', fieldName: 'dealExpireDays', renderComponentContent: () => ({ addonBefore: () => '或', addonAfter: () => '天未成交', }), componentProps: { + placeholder: '请输入天数', class: '!w-full', - min: 0, - precision: 0, }, + rules: z.coerce.number().int().min(0, '天数不能小于 0'), dependencies: { triggerFields: ['enabled'], show: (value) => value.enabled, @@ -62,17 +64,17 @@ export const schema: VbenFormSchema[] = [ defaultValue: false, }, { - component: 'InputNumber', + component: 'Input', fieldName: 'notifyDays', componentProps: { + placeholder: '请输入天数', class: '!w-full', - min: 0, - precision: 0, }, renderComponentContent: () => ({ addonBefore: () => '提前', addonAfter: () => '天提醒', }), + rules: z.coerce.number().int().min(0, '天数不能小于 0'), dependencies: { triggerFields: ['notifyEnabled'], show: (value) => value.enabled && value.notifyEnabled, diff --git a/apps/web-antdv-next/src/views/mall/promotion/components/diy-editor/components/mobile/product-card/index.vue b/apps/web-antdv-next/src/views/mall/promotion/components/diy-editor/components/mobile/product-card/index.vue index 256570049..fcfbde3f2 100644 --- a/apps/web-antdv-next/src/views/mall/promotion/components/diy-editor/components/mobile/product-card/index.vue +++ b/apps/web-antdv-next/src/views/mall/promotion/components/diy-editor/components/mobile/product-card/index.vue @@ -99,7 +99,7 @@ function calculateWidth() { :class="[ { 'w-full': property.layoutType !== 'oneColSmallImg', - 'w-[calc(100vh-140px-16px)]': + 'w-[calc(100%-140px-16px)]': property.layoutType === 'oneColSmallImg', }, ]" diff --git a/apps/web-antdv-next/src/views/mp/components/wx-msg/msg-event.vue b/apps/web-antdv-next/src/views/mp/components/wx-msg/msg-event.vue index e94736e0c..bfe3b1f4b 100644 --- a/apps/web-antdv-next/src/views/mp/components/wx-msg/msg-event.vue +++ b/apps/web-antdv-next/src/views/mp/components/wx-msg/msg-event.vue @@ -44,6 +44,9 @@ defineProps<{
选择地理位置
+
+ 扫码 +
未知事件类型
diff --git a/apps/web-antdv-next/src/views/pay/cashier/index.vue b/apps/web-antdv-next/src/views/pay/cashier/index.vue index 0c409d8f0..7d7a12e65 100644 --- a/apps/web-antdv-next/src/views/pay/cashier/index.vue +++ b/apps/web-antdv-next/src/views/pay/cashier/index.vue @@ -213,6 +213,7 @@ function displayQrCode(channelCode: string, data: any) { url: data.displayContent, visible: true, }; + modalApi.open(); } /** 提交支付后(App) */ diff --git a/apps/web-ele/src/views/bpm/components/bpmn-process-designer/package/penal/task/task-components/UserTask.vue b/apps/web-ele/src/views/bpm/components/bpmn-process-designer/package/penal/task/task-components/UserTask.vue index d9f8fd7fc..066c04759 100644 --- a/apps/web-ele/src/views/bpm/components/bpmn-process-designer/package/penal/task/task-components/UserTask.vue +++ b/apps/web-ele/src/views/bpm/components/bpmn-process-designer/package/penal/task/task-components/UserTask.vue @@ -126,51 +126,56 @@ const resetTaskForm = () => { (ex: any) => ex.$type === `${prefix}:CandidateParam`, )?.value; if (candidateParamStr && candidateParamStr.length > 0) { - if (userTaskForm.value.candidateStrategy === CandidateStrategy.EXPRESSION) { - // 特殊:流程表达式,只有一个 input 输入框 - // @ts-expect-error: expression strategy stores a scalar in an array-shaped field - userTaskForm.value.candidateParam = [candidateParamStr]; - } else if ( - userTaskForm.value.candidateStrategy === - CandidateStrategy.MULTI_LEVEL_DEPT_LEADER - ) { - // 特殊:多级不部门负责人,需要通过'|'分割 - userTaskForm.value.candidateParam = candidateParamStr - .split('|')[0] - .split(',') - .map((item: any) => { - // 如果数字超出了最大安全整数范围,则将其作为字符串处理 - const num = Number(item); - return num > Number.MAX_SAFE_INTEGER || num < -Number.MAX_SAFE_INTEGER - ? item - : num; - }); - deptLevel.value = +candidateParamStr.split('|')[1]; - } else if ( - userTaskForm.value.candidateStrategy === - CandidateStrategy.START_USER_DEPT_LEADER || - userTaskForm.value.candidateStrategy === - CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER - ) { - // @ts-expect-error: dynamic candidate param shape varies by strategy - userTaskForm.value.candidateParam = +candidateParamStr; - deptLevel.value = +candidateParamStr; - } else if ( - userTaskForm.value.candidateStrategy === - CandidateStrategy.FORM_DEPT_LEADER - ) { - userTaskForm.value.candidateParam = candidateParamStr.split('|')[0]; - deptLevel.value = +candidateParamStr.split('|')[1]; - } else { - userTaskForm.value.candidateParam = candidateParamStr - .split(',') - .map((item: any) => { - // 如果数字超出了最大安全整数范围,则将其作为字符串处理 - const num = Number(item); - return num > Number.MAX_SAFE_INTEGER || num < -Number.MAX_SAFE_INTEGER - ? item - : num; - }); + const candidateStrategy = userTaskForm.value.candidateStrategy as + | CandidateStrategy + | undefined; + switch (candidateStrategy) { + case CandidateStrategy.EXPRESSION: { + // 特殊:流程表达式,只有一个 input 输入框 + // @ts-expect-error: expression strategy stores a scalar in an array-shaped field + userTaskForm.value.candidateParam = [candidateParamStr]; + break; + } + case CandidateStrategy.FORM_DEPT_LEADER: { + userTaskForm.value.candidateParam = candidateParamStr.split('|')[0]; + deptLevel.value = +candidateParamStr.split('|')[1]; + break; + } + case CandidateStrategy.MULTI_LEVEL_DEPT_LEADER: { + // 特殊:多级不部门负责人,需要通过'|'分割 + userTaskForm.value.candidateParam = candidateParamStr + .split('|')[0] + .split(',') + .map((item: any) => { + // 如果数字超出了最大安全整数范围,则将其作为字符串处理 + const num = Number(item); + return num > Number.MAX_SAFE_INTEGER || + num < -Number.MAX_SAFE_INTEGER + ? item + : num; + }); + deptLevel.value = +candidateParamStr.split('|')[1]; + break; + } + case CandidateStrategy.START_USER_DEPT_LEADER: + case CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER: { + // @ts-expect-error: dynamic candidate param shape varies by strategy + userTaskForm.value.candidateParam = +candidateParamStr; + deptLevel.value = +candidateParamStr; + break; + } + default: { + userTaskForm.value.candidateParam = candidateParamStr + .split(',') + .map((item: any) => { + // 如果数字超出了最大安全整数范围,则将其作为字符串处理 + const num = Number(item); + return num > Number.MAX_SAFE_INTEGER || + num < -Number.MAX_SAFE_INTEGER + ? item + : num; + }); + } } } else { userTaskForm.value.candidateParam = []; @@ -402,7 +407,6 @@ onBeforeUnmount(() => { :props="defaultProps" placeholder="加载中,请稍后" multiple - check-strictly show-checkbox @change="updateElementTask" /> diff --git a/apps/web-ele/src/views/bpm/components/simple-process-design/components/nodes-config/child-process-node-config.vue b/apps/web-ele/src/views/bpm/components/simple-process-design/components/nodes-config/child-process-node-config.vue index a23f97c19..e08e63a83 100644 --- a/apps/web-ele/src/views/bpm/components/simple-process-design/components/nodes-config/child-process-node-config.vue +++ b/apps/web-ele/src/views/bpm/components/simple-process-design/components/nodes-config/child-process-node-config.vue @@ -9,6 +9,22 @@ import { useVbenDrawer } from '@vben/common-ui'; import { BpmNodeTypeEnum } from '@vben/constants'; import { IconifyIcon } from '@vben/icons'; +import { + ElButton, + ElDatePicker, + ElDivider, + ElForm, + ElFormItem, + ElInput, + ElInputNumber, + ElOption, + ElRadio, + ElRadioButton, + ElRadioGroup, + ElSelect, + ElSwitch, +} from 'element-plus'; + import { getForm } from '#/api/bpm/form'; import { getModelList } from '#/api/bpm/model'; @@ -442,7 +458,7 @@ onMounted(async () => { >
diff --git a/apps/web-ele/src/views/bpm/processInstance/detail/modules/signature.vue b/apps/web-ele/src/views/bpm/processInstance/detail/modules/signature.vue index c89cbbcb9..e670c801d 100644 --- a/apps/web-ele/src/views/bpm/processInstance/detail/modules/signature.vue +++ b/apps/web-ele/src/views/bpm/processInstance/detail/modules/signature.vue @@ -5,6 +5,7 @@ import { useVbenModal } from '@vben/common-ui'; import { IconifyIcon } from '@vben/icons'; import { base64ToFile } from '@vben/utils'; +import { ElButton, ElTooltip } from 'element-plus'; import Vue3Signature from 'vue3-signature'; import { uploadFile } from '#/api/infra/file'; diff --git a/apps/web-ele/src/views/bpm/processInstance/detail/modules/task-list.vue b/apps/web-ele/src/views/bpm/processInstance/detail/modules/task-list.vue index b522d119d..af0b2d5fe 100644 --- a/apps/web-ele/src/views/bpm/processInstance/detail/modules/task-list.vue +++ b/apps/web-ele/src/views/bpm/processInstance/detail/modules/task-list.vue @@ -9,6 +9,7 @@ import { DICT_TYPE } from '@vben/constants'; import { IconifyIcon } from '@vben/icons'; import FormCreate from '@form-create/element-ui'; +import { ElButton } from 'element-plus'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { getTaskListByProcessInstanceId } from '#/api/bpm/task'; diff --git a/apps/web-ele/src/views/erp/stock/check/modules/item-form.vue b/apps/web-ele/src/views/erp/stock/check/modules/item-form.vue index 545c1a6f3..0474714cf 100644 --- a/apps/web-ele/src/views/erp/stock/check/modules/item-form.vue +++ b/apps/web-ele/src/views/erp/stock/check/modules/item-form.vue @@ -10,7 +10,7 @@ import { erpPriceMultiply, } from '@vben/utils'; -import { ElInput, ElInputNumber, ElSelect } from 'element-plus'; +import { ElInput, ElInputNumber, ElOption, ElSelect } from 'element-plus'; import { TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; import { getProductSimpleList } from '#/api/erp/product/product'; @@ -219,26 +219,36 @@ onMounted(async () => {