From 4f1bb233002dd5e5f33a573184ea465cd429a36a Mon Sep 17 00:00:00 2001 From: pch <75729660@qq.com> Date: Fri, 21 Feb 2025 09:12:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 3 +- components.d.ts | 2 +- src/api/home/fwgl/index.ts | 1 + src/api/home/question/index.ts | 1 + .../package/designer/ProcessViewerForm.vue | 664 ++++++++++++++++++ .../bpmnProcessDesigner/package/index.ts | 3 +- src/views/Home/kqnr/qjgl/qjsq/QjglCreate.vue | 44 +- src/views/Home/question/info/QuestionForm.vue | 50 +- src/views/OA/fwgl/fwsq/FwglForm.vue | 4 +- src/views/bpm/model/index.vue | 8 +- 10 files changed, 748 insertions(+), 32 deletions(-) create mode 100644 src/components/bpmnProcessDesigner/package/designer/ProcessViewerForm.vue diff --git a/.env b/.env index 0cf26f5..55f15ad 100644 --- a/.env +++ b/.env @@ -26,7 +26,8 @@ VITE_AI_URL = http://192.168.45.135:8000 #Onlyoffice相关 ; VITE_ONLY_URL = http://140.143.164.40:48080 -VITE_ONLY_URL = http://192.168.1.15:48080 +VITE_ONLY_URL = http://192.168.1.44:48080 +; VITE_ONLY_URL = http://192.168.1.15:48080 # 默认账户密码 VITE_APP_DEFAULT_LOGIN_TENANT = 君风科技 diff --git a/components.d.ts b/components.d.ts index 6de4ae8..d623349 100644 --- a/components.d.ts +++ b/components.d.ts @@ -13,6 +13,7 @@ declare module 'vue' { BpmnProcessDesignerPackageDesignerProcessDesigner: typeof import('./src/components/bpmnProcessDesigner/package/designer/ProcessDesigner.vue')['default'] BpmnProcessDesignerPackageDesignerProcessDesigner2: typeof import('./src/components/bpmnProcessDesigner/package/designer/ProcessDesigner2.vue')['default'] BpmnProcessDesignerPackageDesignerProcessViewer: typeof import('./src/components/bpmnProcessDesigner/package/designer/ProcessViewer.vue')['default'] + BpmnProcessDesignerPackageDesignerProcessViewerForm: typeof import('./src/components/bpmnProcessDesigner/package/designer/ProcessViewerForm.vue')['default'] BpmnProcessDesignerPackagePaletteProcessPalette: typeof import('./src/components/bpmnProcessDesigner/package/palette/ProcessPalette.vue')['default'] BpmnProcessDesignerPackagePenalBaseElementBaseInfo: typeof import('./src/components/bpmnProcessDesigner/package/penal/base/ElementBaseInfo.vue')['default'] BpmnProcessDesignerPackagePenalCustomConfigComponentsBoundaryEventTimer: typeof import('./src/components/bpmnProcessDesigner/package/penal/custom-config/components/BoundaryEventTimer.vue')['default'] @@ -143,7 +144,6 @@ declare module 'vue' { RouterView: typeof import('vue-router')['RouterView'] SearchSrcSearch: typeof import('./src/components/Search/src/Search.vue')['default'] SelectBpmModelSelectModelForm: typeof import('./src/components/SelectBpmModel/SelectModelForm.vue')['default'] - SelectMappingMultiple: typeof import('./src/components/SelectMappingMultiple/index.vue')['default'] SelectMappingSelectMapping: typeof import('./src/components/SelectMapping/SelectMapping.vue')['default'] ShortcutDateRangePicker: typeof import('./src/components/ShortcutDateRangePicker/index.vue')['default'] SimpleProcessDesignerSrcAddNode: typeof import('./src/components/SimpleProcessDesigner/src/addNode.vue')['default'] diff --git a/src/api/home/fwgl/index.ts b/src/api/home/fwgl/index.ts index 0371e12..c56f492 100644 --- a/src/api/home/fwgl/index.ts +++ b/src/api/home/fwgl/index.ts @@ -21,6 +21,7 @@ export interface FwglVO { processInstanceId: string // 流程实例的编号 userId: number // 申请人的用户编号 status: number // 审批状态 + createTime: number startUserSelectAssignees:string | object //启动用户选择的用户信息 curfullpath:string // 当前表单路径 processDefinitionKey:string //流程定义的key diff --git a/src/api/home/question/index.ts b/src/api/home/question/index.ts index 326e502..e0f788c 100644 --- a/src/api/home/question/index.ts +++ b/src/api/home/question/index.ts @@ -6,6 +6,7 @@ export interface QuestionVO { userId: number // 申请人的用户编号 userName: string // 作者 typeId: number // 类型id + createTime: number deptId: number // 部门id deptName: string // 部门名字 title: string // 问题标题 diff --git a/src/components/bpmnProcessDesigner/package/designer/ProcessViewerForm.vue b/src/components/bpmnProcessDesigner/package/designer/ProcessViewerForm.vue new file mode 100644 index 0000000..485b979 --- /dev/null +++ b/src/components/bpmnProcessDesigner/package/designer/ProcessViewerForm.vue @@ -0,0 +1,664 @@ + + + + + diff --git a/src/components/bpmnProcessDesigner/package/index.ts b/src/components/bpmnProcessDesigner/package/index.ts index ce44a3c..839647c 100644 --- a/src/components/bpmnProcessDesigner/package/index.ts +++ b/src/components/bpmnProcessDesigner/package/index.ts @@ -1,6 +1,7 @@ import MyProcessDesigner from './designer' import MyProcessPenal from './penal' import MyProcessViewer from './designer/index2' +import MyProcessViewerForm from './designer/ProcessViewerForm.vue' import './theme/index.scss' import 'bpmn-js/dist/assets/diagram-js.css' @@ -8,4 +9,4 @@ import 'bpmn-js/dist/assets/bpmn-font/css/bpmn.css' import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-codes.css' import 'bpmn-js/dist/assets/bpmn-font/css/bpmn-embedded.css' -export { MyProcessDesigner, MyProcessPenal, MyProcessViewer } +export { MyProcessDesigner, MyProcessPenal, MyProcessViewer, MyProcessViewerForm } diff --git a/src/views/Home/kqnr/qjgl/qjsq/QjglCreate.vue b/src/views/Home/kqnr/qjgl/qjsq/QjglCreate.vue index 90647cc..8984b43 100644 --- a/src/views/Home/kqnr/qjgl/qjsq/QjglCreate.vue +++ b/src/views/Home/kqnr/qjgl/qjsq/QjglCreate.vue @@ -102,13 +102,13 @@
- +
@@ -134,6 +134,8 @@ import ProcessInstanceSimpleViewer import ProcessInstanceBpmnViewer from "@/views/bpm/processInstance/detail/ProcessInstanceBpmnViewer.vue"; import * as ProcessInstanceApi from "@/api/bpm/processInstance"; +import {MyProcessViewerForm} from "@/components/bpmnProcessDesigner/package"; +import * as ModelApi from "@/api/bpm/model"; /** 请假管理 表单 */ defineOptions({ name: 'QjglCreate' }) @@ -143,9 +145,19 @@ const { delView } = useTagsViewStore() // 视图操作 const { push, currentRoute } = useRouter() // 路由 // const dialogVisible = ref(false) // 弹窗的是否展示 // const dialogTitle = ref('') // 弹窗的标题 -const processDefinition = ref({}) // 流程定义 -const processModelView = ref({}) // 流程模型视图 -const processInstanceLoading = ref(false) // 流程实例的加载中 + +/** 流程图的详情按钮操作 */ +const bpmnDetailVisible = ref(false) +const bpmnXML = ref(null) +const bpmnControlForm = ref({ + prefix: 'flowable' +}) +const handleBpmnDetail = async (row) => { + const data = await ModelApi.getModel(row.id) + + bpmnXML.value = data.bpmnXml || '' + bpmnDetailVisible.value = true +} const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 const draftButton = ref(false) @@ -191,17 +203,7 @@ function formatDateHour(dat: number|Date) { return date.getHours(); } const getProcessModelView = async () => { - if (BpmModelType.BPMN === processDefinition.value?.modelType) { - // 重置,解决 BPMN 流程图刷新不会重新渲染问题 - processModelView.value = { - bpmnXml: '' - } - } - const data = await ProcessInstanceApi.getProcessInstanceBpmnModelView(processInstanceid) - if (data) { - processModelView.value = data - } } //获取天数数据模型 const queryParamsDate = reactive({ @@ -476,7 +478,7 @@ console.log(processDefinitionDetail,"processDefinitionDetail") //console.log(userList.value ,"userList.value") } await getNjglData() - await getProcessModelView() + await handleBpmnDetail() }) diff --git a/src/views/Home/question/info/QuestionForm.vue b/src/views/Home/question/info/QuestionForm.vue index bdc5ea1..bc26112 100644 --- a/src/views/Home/question/info/QuestionForm.vue +++ b/src/views/Home/question/info/QuestionForm.vue @@ -65,7 +65,12 @@ - + + @@ -100,13 +105,21 @@ const formData = ref({ deptName: undefined, title: undefined, content: undefined, + createTime: 0, status: undefined, - filePath: undefined, + filePath: [] as string[], module: undefined }) const formRules = reactive({ userName: [{ required: true, message: '作者不能为空', trigger: 'blur' }] }) + +const nDate = ref()//当前时间 +const cDate = ref()//创建时间 +//计算属性更新传递时间 +const cmDate = computed(() => { + return formData.value.createTime? cDate.value : nDate.value; +}) const formRef = ref() // 表单 Ref const getUserInfo = async () => { const users = await getUserProfile() @@ -123,19 +136,45 @@ console.log( users.dept.name ) formData.value.userName = users.nickname } } +const getNow = (date:number)=>{ + const now = new Date(date); + const year = now.getFullYear(); + const month = String(now.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以需要 +1 + const day = String(now.getDate()).padStart(2, '0'); + // console.log("getNow",`${year}-${month}-${day}`) + return `${year}-${month}-${day}`; +} /** 打开弹窗 */ const open = async (type: string, id?: number) => { + nDate.value = getNow(Date.now())//获取当前时间 dialogVisible.value = true dialogTitle.value = t('action.' + type) formType.value = type resetForm() await getUserInfo() + + + // 修改时,设置数据 if (id) { formLoading.value = true try { formData.value = await QuestionApi.getQuestion(id) + cDate.value = getNow(formData.value.createTime)//获取创建时间 + //正文--------------------------- + //去除掉储存信息中多余的中括号判断并不是空的 + let pathLen = 0 + if (formData.value.filePath && formData.value.filePath.length > 0) { + pathLen = formData.value.filePath.length; + } + if (pathLen === 1){ + formData.value.filePath[0] = formData.value.filePath[0].substring(1) + formData.value.filePath[0] = formData.value.filePath[0].substring(0,formData.value.filePath[0].length-1) + }else if (pathLen >= 2){ + formData.value.filePath[0] = formData.value.filePath[0].substring(1) + formData.value.filePath[pathLen-1] = formData.value.filePath[pathLen-1].substring(0,formData.value.filePath[pathLen-1].length-1) + } } finally { formLoading.value = false } @@ -152,6 +191,12 @@ const submitForm = async () => { formLoading.value = true try { const data = formData.value as unknown as QuestionVO + //正文 + if (data.filePath &&data.filePath.length!==0){ + //去除多余空格 + data.filePath = data.filePath.map(path => path.trimStart()); + } + if (formType.value === 'create') { await QuestionApi.createQuestion(data) message.success(t('common.createSuccess')) @@ -159,6 +204,7 @@ const submitForm = async () => { await QuestionApi.updateQuestion(data) message.success(t('common.updateSuccess')) } + dialogVisible.value = false // 发送操作成功的事件 emit('success') diff --git a/src/views/OA/fwgl/fwsq/FwglForm.vue b/src/views/OA/fwgl/fwsq/FwglForm.vue index 441ce4a..d544f6b 100644 --- a/src/views/OA/fwgl/fwsq/FwglForm.vue +++ b/src/views/OA/fwgl/fwsq/FwglForm.vue @@ -172,9 +172,9 @@ const formData = ref({ fwglHqName: undefined, createTime: 0, fileStatus:undefined, - filePath: undefined, + filePath: [] as string[], attachStatus: undefined, - attachPath: undefined, + attachPath: [] as string[], deptId: undefined, deptName: undefined, processInstanceId: undefined, diff --git a/src/views/bpm/model/index.vue b/src/views/bpm/model/index.vue index 8a98cf9..645f9d8 100644 --- a/src/views/bpm/model/index.vue +++ b/src/views/bpm/model/index.vue @@ -68,7 +68,7 @@ - +