[update 标准解读流程] 完善条款解读表

This commit is contained in:
danshihao
2024-07-12 18:12:40 +08:00
parent ea770681ea
commit 78d4c73ac2
7 changed files with 218 additions and 23 deletions
+1 -1
View File
@@ -105,7 +105,7 @@ module.exports = {
verificationReportTemplate: 'Verification report template/checklist',
dvpTemplate: 'DVP template',
dfema: 'DFEMA',
specialListTemplate: 'Special List Template',
specialListTemplate: 'Key Technology Decomposition Table',
otherFilesOrTemplates: 'Other files or templates',
investigationStage: 'Investigation stage',
pThree: 'P3 Name of deliverables proving compliance',
+1 -1
View File
@@ -105,7 +105,7 @@ module.exports = {
verificationReportTemplate: '校核报告模板/checklist',
dvpTemplate: 'DVP模板',
dfema: 'DFEMA',
specialListTemplate: '特殊性清单模板',
specialListTemplate: '关键技术分解表',
otherFilesOrTemplates: '其他文件或模板',
investigationStage: '排查阶段',
pThree: 'P3证明符合性的交付物名称',
@@ -39,7 +39,7 @@
:colon="formItemColon">
<a-date-picker :placeholder="$t('pleaseSelect') + $t('expirationDate')"
style="width: 100%"
:disabled="disabled || !this.isInitiate"
:disabled="disabled || !isInitiate"
value-format="YYYY-MM-DD hh:mm:ss"
v-decorator="['dueTime']" />
</a-form-item>
@@ -54,10 +54,20 @@
<a-textarea :placeholder="$t('pleaseEnter') + $t('processExplain')"
:maxLength="500"
:rows="4"
:disabled="disabled || !this.isInitiate"
:disabled="disabled || !isInitiate"
v-decorator="['prcMes']" />
</a-form-item>
</a-col>
<a-col v-if="!isInitiate && info.data && info.data.processStandardInterpret" :span="24">
<!-- 标准编号/标准名称 -->
<a-form-item
:labelCol="$i18n.locale === EN ? longLabelColEn : longLabelCol"
:wrapperCol="$i18n.locale === EN ? longWrapperColEn : longWrapperCol"
:label="$t('standardNumber') + '/' + $t('standardName')"
:colon="formItemColon">
<a @click.capture="toStandardDetail">{{info.data.processStandardInterpret.standardNumber}} {{info.data.processStandardInterpret.standardName}}</a>
</a-form-item>
</a-col>
</a-row>
</a-form>
@@ -100,6 +110,8 @@
</div>
<!-- 操作按钮 -->
<div class="detail-page-bottom-operate-box">
<!-- 加签 -->
<a-button v-if="btn.includes('countersign')" type="primary" ghost :loading="loading" @click="handleCountersign" icon="arrow-up">{{ $t('countersign') }}</a-button>
<!-- 转办 -->
<a-button v-if="btn.includes('transfer')" type="primary" ghost :loading="loading" @click="handleTurnTo" icon="arrow-up">{{ $t('turnTo') }}</a-button>
<!-- 保存 -->
@@ -252,6 +264,16 @@ export default {
interpretGetProjectId().then(id => { this.projectId = (id + '') })
},
methods: {
// 跳转详情
toStandardDetail () {
const { standardId } = this.info.data.processStandardInterpret
this.$openPageNewSheet({
path: '/standardRegulationLibrary/foreignStandardDetailPage',
query: {
id: standardId
}
})
},
/**
* 获取页面详情
*/
@@ -200,70 +200,70 @@ export default {
title: this.$t('workCenter.standardInterpretationProcess.involvingSystemsComponents'),
align: 'center',
width: 180,
dataIndex: 'keywords',
dataIndex: 'keywords_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 关键控制器
title: this.$t('workCenter.standardInterpretationProcess.keyController'),
align: 'center',
width: 180,
dataIndex: 'keyController',
dataIndex: 'keyController_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 责任部门
title: this.$t('workCenter.standardInterpretationProcess.responsibleDepartment'),
align: 'center',
width: 180,
dataIndex: 'responsibleDepartment',
dataIndex: 'responsibleDepartment_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 责任部门专业模块
title: this.$t('workCenter.standardInterpretationProcess.responsibleDepartmentModule'),
align: 'center',
width: 180,
dataIndex: 'responsibleModule',
dataIndex: 'responsibleModule_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 关联部门
title: this.$t('workCenter.standardInterpretationProcess.relatedDepartments'),
align: 'center',
width: 180,
dataIndex: 'relatedDepartment',
dataIndex: 'relatedDepartment_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 关联部门专业模块
title: this.$t('workCenter.standardInterpretationProcess.relatedDepartmentsModule'),
align: 'center',
width: 180,
dataIndex: 'relatedModule',
dataIndex: 'relatedModule_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 适用车型
title: this.$t('workCenter.standardInterpretationProcess.applications'),
align: 'center',
width: 180,
dataIndex: 'applications',
dataIndex: 'applications_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 动力类型
title: this.$t('workCenter.standardInterpretationProcess.powerType'),
align: 'center',
width: 180,
dataIndex: 'powerType',
dataIndex: 'powerType_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 专业领域
title: this.$t('workCenter.standardInterpretationProcess.professionalField'),
align: 'center',
width: 180,
dataIndex: 'domainArea',
dataIndex: 'domainArea_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 配置需求
title: this.$t('workCenter.standardInterpretationProcess.configurationRequirements'),
align: 'center',
width: 180,
dataIndex: 'configurationRequirements',
dataIndex: 'configurationRequirements_dictText',
scopedSlots: { customRender: 'text' }
},
{ // 新认证车实施日期
@@ -336,7 +336,7 @@ export default {
dataIndex: 'dfema',
scopedSlots: { customRender: 'text' }
},
{ // 特殊性清单模板 = 关键技术分解表
{ // 关键技术分解表
title: this.$t('workCenter.standardInterpretationProcess.specialListTemplate'),
align: 'center',
width: 180,
@@ -617,7 +617,7 @@ export default {
}
},
// 导出
handleExport (fileName, fileSuffix = '.xls') {
handleExport (fileName, fileSuffix = '.xlsx') {
if (!fileName || typeof fileName !== 'string') {
fileName = '导出文件'
}
@@ -43,6 +43,123 @@
:placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.regulatoryAnnotations')"
v-decorator="['regulatoryNotes']"/>
</a-form-item>
<!--涉及系统/部件-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.involvingSystemsComponents')" :colon="false">
<tree-selection :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.involvingSystemsComponents')"
filedName="keywords"
type="checkbox"
options-href="/laws/standard/partName/"
:nameStr="model.keywords_dictText"
:disabled="disabled"
v-decorator="['keywords']" />
</a-form-item>
<!--关键控制器-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.keyController')" :colon="false">
<j-multi-select-tag dict-code="key_controller"
:disabled="disabled"
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.keyController')"
v-decorator="['keyController']"/>
</a-form-item>
<!--责任部门-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.responsibleDepartment')" :colon="false">
<j-select-depart :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.responsibleDepartment')"
:backDepart="true"
:disabled="disabled"
multi
treeOpera
v-decorator="['responsibleDepartment']" />
</a-form-item>
<!--责任部门专业模块-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.responsibleDepartmentModule')" :colon="false">
<j-multi-select-tag dict-code="responsible_module"
:disabled="disabled"
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.responsibleDepartmentModule')"
v-decorator="['responsibleModule']"/>
</a-form-item>
<!--关联部门-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.relatedDepartments')" :colon="false">
<j-select-depart :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.relatedDepartments')"
:backDepart="true"
:disabled="disabled"
multi
treeOpera
v-decorator="['relatedDepartment']" />
</a-form-item>
<!--关联部门专业模块-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.relatedDepartmentsModule')" :colon="false">
<j-multi-select-tag dict-code="related_module"
:disabled="disabled"
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.relatedDepartmentsModule')"
v-decorator="['relatedModule']"/>
</a-form-item>
<!--适用车型-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.applications')" :colon="false">
<j-multi-select-tag dict-code="applicable_vehicle_type"
:disabled="disabled"
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.applications')"
v-decorator="['applicable_vehicle_type']"/>
</a-form-item>
<!--动力类型-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.powerType')" :colon="false">
<j-multi-select-tag dict-code="dynamic_type"
:disabled="disabled"
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.powerType')"
v-decorator="['powerType']"/>
</a-form-item>
<!--专业领域-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.professionalField')" :colon="false">
<s-tree-select
v-decorator="['domainArea']"
:disabled="disabled"
:tree-data="professionalFieldTreeList"
tree-checkable
treeCheckStrictly
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.professionalField')"/>
</a-form-item>
<!--配置需求-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.configurationRequirements')" :colon="false">
<j-multi-select-tag dict-code="configuration_requirements"
:disabled="disabled"
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.configurationRequirements')"
v-decorator="['configurationRequirements']"/>
</a-form-item>
<!--新认证车实施日期-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.newCertificationImplementationDate')" :colon="false">
<j-multiple-date-picker :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.newCertificationImplementationDate')"
fieldName="newCerImplementDate"
:disabled="disabled"
v-decorator="['newCerImplementDate']" />
</a-form-item>
<!--新生产车实施日期-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.newProduceImplementationDate')" :colon="false">
<j-multiple-date-picker :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.newProduceImplementationDate')"
fieldName="newProductionImplementation"
:disabled="disabled"
v-decorator="['newProductionImplementation']" />
</a-form-item>
<!--注册日期-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.registrationDate')" :colon="false">
<j-multiple-date-picker :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.registrationDate')"
fieldName="registrationDate"
:disabled="disabled"
v-decorator="['registrationDate']" />
</a-form-item>
<!--企业标准-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.enterpriseStandards')" :colon="false">
<standard-selection :source="StandardSource.ENTERPRISE.value"
:placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.enterpriseStandards')"
:disabled="disabled"
:disabledSourceSearch="true"
type="radio"
v-decorator="['enterpriseStandard']" />
</a-form-item>
<!--技术规范/设计指南-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.technicalSpecificationsDesignGuidelines')" :colon="false">
<a-input :max-length="50"
:disabled="disabled"
:placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.technicalSpecificationsDesignGuidelines')"
v-decorator="['technicalSpecificationDesignGuide']"/>
</a-form-item>
<!--图纸模板-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.drawingTemplate')" :colon="false">
<a-input :max-length="50"
@@ -78,7 +195,7 @@
:placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.dfema')"
v-decorator="['dfema']"/>
</a-form-item>
<!--特殊性清单模板-->
<!--关键技术分解表-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.specialListTemplate')" :colon="false">
<a-input :max-length="50"
:disabled="disabled"
@@ -94,7 +211,7 @@
</a-form-item>
<!--排查阶段-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.investigationStage')" :colon="false">
<j-dict-select-tag dict-code="investigation_stage"
<j-multi-select-tag dict-code="investigation_stage"
:disabled="disabled"
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.investigationStage')"
v-decorator="['investigationStage']"/>
@@ -133,10 +250,18 @@
</template>
<script>
import JMultipleDatePicker from '@comp/JMultipleDatePicker'
import StandardSelection from '@comp/selection/StandardSelection'
import TreeSelection from '@comp/selection/TreeSelection'
import { StandardSource } from '@/enums/commonEnums'
import STreeSelect from '@comp/STreeSelect'
import { getFormDictTreeList } from '@api/api'
export default {
name: 'InterpretationClauseTableModal',
components: { STreeSelect, TreeSelection, StandardSelection, JMultipleDatePicker },
data () {
return {
StandardSource,
title: this.$t('close'),
width: 900,
disabled: false,
@@ -151,7 +276,9 @@ export default {
wrapperCol: {
xs: { span: 24 },
sm: { span: 20 }
}
},
// 专业领域下拉
professionalFieldTreeList: []
}
},
methods: {
@@ -159,6 +286,7 @@ export default {
this.edit()
},
edit (record) {
this.initProfessionalFieldTreeList()
this.form.resetFields()
this.model = Object.assign({}, record)
this.visible = true
@@ -173,6 +301,9 @@ export default {
this.form.validateFields((err, values) => {
if (!err) {
const formData = Object.assign(this.model, values)
if (Array.isArray(formData.domainArea)) {
formData.domainArea = formData.domainArea.map(item => item.value).join(',')
}
this.$emit('ok', formData)
this.close()
}
@@ -180,6 +311,14 @@ export default {
},
handleCancel () {
this.close()
},
// 专业领域下拉
initProfessionalFieldTreeList () {
getFormDictTreeList({ dictId: '1801078082552725506' }).then(res => {
if (res.success) {
this.professionalFieldTreeList = res.result || []
}
})
}
}
}
@@ -21,6 +21,13 @@
:columns="columns"
:dataSource="dataSource"
:pagination="false">
<!-- 标准编号标准名称 -->
<template v-slot:toDetail="{text, record}">
<a-tooltip overlay-class-name="tooltip-style">
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
<a class="link-a" @click="toDetail(record)">{{ text }}</a>
</a-tooltip>
</template>
<!-- 分解单来源-->
<template v-slot:decompositionSource="{text, record}">
<a-select v-model="record.decompositionSource"
@@ -83,14 +90,14 @@ export default {
align: 'center',
width: 180,
dataIndex: 'standardNumber',
scopedSlots: { customRender: 'text' }
scopedSlots: { customRender: 'toDetail' }
},
{ // 标准名称
title: this.$t('standardName'),
align: 'center',
width: 180,
dataIndex: 'standardName',
scopedSlots: { customRender: 'text' }
scopedSlots: { customRender: 'toDetail' }
},
{ // 标准状态
title: this.$t('standardState'),
@@ -135,6 +142,16 @@ export default {
}
},
methods: {
// 跳转详情
toDetail (record) {
const path = '/standardRegulationLibrary/foreignStandardDetailPage'
this.$openPageNewSheet({
path: path,
query: {
id: record.standardId
}
})
},
/**
* 获取组件内的数据
* @param isValidate - 是否需要校验
@@ -11,6 +11,13 @@
:columns="columns"
:dataSource="dataSource"
:pagination="false">
<!-- 标准编号标准名称 -->
<template v-slot:toDetail="{text, record}">
<a-tooltip overlay-class-name="tooltip-style">
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
<a class="link-a" @click="toDetail(record)">{{ text }}</a>
</a-tooltip>
</template>
</j-table>
</div>
<a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -119,14 +126,14 @@ export default {
align: 'center',
width: 180,
dataIndex: 'standardNumber',
scopedSlots: { customRender: 'text' }
scopedSlots: { customRender: 'toDetail' }
},
{ // 标准名称
title: this.$t('standardName'),
align: 'center',
width: 180,
dataIndex: 'standardName',
scopedSlots: { customRender: 'text' }
scopedSlots: { customRender: 'toDetail' }
},
{ // 标准状态
title: this.$t('standardState'),
@@ -204,6 +211,16 @@ export default {
}
},
methods: {
// 跳转详情
toDetail (record) {
const path = '/standardRegulationLibrary/foreignStandardDetailPage'
this.$openPageNewSheet({
path: path,
query: {
id: record.standardId
}
})
},
/**
* 校验表单 必定返回成功的promise,携带表单的参数
* @param form