|
@@ -100,10 +100,11 @@
|
|
|
>
|
|
|
</div>
|
|
|
<div class="t-tabs__content">
|
|
|
- <div class="t-tab-panel">
|
|
|
+ <div class="t-tab-panel sop-step-body-parent">
|
|
|
<t-form
|
|
|
ref="form"
|
|
|
colon
|
|
|
+ id="flow-wrap"
|
|
|
class="sop-step-body"
|
|
|
:rules="rules"
|
|
|
:data="formData"
|
|
@@ -217,7 +218,7 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup name="SopStep">
|
|
|
-import { ref, computed, watch } from 'vue';
|
|
|
+import { ref, computed, watch, nextTick } from 'vue';
|
|
|
import {
|
|
|
ErrorCircleFilledIcon,
|
|
|
ChevronLeftDoubleIcon,
|
|
@@ -239,6 +240,7 @@ import {
|
|
|
import { objCopy, timeNumberToText } from '@/utils/tool';
|
|
|
import { timestampFilter } from '@/utils/filter';
|
|
|
import bus from '@/utils/bus';
|
|
|
+import html2canvas from 'html2canvas';
|
|
|
|
|
|
const deviceTableData = ref([]);
|
|
|
const getTableData = (val) => {
|
|
@@ -256,6 +258,10 @@ const props = defineProps({
|
|
|
return {};
|
|
|
},
|
|
|
},
|
|
|
+ screenshot: {
|
|
|
+ type: Boolean,
|
|
|
+ default: false,
|
|
|
+ },
|
|
|
});
|
|
|
const emit = defineEmits(['confirm']);
|
|
|
|
|
@@ -406,6 +412,45 @@ const initNew = async () => {
|
|
|
allSteps.value = [res.formProperties];
|
|
|
switchStep(allSteps.value[0]);
|
|
|
};
|
|
|
+
|
|
|
+const makeDomImg = () => {
|
|
|
+ return new Promise((rs) => {
|
|
|
+ let targetDom = document.querySelector('#flow-wrap');
|
|
|
+ let copyDom = targetDom.cloneNode(true);
|
|
|
+ // copyDom.setAttribute('id', 'copyDom'); // 更改id 避免与targetDom id重复
|
|
|
+ copyDom.style.width = targetDom.scrollWidth + 'px';
|
|
|
+ copyDom.style.height = targetDom.scrollHeight + 'px';
|
|
|
+ copyDom.style.overflow = 'visible';
|
|
|
+ let parent = targetDom.parentNode;
|
|
|
+ parent.appendChild(copyDom);
|
|
|
+ html2canvas(copyDom, {
|
|
|
+ useCORS: true,
|
|
|
+ height: targetDom.scrollHeight,
|
|
|
+ width: targetDom.scrollWidth,
|
|
|
+ }).then(function (canvas) {
|
|
|
+ const imgData = canvas.toDataURL();
|
|
|
+ rs(imgData);
|
|
|
+ copyDom.remove();
|
|
|
+ });
|
|
|
+ });
|
|
|
+};
|
|
|
+
|
|
|
+const loopGetScreenImg = async () => {
|
|
|
+ let imgUrlArr = [];
|
|
|
+ for (let i = 0; i < allSteps.value.length; i++) {
|
|
|
+ let item = allSteps.value[i];
|
|
|
+ switchStep(item);
|
|
|
+ await new Promise((rs) => {
|
|
|
+ setTimeout(() => {
|
|
|
+ rs();
|
|
|
+ }, 500);
|
|
|
+ });
|
|
|
+ let url = await makeDomImg();
|
|
|
+ imgUrlArr.push(url);
|
|
|
+ }
|
|
|
+ console.log('imgUrlArr', imgUrlArr);
|
|
|
+};
|
|
|
+
|
|
|
const initFill = async () => {
|
|
|
loading.value = true;
|
|
|
const res = await sopFlowViewApi({ flowId });
|
|
@@ -420,7 +465,7 @@ const initFill = async () => {
|
|
|
v.writable = false;
|
|
|
});
|
|
|
});
|
|
|
- if (res.currFlowTaskResult) {
|
|
|
+ if (res.currFlowTaskResult && !props.screenshot) {
|
|
|
res.currFlowTaskResult.formProperty =
|
|
|
res.currFlowTaskResult.formProperty.map((item) => {
|
|
|
//设备出库时间和设备入库时间,赋予默认值为当前时间
|
|
@@ -467,6 +512,14 @@ const initFill = async () => {
|
|
|
item && switchStep(item);
|
|
|
sessionStorage.removeItem('switchSetup');
|
|
|
}
|
|
|
+
|
|
|
+ // setTimeout(async () => {
|
|
|
+ // let imgUrl = await makeDomImg();
|
|
|
+ // console.log(imgUrl);
|
|
|
+ // });
|
|
|
+ if (props.screenshot) {
|
|
|
+ loopGetScreenImg();
|
|
|
+ }
|
|
|
};
|
|
|
const initEdit = async () => {
|
|
|
loading.value = true;
|