From 026a3cd190ef863c0925f0777c0759351daaaf9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E9=9C=84?= Date: Thu, 23 Nov 2023 18:20:49 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E9=A1=B9=E7=9B=AE=E5=90=88=E8=A7=84?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/lang/workCenter/zh.js | 16 +- src/components/JExpandTable.vue | 22 +- src/components/selection/UserSelection.vue | 14 +- src/enums/commonEnums.js | 8 +- .../customComparison/CustomComparisonList.vue | 4 +- .../modules/CustomComparisonDrawer.vue | 26 +- .../ProjectComplianceEvaluationProcess.vue | 858 +++++++++++++++++- .../components/ProjectTable.vue | 102 +++ .../components/StandardList.vue | 150 +++ .../modules/SelectProjectModal.vue | 134 +++ .../modules/SelectStandardListDrawer.vue | 225 +++++ .../modules/UninvolvedModal.vue | 100 ++ 12 files changed, 1594 insertions(+), 65 deletions(-) create mode 100644 src/views/workCenter/projectComplianceEvaluationProcess/components/ProjectTable.vue create mode 100644 src/views/workCenter/projectComplianceEvaluationProcess/components/StandardList.vue create mode 100644 src/views/workCenter/projectComplianceEvaluationProcess/modules/SelectProjectModal.vue create mode 100644 src/views/workCenter/projectComplianceEvaluationProcess/modules/SelectStandardListDrawer.vue create mode 100644 src/views/workCenter/projectComplianceEvaluationProcess/modules/UninvolvedModal.vue diff --git a/src/common/lang/workCenter/zh.js b/src/common/lang/workCenter/zh.js index 2d8676ba..44b3688f 100644 --- a/src/common/lang/workCenter/zh.js +++ b/src/common/lang/workCenter/zh.js @@ -363,6 +363,20 @@ module.exports = { selectStandard: '选择标准', taskDistributing: '任务分发', nextStep: '下一步', - lastStep: '上一步' + lastStep: '上一步', + rDComplianceList: '研发合规清单', + salvageListSource: '分解单来源', + vehicleItemInfo: '车型项目信息', + propertiesAndTextAttachments: '属性及文本附件', + batchSelector: '批量选择人员', + standardNameClauseName: '标准名称/条款名称', + terms: '条款内容', + accountabilityUnit: '责任单位', + responsibleUnitHead: '责任单位负责人', + noCauseInvolved: '不涉及原因', + cancelNotInvolve: '取消不涉及', + preNodePeople: '上一节点处理人', + evaluationFeedback:'评估反馈', + ccPerson: '抄送人员' } } diff --git a/src/components/JExpandTable.vue b/src/components/JExpandTable.vue index 4be8f368..d8e0db3f 100644 --- a/src/components/JExpandTable.vue +++ b/src/components/JExpandTable.vue @@ -32,13 +32,13 @@ type="textarea" :maxLength="500" :placeholder="$t('pleaseEnter')+form.dbFieldTxt" - :disabled="form.isDisabled || false" + :disabled="allDisabled || form.isDisabled || false" v-model="record[form.dbFieldName]" /> @@ -46,7 +46,7 @@ @@ -54,7 +54,7 @@ @@ -70,14 +70,14 @@ @@ -85,7 +85,7 @@ @@ -93,7 +93,7 @@ @@ -201,6 +201,12 @@ export default { formIsDepend: { type: [Boolean, String], default: false + }, + // 全部禁用 + allDisabled: { + type: Boolean, + required: false, + default: false } }, data () { diff --git a/src/components/selection/UserSelection.vue b/src/components/selection/UserSelection.vue index 5fef79c0..85c35271 100644 --- a/src/components/selection/UserSelection.vue +++ b/src/components/selection/UserSelection.vue @@ -5,15 +5,14 @@ :type="inputType" :autosize="true" :rows="1" - disabled + readOnly class="user-input" :placeholder="placeholder" :value="checkedValue" @click="selectClick" - :title="checkedValue" - > + :title="checkedValue"> - + {{ $t('userSelect.select') }} @@ -62,6 +61,12 @@ export default { type: String, required: false, default: 'text' + }, + // 是否展示按钮 + showBtn: { + type: Boolean, + required: false, + default: true } }, watch: { @@ -79,6 +84,7 @@ export default { }, methods: { selectClick () { + console.log('点击了') this.$refs.selectModal.open(this.value) }, selectChange (ids) { diff --git a/src/enums/commonEnums.js b/src/enums/commonEnums.js index 6272a750..9c188289 100644 --- a/src/enums/commonEnums.js +++ b/src/enums/commonEnums.js @@ -289,7 +289,13 @@ export const ProcurementProcessNodes = new EsEnums({ // 项目合规评估流程节点 export const ProjectComplianceEvaluationProcessNode = new EsEnums({ - initiate: { text: '法规工程师发起', value: '1', btn: ['save', 'pre', 'next', 'submit'] } + initiate: { text: '法规工程师发起', value: '1', btn: ['save', 'pre', 'next', 'submit'] }, + departLeaderIssued: { text: '各部门主管级领导下发', value: '2', btn: ['return', 'save', 'submit'] }, + moduleOwnerIssued: { text: '模块负责人分发', value: '3', btn: ['return', 'save', 'submit'] }, + designEngineerEvaluation: { text: '设计工程师评估', value: '4', btn: ['return', 'save', 'submit'] }, + moduleOwnerApproval: { text: '模块负责人审批', value: '5', btn: ['return', 'save', 'agree', 'reject'] }, + departLeaderApproval: { text: '各部门主管级领导审批', value: '6', btn: ['return', 'save', 'agree', 'reject'] }, + regulatoryEngineerFiling: { text: '法规工程师归档', value: '7', btn: ['return', 'save', 'submit'] } }) // 企标立项、变更流程 diff --git a/src/views/documentTool/customComparison/CustomComparisonList.vue b/src/views/documentTool/customComparison/CustomComparisonList.vue index 27bdfc98..80e5866e 100644 --- a/src/views/documentTool/customComparison/CustomComparisonList.vue +++ b/src/views/documentTool/customComparison/CustomComparisonList.vue @@ -181,14 +181,14 @@ export default { }) }, handleEdit ({ id }) { - this.$refs.modalForm.edit(id) this.$refs.modalForm.title = this.$t('edit') this.$refs.modalForm.disableSubmit = false + this.$refs.modalForm.edit(id) }, handleDetail ({ id }) { - this.$refs.modalForm.edit(id) this.$refs.modalForm.title = this.$t('details') this.$refs.modalForm.disableSubmit = false + this.$refs.modalForm.edit(id) }, filterTreeOption (input, option) { const text = option.componentOptions.propsData.title || option.componentOptions.propsData.label diff --git a/src/views/documentTool/customComparison/modules/CustomComparisonDrawer.vue b/src/views/documentTool/customComparison/modules/CustomComparisonDrawer.vue index 9ed26349..6a84d10d 100644 --- a/src/views/documentTool/customComparison/modules/CustomComparisonDrawer.vue +++ b/src/views/documentTool/customComparison/modules/CustomComparisonDrawer.vue @@ -54,8 +54,10 @@ dict-code="yn" /> - - + +
@@ -222,11 +224,6 @@ export default { maintainItemList: [] // 维护项列表 } }, - watch: { - title () { - this.isDetail = this.title === this.$t('details') - } - }, methods: { add () { this.visible = true @@ -244,6 +241,20 @@ export default { this.isFirstOpenComparison = false this.getFormData() this.initTableData() + this.dealIsDetail() + }, + dealIsDetail () { + this.isDetail = this.title === this.$t('details') + if (this.isDetail) { + this.isStartComparison = true + this.columns.push({ + title: this.$t('docTool.customComparison.comparativeAnalysisResult'), + dataIndex: 'compareResult', + width: 150, + align: 'center', + scopedSlots: { customRender: 'resultCell' } + }) + } }, initDictConfig () { // 涉及国家 @@ -425,6 +436,7 @@ export default { }) return { ...maintainObj, ...obj } }) + this.dealIsDetail() }, /** * 删除特点(三级表头) diff --git a/src/views/workCenter/projectComplianceEvaluationProcess/ProjectComplianceEvaluationProcess.vue b/src/views/workCenter/projectComplianceEvaluationProcess/ProjectComplianceEvaluationProcess.vue index ddf01516..d2456264 100644 --- a/src/views/workCenter/projectComplianceEvaluationProcess/ProjectComplianceEvaluationProcess.vue +++ b/src/views/workCenter/projectComplianceEvaluationProcess/ProjectComplianceEvaluationProcess.vue @@ -16,21 +16,27 @@
+ + + + + + -
{{ $t('processInformation') }}
+
{{ $t('processInformation') }}
- + + :disabled="processInfoDisabled" + v-decorator="['processName', validatorRules.processName]" /> - + + + + + +
+
+ {{ projectDataSource[0].projectName }} +
+
+
+
+ + + +
+
+ {{ standard.standardNumber }} {{ standard.standardName }} +
+
+
+
+
- +
+ + + + + + + + -
{{ $t('processApprovalInformation') }}
- - - - - - - - - - +
@@ -84,27 +257,40 @@
- + {{ $t('turnTo') }} - + {{ $t('preservation') }} - + + + {{ $t('workCenter.projectComplianceEvaluationProcess.lastStep') }} + + + + {{ $t('workCenter.projectComplianceEvaluationProcess.nextStep') }} + + {{ $t('submit') }} - + {{ $t('agree') }} - + {{ $t('reject') }}
+ + + + + @@ -113,55 +299,618 @@ import PersonnelInfo from '../../../components/PersonnelInfo' import InternalDetailPage from '../../../components/InternalDetailPage' import ProcessDetailList from '../../../components/ProcessDetailList' import { WorkCenterMixin } from '../../../mixins/WorkCenterMixin' -import { ProcessKey } from '../../../enums/commonEnums' +import { ProcessKey, ProjectComplianceEvaluationProcessNode } from '../../../enums/commonEnums' +import JTable from '../../../components/jero/JTable' +import ProjectTable from './components/ProjectTable' +import UserSelection from '../../../components/selection/UserSelection' +import UserSelectModal from '../../../components/selection/UserSelectModal' +import UninvolvedModal from './modules/UninvolvedModal' +import JExpandTable from '../../../components/JExpandTable' export default { name: 'ProjectComplianceEvaluationProcess', - components: { ProcessDetailList, InternalDetailPage, PersonnelInfo }, - mixins: [WorkCenterMixin], - computed: { - pageTitle () { - return `${this.$t('flowCenter')}${this.$route.meta.title}` - } + components: { + JExpandTable, + JTable, + ProcessDetailList, + InternalDetailPage, + PersonnelInfo, + ProjectTable, + UserSelection, + UserSelectModal, + UninvolvedModal }, + mixins: [WorkCenterMixin], data () { return { loading: false, - btnList: [], - disabled: false, // 流程信息表单 processInfoForm: this.$form.createForm(this), processInfo: {}, + // 业务分派信息的表单 + dispatchInfoForm: this.$form.createForm(this), + dispatchInfo: {}, // 审批信息的表单 approvalInfoForm: this.$form.createForm(this), approvalInfo: {}, + currentNode: null, labelCol: { xs: { span: 24 }, - sm: { span: 4 } + sm: { span: 6 } }, wrapperCol: { xs: { span: 24 }, - sm: { span: 20 } + sm: { span: 18 } }, longLabelCol: { xs: { span: 24 }, - sm: { span: 2 } + sm: { span: 3 } }, longWrapperCol: { xs: { span: 24 }, - sm: { span: 22 } + sm: { span: 21 } }, validatorRules: { + // 流程名称 + processName: { + rules: [{ required: true, message: this.$t('pleaseEnter') + this.$t('processName') }], + validateTrigger: 'blur' + }, // 备注 handleText: { rules: [{ required: false, message: this.$t('pleaseEnter') + this.$t('remarks') }], validateTrigger: 'blur' + }, + // 抄送人员 + ccPerson: { + rules: [{ required: true, message: this.$t('pleaseSelect') + this.$t('workCenter.projectComplianceEvaluationProcess.ccPerson') }], + validateTrigger: 'change' + } + }, + currentStep: 0, + steps: [ + // 基本信息 + { + title: this.$t('essentialInformation') + }, + // 选择项目 + { + title: this.$t('projectLibrary.selectProject') + }, + // 选择标准 + { + title: this.$t('workCenter.projectComplianceEvaluationProcess.selectStandard') + }, + // 任务分发 + { + title: this.$t('workCenter.projectComplianceEvaluationProcess.taskDistributing') + } + ], + projectDataSource: [], // 选中的项目 + standardDataSource: [], // 选中的标准 + basicColumns: [ + // 序号 + { + title: this.$t('serialNumber'), + key: 'rowIndex', + width: 80, + align: 'center', + customRender: function (t, r, index) { + return parseInt(index) + 1 + } + }, + // 标准编号/条款号 + { + dataIndex: 'workNumber', + title: this.$t('projectLibrary.vehicleItemLibrary.standardNumberClauseNumber'), + width: 150, + align: 'center', + scopedSlots: { customRender: 'text' } + }, + // 标准名称/条款名称 + { + dataIndex: 'projectName', + title: this.$t('workCenter.projectComplianceEvaluationProcess.standardNameClauseName'), + width: 160, + align: 'center', + scopedSlots: { customRender: 'text' } + }, + // 条款内容 + { + dataIndex: 'projectSource_dictText', + title: this.$t('workCenter.projectComplianceEvaluationProcess.terms'), + width: 150, + align: 'center', + scopedSlots: { customRender: 'text' } + } + ], + dataSource: [], + selectedRowKeys: [], + // 展开表格的配置项 + extraForm: { + // 符合 + '1': { + rules: { + // 依据描述 + basisDescription: { + required: true, + message: this.$t('pleaseEnter') + this.$t('projectLibrary.specialProjectLibrary.basisDescription'), + trigger: 'blur' + }, + // 佐证材料 + basisFile: { + required: false, + message: this.$t('pleaseUpload') + this.$t('projectLibrary.specialProjectLibrary.supportingMaterial'), + trigger: 'change' + } + }, + formArr: [ + { + fieldShowType: 1, + dbFieldTxt: this.$t('projectLibrary.specialProjectLibrary.basisDescription'), + dbFieldName: 'basisDescription' + }, + { + fieldShowType: 2, + dbFieldTxt: this.$t('projectLibrary.specialProjectLibrary.supportingMaterial'), + dbFieldName: 'basisFile', + fileType: 'pdf,doc,docx,pptx,ppt,jpg,jpeg,png,xls,xlsx,bmp' + } + ] + }, + // 不符合 + '2': { + rules: { + // 依据描述 + basisDescription: { + required: true, + message: this.$t('pleaseEnter') + this.$t('projectLibrary.specialProjectLibrary.basisDescription'), + trigger: 'blur' + }, + // 预计整改完成日期 + basisFile: { + required: true, + message: this.$t('pleaseSelect') + this.$t('projectLibrary.vehicleItemLibrary.estimatedDateOfCompletionOfRectification'), + trigger: 'change' + } + }, + formArr: [ + { + fieldShowType: 1, + dbFieldTxt: this.$t('projectLibrary.specialProjectLibrary.basisDescription'), + dbFieldName: 'basisDescription' + }, + { + fieldShowType: 3, + dbFieldTxt: this.$t('projectLibrary.vehicleItemLibrary.estimatedDateOfCompletionOfRectification'), + dbFieldName: 'basisFile' + } + ] + }, + // 待验证 + '3': { + rules: { + // 依据描述 + basisDescription: { + required: true, + message: this.$t('pleaseEnter') + this.$t('projectLibrary.specialProjectLibrary.basisDescription'), + trigger: 'blur' + }, + // 预计整改完成日期 + basisFile: { + required: true, + message: this.$t('pleaseSelect') + this.$t('projectLibrary.vehicleItemLibrary.estimatedDateOfCompletionOfRectification'), + trigger: 'change' + } + }, + formArr: [ + { + fieldShowType: 1, + dbFieldTxt: this.$t('projectLibrary.specialProjectLibrary.basisDescription'), + dbFieldName: 'basisDescription' + }, + { + fieldShowType: 3, + dbFieldTxt: this.$t('projectLibrary.vehicleItemLibrary.estimatedDateOfCompletionOfRectification'), + dbFieldName: 'basisFile' + } + ] + }, + // 不涉及 + '4': { + rules: { + // 依据描述 + basisDescription: { + required: true, + message: this.$t('pleaseEnter') + this.$t('projectLibrary.specialProjectLibrary.basisDescription'), + trigger: 'blur' + } + }, + formArr: [ + { + fieldShowType: 1, + dbFieldTxt: this.$t('projectLibrary.specialProjectLibrary.basisDescription'), + dbFieldName: 'basisDescription' + } + ] } } } }, + computed: { + pageTitle () { + return `${this.$t('flowCenter')}${this.$route.meta.title}` + }, + // 流程信息禁用 + processInfoDisabled () { + return !(this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value && !this.$route.query.processInstanceId && this.currentStep !== 3) + }, + // 节点显示的按钮 + btnList () { + let btnList = ProjectComplianceEvaluationProcessNode.propertyOfValue('btn', this.currentNode) + if (this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value) { + switch (this.currentStep) { + case 0: + btnList = ['save', 'next'] + break + case 1: + case 2: + btnList = ['save', 'pre', 'next'] + break + case 3: + btnList = ['save', 'pre', 'submit'] + break + default: + break + } + } + return btnList + }, + // 流程信息展示的字段 + processInfoShowField () { + if (this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value) { + let fieldList = [] + switch (this.currentStep) { + case 0: + fieldList = ['processName', 'processDueDate', 'processDescription'] + break + case 1: + case 2: + fieldList = [] + break + case 3: + fieldList = ['processName', 'processDueDate', 'processDescription', 'projectName', 'standardNumber'] + break + default: + fieldList = [] + break + } + return fieldList + } + return ['processName', 'processDueDate', 'processDescription', 'projectName', 'standardNumber'] + }, + comp () { + // 发起节点的第二步 + if (this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value && this.currentStep === 1) { + return resolve => require(['./components/ProjectTable.vue'], resolve) + } + // 发起节点第三步 + if (this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value && this.currentStep === 2) { + return resolve => require(['./components/StandardList.vue'], resolve) + } + return null + }, + // 展示业务分派信息和流程审批信息的判断 + showDispatchAndApprovalInfo () { + return !(this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value && this.currentStep !== 3) + }, + // 业务分派信息部分表头 + columns () { + console.log(this.currentNode) + // 法规工程师发起 + if (this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value) { + return this.basicColumns.concat([ + // 责任单位 + { + title: this.$t('workCenter.projectComplianceEvaluationProcess.accountabilityUnit'), + dataIndex: 'depart', + width: 150, + scopedSlots: { customRender: 'depart' } + }, + // 责任单位负责人 + { + title: this.$t('workCenter.projectComplianceEvaluationProcess.responsibleUnitHead'), + dataIndex: 'user', + width: 150, + scopedSlots: { customRender: 'user' } + }, + // 操作 + { + title: this.$t('operation'), + fixed: 'right', + width: 100, + scopedSlots: { customRender: 'action' } + } + ]) + } + // 各部门主管级领导下发 + if (this.currentNode === ProjectComplianceEvaluationProcessNode.departLeaderIssued.value) { + return this.basicColumns.concat([ + // 发起人 + { + title: this.$t('workCenter.processCenter.initiator'), + dataIndex: 'depart', + width: 150 + }, + // 模块负责人 + { + title: this.$t('workCenter.standardConsultationProcess.moduleOwner'), + dataIndex: 'moduleOwner', + width: 150, + scopedSlots: { customRender: 'moduleOwner' } + }, + // 操作 + { + title: this.$t('operation'), + fixed: 'right', + width: 120, + scopedSlots: { customRender: 'uninvolved' } + } + ]) + } + // 模块负责人分发 + if (this.currentNode === ProjectComplianceEvaluationProcessNode.moduleOwnerIssued.value) { + return this.basicColumns.concat([ + // 设计工程师 + { + title: this.$t('workCenter.standardConsultationProcess.designEngineer'), + dataIndex: 'designEngineer', + width: 150, + scopedSlots: { customRender: 'designEngineer' } + }, + // 操作 + { + title: this.$t('operation'), + fixed: 'right', + width: 120, + scopedSlots: { customRender: 'uninvolved' } + } + ]) + } + // 设计工程师评估、模块负责人审批、各部门主管级领导审批、法规工程师归档 + const showNode = [ProjectComplianceEvaluationProcessNode.designEngineerEvaluation.value, ProjectComplianceEvaluationProcessNode.moduleOwnerApproval.value, ProjectComplianceEvaluationProcessNode.departLeaderApproval.value, ProjectComplianceEvaluationProcessNode.regulatoryEngineerFiling.value] + if (showNode.includes(this.currentNode)) { + return this.basicColumns.concat([ + // 上一节点处理人 + { + title: this.$t('workCenter.projectComplianceEvaluationProcess.preNodePeople'), + dataIndex: 'preNodePeople', + width: 150, + align: 'center', + scopedSlots: { customRender: 'text' } + }, + // 评估反馈 + { + title: this.$t('workCenter.projectComplianceEvaluationProcess.evaluationFeedback'), + dataIndex: 'evaluationFeedback', + width: 150, + align: 'center', + scopedSlots: { customRender: 'evaluationFeedback' } + } + ]) + } + return [] + }, + // 是否展示步骤条 + showStep () { + return this.currentNode === ProjectComplianceEvaluationProcessNode.initiate.value + }, + // 是否展示可展开表格 + showExpandTable () { + // 设计工程师评估及之后节点都是 + const showNode = [ProjectComplianceEvaluationProcessNode.designEngineerEvaluation.value, ProjectComplianceEvaluationProcessNode.moduleOwnerApproval.value, ProjectComplianceEvaluationProcessNode.departLeaderApproval.value, ProjectComplianceEvaluationProcessNode.regulatoryEngineerFiling.value] + return showNode.includes(this.currentNode) + }, + // 展开表格的禁用 + expandTableDisabled () { + return this.showExpandTable && this.currentNode !== ProjectComplianceEvaluationProcessNode.designEngineerEvaluation.value + }, + // 是否展示抄送人员 + showCcPerson () { + return this.currentNode === ProjectComplianceEvaluationProcessNode.regulatoryEngineerFiling.value + } + }, created () { - this.getPersonInfoStructure(ProcessKey.PROJECT_COMPLIANCE_EVALUATION.value) + if (this.$route.query.processInstanceId || this.$route.query.draftId) { + this.currentNode = this.$route.query.nodeId + this.initProcessInfo() + } else { + this.currentNode = ProjectComplianceEvaluationProcessNode.initiate.value + } + this.getPersonInfoStructure(ProcessKey.PROJECT_COMPLIANCE_EVALUATION.value, () => { + this.initPersonInfoData() + }) + }, + methods: { + /** + * 上一步 + */ + handleLastStep () { + this.currentStep-- + }, + /** + * 下一步 + */ + handleNextStep () { + let flag = true + // 第一步,填写流程信息 + if (this.currentStep === 0) { + this.processInfoForm.validateFields(this.processInfoShowField, (errors, values) => { + if (errors) { + flag = false + } + }) + } + // 第二步选择项目 + if (this.currentStep === 1) { + this.projectDataSource = this.$refs.projectStandardTable.getData() + if (!this.projectDataSource || this.projectDataSource.length === 0) { + this.$message.warning(this.$t('addAtLeastOneRowOfData')) + flag = false + } + } + // 第三步选择标准 + if (this.currentStep === 2) { + this.standardDataSource = this.$refs.projectStandardTable.getData() + if (!this.standardDataSource || this.standardDataSource.length === 0) { + this.$message.warning(this.$t('addAtLeastOneRowOfData')) + flag = false + } else { + // TODO 这块应该需要调接口把标准转成第四步要的条款 + } + } + if (!flag) { + return + } + this.currentStep++ + }, + /** + * 跳转项目详情 + */ + toProjectDetail (project) { + this.$router.push({ + path: '/projectLibrary/VehicleItemLibraryDetail', + query: { + id: project.id, + projectName: project.projectName + } + }) + }, + /** + * 跳转标准详情 + */ + toStandardDetail (standard) { + // todo 需要标准类别 + console.log(standard) + }, + /** + * 批量选择人员 + */ + batchSelector () { + if (!this.selectedRowKeys || this.selectedRowKeys.length === 0) { + this.$message.warning(this.$t('selectOne')) + return + } + this.$refs.userSelectModal.open() + }, + handleBatchSelectorOk (list) { + let fieldName + switch (this.currentNode) { + // 发起节点,批量选择的是责任单位负责人 + case ProjectComplianceEvaluationProcessNode.initiate.value: + fieldName = 'user' + break + // 各部门主管级领导下发,批量选择的是模块负责人 + case ProjectComplianceEvaluationProcessNode.departLeaderIssued.value: + fieldName = 'moduleOwner' + break + // 模块负责人分发,批量选择的是设计工程师 + case ProjectComplianceEvaluationProcessNode.moduleOwnerIssued.value: + fieldName = 'designEngineer' + break + default: + break + } + if (!fieldName) { + return + } + this.dataSource.forEach((item, index) => { + if (this.selectedRowKeys.includes(item.id)) { + item[fieldName] = list.map(tt => tt.id).join(',') + item[fieldName + '_dictText'] = list.map(tt => tt.realname + '(' + tt.username + ')').join(',') + this.$set(this.dataSource, index, item) + } + }) + this.selectedRowKeys = [] + }, + onSelectChange (selectedRowKeys) { + this.selectedRowKeys = selectedRowKeys + }, + /** + * 选择部门 + * @param value + * @param record + * @param index + */ + handleDepartChange (value, record, index) { + record.depart = value + this.$set(this.dataSource, index, record) + }, + /** + * 选择用户 + * @param list + * @param record + * @param index + * @param fieldName + */ + handleUserChange (list, record, index, fieldName) { + record[fieldName] = list.map(tt => tt.id).join(',') + record[fieldName + '_dictText'] = list.map(tt => tt.realname + '(' + tt.username + ')').join(',') + this.$set(this.dataSource, index, record) + }, + handleDelete (id) { + const index = this.dataSource.findIndex(tt => tt.id === id) + if (index !== -1) { + this.$confirm({ + title: this.$t('confirmDeletion'), + content: this.$t('areYouSure'), + onOk: () => { + this.dataSource.splice(index, 1) + } + }) + } + }, + /** + * 不涉及 + * @param record + * @param index + */ + handleUninvolved (record, index) { + this.$refs.uninvolvedModal.open(record, index) + }, + handleUninvolvedOk (record, index) { + this.$set(this.dataSource, index, record) + }, + /** + * 评估反馈修改 + * @param value + * @param record + * @param index + */ + handleEvaluationFeedBackChange (value, record, index) { + record.evaluationFeedback = value + this.$set(this.dataSource, index, record) + }, + handleSave () { + }, + handleSubmit () { + }, + handleTurnTo () { + + }, + handleAgree () { + + }, + handleReject () { + + } + }, + beforeRouteLeave (to, form, next) { + // 跳转项目详情就不销毁 + if (to.path !== '/projectLibrary/VehicleItemLibraryDetail') { + this.$destroy() + } + next() } } @@ -169,4 +918,29 @@ export default { \ No newline at end of file diff --git a/src/views/workCenter/projectComplianceEvaluationProcess/components/ProjectTable.vue b/src/views/workCenter/projectComplianceEvaluationProcess/components/ProjectTable.vue new file mode 100644 index 00000000..1972663d --- /dev/null +++ b/src/views/workCenter/projectComplianceEvaluationProcess/components/ProjectTable.vue @@ -0,0 +1,102 @@ + + + + + \ No newline at end of file diff --git a/src/views/workCenter/projectComplianceEvaluationProcess/components/StandardList.vue b/src/views/workCenter/projectComplianceEvaluationProcess/components/StandardList.vue new file mode 100644 index 00000000..0f611b1e --- /dev/null +++ b/src/views/workCenter/projectComplianceEvaluationProcess/components/StandardList.vue @@ -0,0 +1,150 @@ + + + + + \ No newline at end of file diff --git a/src/views/workCenter/projectComplianceEvaluationProcess/modules/SelectProjectModal.vue b/src/views/workCenter/projectComplianceEvaluationProcess/modules/SelectProjectModal.vue new file mode 100644 index 00000000..d022915e --- /dev/null +++ b/src/views/workCenter/projectComplianceEvaluationProcess/modules/SelectProjectModal.vue @@ -0,0 +1,134 @@ + + + + + \ No newline at end of file diff --git a/src/views/workCenter/projectComplianceEvaluationProcess/modules/SelectStandardListDrawer.vue b/src/views/workCenter/projectComplianceEvaluationProcess/modules/SelectStandardListDrawer.vue new file mode 100644 index 00000000..11545972 --- /dev/null +++ b/src/views/workCenter/projectComplianceEvaluationProcess/modules/SelectStandardListDrawer.vue @@ -0,0 +1,225 @@ + + + + + \ No newline at end of file diff --git a/src/views/workCenter/projectComplianceEvaluationProcess/modules/UninvolvedModal.vue b/src/views/workCenter/projectComplianceEvaluationProcess/modules/UninvolvedModal.vue new file mode 100644 index 00000000..ee5e4dde --- /dev/null +++ b/src/views/workCenter/projectComplianceEvaluationProcess/modules/UninvolvedModal.vue @@ -0,0 +1,100 @@ + + + + + \ No newline at end of file