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

This commit is contained in:
高嵩
2023-08-22 11:12:13 +08:00
5 changed files with 138 additions and 106 deletions
+1
View File
@@ -1951,4 +1951,5 @@ module.exports = {
datacannotbeedited:'This data cannot be edited',
Rematchornot:'Rematch or not',
Modifyremarks:'Modify remarks',
Reasonforreturn:'Reason for return',
}
+1
View File
@@ -3907,4 +3907,5 @@ module.exports = {
datacannotbeedited:'该数据不能进行编辑',
Rematchornot:'是否重新匹配',
Modifyremarks:'修改备注',
Reasonforreturn:'退回原因'
}
@@ -33,7 +33,7 @@
v-model="queryParam.impactHomo"></a-input>
</div>
</a-col>
<template v-if="toggleSearchStatus && vehicleTypeCode== '全部'">
<template v-if="toggleSearchStatus && vehicleTypeCode== $t('whole')">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('vehicleType')">
@@ -61,7 +61,7 @@
</template>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a @click="handleToggleSearch" v-if="vehicleTypeCode == '全部'">
<a @click="handleToggleSearch" v-if="vehicleTypeCode == $t('whole')">
{{ !toggleSearchStatus ? $t('open') : $t('away') }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'" />
</a>
@@ -103,55 +103,55 @@
</div>
<!-- 全部导出-->
<div class="table-operator" style='margin-bottom: 19px;text-align: left;margin-top: 20px;'>
<div v-show="vehicleTypeCode === '全部'" class="operator-text" @click="handleExportManage('all')"
<div v-show="vehicleTypeCode === $t('whole')" class="operator-text" @click="handleExportManage('all')"
v-has="'otadetail:export'">
<a-icon type="export" :rotate="-90" />
{{ $t('export') }}
</div>
<!-- 全部下发通知-->
<div v-show="vehicleTypeCode === '全部'" class="operator-text" @click="issuenotice"
<div v-show="vehicleTypeCode === $t('whole')" class="operator-text" @click="issuenotice"
v-has="'otadetail:Issuenotice'">
<a-icon type="sound" />
{{ $t('issuenotice') }}
</div>
<!-- studio导出-->
<div v-show="vehicleTypeCode !== '全部'" class="operator-text" @click="handleExportManage('studio')"
<div v-show="vehicleTypeCode !== $t('whole')" class="operator-text" @click="handleExportManage('studio')"
v-has="'otad:export'">
<a-icon type="export" :rotate="-90"/>
{{ $t('export') }}
</div>
<!-- studio批量设置-->
<div v-show="vehicleTypeCode !== '全部'" class="operator-text" @click="BatchSetting"
<div v-show="vehicleTypeCode !== $t('whole')" class="operator-text" @click="BatchSetting"
v-has="'otad:batchsetting'">
<a-icon type="setting" />
{{ $t('BatchSetting') }}
</div>
<!-- studio申请重新匹配-->
<div v-show="vehicleTypeCode !== '全部'" class="operator-text" @click="applyforrematch"
<div v-show="vehicleTypeCode !== $t('whole')" class="operator-text" @click="applyforrematch"
v-has="'otad:rematch'">
<a-icon type="rollback" />
{{ $t('applyforrematch') }}
</div>
<!-- studio保存-->
<div v-show="vehicleTypeCode !== '全部'" class="operator-text" @click="preservation"
<div v-show="vehicleTypeCode !== $t('whole')" class="operator-text" @click="preservation"
v-has="'otad:save'">
<a-icon type="check-circle" />
{{ $t('preservation') }}
</div>
<!-- studio提交-->
<div v-show="vehicleTypeCode !== '全部'" class="operator-text" @click="submit"
<div v-show="vehicleTypeCode !== $t('whole')" class="operator-text" @click="submit"
v-has="'otad-submit'">
<a-icon type="check-circle" />
{{ $t('submit') }}
</div>
<!-- manger确认-->
<div v-show="vehicleTypeCode !== '全部'" class="operator-text" @click="confirm"
<div v-show="vehicleTypeCode !== $t('whole')" class="operator-text" @click="confirm"
v-has="'otaman:confirm'">
<a-icon type="check-circle" />
{{ $t('confirm') }}
</div>
<!-- manger退回-->
<div v-show="vehicleTypeCode !== '全部'" class="operator-text" @click="sendBack"
<div v-show="vehicleTypeCode !== $t('whole')" class="operator-text" @click="sendBack"
v-has="'otaman:return'">
<a-icon type="rollback" />
{{ $t('sendBack') }}
@@ -361,7 +361,7 @@ export default {
importZipUrl: '/ota/otaBaCxList/importData',//导入
},
number:'',
vehicleTypeCode:'全部',
vehicleTypeCode:this.$t('whole'),
visible: false,
loading: false,
toggleSearchStatus: false,
@@ -891,7 +891,7 @@ export default {
watch:{
// 监听车型变化
vehicleTypeCode(){
if(this.vehicleTypeCode !== '全部'){
if(this.vehicleTypeCode !== this.$t('whole')){
this.cuList = this.customizeSeList
this.$forceUpdate()
}else{
@@ -971,7 +971,7 @@ export default {
}
})
this.selectedRowKeys = []
queryParam.appliedVehicleProject = this.vehicleTypeCode == '全部'?queryParam.appliedVehicleProject:this.vehicleTypeCode
queryParam.appliedVehicleProject = this.vehicleTypeCode == this.$t('whole')?queryParam.appliedVehicleProject:this.vehicleTypeCode
queryParam.plannedBpLaunchBatch = this.$route.query.plannedBpLaunchBatch
let query = {
pageNo: this.pageNo,
@@ -981,7 +981,7 @@ export default {
...queryParam
}
this.loading = true
let url = this.vehicleTypeCode == '全部'?'/ota/otaManageApplyEO/getOtaPage':'/ota/otaManageApplyEO/getOtaCarPage'
let url = this.vehicleTypeCode == this.$t('whole')?'/ota/otaManageApplyEO/getOtaPage':'/ota/otaManageApplyEO/getOtaCarPage'
getAction(url, query).then((res) => {
if (res.success) {
if (res.result.current > 1 && res.result.records.length == 0) {
@@ -1027,7 +1027,7 @@ export default {
} else if (long && long == 'en-us') {
this.cut = 'en'
}
this.queryParam.appliedVehicleProject = this.vehicleTypeCode == '全部'?this.queryParam.appliedVehicleProject:this.vehicleTypeCode
this.queryParam.appliedVehicleProject = this.vehicleTypeCode == this.$t('whole')?this.queryParam.appliedVehicleProject:this.vehicleTypeCode
this.queryParam.plannedBpLaunchBatch = this.$route.query.plannedBpLaunchBatch
let exportName = this.$route.query.plannedBpLaunchBatch
let query = {
@@ -1314,7 +1314,7 @@ export default {
},
getHeader() {
getAction('head/headCustomEO/list', {
moduleFlag: this.vehicleTypeCode == '全部'?'全车型':'分车型'
moduleFlag: this.vehicleTypeCode == this.$t('whole')?'全车型':'分车型'
}).then((res) => {
if (res.success) {
if(res.result && res.result.length > 0){
@@ -1323,9 +1323,9 @@ export default {
})
this.columnsAll = res.result
}else{
this.columnsAll = this.vehicleTypeCode == '全部'?this.columns:this.columnstype
this.columnsAll = this.vehicleTypeCode == this.$t('whole')?this.columns:this.columnstype
}
if(this.vehicleTypeCode == '全部'){
if(this.vehicleTypeCode == this.$t('whole')){
for (let j = 0; j < this.columnsAll.length; j++) {
for (let i = 0; i < this.columns.length; i++) {
if (this.columns[i].dataIndex == this.columnsAll[j].dataIndex) {
@@ -1,7 +1,7 @@
<!--拒绝原因-->
<template>
<a-modal
:title="$t('rejectReason')"
:title="$t('Reasonforreturn')"
:width="600"
:visible="visible"
:confirm-loading="confirmLoading"
@@ -15,11 +15,11 @@
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('rejectReason')">
{{$t('rejectReason')}}</span>
<span class="title-text-text" :title="$t('Reasonforreturn')">
{{$t('Reasonforreturn')}}</span>
</div>
<a-form-model-item class="itemModel" prop="rejectReason">
<a-textarea :placeholder="$t('pleaseEnter')+$t('rejectReason')"
<a-textarea :placeholder="$t('pleaseEnter')+$t('Reasonforreturn')"
v-model="formInline.rejectReason"
style="width: 90%"
:maxLength="200"
@@ -56,7 +56,7 @@ export default {
rejectReason: [
{
required: true,
message: this.$t('rejectReason') + this.$t('cannotEmpty'),
message: this.$t('Reasonforreturn') + this.$t('cannotEmpty'),
trigger: 'blur'
}
],
@@ -8,16 +8,16 @@
<div class="title-text" :title="$t('softwareversion')">
<span>{{ $t('softwareversion') }}</span>
</div>
<a-select v-model="queryParam.ctype"
<a-select v-model="queryParam.plannedBpLaunchBatch"
class="box-input"
@change="getonChange"
showSearch
optionFilterProp="label"
:autoClearSearchValue="false"
:getPopupContainer="triggerNode => triggerNode.parentNode" :popper-append-to-body="false">
<a-select-option v-for="d in options" :key="d.value" :label='d.label' :value="d.value">
<span style="display: inline-block;width: 80%" :title=" d.label">
{{ d.label }}
<a-select-option v-for="d in options" :key="d.plannedBpLaunchBatch" :label='d.plannedBpLaunchBatch' :value="d.plannedBpLaunchBatch">
<span style="display: inline-block;width: 80%" :title=" d.plannedBpLaunchBatch">
{{ d.plannedBpLaunchBatch }}
</span>
</a-select-option>
</a-select>
@@ -44,14 +44,14 @@
<td width="150px" height="50px" align="center">{{$t('Pendingapproval')}}</td>
<td width="150px" height="50px" align="center">{{$t('lock')}}</td>
<td width="150px" height="50px" align="center">{{$t('sendBack')}}</td>
<td width="150px" height="50px" align="center">{{$t('notInvolved')}}</td>
<!-- <td width="150px" height="50px" align="center">{{$t('notInvolved')}}</td>-->
</tr>
<tr>
<td height="80px" align="center"><span style='color: #5087EC'>{{matchForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #68BBC4'>{{matchForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #58A55C'>{{matchForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #F2BD42'>{{matchForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #BBBBBB'>{{matchForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #5087EC'>{{matchForm.to_be_matched}}</span></td>
<td height="80px" align="center"><span style='color: #68BBC4'>{{matchForm.to_be_approved}}</span></td>
<td height="80px" align="center"><span style='color: #58A55C'>{{matchForm.locked}}</span></td>
<td height="80px" align="center"><span style='color: #F2BD42'>{{matchForm.rejected}}</span></td>
<!--/* <td height="80px" align="center"><span style='color: #BBBBBB'>{{matchForm.a}}</span></td>*/-->
</tr>
</table>
</div>
@@ -72,13 +72,13 @@
<td width="190px" height="50px" align="center">{{$t('componentReportHasBeenStored')}}</td>
</tr>
<tr>
<td height="80px" align="center"><span style='color: #BBBBBB'>{{authenticationForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #68BBC4'>{{authenticationForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #68BBC4'>{{authenticationForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #D95040'>{{authenticationForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #BBBBBB'>{{authenticationForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #68BBC4'>{{authenticationForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #58A55C'>{{authenticationForm.a}}</span></td>
<td height="80px" align="center"><span style='color: #BBBBBB'>{{authenticationForm.Not_start}}</span></td>
<td height="80px" align="center"><span style='color: #F2BD42'>{{authenticationForm.In_progress}}</span></td>
<td height="80px" align="center"><span style='color: #68BBC4'>{{authenticationForm.Test_passed}}</span></td>
<td height="80px" align="center"><span style='color: #D95040'>{{authenticationForm.Test_failed}}</span></td>
<td height="80px" align="center"><span style='color: #BBBBBB'>{{authenticationForm.Component_report_not_submitted}}</span></td>
<td height="80px" align="center"><span style='color: #68BBC4'>{{authenticationForm.Component_report_submitted}}</span></td>
<td height="80px" align="center"><span style='color: #58A55C'>{{authenticationForm.Component_report_has_been_stored}}</span></td>
</tr>
</table>
</div>
@@ -109,8 +109,7 @@
data() {
return {
queryParam: {
value: 1,
ctype: ''
plannedBpLaunchBatch: ''
},
options: [],
collecting: [],
@@ -142,7 +141,7 @@
},
mounted() {
this.getoptions()
this.getData()
// this.getData()
},
methods: {
@@ -150,19 +149,17 @@
},
getData() {
let id = ''
if (this.idList && this.idList.length > 0) {
id = this.idList.join(',')
} else {
id = this.$route.query.id
let query = {
...this.queryParam,
projectId:this.$route.query.id
}
getAction(this.url.getProjectDetailsStatistics, { id: id }).then((res) => {
getAction('ota/otaManageApplyEO/getStatisticalStatus', query).then((res) => {
if (res.success) {
if (res.result) {
let mainTopDataSource = res.result.taskToConfirmMap ? res.result.taskToConfirmMap.taskToConfirmMapList : []
let mainEndDataSource = res.result.designComplianceMap ? res.result.designComplianceMap.designComplianceMapList : []
this.matchForm = res.result.matchForm
this.authenticationForm = res.result.authenticationForm
let mainTopDataSource = res.result.matchStatusMapList ? res.result.matchStatusMapList : []
let mainEndDataSource = res.result.attestationScheduleMapList ? res.result.attestationScheduleMapList : []
this.matchForm = res.result.matchStatusMap
this.authenticationForm = res.result.attestationScheduleMap
this.mainTopEcharts(mainTopDataSource)
this.mainEndEcharts(mainEndDataSource)
// this.mainRightEcharts(mainRightDataSource)
@@ -177,7 +174,8 @@
getAction('ota/otaManageApplyEO/getVdrListByProject', { projectId: id }).then((res) => {
if (res.success) {
this.options = res.result
this.queryParam.ctype = this.options[0].value
this.queryParam.plannedBpLaunchBatch = this.options[0].plannedBpLaunchBatch
this.getData()
// this.getData(this.queryParam.ctype)
} else {
}
@@ -268,40 +266,40 @@
if (dataSource && dataSource.length > 0) {
this.dataSource = [{}]
dataSource.forEach(res => {
if (res.taskAffirmStatus == 'Not started') {
if (res.matchStatus == 'to_be_matched') {
data.push({
value: res.taskAffirmStatusCount,
name: this.$t('notLaunch'),
color: '#00B3BE',
status: res.taskAffirmStatus
value: res.matchStatusCount,
name: this.$t('tobematched'),
color: '#5087EC',
status: res.matchStatus
})
color.push('#00B3BE')
} else if (res.taskAffirmStatus == 'List to confirm') {
color.push('#5087EC')
} else if (res.matchStatus == 'to_be_approved') {
data.push({
value: res.taskAffirmStatusCount,
name: this.$t('listToConfirm'),
color: '#FDA71C',
status: res.taskAffirmStatus
value: res.matchStatusCount,
name: this.$t('Pendingapproval'),
color: '#68BBC4',
status: res.matchStatus
})
color.push('#FDA71C')
} else if (res.taskAffirmStatus == 'Accepted') {
color.push('#68BBC4')
} else if (res.matchStatus == 'locked') {
data.push({
value: res.taskAffirmStatusCount,
name: this.$t('accept'),
color: '#26BC4B',
status: res.taskAffirmStatus
value: res.matchStatusCount,
name: this.$t('lock'),
color: '#58A55C',
status: res.matchStatus
})
color.push('#26BC4B')
} else if (res.taskAffirmStatus == 'Rejected') {
color.push('#58A55C')
} else if (res.matchStatus == 'rejected') {
data.push({
value: res.taskAffirmStatusCount,
name: this.$t('refuse'),
color: '#E83030',
status: res.taskAffirmStatus
value: res.matchStatusCount,
name: this.$t('sendBack'),
color: '#F2BD42',
status: res.matchStatus
})
color.push('#E83030')
color.push('#F2BD42')
}
this.mainTopNum += res.taskAffirmStatusCount
this.mainTopNum += res.matchStatusCount
})
}
this.getEcharts('main-top-Collect', this.$t('Matchingstatestatistics'), color, data)
@@ -313,41 +311,66 @@
this.mainTopNum = 0
if (dataSource && dataSource.length > 0) {
this.dataSource = [{}]
console.log(dataSource)
dataSource.forEach(res => {
if (res.designFlowTaskStatus == 'Not started') {
if (res.attestationSchedule == 'Not start') {
data.push({
value: res.designFlowTaskStatusCount,
name: this.$t('notLaunch'),
color: '#00B3BE',
status: res.designFlowTaskStatus
value: res.attestationScheduleCount,
name: this.$t('Notatthe'),
color: '#BBBBBB',
status: res.attestationSchedule
})
color.push('#00B3BE')
} else if (res.designFlowTaskStatus == 'List to confirm') {
color.push('#BBBBBB')
} else if (res.attestationSchedule == 'In progress') {
data.push({
value: res.designFlowTaskStatusCount,
name: this.$t('listToConfirm'),
color: '#FDA71C',
status: res.designFlowTaskStatus
value: res.attestationScheduleCount,
name: this.$t('inProgress'),
color: '#F2BD42',
status: res.attestationSchedule
})
color.push('#FDA71C')
} else if (res.designFlowTaskStatus == 'Accepted') {
color.push('#F2BD42')
} else if (res.attestationSchedule == 'Test failed') {
data.push({
value: res.designFlowTaskStatusCount,
name: this.$t('accept'),
color: '#26BC4B',
status: res.designFlowTaskStatus
value: res.attestationScheduleCount,
name: this.$t('experimentFailed'),
color: '#D95040',
status: res.attestationSchedule
})
color.push('#26BC4B')
} else if (res.designFlowTaskStatus == 'Rejected') {
color.push('#D95040')
} else if (res.attestationSchedule == 'Component report not submitted') {
data.push({
value: res.designFlowTaskStatusCount,
name: this.$t('refuse'),
color: '#E83030',
status: res.designFlowTaskStatus
value: res.attestationScheduleCount,
name: this.$t('componentReportNotSubmitted'),
color: '#BBBBBB',
status: res.attestationSchedule
})
color.push('#E83030')
color.push('#BBBBBB')
} else if (res.attestationSchedule == 'Component report submitted') {
data.push({
value: res.attestationScheduleCount,
name: this.$t('componentReportSubmitted'),
color: '#68BBC4',
status: res.attestationSchedule
})
color.push('#68BBC4')
} else if (res.attestationSchedule == 'Component report has been stored') {
data.push({
value: res.attestationScheduleCount,
name: this.$t('componentReportHasBeenStored'),
color: '#58A55C',
status: res.attestationSchedule
})
color.push('#58A55C')
}else if (res.attestationSchedule == 'Test passed') {
data.push({
value: res.attestationScheduleCount,
name: this.$t('experimentPassed'),
color: '#68BBC4',
status: res.attestationSchedule
})
color.push('#68BBC4')
}
this.mainTopNum += res.designFlowTaskStatusCount
this.mainTopNum += res.attestationScheduleCount
})
}
this.getEcharts('main-end-Collect', this.$t('OTaauthenticationprogressstatistics'), color, data)
@@ -355,7 +378,14 @@
responsibility(item) {
this.$emit('currentStatus', item)
},
jump(){
vdrcheckClick(){
this.options.forEach(item => {
if(item.plannedBpLaunchBatch == this.queryParam.plannedBpLaunchBatch){
this.vehicleTypeCode = item.appliedVehicleProject
this.softwareversion = item.plannedBpLaunchBatch
this.releaseName = item.updateDate
}
})
let newUrl = this.$router.resolve({
path:'/components/detil',
query:{