合并分支 'fix_20230508' 到 'master'

Fix 20230508

查看合并请求 laws-nio/laws-weilai!324
This commit is contained in:
高嵩
2023-05-15 09:01:54 +08:00
18 changed files with 611 additions and 267 deletions
@@ -106,4 +106,8 @@ public class ProjectRelatedPersonnel implements Serializable {
//批量设置传参ids //批量设置传参ids
@TableField(exist = false) @TableField(exist = false)
private String ids; private String ids;
// 一级责任领域(统计节点)
@TableField(exist = false)
private String firstLevelDutyTerritory;
} }
@@ -28,8 +28,10 @@ import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysDictItemMapper; import com.jero.modules.system.mapper.SysDictItemMapper;
import com.jero.modules.system.mapper.SysDictMapper; import com.jero.modules.system.mapper.SysDictMapper;
import com.jero.modules.system.mapper.SysUserMapper; import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysDictService; import com.jero.modules.system.service.ISysDictService;
import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
import com.jero.modules.system.util.StringUtils; import com.jero.modules.system.util.StringUtils;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
@@ -108,6 +110,9 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
@Autowired @Autowired
private ProjectLibraryBaseMapper projectLibraryBaseMapper; private ProjectLibraryBaseMapper projectLibraryBaseMapper;
@Autowired
private ISysDictItemService sysDictItemService;
/** /**
* 保存 * 保存
* *
@@ -334,6 +339,9 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
} }
public void disposeData(List<ProjectRelatedPersonnel> records) { public void disposeData(List<ProjectRelatedPersonnel> records) {
List<SysDictItem> sysDictItems = this.sysDictItemService.selectItemsAll();
Map<String, List<SysDictItem>> firstLevelDutyTerritoryMap = this.sysDictItemService.getFirstLevelSysDictItemByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue(),sysDictItems);
for (ProjectRelatedPersonnel projectRelatedPersonnel:records) { for (ProjectRelatedPersonnel projectRelatedPersonnel:records) {
//法规工程师 //法规工程师
List<SysUser> lawEngineerUsers = new ArrayList<>(); List<SysUser> lawEngineerUsers = new ArrayList<>();
@@ -459,6 +467,28 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
projectRelatedPersonnel.setEngineerAttSetName(AttSetName.substring(0,AttSetName.toString().length()-1)); projectRelatedPersonnel.setEngineerAttSetName(AttSetName.substring(0,AttSetName.toString().length()-1));
} }
} }
String dutyTerritory = projectRelatedPersonnel.getDutyTerritory();
for (Map.Entry<String, List<SysDictItem>> firstLevelMap : firstLevelDutyTerritoryMap.entrySet()) {
String firstLevel = firstLevelMap.getKey();
List<SysDictItem> dutyTerritoryList = firstLevelMap.getValue();
if(StringUtils.isEmpty(firstLevel) && CollectionUtils.isEmpty(dutyTerritoryList)){
continue;
}
List<SysDictItem> dutyTerritoryListTemp = dutyTerritoryList.stream().filter(sysDictItem -> {
boolean flag = false;
if (StringUtils.equals(sysDictItem.getItemValue(), dutyTerritory)) {
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(dutyTerritoryListTemp)){
projectRelatedPersonnel.setFirstLevelDutyTerritory(firstLevel);
break;
}
}
} }
} }
+3
View File
@@ -1831,4 +1831,7 @@ module.exports = {
proportionWithInTheAreaOfResponsibility:'Proportion within the area of responsibility', proportionWithInTheAreaOfResponsibility:'Proportion within the area of responsibility',
contentsearch:'Content Search', contentsearch:'Content Search',
masterProject:'Master Project', masterProject:'Master Project',
deliveryTime:'Delivery Time',
expectedDeliveryTime:'Expected Delivery Time',
changeAuthor:'Change Author',
} }
+3
View File
@@ -1932,4 +1932,7 @@ module.exports = {
proportionWithInTheAreaOfResponsibility:'责任领域内占比', proportionWithInTheAreaOfResponsibility:'责任领域内占比',
contentsearch:'内容搜索', contentsearch:'内容搜索',
masterProject:'主项目', masterProject:'主项目',
deliveryTime:'交付时间',
expectedDeliveryTime:'预计交付时间',
changeAuthor:'更改作者',
} }
@@ -12,9 +12,9 @@
<div style="padding-top: 68px;background: #fff"> <div style="padding-top: 68px;background: #fff">
<div class="detail-content" style="padding: 30px"> <div class="detail-content" style="padding: 30px">
<div class="search-detail-wrap"> <div class="search-detail-wrap">
<a-form layout="inline" style="width: 1200px;margin: 0 auto" @keyup.enter.native="onSearch"> <a-form layout="inline" @keyup.enter.native="onSearch">
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :span="10"> <a-col :span="6">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text" :title="$t('searchContent')"> <div class="title-text" :title="$t('searchContent')">
<span>{{$t('searchContent')}}</span> <span>{{$t('searchContent')}}</span>
@@ -23,7 +23,7 @@
v-model="queryParam.searchStr"></a-input> v-model="queryParam.searchStr"></a-input>
</div> </div>
</a-col> </a-col>
<a-col :span="10"> <a-col :span="6">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text" :title="$t('releaseStatus')"> <div class="title-text" :title="$t('releaseStatus')">
<span>{{$t('releaseStatus')}}</span> <span>{{$t('releaseStatus')}}</span>
@@ -40,10 +40,29 @@
</a-select> </a-select>
</div> </div>
</a-col> </a-col>
<a-col :span="6">
<div class="box-title-text">
<div class="title-text" :title="$t('displayPermission')">
<span>{{$t('displayPermission')}}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('displayPermission')"
v-model="queryParam.showPermissions">
<a-select-option v-for="(item, key) in projectNameList"
:key="key"
:value="item.value">
<span class="selectText" :title=" item.name ">
{{ item.name}}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<div style="text-align: right"> <div style="text-align: right">
<a-button class="box-button" @click="ResetSearch">{{$t('reset')}} <a-button class="box-button" @click="ResetSearch">{{$t('reset')}}
</a-button> </a-button>
<a-button class="box-button" style="margin-left: 8px" type="primary" @click="onSearch">{{$t('query')}}</a-button> <a-button class="box-button" style="margin-left: 8px" type="primary" @click="onSearch">
{{$t('query')}}
</a-button>
</div> </div>
</a-row> </a-row>
</a-form> </a-form>
@@ -55,7 +74,7 @@
<!-- <a-checkbox :value="item.id" class="checkbox-left"></a-checkbox>--> <!-- <a-checkbox :value="item.id" class="checkbox-left"></a-checkbox>-->
<div class="text-text-right"> <div class="text-text-right">
<div class="text-header" @click="titleClick(item)"> <div class="text-header" @click="titleClick(item)">
<a-tooltip placement="topLeft" :mouseEnterDelay="0.5"> <a-tooltip placement="topLeft" overlayClassName="header-top" :mouseEnterDelay="0.5">
<template slot="title"> <template slot="title">
<span v-html="item.title"></span> <span v-html="item.title"></span>
</template> </template>
@@ -75,6 +94,8 @@
{{item.createBy}} {{item.createBy}}
</div> </div>
<div class="text-text-right-text"> <div class="text-text-right-text">
<a style="margin-right: 10px" @click="changeAuthorClick(item)"
v-if="administrators">{{$t('changeAuthor')}}</a>
<a style="margin-right: 10px" @click="edit(item)" <a style="margin-right: 10px" @click="edit(item)"
v-if="userInfoQuery.username == item.createBy || administrators">{{$t('edit')}}</a> v-if="userInfoQuery.username == item.createBy || administrators">{{$t('edit')}}</a>
<a @click="deleteData(item)" <a @click="deleteData(item)"
@@ -103,15 +124,21 @@
</div> </div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading> <JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
</div> </div>
<SelectedBy ref="SelectedByRef" :isSingleChoice="true"
:title="$t('changeAuthor')" @SelectedByForm="SelectedByForm"></SelectedBy>
</div> </div>
</template> </template>
<script> <script>
import { getAction, postAction, putAction, deleteAction } from '@/api/manage' import { getAction, postAction, putAction, deleteAction } from '@/api/manage'
import SelectedBy from '@/components/SelectedBy/index'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
export default { export default {
name: 'problemKnowledgeBaseRelease', name: 'problemKnowledgeBaseRelease',
components: {
SelectedBy
},
data() { data() {
return { return {
checkboxText: [], checkboxText: [],
@@ -129,14 +156,26 @@
value: 'Have released' value: 'Have released'
} }
], ],
projectNameList: [
{
value: 'Open',
name: this.$t('OpenOne')
},
{
value: 'Privacy',
name: this.$t('Privacy')
}
],
loading: false, loading: false,
administrators: false, administrators: false,
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download', downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
pageNo: 1, pageNo: 1,
userInfoQuery: {}, userInfoQuery: {},
formInline: {},
url: { url: {
getInfoList: '/problemKnowledgeBase/problemKnowledgeBaseEO/page', getInfoList: '/problemKnowledgeBase/problemKnowledgeBaseEO/page',
deleteBatch: '/problemKnowledgeBase/problemKnowledgeBaseEO/deleteBatch' deleteBatch: '/problemKnowledgeBase/problemKnowledgeBaseEO/deleteBatch',
edit: '/problemKnowledgeBase/problemKnowledgeBaseEO/edit'
} }
} }
}, },
@@ -155,6 +194,28 @@
}, },
methods: { methods: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo']),
changeAuthorClick(item) {
this.formInline = item
this.$refs.SelectedByRef.getPush()
},
//转办接口
SelectedByForm(userIds, name) {
let query = {
createBy: name,
id: this.formInline.id
}
putAction(this.url.edit, query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.$refs.SelectedByRef.visible = false
this.$refs.SelectedByRef.submitLoading = false
this.getList()
} else {
this.$refs.SelectedByRef.submitLoading = false
this.$message.warning(this.$t('operationFailed'))
}
})
},
pageOnChange(page, pageSize) { pageOnChange(page, pageSize) {
this.pageNo = page this.pageNo = page
this.getList() this.getList()
@@ -252,7 +313,7 @@
</script> </script>
<style scoped lang="less"> <style scoped lang="less">
@import'~@assets/less/common.less'; @import '~@assets/less/common.less';
.doc-detail { .doc-detail {
background: #fff; background: #fff;
@@ -328,7 +389,7 @@
.text-text-right { .text-text-right {
padding: 19px 19px; padding: 19px 19px;
width: calc(100% - 540px); width: calc(100% - 570px);
box-sizing: border-box; box-sizing: border-box;
/*margin-left: 38px;*/ /*margin-left: 38px;*/
} }
@@ -338,7 +399,7 @@
height: 100%; height: 100%;
text-align: center; text-align: center;
position: absolute; position: absolute;
right: 300px; right: 330px;
top: 50%; top: 50%;
transform: translate-Y(-50%); transform: translate-Y(-50%);
} }
@@ -348,7 +409,7 @@
height: 100%; height: 100%;
text-align: center; text-align: center;
position: absolute; position: absolute;
right: 420px; right: 450px;
top: 50%; top: 50%;
transform: translate-Y(-50%); transform: translate-Y(-50%);
} }
@@ -358,13 +419,13 @@
height: 100%; height: 100%;
text-align: center; text-align: center;
position: absolute; position: absolute;
right: 180px; right: 210px;
top: 50%; top: 50%;
transform: translate-Y(-50%); transform: translate-Y(-50%);
} }
.text-text-right-text { .text-text-right-text {
width: 180px; width: 210px;
height: 100%; height: 100%;
text-align: center; text-align: center;
position: absolute; position: absolute;
@@ -473,4 +534,9 @@
.box-button { .box-button {
height: 38px; height: 38px;
} }
</style>
<style>
.header-top .ant-tooltip-inner{
color: #333!important;
}
</style> </style>
@@ -1,7 +1,7 @@
<template> <template>
<div class="monthlyReportRegulations-box"> <div class="monthlyReportRegulations-box">
<div class="header-text"> <div class="header-text">
<div class="header-text-left">{{this.$t('monthlyReportRegulations')}}</div> <div class="header-text-left">{{this.$t('problemKnowledgeBase')}}</div>
<div class="header-text-right" @click="moreClick"> <div class="header-text-right" @click="moreClick">
More More
<img src="../../../assets/gengduo.png" alt=""> <img src="../../../assets/gengduo.png" alt="">
@@ -846,11 +846,11 @@
} }
.text-field-right { .text-field-right {
width: calc(66.6% - 130px); width: calc(100% - 130px);
display: inline-block; display: inline-block;
font-size: 14px; font-size: 14px;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: pre-wrap;
word-break: break-word; word-break: break-word;
overflow: hidden; overflow: hidden;
float: left; float: left;
@@ -26,6 +26,7 @@
</div> </div>
<div class="dic-list-table"> <div class="dic-list-table">
<list-table v-if="dictVal=='list'&&dataFlag" :tableData="tableData" @editDict="editDict" <list-table v-if="dictVal=='list'&&dataFlag" :tableData="tableData" @editDict="editDict"
:record="record"
@deleteDict="deleteDict" :total="total" :queryParams="queryParams" @selected="selectedKeys" @deleteDict="deleteDict" :total="total" :queryParams="queryParams" @selected="selectedKeys"
@ok="ok"></list-table> @ok="ok"></list-table>
<tree-table v-if="dictVal=='tree'&&dataFlag" :tabletreeData="tabletreeData" :record="record" <tree-table v-if="dictVal=='tree'&&dataFlag" :tabletreeData="tabletreeData" :record="record"
@@ -1,30 +1,30 @@
<template> <template>
<div class="list-table"> <div class="list-table">
<a-table :data-source="tableData" :scroll="{x: 900}" <a-table :data-source="tableData" :scroll="{x: 900}"
:columns="columns" rowKey="id" :columns="columns" rowKey="id"
:components="drag(columns,'columns')" :components="drag(columns,'columns')"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:pagination="false" :pagination="false"
class="tag-con-table"> class="tag-con-table">
<template slot="action" slot-scope="text, record"> <template slot="action" slot-scope="text, record">
<a class="action-edit" href="javascript:;" @click="actionEdit(record)" v-has="'bqnrzdpzxlbj'">{{$t('edit')}}</a> <a class="action-edit" href="javascript:;" @click="actionEdit(record)" v-has="'bqnrzdpzxlbj'">{{$t('edit')}}</a>
<a class="action-delete" href="javascript:;" @click="onDelete(record)" v-has="'dictItem:logicDelete'">{{$t('delete')}}</a> <a class="action-delete" href="javascript:;" @click="onDelete(record)" v-has="'dictItem:logicDelete'">{{$t('delete')}}</a>
</template> </template>
</a-table> </a-table>
<div class="page" v-if="tableData.length > 0"> <div class="page" v-if="tableData.length > 0">
<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
:current="queryParams.pageNo" :current="queryParams.pageNo"
:page-size.sync="queryParams.pageSize" :page-size.sync="queryParams.pageSize"
:total="total" :total="total"
@change="onChangePage" @change="onChangePage"
@showSizeChange="SizeChange" @showSizeChange="SizeChange"
/> />
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
@@ -32,115 +32,140 @@
export default { export default {
name: 'listTable', name: 'listTable',
props:{ props: {
tableData:Array, tableData: Array,
total:Number, total: Number,
queryParams: Object queryParams: Object,
record: Object
}, },
mixins:[ResizeHeader, ResizeColumnProvide], mixins: [ResizeHeader, ResizeColumnProvide],
data(){ data() {
return{ return {
// tableData:[], // tableData:[],
selectedRowKeys:[], selectedRowKeys: [],
// total:0, // total:0,
// queryParams:{ // queryParams:{
// pageNo:1, // pageNo:1,
// pageSize:10 // pageSize:10
// }, //搜索条件 // }, //搜索条件
columns: [ columnsAll: [
{ {
title: this.$t('name'), title: this.$t('name'),
dataIndex: 'itemText', dataIndex: 'itemText',
key: 'itemText', key: 'itemText',
align: "left", align: 'left',
ellipsis: true, ellipsis: true,
width: 100, width: 100
}, },
{ {
title: this.$t('enName'), title: this.$t('enName'),
align: "left", align: 'left',
width: 100, width: 100,
ellipsis: true, ellipsis: true,
dataIndex: 'enName', dataIndex: 'enName'
},
{
title: this.$t('statisticalNodes'),
align: 'left',
dataIndex: 'statNode',
ellipsis: true,
width: 100
}, },
{ {
title: this.$t('describe'), title: this.$t('describe'),
align: "left", align: 'left',
width: 100, width: 100,
ellipsis: true, ellipsis: true,
dataIndex: 'description', dataIndex: 'description'
}, },
{ {
title: this.$t('operation'), title: this.$t('operation'),
dataIndex: 'action', dataIndex: 'action',
scopedSlots: {customRender: 'action'}, scopedSlots: { customRender: 'action' },
align: "left", align: 'left',
width: 170 width: 170
} }
], ],
dataFlag:false dataFlag: false
} }
}, },
mounted() { mounted() {
// this.loadData() // this.loadData()
console.log(this.record)
}, },
methods:{ computed: {
//获取列表数据 columns() {
loadData(){ let columnsAll = JSON.parse(JSON.stringify(this.columnsAll))
this.dataFlag=false if (this.record.id != '1513417672023441409') {
let params={ for (let i = 0; i < columnsAll.length; i++) {
...this.queryParams, if (columnsAll[i].dataIndex == 'statNode') {
dictId:this.record.id columnsAll.splice(i, 1)
i--
}
}
} }
getAction(`sys/dictItem/page`,params).then(res=>{ return columnsAll
if(res.success){ }
this.tableData=[...res.result.records] },
this.dataFlag=true methods: {
//获取列表数据
loadData() {
this.dataFlag = false
let params = {
...this.queryParams,
dictId: this.record.id
}
getAction(`sys/dictItem/page`, params).then(res => {
if (res.success) {
this.tableData = [...res.result.records]
this.dataFlag = true
} }
}) })
}, },
//编辑 //编辑
actionEdit(val){ actionEdit(val) {
this.$emit('editDict',val,true) this.$emit('editDict', val, true)
}, },
//删除 //删除
onDelete(val){ onDelete(val) {
this.$emit('deleteDict',val.id,true) this.$emit('deleteDict', val.id, true)
}, },
onSelectChange(selectedRowKeys) { onSelectChange(selectedRowKeys) {
this.selectedRowKeys = selectedRowKeys; this.selectedRowKeys = selectedRowKeys
this.$emit('selected',this.selectedRowKeys) this.$emit('selected', this.selectedRowKeys)
}, },
//点击页数 //点击页数
onChangePage(page,pageSize){ onChangePage(page, pageSize) {
this.queryParams.pageNo = page this.queryParams.pageNo = page
this.$emit('ok',this.queryParams) this.$emit('ok', this.queryParams)
// this.loadData() // this.loadData()
}, },
//一页显示条数 //一页显示条数
SizeChange(page,pageSize){ SizeChange(page, pageSize) {
this.queryParams.pageSize = pageSize this.queryParams.pageSize = pageSize
this.queryParams.pageNo=1 this.queryParams.pageNo = 1
this.$emit('ok',this.queryParams) this.$emit('ok', this.queryParams)
// this.loadData() // this.loadData()
}, }
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.list-table{ .list-table {
.tag-con-table{ .tag-con-table {
.action-edit{ .action-edit {
margin-right: 5px; margin-right: 5px;
} }
.action-delete{
color:red; .action-delete {
color: red;
} }
} }
.page{
.page {
margin-top: 20px; margin-top: 20px;
text-align: right; text-align: right;
} }
@@ -270,6 +270,9 @@
this.textColor(this.$t('projectDetails')) this.textColor(this.$t('projectDetails'))
this.textTitle = this.$t('projectDetails') this.textTitle = this.$t('projectDetails')
} else if (this.$route.query.type == '102') { } else if (this.$route.query.type == '102') {
if (this.$route.query.dutyTerritoryName){
this.areaOfResponsibilityList = this.$route.query
}
this.textColor(this.$t('listOfRegulations')) this.textColor(this.$t('listOfRegulations'))
this.textTitle = this.$t('listOfRegulations') this.textTitle = this.$t('listOfRegulations')
} else if (this.$route.query.type == '103') { } else if (this.$route.query.type == '103') {
@@ -285,6 +288,9 @@
this.textColor(this.$t('TaskParameterCollection')) this.textColor(this.$t('TaskParameterCollection'))
this.textTitle = this.$t('TaskParameterCollection') this.textTitle = this.$t('TaskParameterCollection')
} else if (this.$route.query.type == '106') { } else if (this.$route.query.type == '106') {
if (this.$route.query.dutyTerritoryName){
this.areaOfResponsibility = this.$route.query
}
this.textColor(this.$t('certificationList')) this.textColor(this.$t('certificationList'))
this.textTitle = this.$t('certificationList') this.textTitle = this.$t('certificationList')
} }
@@ -310,7 +310,7 @@
myChart.on('click', (params) => { myChart.on('click', (params) => {
console.log(params) console.log(params)
let query = { let query = {
title: params.seriesName, title: params.seriesName+'-'+params.name,
projectLibraryId: this.$route.query.id projectLibraryId: this.$route.query.id
} }
if (params.seriesName === this.$t('certificationTaskConfirmation')) { if (params.seriesName === this.$t('certificationTaskConfirmation')) {
@@ -1,6 +1,6 @@
<template> <template>
<a-drawer <a-drawer
:title="$t('Add')" :title="$t('add')"
:maskClosable="false" :maskClosable="false"
:width="1000" :width="1000"
placement="right" placement="right"
@@ -295,6 +295,13 @@
visible: false, visible: false,
queryParam: {}, queryParam: {},
columnsAll: [ columnsAll: [
{
title: this.$t('statisticalNodes'),
align: 'left',
dataIndex: 'firstLevelDutyTerritory',
ellipsis: true,
width: 100
},
{ {
title: this.$t('areaOfResponsibility'), title: this.$t('areaOfResponsibility'),
align: 'left', align: 'left',
@@ -150,21 +150,21 @@
let query = {} let query = {}
if (params.seriesName == this.$t('regulatoryTaskConfirmation')) { if (params.seriesName == this.$t('regulatoryTaskConfirmation')) {
query = { query = {
title: params.seriesName, title: params.seriesName+'-'+params.name,
projectLibraryId: this.$route.query.id, projectLibraryId: this.$route.query.id,
operatorType: 'queryFGTaskToConfirmStatistics', operatorType: 'queryFGTaskToConfirmStatistics',
status: params.data.status status: params.data.status
} }
} else if (params.seriesName == this.$t('designCompliance')) { } else if (params.seriesName == this.$t('designCompliance')) {
query = { query = {
title: params.seriesName, title: params.seriesName+'-'+params.name,
projectLibraryId: this.$route.query.id, projectLibraryId: this.$route.query.id,
operatorType: 'queryDesignStatistics', operatorType: 'queryDesignStatistics',
status: params.data.status status: params.data.status
} }
} else if (params.seriesName == this.$t('verifyCompliance')) { } else if (params.seriesName == this.$t('verifyCompliance')) {
query = { query = {
title: params.seriesName, title: params.seriesName+'-'+params.name,
projectLibraryId: this.$route.query.id, projectLibraryId: this.$route.query.id,
operatorType: 'queryVerifyStatistics', operatorType: 'queryVerifyStatistics',
status: params.data.status status: params.data.status
@@ -0,0 +1,175 @@
<template>
<a-modal
:title="title"
:width="800"
:visible="visible"
:confirm-loading="confirmLoading"
:maskClosable="false"
@cancel="visible = false"
>
<template slot="footer">
<a-button key="back" @click="visible = false">
{{$t('cancel')}}
</a-button>
</template>
<!-- <div style="text-align: right;margin-bottom: 10px">-->
<!-- <div @click="handleExport" class="operator-text">-->
<!-- <a-icon type="export" :rotate="-90"/>-->
<!-- {{$t('export')}}-->
<!-- </div>-->
<!-- </div>-->
<a-table
ref="table"
:components="drag(columns,'columns')"
:loading="loading"
:pagination="false"
:scroll="{x: '100%',y:400}"
:data-source="dataSource"
@change="tableOnChange"
:columns="columns"
>
<!-- -->
<a slot="areaOfResponsibility" @click="areaOfResponsibilityClick(result)" slot-scope="text,result">
{{text}}
</a>
</a-table>
</a-modal>
</template>
<script>
import { getAction, postAction, downloadFile } from '@/api/manage'
import moment from 'moment'
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
export default {
name: 'responsibilityList',
mixins: [ResizeHeader, ResizeColumnProvide],
data() {
return {
visible: false,
title: '',
confirmLoading: false,
loading: false,
dataSource: [],
queryParam: {},
projectInfo: {},
url: {
groupByTerritoryXls: '/project/projectLibraryBase/exportProjectDetailsStatisticsGroupByTerritoryXls',
GroupByTerritory: '/project/projectLibraryBase/getProjectDetailsStatisticsGroupByTerritory'
},
columns: [
{
title: this.$t('areaOfResponsibility'),
dataIndex: 'dutyTerritoryName',
align: 'left',
width: 150,
ellipsis: true,
sorter: true,
scopedSlots: { customRender: 'areaOfResponsibility' }
},
{
title: this.$t('Quantity'),
dataIndex: 'amount',
align: 'left',
ellipsis: true,
width: 150,
sorter: true
},
{
title: this.$t('proportionWithInTheAreaOfResponsibility'),
dataIndex: 'percentage',
align: 'left',
ellipsis: true,
width: 240,
sorter: true
}
]
}
},
mounted() {
},
methods: {
getData(data, projectInfo) {
this.visible = true
this.projectInfo = projectInfo
this.title = data.title
this.queryParam = data
this.getList()
},
tableOnChange(pagination, filters, sorter) {
this.orderBy = sorter.order == 'ascend' ? '1' : '2'
if (sorter.columnKey == 'attestationRank_dictText') {
this.orderByField = 'attestationRank'
} else if (sorter.columnKey == 'dutyTerritory_dictText') {
this.orderByField = 'dutyTerritory'
} else if (sorter.columnKey == 'designDeliverableTypeName') {
this.orderByField = 'designDeliverableType'
} else if (sorter.columnKey == 'verifyDeliverableTypeName') {
this.orderByField = 'verifyDeliverableType'
} else if (sorter.columnKey == 'designDutyIdName') {
this.orderByField = 'designDutyId'
} else if (sorter.columnKey == 'verifyDutyIdName') {
this.orderByField = 'verifyDutyId'
} else if (sorter.columnKey == 'verifyFlowStatusName') {
this.orderByField = 'verifyFlowStatus'
} else if (sorter.columnKey == 'designFlowStatusName') {
this.orderByField = 'designFlowStatus'
} else {
this.orderByField = sorter.columnKey
}
this.getList()
},
getList() {
this.loading = true
let query = {
...this.queryParam,
orderBy: this.orderBy,
orderByField: this.orderByField
}
getAction(this.url.GroupByTerritory, query).then((res) => {
if (res.success) {
this.loading = false
this.dataSource = res.result.dataList || []
} else {
this.loading = false
this.dataSource = []
}
})
},
handleExport() {
downloadFile(this.url.groupByTerritoryXls, this.title + '.xls', this.queryParam)
},
handleCancel() {
this.visible = false
},
areaOfResponsibilityClick(item) {
let type = ''
if (this.queryParam.operatorType == 'queryFGTaskToConfirmStatistics' ||
this.queryParam.operatorType == 'queryDesignStatistics' ||
this.queryParam.operatorType == 'queryVerifyStatistics') {
type = '102'
} else {
type = '106'
}
let query = {
id: this.projectInfo.id,
projectName: this.projectInfo.projectName,
projectNameId: this.projectInfo.projectNameId,
targetMarket: this.projectInfo.targetMarket,
studioEngineer: this.projectInfo.studioEngineer,
type: type,
dutyTerritoryName: item.dutyTerritoryName
}
let newUrl = this.$router.resolve({
path: '/ProjectDetails',
query: query
})
window.open(newUrl.href, '_blank')
}
}
}
</script>
<style scoped>
</style>
@@ -1,108 +1,116 @@
<template> <template>
<a-drawer <div>
:title="title" <a-drawer
:maskClosable="false" :title="title"
:width="1000" :maskClosable="false"
placement="right" :width="1000"
:closable="true" placement="right"
@close="handleCancel" :closable="true"
:visible="visible" @close="handleCancel"
style="height: 100%;overflow: auto;padding-bottom: 53px;"> :visible="visible"
<a-spin :spinning="confirmLoading"> style="height: 100%;overflow: auto;padding-bottom: 53px;">
<div class="box-content" v-if="visible"> <a-spin :spinning="confirmLoading">
<div class="box-content-top" <div class="box-content" v-if="visible">
v-if="projectQuery.name == this.$t('listPublishing') || projectQuery.name == this.$t('responsibilityConfirmation')"> <div class="box-content-top"
<div class="total-text"> v-if="projectQuery.name == this.$t('listPublishing') || projectQuery.name == this.$t('responsibilityConfirmation')">
<span>{{$t('totalTable')+' : '+mainTopNum}}</span> <div class="total-text">
<span>{{$t('totalTable')+' : '+mainTopNum}}</span>
</div>
<div id="main-top"></div>
</div> </div>
<div id="main-top"></div> <div class="box-content-top" v-if="projectQuery.name == this.$t('designVerification')">
</div> <div class="total-text">
<div class="box-content-top" v-if="projectQuery.name == this.$t('designVerification')"> <span>{{$t('totalTable')+' : '+mainLeftNum}}</span>
<div class="total-text"> </div>
<span>{{$t('totalTable')+' : '+mainLeftNum}}</span> <div id="main-left"></div>
</div> </div>
<div id="main-left"></div> <div class="box-content-top" v-if="projectQuery.name == this.$t('verificationAndVerification')">
</div> <div class="total-text">
<div class="box-content-top" v-if="projectQuery.name == this.$t('verificationAndVerification')"> <span>{{$t('totalTable')+' : '+mainRightNum}}</span>
<div class="total-text"> </div>
<span>{{$t('totalTable')+' : '+mainRightNum}}</span> <div id="main-right"></div>
</div> </div>
<div id="main-right"></div> <div class="box-content-top"
</div> v-if="projectQuery.name == this.$t('listPublishing') || projectQuery.name == this.$t('responsibilityConfirmation')">
<div class="box-content-top" <div class="total-text">
v-if="projectQuery.name == this.$t('listPublishing') || projectQuery.name == this.$t('responsibilityConfirmation')"> <span>{{$t('totalTable')+' : '+mainTopNumOne}}</span>
<div class="total-text"> </div>
<span>{{$t('totalTable')+' : '+mainTopNumOne}}</span> <div id="main-top-one"></div>
</div> </div>
<div id="main-top-one"></div> <div class="box-content-top"
</div> v-if="projectQuery.name == this.$t('getStarted') || projectQuery.name == this.$t('certificationStartOne')">
<div class="box-content-top" <div class="total-text">
v-if="projectQuery.name == this.$t('getStarted') || projectQuery.name == this.$t('certificationStartOne')"> <span>{{$t('totalTable')+' : '+mainLeftNumOne}}</span>
<div class="total-text"> </div>
<span>{{$t('totalTable')+' : '+mainLeftNumOne}}</span> <div id="main-right-one"></div>
</div> </div>
<div id="main-right-one"></div> <div class="box-content-top"
</div> v-if="projectQuery.name == this.$t('certificationEnd') || projectQuery.name == this.$t('certificationSubmission')">
<div class="box-content-top" <div class="total-text-text" :class="{'total-text-text-cntop':long == 'zh-cn' ? true:false,
v-if="projectQuery.name == this.$t('certificationEnd') || projectQuery.name == this.$t('certificationSubmission')">
<div class="total-text-text" :class="{'total-text-text-cntop':long == 'zh-cn' ? true:false,
'total-text-text-entop':long == 'zh-cn' ? false:true}"> 'total-text-text-entop':long == 'zh-cn' ? false:true}">
<span>{{$t('totalTable')+' : '+mainBottomNum}}</span> <span>{{$t('totalTable')+' : '+mainBottomNum}}</span>
</div>
<div class="box-content-text">
<div class="box-content-text-text" @click="boxContentClick(0)">
{{$t('whole')}}
</div>
<div class="box-content-text-text" @click="boxContentClick(1)">
{{$t('completeVehicle')}}
</div>
<div class="box-content-text-text" @click="boxContentClick(2)">
{{$t('components')}}
</div>
</div>
<div id="main-bottom"></div>
</div> </div>
<div class="box-content-text"> <div class="table-page-search-wrapper"
<div class="box-content-text-text" @click="boxContentClick(0)"> v-if="this.projectQuery.name == this.$t('getStarted') || this.projectQuery.name == this.$t('certificationStartOne')">
{{$t('whole')}} <a-form layout="inline">
</div> <a-row :gutter="24">
<div class="box-content-text-text" @click="boxContentClick(1)"> <a-col :md="12" :sm="10">
{{$t('completeVehicle')}} <div class="box-title-text">
</div> <div class="title-text" :title="$t('Statisticalmodels')">
<div class="box-content-text-text" @click="boxContentClick(2)"> <span>{{ $t('Statisticalmodels') }}</span>
{{$t('components')}} </div>
</div> <a-radio-group class="box-input"
</div> v-model="queryParam.value" @change="onChange">
<div id="main-bottom"></div> <a-radio :value="1">
</div> {{$t('Thepercentage')}}
<div class="table-page-search-wrapper" </a-radio>
v-if="this.projectQuery.name == this.$t('getStarted') || this.projectQuery.name == this.$t('certificationStartOne')"> <a-radio :value="2">
<a-form layout="inline"> {{$t('Quantity')}}
<a-row :gutter="24"> </a-radio>
<a-col :md="12" :sm="10"> </a-radio-group>
<div class="box-title-text">
<div class="title-text" :title="$t('Statisticalmodels')">
<span>{{ $t('Statisticalmodels') }}</span>
</div> </div>
<a-radio-group class="box-input" </a-col>
v-model="queryParam.value" @change="onChange"> </a-row>
<a-radio :value="1"> </a-form>
{{$t('Thepercentage')}} </div>
</a-radio> <div class="box-content-top-one"
<a-radio :value="2"> v-if="this.projectQuery.name == this.$t('getStarted') || this.projectQuery.name == this.$t('certificationStartOne')">
{{$t('Quantity')}} <div id="main-left-parameter"></div>
</a-radio> </div>
</a-radio-group>
</div>
</a-col>
</a-row>
</a-form>
</div>
<div class="box-content-top-one"
v-if="this.projectQuery.name == this.$t('getStarted') || this.projectQuery.name == this.$t('certificationStartOne')">
<div id="main-left-parameter"></div>
</div> </div>
</a-spin>
<div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
</div> </div>
</a-spin> </a-drawer>
<div class="drawer-bootom-button"> <responsibilityList ref="responsibilityListRef"/>
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button> </div>
</div>
</a-drawer>
</template> </template>
<script> <script>
import * as echarts from 'echarts' import * as echarts from 'echarts'
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage' import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
import responsibilityList from './responsibilityList'
export default { export default {
name: 'statistics', name: 'statistics',
components: {
responsibilityList
},
data() { data() {
return { return {
visible: false, visible: false,
@@ -138,6 +146,7 @@
submitquantity: [], submitquantity: [],
syncReportpercentage: [], syncReportpercentage: [],
syncReportquantity: [], syncReportquantity: [],
projectInfo:{},
long: localStorage.getItem('language') || 'zh-cn', long: localStorage.getItem('language') || 'zh-cn',
certificationProgressMap: {}, certificationProgressMap: {},
url: { url: {
@@ -150,8 +159,9 @@
handleCancel() { handleCancel() {
this.visible = false this.visible = false
}, },
getData(val) { getData(val,projectInfo) {
this.visible = true this.visible = true
this.projectInfo = projectInfo
this.title = val.name this.title = val.name
this.projectQuery = val this.projectQuery = val
this.getEchart() this.getEchart()
@@ -201,7 +211,7 @@
}, },
getEcharts(chart, title, color, data) { getEcharts(chart, title, color, data) {
var myChart = echarts.init(document.getElementById(chart)) let myChart = echarts.init(document.getElementById(chart))
myChart.setOption({ myChart.setOption({
title: { title: {
text: title text: title
@@ -245,31 +255,59 @@
} }
] ]
}) })
myChart.off('click') // 重点代码
myChart.on('click', (params) => { myChart.on('click', (params) => {
let query = {} let query = {}
if (params.seriesName == this.$t('regulatoryTaskConfirmation')) { if (params.seriesName == this.$t('regulatoryTaskConfirmation')) {
query = { query = {
title: params.seriesName, title: params.seriesName + '-' + params.name,
projectLibraryId: this.$route.query.id, projectLibraryId: this.projectQuery.projectId,
operatorType: 'queryFGTaskToConfirmStatistics', operatorType: 'queryFGTaskToConfirmStatistics',
status: params.data.status status: params.data.status
} }
} else if (params.seriesName == this.$t('designCompliance')) { } else if (params.seriesName == this.$t('designCompliance')) {
query = { query = {
title: params.seriesName, title: params.seriesName + '-' + params.name,
projectLibraryId: this.$route.query.id, projectLibraryId: this.projectQuery.projectId,
operatorType: 'queryDesignStatistics', operatorType: 'queryDesignStatistics',
status: params.data.status status: params.data.status
} }
} else if (params.seriesName == this.$t('verifyCompliance')) { } else if (params.seriesName == this.$t('verifyCompliance')) {
query = { query = {
title: params.seriesName, title: params.seriesName + '-' + params.name,
projectLibraryId: this.$route.query.id, projectLibraryId: this.projectQuery.projectId,
operatorType: 'queryVerifyStatistics', operatorType: 'queryVerifyStatistics',
status: params.data.status status: params.data.status
} }
} else if (params.seriesName === this.$t('certificationTaskConfirmation')) {
query = {
title: params.seriesName + '-' + params.name,
projectLibraryId: this.projectQuery.projectId,
operatorType: 'queryRZTaskToConfirmStatistics',
status: params.data.status
}
} else if (params.seriesName === this.$t('preHomoFlow')) {
query = {
title: params.seriesName + '-' + params.name,
projectLibraryId: this.projectQuery.projectId,
operatorType: 'queryPrehomoStatistics',
status: params.data.status
}
} else if (params.seriesName === this.$t('CertificationProgress')) {
query = {
title: params.seriesName + '-' + params.name,
projectLibraryId: this.projectQuery.projectId,
status: params.data.status
}
if (this.num == '0') {
query.operatorType = 'queryCertificationProgressStatisticsAll'
} else if (this.num == '1') {
query.operatorType = 'queryCertificationProgressStatisticsCar'
} else if (this.num == '2') {
query.operatorType = 'queryCertificationProgressStatisticsPart'
}
} }
this.$refs.responsibilityListRef.getData(query) this.$refs.responsibilityListRef.getData(query,this.projectInfo)
}) })
}, },
@@ -500,7 +538,7 @@
this.mainLeftNumOne += res.taskAffirmStatusCount this.mainLeftNumOne += res.taskAffirmStatusCount
}) })
} }
this.getEchartsOne('main-right-one', this.$t('preHomoFlow'), color, data) this.getEcharts('main-right-one', this.$t('preHomoFlow'), color, data)
}, },
mainBottomEcharts(dataSource) { mainBottomEcharts(dataSource) {
@@ -569,79 +607,7 @@
this.mainBottomNum += res.certificationProgressCount this.mainBottomNum += res.certificationProgressCount
}) })
} }
this.getEchartsOne('main-bottom', this.$t('CertificationProgress'), color, data) this.getEcharts('main-bottom', this.$t('CertificationProgress'), color, data)
},
getEchartsOne(chart, title, color, data) {
var myChart = echarts.init(document.getElementById(chart))
myChart.setOption({
title: {
text: title
},
tooltip: {
trigger: 'item',
textStyle: {
fontWeight: 'normal',
fontSize: 14,
color: '#040B29',
fontFamily: 'BlueSkyNoto'
},
formatter: function(parms) {
let str = parms.marker + ' ' + parms.data.name + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + parms.data.value + ' (' + parms.percent + '%)'
return str
}
},
legend: {
itemWidth: 12,
itemHeight: 12,
bottom: '0',
left: 'center',
itemGap: 30,
icon: 'circle'
},
series: [
{
name: title,
type: 'pie',
radius: ['40%', '54%'],
avoidLabelOverlap: false,
label: {
show: false,
position: 'center'
},
labelLine: {
show: false
},
color: color,
data: data
}
]
})
myChart.off('click') // 重点代码
myChart.on('click', (params) => {
console.log(params)
let query = {
title: params.seriesName,
projectLibraryId: this.$route.query.id
}
if (params.seriesName === this.$t('certificationTaskConfirmation')) {
query.operatorType = 'queryRZTaskToConfirmStatistics'
query.status = params.data.status
} else if (params.seriesName === this.$t('preHomoFlow')) {
query.operatorType = 'queryPrehomoStatistics'
query.status = params.data.status
} else if (params.seriesName === this.$t('CertificationProgress')) {
if (this.num == '0') {
query.operatorType = 'queryCertificationProgressStatisticsAll'
} else if (this.num == '1') {
query.operatorType = 'queryCertificationProgressStatisticsCar'
} else if (this.num == '2') {
query.operatorType = 'queryCertificationProgressStatisticsPart'
}
query.status = params.data.status
}
this.$refs.responsibilityListRef.getData(query)
})
}, },
boxContentClick(num) { boxContentClick(num) {
@@ -1034,6 +1000,7 @@
.total-text-text-entop { .total-text-text-entop {
right: 290px; right: 290px;
} }
.box-title-text { .box-title-text {
line-height: 1.4; line-height: 1.4;
display: flex; display: flex;
@@ -92,6 +92,9 @@
<div style="overflow:visible;"> <div style="overflow:visible;">
<div class="box-top-content-left"> <div class="box-top-content-left">
<div class="box-top-content-left-text" <div class="box-top-content-left-text"
:class="{'box-top-content-left-text-projectStatus':
item.projectInfo.projectStatus == '4786d0f0d230454e99a9fce15579eabf' ||
item.projectInfo.projectStatus == 'f737d063de754f2ab1bf51cd4118d04a'?true:false}"
v-for="(item,index) in timeData" :key="index"> v-for="(item,index) in timeData" :key="index">
<a-tooltip overlayClassName="overlayClassName" placement="topLeft"> <a-tooltip overlayClassName="overlayClassName" placement="topLeft">
<template slot="title"> <template slot="title">
@@ -135,19 +138,23 @@
v-if="!val.g" v-if="!val.g"
v-for="(val,indexTwo) in item.data[0]"> v-for="(val,indexTwo) in item.data[0]">
<!-- <div class="process-content-right-top" v-if="indexOne % 2 == 0" :title="val.name">{{ val.name }}</div>--> <!-- <div class="process-content-right-top" v-if="indexOne % 2 == 0" :title="val.name">{{ val.name }}</div>-->
<div @click="statusClick(val)" class="process-content-right-button" :title="val.name">{{ val.name }} <div @click="statusClick(val,item.projectInfo)" class="process-content-right-button"
:title="val.name">{{ val.name }}
</div> </div>
<a-tooltip placement="topLeft" overlayClassName="tooltipColor"> <a-tooltip placement="topLeft" overlayClassName="tooltipColor">
<template slot="title"> <template slot="title">
<span>{{ val.time.slice(0, 11) }}</span> <span>{{ val.time.slice(0, 11) }}</span>
</template> </template>
<img @click="statusClick(val)" v-if="val.status == 1" src="../../../assets/huiBottom.png" <img @click="statusClick(val,item.projectInfo)" v-if="val.status == 1"
src="../../../assets/huiBottom.png"
class="process-content-left" class="process-content-left"
alt=""> alt="">
<img @click="statusClick(val)" v-else-if="val.status == 2" src="../../../assets/kongBottom.png" <img @click="statusClick(val,item.projectInfo)" v-else-if="val.status == 2"
src="../../../assets/kongBottom.png"
class="process-content-left" class="process-content-left"
alt=""> alt="">
<img @click="statusClick(val)" v-else-if="val.status == 3" src="../../../assets/shiBottom.png" <img @click="statusClick(val,item.projectInfo)" v-else-if="val.status == 3"
src="../../../assets/shiBottom.png"
class="process-content-left" class="process-content-left"
alt=""> alt="">
</a-tooltip> </a-tooltip>
@@ -601,8 +608,8 @@
downloadFile('/project/ProjectStatusBoardController/exportXls', downloadFile('/project/ProjectStatusBoardController/exportXls',
this.$t('GRPSystemProjectProgressStatistics') + '.xls', query, this.Deselect) this.$t('GRPSystemProjectProgressStatistics') + '.xls', query, this.Deselect)
}, },
statusClick(val) { statusClick(val, projectInfo) {
this.$refs.statisticsRef.getData(val) this.$refs.statisticsRef.getData(val, projectInfo)
}, },
boxContentClick(num) { boxContentClick(num) {
let boxContentTextColor = document.getElementsByClassName('box-header-text-color') let boxContentTextColor = document.getElementsByClassName('box-header-text-color')
@@ -1024,4 +1031,7 @@
margin-left: 0; margin-left: 0;
} }
} }
.box-top-content-left-text-projectStatus{
color: #9C9FAC;
}
</style> </style>
@@ -2,7 +2,8 @@
<div class="box"> <div class="box">
<div class="box-text"> <div class="box-text">
<div class="header-text"> <div class="header-text">
{{query.TaskKey == 'zrrqr' || query.TaskKey == 'dezrrqr' || query.TaskKey == 'zrrtjjfw' || query.TaskKey == 'dezrrtjjfw' {{query.TaskKey == 'zrrqr' || query.TaskKey == 'dezrrqr' || query.TaskKey == 'zrrtjjfw' || query.TaskKey ==
'dezrrtjjfw'
? $t('personLiableConfirm'):$t('sponsorReview')}} ? $t('personLiableConfirm'):$t('sponsorReview')}}
</div> </div>
</div> </div>
@@ -58,6 +59,26 @@
</a-form-model-item> </a-form-model-item>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24" v-if="isDeliveryTime">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('expectedDeliveryTime')">{{$t('expectedDeliveryTime')}}</span>
</div>
</div>
<a-form-model-item class="itemModel" :prop="'deliveryTime'">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('expectedDeliveryTime')"
@change="dateChange({db_field_name:'deliveryTime'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.deliveryTime"
style="width: 100%"/>
</a-form-model-item>
</a-col>
</a-row>
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :span="24"> <a-col :span="24">
<div class="box-title-text"> <div class="box-title-text">
@@ -105,6 +126,7 @@
import { getAction, postAction, putAction, deleteAction } from '@/api/manage' import { getAction, postAction, putAction, deleteAction } from '@/api/manage'
import uploadFile from '@/components/uploadFile/file' import uploadFile from '@/components/uploadFile/file'
import SelectedBy from '@/components/SelectedBy/index' import SelectedBy from '@/components/SelectedBy/index'
import moment from 'moment'
export default { export default {
name: 'reviewedByThePersonInCharge', name: 'reviewedByThePersonInCharge',
@@ -117,6 +139,7 @@
return { return {
formInline: {}, formInline: {},
isPersonnel: false, isPersonnel: false,
isDeliveryTime: false,
reviewResult: { reviewResult: {
'launch': this.$t('Launch'), 'launch': this.$t('Launch'),
'Compliance': this.$t('accord'), 'Compliance': this.$t('accord'),
@@ -135,6 +158,13 @@
trigger: 'change' trigger: 'change'
} }
], ],
deliveryTime: [
{
required: true,
message: this.$t('expectedDeliveryTime') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
approvalOpinion: [ approvalOpinion: [
{ {
required: true, required: true,
@@ -188,6 +218,11 @@
submit(callBack) { submit(callBack) {
this.$refs.ruleForm.validate(valid => { this.$refs.ruleForm.validate(valid => {
if (valid) { if (valid) {
if (this.formInline.disposeResult == 'To be tracked') {
if (this.query.TaskKey == 'zrrtjjfw' || this.query.TaskKey == 'dezrrtjjfw') {
this.formInline.approvalOpinion = this.formInline.approvalOpinion + ';' + this.$t('expectedDeliveryTime') + ':' + this.formInline.deliveryTime
}
}
callBack(this.formInline) callBack(this.formInline)
} }
}) })
@@ -202,10 +237,18 @@
} else { } else {
this.$refs.SelectedByRef.visible = false this.$refs.SelectedByRef.visible = false
this.isPersonnel = false this.isPersonnel = false
this.isDeliveryTime = false
this.formInline.secondChargePersonUserId = '' this.formInline.secondChargePersonUserId = ''
this.formInline.dezrrSubmitUserName = '' this.formInline.dezrrSubmitUserName = ''
this.formInline.dezrrSubmitUserId = '' this.formInline.dezrrSubmitUserId = ''
} }
if (value.target.value == 'To be tracked') {
this.isDeliveryTime = true
} else {
this.isDeliveryTime = false
this.formInline.deliveryTime = ''
}
this.formInline = { ...this.formInline }
}, },
//转办接口 //转办接口
SelectedByForm(userIds, name) { SelectedByForm(userIds, name) {
@@ -248,6 +291,10 @@
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.ruleForm.validateField([this.uploadName]) this.$refs.ruleForm.validateField([this.uploadName])
}) })
},
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') : ''
this.formInline = { ...this.formInline }
} }
} }
} }