From 16c2239f175e6baffe56040994697e9523c5ae1c Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Thu, 29 Sep 2022 09:47:42 +0800 Subject: [PATCH 01/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=89=E6=9C=9F?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/countryCardView.vue | 43 +++++++++++++++---- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/jero-web/src/views/businessSupport/problemKnowledgeBase/components/countryCardView.vue b/jero-web/src/views/businessSupport/problemKnowledgeBase/components/countryCardView.vue index 703474c0d..dac938744 100644 --- a/jero-web/src/views/businessSupport/problemKnowledgeBase/components/countryCardView.vue +++ b/jero-web/src/views/businessSupport/problemKnowledgeBase/components/countryCardView.vue @@ -53,11 +53,14 @@ :class="{'content-box-box-text-admin':!item2.lableName || item2.lableName == 'null' || item2.lableName == 'undefined'? true : false}" class="content-box-box-text content-box-box-text-index" v-else-if="item2.lableType == 7 && item2.lableName && index2 != 0"> - - - - - + + + {{item2.contentFileName}} + + + + {{$t('viewFile')}} @@ -102,6 +105,7 @@ import countryCardViewAdd from './countryCardViewAdd' import viewFileModel from '@/components/viewFileModel/index' import { mapGetters } from 'vuex' + import { Base64 } from 'js-base64' export default { name: 'countryCardView', @@ -122,6 +126,7 @@ countryCardViewList: [], applyMarkets: '', header_text: '', + downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download', url: { list: '/problemKnowledgeBase/countryCardTempEO/list', deleteOne: '' @@ -137,6 +142,25 @@ }, methods: { ...mapGetters(['userInfo']), + pdfPreview(fileQuery) { + let fileName = fileQuery.contentFileName + fileQuery.id = fileQuery.lableName + let index1 = fileName.lastIndexOf('.') + let index2 = fileName.length + let fileSuffix = fileName.substring(index1, index2) + if (fileSuffix == '.pdf') { + window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + fileQuery.id+'&userName='+this.userInfo().username)) + } else if (fileSuffix == '.docx' || fileSuffix == '.doc') { + let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix) + window.open(url, '_blank') + } else if (fileSuffix == '.xlsx' || fileSuffix == '.xls' + || fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') { + let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix) + window.open(url, '_blank') + } else { + downloadFile('/sys/common/downLoadFile', fileQuery.contentFileName, { id: fileQuery.id }) + } + }, displayInformationClick() { this.$refs.displayInformationModelRef.getData(JSON.parse(JSON.stringify(this.displayList))) }, @@ -149,7 +173,7 @@ this.$refs.countryCardViewAddRef.add(this.countryCardViewList) }, download(item) { - downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id, userName: this.userInfo().username }) + downloadFile('/sys/common/downLoadFile', item.contentFileName, { id: item.lableName, userName: this.userInfo().username }) }, countryCardViewAddForm(val) { this.countryCardViewList = JSON.parse(JSON.stringify(val)) @@ -222,12 +246,14 @@ if (val.lableType == 3) { res1.list.push({ lableName: val.contentDropDownValue, - lableType: val.lableType + lableType: val.lableType, + contentFileName:val.contentFileName || '' }) } else { res1.list.push({ lableName: val.content, - lableType: val.lableType + lableType: val.lableType, + contentFileName:val.contentFileName || '' }) } } @@ -490,6 +516,7 @@ text-overflow: ellipsis; white-space: nowrap; float: left; + color: #040B29 } .icon-text { From c2b79bf730cf5be36edc31a0cc573a42c807c70c Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Thu, 29 Sep 2022 10:37:42 +0800 Subject: [PATCH 02/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=89=E6=9C=9F?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/problemKnowledgeBaseRelease.vue | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseRelease.vue b/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseRelease.vue index 48dfda617..67a491e01 100644 --- a/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseRelease.vue +++ b/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseRelease.vue @@ -158,13 +158,13 @@ }) }, titleClick(item) { - let newUrl = this.$router.resolve({ - path: '/problemKnowledgeBaseView', - query: { - id: item.id - } - }) - window.open(newUrl.href, '_blank') + // let newUrl = this.$router.resolve({ + // path: '/problemKnowledgeBaseView', + // query: { + // id: item.id + // } + // }) + // window.open(newUrl.href, '_blank') }, edit(val) { this.$router.push({ From 6814f4bf70b8c5c79aafcc0cbcfb5a5a36f57a70 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Thu, 29 Sep 2022 11:00:24 +0800 Subject: [PATCH 03/39] =?UTF-8?q?=E6=90=9C=E7=B4=A2=E4=B8=AD=E5=BF=83--?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E5=BA=93(=E6=8A=80=E6=9C=AF=E9=A2=86?= =?UTF-8?q?=E5=9F=9F=E6=90=9C=E7=B4=A2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/DocumentSearchServiceImpl.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java index 7bbdfb98d..bcc454663 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/searchcenter/service/impl/DocumentSearchServiceImpl.java @@ -350,11 +350,17 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService { String key = entry.getKey(); String value = (String) entry.getValue(); if("technology_territory".equals(key) && ObjectUtils.isNotEmpty(value)){ - Map queryMapNew = new HashMap<>(); - Map queryMapTempNew = new HashMap<>(); - queryMapTempNew.put(key, "*"+value.replaceAll(",","*")+"*"); - queryMapNew.put("wildcard", queryMapTempNew); - must.add(queryMapNew); + JSONArray should = new JSONArray(); + + List> mapList = new ArrayList<>(); + for (String s : value.split(",")) { + Map map = new HashMap(); + map.put(key,"*"+s+"*"); + Map map1 = new HashMap<>(); + map1.put("wildcard",map); + should.add(map1); + } + must.add(should); }else{ Map map = new HashMap<>(); Map queryMap = new HashMap<>(); From cf4256c7960864421f803ca34a07231059123d5d Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 29 Sep 2022 11:04:02 +0800 Subject: [PATCH 04/39] =?UTF-8?q?=E6=96=87=E6=A1=A3=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=EF=BC=8C=E5=B0=86=E7=BF=BB=E8=AF=91=E5=90=8E=E7=9A=84=E6=96=87?= =?UTF-8?q?=E4=BB=B6=EF=BC=8C=E8=BE=93=E5=87=BAdoc=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docTranslation/utils/TranslationDocumentUtils.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/utils/TranslationDocumentUtils.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/utils/TranslationDocumentUtils.java index 8e4aa43a5..477950de1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/utils/TranslationDocumentUtils.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/utils/TranslationDocumentUtils.java @@ -115,8 +115,9 @@ public class TranslationDocumentUtils { //翻译后的文件路径 String translateAfterFilePath = uploadpath + "/tempZip/translationTempFile"; + String translateAfterFileName = sourceOssFile.getFileName().substring(0, sourceOssFile.getFileName().lastIndexOf(".")); try { - translateAfterFile = createTranslateAfterFile(translateAfterFilePath, translateAfterSb.toString(),sourceOssFile.getFileName()); + translateAfterFile = createTranslateAfterFile(translateAfterFilePath, translateAfterSb.toString(),translateAfterFileName); } catch (Exception ex) { ex.printStackTrace(); logger.error("翻译文档-写入文档失败:" + ex.getMessage()); @@ -137,7 +138,7 @@ public class TranslationDocumentUtils { if (!newFilePath.exists()) { newFilePath.mkdirs(); } - translateAfterFilePath = translateAfterFilePath + "/" + fileName; + translateAfterFilePath = translateAfterFilePath + "/" + fileName + ".doc"; File newFile = new File(translateAfterFilePath); if (!newFile.exists()) { newFile.createNewFile(); From 59e828a166520849e544716e337b960924ab545e Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Thu, 29 Sep 2022 14:10:45 +0800 Subject: [PATCH 05/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=89=E6=9C=9F?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-web/src/common/lang/en-us.js | 1 + jero-web/src/common/lang/zh-cn.js | 1 + .../components/evaluationResultsList.vue | 48 ++++++++++++++++++- .../components/evaluationResultsClause.vue | 39 ++++++++++++--- .../components/evaluationResultsWhole.vue | 32 +++++++++++++ .../technologyAssessment/index.vue | 6 ++- 6 files changed, 117 insertions(+), 10 deletions(-) diff --git a/jero-web/src/common/lang/en-us.js b/jero-web/src/common/lang/en-us.js index 446ed7756..81110e8fe 100644 --- a/jero-web/src/common/lang/en-us.js +++ b/jero-web/src/common/lang/en-us.js @@ -1315,4 +1315,5 @@ module.exports = { consistentAssessment:'Consistent assessment', viewConsistentAssessment:'View Consistent Assessment', viewAll:'View All', + endProcess:'End Process', } \ No newline at end of file diff --git a/jero-web/src/common/lang/zh-cn.js b/jero-web/src/common/lang/zh-cn.js index c587adabc..915e962fd 100644 --- a/jero-web/src/common/lang/zh-cn.js +++ b/jero-web/src/common/lang/zh-cn.js @@ -1416,4 +1416,5 @@ module.exports = { consistentAssessment:'一致评估', viewConsistentAssessment:'查看一致评估', viewAll:'查看全部', + endProcess:'结束流程', } \ No newline at end of file diff --git a/jero-web/src/views/businessSupport/collectionOfRegulatoryOpinions/components/evaluationResultsList.vue b/jero-web/src/views/businessSupport/collectionOfRegulatoryOpinions/components/evaluationResultsList.vue index e559e1e27..1e8d605e3 100644 --- a/jero-web/src/views/businessSupport/collectionOfRegulatoryOpinions/components/evaluationResultsList.vue +++ b/jero-web/src/views/businessSupport/collectionOfRegulatoryOpinions/components/evaluationResultsList.vue @@ -8,6 +8,14 @@ {{$route.query.serialNumber +' '+$t('evaluationResults')}} +
+
+ + {{$t('endProcess')}} +
+
@@ -70,6 +78,7 @@ import viewFileModel from '@/components/viewFileModel/index' import { getAction, putAction, downloadFile } from '@/api/manage' import { mapGetters } from 'vuex' + import { postAction } from '../../../../api/manage' export default { name: 'evaluationResultsList', @@ -85,6 +94,7 @@ pageNo: 1, dataSource: [], formInline: {}, + administrators:false, userInfoQuery: {}, columns: [ { @@ -143,6 +153,14 @@ mounted() { this.userInfoQuery = this.userInfo() this.getData() + this.administrators = false + if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) { + this.userInfo().userRoleList.forEach(res => { + if (res.roleCode == 'admin') { + this.administrators = true + } + }) + } }, methods: { ...mapGetters(['userInfo']), @@ -232,6 +250,20 @@ }, seeFileClick(item) { this.$refs.viewFileModelRef.clickButtonToUpload(item) + }, + endProcessClick() { + let query = { + ids: this.$route.query.id + } + postAction('/lawsOpinionGather/lawsOpinionGatherEO/batchCompleteTask', query).then((res) => { + if (res.success) { + this.$message.success(this.$t('OperationSuccessful')) + this.pageNo = 1 + this.getList() + } else { + this.$message.warning(this.$t('operationFailed')) + } + }) } } } @@ -239,6 +271,7 @@ \ No newline at end of file diff --git a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsClause.vue b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsClause.vue index 900365c82..02b4003c7 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsClause.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsClause.vue @@ -10,19 +10,26 @@
- + {{$t('initiateSupplementaryProcess')}}
+
+ + {{$t('endProcess')}} +
- - - - - + + + + +
{{$t('processBackground')}}: {{$route.query.processBackground}} @@ -122,6 +129,7 @@ import PersonnelSelection from '@/components/PersonnelSelection/index' import { getAction, postAction, downloadFile } from '@/api/manage' import viewFileModel from '@/components/viewFileModel/index' + import { mapGetters } from 'vuex' export default { name: 'evaluationResultsClause', @@ -228,14 +236,30 @@ ellipsis: true, width: 160 } - ] + ], + userInfoQuery: {} } }, mounted() { document.title = this.$route.query.serialNumber + ' ' + this.$t('regulatoryTechnicalEvaluationResults') + this.userInfoQuery = this.userInfo() this.getList() }, methods: { + ...mapGetters(['userInfo']), + endProcessClick() { + let query = { + ids: this.$route.query.id + } + postAction('/lawsTechnologyEvaluation/lawsTechnologyEvaluationEO/batchCompleteTask', query).then((res) => { + if (res.success) { + this.$message.success(this.$t('OperationSuccessful')) + this.getList() + } else { + this.$message.warning(this.$t('operationFailed')) + } + }) + }, CurrentStandard() { let query = { firstInitiation: '2', @@ -439,6 +463,7 @@ ::v-deep .ant-table-body { background: transparent !important; } + .operator-text-text { cursor: pointer; margin-right: 23px; diff --git a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue index 3756367b3..220707ec5 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue @@ -13,6 +13,13 @@ {{$t('initiateSupplementaryProcess')}}
+
+ + {{$t('endProcess')}} +
@@ -77,6 +84,7 @@ import PersonnelSelection from '@/components/PersonnelSelection/index' import { getAction, postAction, downloadFile } from '@/api/manage' import viewFileModel from '@/components/viewFileModel/index' + import { mapGetters } from 'vuex' export default { name: 'evaluationResultsWhole', @@ -88,6 +96,7 @@ return { queryParam: {}, dataSource: [], + administrators:false, url: { list: '/lawsTechnologyEvaluation/lawsTechnologyEvaluationComplianceResultEO/list', exportData: 'lawsTechnologyEvaluation/lawsTechnologyEvaluationComplianceResultEO/exportZip' @@ -121,10 +130,33 @@ } }, mounted() { + this.userInfoQuery = this.userInfo() document.title = this.$route.query.serialNumber + ' ' + this.$t('regulatoryTechnicalEvaluationResults') this.getList() + this.administrators = false + if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) { + this.userInfo().userRoleList.forEach(res => { + if (res.roleCode == 'admin') { + this.administrators = true + } + }) + } }, methods: { + ...mapGetters(['userInfo']), + endProcessClick() { + let query = { + ids: this.$route.query.id + } + postAction('/lawsTechnologyEvaluation/lawsTechnologyEvaluationEO/batchCompleteTask', query).then((res) => { + if (res.success) { + this.$message.success(this.$t('OperationSuccessful')) + this.getList() + } else { + this.$message.warning(this.$t('operationFailed')) + } + }) + }, CurrentStandard() { let query = { firstInitiation: '2', diff --git a/jero-web/src/views/businessSupport/technologyAssessment/index.vue b/jero-web/src/views/businessSupport/technologyAssessment/index.vue index 36d555566..b10acce8b 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/index.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/index.vue @@ -463,7 +463,8 @@ serialNumber: row.serialNumber, lawsTechnologyEvaluationId: row.id, standId: row.standId, - remark: row.remark + remark: row.remark, + createBy:row.createBy } }) window.open(newUrl.href, '_blank') @@ -476,7 +477,8 @@ serialNumber: row.serialNumber, lawsTechnologyEvaluationId: row.id, standId: row.standId, - remark: row.remark + remark: row.remark, + createBy:row.createBy } }) window.open(newUrl.href, '_blank') From 1a3d0f01ca2c96776f627c91f3f60336afa61b91 Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Thu, 29 Sep 2022 14:12:30 +0800 Subject: [PATCH 06/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=89=E6=9C=9F?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-web/package.json | 1 + .../components/PersonnelSelection/index.vue | 103 +- .../components/virtualNodeTree/mixin/node.js | 116 ++ .../components/virtualNodeTree/model/node.js | 486 +++++++ .../virtualNodeTree/model/tree-store.js | 342 +++++ .../components/virtualNodeTree/model/util.js | 27 + .../virtualNodeTree/tree-virtual-node.vue | 138 ++ .../src/components/virtualNodeTree/tree.vue | 1133 +++++++++++++++++ 8 files changed, 2272 insertions(+), 74 deletions(-) create mode 100644 jero-web/src/components/virtualNodeTree/mixin/node.js create mode 100644 jero-web/src/components/virtualNodeTree/model/node.js create mode 100644 jero-web/src/components/virtualNodeTree/model/tree-store.js create mode 100644 jero-web/src/components/virtualNodeTree/model/util.js create mode 100644 jero-web/src/components/virtualNodeTree/tree-virtual-node.vue create mode 100644 jero-web/src/components/virtualNodeTree/tree.vue diff --git a/jero-web/package.json b/jero-web/package.json index 0a928ac24..f144b3265 100644 --- a/jero-web/package.json +++ b/jero-web/package.json @@ -21,6 +21,7 @@ "dayjs": "^1.8.0", "dom-align": "1.12.0", "echarts": "^5.0.2", + "element-ui": "^2.15.10", "enquire.js": "^2.1.6", "jquery": "^3.6.0", "js-base64": "^3.7.2", diff --git a/jero-web/src/components/PersonnelSelection/index.vue b/jero-web/src/components/PersonnelSelection/index.vue index 0ed9c5187..bcb3ce1c5 100644 --- a/jero-web/src/components/PersonnelSelection/index.vue +++ b/jero-web/src/components/PersonnelSelection/index.vue @@ -31,35 +31,22 @@
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + import { getAction, postAction } from '@/api/manage' + import virtualNodeTree from '@/components/virtualNodeTree/tree' import XEUtils from 'xe-utils' import VXETable from 'vxe-table' export default { name: 'index', props: ['query', 'value', 'personneQuery', 'isSingleChoice', 'isInput', 'isClass', 'isDelete', 'disabled'], + components: { + virtualNodeTree + }, data() { return { loading: true, @@ -114,60 +105,20 @@ }, methods: { - // loadTree(size) { - // this.loading = true - // setTimeout(() => { - // const trerData = JSON.parse(JSON.stringify(this.gData)) - // // 将树结构拍平,构建列表树结构 - // XEUtils.eachTree(trerData, (item, index, items, paths, parent, nodes) => { - // // 层级 - // item._LEVEL = nodes.length - 1 - // // 是否展开 - // item._EXPAND = false - // // 是否可视 - // item._VISIBLE = !item._LEVEL - // // 是否有子节点 - // item._HAS_CHILDREN = item.children && item.children.length > 0 - // // 是否叶子节点 - // item._IS_LEAF = !item._HAS_CHILDREN - // }) - // this.tree = trerData - // this.refreshTree() - // this.loading = false - // }, 200) - // }, - // // 切换树节点的展开、收缩 - // toggleTreeNode(row) { - // if (row._HAS_CHILDREN) { - // this.setTreeExpand(row, !row._EXPAND) - // } - // }, - // setTreeExpand(row, isExpand) { - // const matchObj = XEUtils.findTree(this.tree, item => item === row) - // row._EXPAND = isExpand - // if (matchObj) { - // XEUtils.eachTree(matchObj.item.children, (item, index, items, path, parent) => { - // item._VISIBLE = parent ? parent._EXPAND && parent._VISIBLE : isExpand - // }) - // } - // this.refreshTree() - // }, - // refreshTree() { - // const treeList = XEUtils.toTreeArray(this.tree) - // this.fullList = treeList - // this.gData = treeList.filter(item => item._VISIBLE) - // }, + handleCheckChange(val, checked, indeterminate) { + console.log(val) + console.log(this.checkboxList) + }, standardClick() { this.treeVisible = false this.departId = '' this.searchModel = '' this.userIds = [] this.userName = [] - // let gData = localStorage.getItem('gData') + let gData = localStorage.getItem('gData') // if (gData) { // this.gData = this.toTree(JSON.parse(gData)) // this.treeVisible = true - // this.loadTree() // } else { this.queryDepartUserTreeList(1) // } @@ -469,4 +420,8 @@ width: 100%; height: 600px; } + + .treeWrap { + height: 600px; + } \ No newline at end of file diff --git a/jero-web/src/components/virtualNodeTree/mixin/node.js b/jero-web/src/components/virtualNodeTree/mixin/node.js new file mode 100644 index 000000000..9c7850718 --- /dev/null +++ b/jero-web/src/components/virtualNodeTree/mixin/node.js @@ -0,0 +1,116 @@ +import { getNodeKey } from '../model/util'; + +export default { + methods: { + creator(parent, nodeTag) { + const node = this[nodeTag]; + + if (parent.isTree) { + this.tree = parent; + } else { + this.tree = parent.tree; + } + + const tree = this.tree; + if (!tree) { + console.warn('Can not find node\'s tree.'); + } + + const props = tree.props || {}; + const childrenKey = props['children'] || 'children'; + + this.$watch(`${nodeTag}.data.${childrenKey}`, () => { + node.updateChildren(); + }); + + if (node.expanded) { + this.expanded = true; + this.childNodeRendered = true; + } + + if (this.tree.accordion) { + this.$on('tree-node-expand', currentNode => { + if (node !== currentNode) { + node.collapse(); + } + }); + } + }, + + getNodeKey(node) { + return getNodeKey(this.tree.nodeKey, node.data); + }, + + handleSelectChange(checked, indeterminate) { + const node = this.node || this.source; + + if (this.oldChecked !== checked && this.oldIndeterminate !== indeterminate) { + this.tree.$emit('check-change', node.data, checked, indeterminate); + } + this.oldChecked = checked; + this.indeterminate = indeterminate; + }, + + handleClick() { + const node = this.node || this.source; + const store = this.tree.store; + + store.setCurrentNode(node); + this.tree.$emit('current-change', store.currentNode ? store.currentNode.data : null, store.currentNode); + this.tree.currentNode = this; + if (this.tree.expandOnClickNode) { + this.handleExpandIconClick(); + } + if (this.tree.checkOnClickNode && !node.disabled) { + this.handleCheckChange(null, { + target: { checked: !node.checked } + }); + } + + this.tree.$emit('node-click', node.data, node, this); + }, + + handleContextMenu(event) { + const node = this.node || this.source; + + if (this.tree._events['node-contextmenu'] && this.tree._events['node-contextmenu'].length > 0) { + event.stopPropagation(); + event.preventDefault(); + } + this.tree.$emit('node-contextmenu', event, node.data, node, this); + }, + + handleExpandIconClick() { + const node = this.node || this.source; + + if (node.isLeaf) return; + if (this.expanded) { + this.tree.$emit('node-collapse', node.data, node, this); + node.collapse(); + } else { + node.expand(); + this.$emit('node-expand', node.data, node, this); + } + }, + + handleCheckChange(_, ev) { + const node = this.node || this.source; + + node.setChecked(ev.target.checked, !this.tree.checkStrictly); + this.$nextTick(() => { + const store = this.tree.store; + this.tree.$emit('check', node.data, { + checkedNodes: store.getCheckedNodes(), + checkedKeys: store.getCheckedKeys(), + halfCheckedNodes: store.getHalfCheckedNodes(), + halfCheckedKeys: store.getHalfCheckedKeys() + }); + }); + }, + + handleChildNodeExpand(nodeData, node, instance) { + this.broadcast('ElTreeNode', 'tree-node-expand', node); + this.tree.$emit('node-expand', nodeData, node, instance); + } + } +}; diff --git a/jero-web/src/components/virtualNodeTree/model/node.js b/jero-web/src/components/virtualNodeTree/model/node.js new file mode 100644 index 000000000..91f461be6 --- /dev/null +++ b/jero-web/src/components/virtualNodeTree/model/node.js @@ -0,0 +1,486 @@ +import objectAssign from 'element-ui/src/utils/merge'; +import { markNodeData, NODE_KEY } from './util'; +import { arrayFindIndex } from 'element-ui/src/utils/util'; + +export const getChildState = node => { + let all = true; + let none = true; + let allWithoutDisable = true; + for (let i = 0, j = node.length; i < j; i++) { + const n = node[i]; + if (n.checked !== true || n.indeterminate) { + all = false; + if (!n.disabled) { + allWithoutDisable = false; + } + } + if (n.checked !== false || n.indeterminate) { + none = false; + } + } + + return { all, none, allWithoutDisable, half: !all && !none }; +}; + +const reInitChecked = function(node) { + if (node.childNodes.length === 0) return; + + const {all, none, half} = getChildState(node.childNodes); + if (all) { + node.checked = true; + node.indeterminate = false; + } else if (half) { + node.checked = false; + node.indeterminate = true; + } else if (none) { + node.checked = false; + node.indeterminate = false; + } + + const parent = node.parent; + if (!parent || parent.level === 0) return; + + if (!node.store.checkStrictly) { + reInitChecked(parent); + } +}; + +const getPropertyFromData = function(node, prop) { + const props = node.store.props; + const data = node.data || {}; + const config = props[prop]; + + if (typeof config === 'function') { + return config(data, node); + } else if (typeof config === 'string') { + return data[config]; + } else if (typeof config === 'undefined') { + const dataProp = data[prop]; + return dataProp === undefined ? '' : dataProp; + } +}; + +let nodeIdSeed = 0; + +export default class Node { + constructor(options) { + this.id = nodeIdSeed++; + this.text = null; + this.checked = false; + this.indeterminate = false; + this.data = null; + this.expanded = false; + this.parent = null; + this.visible = true; + this.isCurrent = false; + // console.log(22, Object.prototype.hasOwnProperty.call(options, name)); + for (let name in options) { + if (Object.prototype.hasOwnProperty.call(options, name)) { + // if (options.hasOwnProperty(name)) { + this[name] = options[name]; + } + } + + // internal + this.level = 0; + this.loaded = false; + this.childNodes = []; + this.loading = false; + + if (this.parent) { + this.level = this.parent.level + 1; + } + + const store = this.store; + if (!store) { + throw new Error('[Node]store is required!'); + } + store.registerNode(this); + + const props = store.props; + if (props && typeof props.isLeaf !== 'undefined') { + const isLeaf = getPropertyFromData(this, 'isLeaf'); + if (typeof isLeaf === 'boolean') { + this.isLeafByUser = isLeaf; + } + } + + if (store.lazy !== true && this.data) { + this.setData(this.data); + + if (store.defaultExpandAll) { + this.expanded = true; + } + } else if (this.level > 0 && store.lazy && store.defaultExpandAll) { + this.expand(); + } + if (!Array.isArray(this.data)) { + markNodeData(this, this.data); + } + if (!this.data) return; + const defaultExpandedKeys = store.defaultExpandedKeys; + const key = store.key; + if (key && defaultExpandedKeys && defaultExpandedKeys.indexOf(this.key) !== -1) { + this.expand(null, store.autoExpandParent); + } + + if (key && store.currentNodeKey !== undefined && this.key === store.currentNodeKey) { + store.currentNode = this; + store.currentNode.isCurrent = true; + } + + if (store.lazy) { + store._initDefaultCheckedNode(this); + } + + this.updateLeafState(); + } + + setData(data) { + if (!Array.isArray(data)) { + markNodeData(this, data); + } + + this.data = data; + this.childNodes = []; + + let children; + if (this.level === 0 && this.data instanceof Array) { + children = this.data; + } else { + children = getPropertyFromData(this, 'children') || []; + } + + for (let i = 0, j = children.length; i < j; i++) { + this.insertChild({ data: children[i] }); + } + } + + get label() { + return getPropertyFromData(this, 'label'); + } + + get key() { + const nodeKey = this.store.key; + if (this.data) return this.data[nodeKey]; + return null; + } + + get disabled() { + return getPropertyFromData(this, 'disabled'); + } + + get nextSibling() { + const parent = this.parent; + if (parent) { + const index = parent.childNodes.indexOf(this); + if (index > -1) { + return parent.childNodes[index + 1]; + } + } + return null; + } + + get previousSibling() { + const parent = this.parent; + if (parent) { + const index = parent.childNodes.indexOf(this); + if (index > -1) { + return index > 0 ? parent.childNodes[index - 1] : null; + } + } + return null; + } + + contains(target, deep = true) { + const walk = function(parent) { + const children = parent.childNodes || []; + let result = false; + for (let i = 0, j = children.length; i < j; i++) { + const child = children[i]; + if (child === target || (deep && walk(child))) { + result = true; + break; + } + } + return result; + }; + + return walk(this); + } + + remove() { + const parent = this.parent; + if (parent) { + parent.removeChild(this); + } + } + + insertChild(child, index, batch) { + if (!child) throw new Error('insertChild error: child is required.'); + + if (!(child instanceof Node)) { + if (!batch) { + const children = this.getChildren(true) || []; + if (children.indexOf(child.data) === -1) { + if (typeof index === 'undefined' || index < 0) { + children.push(child.data); + } else { + children.splice(index, 0, child.data); + } + } + } + objectAssign(child, { + parent: this, + store: this.store + }); + child = new Node(child); + } + + child.level = this.level + 1; + + if (typeof index === 'undefined' || index < 0) { + this.childNodes.push(child); + } else { + this.childNodes.splice(index, 0, child); + } + + this.updateLeafState(); + } + + insertBefore(child, ref) { + let index; + if (ref) { + index = this.childNodes.indexOf(ref); + } + this.insertChild(child, index); + } + + insertAfter(child, ref) { + let index; + if (ref) { + index = this.childNodes.indexOf(ref); + if (index !== -1) index += 1; + } + this.insertChild(child, index); + } + + removeChild(child) { + const children = this.getChildren() || []; + const dataIndex = children.indexOf(child.data); + if (dataIndex > -1) { + children.splice(dataIndex, 1); + } + + const index = this.childNodes.indexOf(child); + + if (index > -1) { + this.store && this.store.deregisterNode(child); + child.parent = null; + this.childNodes.splice(index, 1); + } + + this.updateLeafState(); + } + + removeChildByData(data) { + let targetNode = null; + + for (let i = 0; i < this.childNodes.length; i++) { + if (this.childNodes[i].data === data) { + targetNode = this.childNodes[i]; + break; + } + } + + if (targetNode) { + this.removeChild(targetNode); + } + } + + expand(callback, expandParent) { + const done = () => { + if (expandParent) { + let parent = this.parent; + while (parent.level > 0) { + parent.expanded = true; + parent = parent.parent; + } + } + this.expanded = true; + if (callback) callback(); + }; + + if (this.shouldLoadData()) { + this.loadData((data) => { + if (data instanceof Array) { + if (this.checked) { + this.setChecked(true, true); + } else if (!this.store.checkStrictly) { + reInitChecked(this); + } + done(); + } + }); + } else { + done(); + } + } + + doCreateChildren(array, defaultProps = {}) { + array.forEach((item) => { + this.insertChild(objectAssign({ data: item }, defaultProps), undefined, true); + }); + } + + collapse() { + this.expanded = false; + } + + shouldLoadData() { + return this.store.lazy === true && this.store.load && !this.loaded; + } + + updateLeafState() { + if (this.store.lazy === true && this.loaded !== true && typeof this.isLeafByUser !== 'undefined') { + this.isLeaf = this.isLeafByUser; + return; + } + const childNodes = this.childNodes; + if (!this.store.lazy || (this.store.lazy === true && this.loaded === true)) { + this.isLeaf = !childNodes || childNodes.length === 0; + return; + } + this.isLeaf = false; + } + + setChecked(value, deep, recursion, passValue) { + this.indeterminate = value === 'half'; + this.checked = value === true; + + if (this.store.checkStrictly) return; + + if (!(this.shouldLoadData() && !this.store.checkDescendants)) { + let { all, allWithoutDisable } = getChildState(this.childNodes); + + if (!this.isLeaf && (!all && allWithoutDisable)) { + this.checked = false; + value = false; + } + + const handleDescendants = () => { + if (deep) { + const childNodes = this.childNodes; + for (let i = 0, j = childNodes.length; i < j; i++) { + const child = childNodes[i]; + passValue = passValue || value !== false; + const isCheck = child.disabled ? child.checked : passValue; + child.setChecked(isCheck, deep, true, passValue); + } + const { half, all } = getChildState(childNodes); + if (!all) { + this.checked = all; + this.indeterminate = half; + } + } + }; + + if (this.shouldLoadData()) { + // Only work on lazy load data. + this.loadData(() => { + handleDescendants(); + reInitChecked(this); + }, { + checked: value !== false + }); + return; + } else { + handleDescendants(); + } + } + + const parent = this.parent; + if (!parent || parent.level === 0) return; + + if (!recursion) { + reInitChecked(parent); + } + } + + getChildren(forceInit = false) { // this is data + if (this.level === 0) return this.data; + const data = this.data; + if (!data) return null; + + const props = this.store.props; + let children = 'children'; + if (props) { + children = props.children || 'children'; + } + + if (data[children] === undefined) { + data[children] = null; + } + + if (forceInit && !data[children]) { + data[children] = []; + } + + return data[children]; + } + + updateChildren() { + const newData = this.getChildren() || []; + const oldData = this.childNodes.map((node) => node.data); + + const newDataMap = {}; + const newNodes = []; + + newData.forEach((item, index) => { + const key = item[NODE_KEY]; + const isNodeExists = !!key && arrayFindIndex(oldData, data => data[NODE_KEY] === key) >= 0; + if (isNodeExists) { + newDataMap[key] = { index, data: item }; + } else { + newNodes.push({ index, data: item }); + } + }); + + if (!this.store.lazy) { + oldData.forEach((item) => { + if (!newDataMap[item[NODE_KEY]]) this.removeChildByData(item); + }); + } + + newNodes.forEach(({ index, data }) => { + this.insertChild({ data }, index); + }); + + this.updateLeafState(); + } + + loadData(callback, defaultProps = {}) { + if (this.store.lazy === true && this.store.load && !this.loaded && (!this.loading || Object.keys(defaultProps).length)) { + this.loading = true; + + const resolve = (children) => { + this.loaded = true; + this.loading = false; + this.childNodes = []; + + this.doCreateChildren(children, defaultProps); + + this.updateLeafState(); + if (callback) { + callback.call(this, children); + } + }; + + this.store.load(this, resolve); + } else { + if (callback) { + callback.call(this); + } + } + } +} diff --git a/jero-web/src/components/virtualNodeTree/model/tree-store.js b/jero-web/src/components/virtualNodeTree/model/tree-store.js new file mode 100644 index 000000000..c9df39c83 --- /dev/null +++ b/jero-web/src/components/virtualNodeTree/model/tree-store.js @@ -0,0 +1,342 @@ +import Node from './node'; +import { getNodeKey } from './util'; + +export default class TreeStore { + constructor(options) { + this.currentNode = null; + this.currentNodeKey = null; + + for (let option in options) { + if (Object.prototype.hasOwnProperty.call(options, option)) { + // if (options.hasOwnProperty(option)) { + this[option] = options[option]; + } + } + + this.nodesMap = {}; + + this.root = new Node({ + data: this.data, + store: this + }); + + if (this.lazy && this.load) { + const loadFn = this.load; + loadFn(this.root, (data) => { + this.root.doCreateChildren(data); + this._initDefaultCheckedNodes(); + }); + } else { + this._initDefaultCheckedNodes(); + } + } + + filter(value) { + const filterNodeMethod = this.filterNodeMethod; + const lazy = this.lazy; + const traverse = function(node) { + const childNodes = node.root ? node.root.childNodes : node.childNodes; + + childNodes.forEach((child) => { + child.visible = filterNodeMethod.call(child, value, child.data, child); + + traverse(child); + }); + + if (!node.visible && childNodes.length) { + let allHidden = true; + allHidden = !childNodes.some(child => child.visible); + + if (node.root) { + node.root.visible = allHidden === false; + } else { + node.visible = allHidden === false; + } + } + if (!value) return; + + if (node.visible && !node.isLeaf && !lazy) node.expand(); + }; + + traverse(this); + } + + setData(newVal) { + const instanceChanged = newVal !== this.root.data; + if (instanceChanged) { + this.root.setData(newVal); + this._initDefaultCheckedNodes(); + } else { + this.root.updateChildren(); + } + } + + getNode(data) { + if (data instanceof Node) return data; + const key = typeof data !== 'object' ? data : getNodeKey(this.key, data); + return this.nodesMap[key] || null; + } + + insertBefore(data, refData) { + const refNode = this.getNode(refData); + refNode.parent.insertBefore({ data }, refNode); + } + + insertAfter(data, refData) { + const refNode = this.getNode(refData); + refNode.parent.insertAfter({ data }, refNode); + } + + remove(data) { + const node = this.getNode(data); + + if (node && node.parent) { + if (node === this.currentNode) { + this.currentNode = null; + } + node.parent.removeChild(node); + } + } + + append(data, parentData) { + const parentNode = parentData ? this.getNode(parentData) : this.root; + + if (parentNode) { + parentNode.insertChild({ data }); + } + } + + _initDefaultCheckedNodes() { + const defaultCheckedKeys = this.defaultCheckedKeys || []; + const nodesMap = this.nodesMap; + + defaultCheckedKeys.forEach((checkedKey) => { + const node = nodesMap[checkedKey]; + + if (node) { + node.setChecked(true, !this.checkStrictly); + } + }); + } + + _initDefaultCheckedNode(node) { + const defaultCheckedKeys = this.defaultCheckedKeys || []; + + if (defaultCheckedKeys.indexOf(node.key) !== -1) { + node.setChecked(true, !this.checkStrictly); + } + } + + setDefaultCheckedKey(newVal) { + if (newVal !== this.defaultCheckedKeys) { + this.defaultCheckedKeys = newVal; + this._initDefaultCheckedNodes(); + } + } + + registerNode(node) { + const key = this.key; + if (!key || !node || !node.data) return; + + const nodeKey = node.key; + if (nodeKey !== undefined) this.nodesMap[node.key] = node; + } + + deregisterNode(node) { + const key = this.key; + if (!key || !node || !node.data) return; + + node.childNodes.forEach(child => { + this.deregisterNode(child); + }); + + delete this.nodesMap[node.key]; + } + + getCheckedNodes(leafOnly = false, includeHalfChecked = false) { + const checkedNodes = []; + const traverse = function(node) { + const childNodes = node.root ? node.root.childNodes : node.childNodes; + + childNodes.forEach((child) => { + if ((child.checked || (includeHalfChecked && child.indeterminate)) && (!leafOnly || (leafOnly && child.isLeaf))) { + checkedNodes.push(child.data); + } + + traverse(child); + }); + }; + + traverse(this); + + return checkedNodes; + } + + getCheckedKeys(leafOnly = false) { + return this.getCheckedNodes(leafOnly).map((data) => (data || {})[this.key]); + } + + getHalfCheckedNodes() { + const nodes = []; + const traverse = function(node) { + const childNodes = node.root ? node.root.childNodes : node.childNodes; + + childNodes.forEach((child) => { + if (child.indeterminate) { + nodes.push(child.data); + } + + traverse(child); + }); + }; + + traverse(this); + + return nodes; + } + + getHalfCheckedKeys() { + return this.getHalfCheckedNodes().map((data) => (data || {})[this.key]); + } + + _getAllNodes() { + const allNodes = []; + const nodesMap = this.nodesMap; + for (let nodeKey in nodesMap) { + if (Object.prototype.hasOwnProperty.call(nodesMap, nodeKey)) { + // if (nodesMap.hasOwnProperty(nodeKey)) { + allNodes.push(nodesMap[nodeKey]); + } + } + + return allNodes; + } + + updateChildren(key, data) { + const node = this.nodesMap[key]; + if (!node) return; + const childNodes = node.childNodes; + for (let i = childNodes.length - 1; i >= 0; i--) { + const child = childNodes[i]; + this.remove(child.data); + } + for (let i = 0, j = data.length; i < j; i++) { + const child = data[i]; + this.append(child, node.data); + } + } + + _setCheckedKeys(key, leafOnly = false, checkedKeys) { + const allNodes = this._getAllNodes().sort((a, b) => b.level - a.level); + const cache = Object.create(null); + const keys = Object.keys(checkedKeys); + allNodes.forEach(node => node.setChecked(false, false)); + for (let i = 0, j = allNodes.length; i < j; i++) { + const node = allNodes[i]; + const nodeKey = node.data[key].toString(); + let checked = keys.indexOf(nodeKey) > -1; + if (!checked) { + if (node.checked && !cache[nodeKey]) { + node.setChecked(false, false); + } + continue; + } + + let parent = node.parent; + while (parent && parent.level > 0) { + cache[parent.data[key]] = true; + parent = parent.parent; + } + + if (node.isLeaf || this.checkStrictly) { + node.setChecked(true, false); + continue; + } + node.setChecked(true, true); + + if (leafOnly) { + node.setChecked(false, false); + const traverse = function(node) { + const childNodes = node.childNodes; + childNodes.forEach((child) => { + if (!child.isLeaf) { + child.setChecked(false, false); + } + traverse(child); + }); + }; + traverse(node); + } + } + } + + setCheckedNodes(array, leafOnly = false) { + const key = this.key; + const checkedKeys = {}; + array.forEach((item) => { + checkedKeys[(item || {})[key]] = true; + }); + + this._setCheckedKeys(key, leafOnly, checkedKeys); + } + + setCheckedKeys(keys, leafOnly = false) { + this.defaultCheckedKeys = keys; + const key = this.key; + const checkedKeys = {}; + keys.forEach((key) => { + checkedKeys[key] = true; + }); + + this._setCheckedKeys(key, leafOnly, checkedKeys); + } + + setDefaultExpandedKeys(keys) { + keys = keys || []; + this.defaultExpandedKeys = keys; + + keys.forEach((key) => { + const node = this.getNode(key); + if (node) node.expand(null, this.autoExpandParent); + }); + } + + setChecked(data, checked, deep) { + const node = this.getNode(data); + + if (node) { + node.setChecked(!!checked, deep); + } + } + + getCurrentNode() { + return this.currentNode; + } + + setCurrentNode(currentNode) { + const prevCurrentNode = this.currentNode; + if (prevCurrentNode) { + prevCurrentNode.isCurrent = false; + } + this.currentNode = currentNode; + this.currentNode.isCurrent = true; + } + + setUserCurrentNode(node) { + const key = node[this.key]; + const currNode = this.nodesMap[key]; + this.setCurrentNode(currNode); + } + + setCurrentNodeKey(key) { + if (key === null || key === undefined) { + this.currentNode && (this.currentNode.isCurrent = false); + this.currentNode = null; + return; + } + const node = this.getNode(key); + if (node) { + this.setCurrentNode(node); + } + } +} diff --git a/jero-web/src/components/virtualNodeTree/model/util.js b/jero-web/src/components/virtualNodeTree/model/util.js new file mode 100644 index 000000000..dcc891b1b --- /dev/null +++ b/jero-web/src/components/virtualNodeTree/model/util.js @@ -0,0 +1,27 @@ +export const NODE_KEY = '$treeNodeId'; + +export const markNodeData = function(node, data) { + if (!data || data[NODE_KEY]) return; + Object.defineProperty(data, NODE_KEY, { + value: node.id, + enumerable: false, + configurable: false, + writable: false + }); +}; + +export const getNodeKey = function(key, data) { + if (!key) return data[NODE_KEY]; + return data[key]; +}; + +export const findNearestComponent = (element, componentName) => { + let target = element; + while (target && target.tagName !== 'BODY') { + if (target.__vue__ && target.__vue__.$options.name === componentName) { + return target.__vue__; + } + target = target.parentNode; + } + return null; +}; diff --git a/jero-web/src/components/virtualNodeTree/tree-virtual-node.vue b/jero-web/src/components/virtualNodeTree/tree-virtual-node.vue new file mode 100644 index 000000000..acc2ba88e --- /dev/null +++ b/jero-web/src/components/virtualNodeTree/tree-virtual-node.vue @@ -0,0 +1,138 @@ + + + diff --git a/jero-web/src/components/virtualNodeTree/tree.vue b/jero-web/src/components/virtualNodeTree/tree.vue new file mode 100644 index 000000000..e346d48e3 --- /dev/null +++ b/jero-web/src/components/virtualNodeTree/tree.vue @@ -0,0 +1,1133 @@ + + + + + From 2aeccf6a0d67734c2c12a4fb9d57a8989fa4d33a Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 29 Sep 2022 14:16:00 +0800 Subject: [PATCH 07/39] =?UTF-8?q?=E6=B3=95=E8=A7=84=E6=84=8F=E8=A7=81?= =?UTF-8?q?=E6=94=B6=E9=9B=86=E3=80=81=E6=B3=95=E8=A7=84=E6=8A=80=E6=9C=AF?= =?UTF-8?q?=E8=AF=84=E4=BC=B0=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=AE=8C=E6=88=90=E6=8E=A5=E5=8F=A3=E3=80=82?= =?UTF-8?q?=20=E6=B3=95=E8=A7=84=E6=84=8F=E8=A7=81=E6=94=B6=E9=9B=86?= =?UTF-8?q?=E3=80=81=E6=B3=95=E8=A7=84=E6=8A=80=E6=9C=AF=E8=AF=84=E4=BC=B0?= =?UTF-8?q?=EF=BC=8C=E5=88=A0=E9=99=A4=E6=97=B6=E5=90=8C=E6=AD=A5=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E6=B5=81=E7=A8=8B=E5=AE=9E=E4=BE=8B=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LawsOpinionGatherEOController.java | 10 ++- .../job/LawsOpinionGatherJob.java | 5 +- .../service/ILawsOpinionGatherEOService.java | 4 +- .../impl/LawsOpinionGatherEOServiceImpl.java | 62 ++++++++++++-- .../LawsTechnologyEvaluationEOController.java | 15 +++- .../job/LawsTechnologyEvaluationJob.java | 5 +- .../ILawsTechnologyEvaluationEOService.java | 4 +- ...LawsTechnologyEvaluationEOServiceImpl.java | 83 +++++++++++++++++-- .../feginClient/WorkFlowFeignClient.java | 3 + 9 files changed, 166 insertions(+), 25 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/controller/LawsOpinionGatherEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/controller/LawsOpinionGatherEOController.java index 4b67a1d10..6eec32d23 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/controller/LawsOpinionGatherEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/controller/LawsOpinionGatherEOController.java @@ -127,8 +127,8 @@ public class LawsOpinionGatherEOController extends JeroController deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.lawsOpinionGatherEOService.deleteByIds(Arrays.asList(ids.split(","))); + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids,@RequestParam(name="cut",required=true) String cut) { + this.lawsOpinionGatherEOService.deleteByIds(Arrays.asList(ids.split(",")),cut); return Result.OK("批量删除成功!"); } @@ -184,4 +184,10 @@ public class LawsOpinionGatherEOController extends JeroController batchCompleteTask(@RequestBody JSONObject jsonObject){ + return this.lawsOpinionGatherEOService.batchCompleteTask(jsonObject); + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/job/LawsOpinionGatherJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/job/LawsOpinionGatherJob.java index bf1e5ac43..c5d17ad6c 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/job/LawsOpinionGatherJob.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/job/LawsOpinionGatherJob.java @@ -34,7 +34,8 @@ public class LawsOpinionGatherJob implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { log.info("法规意见收集流程,定时任务开启 ====================================================="); - QueryWrapper lawsOpinionGatherEOQueryWrapper = new QueryWrapper<>(); + //TODO 2022-09-29 该功能被手动按钮替代 对应禅道bug编号 59979 + /*QueryWrapper lawsOpinionGatherEOQueryWrapper = new QueryWrapper<>(); lawsOpinionGatherEOQueryWrapper.lambda().eq(LawsOpinionGatherEO::getGatherResult, GatherResultEnum.UNDERWAY.getValue()); List lawsOpinionGatherEOList = this.lawsOpinionGatherEOService.list(lawsOpinionGatherEOQueryWrapper); if (CollectionUtils.isNotEmpty(lawsOpinionGatherEOList)) { @@ -58,7 +59,7 @@ public class LawsOpinionGatherJob implements Job { this.lawsOpinionGatherEOService.updateBatchById(updateLawsOpinionGatherEOList); } } - } + }*/ log.info("法规意见收集流程,定时任务结束 ====================================================="); } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/ILawsOpinionGatherEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/ILawsOpinionGatherEOService.java index 710e61bf2..b4a878930 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/ILawsOpinionGatherEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/ILawsOpinionGatherEOService.java @@ -44,7 +44,7 @@ public interface ILawsOpinionGatherEOService extends IService ids); + void deleteByIds(List ids,String cut); /** * 通过id查询 @@ -75,4 +75,6 @@ public interface ILawsOpinionGatherEOService extends IService lawsOpinionGatherEOList,String cut); void workFlowSendMsg(JSONObject jsonObject); + + Result batchCompleteTask(JSONObject jsonObject); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionGatherEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionGatherEOServiceImpl.java index 6e51bcfff..491631ca8 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionGatherEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionGatherEOServiceImpl.java @@ -28,8 +28,10 @@ import com.jero.modules.system.entity.SysCategory; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.impl.SysCategoryServiceImpl; +import com.jero.modules.wkflow.feginClient.WorkFlowFeignClient; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.jeecg.modules.jmreport.common.constant.CommonConstant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -64,6 +66,9 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl ids) { - removeByIds(ids); + public void deleteByIds(List ids,String cut) { + QueryWrapper lawsOpinionGatherEOQueryWrapper = new QueryWrapper<>(); + lawsOpinionGatherEOQueryWrapper.lambda().eq(LawsOpinionGatherEO::getGatherResult, GatherResultEnum.UNDERWAY.getValue()); + lawsOpinionGatherEOQueryWrapper.lambda().in(LawsOpinionGatherEO::getId, ids); + List lawsOpinionGatherEOList = this.list(lawsOpinionGatherEOQueryWrapper); - QueryWrapper deleteWrapper = new QueryWrapper(); - deleteWrapper.in("laws_opinion_gather_id",ids); - this.lawsOpinionAssessmentResultEOService.remove(deleteWrapper); + List actiProcInstIdList = lawsOpinionGatherEOList.stream().map(LawsOpinionGatherEO::getActiProcInstId).distinct().collect(Collectors.toList()); + String prcIds = org.apache.commons.lang.StringUtils.join(actiProcInstIdList,","); + Result result = this.workFlowFeignClient.deleteProcessInstanceByPrcIds(prcIds); + if(result.getCode().equals(CommonConstant.SC_OK_200)){ + removeByIds(ids); + QueryWrapper deleteWrapper = new QueryWrapper(); + deleteWrapper.in("laws_opinion_gather_id",ids); + this.lawsOpinionAssessmentResultEOService.remove(deleteWrapper); + }else { + if(StringUtils.equals(cut,CutEnum.CN.getValue())){ + throw new JeroBootException("删除失败,请联系管理员!"); + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + throw new JeroBootException("Delete failed, please contact the administrator!"); + } + } } /** @@ -283,4 +303,36 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl batchCompleteTask(JSONObject jsonObject) { + String ids = jsonObject.getString("ids"); + String cut = jsonObject.getString("cut"); + if(StringUtils.isEmpty(ids)){ + if(StringUtils.equals(cut,CutEnum.CN.getValue())){ + throw new JeroBootException("至少选择一条数据进行手动结束!"); + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + throw new JeroBootException("Select at least one piece of data for manual termination!"); + } + } + + List lawsOpinionGatherIdList = Arrays.asList(ids.split(",")); + QueryWrapper lawsOpinionGatherEOQueryWrapper = new QueryWrapper<>(); + lawsOpinionGatherEOQueryWrapper.lambda().eq(LawsOpinionGatherEO::getGatherResult, GatherResultEnum.UNDERWAY.getValue()); + lawsOpinionGatherEOQueryWrapper.lambda().in(LawsOpinionGatherEO::getId, lawsOpinionGatherIdList); + List lawsOpinionGatherEOList = this.list(lawsOpinionGatherEOQueryWrapper); + if (CollectionUtils.isNotEmpty(lawsOpinionGatherEOList)) { + List actiProcInstIdList = lawsOpinionGatherEOList.stream().map(LawsOpinionGatherEO::getActiProcInstId).distinct().collect(Collectors.toList()); + String actiProcInstIds = org.apache.commons.lang.StringUtils.join(actiProcInstIdList,","); + //将这些流程实例下的待办任务提交 + Result result = this.workFlowFeignClient.completeTaskByPids(actiProcInstIds); + if(result.getCode().equals(CommonConstant.SC_OK_200)){ + lawsOpinionGatherEOList.forEach(lawsOpinionGatherEO -> { + lawsOpinionGatherEO.setGatherResult(GatherResultEnum.COMPLETED.getValue()); + }); + this.updateBatchById(lawsOpinionGatherEOList); + } + } + return new Result<>().success("手动结束成功!"); + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/controller/LawsTechnologyEvaluationEOController.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/controller/LawsTechnologyEvaluationEOController.java index 9ca5ddf32..ca025a19e 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/controller/LawsTechnologyEvaluationEOController.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/controller/LawsTechnologyEvaluationEOController.java @@ -130,8 +130,8 @@ public class LawsTechnologyEvaluationEOController extends JeroController deleteBatch(@RequestParam(name="ids",required=true) String ids) { - this.lawsTechnologyEvaluationEOService.deleteByIds(Arrays.asList(ids.split(","))); + public Result deleteBatch(@RequestParam(name="ids",required=true) String ids,@RequestParam(name="cut",required=true) String cut) { + this.lawsTechnologyEvaluationEOService.deleteByIds(Arrays.asList(ids.split(",")),cut); return Result.OK("批量删除成功!"); } @@ -180,8 +180,8 @@ public class LawsTechnologyEvaluationEOController extends JeroController processCall(@RequestBody JSONObject jsonObject){ return this.lawsTechnologyEvaluationEOService.processCall(jsonObject); @@ -218,4 +218,11 @@ public class LawsTechnologyEvaluationEOController extends JeroController> result = this.lawsTechnologyEvaluationEOService.queryPageDummyById(parameter); return Result.OK(result); } + + @AutoLog(value = "法规技术评估-批量完成任务") + @ApiOperation(value="法规技术评估-批量完成任务", notes="法规技术评估-批量完成任务") + @PostMapping(value = "/batchCompleteTask") + public Result batchCompleteTask(@RequestBody JSONObject jsonObject){ + return this.lawsTechnologyEvaluationEOService.batchCompleteTask(jsonObject); + } } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/job/LawsTechnologyEvaluationJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/job/LawsTechnologyEvaluationJob.java index 63f308573..c3877f9e8 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/job/LawsTechnologyEvaluationJob.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/job/LawsTechnologyEvaluationJob.java @@ -38,7 +38,8 @@ public class LawsTechnologyEvaluationJob implements Job { public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { log.info("法规技术评估流程,定时任务开启 ====================================================="); - QueryWrapper queryWrapper = new QueryWrapper<>(); + //TODO 2022-09-29 该功能被手动按钮替代 对应禅道bug编号 59979 + /*QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(LawsTechnologyEvaluationEO::getFlowStatus, GatherResultEnum.UNDERWAY.getValue()); List lawsTechnologyEvaluationEOList = this.lawsTechnologyEvaluationEOService.list(queryWrapper); @@ -73,7 +74,7 @@ public class LawsTechnologyEvaluationJob implements Job { } } - } + }*/ log.info("法规技术评估流程,定时任务结束 ====================================================="); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/ILawsTechnologyEvaluationEOService.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/ILawsTechnologyEvaluationEOService.java index f13cde5ca..b2bad56ff 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/ILawsTechnologyEvaluationEOService.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/ILawsTechnologyEvaluationEOService.java @@ -50,7 +50,7 @@ public interface ILawsTechnologyEvaluationEOService extends IService ids); + void deleteByIds(List ids,String cut); /** * 通过id查询 @@ -90,4 +90,6 @@ public interface ILawsTechnologyEvaluationEOService extends IService> queryPageDummyById(Map parameter); void workFlowSendMsg(JSONObject jsonObject); + + Result batchCompleteTask(JSONObject jsonObject); } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java index 4ef994acd..567660c55 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsTechnologyEvaluation/service/impl/LawsTechnologyEvaluationEOServiceImpl.java @@ -16,6 +16,7 @@ import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper; import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl; import com.jero.modules.lawsOpinionGather.enums.GatherResultEnum; import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO; +import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO; import com.jero.modules.lawsTechnologyEvaluation.mapper.LawsTechnologyEvaluationEOMapper; import com.jero.modules.lawsTechnologyEvaluation.service.*; import com.jero.modules.project.enums.JumpLinkEnum; @@ -31,12 +32,14 @@ import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.impl.SysCategoryServiceImpl; import com.jero.modules.system.service.impl.SysDictItemServiceImpl; +import com.jero.modules.wkflow.feginClient.WorkFlowFeignClient; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; +import org.jeecg.modules.jmreport.common.constant.CommonConstant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -90,6 +93,8 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl ids) { - removeByIds(ids); + public void deleteByIds(List ids,String cut) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().in(LawsTechnologyEvaluationEO::getId, ids); + List lawsTechnologyEvaluationEOList = this.list(queryWrapper); - QueryWrapper deleteWrapper = new QueryWrapper(); - deleteWrapper.in("laws_technology_evaluation_id",ids); - this.lawsTechnologyEvaluationFlowDetailEOService.remove(deleteWrapper); + List lawsTechnologyEvaluationIdList = lawsTechnologyEvaluationEOList.stream().map(LawsTechnologyEvaluationEO::getId).distinct().collect(Collectors.toList()); - this.lawsTechnologyEvaluationItemResultEOService.remove(deleteWrapper); + //获取这些法规技术评估数据的下级流程明细数据。 + QueryWrapper flowDetailEOQueryWrapper = new QueryWrapper<>(); + flowDetailEOQueryWrapper.lambda().in(LawsTechnologyEvaluationFlowDetailEO::getLawsTechnologyEvaluationId,lawsTechnologyEvaluationIdList); + List lawsTechnologyEvaluationFlowDetailEOList = lawsTechnologyEvaluationFlowDetailEOService.list(flowDetailEOQueryWrapper); - this.lawsTechnologyEvaluationResultEOService.remove(deleteWrapper); + if(CollectionUtils.isNotEmpty(lawsTechnologyEvaluationFlowDetailEOList)){ + String prcIds = lawsTechnologyEvaluationFlowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.joining(",")); + Result result = this.workFlowFeignClient.deleteProcessInstanceByPrcIds(prcIds); + if(result.getCode().equals(CommonConstant.SC_OK_200)){ + removeByIds(ids); - this.lawsTechnologyEvaluationComplianceResultEOService.remove(deleteWrapper); + QueryWrapper deleteWrapper = new QueryWrapper(); + deleteWrapper.in("laws_technology_evaluation_id",ids); + this.lawsTechnologyEvaluationFlowDetailEOService.remove(deleteWrapper); + + this.lawsTechnologyEvaluationItemResultEOService.remove(deleteWrapper); + + this.lawsTechnologyEvaluationResultEOService.remove(deleteWrapper); + + this.lawsTechnologyEvaluationComplianceResultEOService.remove(deleteWrapper); + }else { + if(StringUtils.equals(cut,CutEnum.CN.getValue())){ + throw new JeroBootException("删除失败,请联系管理员!"); + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + throw new JeroBootException("Delete failed, please contact the administrator!"); + } + } + } } /** @@ -629,6 +657,45 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl batchCompleteTask(JSONObject jsonObject) { + String ids = jsonObject.getString("ids"); + String cut = jsonObject.getString("cut"); + if(StringUtils.isEmpty(ids)){ + if(StringUtils.equals(cut,CutEnum.CN.getValue())){ + throw new JeroBootException("至少选择一条数据进行手动结束!"); + }else if(StringUtils.equals(cut,CutEnum.EN.getValue())){ + throw new JeroBootException("Select at least one piece of data for manual termination!"); + } + } + + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().eq(LawsTechnologyEvaluationEO::getFlowStatus, GatherResultEnum.UNDERWAY.getValue()); + queryWrapper.lambda().in(LawsTechnologyEvaluationEO::getId, Arrays.asList(ids.split(","))); + List lawsTechnologyEvaluationEOList = this.list(queryWrapper); + + if (CollectionUtils.isNotEmpty(lawsTechnologyEvaluationEOList)) { + List lawsTechnologyEvaluationIdList = lawsTechnologyEvaluationEOList.stream().map(LawsTechnologyEvaluationEO::getId).distinct().collect(Collectors.toList()); + + //获取这些法规技术评估数据的下级流程明细数据。 + QueryWrapper flowDetailEOQueryWrapper = new QueryWrapper<>(); + flowDetailEOQueryWrapper.lambda().in(LawsTechnologyEvaluationFlowDetailEO::getLawsTechnologyEvaluationId,lawsTechnologyEvaluationIdList); + List lawsTechnologyEvaluationFlowDetailEOList = lawsTechnologyEvaluationFlowDetailEOService.list(flowDetailEOQueryWrapper); + + if(CollectionUtils.isNotEmpty(lawsTechnologyEvaluationFlowDetailEOList)){ + String actiProcInstIds = lawsTechnologyEvaluationFlowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.joining(",")); + Result result = this.workFlowFeignClient.completeLawsTechnologyEvaluationTaskByPids(actiProcInstIds); + if(result.getCode().equals(CommonConstant.SC_OK_200)){ + lawsTechnologyEvaluationEOList.forEach(lawsTechnologyEvaluationEO -> { + lawsTechnologyEvaluationEO.setFlowStatus(GatherResultEnum.COMPLETED.getValue()); + }); + this.updateBatchById(lawsTechnologyEvaluationEOList); + } + } + } + return new Result<>().success("手动结束成功!"); + } + private String getTreeName(String cut, List categoryList, List technologyTerritoryList) { StringBuilder sb = new StringBuilder(); for (String technologyTerritory : technologyTerritoryList) { diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/WorkFlowFeignClient.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/WorkFlowFeignClient.java index 0490604f4..51070cea7 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/WorkFlowFeignClient.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/wkflow/feginClient/WorkFlowFeignClient.java @@ -178,4 +178,7 @@ public interface WorkFlowFeignClient { @RequestMapping(value = "/bat-wkflow/task/getTaskAssigneeListByPrcIds",method = RequestMethod.GET) List getTaskAssigneeListByPrcIds(@RequestParam("actiProcInstIds") String actiProcInstIds); + + @RequestMapping(value = "/bat-wkflow/deleteProcessInstanceByPrcIds",method = RequestMethod.GET) + Result deleteProcessInstanceByPrcIds(@RequestParam("prcIds") String prcIds); } From 4ede260f0ecb7f9d7e7707c74e44038ae1d3219b Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Thu, 29 Sep 2022 14:19:50 +0800 Subject: [PATCH 08/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=89=E6=9C=9F?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/standardDecompositionSheet.vue | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/jero-web/src/views/businessSupport/technologyAssessment/components/standardDecompositionSheet.vue b/jero-web/src/views/businessSupport/technologyAssessment/components/standardDecompositionSheet.vue index b96b40da0..7390426d6 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/components/standardDecompositionSheet.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/components/standardDecompositionSheet.vue @@ -55,9 +55,9 @@ {{$t('informationCategory')}}
+ :placeholder="$t('PleaseSelect')+$t('informationCategory')" + :type="'select'" + :triggerChange="false" :dictCode="'information_category'"/>
@@ -136,7 +136,7 @@ confirmLoading: false, selectedRowKeys: [], sarFileSplitInfoList: [], - informationCategoryList:[], + informationCategoryList: [], url: { list: '/split/sarFileSplitItems/getSplitItemsByPage' }, @@ -244,14 +244,18 @@ } }, searchQuery() { - this.pageNo = 1 - this.replacePage() + if (this.queryParam.info_id) { + this.pageNo = 1 + this.replacePage() + } }, searchReset() { - this.pageNo = 1 this.queryParam = {} this.queryParam.info_id = this.sarFileSplitInfoList && this.sarFileSplitInfoList.length > 0 ? this.sarFileSplitInfoList[0].id : '' - this.replacePage() + if (this.queryParam.info_id) { + this.pageNo = 1 + this.replacePage() + } }, onChange(page, pageSize) { this.pageNo = page @@ -270,15 +274,15 @@ let pageNo = JSON.parse(JSON.stringify(this.pageNo)) let pageSize = JSON.parse(JSON.stringify(this.pageSize)) let queryParam = JSON.parse(JSON.stringify(this.queryParam)) - if (queryParam.technology_territory && queryParam.technology_territory.length > 0){ + if (queryParam.technology_territory && queryParam.technology_territory.length > 0) { queryParam.technology_territory = queryParam.technology_territory.join(',') } let query = { pageNo: pageNo + '', pageSize: pageSize + '', info_id: this.queryParam.info_id, - technology_territory:queryParam.technology_territory, - information_category:queryParam.information_category, + technology_territory: queryParam.technology_territory, + information_category: queryParam.information_category, menu_id: '' } this.loading = true From 71ae922f7bb93a5b7645d951fd845fae607c9da6 Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Thu, 29 Sep 2022 14:27:02 +0800 Subject: [PATCH 09/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?= =?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../regulationsKanban/components/addModel.vue | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/jero-web/src/views/regulationsKanban/components/addModel.vue b/jero-web/src/views/regulationsKanban/components/addModel.vue index 5e959a562..cb6a3b8e9 100644 --- a/jero-web/src/views/regulationsKanban/components/addModel.vue +++ b/jero-web/src/views/regulationsKanban/components/addModel.vue @@ -296,8 +296,14 @@ }, verifyTaskClick(val, num, isTrue) { let query = {} + let isDisplay = false switch (num) { case 1: + if (val.designTaskStatus == 'NotDone'){ + isDisplay = true + }else{ + isDisplay = false + } query = { taskIds: val.designTaskId, actiProcInstId: val.designPId, @@ -307,7 +313,7 @@ studioEngineer: val.studioEngineer, serialNumber: val.serialNumber, TaskKey: val.designTaskDefinitionKey, - isDisplay: isTrue, + isDisplay: isDisplay, flowType: 2, Sponsor: 'designInitiatorName', personLiable: 'designDutyName', @@ -323,6 +329,11 @@ } break case 2: + if (val.prehomoTaskStatus == 'NotDone'){ + isDisplay = true + }else{ + isDisplay = false + } query = { taskIds: val.prehomoTaskId, actiProcInstId: val.prehomoPId, @@ -348,6 +359,11 @@ } break case 3: + if (val.verifyTaskStatus == 'NotDone'){ + isDisplay = true + }else{ + isDisplay = false + } query = { taskIds: val.verifyTaskId, actiProcInstId: val.verifyPId, From 5b4c7f8cb004ea208ad5bfd8521239c91d49046b Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Thu, 29 Sep 2022 14:43:28 +0800 Subject: [PATCH 10/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?= =?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../technologyAssessment/components/TermInformation.vue | 6 ++++++ .../processCenter/components/evaluatorFeedbackList.vue | 6 ++++++ .../src/views/projectManagement/components/addModel.vue | 1 + 3 files changed, 13 insertions(+) diff --git a/jero-web/src/views/businessSupport/technologyAssessment/components/TermInformation.vue b/jero-web/src/views/businessSupport/technologyAssessment/components/TermInformation.vue index 0b3afea18..9e3374a4a 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/components/TermInformation.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/components/TermInformation.vue @@ -296,6 +296,12 @@ if (dataList[i].evaluationMethods && dataList[i].evaluationMethods instanceof Array) { dataList[i].evaluationMethods = dataList[i].evaluationMethods.join(',') } + Object.keys(dataList[i]).forEach(res=>{ + if (dataList[i][res] && typeof dataList[i][res] == 'string') { + dataList[i][res] = dataList[i][res].replace(/\"/g, '“') + dataList[i][res] = dataList[i][res].replace(/\'/g, '‘') + } + }) dataList[i].lawsTechnologyEvaluationId = this.$route.query.lawsTechnologyEvaluationId || this.getUUID if (!dataList[i].evaluatorIds) { this.$message.warning(this.$t('pleaseCompleteTheEvaluationMethodorEvaluator')) diff --git a/jero-web/src/views/processCenter/components/evaluatorFeedbackList.vue b/jero-web/src/views/processCenter/components/evaluatorFeedbackList.vue index 529f97588..3b8473872 100644 --- a/jero-web/src/views/processCenter/components/evaluatorFeedbackList.vue +++ b/jero-web/src/views/processCenter/components/evaluatorFeedbackList.vue @@ -345,6 +345,12 @@ this.$message.warning(this.$t('PleaseCompleteList')) return } + Object.keys(this.dataSource[i]).forEach(res=>{ + if (this.dataSource[i][res] && typeof this.dataSource[i][res] == 'string') { + this.dataSource[i][res] = this.dataSource[i][res].replace(/\"/g, '“') + this.dataSource[i][res] = this.dataSource[i][res].replace(/\'/g, '‘') + } + }) } if (this.$route.query.taskDefinitionKey == 'pgrqr'){ let feedbackTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss') diff --git a/jero-web/src/views/projectManagement/components/addModel.vue b/jero-web/src/views/projectManagement/components/addModel.vue index fd880aadc..47e7685e3 100644 --- a/jero-web/src/views/projectManagement/components/addModel.vue +++ b/jero-web/src/views/projectManagement/components/addModel.vue @@ -348,6 +348,7 @@ this.getNameList() this.formInline.studioEngineerName = this.userInfo().username this.formInline.studioEngineer = this.userInfo().id + this.formInline = {...this.formInline} this.$nextTick(() => { this.$refs.ruleForm.clearValidate() }) From 48652d3efe8e6bb328fce3117ecc5d9a1e5acb7e Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 29 Sep 2022 14:45:33 +0800 Subject: [PATCH 11/39] =?UTF-8?q?=E6=B3=95=E8=A7=84=E6=8A=80=E6=9C=AF?= =?UTF-8?q?=E8=AF=84=E4=BC=B0=E8=B0=83=E7=94=A8=E6=9F=A5=E8=AF=A2=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=8B=86=E5=88=86=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=95=B0=E6=8D=AE=E4=B8=AD=E5=B8=A6=E8=8B=B1=E6=96=87?= =?UTF-8?q?=E5=8D=95=E5=8F=8C=E5=BC=95=E5=8F=B7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../split/service/impl/FileSplitItemsEOServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java index c60745cc9..44ee566b3 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java @@ -575,6 +575,12 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl Date: Thu, 29 Sep 2022 14:53:57 +0800 Subject: [PATCH 12/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?= =?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-web/src/components/PersonnelSelection/index.vue | 3 ++- jero-web/src/views/projectManagement/components/addModel.vue | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/jero-web/src/components/PersonnelSelection/index.vue b/jero-web/src/components/PersonnelSelection/index.vue index bcb3ce1c5..755e08ff2 100644 --- a/jero-web/src/components/PersonnelSelection/index.vue +++ b/jero-web/src/components/PersonnelSelection/index.vue @@ -51,6 +51,7 @@ style="margin-bottom: 60px;height: 600px" v-if="treeVisible" checkable + checkStrictly :loading="loading" :tree-data="gData" @check="onCheck" @@ -164,7 +165,7 @@ // }, onCheck(checkedKeys, info) { - this.userIds = checkedKeys + this.userIds = checkedKeys.checked this.userName = [] if (this.userIds.length > 0) { for (let i = 0; i < this.userIds.length; i++) { diff --git a/jero-web/src/views/projectManagement/components/addModel.vue b/jero-web/src/views/projectManagement/components/addModel.vue index 47e7685e3..65b190bd4 100644 --- a/jero-web/src/views/projectManagement/components/addModel.vue +++ b/jero-web/src/views/projectManagement/components/addModel.vue @@ -335,6 +335,7 @@ }) this.yearNameDataList = content[0].yearNameDataList || [] this.formInline = value + this.formInline = { ...this.formInline } } } else { this.projectNameList = [] @@ -348,7 +349,7 @@ this.getNameList() this.formInline.studioEngineerName = this.userInfo().username this.formInline.studioEngineer = this.userInfo().id - this.formInline = {...this.formInline} + this.formInline = { ...this.formInline } this.$nextTick(() => { this.$refs.ruleForm.clearValidate() }) From fe1999f7e33d1ee7dcbfe0c74d389e83b4d1fa36 Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 29 Sep 2022 15:04:39 +0800 Subject: [PATCH 13/39] =?UTF-8?q?59990=20=E6=96=87=E6=A1=A3=E7=BF=BB?= =?UTF-8?q?=E8=AF=91=E4=B8=8B=E8=BD=BD=E7=9B=AE=E6=A0=87=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E5=A4=84=E7=90=86=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/DocTranslationEO.java | 3 + .../impl/DocTranslationEOServiceImpl.java | 16 + jero-web/package-lock.json | 387 +++++++++++++++++- .../documentTranslation/index.vue | 3 +- 4 files changed, 398 insertions(+), 11 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/entity/DocTranslationEO.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/entity/DocTranslationEO.java index 41a793654..e3e6909cf 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/entity/DocTranslationEO.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/entity/DocTranslationEO.java @@ -127,4 +127,7 @@ public class DocTranslationEO implements Serializable { @ApiModelProperty(value = "目标文件id") private java.lang.String targetFileId; + /**翻译后文件名称*/ + @TableField(exist = false) + private String targetFileName; } diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/service/impl/DocTranslationEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/service/impl/DocTranslationEOServiceImpl.java index e90b396bd..3425c99e3 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/service/impl/DocTranslationEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/docTranslation/service/impl/DocTranslationEOServiceImpl.java @@ -20,6 +20,7 @@ import com.jero.modules.docTranslation.service.IDocTranslationEOService; import com.jero.modules.docTranslation.utils.TranslationDocumentUtils; import com.jero.modules.document.enums.FieldTypeEnum; import com.jero.modules.oss.entity.OSSFile; +import com.jero.modules.oss.service.IOSSFileService; import me.zhyd.oauth.utils.StringUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.shiro.SecurityUtils; @@ -47,6 +48,8 @@ public class DocTranslationEOServiceImpl extends ServiceImpl datas,String cut){ if(CollectionUtils.isNotEmpty(datas)){ + String targetFileIds = datas.stream().map(DocTranslationEO::getTargetFileId).distinct().collect(Collectors.joining(",")); + List targetFileList = this.iOSSFileService.getFileInfos(targetFileIds); for (DocTranslationEO data : datas) { String textStatus_dictText = ""; OnlCgformField fileTypeField = this.onlCgformFieldService.queryById(data.getTextStatus()); @@ -166,6 +171,17 @@ public class DocTranslationEOServiceImpl extends ServiceImpl { + boolean flag = false; + if (org.apache.commons.lang3.StringUtils.equals(data.getTargetFileId(), targetFile.getId())) { + flag = true; + } + return flag; + }).map(OSSFile::getFileName).collect(Collectors.joining(",")); + data.setTargetFileName(targetFileName); + } } } } diff --git a/jero-web/package-lock.json b/jero-web/package-lock.json index 5038e50fb..cb4ecb038 100644 --- a/jero-web/package-lock.json +++ b/jero-web/package-lock.json @@ -5,7 +5,6 @@ "requires": true, "packages": { "": { - "name": "jero-web", "version": "2.4.2", "dependencies": { "@antv/data-set": "^0.11.4", @@ -19,6 +18,7 @@ "dayjs": "^1.8.0", "dom-align": "1.12.0", "echarts": "^5.0.2", + "element-ui": "^2.15.10", "enquire.js": "^2.1.6", "jquery": "^3.6.0", "js-base64": "^3.7.2", @@ -26,6 +26,7 @@ "jsencrypt": "^3.0.0-rc.1", "lodash.get": "^4.4.2", "lodash.pick": "^4.4.0", + "mammoth": "^1.4.21", "md5": "^2.2.1", "nprogress": "^0.2.0", "tinymce": "^5.3.2", @@ -40,6 +41,7 @@ "vue-ls": "^3.2.0", "vue-photo-preview": "^1.1.3", "vue-print-nb-jeecg": "^1.0.9", + "vue-quill-editor": "^3.0.6", "vue-router": "^3.0.1", "vue-splitpane": "^1.0.4", "vuedraggable": "^2.20.0", @@ -7447,7 +7449,6 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -7797,6 +7798,11 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" }, + "node_modules/dingbat-to-unicode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz", + "integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==" + }, "node_modules/dir-glob": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", @@ -8019,6 +8025,14 @@ "ignored": "bin/ignored" } }, + "node_modules/duck": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/duck/-/duck-0.1.12.tgz", + "integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==", + "dependencies": { + "underscore": "^1.13.1" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -8089,6 +8103,38 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz", "integrity": "sha512-N7FLvjDPADxad+OXXBuYfcvDvCBG0aW8ZZGr7G91sZMviYbnQJFxdSvUus4SJ0K7Q8dzMxE+Wx1d/CrJIIJ0sw==" }, + "node_modules/element-ui": { + "version": "2.15.10", + "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.10.tgz", + "integrity": "sha512-jmD++mU2wKXbisvx4fxOl2mHaU+HWHTAq/3Wf8x9Bwyu4GdDZPLABb+CGi3DWN6fPqdgRcd74aX39DO+YHObLw==", + "dependencies": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + }, + "peerDependencies": { + "vue": "^2.5.17" + } + }, + "node_modules/element-ui/node_modules/async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", + "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", + "dependencies": { + "babel-runtime": "6.x" + } + }, + "node_modules/element-ui/node_modules/throttle-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", + "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==", + "engines": { + "node": ">=4" + } + }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -9319,8 +9365,7 @@ "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/extend-shallow": { "version": "3.0.2", @@ -9506,6 +9551,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "node_modules/fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + }, "node_modules/fast-glob": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", @@ -10692,6 +10742,11 @@ "node": ">=0.10.0" } }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "node_modules/import-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", @@ -11517,6 +11572,17 @@ "verror": "1.10.0" } }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "node_modules/killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -11675,6 +11741,14 @@ "node": ">= 0.8.0" } }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, "node_modules/lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -11981,6 +12055,16 @@ "loose-envify": "cli.js" } }, + "node_modules/lop": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/lop/-/lop-0.4.1.tgz", + "integrity": "sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==", + "dependencies": { + "duck": "^0.1.12", + "option": "~0.2.1", + "underscore": "^1.13.1" + } + }, "node_modules/loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", @@ -12032,6 +12116,35 @@ "semver": "bin/semver.js" } }, + "node_modules/mammoth": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/mammoth/-/mammoth-1.5.1.tgz", + "integrity": "sha512-7ZioZBf/1HjYrm1qZJOO+DD+rYxLvwrHS+HVOwW89hwIp+r6ZqJ/Eq2rXSS+8ezZ3/DuW6FUUp2Dfz6e7B2pBQ==", + "dependencies": { + "argparse": "~1.0.3", + "bluebird": "~3.4.0", + "dingbat-to-unicode": "^1.0.1", + "jszip": "^3.7.1", + "lop": "^0.4.1", + "path-is-absolute": "^1.0.0", + "sax": "~1.1.1", + "underscore": "^1.13.1", + "xmlbuilder": "^10.0.0" + }, + "bin": { + "mammoth": "bin/mammoth" + } + }, + "node_modules/mammoth/node_modules/bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "node_modules/mammoth/node_modules/sax": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.6.tgz", + "integrity": "sha512-8zci48uUQyfqynGDSkUMD7FCJB96hwLnlZOXlgs1l3TX+LW27t3psSWKUxC0fxVgA86i8tL4NwGcY1h/6t3ESg==" + }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -12769,6 +12882,11 @@ "node": ">=4" } }, + "node_modules/normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + }, "node_modules/npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -13062,6 +13180,11 @@ "node": ">=4" } }, + "node_modules/option": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/option/-/option-0.2.4.tgz", + "integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==" + }, "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -13259,6 +13382,11 @@ "no-case": "^2.2.0" } }, + "node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -16427,6 +16555,45 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, + "node_modules/quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "dependencies": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + } + }, + "node_modules/quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "dependencies": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/quill/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/quill/node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" + }, "node_modules/raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -18953,6 +19120,11 @@ "node": ">=0.10.0" } }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -20058,6 +20230,19 @@ "babel-plugin-transform-runtime": "^6.23.0" } }, + "node_modules/vue-quill-editor": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz", + "integrity": "sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ==", + "dependencies": { + "object-assign": "^4.1.1", + "quill": "^1.3.4" + }, + "engines": { + "node": ">= 4.0.0", + "npm": ">= 3.0.0" + } + }, "node_modules/vue-ref": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/vue-ref/-/vue-ref-2.0.0.tgz", @@ -21124,6 +21309,14 @@ "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-2.4.8.tgz", "integrity": "sha512-/95ZaQK9GJE/EYrpMv9lgKdkEMQwWv4a4TF4dddi4gSzZ33vp/rZvzJNNV9XknaOkMizK9IBSX8CB/nL+SAk0Q==" }, + "node_modules/xmlbuilder": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", + "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -27565,8 +27758,7 @@ "deepmerge": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", - "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", - "dev": true + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" }, "default-gateway": { "version": "5.0.5", @@ -27837,6 +28029,11 @@ } } }, + "dingbat-to-unicode": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz", + "integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w==" + }, "dir-glob": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", @@ -28034,6 +28231,14 @@ "minimatch": "^3.0.4" } }, + "duck": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/duck/-/duck-0.1.12.tgz", + "integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==", + "requires": { + "underscore": "^1.13.1" + } + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -28099,6 +28304,34 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz", "integrity": "sha512-N7FLvjDPADxad+OXXBuYfcvDvCBG0aW8ZZGr7G91sZMviYbnQJFxdSvUus4SJ0K7Q8dzMxE+Wx1d/CrJIIJ0sw==" }, + "element-ui": { + "version": "2.15.10", + "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.10.tgz", + "integrity": "sha512-jmD++mU2wKXbisvx4fxOl2mHaU+HWHTAq/3Wf8x9Bwyu4GdDZPLABb+CGi3DWN6fPqdgRcd74aX39DO+YHObLw==", + "requires": { + "async-validator": "~1.8.1", + "babel-helper-vue-jsx-merge-props": "^2.0.0", + "deepmerge": "^1.2.0", + "normalize-wheel": "^1.0.1", + "resize-observer-polyfill": "^1.5.0", + "throttle-debounce": "^1.0.1" + }, + "dependencies": { + "async-validator": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz", + "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==", + "requires": { + "babel-runtime": "6.x" + } + }, + "throttle-debounce": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz", + "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==" + } + } + }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -29083,8 +29316,7 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -29233,6 +29465,11 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + }, "fast-glob": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", @@ -30202,6 +30439,11 @@ "dev": true, "optional": true }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, "import-cwd": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", @@ -30829,6 +31071,17 @@ "verror": "1.10.0" } }, + "jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, "killable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", @@ -30952,6 +31205,14 @@ "type-check": "~0.3.2" } }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -31219,6 +31480,16 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "lop": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/lop/-/lop-0.4.1.tgz", + "integrity": "sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==", + "requires": { + "duck": "^0.1.12", + "option": "~0.2.1", + "underscore": "^1.13.1" + } + }, "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", @@ -31260,6 +31531,34 @@ } } }, + "mammoth": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/mammoth/-/mammoth-1.5.1.tgz", + "integrity": "sha512-7ZioZBf/1HjYrm1qZJOO+DD+rYxLvwrHS+HVOwW89hwIp+r6ZqJ/Eq2rXSS+8ezZ3/DuW6FUUp2Dfz6e7B2pBQ==", + "requires": { + "argparse": "~1.0.3", + "bluebird": "~3.4.0", + "dingbat-to-unicode": "^1.0.1", + "jszip": "^3.7.1", + "lop": "^0.4.1", + "path-is-absolute": "^1.0.0", + "sax": "~1.1.1", + "underscore": "^1.13.1", + "xmlbuilder": "^10.0.0" + }, + "dependencies": { + "bluebird": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz", + "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA==" + }, + "sax": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.6.tgz", + "integrity": "sha512-8zci48uUQyfqynGDSkUMD7FCJB96hwLnlZOXlgs1l3TX+LW27t3psSWKUxC0fxVgA86i8tL4NwGcY1h/6t3ESg==" + } + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -31878,6 +32177,11 @@ "sort-keys": "^1.0.0" } }, + "normalize-wheel": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", + "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA==" + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -32092,6 +32396,11 @@ "is-wsl": "^1.1.0" } }, + "option": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/option/-/option-0.2.4.tgz", + "integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A==" + }, "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", @@ -32251,6 +32560,11 @@ "no-case": "^2.2.0" } }, + "parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -34870,6 +35184,41 @@ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" }, + "quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "requires": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" + }, + "eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" + } + } + }, + "quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "requires": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + } + }, "raf": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", @@ -36915,6 +37264,11 @@ } } }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -37268,8 +37622,7 @@ "integrity": "sha512-ERAREN+6k/ywrwT+swcMo4CDIAq6dBjnB0+lhmsSfaip06BGHSBfNKg6yl7/4GJ9Nk2kioUw3llNhEboJuIKmQ==", "requires": { "@types/node": "*", - "viser": "^2.0.0", - "vue": "^2.5.3" + "viser": "^2.0.0" } }, "vm-browserify": { @@ -37814,6 +38167,15 @@ "babel-plugin-transform-runtime": "^6.23.0" } }, + "vue-quill-editor": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz", + "integrity": "sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ==", + "requires": { + "object-assign": "^4.1.1", + "quill": "^1.3.4" + } + }, "vue-ref": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/vue-ref/-/vue-ref-2.0.0.tgz", @@ -38665,6 +39027,11 @@ "resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-2.4.8.tgz", "integrity": "sha512-/95ZaQK9GJE/EYrpMv9lgKdkEMQwWv4a4TF4dddi4gSzZ33vp/rZvzJNNV9XknaOkMizK9IBSX8CB/nL+SAk0Q==" }, + "xmlbuilder": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz", + "integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/jero-web/src/views/documentTools/documentTranslation/index.vue b/jero-web/src/views/documentTools/documentTranslation/index.vue index 35370e0ee..36096b058 100644 --- a/jero-web/src/views/documentTools/documentTranslation/index.vue +++ b/jero-web/src/views/documentTools/documentTranslation/index.vue @@ -312,7 +312,8 @@ // // }, downloadData(fileQuery) { - downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.targetFileId }) + console.log(fileQuery.targetFileName); + downloadFile('/sys/common/downLoadFile', fileQuery.targetFileName, { id: fileQuery.targetFileId }) }, subscribe(record) { let _this = this From 4820821b40fdf77c5b1f0e90d9a401092b4b484f Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Thu, 29 Sep 2022 15:33:03 +0800 Subject: [PATCH 14/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?= =?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../technologyAssessment/components/evaluationResultsWhole.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue index 220707ec5..645eda78a 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue @@ -96,6 +96,7 @@ return { queryParam: {}, dataSource: [], + userInfoQuery:{}, administrators:false, url: { list: '/lawsTechnologyEvaluation/lawsTechnologyEvaluationComplianceResultEO/list', From 69ad8e6b701a43e1d026d1a6305d59a26cf13a3a Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 29 Sep 2022 15:36:34 +0800 Subject: [PATCH 15/39] update --- .../service/impl/LawsOpinionGatherEOServiceImpl.java | 1 - .../service/impl/FileSplitItemsEOServiceImpl.java | 10 ++++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionGatherEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionGatherEOServiceImpl.java index 491631ca8..376cc56a3 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionGatherEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/lawsOpinionGather/service/impl/LawsOpinionGatherEOServiceImpl.java @@ -116,7 +116,6 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl ids,String cut) { QueryWrapper lawsOpinionGatherEOQueryWrapper = new QueryWrapper<>(); - lawsOpinionGatherEOQueryWrapper.lambda().eq(LawsOpinionGatherEO::getGatherResult, GatherResultEnum.UNDERWAY.getValue()); lawsOpinionGatherEOQueryWrapper.lambda().in(LawsOpinionGatherEO::getId, ids); List lawsOpinionGatherEOList = this.list(lawsOpinionGatherEOQueryWrapper); diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java index 44ee566b3..de51fcadf 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/split/service/impl/FileSplitItemsEOServiceImpl.java @@ -576,10 +576,12 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl Date: Thu, 29 Sep 2022 15:39:49 +0800 Subject: [PATCH 16/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?= =?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/businessSupport/technologyAssessment/index.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jero-web/src/views/businessSupport/technologyAssessment/index.vue b/jero-web/src/views/businessSupport/technologyAssessment/index.vue index b10acce8b..5cf612ac4 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/index.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/index.vue @@ -464,7 +464,8 @@ lawsTechnologyEvaluationId: row.id, standId: row.standId, remark: row.remark, - createBy:row.createBy + createBy:row.createBy, + gatherResult:row.gatherResult } }) window.open(newUrl.href, '_blank') @@ -478,7 +479,8 @@ lawsTechnologyEvaluationId: row.id, standId: row.standId, remark: row.remark, - createBy:row.createBy + createBy:row.createBy, + gatherResult:row.gatherResult } }) window.open(newUrl.href, '_blank') From 0ae590aabf454c4b6754812b063c21adef1beccc Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Thu, 29 Sep 2022 15:41:56 +0800 Subject: [PATCH 17/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?= =?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/evaluationResultsClause.vue | 2 +- .../components/evaluationResultsWhole.vue | 2 +- .../src/views/businessSupport/technologyAssessment/index.vue | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsClause.vue b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsClause.vue index 02b4003c7..667c1dcd1 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsClause.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsClause.vue @@ -15,7 +15,7 @@
{{$t('endProcess')}} diff --git a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue index 645eda78a..cd25daf21 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/components/evaluationResultsWhole.vue @@ -15,7 +15,7 @@
{{$t('endProcess')}} diff --git a/jero-web/src/views/businessSupport/technologyAssessment/index.vue b/jero-web/src/views/businessSupport/technologyAssessment/index.vue index 5cf612ac4..5da2533c3 100644 --- a/jero-web/src/views/businessSupport/technologyAssessment/index.vue +++ b/jero-web/src/views/businessSupport/technologyAssessment/index.vue @@ -465,7 +465,7 @@ standId: row.standId, remark: row.remark, createBy:row.createBy, - gatherResult:row.gatherResult + flowStatus:row.flowStatus } }) window.open(newUrl.href, '_blank') @@ -480,7 +480,7 @@ standId: row.standId, remark: row.remark, createBy:row.createBy, - gatherResult:row.gatherResult + flowStatus:row.flowStatus } }) window.open(newUrl.href, '_blank') From af9314bacbac72861d0c739909115edcb0e32180 Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 29 Sep 2022 16:09:51 +0800 Subject: [PATCH 18/39] =?UTF-8?q?=E7=A6=85=E9=81=9360494=20=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E6=96=87=E4=BB=B6=EF=BC=8C=E4=B8=8A=E4=BC=A0gif?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=9B=BE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jero/modules/oss/service/impl/OSSFileServiceImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/oss/service/impl/OSSFileServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/oss/service/impl/OSSFileServiceImpl.java index 94c8d84af..bf1ccd851 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/oss/service/impl/OSSFileServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/oss/service/impl/OSSFileServiceImpl.java @@ -253,7 +253,7 @@ public class OSSFileServiceImpl extends ServiceImpl impl String[] fileTypeArr = {".doc", ".DOC", ".txt", ".TXT", ".docx", ".DOCX", ".xls", ".XLS", ".xlsx", ".XLSX", ".pdf", ".PDF", ".png", ".PNG", ".jfif", ".JFIF", ".pjpeg", ".PJPEG", ".jpeg", ".JPEG", ".pjp", ".PJP", - ".jpg", ".JPG", ".swf", ".SWF", ".bmp", ".BMP", ".rar", ".RAR", ".zip", ".ZIP", ".ppt", ".PPT", ".pptx", ".PPTX", ".csv", ".CSV"}; + ".jpg", ".JPG", ".swf", ".SWF", ".bmp", ".BMP", ".rar", ".RAR", ".zip", ".ZIP", ".ppt", ".PPT", ".pptx", ".PPTX", ".csv", ".CSV", ".gif", ".GIF"}; boolean flag = true; for (String fileTypeTemp : fileTypeArr) { if (fileTypeTemp.equalsIgnoreCase(fileType)) { @@ -262,9 +262,9 @@ public class OSSFileServiceImpl extends ServiceImpl impl } if (flag) { if (cut.equals(CutEnum.CN.getValue())) { - throw new JeroBootException("只能够上传pdf/word/excel/csv/ppt/txt/zip/rar/静态图片类型的文件。请重新选择文件!"); + throw new JeroBootException("只能够上传pdf/word/excel/csv/ppt/txt/zip/rar/gif/静态图片类型的文件。请重新选择文件!"); } else { - throw new JeroBootException("Only upload pdf/word/excel/csv/ppt/txt/zip/rar/Static image type file. Please re select the file!"); + throw new JeroBootException("Only upload pdf/word/excel/csv/ppt/txt/zip/rar/gif/Static image type file. Please re select the file!"); } } } From 945e370ea334863d12655643d5ef9d5b63d90e2b Mon Sep 17 00:00:00 2001 From: wangzhijiang <12345678> Date: Thu, 29 Sep 2022 18:03:31 +0800 Subject: [PATCH 19/39] =?UTF-8?q?=E9=97=AE=E9=A2=98=E7=9F=A5=E8=AF=86?= =?UTF-8?q?=E5=BA=93-=E6=96=B0=E5=A2=9E=E3=80=81=E7=BC=96=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E5=A4=84=E7=90=86=E6=AD=A3=E6=96=87=E6=8F=92=E5=85=A5?= =?UTF-8?q?es=E6=97=B6=EF=BC=8C=E5=8E=BB=E9=99=A4=E5=AF=8C=E6=96=87?= =?UTF-8?q?=E6=9C=AC=E6=A0=87=E7=AD=BE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProblemKnowledgeBaseEOServiceImpl.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java index aa3e94c37..a1e1f7bd9 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/problemKnowledgeBase/service/impl/ProblemKnowledgeBaseEOServiceImpl.java @@ -40,6 +40,8 @@ import com.jero.modules.system.util.StringUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.shiro.SecurityUtils; import org.jetbrains.annotations.NotNull; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -117,10 +119,11 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl"); - sbCn.append("正文" + ":" + problemKnowledgeBaseEO.getContent() + " "); + sbCn.append("正文" + ":" + content + " "); }else { sbCn.append("
"); sbCn.append("正文" + ":" + "-- "); @@ -363,8 +370,12 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl"); - sbEn.append("Text" + ":" + problemKnowledgeBaseEO.getContent() + " "); + sbEn.append("Text" + ":" + content + " "); }else { sbEn.append("
"); sbEn.append("Text" + ":" + "-- "); From 672706aeae1d10790b3357826be1a8ca6c6e1876 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Thu, 29 Sep 2022 20:30:05 +0800 Subject: [PATCH 20/39] =?UTF-8?q?=E6=9C=88=E6=8A=A5=E5=AF=BC=E5=87=BA--?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC=E5=AD=97=E4=BD=93=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/jero/modules/report/util/WordUtil.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java index 3296ff4fa..f6aadd8d1 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/util/WordUtil.java @@ -1079,7 +1079,7 @@ public class WordUtil { run.setText(text); } //设置字体样式,大小 - run.setFontSize(10); + run.setFontSize(11); run.setFontFamily("Blue Sky Noto Regular"); } @@ -1134,7 +1134,7 @@ public class WordUtil { } //设置字体样式,大小 - run.setFontSize(10); + run.setFontSize(11); run.setFontFamily("Blue Sky Noto Regular"); } From 13f3933ca01e446fbc6b469c807956f8dcb0ed43 Mon Sep 17 00:00:00 2001 From: zhn <947514737@qq.com> Date: Fri, 30 Sep 2022 10:34:39 +0800 Subject: [PATCH 21/39] =?UTF-8?q?=E6=9C=88=E6=8A=A5=E5=AF=BC=E5=87=BA--?= =?UTF-8?q?=E5=B0=81=E9=9D=A2=E5=8D=95=E7=8B=AC=E5=8D=A0=E7=94=A8=E4=B8=80?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/LawsMonthlyReportWriteEOServiceImpl.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java index fa42b801f..c309c19a3 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/report/service/impl/LawsMonthlyReportWriteEOServiceImpl.java @@ -886,6 +886,8 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl lawsMonthlyReportWriteEOS, @@ -900,6 +902,8 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl lawsMonthlyReportWriteEOS, List lawsMonthlyReportTitleTemplateEOS, From 21b20a8a876220bd9de2e972096c6aa2d050e881 Mon Sep 17 00:00:00 2001 From: sunFlower <787203167@qq.com> Date: Fri, 30 Sep 2022 11:04:11 +0800 Subject: [PATCH 22/39] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=A6=85=E9=81=93?= =?UTF-8?q?=E5=B7=B2=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/problemKnowledgeBaseAdd.vue | 5 ++++- .../components/problemKnowledgeBaseListView.vue | 14 ++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseAdd.vue b/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseAdd.vue index 62a54c369..8aebde02f 100644 --- a/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseAdd.vue +++ b/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseAdd.vue @@ -458,6 +458,8 @@ id: this.formInline.bussDocumentLibraryId.split(',')[index] }) }) + } else { + this.formInline.standNumber = [] } this.formInline = { ...this.formInline } } else { @@ -575,7 +577,7 @@ this.$refs.ruleForm.validate(valid => { if (valid) { let formInline = JSON.parse(JSON.stringify(this.formInline)) - if (formInline.standNumber && formInline.standNumber.length > 0){ + if (formInline.standNumber && formInline.standNumber.length > 0) { formInline.standNumber = formInline.standNumber.join(',') } this.loading = true @@ -805,6 +807,7 @@ height: 38px; margin-right: 10px; } + .itemOption { display: inline-block; width: 100%; diff --git a/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseListView.vue b/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseListView.vue index 81b22a7d4..5c4fbfd08 100644 --- a/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseListView.vue +++ b/jero-web/src/views/businessSupport/problemKnowledgeBase/components/problemKnowledgeBaseListView.vue @@ -14,7 +14,7 @@
-
+
@@ -102,7 +102,7 @@
- + {{val.createBy}} {{val.createTime}}
@@ -151,6 +151,10 @@