OTA对接列表数据

This commit is contained in:
zyx.net
2023-08-18 15:31:43 +08:00
parent 78dd252a78
commit 972baafd26
8 changed files with 855 additions and 271 deletions
+3
View File
@@ -1939,4 +1939,7 @@ module.exports = {
issuenotice:'Issue notice',
applyforrematch:'Apply for rematch',
notificationsent:'Is a notification sent?',
VDRDetails:'VDR Details',
applicationprojectversion:'Application project version',
selectlocked:'You can select only the data whose matching status is locked',
}
+3
View File
@@ -3895,4 +3895,7 @@ module.exports = {
issuenotice:'下发通知',
applyforrematch:'申请重新匹配',
notificationsent:'是否下发通知',
VDRDetails:'VDR详情',
applicationprojectversion:'应用项目版本',
selectlocked:'只能选择匹配状态为锁定的数据',
}
@@ -11,6 +11,7 @@
<a-select v-else-if="tagType=='select'" allowClear :getPopupContainer="getPopupContainer"
show-search
optionFilterProp="label"
:autoClearSearchValue="false"
:placeholder="placeholder" :disabled="disabled" :value="getValueSting" @change="handleInput">
<!-- <a-select-option :value="null">{{$t('pleaseSelect')}}</a-select-option>-->
<a-select-option v-for="(item, key) in dictOptionsValue"
@@ -23,6 +23,11 @@
class="box-input propbox"
style="width: 90%"
v-model='formInline.projectVersion'
showSearch
optionFilterProp="label"
:autoClearSearchValue="false"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
:placeholder="$t('PleaseSelect')+$t('projectVersion')">
<!-- <a-select-option :value="null">{{$t('pleaseSelect')}}</a-select-option>-->
<a-select-option v-for="(item, key) in projectVersionList"
@@ -23,6 +23,11 @@
class="box-input propbox"
style="width: 90%"
v-model='formInline.projectVersion'
showSearch
optionFilterProp="label"
:autoClearSearchValue="false"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
:placeholder="$t('PleaseSelect')+$t('projectVersion')">
<!-- <a-select-option :value="null">{{$t('pleaseSelect')}}</a-select-option>-->
<a-select-option v-for="(item, key) in projectVersionList"
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,268 @@
<!--VDR详情-->
<template>
<div>
<a-drawer
:title="$t('VDRDetails')"
:maskClosable="false"
:width="800"
placement="right"
:closable="true"
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-row :gutter="24">
<a-col :span="24">
<div class='detail-box'>
<span class='detail-text'>{{'VDR'}}</span>
<span class="title-text-text" :title="form.VDR">
{{form.VDR}}</span>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class='detail-box'>
<span class='detail-text'>{{$t('theme')}}</span>
<span class="title-text-text" :title="form.theme">
{{form.theme}}</span>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class='detail-box'>
<span class='detail-text'>{{$t('authenticationimpact')}}</span>
<span class="title-text-text" :title="form.authenticationimpact">
{{form.authenticationimpact}}</span>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class='detail-box'>
<span class='detail-text'>{{$t('influencestatute') + '-CN'}}</span>
<span class="title-text-text" :title="form.influencestatuteCn">
{{form.influencestatuteCn}}</span>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class='detail-box'>
<span class='detail-text'>{{$t('influencestatute') + '-EU'}}</span>
<span class="title-text-text" :title="form.influencestatuteEu">
{{form.influencestatuteEu}}</span>
</div>
</a-col>
</a-row>
<div style='margin-bottom: 10px;'>{{$t('applicationprojectversion')}}</div>
<div v-for='(item,index) in vdrList' :key='index'>
<a-row :gutter="24">
<a-col :span="24">
<div class='detail-box'>
<span class='detail-text'>{{item.title}}</span>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class='detail-box'>
<span class='detail-text'>{{$t('certificationStartOne')}}</span>
<span class="title-text-text" :title="item.certificationStartOne">
{{item.certificationStartOne}}</span>
</div>
</a-col>
<a-col :span="12">
<div class='detail-box'>
<span class='detail-text'>{{$t('certificationdeclaration')}}</span>
<span class="title-text-text" :title="item.certificationdeclaration">
{{item.certificationdeclaration}}</span>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class='detail-box'>
<span class='detail-text'>{{$t('certificationEnd')}}</span>
<span class="title-text-text" :title="item.certificationEnd">
{{item.certificationEnd}}</span>
</div>
</a-col>
<a-col :span="12">
<div class='detail-box'>
<span class='detail-text'>{{$t('CertificationProgress')}}</span>
<span class="title-text-text" :title="item.CertificationProgress">
{{item.CertificationProgress}}</span>
</div>
</a-col>
</a-row>
</div>
</a-spin>
<div class="drawer-bootom-button">
<a-button style="margin-right: 8px" @click="handleCancel">{{$t('close')}}</a-button>
<!-- <a-button type="primary" @click="handleSubmit" :loading="confirmLoading">{{$t('submit')}}</a-button>-->
</div>
</a-drawer>
<uploadFile ref="uploadFile" :acceptcode="acceptcode" @uploadSuccess="uploadSuccess"/>
</div>
</template>
<script>
import { getAction, postAction } from '@/api/manage'
import uploadFile from '@/components/uploadFile/file'
import { mapGetters } from 'vuex'
export default {
name:"addModel",
components:{
uploadFile
},
data() {
return {
visible: false,
disabled: false,
showButton:false,
confirmLoading: false,
acceptcode:'',
projectNameList: [],
DeliverableTreeList: [],
form:{
VDR:'',
theme:'',
authenticationimpact:'',
influencestatuteCn:'',
influencestatuteEu:'',
},
vdrList:[
{
title:'CN-1',
certificationStartOne:'2022-06-14',
certificationdeclaration:'2022-06-14',
certificationEnd:'2022-06-14',
CertificationProgress:'2022-06-14',
},
{
title:'CN-2',
certificationStartOne:'2022-06-14',
certificationdeclaration:'2022-06-14',
certificationEnd:'2022-06-14',
CertificationProgress:'2022-06-14',
},
],
url:{
addModel:''
},
record:{}
}
},
mounted() {
},
methods: {
...mapGetters(['userInfo']),
addModel(record) {
this.record=record
this.visible = true
this.confirmLoading = false
console.log('555',record);
},
handleCancel() {
this.visible = false
},
/** 上传文件的回调 */
uploadSuccess(data) {
let attIdList = []
if (data && data.length > 0) {
data.map(item => {
attIdList.push(item.id || data.name)
})
}
/** 赋值给当前对应的表单文件 */
this.formInline[this.uploadName] = attIdList.join(',')
this.formInline = { ...this.formInline }
},
isEdit(){
this.disabled=false
}
}
}
</script>
<style scoped>
.box-title-text {
line-height: 1.4;
display: flex;
/*align-items: center;*/
}
.detail-box{
width: 100%;
margin-bottom: 20px;
}
.detail-text{
display: inline-block;
width: 95px;
}
.title-text {
width: 250px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 48px;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
min-height: 40px;
margin-bottom: 24px;
}
.Required {
color: red;
margin-right: 4px;
}
.header-text {
font-size: 16px;
font-weight: 500;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
z-index: 100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
.icon-text {
font-size: 16px;
margin-right: 4px;
}
</style>
@@ -14,43 +14,44 @@
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
showSearch
optionFilterProp="children"
optionFilterProp="label"
:autoClearSearchValue="false"
v-model="queryParam.softwareplatform">
v-model="queryParam.plannedBpLaunchBatch">
<a-select-option v-for="(item, key) in softwareversionList"
:label='item'
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name">
{{ item.name }}
:value="item">
<span style="display: inline-block;width: 100%" :title=" item">
{{ item }}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('softwareplatform')">
<span>{{ $t('softwareplatform') }}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('softwareplatform')"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
showSearch
optionFilterProp="children"
:autoClearSearchValue="false"
v-model="queryParam.softwareplatform">
<a-select-option v-for="(item, key) in softwareplatformList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<!-- <a-col :md="6" :sm="8">-->
<!-- <div class="box-title-text">-->
<!-- <div class="title-text" :title="$t('softwareplatform')">-->
<!-- <span>{{ $t('softwareplatform') }}</span>-->
<!-- </div>-->
<!-- <a-select :placeholder="$t('PleaseSelect')+$t('softwareplatform')"-->
<!-- class="box-input"-->
<!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
<!-- allowClear-->
<!-- showSearch-->
<!-- optionFilterProp="children"-->
<!-- :autoClearSearchValue="false"-->
<!-- v-model="queryParam.softwareplatform">-->
<!-- <a-select-option v-for="(item, key) in softwareplatformList"-->
<!-- :key="key"-->
<!-- :value="item.value">-->
<!-- <span style="display: inline-block;width: 100%" :title=" item.name">-->
<!-- {{ item.name }}-->
<!-- </span>-->
<!-- </a-select-option>-->
<!-- </a-select>-->
<!-- </div>-->
<!-- </a-col>-->
<a-col :md="6" :sm="8">
<div class="box-title-text">
@@ -62,43 +63,46 @@
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
showSearch
optionFilterProp="children"
optionFilterProp="label"
:autoClearSearchValue="false"
v-model="queryParam.vehicleType">
v-model="queryParam.appliedVehicleProject">
<a-select-option v-for="(item, key) in vehicleTypeList"
:label='item'
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name">
{{ item.name }}
:value="item">
<span style="display: inline-block;width: 100%" :title=" item">
{{ item }}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('market')">
<span>{{ $t('market') }}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('market')"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
showSearch
optionFilterProp="label"
:autoClearSearchValue="false"
v-model="queryParam.market">
<a-select-option v-for="(item, key) in marketList"
:label='item'
:key="key"
:value="item">
<span style="display: inline-block;width: 100%" :title=" item">
{{ item }}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<template v-if="toggleSearchStatus">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('market')">
<span>{{ $t('market') }}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('market')"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
showSearch
optionFilterProp="children"
:autoClearSearchValue="false"
v-model="queryParam.market">
<a-select-option v-for="(item, key) in marketList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('softwarereleasetime')">
@@ -108,7 +112,7 @@
class="box-input"
@change="onChange"
style='margin-left: -1px'
v-model="queryParam.softwarereleasetime"
v-model="queryParam.releaseName"
:disabled="false"/>
</div>
</a-col>
@@ -189,7 +193,8 @@ export default {
softwareplatformList: [],
vehicleTypeList: [],
marketList: [],
queryParam: {},
queryParam: {
},
formInline: {},
rules: {
whetherTobring: [
@@ -204,37 +209,37 @@ export default {
{
title: this.$t('softwareversion'),
align: 'left',
dataIndex: 'cpdjbh',
ellipsis: true,
width: 170
},
{
title: this.$t('softwareplatform'),
align: 'left',
dataIndex: 'ggpc',
dataIndex: 'plannedBpLaunchBatch',
ellipsis: true,
width: 170
},
// {
// title: this.$t('softwareplatform'),
// align: 'left',
// dataIndex: 'ggpc',
// ellipsis: true,
// width: 170
// },
{
title: this.$t('market'),
align: 'left',
width: 170,
ellipsis: true,
dataIndex: 'cpsb'
dataIndex: 'market'
},
{
title: this.$t('vehicleType'),
align: 'left',
width: 170,
ellipsis: true,
dataIndex: 'vehicleType'
dataIndex: 'appliedVehicleProject'
},
{
title: this.$t('softwarereleasetime'),
align: 'left',
width: 170,
ellipsis: true,
dataIndex: 'cpmc'
dataIndex: 'releaseName'
},
{
title: this.$t('operation'),
@@ -249,11 +254,22 @@ export default {
}
},
mounted() {
this.getSelectData()
this.getList()
this.administrators = false
},
methods: {
...mapGetters(['userInfo']),
getSelectData(){
getAction('/ota/otaManageApplyEO/getPullDownList', {}).then((res) => {
if (res.success) {
this.softwareversionList = res.result.plannedBpLaunchBatchList
this.vehicleTypeList = res.result.carSet
this.marketList = res.result.marketSet
} else {
}
})
},
handleToggleSearch() {
this.toggleSearchStatus = !this.toggleSearchStatus
},
@@ -290,16 +306,15 @@ export default {
...queryParam
}
this.loading = true
getAction('/ota/otaBaCxList/page', query).then((res) => {
getAction('/ota/otaManageApplyEO/getOtaPage', query).then((res) => {
if (res.success) {
if (res.result.list.current > 1 && res.result.list.records.length == 0) {
if (res.result.current > 1 && res.result.records.length == 0) {
this.pageNo = 1
this.getList()
return
}
this.dataSource = res.result.list.records || []
this.number = res.result.pjspzq
this.total = res.result.list.total
this.dataSource = res.result.records || []
this.total = res.result.total
this.loading = false
} else {
this.loading = false
@@ -310,32 +325,11 @@ export default {
this.selectedRowKeys = value
this.selectedRowKeysRecord = record
},
// 删除
deleteData(val) {
let _this = this
this.$confirm({
content: _this.$t('ConfirmDelete'),
onOk() {
deleteAction('ota/otaBaCxList/delete', { id: val.id }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
} else {
_this.$message.warning(res.message)
}
})
}
})
},
//导出
handleExportManage() {
if (JSON.stringify(this.parameter) == '{}') {
this.parameter.info_id = this.infoId
this.parameter.menu_id = this.menuId
}
// console.log('menuId',this.menuId)
let dateName = moment(new Date()).format('YYYY-MM-DD HH-mm-ss')
let name = this.$route.query.infoNumber + ' ' + dateName + '.zip'
let dateName = moment(new Date()).format('YYYYMMDD')
let name = 'OTA' + this.$t('softwareversion') + ' ' + dateName + '.xlsx'
let query = {
exportName: this.$route.query.infoNumber + ' ' + dateName,
idList: this.selectedRowKeys.join(','),
@@ -352,12 +346,14 @@ export default {
})
},
onChange(value, dateString) {
if (this.queryParams.softwarereleasetime && this.queryParams.softwarereleasetime.length > 0) {
if (this.queryParam.releaseName && this.queryParam.releaseName.length > 0) {
let dateOne = moment(dateString[0]).format('YYYY-MM-DD')
let dateTwo = moment(dateString[1]).format('YYYY-MM-DD')
this.queryParams.softwarereleasetime = [dateOne, dateTwo]
this.queryParam.softwareIssueTimeStart = dateOne
this.queryParam.softwareIssueTimeEnd = dateTwo
} else {
this.queryParams.softwarereleasetime = []
this.queryParam.releaseName = []
// this.queryParamOne[item + '_name'] = []
}
},