添加认证清单

This commit is contained in:
范强强
2023-03-03 17:58:03 +08:00
parent 2e5e8a710a
commit 45c3372a31
4 changed files with 197 additions and 236 deletions
+2
View File
@@ -1392,4 +1392,6 @@ module.exports = {
reportNo:'Report No',
productModel:'Product Model',
nameOfManufacturer:'Name Of Manufacturer',
regulationNo:'Regulation No',
itemInformation:'Item Information',
}
+2
View File
@@ -1493,4 +1493,6 @@ module.exports = {
reportNo:'报告编号',
productModel:'产品型号',
nameOfManufacturer:'生产企业名称',
regulationNo:'法规编号',
itemInformation:'条目信息',
}
@@ -16,12 +16,11 @@
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('modelName')">{{$t('modelName')}}</span>
<span class="title-text-text" :title="$t('regulationNo')">{{$t('regulationNo')}}</span>
</div>
<a-form-model-item class="itemModel" prop="projectNameId">
<a-select :placeholder="$t('PleaseSelect')+$t('modelName')"
@change="projectNameChange"
v-model="formInline.projectNameId">
<a-form-model-item class="itemModel" prop="serialNumber">
<a-select :placeholder="$t('PleaseSelect')+$t('regulationNo')"
v-model="formInline.serialNumber">
<a-select-option v-for="(item, key) in projectNameList"
:key="key"
:value="item.id">
@@ -39,132 +38,144 @@
<span class="Required">*</span>
<span class="title-text-text" :title="'WVTA ID'">WVTA ID</span>
</div>
<a-form-model-item class="itemModel" prop="projectVersion">
<a-form-model-item class="itemModel" prop="wvtaId">
<a-input class="box-input"
v-model="formInline.projectVersion"
v-model="formInline.wvtaId"
:placeholder="$t('PleaseEnter')+'WVTA ID'"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<div v-for="(item,index) in formInline.dataList" :key="index">
<div class="header-text">
{{$t('itemInformation')}}
<a-icon class="icon-text" @click="addClick(index)" type="plus-circle"/>
<a-icon class="icon-text" @click="deleteClick(index)" type="minus-circle"/>
</div>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('category')">{{$t('category')}}</span>
</div>
<a-form-model-item class="itemModel" prop="category">
<a-input class="box-input"
v-model="formInline.category"
:placeholder="$t('PleaseEnter')+$t('category')"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('inspectionItems')">{{$t('inspectionItems')}}</span>
</div>
<a-form-model-item class="itemModel" prop="inspectionItem">
<a-input class="box-input"
v-model="formInline.inspectionItem"
:placeholder="$t('PleaseEnter')+$t('inspectionItems')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('category')">{{$t('category')}}</span>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('typeOfDeliverables')">{{$t('typeOfDeliverables')}}</span>
</div>
<a-form-model-item class="itemModel" prop="deliverableType">
<a-tree-select
tree-node-filter-prop="title"
v-model="formInline.deliverableType"
:maxTagCount="1"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
class="box-input"
style="width: 100%"
:tree-data="DeliverableTreeList"
tree-checkable
:placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"
/>
</a-form-model-item>
</div>
<a-form-model-item class="itemModel" prop="category">
<a-input class="box-input"
v-model="formInline.category"
:placeholder="$t('PleaseEnter')+$t('category')"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('inspectionItems')">{{$t('inspectionItems')}}</span>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('deliverableTemplate')">{{$t('deliverableTemplate')}}</span>
</div>
<a-form-model-item class="itemModel" prop="deliverableTemplate">
<a-button type="primary" class="button-text"
@click="clickButtonToUpload('deliverableTemplate')">
{{ (formInline.deliverableTemplate === 'null' || formInline.deliverableTemplate === ''
||
formInline.deliverableTemplate == null) ? $t('clickUpload') : $t('viewUploadedFiles')
}}
</a-button>
</a-form-model-item>
</div>
<a-form-model-item class="itemModel" prop="inspectionItems">
<a-input class="box-input"
v-model="formInline.inspectionItems"
:placeholder="$t('PleaseEnter')+$t('inspectionItems')"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('typeOfDeliverables')">{{$t('typeOfDeliverables')}}</span>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('areaOfResponsibility')">{{$t('areaOfResponsibility')}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="dutyTerritory">
<j-multi-select-tag class="box-input" v-model="formInline.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</a-form-model-item>
</div>
<a-form-model-item class="itemModel" prop="designDeliverableType">
<a-tree-select
tree-node-filter-prop="title"
v-model="formInline.designDeliverableType"
:maxTagCount="1"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
class="box-input"
style="width: 100%"
:tree-data="DeliverableTreeList"
tree-checkable
:placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"
/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('deliverableTemplate')">{{$t('deliverableTemplate')}}</span>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
</div>
<a-form-model-item class="itemModel-multi" :prop="'sdtName'">
<PersonnelSelection
:query="{db_field_name:'sdt',db_field_txt:$t('engineeringInterfacePerson')}"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
:disabled="disabled"
v-model="formInline.sdtName"/>
</a-form-model-item>
</div>
<a-form-model-item class="itemModel" prop="designDeliverableTemplate">
<a-button type="primary" class="button-text"
@click="clickButtonToUpload('designDeliverableTemplate')">
{{ (formInline.designDeliverableTemplate === 'null' || formInline.designDeliverableTemplate === ''
||
formInline.designDeliverableTemplate == null) ? $t('clickUpload') : $t('viewUploadedFiles')
}}
</a-button>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('areaOfResponsibility')">{{$t('areaOfResponsibility')}}</span>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('personLiable')">{{$t('personLiable')}}</span>
</div>
<a-form-model-item class="itemModel-multi" :prop="'dutyPersonName'">
<PersonnelSelection
:query="{db_field_name:'dutyPerson',db_field_txt:$t('personLiable')}"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
:disabled="disabled"
v-model="formInline.dutyPersonName"/>
</a-form-model-item>
</div>
<a-form-model-item class="itemModel-multi" prop="dutyTerritory">
<j-multi-select-tag class="box-input" v-model="formInline.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
</div>
<a-form-model-item class="itemModel-multi" :prop="'engineeringInterfacePerson'">
<PersonnelSelection
:query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('engineeringInterfacePerson')}"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
:disabled="disabled"
v-model="formInline.engineeringInterfacePersonName"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('personLiable')">{{$t('personLiable')}}</span>
</div>
<a-form-model-item class="itemModel-multi" :prop="'personLiableName'">
<PersonnelSelection
:query="{db_field_name:'personLiable',db_field_txt:$t('personLiable')}"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
:disabled="disabled"
v-model="formInline.personLiableName"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-col>
</a-row>
</div>
<!-- <a-row :gutter="24">-->
<!-- <a-col :span="24">-->
<!-- <div class="box-title-text">-->
@@ -210,111 +221,75 @@
visible: false,
yearNameDataList: [],
rules: {
ipdInfo: [
serialNumber: [
{
pattern: /(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%$#_]*)?/,
message: this.$t('pleaseEnterTheCorrectWebAddress')
required: true,
message: this.$t('entryName') + this.$t('regulationNo'),
trigger: 'change'
}
],
wvtaId: [
{
required: true,
message: 'WVTA ID' + this.$t('regulationNo'),
trigger: 'change'
},
{
max: 300,
message: this.$t('IPDInformation') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
message: 'WVTA ID' + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
vehicleDevelopmentPlan: [
category: [
{
pattern: /(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%$#_]*)?/,
message: this.$t('pleaseEnterTheCorrectWebAddress')
required: true,
message: this.$t('category') + this.$t('regulationNo'),
trigger: 'change'
},
{
max: 300,
message: this.$t('dehicleDevelopmentPlan') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
message: this.$t('category') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
explanation: [
inspectionItem: [
{
max: 500,
message: this.$t('explain') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
],
attestationPlan: [
{
pattern: /(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%$#_]*)?/,
message: this.$t('pleaseEnterTheCorrectWebAddress')
required: true,
message: this.$t('inspectionItems') + this.$t('regulationNo'),
trigger: 'change'
},
{
max: 300,
message: this.$t('certificationProgram') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
message: this.$t('inspectionItems') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
vehiclePlatform: [
{
max: 100,
message: this.$t('ModelPlatform') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
digitalPlatform: [
{
max: 100,
message: this.$t('DigitalPlatform') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'blur'
}
],
softwareVersion: [
{
max: 300,
message: this.$t('softwareVersion') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
],
projectNameId: [
deliverableType: [
{
required: true,
message: this.$t('entryName') + this.$t('cannotEmpty'),
message: this.$t('typeOfDeliverables') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
yearNameId: [
dutyTerritory: [
{
required: true,
message: this.$t('modelYear') + this.$t('cannotEmpty'),
message: this.$t('areaOfResponsibility') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
targetMarket: [
sdtName: [
{
required: true,
message: this.$t('targetMarket') + this.$t('cannotEmpty'),
message: this.$t('engineeringInterfacePerson') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
projectStatus: [
dutyPersonName: [
{
required: true,
message: this.$t('projectStatus') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
studioEngineerName: [
{
required: true,
message: this.$t('StudioEngineer') + this.$t('cannotEmpty'),
trigger: 'change'
},
{
max: 100,
message: this.$t('StudioEngineer') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
trigger: 'change'
}
],
certificationEngineerName: [
{
max: 100,
message: this.$t('certifiedEngineer') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
message: this.$t('personLiable') + this.$t('cannotEmpty'),
trigger: 'change'
}
]
@@ -323,11 +298,10 @@
projectNameList: [],
title: '',
DeliverableTreeList: [],
uploadName: ''
uploadName: '',
}
},
mounted() {
this.getNameList()
this.getDeliverableTree()
},
methods: {
@@ -341,32 +315,12 @@
}
})
},
getNameList(value) {
getAction('project/projectNameInfoEO/list', {}).then((res) => {
if (res.success) {
this.projectNameList = res.result || []
if (this.title == this.$t('edit')) {
let content = this.projectNameList.filter(res => {
return res.id == value.projectNameId
})
this.yearNameDataList = content[0].yearNameDataList || []
this.formInline = value
this.formInline = { ...this.formInline }
}
} else {
this.projectNameList = []
}
})
},
addModel() {
this.visible = true
this.title = this.$t('add')
this.formInline = {}
this.getNameList()
this.formInline.studioEngineerName = this.userInfo().username
this.formInline.studioEngineer = this.userInfo().id
this.formInline.projectVersion = '00'
this.formInline = { ...this.formInline }
this.formInline.dataList = [{}]
this.formInline = {...this.formInline}
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate()
})
@@ -374,7 +328,6 @@
editModel(value) {
this.visible = true
this.title = this.$t('edit')
this.getNameList(value)
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate()
})
@@ -425,16 +378,6 @@
this.formInline[value] = id
this.formInline = { ...this.formInline }
},
projectNameChange(value) {
this.formInline.yearNameId = undefined
let content = this.projectNameList.filter(res => {
return res.id == value
})
this.formInline.vehiclePlatform = content[0].vehiclePlatform || ''
this.yearNameDataList = content[0].yearNameDataList || []
this.formInline.digitalPlatform = content[0].digitalPlatform || ''
this.formInline = { ...this.formInline }
},
clickButtonToUpload(item) {
this.$refs.uploadFile.perentHandleFunc()
this.$refs.uploadFile.visible = true
@@ -458,7 +401,11 @@
/** 赋值给当前对应的表单文件 */
this.formInline[this.uploadName] = attIdList.join(',')
this.formInline = { ...this.formInline }
}
},
addClick(index){
this.formInline.dataList.splice(1,index,{})
this.formInline = {...this.formInline}
},
}
}
</script>
@@ -582,6 +529,16 @@
border: 1px #00B3BE solid;
color: #00B3BE;
}
.header-text {
font-size: 16px;
font-weight: 500;
}
.icon-text {
font-size: 16px;
margin-right: 4px;
}
</style>
<style>
.ant-input-disabled {
@@ -213,7 +213,7 @@
queryParamQuery: {},
toggleSearchStatus: false,
url: {
list: '',
list: '/project/projectCertificationInventoryEO/page',
exportTemplate: '',
exportData: '',
deleteBatch: '',
@@ -233,84 +233,84 @@
{
title: this.$t('inspectionItems'),
align: 'left',
dataIndex: 'inspectionItems',
dataIndex: 'inspectionItem',
width: 180,
ellipsis: true
},
{
title: this.$t('configurationItem'),
align: 'left',
dataIndex: 'configurationItem',
dataIndex: 'configItem',
width: 180,
ellipsis: true
},
{
title: 'WVTA ID',
align: 'left',
dataIndex: 'configurationItem',
dataIndex: 'wvtaId',
width: 180,
ellipsis: true
},
{
title: this.$t('standardNo'),
align: 'left',
dataIndex: 'standardNo',
dataIndex: 'serialNumber',
width: 180,
ellipsis: true
},
{
title: this.$t('areaOfResponsibility'),
align: 'left',
dataIndex: 'areaOfResponsibility',
dataIndex: 'dutyTerritory',
width: 180,
ellipsis: true
},
{
title: this.$t('engineeringInterfacePerson'),
align: 'left',
dataIndex: 'engineeringInterfacePerson',
dataIndex: 'sdt',
width: 180,
ellipsis: true
},
{
title: this.$t('personLiable'),
align: 'left',
dataIndex: 'personLiable',
dataIndex: 'dutyPerson',
width: 180,
ellipsis: true
},
{
title: this.$t('typeOfDeliverables'),
align: 'left',
dataIndex: 'typeOfDeliverables',
dataIndex: 'deliverableType',
width: 180,
ellipsis: true
},
{
title: this.$t('DeliverablesResult'),
align: 'left',
dataIndex: 'DeliverablesResult',
dataIndex: 'deliveryResult',
width: 180,
ellipsis: true
},
{
title: this.$t('closingDate'),
align: 'left',
dataIndex: 'closingDate',
dataIndex: 'endTime',
width: 180,
ellipsis: true
},
{
title: this.$t('ProcessStatus'),
align: 'left',
dataIndex: 'ProcessStatus',
dataIndex: 'flowStatus',
width: 180,
ellipsis: true
},
{
title: this.$t('reportNo'),
align: 'left',
dataIndex: 'reportNo',
dataIndex: 'reportNumber',
width: 180,
ellipsis: true
},
@@ -324,14 +324,14 @@
{
title: this.$t('nameOfManufacturer'),
align: 'left',
dataIndex: 'nameOfManufacturer',
dataIndex: 'productionEnterpriseName',
width: 180,
ellipsis: true
},
{
title: this.$t('CertificationProgress'),
align: 'left',
dataIndex: 'CertificationProgress',
dataIndex: 'certificationProgress',
width: 180,
ellipsis: true
},