Merge remote-tracking branch 'origin/master'

This commit is contained in:
liyawei
2022-04-21 16:05:41 +08:00
10 changed files with 395 additions and 52 deletions
@@ -33,6 +33,8 @@ public class ProjectLibraryBase implements Serializable {
private java.lang.String id; private java.lang.String id;
/**项目名称*/ /**项目名称*/
private java.lang.String projectNameId;
@TableField(exist = false)
private java.lang.String projectName; private java.lang.String projectName;
/**目标市场*/ /**目标市场*/
@@ -4,7 +4,7 @@
<resultMap id="ProjectLibraryBaseResultMap" type="com.jero.modules.project.entity.ProjectLibraryBase"> <resultMap id="ProjectLibraryBaseResultMap" type="com.jero.modules.project.entity.ProjectLibraryBase">
<id column="id" property="id" /> <id column="id" property="id" />
<result column="project_name" property="projectName" /> <result column="project_name_id" property="projectNameId" />
<result column="target_market" property="targetMarket" /> <result column="target_market" property="targetMarket" />
<result column="project_status" property="projectStatus" /> <result column="project_status" property="projectStatus" />
<result column="studio_engineer" property="studioEngineer" /> <result column="studio_engineer" property="studioEngineer" />
@@ -24,6 +24,7 @@
<sql id="select_item"> <sql id="select_item">
select select
plb.id, plb.id,
plb.project_name_id,
pni.project_name as project_name, pni.project_name as project_name,
plb.target_market, plb.target_market,
plb.project_status, plb.project_status,
@@ -41,7 +42,7 @@
plb.update_by, plb.update_by,
plb.update_time plb.update_time
from project_library_base as plb from project_library_base as plb
left join project_name_info as pni on plb.project_name=pni.id left join project_name_info as pni on plb.project_name_id=pni.id
left join sys_user as studiouser on plb.studio_engineer=studiouser.id left join sys_user as studiouser on plb.studio_engineer=studiouser.id
</sql> </sql>
+4
View File
@@ -695,4 +695,8 @@ module.exports = {
incorrectsubmitted:'The data status is incorrect; Only data with status to be confirmed can be submitted', incorrectsubmitted:'The data status is incorrect; Only data with status to be confirmed can be submitted',
date:'date', date:'date',
time:'time', time:'time',
confirmationOfRegulationsList:'Confirmation of regulations list',
regulatoryTaskConfirmation:'Regulatory task confirmation',
certificationStart:'Certification start',
certificationEnd:'Certification end',
} }
+6 -2
View File
@@ -595,7 +595,7 @@ module.exports = {
confirmationOfDesignConformity: '设计符合性确认', confirmationOfDesignConformity: '设计符合性确认',
Deliverables: '交付物', Deliverables: '交付物',
personLiable: '责任人', personLiable: '责任人',
PrehomoConfirmation: 'Prehomo确认', PrehomoConfirmation: 'PreHomo确认',
verificationAndConformityconfirmation: '验证符合性确认', verificationAndConformityconfirmation: '验证符合性确认',
StandardImplementationDate: '标准实施日期', StandardImplementationDate: '标准实施日期',
regulatoryEngineer: '法规工程师', regulatoryEngineer: '法规工程师',
@@ -698,5 +698,9 @@ module.exports = {
finalizationTime:'定版时间', finalizationTime:'定版时间',
setting:'设定', setting:'设定',
date:'日期', date:'日期',
time:'时间' time:'时间',
confirmationOfRegulationsList:'法规清单确认',
regulatoryTaskConfirmation:'法规任务确认',
certificationStart:'认证开始',
certificationEnd:'认证结束',
} }
+10 -1
View File
@@ -23,6 +23,11 @@
url: { url: {
type: Object, type: Object,
default: {} default: {}
},
//判断当前文档库还是其余的页面
isTrue:{
type: Boolean,
default: false
} }
}, },
data() { data() {
@@ -71,7 +76,11 @@
) )
}) })
} else { } else {
eventBUs.$emit('searchReset') if (this.isTrue){
this.$emit('getList')
}else{
eventBUs.$emit('searchReset')
}
this.$message.success(info.file.response.message || `${info.file.name} 文件导入成功`) this.$message.success(info.file.response.message || `${info.file.name} 文件导入成功`)
} }
this.spinning = false this.spinning = false
@@ -571,7 +571,8 @@
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys)) let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
let query = { let query = {
...this.queryParam, ...this.queryParam,
id: selectedRowKeys.join(',') name:this.$route.query.name,
ids: selectedRowKeys.join(',')
} }
downloadFile(this.url.exportData, '虚拟清单名称.zip', query, this.Deselect) downloadFile(this.url.exportData, '虚拟清单名称.zip', query, this.Deselect)
}, },
@@ -25,11 +25,8 @@
<span class="text-field-right" <span class="text-field-right"
>{{queryForm.projectStatus_dictText}}</span> >{{queryForm.projectStatus_dictText}}</span>
</div> </div>
<div class="text-field"> </div>
<span class="text-field-left" :title="$t('IPDInformation')">{{$t('IPDInformation')}}</span> <div class="content-text">
<span class="text-field-right text-field-right-color" @click="urlClick(queryForm.ipdInfo)"
>{{queryForm.ipdInfo}}</span>
</div>
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('DigitalPlatform')">{{$t('DigitalPlatform')}}</span> <span class="text-field-left" :title="$t('DigitalPlatform')">{{$t('DigitalPlatform')}}</span>
<span class="text-field-right" <span class="text-field-right"
@@ -40,6 +37,8 @@
<span class="text-field-right" <span class="text-field-right"
>{{queryForm.vehiclePlatform_dictText}}</span> >{{queryForm.vehiclePlatform_dictText}}</span>
</div> </div>
</div>
<div class="content-text">
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('StudioEngineer')">{{$t('StudioEngineer')}}</span> <span class="text-field-left" :title="$t('StudioEngineer')">{{$t('StudioEngineer')}}</span>
<span class="text-field-right" <span class="text-field-right"
@@ -50,16 +49,25 @@
<span class="text-field-right" <span class="text-field-right"
>{{queryForm.certificationEngineerName}}</span> >{{queryForm.certificationEngineerName}}</span>
</div> </div>
</div>
<div class="content-text">
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('dehicleDevelopmentPlan')">{{$t('dehicleDevelopmentPlan')}}</span> <span class="text-field-left" :title="$t('IPDInformation')">{{$t('IPDInformation')}}</span>
<span class="text-field-right text-field-right-color" @click="urlClick(queryForm.vehicleDevelopmentPlan)" <span class="text-field-right text-field-right-color" @click="urlClick(queryForm.ipdInfo)"
>{{queryForm.vehicleDevelopmentPlan}}</span> >{{queryForm.ipdInfo}}</span>
</div> </div>
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('certificationProgram')">{{$t('certificationProgram')}}</span> <span class="text-field-left" :title="$t('certificationProgram')">{{$t('certificationProgram')}}</span>
<span class="text-field-right text-field-right-color" @click="urlClick(queryForm.attestationPlan)" <span class="text-field-right text-field-right-color" @click="urlClick(queryForm.attestationPlan)"
>{{queryForm.attestationPlan}}</span> >{{queryForm.attestationPlan}}</span>
</div> </div>
<div class="text-field">
<span class="text-field-left" :title="$t('dehicleDevelopmentPlan')">{{$t('dehicleDevelopmentPlan')}}</span>
<span class="text-field-right text-field-right-color" @click="urlClick(queryForm.vehicleDevelopmentPlan)"
>{{queryForm.vehicleDevelopmentPlan}}</span>
</div>
</div>
<div class="content-text">
<div class="text-field"> <div class="text-field">
<span class="text-field-left" :title="$t('ListOfRelevantPersonnel')">{{$t('ListOfRelevantPersonnel')}}</span> <span class="text-field-left" :title="$t('ListOfRelevantPersonnel')">{{$t('ListOfRelevantPersonnel')}}</span>
<span class="text-field-right" <span class="text-field-right"
@@ -76,7 +84,7 @@
{{$t('regulatoryCertificationTaskPlan')}} {{$t('regulatoryCertificationTaskPlan')}}
</div> </div>
<div class="header-tight"> <div class="header-tight">
<a-button class="box-button" style="line-height: 32px">{{$t('setting')}}</a-button> <a-button class="box-button" style="line-height: 32px" @click="settingClick">{{$t('setting')}}</a-button>
</div> </div>
</div> </div>
<div class="process-content"> <div class="process-content">
@@ -163,6 +171,7 @@
</a-tabs> </a-tabs>
<listOfRelevantPersonnel ref="listOfRelevantPersonnelRef"/> <listOfRelevantPersonnel ref="listOfRelevantPersonnelRef"/>
<addModel :url="url" ref="addModelRef" @addModelList="addModelList"/> <addModel :url="url" ref="addModelRef" @addModelList="addModelList"/>
<settingList :url="url" ref="settingListRef"/>
</div> </div>
</template> </template>
@@ -171,12 +180,14 @@
import listOfRelevantPersonnel from './listOfRelevantPersonnel' import listOfRelevantPersonnel from './listOfRelevantPersonnel'
import { getAction, postAction, downloadFile, putAction } from '@/api/manage' import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
import addModel from './addModel' import addModel from './addModel'
import settingList from './settingList'
export default { export default {
name: 'ProjectDetails', name: 'ProjectDetails',
components: { components: {
listOfRelevantPersonnel, listOfRelevantPersonnel,
addModel addModel,
settingList
}, },
data() { data() {
return { return {
@@ -184,12 +195,14 @@
url: { url: {
queryById: 'project/projectLibraryBase/queryById', queryById: 'project/projectLibraryBase/queryById',
add: 'project/projectLibraryBase/add', add: 'project/projectLibraryBase/add',
edit: 'project/projectLibraryBase/edit' edit: 'project/projectLibraryBase/edit',
queryByprojectId:'project/projectTaskPlanning/queryByprojectId',
} }
} }
}, },
mounted() { mounted() {
this.getForm() this.getForm()
this.getSetting()
this.mainEcharts() this.mainEcharts()
}, },
methods: { methods: {
@@ -202,6 +215,15 @@
} }
}) })
}, },
getSetting(){
getAction(this.url.queryByprojectId, { id: this.$route.query.id }).then((res) => {
if (res.success) {
console.log(res)
} else {
}
})
},
mainEcharts() { mainEcharts() {
var myChart = echarts.init(document.getElementById('main')) var myChart = echarts.init(document.getElementById('main'))
myChart.setOption({ myChart.setOption({
@@ -235,7 +257,10 @@
}, },
addModelList() { addModelList() {
this.getForm() this.getForm()
} },
settingClick(){
this.$refs.settingListRef.edit()
},
} }
} }
</script> </script>
@@ -19,7 +19,7 @@
<a-form-model-item class="itemModel" prop="projectName"> <a-form-model-item class="itemModel" prop="projectName">
<a-select :placeholder="$t('PleaseSelect')+$t('entryName')" <a-select :placeholder="$t('PleaseSelect')+$t('entryName')"
@change="projectNameChange" @change="projectNameChange"
v-model="formInline.projectName"> v-model="formInline.projectNameId">
<a-select-option v-for="(item, key) in projectNameList" <a-select-option v-for="(item, key) in projectNameList"
:key="key" :key="key"
:value="item.id"> :value="item.id">
@@ -18,7 +18,7 @@
{{$t('export')}} {{$t('export')}}
</div> </div>
<div class="operator-text"> <div class="operator-text">
<ImportFile :url="url"/> <ImportFile :url="url" :isTrue="true" @getList="getPersonnelList"/>
</div> </div>
</div> </div>
<a-table <a-table
@@ -27,7 +27,7 @@
rowKey="id" rowKey="id"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:pagination="false" :pagination="false"
:scroll="{x:true,y: 400}" :scroll="{x:800,y: 400}"
:data-source="dataSource" :data-source="dataSource"
:loading="loading" :loading="loading"
> >
@@ -37,17 +37,17 @@
</a> </a>
</span> </span>
</a-table> </a-table>
<div class="page"> <!-- <div class="page">-->
<a-pagination <!-- <a-pagination-->
:show-total="total => $t('total')+` ${total} `+$t('strip')" <!-- :show-total="total => $t('total')+` ${total} `+$t('strip')"-->
show-quick-jumper <!-- show-quick-jumper-->
show-size-changer <!-- show-size-changer-->
:page-size.sync="pageSize" <!-- :page-size.sync="pageSize"-->
:total="total" <!-- :total="total"-->
@change="pageOnChange" <!-- @change="pageOnChange"-->
@showSizeChange="SizeChange" <!-- @showSizeChange="SizeChange"-->
/> <!-- />-->
</div> <!-- </div>-->
</a-modal> </a-modal>
<a-modal <a-modal
:title="$t('ListOfRelevantPersonnel')" :title="$t('ListOfRelevantPersonnel')"
@@ -239,12 +239,13 @@
} }
] ]
}, },
total: 0, // total: 0,
pageSize: 10, // pageSize: 10,
pageNo: 1, // pageNo: 1,
url: { url: {
page: '/project/projectRelatedPersonnel/page', list: '/project/projectRelatedPersonnel/list',
edit: '/project/projectRelatedPersonnel/edit' edit: '/project/projectRelatedPersonnel/edit',
exportData: '/project/projectRelatedPersonnel/exportXls'
}, },
selectedRowKeys: [] selectedRowKeys: []
} }
@@ -269,6 +270,9 @@
this.visible = true this.visible = true
this.getList() this.getList()
}, },
getPersonnelList(){
this.getList()
},
editOk() { editOk() {
this.$refs.ruleForm.validate(valid => { this.$refs.ruleForm.validate(valid => {
if (valid) { if (valid) {
@@ -297,29 +301,27 @@
this.formInline[value] = id this.formInline[value] = id
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
}, },
pageOnChange(page, pageSize) { // pageOnChange(page, pageSize) {
this.pageNo = page // this.pageNo = page
this.getList() // this.getList()
}, // },
SizeChange(page, pageSize) { // SizeChange(page, pageSize) {
this.pageNo = 1 // this.pageNo = 1
this.pageSize = pageSize // this.pageSize = pageSize
this.getList() // this.getList()
}, // },
onSelectChange(value) { onSelectChange(value) {
this.selectedRowKeys = value this.selectedRowKeys = value
}, },
getList() { getList() {
let query = { let query = {
pageNo: this.pageNo,
pageSize: this.pageSize,
projectId: this.$route.query.id projectId: this.$route.query.id
} }
this.loading = true this.loading = true
postAction(this.url.page, query).then((res) => { getAction(this.url.list, query).then((res) => {
if (res.success) { if (res.success) {
this.dataSource = res.result.records || [] this.dataSource = res.result || []
this.total = res.result.total // this.total = res.result.total
this.loading = false this.loading = false
} else { } else {
this.loading = false this.loading = false
@@ -327,7 +329,15 @@
}) })
}, },
handleExport() { handleExport() {
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
let query = {
ids: selectedRowKeys.join(','),
projectId: this.$route.query.id
}
downloadFile(this.url.exportData, this.$t('ListOfRelevantPersonnel') + '.xls', query, this.Deselect)
},
Deselect() {
this.selectedRowKeys = []
}, },
handleModule() { handleModule() {
@@ -0,0 +1,287 @@
<template>
<a-modal
:title="$t('setting')"
:width="1100"
:visible="visible"
:confirm-loading="confirmLoading"
:maskClosable="false"
@ok="handleOk"
@cancel="handleCancel"
>
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('confirmationOfRegulationsList')">
{{$t('confirmationOfRegulationsList')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('confirmationOfRegulationsList')"
@change="dateChange({db_field_name:'listConfirmation'})"
format="YYYY-MM-DD"
v-model="formInline.listConfirmation"
:disabled="false"
style="width: 100%"/>
</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('regulatoryTaskConfirmation')">
{{$t('regulatoryTaskConfirmation')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('regulatoryTaskConfirmation')"
@change="dateChange({db_field_name:'legalTaskConfirmation'})"
format="YYYY-MM-DD"
v-model="formInline.legalTaskConfirmation"
:disabled="false"
style="width: 100%"/>
</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('confirmationOfDesignConformity')">
{{$t('confirmationOfDesignConformity')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('confirmationOfDesignConformity')"
@change="dateChange({db_field_name:'designDeadline'})"
format="YYYY-MM-DD"
v-model="formInline.designDeadline"
:disabled="false"
style="width: 100%"/>
</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('PrehomoConfirmation')">
{{$t('PrehomoConfirmation')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('PrehomoConfirmation')"
@change="dateChange({db_field_name:'prehomoDeadline'})"
format="YYYY-MM-DD"
v-model="formInline.prehomoDeadline"
:disabled="false"
style="width: 100%"/>
</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('certificationStart')">
{{$t('certificationStart')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('certificationStart')"
@change="dateChange({db_field_name:'attestationStartTime'})"
format="YYYY-MM-DD"
v-model="formInline.attestationStartTime"
:disabled="false"
style="width: 100%"/>
</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('certificationEnd')">
{{$t('certificationEnd')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('certificationEnd')"
@change="dateChange({db_field_name:'attestationEndTime'})"
format="YYYY-MM-DD"
v-model="formInline.attestationEndTime"
:disabled="false"
style="width: 100%"/>
</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('deadlineForConfirmationOfDesignCompliance')">
{{$t('deadlineForConfirmationOfDesignCompliance')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('deadlineForConfirmationOfDesignCompliance')"
@change="dateChange({db_field_name:'verifyDeadline'})"
format="YYYY-MM-DD"
v-model="formInline.verifyDeadline"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-modal>
</template>
<script>
import { getAction, postAction } from '@/api/manage'
import moment from 'moment'
export default {
name: 'settingList',
props: ['url'],
data() {
return {
visible: false,
confirmLoading: false,
formInline: {},
rules: {},
ids: []
}
},
mounted() {
},
methods: {
edit(data) {
this.visible = true
this.$nextTick(() => {
this.ids = data || []
this.formInline = {}
})
},
handleOk() {
let ids = JSON.parse(JSON.stringify(this.ids))
let query = {
ids: ids.join(','),
...this.formInline
}
this.confirmLoading = true
postAction(this.url.setBatch, query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.visible = false
this.confirmLoading = false
this.$emit('batSettingList')
} else {
this.$message.warning(this.$t('operationFailed'))
this.confirmLoading = false
}
})
},
handleCancel() {
this.formInline = {}
this.visible = false
},
handleInput(value) {
this.$nextTick(() => {
this.formInline = { ...this.formInline }
this.$refs.ruleForm.validateField([value])
})
},
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>
<style>
.formAdd .ant-form-item-label {
width: 130px;
}
.formAdd .ant-form-item-control-wrapper {
display: inline-block;
width: calc(100% - 130px);
}
/*.formAdd .ant-form-item {*/
/* margin-bottom: 20px;*/
/*}*/
.itemModel .ant-form-item-control-wrapper {
width: 100%;
}
.box-input .ant-select-selection--single {
height: 38px;
}
.box-input .ant-select-selection--multiple {
height: 38px;
}
.box-input .ant-select-selection__rendered {
line-height: 38px;
height: 38px;
}
.box-input .ant-select-selection--multiple .ant-select-selection__rendered > ul > li {
margin-top: 6px;
}
.box-input .ant-calendar-picker {
line-height: 38px;
height: 38px;
}
.box-input .ant-calendar-picker-input {
height: 38px;
}
.box-input .ant-input-number-input-wrap {
line-height: 38px;
height: 38px;
}
</style>
<style scoped>
.box-title-text {
line-height: 1.4;
display: flex;
}
.title-text {
width: 174px;
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: 42px;
}
.box-input {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.title-text-text {
margin-top: 9px;
}
.formAdd {
margin-bottom: 40px;
}
</style>