src/views/workflow/processDefinition/components/processPreview.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/workflow/processDefinition/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/views/workflow/processDefinition/components/processPreview.vue
@@ -1,12 +1,10 @@ <template> <el-dialog v-model="data.visible" title="预览" width="70%" append-to-body> <div v-if="data.type === 'png' && data.xmlStr" style="align: center"> <el-dialog v-model="data.visible" title="预览" width="70%" append-to-body destroy-on-close> <div v-if="data.type === 'bpmn' && data.xmlStr"> <BpmnViewer ref="bpmnViewerRef"></BpmnViewer> </div> <div v-if="data.type === 'xml'" class="xml-data"> <div v-for="(xml, index) in data.url" :key="index"> <pre class="font">{{ xml }}</pre> </div> <div v-if="data.type === 'xml' && data.xmlStr"> <highlightjs language="xml" :code="data.xmlStr" /> </div> <template #footer> <span v-if="data.type === 'xml'" class="dialog-footer"> </span> @@ -19,20 +17,19 @@ const data = reactive({ visible: false, url: new Array<string>(), type: '', xmlStr: '' }); const bpmnViewerRef = ref<InstanceType<typeof BpmnViewer>>(); type PreviewType = 'xml' | 'bpmn'; //打开 const openDialog = (url: string[], type: string) => { const openDialog = (xmlStr: string, type: PreviewType) => { data.visible = true; data.url = url; data.xmlStr = xmlStr; data.type = type; /** 流程图 */ if (type === 'png') { data.xmlStr = url.join('\n'); if (type === 'bpmn') { /** 必须放在nextTick 否则第一次打开为空 */ nextTick(() => { bpmnViewerRef.value?.initXml(data.xmlStr); @@ -46,23 +43,3 @@ openDialog }); </script> <style> .xml-data { background-color: #2b2b2b; border-radius: 5px; color: #c6c6c6; word-break: break-all; overflow-y: scroll; overflow-x: hidden; box-sizing: border-box; padding: 8px 0px; height: 500px; width: inherit; line-height: 1px; overflow: auto; } .font { font-family: '幼圆'; font-weight: 500; } </style> src/views/workflow/processDefinition/index.vue
@@ -61,12 +61,12 @@ </el-table-column> <el-table-column align="center" prop="resourceName" label="流程XML" width="100" :show-overflow-tooltip="true"> <template #default="scope"> <el-link type="primary" @click="clickPreviewXML(scope.row.id)">{{ scope.row.resourceName }}</el-link> <el-link type="primary" @click="clickPreview(scope.row.id, 'xml')">{{ scope.row.resourceName }}</el-link> </template> </el-table-column> <el-table-column align="center" prop="diagramResourceName" label="流程图片" width="100" :show-overflow-tooltip="true"> <template #default="scope"> <el-link type="primary" @click="clickPreviewImg(scope.row.id)">{{ scope.row.diagramResourceName }}</el-link> <el-link type="primary" @click="clickPreview(scope.row.id, 'bpmn')">{{ scope.row.diagramResourceName }}</el-link> </template> </el-table-column> <el-table-column align="center" prop="suspensionState" label="状态" width="80"> @@ -293,7 +293,6 @@ const uploadDialogLoading = ref(false); const processDefinitionList = ref<ProcessDefinitionVO[]>([]); const processDefinitionHistoryList = ref<ProcessDefinitionVO[]>([]); const url = ref<string[]>([]); const categoryOptions = ref<CategoryOption[]>([]); const categoryName = ref(''); /** 部署文件分类选择 */ @@ -400,28 +399,18 @@ loading.value = false; }; //预览图片 const clickPreviewImg = async (id: string) => { type PreviewType = 'xml' | 'bpmn'; //预览 公共方法 const clickPreview = async (id: string, type: PreviewType) => { loading.value = true; const resp = await definitionXml(id); if (previewRef.value) { url.value = []; url.value = resp.data.xml; const xmlStr = resp.data.xmlStr; loading.value = false; previewRef.value.openDialog(url.value, 'png'); previewRef.value.openDialog(xmlStr, type); } }; //预览xml const clickPreviewXML = async (id: string) => { loading.value = true; const resp = await definitionXml(id); if (previewRef.value) { url.value = []; url.value = resp.data.xml; loading.value = false; previewRef.value.openDialog(url.value, 'xml'); } }; /** 删除按钮操作 */ const handleDelete = async (row?: ProcessDefinitionVO) => { const id = row?.id || ids.value;