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 @@
-
+
{{ scope.row.name }}
@@ -224,7 +224,7 @@