Merge branch 'dev_2nd_LCYH' of http://git.hzwlsoft.com/laws-nio/laws-weilai into dev_2nd_LCYH

This commit is contained in:
yuekuo
2023-03-26 18:04:34 +08:00
11 changed files with 210 additions and 82 deletions
+5 -5
View File
@@ -1646,13 +1646,13 @@ module.exports = {
ifanupgrademayaffectvehiclesafety:'当执行升级可能影响车辆安全时应在升级执行过程中通过技术手段确保车辆安全',
iftheimplementationoftheupgradaffectsdrivingsafety:'若升级的执行影响驾驶安全至少应满足\n' +
'\n' +
'(a确保升级执行期间无法驾驶车辆\n' +
'(a)确保升级执行期间无法驾驶车辆\n' +
'\n' +
'(b)确保驾驶员不能使用任何可能影响车辆安全或成功执行升级的车辆功能',
ensurethatthevehicleisinasafecondition:'若升级失败或中断车辆能够恢复到以前的可用版本或确保车辆处于安全状态',
priortotheexecutionoftheupgrade:'在升级执行前应告知车辆用户升级信息告知的信息应包括\n' +
'\n' +
'(a升级目的\n' +
'(a)升级目的\n' +
'\n' +
'(b)车辆功能升级所实施的任何变更\n' +
'\n' +
@@ -1663,9 +1663,9 @@ module.exports = {
'(e)可能帮助车辆用户安全执行升级的任何指导信息',
afterperformingtheupgrade:'在执行升级后车辆应\n' +
'\n' +
'(a)告知车辆用户车辆升级的结果(成功或失败)\n' +
'(a)告知车辆用户车辆升级的结果(成功或失败)\n' +
'\n' +
'(b若升级成功告知车辆用户已实施的变更用户手册(如果适用)的任何相关更新',
'(b)若升级成功告知车辆用户已实施的变更用户手册(如果适用)的任何相关更新',
upgradepacketprotectionmeasures:'升级包保护措施',
otaupgradedsecuritymeasuresforvehicles:'车辆OTA升级安全措施',
authenticityandintegrityprotectionmechanism:'真实性完整性保护机制(可多选)',
@@ -1762,7 +1762,7 @@ module.exports = {
notifiestheuseroftheupgradesuccessorfailure:'告知用户升级成功或失败',
informimplementationchanges:'告知实施的变更',
allupdatestotheusermanualareinformed:'告知了对用户手册的全部更新内容',
usernotificationmode:'告知用户方式',
usernotificationmode:'告知用户方式(可多选)',
userinformstherelevantfile:'用户告知相关文件',
taskname:'任务名称',
updatereleasetime:'升级发布时间',
@@ -46,11 +46,11 @@
</span>
<!-- 升级前-->
<span slot="preupgrade" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')"></a-input>
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')"></a-input>
</span>
<!-- 升级后-->
<span slot="afterupgrade" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')"></a-input>
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')"></a-input>
</span>
<!-- 操作列-->
<span slot="operation" slot-scope="text,record">
@@ -27,11 +27,11 @@
</span>
<!-- 升级前-->
<span slot="preupgrade" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" v-model="record.sjqbgcs"></a-input>
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.sjqbgcs"></a-input>
</span>
<!-- 升级后-->
<span slot="afterupgrade" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" v-model="record.sjhbgcs"></a-input>
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.sjhbgcs"></a-input>
</span>
<span slot="nameoftheupgradedelectroniccontroller" slot-scope="text,record">
<a-input :placeholder="$t('pleaseEnter')" v-model="record.sjkzqmc" ></a-input>
@@ -12,71 +12,150 @@
</div>
<a-spin :spinning="confirmLoading">
<a-form-model class="formAdd" ref="ruleForm">
<h1 style='margin-left: 20%;'>{{$t('beforetheupgrade')}}</h1>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<span class="title-text-text" :title="$t('totalquantity')">{{$t('totalquantity')}}</span>
<span class="title-text-text" :title="$t('pgradepurpose')">{{$t('pgradepurpose')}}</span>
</div>
<a-form-model-item class="itemModel" prop="dutyTerritory">
<a-form-model-item class="itemModel" prop="sjmd">
<a-input class="box-input"
:disabled="disabled"
:placeholder="$t('PleaseSelect')"></a-input>
v-model='formInline.sjmd'
:placeholder="$t('pleaseEnter')"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('dateofproduction')">
{{$t('dateofproduction')}}</span>
<span class="title-text-text" :title="$t('vehiclefunctionalityasaresultofsoftwareupgradeactivities')">{{$t('vehiclefunctionalityasaresultofsoftwareupgradeactivities')}}</span>
</div>
<a-form-model-item class="itemModel" prop="dateofproduction">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('dateofproduction')"
@change="dateChange({db_field_name:'dateofproduction'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.dateofproduction"
:disabled="false"
style="width: 100%"/>
<a-form-model-item class="itemModel" prop="gxbh">
<a-input class="box-input"
:disabled="disabled"
v-model='formInline.gxbh'
:placeholder="$t('pleaseEnter')"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('VINcodelist')">
{{$t('VINcodelist')}}</span>
<span class="title-text-text" :title="$t('estimatedupgradeexecutionTime')">{{$t('estimatedupgradeexecutionTime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="VINcodelist">
<a-textarea :placeholder="$t('pleaseEnter')+$t('VINcodelist')"
v-model="formInline.VINcodelist"
:rows="4"/>
<a-form-model-item class="itemModel" prop="sjsj">
<a-input class="box-input"
:disabled="disabled"
v-model='formInline.sjsj'
:placeholder="$t('pleaseEnter')"></a-input>
</a-form-model-item>
<!-- <a-form-model-item class="itemModel" prop="VINcodelist">-->
<!-- <a-button type="primary" class="button-text"-->
<!-- @click="clickButtonToUpload('VINcodelist')">-->
<!-- {{ (formInline.VINcodelist === 'null' || formInline.VINcodelist === '' ||-->
<!-- formInline.VINcodelist == null) ? $t('clickUpload') : $t('viewUploadedFiles')-->
<!-- }}-->
<!-- </a-button>-->
<!-- </a-form-model-item>-->
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<!-- <span class="Required">*</span>-->
<span class="title-text-text"></span>
<span class="title-text-text" :title="$t('upgradeexecutionperiodasksifthevehicleisusable')">{{$t('upgradeexecutionperiodasksifthevehicleisusable')}}</span>
</div>
<a-form-model-item class="itemModel" prop="VINcodelist">
<a-button type="primary" class="button-text"
@click="clickButtonToUpload('VINcodelist')">
{{ (formInline.VINcodelist === 'null' || formInline.VINcodelist === '' ||
formInline.VINcodelist == null) ? $t('clickUpload') : $t('viewUploadedFiles')
<a-form-model-item class="itemModel" prop="sjky">
<a-input class="box-input"
:disabled="disabled"
v-model='formInline.sjky'
:placeholder="$t('pleaseEnter')"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<span class="title-text-text" :title="$t('vehiclefeaturesthatarenotavailableduringupgradeexecution')">{{$t('vehiclefeaturesthatarenotavailableduringupgradeexecution')}}</span>
</div>
<a-form-model-item class="itemModel" prop="sjbkygn">
<a-input class="box-input"
:disabled="disabled"
v-model='formInline.sjbkygn'
:placeholder="$t('pleaseEnter')"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<span class="title-text-text" :title="$t('vehicleusersafelyperformtheupgrade')">{{$t('vehicleusersafelyperformtheupgrade')}}</span>
</div>
<a-form-model-item class="itemModel" prop="zdxx">
<a-input class="box-input"
:disabled="disabled"
v-model='formInline.zdxx'
:placeholder="$t('pleaseEnter')"></a-input>
</a-form-model-item>
</div>
</a-col>
<h1 style='margin-left: 20%;'>{{$t('aftertheupgrade')}}</h1>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<span class="title-text-text" :title="$t('notifiestheuseroftheupgradesuccessorfailure')">{{$t('notifiestheuseroftheupgradesuccessorfailure')}}</span>
</div>
<a-form-model-item class="itemModel" prop="sjsfcg">
<a-radio-group v-model="formInline.sjsfcg">
<a-radio :value="1"> {{ $t('yes') }} </a-radio>
<a-radio :value="2"> {{ $t('not') }} </a-radio>
</a-radio-group>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<span class="title-text-text" :title="$t('informimplementationchanges')">{{$t('informimplementationchanges')}}</span>
</div>
<a-form-model-item class="itemModel" prop="gzbg">
<a-radio-group v-model="formInline.gzbg">
<a-radio :value="1"> {{ $t('yes') }} </a-radio>
<a-radio :value="2"> {{ $t('not') }} </a-radio>
</a-radio-group>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<span class="title-text-text" :title="$t('allupdatestotheusermanualareinformed')">{{$t('allupdatestotheusermanualareinformed')}}</span>
</div>
<a-form-model-item class="itemModel" prop="gzscnr">
<a-radio-group v-model="formInline.gzscnr">
<a-radio :value="1"> {{ $t('yes') }} </a-radio>
<a-radio :value="2"> {{ $t('not') }} </a-radio>
</a-radio-group>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<span class="title-text-text" :title="$t('usernotificationmode')">{{$t('usernotificationmode')}}</span>
</div>
<a-form-model-item class="itemModel" prop="gzyhfs">
<j-multi-select-tag class="box-input"
v-model="formInline.gzyhfs"
:placeholder="$t('PleaseSelect')"
:type="'select'"
:dictCode="'user_notification_mode'"
:triggerChange="false"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="24">
<div class="box-title-text-add">
<div class="title-text-add">
<span class="title-text-text" :title="$t('allupdatestotheusermanualareinformed')">{{$t('allupdatestotheusermanualareinformed')}}</span>
</div>
<a-form-model-item class="itemModel" prop="gzscnr">
<a-button type="primary" @click="clickButtonToUpload('xgwj')" v-model="formInline.xgwj">
{{ (formInline.xgwj === 'null' || formInline.xgwj === '' ||
formInline.xgwj == null) ? $t('uploadattachment') : $t('viewUploadedFiles')
}}
</a-button>
</a-form-model-item>
@@ -90,18 +169,21 @@
<a-button type="primary" style='width: 73px;margin-right: 50px' @click='last'>{{$t('last')}}</a-button>
<a-button type="primary" style='width: 73px' @click='next'>{{$t('next')}}</a-button>
</div>
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFile>
</div>
</template>
<script>
import { getAction, postAction, deleteAction,downloadFile } from '@/api/manage'
import ImportFile from '@/components/ImportFileData/index'
import uploadFile from '@/components/uploadFile/file'
import moment from 'moment'
export default {
name: 'basicInformation',
components:{
ImportFile
ImportFile,
uploadFile
},
data() {
return {
@@ -121,15 +203,18 @@ export default {
handleModule() {
downloadFile('ota/otaBaSjGgnrfs/exportTemplate', '用户告知内容及方式' + '.zip', {})
},
next(){
this.$emit('recordparametersdown')
},
last(){
this.$emit('recordparametersup')
},
dateChange(item) {
this.formInline[item.db_field_name] = this.formInline[item.db_field_name] ? moment(this.formInline[item.db_field_name]).format('YYYY-MM-DD') : ''
/** 上传文件的回调 */
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 }
this.$refs.ruleForm.clearValidate(['fileKey'])
},
clickButtonToUpload(item) {
this.$refs.uploadFile.perentHandleFunc()
@@ -143,6 +228,15 @@ export default {
}
})
},
next(){
this.$emit('recordparametersdown')
},
last(){
this.$emit('recordparametersup')
},
dateChange(item) {
this.formInline[item.db_field_name] = this.formInline[item.db_field_name] ? moment(this.formInline[item.db_field_name]).format('YYYY-MM-DD') : ''
},
}
}
</script>
@@ -150,7 +244,7 @@ export default {
<style lang="less" scoped>
@import'~@assets/less/common.less';
.box {
height:500px;
margin-bottom: 40px;
padding: 0 24px 24px 24px;
box-sizing: border-box;
}
@@ -162,14 +256,14 @@ export default {
}
.title-text-add {
width: 114px;
width: 440px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
//overflow: hidden;
//text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 42px;
@@ -132,7 +132,7 @@ export default {
columnshistory: [
{
title: this.$t('fillincontent'),
dataIndex: 'logContent',
dataIndex: 'content',
align: 'left',
ellipsis: true,
scopedSlots: { customRender: 'content' },
@@ -140,7 +140,7 @@ export default {
},
{
title: this.$t('module'),
dataIndex: 'remarks',
dataIndex: 'module',
align: 'left',
ellipsis: true,
width: 100,
@@ -148,7 +148,7 @@ export default {
},
{
title: this.$t('completedBy'),
dataIndex: 'createTime',
dataIndex: 'createBy',
align: 'left',
ellipsis: true,
width: 130
@@ -174,17 +174,16 @@ export default {
},
fillintherecordClick(){
this.visible = true
return
this.bussLogList()
},
bussLogList(val) {
let query = {
pageNo: this.pageNohistory,
pageSize: this.pageSizehistory,
paramsReportDetailId: this.paramsReportDetailId
otaId:localStorage.getItem('otaId')
}
this.loading = true
getAction('report/detailLog/page', query).then((res) => {
getAction('ota/otaBaCxTxjl/page', query).then((res) => {
if (res.success) {
this.dataSourcehistory = res.result.records
this.total = res.result.total
@@ -57,7 +57,7 @@
:disabled="disabled"
class="box-input"
:placeholder="$t('pleaseEnter')"
v-model="form.djbh">
v-model.trim="form.djbh">
</a-input>
</a-form-model-item>
</div>
@@ -243,7 +243,18 @@ import { message } from 'ant-design-vue'
importZipUrl: '/ota/otaBaCxJbxx/importData',//导入
},
form:{
txzd:''
cxmb:undefined,
txzd:'',
djbh:'',
qymc:'',
cplb:undefined,
cpsb:'',
ggpc:'',
cpmc:'',
cpxh:'',
dllx1:undefined,
dllx2:undefined,
cdotasj:'',
},
projectNameList1:['传统动力汽车','节能汽车','新能源汽车','其他'],
projectNameList2:[],
@@ -355,6 +366,7 @@ import { message } from 'ant-design-vue'
postAction('/ota/otaBaCxJbxx/add',{ otaId:localStorage.getItem('otaId'),...this.form}).then( res => {
if(res.code == 200){
localStorage.setItem('otaId', res.result.otaId)
this.$message.success(this.$t('SavedSuccessfully'))
}
})
}
@@ -22,7 +22,7 @@
style="margin-bottom: 20px"
>
<span slot="functionname" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" v-model="record.gnmc" :max-length="500"></a-input>
<a-input :placeholder="$t('pleaseEnter')" v-model="record.gnmc" :max-length="500"></a-input>
</span>
<!-- 配置情况-->
<span slot="configuration" slot-scope="text,record" >
@@ -50,13 +50,13 @@
</span>
<!-- 技术参数-->
<span slot="technicalparameters" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" v-model="record.sjggcs" :max-length="500"></a-input>
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.sjggcs" :max-length="500"></a-input>
</span>
<span slot="functiondescription" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" v-model="record.gnms" :max-length="500"></a-input>
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.gnms" :max-length="500"></a-input>
</span>
<span slot="applicationconditions" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" v-model="record.sytj" :max-length="500"></a-input>
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.sytj" :max-length="500"></a-input>
</span>
<span slot="functiondeelectronicscription" slot-scope="text,record">
<a-input :placeholder="$t('pleaseEnter')" v-model="record.kzqmc" :max-length="500"></a-input>
@@ -91,8 +91,11 @@
<a-button @click="clickButtonToUpload(fileList)" type="primary"> {{ (fileList === 'null' || fileList === '' ||
fileList == null) ? $t('clickUpload') : $t('viewUploadedFiles')
}}</a-button>
<p>注:附件包括测试项目清单、测试报告.测试标准或技术规范</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;支持doc/docx/pdf格式,大小50M以内</p>
<div style='margin-top: 20px'>
<p>注:附件包括测试项目清单、测试报告.测试标准或技术规范</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;支持doc/docx/pdf格式,大小50M以内</p>
</div>
</div>
<div class="bootom-button">
@@ -363,6 +366,7 @@ import ImportFile from '@/components/ImportFileData/index'
save(){
postAction('/ota/otaBaCxKsjjsmccs/add',{otaId:localStorage.getItem('otaId'),list:this.dataSource,fj:this.fileList}).then(res =>{
console.log(res);
this.$message.success(this.$t('SavedSuccessfully'))
})
},
last(){
@@ -427,4 +431,8 @@ import ImportFile from '@/components/ImportFileData/index'
::v-deep .ant-table-row-cell-ellipsis .ant-table-column-title {
white-space: pre-wrap!important;
}
::v-deep .ant-table-row:first-child {
background: #fff !important;
opacity: 3.9 !important;
}
</style>
@@ -39,6 +39,7 @@ export default {
confirmLoading: false,
disabled: false,
queryParam:{},
flag:'',
rules:{
sjbbhcs:[
{ max: 500,message:'最多只能添加500个字符',trigger:'blur'}
@@ -67,8 +68,10 @@ export default {
save(){
this.$refs.ruleForm.validate( valid =>{
if (valid) {
this.flag = 1
postAction('/ota/otaBaCxQt/add',{otaId:localStorage.getItem('otaId'),...this.queryParam}).then(res=>{
console.log(res);
this.$message.success(this.$t('SavedSuccessfully'))
})
} else {
return false;
@@ -81,10 +84,13 @@ export default {
},
submit(){
this.save()
this.$router.push({
path: '/vehicleregistration',
query: {}
})
if(this.flag == 1){
this.$router.push({
path: '/vehicleregistration',
query: {}
})
}
},
},
@@ -949,6 +949,7 @@ export default {
kzq:this.dataSourceList
}).then( res => {
console.log(res);
this.$message.success(this.$t('SavedSuccessfully'))
})
},
@@ -244,6 +244,7 @@ import ImportFile from '@/components/ImportFileData/index'
obj.zmclList = this.fileList.uploadName
postAction('/ota/otaBaCxAqcs/add',obj).then(res =>{
console.log(res);
this.$message.success(this.$t('SavedSuccessfully'))
})
},
last(){
@@ -21,7 +21,7 @@
style="margin-bottom: 20px"
>
<span slot="sys" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" v-model="record.xtlb" :max-length="500"></a-input>
<a-input :placeholder="$t('pleaseEnter')" v-model="record.xtlb" :max-length="500"></a-input>
</span>
<!-- 可升级-->
<span slot="systemclass" slot-scope="text,record">
@@ -32,7 +32,7 @@
</span>
<!-- 技术参数-->
<span slot="technicalparameters" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" v-model="record.sjbgcs" :max-length="500"></a-input>
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.sjbgcs" :max-length="500"></a-input>
</span>
<!-- 上传附件-->
<span slot="architecturetopologydiagram" slot-scope="text,record">
@@ -87,8 +87,10 @@
{{ (fileList === 'null' || fileList === '' ||
fileList == null) ? $t('uploadattachment') : $t('viewUploadedFiles')
}}</a-button>
<p>注:附件包括测试项目清单、测试报告.测试标准或技术规范</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;支持doc/docx/pdf格式,大小50M以内</p>
<div style='margin-top: 20px'>
<p>注:附件包括测试项目清单、测试报告.测试标准或技术规范</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;支持doc/docx/pdf格式,大小50M以内</p>
</div>
</div>
<div class="bootom-button">
@@ -456,6 +458,7 @@ import uploadFileOta from '@/components/uploadFileOta/file'
save(){
postAction('/ota/otaBaCxKsjxtmccs/add',{otaId:localStorage.getItem('otaId'),list:this.dataSource,fj:this.fileList}).then(res => {
console.log(res);
this.$message.success(this.$t('SavedSuccessfully'))
})
}
}
@@ -481,4 +484,8 @@ import uploadFileOta from '@/components/uploadFileOta/file'
::v-deep .ant-table-row-cell-ellipsis .ant-table-column-title {
white-space: pre-wrap!important;
}
::v-deep .ant-table-row:first-child {
background: #fff !important;
opacity: 3.9 !important;
}
</style>