[add] 企标计划模块

This commit is contained in:
lideqin
2023-09-13 14:54:33 +08:00
parent ca0d95222e
commit e66a77e811
5 changed files with 588 additions and 2 deletions
@@ -0,0 +1,437 @@
<template>
<a-card :bordered="false">
<!-- 搜索区域 -->
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.oldEnterpriseStandardNum')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.oldEnterpriseStandardNum')" v-model="queryParam.oldStandardNo"></a-input>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.newEnterpriseStandardNum')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.newEnterpriseStandardNum')" v-model="queryParam.newStandardNo"></a-input>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.oldEnterpriseStandardName')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.oldEnterpriseStandardName')" v-model="queryParam.oldStandardName"></a-input>
</a-form-item>
</a-col>
<template v-if="toggleSearchStatus">
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.newEnterpriseStandardName')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.newEnterpriseStandardName')" v-model="queryParam.newStandardName"></a-input>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.principalDrafter')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.principalDrafter')" v-model="queryParam.principalDrafter"></a-input>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.mainDraftingUnit')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-tree-select
tree-node-filter-prop="title"
v-model="queryParam.departId"
:maxTagCount="1"
:show-search="true"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
class="box-input"
style="width: 100%"
:tree-data="categoryTreeList"
:placeholder="$t('pleaseSelect') + $t('enterpriseStandardLibrary.plan.mainDraftingUnit')"
/>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.headOfMainDraftingUnit')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.headOfMainDraftingUnit')" v-model="queryParam.headOfMainDraftingUnit"></a-input>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.projectStatus')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.projectStatus')"
dict-code="inspect_status"
v-model="queryParam.projectStatus">
</j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.changeState')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.changeState')"
dict-code="inspect_status"
v-model="queryParam.changeState">
</j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.pusherWorkNo')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-input :placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.pusherWorkNo')" v-model="queryParam.pusherWorkNo"></a-input>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.standardType')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.standardType')"
dict-code="inspect_status"
v-model="queryParam.standardType">
</j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.revisionType')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<j-dict-select-tag
:placeholder="$t('pleaseEnter')+$t('enterpriseStandardLibrary.plan.revisionType')"
dict-code="inspect_status"
v-model="queryParam.revisionType">
</j-dict-select-tag>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.planApprovalDate')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-range-picker
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
@change="planApprovalDateChange"
v-model="queryParam.planApprovalDate">
</a-range-picker>
</a-form-item>
</a-col>
<a-col :span="6">
<a-form-item :label="$t('enterpriseStandardLibrary.plan.createDate')" :labelCol="labelCol" :wrapperCol="wrapperCol">
<a-range-picker
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
@change="createDateChange"
v-model="queryParam.createDate">
</a-range-picker>
</a-form-item>
</a-col>
</template>
<div style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
<a @click="handleToggleSearch">
{{ toggleSearchStatus ? $t('putAway') : $t('open') }}
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
</a>
<a-button type="primary" @click="searchQuery" icon="search" style="margin-left: 8px">{{ $t('query') }}</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
</div>
</a-row>
</a-form>
</div>
<!-- 操作区域 -->
<div class="table-operator">
<!-- 导出-->
<a-button icon="upload" type="primary" ghost @click="handleExportXls($t('enterpriseStandardLibrary.plan.exportFileName'))">
{{ $t('export') }}
</a-button>
</div>
<div>
<j-table
:can-drag="true"
:scroll="{x: '100%'}"
ref="table"
size="middle"
rowKey="id"
:columns="columns"
:dataSource="dataSource"
:pagination="ipagination"
:loading="loading"
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
@change="handleTableChange">
<!-- 原企标编号/原企标名称 -->
<template v-slot:toDetailOld="{text, record}">
<a-tooltip overlay-class-name="tooltip-style">
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
<a class="link-a" @click="handleGoDetailOld(record)">{{ text }}</a>
</a-tooltip>
</template>
<!-- 新企标编号/新企标名称 -->
<template v-slot:toDetailNew="{text, record}">
<a-tooltip overlay-class-name="tooltip-style">
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
<a class="link-a" @click="handleGoDetailNew(record)">{{ text }}</a>
</a-tooltip>
</template>
<!-- 草稿计划完成日期征求意见稿计划完成日期计划报批日期 当前日期大于计划日期时标红 -->
<template slot="specialDate" slot-scope="{text}">
<a-tooltip overlay-class-name="tooltip-style">
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
<div class="table-text">{{ text || text === 0 ? text : global.emptyLine }}</div>
</a-tooltip>
</template>
<!-- 操作栏 -->
<div slot="action" slot-scope="{text, record}" class="action-span-cell">
<a @click="handleDetail(record)" class="table-ope-btn">{{ $t('view') }}</a>
<a @click="handleDelete(record.id)" class="table-ope-btn">{{ $t('delete') }}</a>
</div>
</j-table>
</div>
</a-card>
</template>
<script>
import '@assets/less/common.less'
import { queryDepartTreeList } from '@/api/api'
import JTable from '@/components/jero/JTable'
import { JeroListMixin } from '@/mixins/JeroListMixin'
export default {
name: 'PlanList',
components: { JTable },
mixins: [JeroListMixin],
data () {
return {
categoryTreeList: [], // 组织机构下拉框数据
columns: [
{
title: this.$t('enterpriseStandardLibrary.plan.revisionType'),
align: 'center',
width: 180,
dataIndex: 'revisionType',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.oldEnterpriseStandardNum'),
align: 'center',
width: 180,
dataIndex: 'oldEnterpriseStandardNum',
scopedSlots: { customRender: 'toDetailOld' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.newEnterpriseStandardNum'),
align: 'center',
width: 180,
dataIndex: 'newEnterpriseStandardNum',
scopedSlots: { customRender: 'toDetailNew' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.oldEnterpriseStandardName'),
align: 'center',
width: 180,
dataIndex: 'oldEnterpriseStandardName',
scopedSlots: { customRender: 'toDetailOld' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.newEnterpriseStandardName'),
align: 'center',
width: 180,
dataIndex: 'newEnterpriseStandardName',
scopedSlots: { customRender: 'toDetailNew' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.authDepartment'),
align: 'center',
width: 180,
dataIndex: 'authDepartment',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.enterpriseStandardCode'),
align: 'center',
width: 180,
dataIndex: 'enterpriseStandardCode',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.suitUnit'),
align: 'center',
width: 180,
dataIndex: 'suitUnit',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.principalDrafter'),
align: 'center',
width: 180,
dataIndex: 'principalDrafter',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.mainDraftingUnit'),
align: 'center',
width: 180,
dataIndex: 'mainDraftingUnit',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.headOfMainDraftingUnit'),
align: 'center',
width: 180,
dataIndex: 'headOfMainDraftingUnit',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.standardPusher'),
align: 'center',
width: 180,
dataIndex: 'standardPusher',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.draftPlanFinishDate'),
align: 'center',
width: 180,
dataIndex: 'draftPlanFinishDate',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.exposureDraftPlanFinishDate'),
align: 'center',
width: 180,
dataIndex: 'exposureDraftPlanFinishDate',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.planSubmissionDate'),
align: 'center',
width: 180,
dataIndex: 'planSubmissionDate',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.draftFinishDate'),
align: 'center',
width: 180,
dataIndex: 'draftFinishDate',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.submitDraftDate'),
align: 'center',
width: 180,
dataIndex: 'submitDraftDate',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.isAskForAdvice'),
align: 'center',
width: 180,
dataIndex: 'isAskForAdvice',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.exposureDraftFinishDate'),
align: 'center',
width: 180,
dataIndex: 'exposureDraftFinishDate',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.reviewDate'),
align: 'center',
width: 180,
dataIndex: 'reviewDate',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.submissionDate'),
align: 'center',
width: 180,
dataIndex: 'submissionDate',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.releaseDate'),
align: 'center',
width: 180,
dataIndex: 'releaseDate',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.projectStatus'),
align: 'center',
width: 180,
dataIndex: 'projectStatus',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('enterpriseStandardLibrary.plan.changeState'),
align: 'center',
width: 180,
dataIndex: 'changeState',
scopedSlots: { customRender: 'text' }
},
{
title: this.$t('operation'),
scopedSlots: { customRender: 'action' },
align: 'center',
width: 200
}
],
dataSource: [{ id: 1 }],
url: {
list: ''
}
}
},
mounted () {
this.getSysCategoryTree()
},
methods: {
// 获取组织机构树
getSysCategoryTree () {
queryDepartTreeList().then((res) => {
if (res.success) {
this.categoryTreeList = res.result
} else {
this.categoryTreeList = []
}
})
},
// 计划报批日期改变
planApprovalDateChange (val) {
this.queryParam.planApprovalStartDate = val[0]
this.queryParam.planApprovalEndDate = val[1]
},
// 创建日期日期改变
createDateChange (val) {
this.queryParam.createStartDate = val[0]
this.queryParam.createEndDate = val[1]
},
// 原企标点击跳转企标详情
handleGoDetailOld (record) {
this.$openPageNewSheet({
path: '/enterpriseStandardLibrary/enterpriseStandardDetail',
query: {
id: record.id
}
})
},
// 新企标点击跳转企标详情
handleGoDetailNew (record) {
this.$openPageNewSheet({
path: '/enterpriseStandardLibrary/enterpriseStandardDetail',
query: {
id: record.id
}
})
},
handleDetail (record) {
this.$openPageNewSheet({
path: '/enterpriseStandardLibrary/planDetail',
query: {
id: record.id
}
})
}
}
}
</script>
<style scoped>
</style>
@@ -0,0 +1,85 @@
<template>
<div class="detail-page">
<div class="detail-page-title">{{ pageTitle }}{{ $t('enterpriseStandardLibrary.plan.detailTitle') }}</div>
<div class="detail-page-part" v-for="(part, index) in partList" :key="part + index">
<div class="detail-page-part-title">
<span>{{ part }}</span>
</div>
<div class="detail-page-part-form" v-if="index !== 3">
<div class="detail-page-part-form-item" v-for="formItem in form[part]" :key="formItem.id">
<label>{{ formItem.dbFieldTxt }}</label>
<span>{{ detailData[formItem.dbFieldName] }}</span>
</div>
</div>
</div>
</div>
</template>
<script>
import { getEnterpriseStandardPlanInfoById } from '@/api/enterpriseStandardLibraryApi'
export default {
name: 'PlanDetail',
data () {
return {
partList: [], // 页面模块列表
form: {}, // 页面字段
detailData: {
modification_list: [
{
id: 1,
fileName: '国内文字占位符段落标题标准.pdf'
},
{
id: 2,
fileName: '国内标准国内文字占位符段落标题标准.pdf'
},
{
id: 3,
fileName: '国内标准国内标准.pdf'
}
],
draft_for_review: [{
id: 11,
fileName: '国内文字占位符段落标题标准.pdf'
}],
draft_for_approval: [{
id: 21,
fileName: '国内标准国内文字占位符段落标题标准.pdf'
}],
draft_for_comment: [{
id: 31,
fileName: '国内标准国内标准.pdf'
}],
draft: [{
id: 311,
fileName: '国内标准国内标准.pdf'
}]
} // 页面数据
}
},
created () {
this.initForm()
},
methods: {
initForm () {
const params = {}
params.id = this.$route.query.id
params.module = '3'
getEnterpriseStandardPlanInfoById(params).then(res => {
if (res.success) {
const data = res.result || {}
this.partList = Object.keys(data)
this.form = data
} else {
this.$message.warn(res.message)
}
})
}
}
}
</script>
<style scoped>
</style>