|
@@ -77,6 +77,7 @@ import BatchUploadFile from "./BatchUploadFile.vue";
|
|
|
import {editReport, handleCopy} from "@/utils/reportUtil";
|
|
import {editReport, handleCopy} from "@/utils/reportUtil";
|
|
|
import Designer from '@grapecity-software/spread-sheets-designer-vue'
|
|
import Designer from '@grapecity-software/spread-sheets-designer-vue'
|
|
|
import { ElLoading } from "element-plus"
|
|
import { ElLoading } from "element-plus"
|
|
|
|
|
+import {getPDF2, getPDFByInspection} from "@/api/pressure2/standard/template";
|
|
|
|
|
|
|
|
defineOptions({ name: 'SpreadViewer' });
|
|
defineOptions({ name: 'SpreadViewer' });
|
|
|
|
|
|
|
@@ -118,6 +119,7 @@ const showSpread=ref(true)
|
|
|
const previewContainer = ref(null)
|
|
const previewContainer = ref(null)
|
|
|
let sheetData = {};
|
|
let sheetData = {};
|
|
|
const designerKey = import.meta.env.VITE_SPREADJS_DESIGNER_KEY
|
|
const designerKey = import.meta.env.VITE_SPREADJS_DESIGNER_KEY
|
|
|
|
|
+const nodeEnv = import.meta.env.VITE_NODE_ENV
|
|
|
const licenseKey = import.meta.env.VITE_SPREADJS_LICENSE_KEY
|
|
const licenseKey = import.meta.env.VITE_SPREADJS_LICENSE_KEY
|
|
|
GC.Spread.Sheets.Designer.LicenseKey = designerKey
|
|
GC.Spread.Sheets.Designer.LicenseKey = designerKey
|
|
|
//同时对SpreadJS与ExcelIO进行授权
|
|
//同时对SpreadJS与ExcelIO进行授权
|
|
@@ -170,7 +172,7 @@ const initPreview = async () => {
|
|
|
let blob = await fetchTemplateData();
|
|
let blob = await fetchTemplateData();
|
|
|
if (!blob) return;
|
|
if (!blob) return;
|
|
|
|
|
|
|
|
- await previewSpread.open(blob, async () => {
|
|
|
|
|
|
|
+ previewSpread.open(blob, async () => {
|
|
|
console.log('预览加载完成');
|
|
console.log('预览加载完成');
|
|
|
let sheets = previewSpread.sheets;
|
|
let sheets = previewSpread.sheets;
|
|
|
//DynamicTbValApi.getDynamicTbValByIns(props.instanceId)
|
|
//DynamicTbValApi.getDynamicTbValByIns(props.instanceId)
|
|
@@ -210,6 +212,7 @@ const initPreview = async () => {
|
|
|
pdfLoading.value = true;
|
|
pdfLoading.value = true;
|
|
|
await openPdf();
|
|
await openPdf();
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ showPdf.value = false;
|
|
|
loading.value = false;
|
|
loading.value = false;
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
@@ -247,7 +250,22 @@ const openPdf = async () => {
|
|
|
});
|
|
});
|
|
|
await previewSpread.save(async function (blob) {
|
|
await previewSpread.save(async function (blob) {
|
|
|
formData.append('file', blob)
|
|
formData.append('file', blob)
|
|
|
- const response = await getPDF(formData)
|
|
|
|
|
|
|
+ let response = null
|
|
|
|
|
+ if (nodeEnv == 'uat') {
|
|
|
|
|
+ if (props.initData.manualUrl){
|
|
|
|
|
+ formData.append('manualUrl', props.initData.manualUrl)
|
|
|
|
|
+ response = await getPDFByInspection(formData)
|
|
|
|
|
+ }else{
|
|
|
|
|
+ response = await getPDF2(formData)
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ if (props.initData.manualUrl){
|
|
|
|
|
+ formData.append('manualUrl', props.initData.manualUrl)
|
|
|
|
|
+ response = await getPDFByInspection(formData)
|
|
|
|
|
+ }else{
|
|
|
|
|
+ response = await getPDF(formData)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
if (response) {
|
|
if (response) {
|
|
|
const flow = new Blob([response], { type: 'application/pdf' })
|
|
const flow = new Blob([response], { type: 'application/pdf' })
|
|
|
recordSource.value = window.URL.createObjectURL(flow);
|
|
recordSource.value = window.URL.createObjectURL(flow);
|
|
@@ -355,12 +373,16 @@ let sheetNum = ref(2)
|
|
|
* 生成续页
|
|
* 生成续页
|
|
|
* @param {boolean} isSetTimeout 是否设置定时器
|
|
* @param {boolean} isSetTimeout 是否设置定时器
|
|
|
*/
|
|
*/
|
|
|
-const handleGenerate = (isSetTimeout) => {
|
|
|
|
|
|
|
+const handleGenerate = async (isSetTimeout) => {
|
|
|
if (!generateData || !generateData.sheetName){
|
|
if (!generateData || !generateData.sheetName){
|
|
|
ElMessage.error('请配置模板续页名称')
|
|
ElMessage.error('请配置模板续页名称')
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
- const generate = async () => {
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 生成续页
|
|
|
|
|
+ * @param isAdd 是否继续生成
|
|
|
|
|
+ */
|
|
|
|
|
+ const generate = async (isAdd) => {
|
|
|
|
|
|
|
|
const sheet = previewSpread.getSheetFromName(generateData.sheetName)
|
|
const sheet = previewSpread.getSheetFromName(generateData.sheetName)
|
|
|
if (sheet.visible()) {
|
|
if (sheet.visible()) {
|
|
@@ -387,7 +409,7 @@ const handleGenerate = (isSetTimeout) => {
|
|
|
for (let j = 0; j <= rowCount; j++) {
|
|
for (let j = 0; j <= rowCount; j++) {
|
|
|
const bindingPath = sheet.getBindingPath(row + j, col + i)
|
|
const bindingPath = sheet.getBindingPath(row + j, col + i)
|
|
|
if (bindingPath) {
|
|
if (bindingPath) {
|
|
|
- let newPath = bindingPath.split('_')[0] + "_" + (parseInt(bindingPath.split('_')[1]) + rowCount + 1) * (sheetNum.value - 1)
|
|
|
|
|
|
|
+ let newPath = bindingPath.split('_')[0] + "_" + (parseInt(bindingPath.split('_')[1]) + (rowCount + 1) * (sheetNum.value - 1))
|
|
|
sheet2.setBindingPath(row + j, col + i, newPath)
|
|
sheet2.setBindingPath(row + j, col + i, newPath)
|
|
|
if (!dynamicTbColRespVOListCode.includes(newPath)){
|
|
if (!dynamicTbColRespVOListCode.includes(newPath)){
|
|
|
colPathList.push(newPath)
|
|
colPathList.push(newPath)
|
|
@@ -396,20 +418,59 @@ const handleGenerate = (isSetTimeout) => {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
sheetNum.value = sheetNum.value + 1
|
|
sheetNum.value = sheetNum.value + 1
|
|
|
- await DynamicTbColApi.createBatchByCodes(colPathList,props.initData.templateId)
|
|
|
|
|
|
|
+ if (colPathList.length != 0){
|
|
|
|
|
+ await DynamicTbColApi.createBatchByCodes(colPathList,props.initData.templateId)
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isAdd){
|
|
|
|
|
+ let col = parseInt(generateData.copyRange.topLeft.split(',')[0])
|
|
|
|
|
+ let row = parseInt(generateData.copyRange.topLeft.split(',')[1])
|
|
|
|
|
+ let colCount = parseInt(generateData.copyRange.topRight.split(',')[0]) - col
|
|
|
|
|
+ let rowCount = parseInt(generateData.copyRange.bottomLeft.split(',')[1]) - row
|
|
|
|
|
+ if (!sheet2) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (generateData.hidden) {
|
|
|
|
|
+ // 判断第一行,如果全部为空,则隐藏
|
|
|
|
|
+ let isEmpty = true;
|
|
|
|
|
+ for (let i = 0; i < colCount; i++) {
|
|
|
|
|
+ const range = sheet2.getCell(row, col + i)
|
|
|
|
|
+ if (range.value()) {
|
|
|
|
|
+ isEmpty = false;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isEmpty) {
|
|
|
|
|
+ sheet2.visible(false)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ // 判断最后一行,如果不为空,自动续页
|
|
|
|
|
+ let isNotEmpty = false;
|
|
|
|
|
+ for (let i = 0; i < colCount; i++) {
|
|
|
|
|
+ const range = sheet2.getCell(row + rowCount, col + i)
|
|
|
|
|
+ if (range.value()) {
|
|
|
|
|
+ isNotEmpty = true;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (isNotEmpty) {
|
|
|
|
|
+ await generate(true)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (isSetTimeout) {
|
|
if (isSetTimeout) {
|
|
|
const loading = ElLoading.service({text: '正在生成中'})
|
|
const loading = ElLoading.service({text: '正在生成中'})
|
|
|
- setTimeout(() => {
|
|
|
|
|
|
|
+ setTimeout(async () => {
|
|
|
try {
|
|
try {
|
|
|
- generate()
|
|
|
|
|
|
|
+ await generate(false)
|
|
|
} finally {
|
|
} finally {
|
|
|
loading.close()
|
|
loading.close()
|
|
|
}
|
|
}
|
|
|
}, 20)
|
|
}, 20)
|
|
|
} else {
|
|
} else {
|
|
|
- generate()
|
|
|
|
|
|
|
+ const loading = ElLoading.service({text: '生成续页中,数据量较大'})
|
|
|
|
|
+ await generate(true)
|
|
|
|
|
+ loading.close()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
/**
|
|
/**
|