软件版本列表增加一列"扩展任务数量"

This commit is contained in:
范强强
2023-10-20 14:20:01 +08:00
parent 5e6428fd8f
commit d7d3bb8b5f
6 changed files with 907 additions and 829 deletions
File diff suppressed because it is too large Load Diff
+3 -1
View File
@@ -3947,7 +3947,7 @@ module.exports = {
Processdetails:'流程详情',
matchempty:'匹配项为空',
platformitemhasbeenassociated:'已关联平台件项目',
power:'功率',
power:'特征参数',
producer:'生产商',
Nameplatelabel:'铭牌标签',
Batteryfilingrecord:'电池备案记录',
@@ -3978,4 +3978,6 @@ module.exports = {
Compliancemanagementvalvepoint:'合规管理阀点',
designTaskValidation:'设计任务确认',
verificationTaskValidation:'验证任务确认',
platformType:'平台件类型',
extensionItems:'扩展任务数量',
}
@@ -268,6 +268,14 @@
sorter: true,
dataIndex: 'releaseType'
},
{
title: this.$t('extensionItems'),
align: 'left',
width: 150,
ellipsis: true,
sorter: true,
dataIndex: 'extensionItemCount'
},
{
title: this.$t('vehicleType'),
align: 'left',
@@ -505,6 +513,6 @@
}
::v-deep .rowClassRedYellow {
background: yellow!important;
background: yellow !important;
}
</style>
@@ -57,11 +57,18 @@
>{{queryForm.regulationOwnerIdName}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
<span class="text-field-left"
:title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
<span class="text-field-right"
:title="queryForm.engineeringInterfacePersonName"
>{{queryForm.engineeringInterfacePersonName}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('platformType')">{{$t('platformType')}}</span>
<span class="text-field-right"
:title="queryForm.platformType"
>{{queryForm.platformType}}</span>
</div>
</div>
<div class="content-text">
<div class="text-field">
@@ -83,15 +90,15 @@
@preview="handlePreview"
@change="handleChange"
>
<!-- <div v-if="fileList.length">-->
<!-- <a-icon type="plus" />-->
<!-- <div class="ant-upload-text">-->
<!-- &lt;!&ndash; Upload&ndash;&gt;-->
<!-- </div>-->
<!-- </div>-->
<!-- <div v-if="fileList.length">-->
<!-- <a-icon type="plus" />-->
<!-- <div class="ant-upload-text">-->
<!-- &lt;!&ndash; Upload&ndash;&gt;-->
<!-- </div>-->
<!-- </div>-->
</a-upload>
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancelimg">
<img alt="example" style="width: 100%" :src="previewImage" />
<img alt="example" style="width: 100%" :src="previewImage"/>
</a-modal>
</div>
</div>
@@ -176,7 +183,7 @@
previewImage: '',
fileList: [],
projectNameList: [],
firstLevelDutyTerritoryList:[],
firstLevelDutyTerritoryList: [],
title: '',
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
state: undefined,
@@ -219,17 +226,17 @@
this.queryForm.brandText = this.queryForm.brandText
}
let file = []
if(this.queryForm.brandLabel){
if (this.queryForm.brandLabel) {
let list = this.queryForm.brandLabel.split(',')
list.forEach((item => {
getAction('sys/common/getFileInfos', { id: item }).then((res) => {
if (res.success) {
console.log(res.result)
res.result.forEach((item =>{
res.result.forEach((item => {
file.push({
name : item.fileName,
uid : item.id,
url : window._CONFIG['domianURL']+'/sys/split/file/getImage?fileUrl='+item.url
name: item.fileName,
uid: item.id,
url: window._CONFIG['domianURL'] + '/sys/split/file/getImage?fileUrl=' + item.url
})
}))
console.log(file)
@@ -254,7 +261,7 @@
ListOfRelevantPersonnelClick() {
this.$refs.listOfRelevantPersonnelRef.getData()
},
rxswinClick(){
rxswinClick() {
this.$refs.rxswinModelRef.getData()
},
urlClick(val) {
@@ -276,20 +283,20 @@
projectLibraryId: this.$route.query.id
}
downloadFile('/platform/projectLibraryBase/exportProjectProgressStatisticsXls',
this.queryForm.projectNameId+'-'+this.queryForm.projectVersion+'-'+this.$t('projectProgressStatistics') + '.xls', query)
this.queryForm.projectNameId + '-' + this.queryForm.projectVersion + '-' + this.$t('projectProgressStatistics') + '.xls', query)
},
handleCancelimg() {
this.previewVisible = false;
this.previewVisible = false
},
async handlePreview(file) {
if (!file.url && !file.preview) {
file.preview = await getBase64(file.originFileObj);
file.preview = await getBase64(file.originFileObj)
}
this.previewImage = file.url || file.preview;
this.previewVisible = true;
this.previewImage = file.url || file.preview
this.previewVisible = true
},
handleChange({ fileList }) {
this.fileList = fileList;
this.fileList = fileList
console.log(this.fileList)
},
versionStatisticsClick() {
@@ -11,7 +11,7 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<!-- 项目基本信息-->
<!-- 项目基本信息-->
<div class="header-text">
{{$t('basicInformationOfParameters')}}
</div>
@@ -139,11 +139,26 @@
<span class="title-text-text" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
</div>
<a-form-model-item class="itemModel" prop="engineeringInterfacePersonName">
<PersonnelSelection :query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('regulatoryEngineer')}"
:isSingleChoice="true"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.engineeringInterfacePersonName"/>
<PersonnelSelection
:query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('regulatoryEngineer')}"
:isSingleChoice="true"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.engineeringInterfacePersonName"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('platformType')">{{$t('platformType')}}</span>
</div>
<a-form-model-item class="itemModel" prop="platformType">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('platformType')"
v-model="formInline.platformType"></a-input>
</a-form-model-item>
</div>
</a-col>
@@ -156,7 +171,7 @@
</div>
<a-form-model-item class="itemModelimg" prop="explanation">
<div>
<!-- brandLabel-->
<!-- brandLabel-->
<a-upload
:action="uploadAction+'?state='+state+'&cut='+cut"
list-type="picture-card"
@@ -166,14 +181,14 @@
:headers="headers"
>
<div v-if="fileList.length < 20">
<a-icon type="plus" />
<a-icon type="plus"/>
<div class="ant-upload-text">
<!-- Upload-->
<!-- Upload-->
</div>
</div>
</a-upload>
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancelimg">
<img alt="example" style="width: 100%" :src="previewImage" />
<img alt="example" style="width: 100%" :src="previewImage"/>
</a-modal>
</div>
</a-form-model-item>
@@ -221,7 +236,8 @@
<span class="title-text-text" :title="$t('Electriccellproductionenterprises')">{{$t('Electriccellproductionenterprises')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Electriccellproductionenterprises">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Electriccellproductionenterprises')"
<a-input class="box-input" :maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Electriccellproductionenterprises')"
v-model="formInline.cellEnterprise"></a-input>
</a-form-model-item>
</div>
@@ -296,10 +312,12 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Productclasscode') + '(4)'">{{$t('Productclasscode') + '(4)'}}</span>
<span class="title-text-text"
:title="$t('Productclasscode') + '(4)'">{{$t('Productclasscode') + '(4)'}}</span>
</div>
<a-form-model-item class="itemModel" prop="Productclasscode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Productclasscode') + '(4)'"
<a-input class="box-input" :maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Productclasscode') + '(4)'"
v-model="formInline.productTypeCode"></a-input>
</a-form-model-item>
</div>
@@ -307,10 +325,12 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Batterytypecode') + '(5)'">{{$t('Batterytypecode') + '(5)'}}</span>
<span class="title-text-text"
:title="$t('Batterytypecode') + '(5)'">{{$t('Batterytypecode') + '(5)'}}</span>
</div>
<a-form-model-item class="itemModel" prop="Batterytypecode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Batterytypecode') + '(5)'"
<a-input class="box-input" :maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Batterytypecode') + '(5)'"
v-model="formInline.batteryTypeCode"></a-input>
</a-form-model-item>
</div>
@@ -323,7 +343,8 @@
<span class="title-text-text" :title="$t('Specificationcode') + '(67)'">{{$t('Specificationcode') + '(67)'}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="Specificationcode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Specificationcode') + '(67)'"
<a-input class="box-input" :maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Specificationcode') + '(67)'"
v-model="formInline.specificationCode"></a-input>
</a-form-model-item>
</div>
@@ -334,7 +355,8 @@
<span class="title-text-text" :title="$t('Traceinformationcode') + '(814)'">{{$t('Traceinformationcode') + '(814)'}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="Traceinformationcode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Traceinformationcode') + '(814)'"
<a-input class="box-input" :maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Traceinformationcode') + '(814)'"
v-model="formInline.traceabilityCode"></a-input>
</a-form-model-item>
</div>
@@ -347,7 +369,8 @@
<span class="title-text-text" :title="$t('Productionyearmonthdateserialnumber') + '(1520)'">{{$t('Productionyearmonthdateserialnumber') + '(1520)'}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="Productionyearmonthdateserialnumber">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Productionyearmonthdateserialnumber') + '(1520)'"
<a-input class="box-input" :maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Productionyearmonthdateserialnumber') + '(1520)'"
v-model="formInline.ymdNumber"></a-input>
</a-form-model-item>
</div>
@@ -409,10 +432,12 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Numbercontainedmodules')">{{$t('Numbercontainedmodules')}}</span>
<span class="title-text-text"
:title="$t('Numbercontainedmodules')">{{$t('Numbercontainedmodules')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Numbercontainedmodules">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Numbercontainedmodules')"
<a-input class="box-input" :maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Numbercontainedmodules')"
v-model="formInline.moduleNumber"></a-input>
</a-form-model-item>
</div>
@@ -420,10 +445,12 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Moduleseriesparallelmode')">{{$t('Moduleseriesparallelmode')}}</span>
<span class="title-text-text"
:title="$t('Moduleseriesparallelmode')">{{$t('Moduleseriesparallelmode')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Moduleseriesparallelmode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Moduleseriesparallelmode')"
<a-input class="box-input" :maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Moduleseriesparallelmode')"
v-model="formInline.connectionType"></a-input>
</a-form-model-item>
</div>
@@ -436,7 +463,8 @@
<span class="title-text-text" :title="$t('modulspecificationcodeused')">{{$t('modulspecificationcodeused')}}</span>
</div>
<a-form-model-item class="itemModel" prop="modulspecificationcodeused">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('modulspecificationcodeused')"
<a-input class="box-input" :maxLength="200"
:placeholder="$t('PleaseEnter')+$t('modulspecificationcodeused')"
v-model="formInline.moduleSpecificationCode"></a-input>
</a-form-model-item>
</div>
@@ -576,7 +604,7 @@
trigger: 'blur'
}
],
projectNameId:[
projectNameId: [
{
required: true,
message: this.$t('entryName') + this.$t('cannotEmpty'),
@@ -588,7 +616,19 @@
trigger: 'blur'
}
],
power:[
platformType: [
{
required: true,
message: this.$t('platformType') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 200,
message: this.$t('platformType') + this.$t('cannotExceed') + 200 + this.$t('Characters'),
trigger: 'blur'
}
],
power: [
{
required: true,
message: this.$t('power') + this.$t('cannotEmpty'),
@@ -600,7 +640,7 @@
trigger: 'blur'
}
],
producer:[
producer: [
{
required: true,
message: this.$t('producer') + this.$t('cannotEmpty'),
@@ -686,7 +726,7 @@
message: this.$t('engineeringInterfacePerson') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
]
},
disabled: false,
previewVisible: false,
@@ -694,7 +734,7 @@
cut: '',
fileList: [],
projectNameList: [],
firstLevelDutyTerritoryList:[],
firstLevelDutyTerritoryList: [],
title: '',
headers: {},
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
@@ -702,7 +742,7 @@
myuploadAction: window._CONFIG['domianURL'] + this.thisFileUploadUrl,
upDataList: [],
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download'
}
},
created() {
@@ -721,34 +761,34 @@
methods: {
...mapGetters(['userInfo']),
handleCancelimg() {
this.previewVisible = false;
this.previewVisible = false
},
async handlePreview(file) {
if (!file.url && !file.preview) {
file.preview = await getBase64(file.originFileObj);
file.preview = await getBase64(file.originFileObj)
}
this.previewImage = file.url || file.preview;
this.previewVisible = true;
this.previewImage = file.url || file.preview
this.previewVisible = true
},
handleChange({ fileList }) {
this.fileList = fileList;
this.fileList = fileList
let filelistId = []
let file = []
console.log(this.fileList)
this.fileList.forEach((item => {
if (item.response) {
file.push(item.response.result)
} else {
file.push(item)
}
}))
this.fileList.forEach((item => {
if (item.response) {
file.push(item.response.result)
} else {
file.push(item)
}
}))
console.log(file)
file.forEach((item => {
filelistId.push(item.id || item.uid)
}))
console.log(filelistId,'111')
this.formInline.brandLabel = filelistId.join(',')
this.formInline = { ...this.formInline }
filelistId.push(item.id || item.uid)
}))
console.log(filelistId, '111')
this.formInline.brandLabel = filelistId.join(',')
this.formInline = { ...this.formInline }
},
getFirstLevelDutyTerritory() {
getAction('/sys/dictItem/getFirstLevelDutyTerritory', {}).then((res) => {
@@ -770,21 +810,21 @@
let content = this.projectNameList.filter(res => {
return res.id == value.projectNameId
})
if(value.dutyDepart){
if (value.dutyDepart) {
value.dutyDepart = value.dutyDepart.split(',')
}
let file = []
if(value.brandLabel){
if (value.brandLabel) {
let list = value.brandLabel.split(',')
list.forEach((item => {
getAction('sys/common/getFileInfos', { id: item }).then((res) => {
if (res.success) {
console.log(res.result)
res.result.forEach((item =>{
res.result.forEach((item => {
file.push({
name : item.fileName,
uid : item.id,
url : window._CONFIG['domianURL']+'/sys/split/file/getImage?fileUrl='+item.url
name: item.fileName,
uid: item.id,
url: window._CONFIG['domianURL'] + '/sys/split/file/getImage?fileUrl=' + item.url
})
}))
console.log(file)
@@ -827,7 +867,7 @@
this.title = this.$t('edit')
this.formInline.engineeringInterfacePersonName = value.engineeringInterfacePersonName
this.formInline.regulationOwnerIdName = value.regulationOwnerIdName
console.log(this.formInline.engineeringInterfacePersonName,this.formInline.engineeringInterfacePersonName)
console.log(this.formInline.engineeringInterfacePersonName, this.formInline.engineeringInterfacePersonName)
const token = Vue.ls.get(ACCESS_TOKEN)
this.headers = { 'X-Access-Token': token }
console.log(this.headers)
@@ -992,31 +1032,36 @@
height: 40px;
margin-bottom: 24px;
}
.itemModelimg {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
margin-bottom: 24px;
}
.header-text {
font-size: 16px;
color: #000000;
font-weight: bold;
}
.header-title-text{
.header-title-text {
font-size: 16px;
color: #000000;
line-height: 50px;
margin: 0 19px;
}
.header-title{
.header-title {
background: #F5F6F7;
width: 100%;
height: 50px;
margin-top: 10px;
margin-bottom: 10px;
}
.Required {
color: red;
margin-right: 4px;
@@ -177,7 +177,21 @@
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('personable')">{{$t('personable')}}</span>
</div>
<a-form-model-item class="itemModel">
<PersonnelSelection :query="{db_field_name:'dutyPerson',db_field_txt:$t('personable')}"
:isSingleChoice="true"
:personneQuery="formInline"
v-if="visible"
@change="PersonnelSelectionChange"
v-model="formInline.dutyPerson"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24" v-if="name == $t('BatchSetting') && roleSwitchingCode == 2">
<a-col :span="24">