add 插入签审信息

This commit is contained in:
赵霄
2024-01-31 17:36:26 +08:00
parent 71b920f5a8
commit 02a6fb5e35
2 changed files with 281 additions and 16 deletions
+280 -15
View File
@@ -34,11 +34,16 @@
<a-button @click="equationOne">目次</a-button>
</a-button-group>
<a-button-group>
<a-button-group style="margin-bottom: 10px">
<a-button @click="addNewForeword">前言新制定标准</a-button>
<a-button @click="addReviseForeword">前言修订标准</a-button>
</a-button-group>
<a-button-group v-if="!!form.processId">
<a-button @click="addPublicationChapter">添加发布章</a-button>
<a-button @click="insertSignatureInfo">插入签审信息</a-button>
</a-button-group>
<!-- 企标基础信息读取 -->
<a-modal v-model="initModalVisible" title="企标文件初始化" @ok="handleInitModalConfirm">
<a-form-model id="components-form-demo-validate-other" :model="form" v-bind="formItemLayout"
@@ -76,6 +81,7 @@
import { BORDER_DISABLE } from '@/config'
import moment from 'moment'
import { imageSvg } from '@/pages/page1/common/image'
import _axios from '../../../plugins/axios2'
const debounce = function (fn, delay) {
let timer = null
@@ -246,14 +252,8 @@ export default {
oTable8.SetTableBorderInsideV('single', 0, 0, 255, 255, 255)
oTable8.SetTableBorderInsideH('single', 0, 0, 255, 255, 255)
const oParagraph8Left = oTable8
.GetCell(0, 0)
.GetContent()
.GetElement(0)
const oParagraph8Right = oTable8
.GetCell(0, 1)
.GetContent()
.GetElement(0)
const oParagraph8Left = oTable8.GetCell(0, 0).GetContent().GetElement(0)
const oParagraph8Right = oTable8.GetCell(0, 1).GetContent().GetElement(0)
// const oNextParagraph10 = Api.CreateParagraph();
// var oStroke10 = Api.CreateStroke(0, Api.CreateSolidFill(Api.CreateRGBColor(255, 0, 13)));
// var oDrawing10 = Api.CreateShape("rect", 4110900, 102400, null, oStroke10);
@@ -274,6 +274,7 @@ export default {
oParagraph8Right.SetFontFamily('Times New Roman')
// oParagraph8Right.AddElement(1,oParagraph1)
oParagraph8Right.SetJc('right')
oParagraph8Right.SetSpacingLine(240, 'auto')
oDocument.InsertContent([oTable8])
const oParagraph2 = Api.CreateParagraph()
@@ -284,6 +285,7 @@ export default {
oParagraph2.SetJc('center')
oParagraph2.SetBold(false)
oParagraph2.SetPosition(6)
oParagraph2.SetSpacingLine(240, 'auto')
oDocument.InsertContent([oParagraph2])
// const oParagraph4 = Api.CreateParagraph();
@@ -310,6 +312,7 @@ export default {
oParagraph4.SetFontSize(28)
oParagraph4.SetPosition(0)
oParagraph4.SetBold(false)
oParagraph4.SetSpacingLine(240, 'auto')
oDocument.InsertContent([oParagraph4])
const oParagraphOne = Api.CreateParagraph()
@@ -326,6 +329,7 @@ export default {
oParagraphOne.SetSpacingBefore(0)
oParagraphOne.SetSpacingAfter(0)
oParagraphOne.SetBold(false)
oParagraphOne.SetSpacingLine(240, 'auto')
oDocument.InsertContent([oParagraphOne])
const oParagraphLine1 = Api.CreateParagraph()
@@ -360,6 +364,7 @@ export default {
oParagraph5.SetColor(0, 0, 7, false)
oParagraph5.SetFontFamily('黑体')
oParagraph5.SetBold(false)
oParagraph5.SetSpacingLine(240, 'auto')
var oDocContent = oDrawing.GetDocContent()
oDocContent.AddElement(0, oParagraph5)
@@ -377,13 +382,14 @@ export default {
oParagraph6.SetColor(0, 0, 7, false)
oParagraph6.SetFontFamily('宋体')
oParagraph6.SetBold(true)
oParagraph6.SetSpacingLine(240, 'auto')
oDocContent.AddElement(1, oParagraph6)
// oDocument.InsertContent([oParagraph6]);
const oNextParagraph2 = Api.CreateParagraph()
oNextParagraph2.SetSpacingBefore(1208)
oNextParagraph2.SetSpacingAfter(2460)
oNextParagraph2.SetSpacingAfter(1508)
var oStroke = Api.CreateStroke(0, Api.CreateSolidFill(Api.CreateRGBColor(255, 0, 13)))
var oDrawing = Api.CreateShape('rect', 6110900, 1562400, null, oStroke)
var oDrawing = Api.CreateShape('rect', 6110900, 2233900, null, oStroke)
oDrawing.SetLockValue('noSelect', true)
oNextParagraph2.AddDrawing(oDrawing)
oDocument.InsertContent([oNextParagraph2])
@@ -440,7 +446,9 @@ export default {
issueCN.SetFontSize(28)
oParagraph7Left.AddElement(issueCN)
oParagraph7Left.SetSpacingAfter(10)
oParagraph7Left.SetSpacingAfter(10)
oParagraph7Left.SetJc('left')
oParagraph7Left.SetSpacingLine(240, 'auto')
const impCN = Api.CreateRun()
impCN.SetFontFamily('黑体')
@@ -449,6 +457,7 @@ export default {
oParagraph7Right.AddElement(impCN)
oParagraph7Right.SetJc('right')
oParagraph7Right.SetSpacingAfter(10)
oParagraph7Right.SetSpacingLine(240, 'auto')
oDocument.InsertContent([oTable7])
const oParagraphLine2 = Api.CreateParagraph()
@@ -467,13 +476,18 @@ export default {
oParagraph10.SetJc('center')
oParagraph10.SetBold(false)
oParagraph10.SetPosition(0)
oParagraph10.SetSpacingLine(240, 'auto')
oDocument.InsertContent([oParagraph10])
oParagraph10.Search('发布')[0].SetSpacing(3)
oParagraph10.Search('发')[0].SetFontSize(14)
oParagraph10.Search('发')[0].SetPosition(1)
oParagraph10.Search('布')[0].SetFontSize(14)
oParagraph10.Search('布')[0].SetPosition(1)
oDocument.CreateSection(oParagraph10)
// 开新页
oParagraph10.AddPageBreak()
const oParagraph11 = Api.CreateParagraph()
oDocument.InsertContent([oParagraph11])
oDocument.CreateSection(oParagraph11)
let oSection1 = oDocument.GetSections()[0]
oSection1.SetTitlePage(true)
oSection1.SetHeaderDistance(0)
@@ -533,10 +547,10 @@ export default {
}
})
let timer = setTimeout(() => {
clearTimeout(timer)
timer = null
// 初始化前言,只有前言标题的版本
this.initForeword()
clearTimeout(timer)
timer = null
}, 500)
},
@@ -1947,7 +1961,6 @@ export default {
const AllContentControls = oDocument.GetAllContentControls()
let flag = false
for (let i = 0; i < AllContentControls.length; i++) {
console.log(AllContentControls[i].GetAlias())
// 避免重复创建参考文献
if (AllContentControls[i].GetAlias() === 'sinotruk.references') {
flag = true
@@ -2001,6 +2014,258 @@ export default {
console.log(e)
}
})
},
/**
* 添加发布章
*/
addPublicationChapter () {
this.ctx.callCommand(() => {
try {
const oDocument = Api.GetDocument()
const GetAllDrawingObjects = oDocument.GetAllShapes()
// 获取在封面预留的添加发布章的区域
let oDocContentOne
for (let i = 0; i < GetAllDrawingObjects.length; i++) {
if (GetAllDrawingObjects[i].GetLockValue('noSelect')) {
oDocContentOne = GetAllDrawingObjects[i].GetDocContent()
break
}
}
oDocContentOne.RemoveAllElements()
const paragraph = Api.CreateParagraph()
paragraph.AddText('受 控')
paragraph.SetFontSize(48)
paragraph.SetColor(255, 0, 13, false)
paragraph.SetJc('center')
paragraph.SetBold(true)
paragraph.SetSpacingAfter(100)
// 创建图形
const rectParagraph = Api.CreateParagraph()
const stroke = Api.CreateStroke(24000, Api.CreateSolidFill(Api.CreateRGBColor(255, 0, 13)))
const oDrawing = Api.CreateShape('rect', 1518483, 708475, null, stroke)
rectParagraph.AddDrawing(oDrawing)
rectParagraph.SetJc('center')
const rectDocContent = oDrawing.GetContent()
const rectTextParagh = rectDocContent.GetElement(0)
rectTextParagh.AddText('正 本')
rectTextParagh.SetFontSize(68)
rectTextParagh.SetColor(255, 0, 13, false)
rectTextParagh.SetBold(true)
rectTextParagh.SetSpacingBefore(0)
rectTextParagh.SetSpacingAfter(0)
oDocContentOne.AddElement(paragraph)
oDocContentOne.Push(paragraph)
oDocContentOne.AddElement(rectParagraph)
oDocContentOne.Push(rectParagraph)
} catch (e) {
console.log(e)
}
})
},
/**
* 插入签审信息
*/
async insertSignatureInfo () {
Asc.scope.signatureInfo = await this.getSignatureInfo()
Asc.scope.standCode = this.form.standCode
Asc.scope.standCNName = this.form.standName
Asc.scope.downloadUrl = window._CONFIG.downloadUrl
this.ctx.callCommand(() => {
try {
const oDocument = Api.GetDocument()
// 签审信息只创建一次
const AllContentControls = oDocument.GetAllContentControls()
let flag = false
for (let i = 0; i < AllContentControls.length; i++) {
if (AllContentControls[i].GetAlias() === 'sinotruk.signatureInfo') {
flag = true
break
}
}
if (flag) {
return
}
const count = oDocument.GetElementsCount()
let coverEndParagraph, paragraphIndex
for (let i = 0; i < count; i++) {
const element = oDocument.GetElement(i)
if ('paragraph' === element.GetClassType() && element.GetText().indexOf('中国重型汽车集团有限公司') !== -1 && element.GetText().indexOf('发布') !== -1) {
paragraphIndex = i + 1
coverEndParagraph = element
}
}
if (!coverEndParagraph) {
return
}
const emptyParagraph = Api.CreateParagraph()
oDocument.AddElement(paragraphIndex, emptyParagraph)
// 最上面的黑体标题
const oRunSubTitle = Api.CreateRun()
const oParagraphSubTitle = Api.CreateParagraph()
oRunSubTitle.AddText('中国重型汽车集团有限公司企业标准')
const oInlineLvlSdtSubTitle = Api.CreateInlineLvlSdt()
oInlineLvlSdtSubTitle.SetAlias('sinotruk.signatureInfo')
oInlineLvlSdtSubTitle.AddElement(oRunSubTitle, 0)
oParagraphSubTitle.AddInlineLvlSdt(oInlineLvlSdtSubTitle)
// oParagraphSubTitle.AddText(Asc.scope.standCNName);
oParagraphSubTitle.SetFontSize(32)
oParagraphSubTitle.SetSpacingBefore(300)
oParagraphSubTitle.SetSpacingAfter(300)
oParagraphSubTitle.SetFontFamily('黑体')
oParagraphSubTitle.SetColor(0, 0, 0)
oParagraphSubTitle.SetJc('center')
oParagraphSubTitle.SetBold(false)
emptyParagraph.InsertParagraph(oParagraphSubTitle, 'after')
// 责任签署的大标题
const oParagraphLargeTitle = Api.CreateParagraph()
oParagraphLargeTitle.AddText('责任签署')
oParagraphLargeTitle.SetFontSize(96)
oParagraphLargeTitle.SetSpacing(6)
oParagraphLargeTitle.SetSpacingAfter(300)
oParagraphLargeTitle.SetFontFamily('宋体')
oParagraphLargeTitle.SetColor(0, 0, 0)
oParagraphLargeTitle.SetJc('center')
oParagraphSubTitle.InsertParagraph(oParagraphLargeTitle, 'after')
// 计划编号
const oParagraphPlanNum = Api.CreateParagraph()
oParagraphPlanNum.AddText('计划编号:')
oParagraphPlanNum.SetFontFamily('宋体')
oParagraphPlanNum.SetFontSize(21)
oParagraphPlanNum.SetJc('left')
oParagraphPlanNum.SetSpacingAfter(0)
oParagraphPlanNum.SetSpacingBefore(0)
oParagraphPlanNum.SetColor(0, 0, 0)
oParagraphPlanNum.SetSpacingLine(1.5 * 240, 'auto')
oParagraphLargeTitle.InsertParagraph(oParagraphPlanNum, 'after')
// 标准名称
const oParagraphStandardName = Api.CreateParagraph()
oParagraphStandardName.AddText('标准名称:' + Asc.scope.standCode + ' ' + Asc.scope.standCNName)
oParagraphStandardName.SetFontFamily('宋体')
oParagraphStandardName.SetFontSize(21)
oParagraphStandardName.SetJc('left')
oParagraphStandardName.SetSpacingAfter(0)
oParagraphStandardName.SetSpacingBefore(0)
oParagraphStandardName.SetColor(0, 0, 0)
oParagraphStandardName.SetSpacingLine(1.5 * 240, 'auto')
oParagraphPlanNum.InsertParagraph(oParagraphStandardName, 'after')
// 横线
const oParagraphLine = Api.CreateParagraph()
const oFill = Api.CreateSolidFill(Api.CreateRGBColor(0, 0, 0))
const oStroke = Api.CreateStroke(0, Api.CreateNoFill())
const oDrawing = Api.CreateShape('rect', 6110900, 9000, oFill, oStroke)
oDrawing.SetWrappingStyle('inline')
oParagraphLine.AddDrawing(oDrawing)
oDrawing.SetDistances(0, 541, 0, 0)
oParagraphStandardName.InsertParagraph(oParagraphLine, 'after')
// 签章信息部分
const oParagraphBox = Api.CreateParagraph()
oParagraphBox.SetSpacingBefore(400)
const oStrokeBox = Api.CreateStroke(0, Api.CreateSolidFill(Api.CreateRGBColor(255, 0, 13)))
const oDrawingBox = Api.CreateShape('rect', 6110900, 6120900, null, oStrokeBox)
oDrawingBox.SetVerticalTextAlign('top')
oParagraphBox.AddDrawing(oDrawingBox)
oParagraphLine.InsertParagraph(oParagraphBox, 'after')
const signatureInfo = Asc.scope.signatureInfo
if (signatureInfo) {
// 内部的信息及手写章等内容
const oDocContent = oDrawingBox.GetDocContent()
const labelList = Object.keys(signatureInfo)
for (const key of labelList) {
const oParagraphLineOne = Api.CreateParagraph()
const oRunLabel = Api.CreateRun()
oRunLabel.AddText(key)
oRunLabel.SetPosition(48)
if (key.length === 4) {
oRunLabel.SetSpacing(80)
} else {
oRunLabel.SetSpacing(20)
}
oParagraphLineOne.AddElement(oRunLabel)
const oRunSymbol = Api.CreateRun()
oRunSymbol.AddText('')
oRunSymbol.SetPosition(48)
oParagraphLineOne.AddElement(oRunSymbol)
const userList = signatureInfo[key] || []
for (let i = 0; i < userList.length; i++) {
const user = userList[i]
// 姓名工号
const oRunUserName = Api.CreateRun()
oRunUserName.AddText(user.userName + ' ')
oRunUserName.SetPosition(48)
// 手写章图片
const oRunImage = Api.CreateRun()
const url = `${Asc.scope.downloadUrl}/laws-sinotruk/sys/common/downloadWithoutToken/${user.avatarFileId}`
const oDrawingImg = Api.CreateImage(url, 53 * 36000, 18.4 * 36000)
oRunImage.AddDrawing(oDrawingImg)
// 签署日期
const oRunTime = Api.CreateRun()
oRunTime.AddText(' 签署日期:' + user.signTime)
oRunTime.SetPosition(48)
if (i === 0) {
oParagraphLineOne.AddElement(oRunUserName)
oParagraphLineOne.AddElement(oRunImage)
oParagraphLineOne.AddElement(oRunTime)
oParagraphLineOne.GetElement(0)
oDocContent.AddElement(oParagraphLineOne)
oDocContent.Push(oParagraphLineOne)
} else {
const oParagraphLine = Api.CreateParagraph()
oParagraphLine.AddElement(oRunUserName)
oParagraphLine.AddElement(oRunImage)
oParagraphLine.AddElement(oRunTime)
oParagraphLine.SetIndLeft(1388)
oDocContent.AddElement(oParagraphLine)
oDocContent.Push(oParagraphLine)
}
}
}
}
// 中国重型汽车集团有限公司
const oParagraphPageEnd = Api.CreateParagraph()
oParagraphPageEnd.AddText('中国重型汽车集团有限公司')
oParagraphPageEnd.SetFontSize(48)
oParagraphPageEnd.SetSpacingBefore(300)
oParagraphPageEnd.SetSpacingAfter(0)
oParagraphPageEnd.SetFontFamily('宋体')
oParagraphPageEnd.SetColor(0, 0, 0)
oParagraphPageEnd.SetJc('center')
oParagraphPageEnd.SetBold(false)
oParagraphPageEnd.SetSpacing(1.8)
oParagraphBox.InsertParagraph(oParagraphPageEnd, 'after')
} catch (e) {
console.log(e)
}
})
},
getSignatureInfo () {
return new Promise(resolve => {
let result = false
const params = {
processInstanceId: this.form.processId
}
_axios({
url: '/laws-sinotruk/process/es/revision/getSignInfo',
method: 'get',
params: params
}).then(res => {
if (res.success) {
result = res.result
}
}).finally(() => {
resolve(result)
})
})
}
},
created () {
+1 -1
View File
@@ -43,7 +43,7 @@ module.exports = {
headers: { 'Access-Control-Allow-Origin': '*' },
proxy: {
'/laws-sinotruk': {
target: 'http://139.9.235.66:8184',
target: 'http://10.0.1.19:8184',
ws: false,
changeOrigin: true,
pathRewrite: {