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

This commit is contained in:
wangzhijiang
2023-03-27 16:08:35 +08:00
24 changed files with 427 additions and 333 deletions
+2
View File
@@ -1719,4 +1719,6 @@ module.exports = {
note:'Note: The attachment includes the list of test items and test report. Test standard or technical specification', note:'Note: The attachment includes the list of test items and test report. Test standard or technical specification',
format:'It supports doc/docx/pdf format and is less than 50M in size', format:'It supports doc/docx/pdf format and is less than 50M in size',
cantTransferToYourself:"Can't transfer to yourself", cantTransferToYourself:"Can't transfer to yourself",
theDataYouInitiate:'The data you selected does not meet the process initiation criteria. Please recheck and initiate',
dataWithProcessReleasedCannotBeReset:'Data with a process status of list to be released cannot be reset',
} }
+15 -11
View File
@@ -76,6 +76,8 @@ module.exports = {
numericalValue: '数值', numericalValue: '数值',
yes: '是', yes: '是',
not: '否', not: '否',
have:'有',
notOnlyRz: '否', notOnlyRz: '否',
EnterValue: '请输入值', EnterValue: '请输入值',
SavedQuery: '保存的查询', SavedQuery: '保存的查询',
@@ -1595,11 +1597,11 @@ module.exports = {
electroniccontrollertype:'电子控制器型号', electroniccontrollertype:'电子控制器型号',
hardwareversioninformation:'硬件版本信息', hardwareversioninformation:'硬件版本信息',
initialsoftwareversionnumber:'初始软件版本号', initialsoftwareversionnumber:'初始软件版本号',
inflammatorydata:'初始软件包的完整性验证数据', inflammatorydata:'初始软件包的完整性验证数据(需统一哈希算法并说明,例如SM3:d192e819d6990624f40e3585106ee134)',
environmentalprotection:'升级是否影响整车安全啊、节能、环保、防盗等性能', environmentalprotection:'升级是否影响整车安全、节能、环保、防盗等性能',
operatingsystemtype:'操作系统类型', operatingsystemtype:'操作系统类型',
operatingsystemmanufacturer:'操作系统生产企业', operatingsystemmanufacturer:'操作系统生产企业',
operatingsystemversion:'操作系统版本号', operatingsystemversion:'软件版本号',
addcontroller:'添加控制器', addcontroller:'添加控制器',
addsystem:'添加系统', addsystem:'添加系统',
functionname:'功能名称', functionname:'功能名称',
@@ -1616,7 +1618,7 @@ module.exports = {
thetargetvehicleofthisupgrade:'本次升级的目标车辆', thetargetvehicleofthisupgrade:'本次升级的目标车辆',
upgradeimpactassessment:'升级影响评估', upgradeimpactassessment:'升级影响评估',
upgradehavechanged:'本次升级的系统名称与参数变化', upgradehavechanged:'本次升级的系统名称与参数变化',
auxiliaryupgradehavechanged:'本次升级的架势辅助功能名称与参数变化', auxiliaryupgradehavechanged:'本次升级的驾驶辅助功能名称与参数变化',
usernotification:'用户告知内容及方式', usernotification:'用户告知内容及方式',
informationaboutotherupgradetasks:'其他升级任务信息', informationaboutotherupgradetasks:'其他升级任务信息',
totalquantity:'总数量(辆)', totalquantity:'总数量(辆)',
@@ -1635,7 +1637,7 @@ module.exports = {
Taskconfirmationresult:'任务确认结果', Taskconfirmationresult:'任务确认结果',
Compliancetaskhandling:'符合性任务办理', Compliancetaskhandling:'符合性任务办理',
resultofhandling:'处理结果', resultofhandling:'处理结果',
networksecurityrequirements:'网络安全要求', networksecurityrequirements:'激光雷达',
upgradefunctionrequirements:'升级功能要求', upgradefunctionrequirements:'升级功能要求',
usernotificationrequirement:'用户告知要求', usernotificationrequirement:'用户告知要求',
ineffectiveupgrades:'应保护升级包的真实性和完整性,以合理地防止其受到损害,并合理地防止无效升级', ineffectiveupgrades:'应保护升级包的真实性和完整性,以合理地防止其受到损害,并合理地防止无效升级',
@@ -1666,7 +1668,7 @@ module.exports = {
'(a)告知车辆用户车辆升级的结果(成功或失败);\n' + '(a)告知车辆用户车辆升级的结果(成功或失败);\n' +
'\n' + '\n' +
'(b)若升级成功,告知车辆用户已实施的变更,用户手册(如果适用)的任何相关更新。', '(b)若升级成功,告知车辆用户已实施的变更,用户手册(如果适用)的任何相关更新。',
upgradepacketprotectionmeasures:'升级包保护措施', upgradepacketprotectionmeasures:'软件版本(集)识别与存储',
otaupgradedsecuritymeasuresforvehicles:'车辆OTA升级安全措施', otaupgradedsecuritymeasuresforvehicles:'车辆OTA升级安全措施',
authenticityandintegrityprotectionmechanism:'真实性、完整性保护机制(可多选)', authenticityandintegrityprotectionmechanism:'真实性、完整性保护机制(可多选)',
failsafmechanism:'防失效保护机制(可多选)', failsafmechanism:'防失效保护机制(可多选)',
@@ -1696,7 +1698,7 @@ module.exports = {
vehiclecommunicationsystem:'车载通信系统', vehiclecommunicationsystem:'车载通信系统',
driversurveillancecamera:'驾驶员监控摄像头', driversurveillancecamera:'驾驶员监控摄像头',
drivermonitoringinfraredsensor:'驾驶员监控红外传感器', drivermonitoringinfraredsensor:'驾驶员监控红外传感器',
vehiclesatellitepositioningequipment:'车载卫星定位设备', vehiclesatellitepositioningequipment:'车载卫星定位设备(接收卫星信号及辅助定位信号的装置,PPP/GNSS/RTK)',
inertialnavigationsystem:'惯性导航系统', inertialnavigationsystem:'惯性导航系统',
wheelspeedmeter:'轮速计', wheelspeedmeter:'轮速计',
highprecisionmap:'高精度地图', highprecisionmap:'高精度地图',
@@ -1733,7 +1735,7 @@ module.exports = {
upgradeactivitiesaffectvehiclesafety:'升级活动是否影响车辆安全', upgradeactivitiesaffectvehiclesafety:'升级活动是否影响车辆安全',
upgradeactivityprovidesuserconfirmationoptions:'升级活动是否提供用户确认选项', upgradeactivityprovidesuserconfirmationoptions:'升级活动是否提供用户确认选项',
upgradepackagetest:'升级包测试(可多选)', upgradepackagetest:'升级包测试(可多选)',
reliabilityofonlineupgradeactivities:'是杏已验证确认在线升级活动的安全性和可靠性', reliabilityofonlineupgradeactivities:'是否已验证确认在线升级活动的安全性和可靠性',
adjustmentofchangedBulletinparameters:'已变更《公告》参数的对应调整(如有)', adjustmentofchangedBulletinparameters:'已变更《公告》参数的对应调整(如有)',
preupgrade:'升级前', preupgrade:'升级前',
afterupgrade:'升级后', afterupgrade:'升级后',
@@ -1743,9 +1745,9 @@ module.exports = {
afterthesoftwareversionupgraded:'软件版本号升级后', afterthesoftwareversionupgraded:'软件版本号升级后',
beforetheOSversionupgraded:'操作系统版本号升级前', beforetheOSversionupgraded:'操作系统版本号升级前',
aftertheoperatingsystemversionupgraded:'操作系统版本号升级后', aftertheoperatingsystemversionupgraded:'操作系统版本号升级后',
initialpackageforintegrityinflammatorydata:'初始软件包的完整性验证数据', initialpackageforintegrityinflammatorydata:'初始软件包的完整性验证数据(需统一哈希算法并说明,例如SM3:d192e819d6990624f40e3585106ee134)',
upgradepackageintegrityverificationdata:'升级包完整性验证数据', upgradepackageintegrityverificationdata:'升级包完整性验证数据(需统一哈希算法并说明,例如SM3:d192e819d6990624f40e3585106ee134)',
upgradepackagesize:'升级包大小', upgradepackagesize:'升级包大小(MB)',
differentialupgradeornot:'是否差分升级', differentialupgradeornot:'是否差分升级',
upgradedestinationype:'升级目的类型', upgradedestinationype:'升级目的类型',
functionalchangedescription:'功能变更描述', functionalchangedescription:'功能变更描述',
@@ -1819,4 +1821,6 @@ module.exports = {
note:'注:附件包括测试项目清单、测试报告.测试标准或技术规范', note:'注:附件包括测试项目清单、测试报告.测试标准或技术规范',
format:'支持doc/docx/pdf格式,大小50M以内', format:'支持doc/docx/pdf格式,大小50M以内',
cantTransferToYourself:"不能转办给自己", cantTransferToYourself:"不能转办给自己",
theDataYouInitiate:'您所选的数据,均不符合流程发起条件,请重新检查后发起',
dataWithProcessReleasedCannotBeReset:'流程状态为清单待发布的数据不能被重置',
} }
+5 -5
View File
@@ -34,7 +34,7 @@
export default { export default {
name: 'file', name: 'file',
props: ['disableds', 'disabled', 'thisFileUploadUrl','accept', 'readonly', 'thisFileType', 'isUploadFile', 'isMultiple', 'restrictUploads', 'Uploadable'], props: ['disableds', 'disabled', 'thisFileUploadUrl','acceptcode', 'readonly', 'thisFileType', 'isUploadFile', 'isMultiple', 'restrictUploads', 'Uploadable'],
data() { data() {
return { return {
visible: false, visible: false,
@@ -89,13 +89,13 @@
console.log(file) console.log(file)
this.fileTypeSatus = true this.fileTypeSatus = true
//根据格式拦截 //根据格式拦截
if(this.accept){ if(this.acceptcode){
let fileNames = file.name.split('.') let fileNames = file.name.split('.')
let fileType = fileNames[fileNames.length - 1].toLocaleLowerCase() let fileType = fileNames[fileNames.length - 1].toLocaleLowerCase()
let extList = this.accept.split(',') let extList = this.acceptcode.split(',')
if (!extList.find((item) => item == fileType)) { if (!extList.find((item) => item == fileType)) {
this.$message.error(this.$t('uploadOnly') + this.accept + this.$t('type')) this.$message.error(this.$t('uploadOnly') + this.acceptcode + this.$t('type'))
reject(false) return false
} }
} }
if (this.isMultiple) { if (this.isMultiple) {
+172 -163
View File
@@ -9,7 +9,7 @@
name="file" name="file"
:file-list="myfileList" :file-list="myfileList"
:multiple="true" :multiple="true"
:action="uploadAction+'?state='+2+'&cut='+cut" :action="actionUrl"
:headers="headers" :headers="headers"
@preview="preview" @preview="preview"
:before-upload="beforeUpload" :before-upload="beforeUpload"
@@ -26,127 +26,118 @@
</template> </template>
<script> <script>
import Vue from 'vue' import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types' import { ACCESS_TOKEN } from '@/store/mutation-types'
import { getAction, postAction, downFile, downloadFile } from '@/api/manage' import { getAction, postAction, downFile, downloadFile } from '@/api/manage'
import { Base64 } from 'js-base64' import { Base64 } from 'js-base64'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name: 'file', name: 'file',
props: ['disableds', 'disabled', 'thisFileUploadUrl', 'readonly', 'thisFileType', 'isUploadFile','detailDate','accept'], props: ['disableds', 'disabled', 'thisFileUploadUrl', 'readonly', 'thisFileType', 'isUploadFile', 'detailDate', 'accept', 'isParameter'],
data() { data() {
return { return {
visible: false, visible: false,
title: this.$t('clickUpload'), title: this.$t('clickUpload'),
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload', uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
state: undefined, state: undefined,
myuploadAction: window._CONFIG['domianURL'] + this.thisFileUploadUrl, myuploadAction: window._CONFIG['domianURL'] + this.thisFileUploadUrl,
upDataList: [], upDataList: [],
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download', downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
fileList: [], fileList: [],
myfileList: [], myfileList: [],
isLoding: false, isLoding: false,
cut: '' cut: ''
}
},
created() {
const token = Vue.ls.get(ACCESS_TOKEN)
this.headers = { 'X-Access-Token': token }
this.containerId = 'container-ty-' + new Date().getTime()
},
mounted() {
// console.log(this.detailDate,'lldetailDate')
let long = localStorage.getItem('language')
this.cut = ''
if (long && long == 'zh-cn') {
this.cut = 'cn'
} else if (long && long == 'en-us') {
this.cut = 'en'
}
// console.log(this.thisFileType,this.thisFileSize,this.thisFileUploadUrl);
},
methods: {
...mapGetters(['userInfo']),
perentHandleFunc(data) {
this.myfileList = data
if (data && data.length > 0) {
this.myfileList.forEach((res) => {
res.name = res.fileName
res.uid = res.id
})
} else {
this.myfileList = []
} }
}, },
beforeUpload(file) { computed: {
actionUrl() {
console.log(file) if (this.isParameter) {
// let thisFileType = this.thisFileType.replace(/\s+/g, ""); return this.uploadAction + '?state=' + 3 + '&cut=' + this.cut
this.fileTypeSatus = true } else {
//TODO 客户要求不拦截文件 return this.uploadAction + '?state=' + 2 + '&cut=' + this.cut
// if(file.type){
// if (thisFileType.indexOf(file.type) != -1) {
// this.fileTypeSatus = true;
// }else{
// this.fileTypeSatus = false;
// }
// }else{
// if(file.name.slice(file.name.length - 3 , file.name.length) == 'rar'){
// this.fileTypeSatus = true
// }else if(file.type == 'application/x-zip-compressed'){
// this.fileTypeSatus = true
// }else{
// this.fileTypeSatus = false;
// }
// }
this.$message.destroy()
},
remove() {
this.fileTypeSatus = true
},
mypreview(item) {
let url = window._CONFIG['domianPreviewURL'] + '?url=' + encodeURIComponent(this.downLoadFileUrl + '/' + item.ext1)
window.open(url, '_blank')
},
handleChange(info) {
if(info.fileList.length > 1) {
this.$message.warning(this.$t('onlyOnefileUploaded'))
return
}
let { file } = info
const status = info.file.status
info.fileList.forEach((val, index) => {
if (val.response && !val.response.result) {
this.$message.error(val.response.message)
info.fileList.splice(index, 1)
} }
}) }
if (status === 'error') { },
this.$emit('uploadSuccess', this.fileList) created() {
const token = Vue.ls.get(ACCESS_TOKEN)
this.headers = { 'X-Access-Token': token }
this.containerId = 'container-ty-' + new Date().getTime()
},
mounted() {
// console.log(this.detailDate,'lldetailDate')
let long = localStorage.getItem('language')
this.cut = ''
if (long && long == 'zh-cn') {
this.cut = 'cn'
} else if (long && long == 'en-us') {
this.cut = 'en'
}
// console.log(this.thisFileType,this.thisFileSize,this.thisFileUploadUrl);
},
methods: {
...mapGetters(['userInfo']),
perentHandleFunc(data) {
this.myfileList = data
if (data && data.length > 0) {
this.myfileList.forEach((res) => {
res.name = res.fileName
res.uid = res.id
})
} else {
this.myfileList = []
}
},
beforeUpload(file) {
console.log(file)
// let thisFileType = this.thisFileType.replace(/\s+/g, "");
this.fileTypeSatus = true
//TODO 客户要求不拦截文件
// if(file.type){
// if (thisFileType.indexOf(file.type) != -1) {
// this.fileTypeSatus = true;
// }else{
// this.fileTypeSatus = false;
// }
// }else{
// if(file.name.slice(file.name.length - 3 , file.name.length) == 'rar'){
// this.fileTypeSatus = true
// }else if(file.type == 'application/x-zip-compressed'){
// this.fileTypeSatus = true
// }else{
// this.fileTypeSatus = false;
// }
// }
this.$message.destroy() this.$message.destroy()
this.$message.error(`${info.file.name}` + this.$t('FileUploadFailed')) },
} else if (status === 'removed') { remove() {
this.myfileList = info.fileList this.fileTypeSatus = true
this.fileList = [] },
this.myfileList.forEach((res) => { mypreview(item) {
if (res.response) { let url = window._CONFIG['domianPreviewURL'] + '?url=' + encodeURIComponent(this.downLoadFileUrl + '/' + item.ext1)
this.fileList.push(res.response.result) window.open(url, '_blank')
} else { },
this.fileList.push(res) handleChange(info) {
if (info.fileList.length > 1) {
this.$message.warning(this.$t('onlyOnefileUploaded'))
return
}
let { file } = info
const status = info.file.status
info.fileList.forEach((val, index) => {
if (val.response && !val.response.result) {
this.$message.error(val.response.message)
info.fileList.splice(index, 1)
} }
}) })
this.$emit('uploadSuccess', this.fileList) if (status === 'error') {
if (this.myfileList.length > 0) { this.$emit('uploadSuccess', this.fileList)
this.$message.destroy() this.$message.destroy()
this.$message.success(`${info.file.name}` + this.$t('DeletedSuccessfully')) this.$message.error(`${info.file.name}` + this.$t('FileUploadFailed'))
} } else if (status === 'removed') {
} else if (status === 'done') {
this.fileList = []
this.myfileList = info.fileList
if (info.fileList.length > 20) {
info.fileList.splice(20)
this.myfileList = info.fileList this.myfileList = info.fileList
this.fileList = []
this.myfileList.forEach((res) => { this.myfileList.forEach((res) => {
if (res.response) { if (res.response) {
this.fileList.push(res.response.result) this.fileList.push(res.response.result)
@@ -155,66 +146,84 @@ export default {
} }
}) })
this.$emit('uploadSuccess', this.fileList) this.$emit('uploadSuccess', this.fileList)
this.$message.destroy() if (this.myfileList.length > 0) {
this.$message.error(this.$t('UploadMost')) this.$message.destroy()
return this.$message.success(`${info.file.name}` + this.$t('DeletedSuccessfully'))
}
this.myfileList.forEach((res) => {
if (res.response) {
this.fileList.push(res.response.result)
} else {
this.fileList.push(res)
} }
}) } else if (status === 'done') {
this.$emit('uploadSuccess', this.fileList) this.fileList = []
if (this.myfileList.length > 0) { this.myfileList = info.fileList
this.$message.destroy() if (info.fileList.length > 20) {
if (file.response.success) { info.fileList.splice(20)
this.$message.success(`${info.file.name}` + this.$t('FileUploadedSuccessfully')) this.myfileList = info.fileList
this.myfileList.forEach((res) => {
if (res.response) {
this.fileList.push(res.response.result)
} else {
this.fileList.push(res)
}
})
this.$emit('uploadSuccess', this.fileList)
this.$message.destroy()
this.$message.error(this.$t('UploadMost'))
return
} }
this.myfileList.forEach((res) => {
if (res.response) {
this.fileList.push(res.response.result)
} else {
this.fileList.push(res)
}
})
this.$emit('uploadSuccess', this.fileList)
if (this.myfileList.length > 0) {
this.$message.destroy()
if (file.response.success) {
this.$message.success(`${info.file.name}` + this.$t('FileUploadedSuccessfully'))
}
}
} else if (status === 'uploading') {
this.myfileList = info.fileList
// this.$message.success(`${info.file.name} 文件上传成功。`);
} }
} else if (status === 'uploading') { },
this.myfileList = info.fileList resetFileList() {
// this.$message.success(`${info.file.name} 文件上传成功。`); this.myfileList = []
} this.fileList = []
}, },
resetFileList() { preview(file) {
this.myfileList = [] let fileQuery = file.response ? file.response.result : file
this.fileList = [] let fileName = fileQuery.fileName
}, let index1 = fileName.lastIndexOf('.')
preview(file) { let index2 = fileName.length
let fileQuery = file.response ? file.response.result : file let fileSuffix = fileName.substring(index1, index2)
let fileName = fileQuery.fileName // if (fileSuffix === '.pdf') {
let index1 = fileName.lastIndexOf('.') // window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + fileQuery.id+'&userName='+this.userInfo().username))
let index2 = fileName.length // } else if (fileSuffix === '.docx') {
let fileSuffix = fileName.substring(index1, index2) // let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
// if (fileSuffix === '.pdf') { // window.open(url, '_blank')
// window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + fileQuery.id+'&userName='+this.userInfo().username)) // } else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
// } else if (fileSuffix === '.docx') { // let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
// let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix) // window.open(url, '_blank')
// window.open(url, '_blank') // } else {
// } else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
// let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
// window.open(url, '_blank')
// } else {
downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.id }) downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.id })
// } // }
}
} }
} }
}
</script> </script>
<style> <style>
.ant-upload-list-item-name { .ant-upload-list-item-name {
color: rgba(0, 0, 0, 0.65) !important; color: rgba(0, 0, 0, 0.65) !important;
} }
.action-upload { .action-upload {
font-size: 67px; font-size: 67px;
color: #c0c4cc; color: #c0c4cc;
} }
.uploadFile { .uploadFile {
} }
</style> </style>
+11 -1
View File
@@ -34,7 +34,7 @@
export default { export default {
name: 'file', name: 'file',
props: ['disableds', 'disabled', 'thisFileUploadUrl', 'readonly', 'thisFileType', 'isUploadFile', 'isMultiple', 'restrictUploads', 'Uploadable'], props: ['disableds', 'disabled','acceptcode', 'thisFileUploadUrl', 'readonly', 'thisFileType', 'isUploadFile', 'isMultiple', 'restrictUploads', 'Uploadable'],
data() { data() {
return { return {
visible: false, visible: false,
@@ -88,6 +88,16 @@
// let thisFileType = this.thisFileType.replace(/\s+/g, ""); // let thisFileType = this.thisFileType.replace(/\s+/g, "");
console.log(file) console.log(file)
this.fileTypeSatus = true this.fileTypeSatus = true
//根据格式拦截
if(this.acceptcode){
let fileNames = file.name.split('.')
let fileType = fileNames[fileNames.length - 1].toLocaleLowerCase()
let extList = this.acceptcode.split(',')
if (!extList.find((item) => item == fileType)) {
this.$message.error(this.$t('uploadOnly') + this.acceptcode + this.$t('type'))
return false
}
}
if (this.isMultiple) { if (this.isMultiple) {
if ((this.myfileList && this.myfileList.length == 1) || this.myfileList && this.myfileList.length > 1) { if ((this.myfileList && this.myfileList.length == 1) || this.myfileList && this.myfileList.length > 1) {
this.$message.warning(this.$t('onlyOnefileUploaded')) this.$message.warning(this.$t('onlyOnefileUploaded'))
@@ -41,7 +41,7 @@
:getCalendarContainer="(trigger) => trigger.parentNode" :getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.batjsj" v-model="formInline.batjsj"
:disabled="false" :disabled="false"
style="width: 100%"/> style="width: 90%"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
@@ -52,9 +52,10 @@
<span class="title-text-text" :title="$t('remarks')"> <span class="title-text-text" :title="$t('remarks')">
{{$t('remarks')}}</span> {{$t('remarks')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="remarks"> <a-form-model-item class="itemModel" prop="bz">
<a-textarea :placeholder="$t('pleaseEnter')+$t('remarks')" <a-textarea :placeholder="$t('pleaseEnter')+$t('remarks')"
v-model="formInline.bz" v-model="formInline.bz"
style="width: 90%"
:rows="4"/> :rows="4"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
@@ -95,6 +96,9 @@ export default {
trigger: 'change' trigger: 'change'
} }
], ],
bz: [
{ min: 1, max: 500, message: this.$t('cantExeed') + '500' + this.$t('characters'), trigger: 'blur' }
]
// listConfirmation: [ // listConfirmation: [
// { // {
// required: true, // required: true,
@@ -154,6 +158,11 @@ export default {
edit(row) { edit(row) {
if(row instanceof Array){ if(row instanceof Array){
this.ids = row.join(',') this.ids = row.join(',')
this.formInline = {
bazt:undefined,
batjsj:'',
bz:'',
}
}else{ }else{
this.formInline.bazt = row.bazt ? row.bazt : undefined this.formInline.bazt = row.bazt ? row.bazt : undefined
this.formInline.batjsj = row.batjsj this.formInline.batjsj = row.batjsj
@@ -189,7 +198,7 @@ export default {
}, },
handleCancel() { handleCancel() {
this.formInline = { this.formInline = {
bazt:'', bazt:undefined,
batjsj:'', batjsj:'',
bz:'',} bz:'',}
this.ids = '' this.ids = ''
@@ -274,7 +283,7 @@ export default {
.box-input { .box-input {
display: inline-block; display: inline-block;
height: 38px; height: 38px;
width: 100%; width: 90%;
} }
.itemModel { .itemModel {
@@ -111,7 +111,7 @@
<div v-has="'regulatoryAndTechnicalAssessment:batchDelete'" <div v-has="'regulatoryAndTechnicalAssessment:batchDelete'"
class="operator-text"> class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" <ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true"
:accept="'.zip'"/> :accept="'.zip'" @getList="getList"/>
</div> </div>
<div @click="handleModule" <div @click="handleModule"
v-has="'regulatoryAndTechnicalAssessment:batchDelete'" v-has="'regulatoryAndTechnicalAssessment:batchDelete'"
@@ -235,7 +235,7 @@ export default {
], ],
columns: [ columns: [
{ {
title: this.$t('registrationnumber'), title: this.$t('upgraderegistrationnumber'),
align: 'left', align: 'left',
dataIndex: 'cpdjbh', dataIndex: 'cpdjbh',
ellipsis: true, ellipsis: true,
@@ -3,7 +3,7 @@
<div class="box"> <div class="box">
<div class="table-operator"> <div class="table-operator">
<div class="operator-text"> <div class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" /> <ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div> </div>
<div @click='handleModule' class="operator-text"> <div @click='handleModule' class="operator-text">
<a-icon type="download"/> <a-icon type="download"/>
@@ -43,18 +43,13 @@
<span slot="upgradetheelectroniccontrollerinvolved" slot-scope="text,record"> <span slot="upgradetheelectroniccontrollerinvolved" slot-scope="text,record">
<a-input :placeholder="$t('pleaseEnter')" :title="$t('ifNot')" v-model="record.sjsjkzq"></a-input> <a-input :placeholder="$t('pleaseEnter')" :title="$t('ifNot')" v-model="record.sjsjkzq"></a-input>
</span> </span>
<span slot="functiondescription" slot-scope="text,record">
<a-input :placeholder="$t('pleaseEnter')" :title="$t('ifNot')" v-model="record.gnbgms"></a-input>
</span>
<span slot="applicationconditions" slot-scope="text,record">
<a-input :placeholder="$t('pleaseEnter')" :title="$t('ifNot')" v-model="record.sytjbg"></a-input>
</span>
<!-- 操作列--> <!-- 操作列-->
<span slot="operation" slot-scope="text,record"> <span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="addlineAtBot">{{$t('add')}}</a> <a class="text-operation" @click="addlineAtBot">{{$t('add')}}</a>
<a class="text-operation" @click="deleteData(record)">{{$t('delete')}}</a> <a class="text-operation" @click="deleteData(record)" v-if="dataSource.length > 1">{{$t('delete')}}</a>
</span> </span>
</a-table> </a-table>
<div> <div>
@@ -155,23 +150,6 @@ export default {
width: 170, width: 170,
scopedSlots: { customRender: 'upgradetheelectroniccontrollerinvolved' }, scopedSlots: { customRender: 'upgradetheelectroniccontrollerinvolved' },
}, },
{
title: this.$t('functiondescription'),
align: 'left',
dataIndex: 'functiondescription',
ellipsis: true,
width: 170,
scopedSlots: { customRender: 'functiondescription' },
},
{
title: this.$t('applicationconditions'),
align: 'left',
dataIndex: 'applicationconditions',
ellipsis: true,
width: 170,
scopedSlots: { customRender: 'applicationconditions' },
},
{ {
title: this.$t('operation'), title: this.$t('operation'),
align: 'left', align: 'left',
@@ -3,7 +3,7 @@
<div class="box"> <div class="box">
<div class="table-operator"> <div class="table-operator">
<div class="operator-text"> <div class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" /> <ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div> </div>
<div @click='handleModule' class="operator-text"> <div @click='handleModule' class="operator-text">
<a-icon type="download"/> <a-icon type="download"/>
@@ -79,6 +79,7 @@
formInline.VINcodelist == null) ? $t('clickUpload') : $t('viewUploadedFiles') formInline.VINcodelist == null) ? $t('clickUpload') : $t('viewUploadedFiles')
}} }}
</a-button> </a-button>
<p>支持cxv格式,大下20M以内,数量1-10个</p>
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFile> <uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFile>
</a-form-model-item> </a-form-model-item>
</div> </div>
@@ -3,7 +3,7 @@
<div class="box"> <div class="box">
<div class="table-operator"> <div class="table-operator">
<div class="operator-text"> <div class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" /> <ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div> </div>
<div @click='handleModule' class="operator-text"> <div @click='handleModule' class="operator-text">
<a-icon type="download"/> <a-icon type="download"/>
@@ -63,7 +63,7 @@
<!-- 操作列--> <!-- 操作列-->
<span slot="operation" slot-scope="text,record"> <span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="addlineAtBot">{{$t('addcontroller')}}</a> <a class="text-operation" @click="addlineAtBot">{{$t('addcontroller')}}</a>
<a class="text-operation" @click="deleteData(record)">{{$t('delete')}}</a> <a class="text-operation" @click="deleteData(record)" v-if="dataSource.length > 1">{{$t('delete')}}</a>
</span> </span>
</a-table> </a-table>
<div> <div>
@@ -3,7 +3,7 @@
<div class="box"> <div class="box">
<div class="table-operator"> <div class="table-operator">
<div class="operator-text"> <div class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" /> <ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div> </div>
<div @click='handleModule' class="operator-text"> <div @click='handleModule' class="operator-text">
<a-icon type="download"/> <a-icon type="download"/>
@@ -478,8 +478,12 @@ this.$forceUpdate()
border-bottom: none; border-bottom: none;
vertical-align: top; vertical-align: top;
overflow: hidden; /*超出部分隐藏*/ overflow: hidden; /*超出部分隐藏*/
text-overflow: ellipsis; /*超出部分省略号表示*/ // text-overflow: ellipsis; /*超出部分省略号表示*/
white-space: nowrap; white-space: wrap;
display: flex;
// justify-content: center;
align-items: center;
line-height: 1.3;
} }
//::v-deep .sider .ant-layout-sider .ant-layout-sider-dark{ //::v-deep .sider .ant-layout-sider .ant-layout-sider-dark{
// min-width: 723px !important; // min-width: 723px !important;
@@ -511,14 +515,17 @@ this.$forceUpdate()
display: inline-block; display: inline-block;
width: 100%; width: 100%;
height: 50px; height: 50px;
line-height: 50px; line-height: 1.3;
border: black solid 1px; border: black solid 1px;
vertical-align: top; vertical-align: top;
border-right: none; border-right: none;
border-bottom: none; border-bottom: none;
overflow: hidden; /*超出部分隐藏*/ overflow: hidden; /*超出部分隐藏*/
text-overflow: ellipsis; /*超出部分省略号表示*/ // text-overflow: ellipsis; /*超出部分省略号表示*/
white-space: nowrap; white-space: wrap;
display: flex;
// justify-content: center;
align-items: center;
} }
.sider-span{ .sider-span{
display: inline-block; display: inline-block;
@@ -3,13 +3,14 @@
<div class="box"> <div class="box">
<div class="table-operator"> <div class="table-operator">
<div class="operator-text"> <div class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" /> <ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div> </div>
<div @click='handleModule' class="operator-text"> <div @click='handleModule' class="operator-text">
<a-icon type="download"/> <a-icon type="download"/>
{{$t('templateDownload')}} {{$t('templateDownload')}}
</div> </div>
</div> </div>
<a-spin :spinning="confirmLoading"> <a-spin :spinning="confirmLoading">
<a-form-model class="formAdd" ref="ruleForm"> <a-form-model class="formAdd" ref="ruleForm">
<a-row :gutter="24"> <a-row :gutter="24">
@@ -58,7 +59,7 @@
<a-col :span="24"> <a-col :span="24">
<div class="box-title-text-add"> <div class="box-title-text-add">
<div class="title-text-add"> <div class="title-text-add plus">
<span class="title-text-text" :title="$t('Modelandfunctionrecord')">{{$t('Modelandfunctionrecord')}}</span> <span class="title-text-text" :title="$t('Modelandfunctionrecord')">{{$t('Modelandfunctionrecord')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="dutyTerritory"> <a-form-model-item class="itemModel" prop="dutyTerritory">
@@ -288,9 +289,9 @@ import ImportFile from '@/components/ImportFileData/index'
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
margin-right: 16px; margin-right: 16px;
overflow: hidden; // overflow: hidden;
text-overflow: ellipsis; // text-overflow: ellipsis;
white-space: nowrap; // white-space: nowrap;
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
margin-top: 3px; margin-top: 3px;
@@ -336,4 +337,8 @@ import ImportFile from '@/components/ImportFileData/index'
.bootom-button{ .bootom-button{
text-align: center!important; text-align: center!important;
} }
.plus{
margin-top: 5px;
line-height: 1.4 !important;
}
</style> </style>
@@ -3,7 +3,7 @@
<div class="box"> <div class="box">
<div class="table-operator"> <div class="table-operator">
<div class="operator-text"> <div class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" /> <ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getData"/>
</div> </div>
<div @click='handleModule' class="operator-text"> <div @click='handleModule' class="operator-text">
<a-icon type="download"/> <a-icon type="download"/>
@@ -228,10 +228,16 @@ export default {
} }
}) })
}, },
save(){
},
next(){ next(){
this.save()
this.$emit('recordparametersdown') this.$emit('recordparametersdown')
}, },
last(){ last(){
this.save()
this.$emit('recordparametersup') this.$emit('recordparametersup')
}, },
dateChange(item) { dateChange(item) {
@@ -254,7 +260,10 @@ export default {
display: flex; display: flex;
} }
h1{
font-weight: 700;
font-style: 20px;
}
.title-text-add { .title-text-add {
width: 440px; width: 440px;
text-align: right; text-align: right;
@@ -50,13 +50,13 @@
</span> </span>
<!-- 技术参数--> <!-- 技术参数-->
<span slot="technicalparameters" slot-scope="text,record"> <span slot="technicalparameters" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.sjggcs" :max-length="500"></a-input> <a-input :placeholder="$t('ifNot')" :title="record.sjggcs ? record.sjggcs : $t('ifNot')" v-model="record.sjggcs" :max-length="500"></a-input>
</span> </span>
<span slot="functiondescription" slot-scope="text,record"> <span slot="functiondescription" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.gnms" :max-length="500"></a-input> <a-input :placeholder="$t('ifNot')" :title="record.gnms ? record.gnms:$t('ifNot')" v-model="record.gnms" :max-length="500"></a-input>
</span> </span>
<span slot="applicationconditions" slot-scope="text,record"> <span slot="applicationconditions" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.sytj" :max-length="500"></a-input> <a-input :placeholder="$t('ifNot')" :title="record.sytj ? record.sytj:$t('ifNot')" v-model="record.sytj" :max-length="500"></a-input>
</span> </span>
<span slot="functiondeelectronicscription" slot-scope="text,record"> <span slot="functiondeelectronicscription" slot-scope="text,record">
<a-input :placeholder="$t('pleaseEnter')" v-model="record.kzqmc" :max-length="500"></a-input> <a-input :placeholder="$t('pleaseEnter')" v-model="record.kzqmc" :max-length="500"></a-input>
@@ -93,8 +93,8 @@
}}</a-button> }}</a-button>
<div style='margin-top: 20px'> <div style='margin-top: 20px'>
<p>注:附件包括测试项目清单、测试报告.测试标准或技术规范</p> <p>{{ $t('note') }}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;支持doc/docx/pdf格式,大小50M以内</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;{{ $t('format') }}</p>
</div> </div>
</div> </div>
@@ -113,15 +113,15 @@ export default {
} }
.title-text-add { .title-text-add {
width: 114px; width: 200px;
text-align: right; text-align: right;
display: inline-block; display: inline-block;
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
margin-right: 16px; margin-right: 16px;
overflow: hidden; // overflow: hidden;
text-overflow: ellipsis; // text-overflow: ellipsis;
white-space: nowrap; // white-space: nowrap;
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
margin-top: 3px; margin-top: 3px;
@@ -133,9 +133,9 @@ export default {
font-weight: 500; font-weight: 500;
font-size: 14px; font-size: 14px;
margin-right: 16px; margin-right: 16px;
overflow: hidden; // overflow: hidden;
text-overflow: ellipsis; // text-overflow: ellipsis;
white-space: nowrap; // white-space: nowrap;
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
margin-top: 3px; margin-top: 3px;
@@ -95,7 +95,7 @@
<div style='width: 300px'> <div style='width: 300px'>
<span class='content-text' style='background: #f3f6f6;line-height: 50px;text-align: center;color: #191E29;font-weight: bold'>{{$t('fillincontent')}}</span> <span class='content-text' style='background: #f3f6f6;line-height: 50px;text-align: center;color: #191E29;font-weight: bold'>{{$t('fillincontent')}}</span>
<span class='radio-text'> <span class='radio-text'>
<a-radio-group style='margin-left: 40px;' v-model="query.jgld"> <a-radio-group style='margin-left: 40px;' v-model="query.jgldPz">
<a-radio :value="1"> {{ $t('yes') }} </a-radio> <a-radio :value="1"> {{ $t('yes') }} </a-radio>
<a-radio :value="2"> {{ $t('not') }} </a-radio> <a-radio :value="2"> {{ $t('not') }} </a-radio>
</a-radio-group> </a-radio-group>
@@ -239,8 +239,8 @@
<!-- 可升级--> <!-- 可升级-->
<span slot="systemclass" slot-scope="text,record" > <span slot="systemclass" slot-scope="text,record" >
<a-radio-group v-model="record.pzqk"> <a-radio-group v-model="record.pzqk">
<a-radio :value="1"> {{ $t('yes') }} </a-radio> <a-radio :value="1"> {{ $t('have') }} </a-radio>
<a-radio :value="2"> {{ $t('not') }} </a-radio> <a-radio :value="2"> {{ $t('nothing') }} </a-radio>
</a-radio-group> </a-radio-group>
</span> </span>
<span slot="controllername" slot-scope="text,record"> <span slot="controllername" slot-scope="text,record">
@@ -263,7 +263,7 @@
</span> </span>
<!-- 操作列--> <!-- 操作列-->
<span slot="operation" slot-scope="text,record"> <span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="addlineAtBot" style='width: 73px;margin-right: 50px'>{{$t('addcontroller')}}</a> <a class="text-operation" style='width: 73px;margin-right: 50px' @click="addlineAtBot">{{$t('addcontroller')}}</a>
<a class="text-operation" v-if="dataSourceList.length >1" @click="deleteData(record)" >{{$t('delete')}}</a> <a class="text-operation" v-if="dataSourceList.length >1" @click="deleteData(record)" >{{$t('delete')}}</a>
</span> </span>
</a-table> </a-table>
@@ -977,11 +977,14 @@ export default {
return obj; return obj;
}, },
addlineAtBot(){ addlineAtBot(){
let obj={bjmc:'车端OTA升级功能模块'} let obj={}
obj.bjmc='车端OTA升级功能模块'
this.dataSourceList.push(obj) this.dataSourceList.push(obj)
this.$forceUpdate()
}, },
deleteData(record){ deleteData(record){
this.dataSourceList.splice(this.dataSourceList.indexOf(record),1) this.dataSourceList.splice(this.dataSourceList.indexOf(record),1)
this.$forceUpdate()
}, },
} }
} }
@@ -1142,7 +1145,7 @@ button{
line-height: 50px; line-height: 50px;
} }
.text-box-three{ .text-box-three{
isplay: inline-block; display: inline-block;
float: left; float: left;
border: #e8e8e8 solid 1px; border: #e8e8e8 solid 1px;
width: 100%; width: 100%;
@@ -1150,7 +1153,7 @@ button{
line-height: 250px; line-height: 250px;
} }
.text-box-four{ .text-box-four{
isplay: inline-block; display: inline-block;
float: left; float: left;
border: #e8e8e8 solid 1px; border: #e8e8e8 solid 1px;
width: 100%; width: 100%;
@@ -1158,15 +1161,18 @@ button{
line-height: 600px; line-height: 600px;
} }
.four-text-text{ .four-text-text{
isplay: inline-block; display: inline-block;
float: left; float: left;
border: #e8e8e8 solid 1px; border: #e8e8e8 solid 1px;
width: 50%; width: 50%;
height: 600px; height: 600px;
line-height: 600px; line-height: 20px;
display: flex;
justify-content: center;
align-items: center;
} }
.four-text{ .four-text{
isplay: inline-block; display: inline-block;
float: left; float: left;
border: #e8e8e8 solid 1px; border: #e8e8e8 solid 1px;
width: 50%; width: 50%;
@@ -1174,7 +1180,7 @@ button{
line-height: 150px; line-height: 150px;
} }
.text-box-five{ .text-box-five{
isplay: inline-block; display: inline-block;
float: left; float: left;
border: #e8e8e8 solid 1px; border: #e8e8e8 solid 1px;
width: 100%; width: 100%;
@@ -1182,9 +1188,10 @@ button{
line-height: 100px; line-height: 100px;
} }
span{ span{
overflow: hidden; /*超出部分隐藏*/ /* overflow: hidden; /*超出部分隐藏*/
text-overflow: ellipsis; /*超出部分省略号表示*/ /* text-overflow: ellipsis; 超出部分省略号表示 */
white-space: nowrap; white-space: wrap;
/* word-wrap: normal; */
} }
.item-input{ .item-input{
margin-top: 9px; margin-top: 9px;
@@ -38,12 +38,16 @@
</a-button> </a-button>
</span> </span>
</a-table> </a-table>
<div style='margin-top: 20px'>
<p>{{ $t('note') }}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;{{ $t('format') }}</p>
</div>
<div class="bootom-button"> <div class="bootom-button">
<a-button class='btn' @click="save">{{$t('preservation')}}</a-button> <a-button class='btn' @click="save">{{$t('preservation')}}</a-button>
<a-button type="primary" style='width: 73px;margin-right: 50px' @click='last'>{{$t('last')}}</a-button> <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> <a-button type="primary" style='width: 73px' @click='next'>{{$t('next')}}</a-button>
</div> </div>
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFile> <uploadFile ref="uploadFile" :acceptcode="'doc,docx,pdf'" @uploadSuccess="uploadSuccess"></uploadFile>
</div> </div>
</template> </template>
@@ -34,7 +34,7 @@
<a-button type="primary" style='width: 73px;margin-right: 50px' @click="last">{{ $t('last') }}</a-button> <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> <a-button type="primary" style='width: 73px' @click='next'>{{ $t('next') }}</a-button>
</div> </div>
<uploadFile ref="uploadFile" :accept="'.doc,.docx,.pdf'" @uploadSuccess="uploadSuccess"></uploadFile> <uploadFile ref="uploadFile" :acceptcode="'doc,docx,pdf'" @uploadSuccess="uploadSuccess"></uploadFile>
</div> </div>
</template> </template>
@@ -32,7 +32,7 @@
</span> </span>
<!-- 技术参数--> <!-- 技术参数-->
<span slot="technicalparameters" slot-scope="text,record"> <span slot="technicalparameters" slot-scope="text,record">
<a-input :placeholder="$t('ifNot')" :title="$t('ifNot')" v-model="record.sjbgcs" :max-length="500"></a-input> <a-input :placeholder="$t('ifNot')" :title="record.sjbgcs ? record.sjbgcs : $t('ifNot')" v-model="record.sjbgcs" :max-length="500"></a-input>
</span> </span>
<!-- 上传附件--> <!-- 上传附件-->
<span slot="architecturetopologydiagram" slot-scope="text,record"> <span slot="architecturetopologydiagram" slot-scope="text,record">
@@ -99,7 +99,7 @@
<a-button type="primary" style='width: 73px' @click='next'>{{$t('next')}}</a-button> <a-button type="primary" style='width: 73px' @click='next'>{{$t('next')}}</a-button>
</div> </div>
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFile> <uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFile>
<uploadFileOta ref="uploadFileOta" @uploadSuccess="uploadSuccessOta"></uploadFileOta> <uploadFileOta ref="uploadFileOta" :acceptcode="'doc,docx,pdf'" @uploadSuccess="uploadSuccessOta"></uploadFileOta>
</div> </div>
</template> </template>
@@ -20,6 +20,7 @@
</div> </div>
<a-form-model-item class="itemModel" prop="bazt"> <a-form-model-item class="itemModel" prop="bazt">
<j-dict-select-tag class="box-input" v-model="formInline.bazt" <j-dict-select-tag class="box-input" v-model="formInline.bazt"
@input="selectchange"
:placeholder="$t('PleaseSelect')+$t('recordstatus')" :placeholder="$t('PleaseSelect')+$t('recordstatus')"
:type="'select'" :type="'select'"
:triggerChange="false" :dictCode="'recordstatus'"/> :triggerChange="false" :dictCode="'recordstatus'"/>
@@ -40,7 +41,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode" :getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.batjsj" v-model="formInline.batjsj"
style="width: 100%"/> style="width: 90%"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
@@ -51,9 +52,10 @@
<span class="title-text-text" :title="$t('remarks')"> <span class="title-text-text" :title="$t('remarks')">
{{$t('remarks')}}</span> {{$t('remarks')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="remarks"> <a-form-model-item class="itemModel" prop="bz">
<a-textarea :placeholder="$t('pleaseEnter')+$t('remarks')" <a-textarea :placeholder="$t('pleaseEnter')+$t('remarks')"
v-model="formInline.bz" v-model="formInline.bz"
style="width: 90%"
:rows="4"/> :rows="4"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
@@ -75,7 +77,7 @@ export default {
visible: false, visible: false,
confirmLoading: false, confirmLoading: false,
formInline: { formInline: {
bazt:'', bazt:undefined,
batjsj:'', batjsj:'',
bz:'', bz:'',
}, },
@@ -94,6 +96,9 @@ export default {
trigger: 'change' trigger: 'change'
} }
], ],
bz: [
{ min: 1, max: 500, message: this.$t('cantExeed') + '500' + this.$t('characters'), trigger: 'blur' }
]
// designDeadline: [ // designDeadline: [
// { // {
// required: true, // required: true,
@@ -139,6 +144,11 @@ export default {
edit(row) { edit(row) {
if(row instanceof Array){ if(row instanceof Array){
this.ids = row.join(',') this.ids = row.join(',')
this.formInline = {
bazt:undefined,
batjsj:'',
bz:'',
}
}else{ }else{
this.formInline.bazt = row.bazt ? row.bazt : undefined this.formInline.bazt = row.bazt ? row.bazt : undefined
this.formInline.batjsj = row.batjsj this.formInline.batjsj = row.batjsj
@@ -172,9 +182,15 @@ export default {
} }
}) })
}, },
selectchange(value){
this.$nextTick(() => {
this.formInline = { ...this.formInline }
this.$refs.ruleForm.validateField('bazt')
})
},
handleCancel() { handleCancel() {
this.formInline = { this.formInline = {
bazt:'', bazt:undefined,
batjsj:'', batjsj:'',
bz:'',} bz:'',}
this.ids = '' this.ids = ''
@@ -259,7 +275,7 @@ export default {
.box-input { .box-input {
display: inline-block; display: inline-block;
height: 38px; height: 38px;
width: 100%; width: 90%;
} }
.itemModel { .itemModel {
@@ -6,10 +6,10 @@
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :md="6" :sm="8"> <a-col :md="6" :sm="8">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text" :title="$t('upgraderegistrationnumber')"> <div class="title-text" :title="$t('registrationnumber')">
<span>{{ $t('upgraderegistrationnumber') }}</span> <span>{{ $t('registrationnumber') }}</span>
</div> </div>
<a-input class="box-input" :placeholder="$t('PleaseEnter') + $t('upgraderegistrationnumber')" <a-input class="box-input" :placeholder="$t('PleaseEnter') + $t('registrationnumber')"
v-model="queryParam.cpdjbh"></a-input> v-model="queryParam.cpdjbh"></a-input>
</div> </div>
</a-col> </a-col>
@@ -104,7 +104,7 @@
{{ $t('datamaintenance') }} {{ $t('datamaintenance') }}
</div> </div>
<div v-has="'regulatoryAndTechnicalAssessment:batchDelete'" class="operator-text"> <div v-has="'regulatoryAndTechnicalAssessment:batchDelete'" class="operator-text">
<ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" /> <ImportFile :url="url" :dummyInventoryBaseId="$route.query.id" :isTrue="true" :accept="'.zip'" @getList="getList"/>
</div> </div>
<div @click="handleModule" v-has="'regulatoryAndTechnicalAssessment:batchDelete'" class="operator-text"> <div @click="handleModule" v-has="'regulatoryAndTechnicalAssessment:batchDelete'" class="operator-text">
<a-icon type="download" /> <a-icon type="download" />
@@ -317,7 +317,7 @@
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button> <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div> </div>
</a-drawer> </a-drawer>
<uploadFileChange ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFileChange> <uploadFileChange :isParameter="true" ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFileChange>
</div> </div>
</template> </template>
@@ -402,6 +402,7 @@
<SelectedBy ref="SelectedByRef" :isSingleChoice="true" <SelectedBy ref="SelectedByRef" :isSingleChoice="true"
:title="$t('turnToDo')" @SelectedByForm="SelectedByForm"></SelectedBy> :title="$t('turnToDo')" @SelectedByForm="SelectedByForm"></SelectedBy>
<viewFileModel ref="viewFileModelRef"/> <viewFileModel ref="viewFileModelRef"/>
<JLoading :loading="JTextLoading">{{ $t('Submitting') }}</JLoading>
<!-- <a-modal--> <!-- <a-modal-->
<!-- :title="listTitle"--> <!-- :title="listTitle"-->
<!-- :width="500"--> <!-- :width="500"-->
@@ -514,6 +515,7 @@
pageNo: 1, pageNo: 1,
pageSize: 50, pageSize: 50,
total: 0, total: 0,
JTextLoading: false,
CertificationColor: { CertificationColor: {
'Test passed': 'accordColor', 'Test passed': 'accordColor',
'Test failed': 'nonConformityColor', 'Test failed': 'nonConformityColor',
@@ -973,25 +975,49 @@
processResetClick() { processResetClick() {
let _this = this let _this = this
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) { if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.$confirm({ let ids = []
content: _this.$t('confirmResetProcess'), let notConditions = []
onOk() { for (let i = 0; i < this.selectedRowKeysList.length; i++) {
let idList = JSON.parse(JSON.stringify(_this.selectedRowKeys)) if (this.selectedRowKeysList[i].flowStatus == 'List to be released') {
postAction('/project/projectCertificationInventoryEO/resetFlow', { notConditions.push(this.selectedRowKeysList[i].inspectionItem)
ids: idList.join(','), } else {
projectLibraryId: _this.$route.query.id, ids.push(this.selectedRowKeysList[i].id)
operatorType: 'certificationInventoryStudioReset'
}).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.getList()
} else {
_this.$message.warning(res.message)
}
})
} }
}) }
let data = ''
if (notConditions && notConditions.length > 0) {
data = this.$t('inspectionItems') + '"' + notConditions.join('、') + '"' + this.$t('conditionsNotMet') + ',' + this.$t('dataWithProcessReleasedCannotBeReset')
}
if (ids && ids.length > 0) {
this.$confirm({
content: _this.$t('confirmResetProcess'),
onOk() {
_this.JTextLoading = true
let idList = JSON.parse(JSON.stringify(_this.selectedRowKeys))
postAction('/project/projectCertificationInventoryEO/resetFlow', {
ids: idList.join(','),
projectLibraryId: _this.$route.query.id,
operatorType: 'certificationInventoryStudioReset'
}).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.getList()
if (notConditions && notConditions.length > 0) {
_this.failedMessage(data)
}
_this.JTextLoading = false
} else {
_this.$message.warning(res.message)
_this.JTextLoading = false
}
})
}
})
} else {
this.failedMessage(data)
this.JTextLoading = false
}
} else { } else {
this.$message.warning(this.$t('selectLeastOne')) this.$message.warning(this.$t('selectLeastOne'))
} }
@@ -761,14 +761,14 @@
scopedSlots: { customRender: 'verifyDeliverableTemplateName' } scopedSlots: { customRender: 'verifyDeliverableTemplateName' }
} }
] ]
},
{
title: this.$t('operation'),
align: 'left',
fixed: 'right',
width: 260,
scopedSlots: { customRender: 'operation' }
} }
// {
// title: this.$t('operation'),
// align: 'left',
// fixed: 'right',
// width: 260,
// scopedSlots: { customRender: 'operation' }
// }
], ],
columnsAll: [], columnsAll: [],
columnsFileAll: [ columnsFileAll: [
@@ -1528,7 +1528,7 @@
_this.selectedRowKeys = [] _this.selectedRowKeys = []
_this.getList() _this.getList()
if (detailedWarningList && detailedWarningList.length > 0) { if (detailedWarningList && detailedWarningList.length > 0) {
this.promptInformation(detailedWarningList) _this.promptInformation(detailedWarningList)
} }
} else { } else {
_this.$message.warning(_this.$t('operationFailed')) _this.$message.warning(_this.$t('operationFailed'))
@@ -1689,19 +1689,20 @@
for (let i = 0; i < this.dataSource.length; i++) { for (let i = 0; i < this.dataSource.length; i++) {
for (let j = 0; j < selectedRowKeys.length; j++) { for (let j = 0; j < selectedRowKeys.length; j++) {
if (this.dataSource[i].id == selectedRowKeys[j]) { if (this.dataSource[i].id == selectedRowKeys[j]) {
content.push(this.dataSource[i]) // content.push(this.dataSource[i])
isTrue = true
} }
} }
} }
for (let i = 0; i < content.length; i++) { // for (let i = 0; i < content.length; i++) {
if (content[i].designFlowStatus == 'List to be released' && // if (content[i].designFlowStatus == 'List to be released' &&
content[i].verifyFlowStatus == 'List to be released') { // content[i].verifyFlowStatus == 'List to be released') {
isTrue = false // isTrue = false
//
} else { // } else {
isTrue = true // isTrue = true
} // }
} // }
if (isTrue) { if (isTrue) {
this.changeInterface(selectedRowKeys) this.changeInterface(selectedRowKeys)
} }
@@ -1998,39 +1999,43 @@
moduleFlag: '法规清单' moduleFlag: '法规清单'
}).then((res) => { }).then((res) => {
if (res.success) { if (res.success) {
this.columnsAll = res.result if (res.result && res.result.length > 0) {
for (let j = 0; j < this.columnsAll.length; j++) { this.columnsAll = res.result
for (let i = 0; i < this.column.length; i++) { for (let j = 0; j < this.columnsAll.length; j++) {
if (this.columnsAll[j].title == this.$t('confirmationOfDesignConformity')) { for (let i = 0; i < this.column.length; i++) {
if (this.column[i].title == this.$t('confirmationOfDesignConformity')) { if (this.columnsAll[j].title == this.$t('confirmationOfDesignConformity')) {
if (this.columnsAll[j].children && this.columnsAll[j].children.length > 0) { if (this.column[i].title == this.$t('confirmationOfDesignConformity')) {
for (let k = 0; k < this.columnsAll[j].children.length; k++) { if (this.columnsAll[j].children && this.columnsAll[j].children.length > 0) {
for (let l = 0; l < this.column[i].children.length; l++) { for (let k = 0; k < this.columnsAll[j].children.length; k++) {
if (this.columnsAll[j].children[k].title == this.column[i].children[l].title) { for (let l = 0; l < this.column[i].children.length; l++) {
this.columnsAll[j].children[k] = this.column[i].children[l] if (this.columnsAll[j].children[k].title == this.column[i].children[l].title) {
this.columnsAll[j].children[k] = this.column[i].children[l]
}
} }
} }
} }
} }
} } else if (this.columnsAll[j].title == this.$t('verificationAndConformityconfirmation')) {
} else if (this.columnsAll[j].title == this.$t('verificationAndConformityconfirmation')) { if (this.column[i].title == this.$t('verificationAndConformityconfirmation')) {
if (this.column[i].title == this.$t('verificationAndConformityconfirmation')) { if (this.columnsAll[j].children && this.columnsAll[j].children.length > 0) {
if (this.columnsAll[j].children && this.columnsAll[j].children.length > 0) { for (let k = 0; k < this.columnsAll[j].children.length; k++) {
for (let k = 0; k < this.columnsAll[j].children.length; k++) { for (let l = 0; l < this.column[i].children.length; l++) {
for (let l = 0; l < this.column[i].children.length; l++) { if (this.columnsAll[j].children[k].title == this.column[i].children[l].title) {
if (this.columnsAll[j].children[k].title == this.column[i].children[l].title) { this.columnsAll[j].children[k] = this.column[i].children[l]
this.columnsAll[j].children[k] = this.column[i].children[l] }
} }
} }
} }
} }
} } else {
} else { if (this.column[i].dataIndex == this.columnsAll[j].dataIndex) {
if (this.column[i].dataIndex == this.columnsAll[j].dataIndex) { this.columnsAll[j] = this.column[i]
this.columnsAll[j] = this.column[i] }
} }
} }
} }
} else {
this.columnsAll = this.column
} }
this.columnsAll.push({ this.columnsAll.push({
title: this.$t('operation'), title: this.$t('operation'),
@@ -2385,9 +2390,11 @@
_this.detailedWarningList.push( _this.detailedWarningList.push(
< div > { dataList[i].serialNumber + _this.$t('pleaseSelectTheDataverificationVerified') } < /div>) < div > { dataList[i].serialNumber + _this.$t('pleaseSelectTheDataverificationVerified') } < /div>)
} }
} }
if (this.requestsNum == 0) { if (this.requestsNum == 0) {
_this.promptInformation(_this.detailedWarningList) this.$message.warning(_this.$t('theDataYouInitiate'))
// _this.promptInformation(_this.detailedWarningList)
this.JTextLoading = false this.JTextLoading = false
} }
}, },