Merge remote-tracking branch 'origin/dev_2nd_LCYH' into dev_2nd_LCYH

This commit is contained in:
wangzhijiang
2023-03-31 15:58:40 +08:00
4 changed files with 234 additions and 195 deletions
@@ -231,6 +231,7 @@ export default {
} else { } else {
this.form = res.result this.form = res.result
this.form.otaId=''
if (this.$route.query.type == 1 && res.result.cxmb == null) { if (this.$route.query.type == 1 && res.result.cxmb == null) {
this.form.cxmb = this.form.babh + '-' + this.form.bapc + '-' + this.form.cpxh this.form.cxmb = this.form.babh + '-' + this.form.bapc + '-' + this.form.cpxh
} else { } else {
@@ -261,17 +262,12 @@ export default {
}) })
}, },
save() { save() {
let otaId = localStorage.getItem('otaId')
if (otaId == null) {
otaId = ''
}
// if(this.form.bapc!=null && this.form.bapc!=undefined && this.form.bapc!=''){
// this.$nextTick(()=>{
// this.$refs.ruleForm.clearValidate('bapc')
// })
// }
this.$refs.ruleForm.validate(valid => { this.$refs.ruleForm.validate(valid => {
if (valid) { if (valid) {
let otaId = localStorage.getItem('otaId')
if (otaId == null|| otaId == undefined) {
otaId = ''
}
this.selectListPc.map(item => { this.selectListPc.map(item => {
if (item.id == this.form.bapc) { if (item.id == this.form.bapc) {
this.form.bapc = item.ggpc this.form.bapc = item.ggpc
@@ -384,7 +384,6 @@ import { message } from 'ant-design-vue'
if(otaId==null || otaId == undefined){ if(otaId==null || otaId == undefined){
otaId='' otaId=''
} }
postAction('/ota/otaBaCxJbxx/add',{ otaId:otaId,...this.form}).then( res => { postAction('/ota/otaBaCxJbxx/add',{ otaId:otaId,...this.form}).then( res => {
if(res.code == 200){ if(res.code == 200){
localStorage.setItem('otaId', res.result.otaId) localStorage.setItem('otaId', res.result.otaId)
@@ -1055,22 +1055,22 @@
isResultReported: false, isResultReported: false,
// fieldList | array |✔| 需要查询的列集合示例如下,type类型有:date/datetime/string/int/number // fieldList | array |✔| 需要查询的列集合示例如下,type类型有:date/datetime/string/int/number
fieldList: [ fieldList: [
{ // {
type: 'string', // type: 'string',
value: 'correspondingStandard', // value: 'correspondingStandard',
text: this.$t('correspondingStandard') // text: this.$t('correspondingStandard')
}, // },
{ {
type: 'string', type: 'string',
value: 'subtitle', value: 'subtitle',
text: this.$t('subtitle') text: this.$t('subtitle')
}, },
{ // {
type: '', // type: '',
value: 'implementType', // value: 'implementType',
text: this.$t('implementationCategory'), // text: this.$t('implementationCategory'),
dictCode: 'implement_type'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框 // dictCode: 'implement_type'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框
}, // },
{ {
type: 'date', type: 'date',
value: 'xin1Che1Xing2Shi2Shi1Ri4Qi1', value: 'xin1Che1Xing2Shi2Shi1Ri4Qi1',
@@ -1104,24 +1104,12 @@
text: this.$t('areaOfResponsibility'), text: this.$t('areaOfResponsibility'),
dictCode: 'duty_territory'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框 dictCode: 'duty_territory'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框
}, },
{
type: '',
value: 'region',
text: this.$t('zoneOfApplication'),
dictCode: 'region'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框
},
{ {
type: 'Personnel', type: 'Personnel',
value: 'regulationOwnerId', value: 'regulationOwnerId',
valueName: 'regulationOwnerIdName', valueName: 'regulationOwnerIdName',
text: this.$t('regulatoryEngineer') text: this.$t('regulatoryEngineer')
}, },
{
type: 'Personnel',
value: 'homologationEngineerId',
valueName: 'homologationEngineerIdName',
text: this.$t('certifiedEngineer')
},
{ {
type: 'Personnel', type: 'Personnel',
value: 'engineeringInterfacePerson', value: 'engineeringInterfacePerson',
@@ -35,12 +35,14 @@
</a-col> </a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons"> <span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24"> <a-col :md="6" :sm="24">
<globalAdvancedQuery ref="globalAdvancedQueryRef" <a-button class="box-button" type="primary"
@handleSuperQuery="handleSuperQuery" style="margin-right: 8px"
:fieldList="fieldList"/> @click="searchQuery">{{ $t('query') }}</a-button>
<a-button class="box-button" type="primary" @click="searchQuery">{{ $t('query') }}</a-button> <a-button class="box-button"
<a-button class="box-button" style="margin-left: 8px"
@click="searchReset">{{ $t('reset') }}</a-button> @click="searchReset">{{ $t('reset') }}</a-button>
<globalAdvancedQuery ref="globalAdvancedQueryRef"
@handleSuperQuery="handleSuperQuery"
:fieldList="fieldList"/>
</a-col> </a-col>
</span> </span>
</a-row> </a-row>
@@ -58,37 +60,50 @@
:columns="columns" :columns="columns"
> >
<span slot="titleName" slot-scope="text,record" :title="text"> <span slot="titleName" slot-scope="text,record" :title="text">
{{ text && text.length > 20 ? text.slice(0, 19) + '...' : text }} <span class="textName">
{{ text }}
</span>
</span> </span>
<span slot="designDeliverableTemplateName" slot-scope="text,record">
<span>{{ record.designDeliverableTypeName }}</span><br v-if="record.designDeliverableTypeName"> <span slot="standard" slot-scope="text,record" :title="text">
<a v-if="record.designDeliverableTemplate && record.designDeliverableTemplate.split(',').length == 1" <a class="textName" @click="standardClick(record)">
@click="pdfPreviewClick(record.designDeliverableTemplateName,record.designDeliverableTemplate)"> {{ text }}
{{ record.designDeliverableTemplateName }} </a>
</a>
<a v-else-if="record.designDeliverableTemplate && record.designDeliverableTemplate.split(',').length > 1"
@click="clickButtonToUpload(record.designDeliverableTemplate)">{{ $t('viewFile') }}</a>
<span v-else>--</span>
</span> </span>
<span slot="prehomoDeliverableTemplateName" slot-scope="text,record">
<span>{{ record.prehomoDeliverableTypeName }}</span><br v-if="record.prehomoDeliverableTypeName"> <span slot="verifyDeliverableTemplateName" slot-scope="text,result">
<a v-if="record.prehomoDeliverableTemplate && record.prehomoDeliverableTemplate.split(',').length == 1" <span class="viewFile"
@click="pdfPreviewClick(record.prehomoDeliverableTemplateName,record.prehomoDeliverableTemplate)"> @click="viewFileClick(result.verifyDeliverableTemplate)"
{{ record.prehomoDeliverableTemplateName }} v-if="result.verifyDeliverableTemplate">
</a> {{$t('viewFile')}}
<a v-else-if="record.prehomoDeliverableTemplate && record.prehomoDeliverableTemplate.split(',').length > 1" </span>
@click="clickButtonToUpload(record.prehomoDeliverableTemplate)">{{ $t('viewFile') }}</a> <span v-else>--</span>
<span v-else>--</span>
</span> </span>
<span slot="verifyDeliverableTemplateName" slot-scope="text,record"> <span slot="designDeliverableTemplate" slot-scope="text,result">
<span>{{ record.verifyDeliverableTypeName }}</span><br v-if="record.verifyDeliverableTypeName"> <span class="viewFile"
<a v-if="record.verifyDeliverableTemplate && record.verifyDeliverableTemplate.split(',').length == 1" @click="viewFileClick(result.designDeliverableTemplate)"
@click="pdfPreviewClick(record.verifyDeliverableTemplateName,record.verifyDeliverableTemplate)"> v-if="result.designDeliverableTemplate">
{{ record.verifyDeliverableTemplateName }} {{$t('viewFile')}}
</a> </span>
<a v-else-if="record.verifyDeliverableTemplate && record.verifyDeliverableTemplate.split(',').length > 1" <span v-else>--</span>
@click="clickButtonToUpload(record.verifyDeliverableTemplate)">{{ $t('viewFile') }}</a> </span>
<span v-else>--</span> <span slot="designFlowStatusName" slot-scope="text,result">
<span v-if="result.designFlowStatus == 'List to be released' ||
result.designFlowStatus == 'List to be checked'"
:title="text">
{{text}}
</span>
<a v-else @click="designFlowStatusClick(result,$t('designComplianceReview'))"
:title="text">{{text}}</a>
</span>
<span slot="verifyFlowStatusName" slot-scope="text,result">
<span v-if="result.verifyFlowStatus == 'List to be released' ||
result.verifyFlowStatus == 'List to be checked'"
:title="text">
{{text}}
</span>
<a v-else @click="designFlowStatusClick(result,$t('verificationComplianceReview'))"
:title="text">{{text}}</a>
</span> </span>
</a-table> </a-table>
</div> </div>
@@ -125,12 +140,16 @@
</span> </span>
</a-table> </a-table>
</a-modal> </a-modal>
<viewFileModel ref="viewFileModelRef"/>
<designCompliance ref="designComplianceRef"/>
</a-card> </a-card>
</template> </template>
<script> <script>
import ImportFile from '@/components/ImportFile/index' import ImportFile from '@/components/ImportFile/index'
import globalAdvancedQuery from '@/components/globalAdvancedQuery/index' import globalAdvancedQuery from '@/components/globalAdvancedQuery/index'
import viewFileModel from '@/components/viewFileModel/index'
import designCompliance from '../../toDoCenter/projectRegulationTasks/components/designCompliance'
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage' import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { Base64 } from 'js-base64' import { Base64 } from 'js-base64'
@@ -139,22 +158,25 @@
name: 'index', name: 'index',
components: { components: {
globalAdvancedQuery, globalAdvancedQuery,
ImportFile ImportFile,
viewFileModel,
designCompliance
}, },
data() { data() {
return { return {
columns: [ columns: [
{ {
title: this.$t('standard'), title: this.$t('standard'),
align: 'center', align: 'left',
dataIndex: 'serialNumber', dataIndex: 'serialNumber',
width: 180, width: 180,
fixed: 'left', fixed: 'left',
scopedSlots: { customRender: 'titleName' } sorter: true,
scopedSlots: { customRender: 'standard' }
}, },
{ {
title: this.$t('title'), title: this.$t('title'),
align: 'center', align: 'left',
dataIndex: 'title', dataIndex: 'title',
width: 180, width: 180,
fixed: 'left', fixed: 'left',
@@ -162,180 +184,140 @@
}, },
{ {
title: this.$t('subtitle'), title: this.$t('subtitle'),
align: 'center', align: 'left',
dataIndex: 'subtitle', dataIndex: 'subtitle',
width: 180,
fixed: 'left',
scopedSlots: { customRender: 'titleName' }
},
{
title: this.$t('listConfirmationStatus'),
align: 'center',
ellipsis: true, ellipsis: true,
dataIndex: 'inventoryAffirmStatusName' width: 180
}, },
{ {
title: this.$t('taskAffirmStatus'), title: this.$t('applicableSupplement'),
align: 'center', align: 'left',
ellipsis: true, ellipsis: true,
dataIndex: 'taskAffirmStatusName' dataIndex: 'applicableSupplement',
}, width: 200
// {
// title: this.$t('taskReleaseStatus'),
// align: 'center',
// dataIndex: 'taskReleaseStatus'
// },
{
title: this.$t('correspondingStandard'),
align: 'center',
ellipsis: true,
dataIndex: 'correspondingStandard'
},
{
title: this.$t('implementationCategory'),
align: 'center',
ellipsis: true,
dataIndex: 'implementType_dictText'
},
{
title: this.$t('ImplementationDate'),
align: 'center',
ellipsis: true,
dataIndex: 'xin1Che1Xing2Shi2Shi1Ri4Qi1'
},
{
title: this.$t('vehicleInProductionDate'),
align: 'center',
ellipsis: true,
dataIndex: 'implementTime'
},
{
title: 'WVTA ID',
align: 'center',
dataIndex: 'wvtaId',
ellipsis: true
}, },
{ {
title: this.$t('certificationType'), title: this.$t('certificationType'),
align: 'center', align: 'left',
ellipsis: true, ellipsis: true,
dataIndex: 'attestationType_dictText' dataIndex: 'attestationType_dictText',
width: 180
}, },
{ {
title: this.$t('certificationLevel'), title: this.$t('certificationLevel'),
align: 'center', align: 'left',
ellipsis: true, ellipsis: true,
dataIndex: 'attestationRank_dictText' dataIndex: 'attestationRank_dictText',
width: 180
}, },
//
{ {
title: this.$t('areaOfResponsibility'), title: this.$t('areaOfResponsibility'),
align: 'center', align: 'left',
ellipsis: true, ellipsis: true,
dataIndex: 'dutyTerritory_dictText' sorter: true,
dataIndex: 'dutyTerritory_dictText',
width: 180
}, },
{ {
title: this.$t('regulatoryEngineer'), title: this.$t('regulatoryEngineer'),
align: 'center', align: 'left',
ellipsis: true, ellipsis: true,
dataIndex: 'regulationOwnerName' sorter: true,
}, dataIndex: 'regulationOwnerName',
{ width: 180
title: this.$t('certifiedEngineer'),
align: 'center',
ellipsis: true,
dataIndex: 'homologationEngineerName'
}, },
{ {
title: this.$t('engineeringInterfacePerson'), title: this.$t('engineeringInterfacePerson'),
align: 'center', align: 'left',
ellipsis: true, ellipsis: true,
dataIndex: 'engineeringInterfacePersonName' sorter: true,
dataIndex: 'engineeringInterfacePersonName',
width: 180
}, },
{ {
title: this.$t('remarks'), title: this.$t('remarks'),
align: 'center', align: 'left',
ellipsis: true, dataIndex: 'remark',
dataIndex: 'remark' width: 180,
ellipsis: true
}, },
{ {
title: this.$t('confirmationOfDesignConformity'), title: this.$t('confirmationOfDesignConformity'),
children: [ children: [
{
title: this.$t('Deliverables'),
dataIndex: 'designDeliverableTemplateName',
align: 'center',
scopedSlots: { customRender: 'designDeliverableTemplateName' }
},
{
title: this.$t('Sponsor'),
dataIndex: 'designInitiatorName',
align: 'center'
},
{ {
title: this.$t('personLiable'), title: this.$t('personLiable'),
dataIndex: 'designDutyName', dataIndex: 'designDutyIdName',
align: 'center' align: 'left',
width: 180,
ellipsis: true
}, },
{ {
title: this.$t('TaskCutOffTime'), title: this.$t('TaskCutOffTime'),
dataIndex: 'designDueDate', dataIndex: 'designDueDate',
align: 'center' align: 'left',
} ellipsis: true,
] width: 140
},
{
title: this.$t('PrehomoConfirmation'),
children: [
{
title: this.$t('Deliverables'),
dataIndex: 'prehomoDeliverableTemplateName',
align: 'center',
scopedSlots: { customRender: 'prehomoDeliverableTemplateName' }
}, },
{ {
title: this.$t('Sponsor'), title: this.$t('ProcessStatus'),
dataIndex: 'prehomoInitiatorName', dataIndex: 'designFlowStatusName',
align: 'center' align: 'left',
ellipsis: true,
width: 140,
scopedSlots: { customRender: 'designFlowStatusName' }
}, },
{ {
title: this.$t('personLiable'), title: this.$t('deliverableTemplate'),
dataIndex: 'prehomoDutyName', dataIndex: 'designDeliverableTemplate',
align: 'center' align: 'left',
}, width: 180,
{ ellipsis: true,
title: this.$t('TaskCutOffTime'), scopedSlots: { customRender: 'designDeliverableTemplate' }
dataIndex: 'prehomoDueDate',
align: 'center'
} }
] ]
}, },
{ {
title: this.$t('verificationAndConformityconfirmation'), title: this.$t('verificationAndConformityconfirmation'),
children: [ children: [
{
title: this.$t('Deliverables'),
dataIndex: 'verifyDeliverableTemplateName',
align: 'center',
scopedSlots: { customRender: 'verifyDeliverableTemplateName' }
},
{
title: this.$t('Sponsor'),
dataIndex: 'verifyInitiatorName',
align: 'center'
},
{ {
title: this.$t('personLiable'), title: this.$t('personLiable'),
dataIndex: 'verifyDutyName', dataIndex: 'verifyDutyIdName',
align: 'center' align: 'left',
width: 180,
ellipsis: true
}, },
{ {
title: this.$t('TaskCutOffTime'), title: this.$t('TaskCutOffTime'),
dataIndex: 'verifyDueDate', dataIndex: 'verifyDueDate',
align: 'center' align: 'left',
ellipsis: true,
width: 140
},
{
title: this.$t('ProcessStatus'),
dataIndex: 'verifyFlowStatusName',
align: 'left',
ellipsis: true,
width: 180,
scopedSlots: { customRender: 'verifyFlowStatusName' }
},
{
title: this.$t('deliverableTemplate'),
dataIndex: 'verifyDeliverableTemplate',
align: 'left',
width: 180,
ellipsis: true,
scopedSlots: { customRender: 'verifyDeliverableTemplateName' }
} }
] ]
} }
// {
// title: this.$t('operation'),
// align: 'left',
// fixed: 'right',
// width: 260,
// scopedSlots: { customRender: 'operation' }
// }
], ],
columnsFile: [ columnsFile: [
{ {
@@ -345,12 +327,6 @@
width: 260, width: 260,
ellipsis: true ellipsis: true
}, },
{
title: this.$t('operation'),
align: 'center',
width: 130,
scopedSlots: { customRender: 'fileOperation' }
}
], ],
visibleFile: false, visibleFile: false,
dataSourceFile: [], dataSourceFile: [],
@@ -421,6 +397,73 @@
}, },
methods: { methods: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo']),
//流程状态点击事件
designFlowStatusClick(row, name) {
let query = {}
let TaskKey = ''
if (name == this.$t('designComplianceReview')) {
if (row.designFlowStatus == 'Task to be confirmed') {
TaskKey = 'zrrqr'
} else if (row.designFlowStatus == 'Results to be submitted') {
TaskKey = 'zrrtjjfw'
} else if (row.designFlowStatus == 'Results to be reviewed' ||
row.designFlowStatus == 'Compliance' ||
row.designFlowStatus == 'Non-Compliance' ||
row.designFlowStatus == 'To be tracked' ||
row.designFlowStatus == 'NA') {
TaskKey = 'fggcssh'
}
query = {
actiProcInstId: row.designPId,
projectTaskInventoryId: row.id,
projectLibraryId: row.projectLibraryId,
TaskKey: TaskKey,
isDisplay: false,
flowType: 2,
Sponsor: 'regulationOwnerName',
personLiable: 'designDutyIdName',
typeOfDeliverables: 'designDeliverableTypeName',
deliverableTemplate: 'designDeliverableTemplate',
DueDate: 'designDueDate',
remarks: 'designRemark',
projectName: row.projectName,
targetMarket: row.targetMarket,
projectNameId: row.projectNameId,
primaryKeyId: row.primaryKeyId
}
} else {
if (row.verifyFlowStatus == 'Task to be confirmed') {
TaskKey = 'zrrqr'
} else if (row.verifyFlowStatus == 'Results to be submitted') {
TaskKey = 'zrrtjjfw'
} else if (row.verifyFlowStatus == 'Results to be reviewed' ||
row.verifyFlowStatus == 'Compliance' ||
row.verifyFlowStatus == 'Non-Compliance' ||
row.verifyFlowStatus == 'To be tracked' ||
row.verifyFlowStatus == 'NA') {
TaskKey = 'fggcssh'
}
query = {
actiProcInstId: row.verifyPId,
projectTaskInventoryId: row.id,
projectLibraryId: row.projectLibraryId,
TaskKey: TaskKey,
flowType: 4,
isDisplay: false,
Sponsor: 'regulationOwnerName',
personLiable: 'verifyDutyIdName',
typeOfDeliverables: 'verifyDeliverableTypeName',
deliverableTemplate: 'verifyDeliverableTemplate',
DueDate: 'verifyDueDate',
remarks: 'verifyRemark',
projectName: row.projectName,
targetMarket: row.targetMarket,
projectNameId: row.projectNameId,
primaryKeyId: row.primaryKeyId
}
}
this.$refs.designComplianceRef.getList(JSON.parse(JSON.stringify(query)), name)
},
searchQuery() { searchQuery() {
this.getList() this.getList()
}, },
@@ -502,6 +545,19 @@
download(item) { download(item) {
downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id ,userName:this.userInfo().username}) downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id ,userName:this.userInfo().username})
}, },
standardClick(row) {
let newUrl = this.$router.resolve({
path: '/docManage/library/detail',
query: {
id: row.standId
}
})
window.open(newUrl.href, '_blank')
},
viewFileClick(item) {
this.$refs.viewFileModelRef.clickButtonToUpload(item)
},
clickButtonToUpload(item) { clickButtonToUpload(item) {
this.loading = true this.loading = true
this.visibleFile = true this.visibleFile = true
@@ -521,8 +577,8 @@
this.loading = false this.loading = false
} }
}) })
} },
} },
} }
</script> </script>