[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', verificationReportTemplate: 'Verification report template/checklist',
dvpTemplate: 'DVP template', dvpTemplate: 'DVP template',
dfema: 'DFEMA', dfema: 'DFEMA',
specialListTemplate: 'Special List Template', specialListTemplate: 'Key Technology Decomposition Table',
otherFilesOrTemplates: 'Other files or templates', otherFilesOrTemplates: 'Other files or templates',
investigationStage: 'Investigation stage', investigationStage: 'Investigation stage',
pThree: 'P3 Name of deliverables proving compliance', pThree: 'P3 Name of deliverables proving compliance',
+1 -1
View File
@@ -105,7 +105,7 @@ module.exports = {
verificationReportTemplate: '校核报告模板/checklist', verificationReportTemplate: '校核报告模板/checklist',
dvpTemplate: 'DVP模板', dvpTemplate: 'DVP模板',
dfema: 'DFEMA', dfema: 'DFEMA',
specialListTemplate: '特殊性清单模板', specialListTemplate: '关键技术分解表',
otherFilesOrTemplates: '其他文件或模板', otherFilesOrTemplates: '其他文件或模板',
investigationStage: '排查阶段', investigationStage: '排查阶段',
pThree: 'P3证明符合性的交付物名称', pThree: 'P3证明符合性的交付物名称',
@@ -39,7 +39,7 @@
:colon="formItemColon"> :colon="formItemColon">
<a-date-picker :placeholder="$t('pleaseSelect') + $t('expirationDate')" <a-date-picker :placeholder="$t('pleaseSelect') + $t('expirationDate')"
style="width: 100%" style="width: 100%"
:disabled="disabled || !this.isInitiate" :disabled="disabled || !isInitiate"
value-format="YYYY-MM-DD hh:mm:ss" value-format="YYYY-MM-DD hh:mm:ss"
v-decorator="['dueTime']" /> v-decorator="['dueTime']" />
</a-form-item> </a-form-item>
@@ -54,10 +54,20 @@
<a-textarea :placeholder="$t('pleaseEnter') + $t('processExplain')" <a-textarea :placeholder="$t('pleaseEnter') + $t('processExplain')"
:maxLength="500" :maxLength="500"
:rows="4" :rows="4"
:disabled="disabled || !this.isInitiate" :disabled="disabled || !isInitiate"
v-decorator="['prcMes']" /> v-decorator="['prcMes']" />
</a-form-item> </a-form-item>
</a-col> </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-row>
</a-form> </a-form>
@@ -100,6 +110,8 @@
</div> </div>
<!-- 操作按钮 --> <!-- 操作按钮 -->
<div class="detail-page-bottom-operate-box"> <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> <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 + '') }) interpretGetProjectId().then(id => { this.projectId = (id + '') })
}, },
methods: { 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'), title: this.$t('workCenter.standardInterpretationProcess.involvingSystemsComponents'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'keywords', dataIndex: 'keywords_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 关键控制器 { // 关键控制器
title: this.$t('workCenter.standardInterpretationProcess.keyController'), title: this.$t('workCenter.standardInterpretationProcess.keyController'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'keyController', dataIndex: 'keyController_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 责任部门 { // 责任部门
title: this.$t('workCenter.standardInterpretationProcess.responsibleDepartment'), title: this.$t('workCenter.standardInterpretationProcess.responsibleDepartment'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'responsibleDepartment', dataIndex: 'responsibleDepartment_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 责任部门专业模块 { // 责任部门专业模块
title: this.$t('workCenter.standardInterpretationProcess.responsibleDepartmentModule'), title: this.$t('workCenter.standardInterpretationProcess.responsibleDepartmentModule'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'responsibleModule', dataIndex: 'responsibleModule_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 关联部门 { // 关联部门
title: this.$t('workCenter.standardInterpretationProcess.relatedDepartments'), title: this.$t('workCenter.standardInterpretationProcess.relatedDepartments'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'relatedDepartment', dataIndex: 'relatedDepartment_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 关联部门专业模块 { // 关联部门专业模块
title: this.$t('workCenter.standardInterpretationProcess.relatedDepartmentsModule'), title: this.$t('workCenter.standardInterpretationProcess.relatedDepartmentsModule'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'relatedModule', dataIndex: 'relatedModule_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 适用车型 { // 适用车型
title: this.$t('workCenter.standardInterpretationProcess.applications'), title: this.$t('workCenter.standardInterpretationProcess.applications'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'applications', dataIndex: 'applications_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 动力类型 { // 动力类型
title: this.$t('workCenter.standardInterpretationProcess.powerType'), title: this.$t('workCenter.standardInterpretationProcess.powerType'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'powerType', dataIndex: 'powerType_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 专业领域 { // 专业领域
title: this.$t('workCenter.standardInterpretationProcess.professionalField'), title: this.$t('workCenter.standardInterpretationProcess.professionalField'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'domainArea', dataIndex: 'domainArea_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 配置需求 { // 配置需求
title: this.$t('workCenter.standardInterpretationProcess.configurationRequirements'), title: this.$t('workCenter.standardInterpretationProcess.configurationRequirements'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'configurationRequirements', dataIndex: 'configurationRequirements_dictText',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 新认证车实施日期 { // 新认证车实施日期
@@ -336,7 +336,7 @@ export default {
dataIndex: 'dfema', dataIndex: 'dfema',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'text' }
}, },
{ // 特殊性清单模板 = 关键技术分解表 { // 关键技术分解表
title: this.$t('workCenter.standardInterpretationProcess.specialListTemplate'), title: this.$t('workCenter.standardInterpretationProcess.specialListTemplate'),
align: 'center', align: 'center',
width: 180, width: 180,
@@ -617,7 +617,7 @@ export default {
} }
}, },
// 导出 // 导出
handleExport (fileName, fileSuffix = '.xls') { handleExport (fileName, fileSuffix = '.xlsx') {
if (!fileName || typeof fileName !== 'string') { if (!fileName || typeof fileName !== 'string') {
fileName = '导出文件' fileName = '导出文件'
} }
@@ -43,6 +43,123 @@
:placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.regulatoryAnnotations')" :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.regulatoryAnnotations')"
v-decorator="['regulatoryNotes']"/> v-decorator="['regulatoryNotes']"/>
</a-form-item> </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-form-item :label="$t('workCenter.standardInterpretationProcess.drawingTemplate')" :colon="false">
<a-input :max-length="50" <a-input :max-length="50"
@@ -78,7 +195,7 @@
:placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.dfema')" :placeholder="$t('pleaseEnter')+$t('workCenter.standardInterpretationProcess.dfema')"
v-decorator="['dfema']"/> v-decorator="['dfema']"/>
</a-form-item> </a-form-item>
<!--特殊性清单模板--> <!--关键技术分解表-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.specialListTemplate')" :colon="false"> <a-form-item :label="$t('workCenter.standardInterpretationProcess.specialListTemplate')" :colon="false">
<a-input :max-length="50" <a-input :max-length="50"
:disabled="disabled" :disabled="disabled"
@@ -94,7 +211,7 @@
</a-form-item> </a-form-item>
<!--排查阶段--> <!--排查阶段-->
<a-form-item :label="$t('workCenter.standardInterpretationProcess.investigationStage')" :colon="false"> <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" :disabled="disabled"
:placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.investigationStage')" :placeholder="$t('pleaseSelect')+$t('workCenter.standardInterpretationProcess.investigationStage')"
v-decorator="['investigationStage']"/> v-decorator="['investigationStage']"/>
@@ -133,10 +250,18 @@
</template> </template>
<script> <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 { export default {
name: 'InterpretationClauseTableModal', name: 'InterpretationClauseTableModal',
components: { STreeSelect, TreeSelection, StandardSelection, JMultipleDatePicker },
data () { data () {
return { return {
StandardSource,
title: this.$t('close'), title: this.$t('close'),
width: 900, width: 900,
disabled: false, disabled: false,
@@ -151,7 +276,9 @@ export default {
wrapperCol: { wrapperCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 20 } sm: { span: 20 }
} },
// 专业领域下拉
professionalFieldTreeList: []
} }
}, },
methods: { methods: {
@@ -159,6 +286,7 @@ export default {
this.edit() this.edit()
}, },
edit (record) { edit (record) {
this.initProfessionalFieldTreeList()
this.form.resetFields() this.form.resetFields()
this.model = Object.assign({}, record) this.model = Object.assign({}, record)
this.visible = true this.visible = true
@@ -173,6 +301,9 @@ export default {
this.form.validateFields((err, values) => { this.form.validateFields((err, values) => {
if (!err) { if (!err) {
const formData = Object.assign(this.model, values) 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.$emit('ok', formData)
this.close() this.close()
} }
@@ -180,6 +311,14 @@ export default {
}, },
handleCancel () { handleCancel () {
this.close() this.close()
},
// 专业领域下拉
initProfessionalFieldTreeList () {
getFormDictTreeList({ dictId: '1801078082552725506' }).then(res => {
if (res.success) {
this.professionalFieldTreeList = res.result || []
}
})
} }
} }
} }
@@ -21,6 +21,13 @@
:columns="columns" :columns="columns"
:dataSource="dataSource" :dataSource="dataSource"
:pagination="false"> :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}"> <template v-slot:decompositionSource="{text, record}">
<a-select v-model="record.decompositionSource" <a-select v-model="record.decompositionSource"
@@ -83,14 +90,14 @@ export default {
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'standardNumber', dataIndex: 'standardNumber',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'toDetail' }
}, },
{ // 标准名称 { // 标准名称
title: this.$t('standardName'), title: this.$t('standardName'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'standardName', dataIndex: 'standardName',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'toDetail' }
}, },
{ // 标准状态 { // 标准状态
title: this.$t('standardState'), title: this.$t('standardState'),
@@ -135,6 +142,16 @@ export default {
} }
}, },
methods: { methods: {
// 跳转详情
toDetail (record) {
const path = '/standardRegulationLibrary/foreignStandardDetailPage'
this.$openPageNewSheet({
path: path,
query: {
id: record.standardId
}
})
},
/** /**
* 获取组件内的数据 * 获取组件内的数据
* @param isValidate - 是否需要校验 * @param isValidate - 是否需要校验
@@ -11,6 +11,13 @@
:columns="columns" :columns="columns"
:dataSource="dataSource" :dataSource="dataSource"
:pagination="false"> :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> </j-table>
</div> </div>
<a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-form :form="form" :labelCol="labelCol" :wrapperCol="wrapperCol">
@@ -119,14 +126,14 @@ export default {
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'standardNumber', dataIndex: 'standardNumber',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'toDetail' }
}, },
{ // 标准名称 { // 标准名称
title: this.$t('standardName'), title: this.$t('standardName'),
align: 'center', align: 'center',
width: 180, width: 180,
dataIndex: 'standardName', dataIndex: 'standardName',
scopedSlots: { customRender: 'text' } scopedSlots: { customRender: 'toDetail' }
}, },
{ // 标准状态 { // 标准状态
title: this.$t('standardState'), title: this.$t('standardState'),
@@ -204,6 +211,16 @@ export default {
} }
}, },
methods: { methods: {
// 跳转详情
toDetail (record) {
const path = '/standardRegulationLibrary/foreignStandardDetailPage'
this.$openPageNewSheet({
path: path,
query: {
id: record.standardId
}
})
},
/** /**
* 校验表单 必定返回成功的promise,携带表单的参数 * 校验表单 必定返回成功的promise,携带表单的参数
* @param form * @param form