[update] 修改新建流程页,企标计划立项/变更流程

This commit is contained in:
lideqin
2023-10-08 09:28:38 +08:00
parent 1ebd6d3cf2
commit 691270caf0
9 changed files with 926 additions and 63 deletions
+4 -1
View File
@@ -5,6 +5,7 @@ const enterpriseStandardLibrary = require('./enterpriseStandardLibrary/en.js')
const businessSupport = require('./businessSupport/en')
const projectLibrary = require('./projectLibrary/en.js')
const dashboard = require('./dashboard/en')
const workCenter = require('./workCenter/en')
module.exports = {
// 共用
@@ -536,5 +537,7 @@ module.exports = {
// 项目库
projectLibrary,
// 首页
dashboard
dashboard,
// 工作中心
workCenter
}
@@ -155,9 +155,5 @@ module.exports = {
similarEnStandardsAnalysis: '企业同类标准对比分析',
standardLeadingNecessity: '立项标准的领先性与必要性',
projectExpectedEffects: '立项目的及预期效果等'
},
// 企标计划立项/变更流程
initChangeFlow: {
title: '企标立项/变更计划'
}
}
View File
+69
View File
@@ -0,0 +1,69 @@
module.exports = {
// 新建流程页
newProcess: {
externalStandardsManagementProcess: '外部标准管理流程',
standardRegulationEntryCorrectionProcess: '标准法规入库/更正流程',
annotateTheConsultationProcess: '标准征求意见流程',
projectComplianceAssessmentProcess: '项目合规评估流程',
noMatchTrackingProcess: '未符合项跟踪流程',
regulatoryComplianceAssessmentProcess: '法规合规评估流程',
regulatoryProcurementProcess: '法规采购流程',
enterpriseProjectChangePlan: '企标立项/变更计划',
annualRevisionPlanActivelyReport: '年度制修订计划审批流程(各部门主动上报)',
annualRevisionPlanStandardizationInit: '年度制修订计划审批流程(标准化发起)',
enterpriseStandardSystemRevisionProcess: '企标制修订流程',
bidChangeProcess: '企标更改流程',
processOfEnterpriseBidReview: '企标复审流程',
processOfEnterpriseBidAnnulment: '企标废止流程',
processOfSealingEnterpriseStandard: '企标封存流程',
theSealedEnterpriseBidHasBeenActivatedProcess: '已封存企标启用流程',
enterpriseStandardAuditPlan: '企标稽查计划',
processOfEnterpriseStandardAudit: '企标稽查流程',
auditExtensionApplicationProcess: '稽查延期申请流程',
enterpriseStandardInspectionAndRectification: '企标稽查整改',
permissionApplicationProcess: '权限申请流程',
standardPromotionProcess: '标准宣贯流程',
workgroupProcess: '工作组相关流程',
postMeetingManagementProcess: '会后管理流程'
},
// 企标立项/变更计划
enterpriseInitChangePlan: {
applicationType: '申请类型',
standardProjectEstablishment: '标准立项',
change: '变更',
itemCategory: '项目类别',
formulate: '制定',
revise: '修订',
enterpriseStandardNum: '企标编号',
enterpriseStandardName: '企标名称',
enterpriseStandardCode: '企业标准代号',
enterpriseNameCode: '企业名称代号',
standardCategoryCode: '标准类别代号',
yearNumber: '年代号',
newEnterpriseStandardNum: '新企标编号',
newEnterpriseStandardName: '新企标名称',
standardEnglishName: '标准英文名称',
standardSystem: '标准体系',
standardType: '标准类型',
standardGradeClassification: '标准等级分类',
compilationIllustration: '编制说明',
draftPlanFinishDate: '草稿计划完成日期',
exposureDraftPlanFinishDate: '征求意见稿计划完成日期',
planSubmissionDate: '计划报批日期',
partName: '零部件名称',
authorizationDepart: '授权部门',
principalDrafter: '主起草人',
mainDraftUnit: '主起草单位',
headOfMainDraftingUnit: '起草单位负责人',
standardPusher: '标准推进人',
suitUnit: '配合单位',
projectStatement: '立项说明',
projectApprovalChangeReason: '立项/变更原因',
projectBackground: '立项背景、立项依据',
homogeneousStandardAnalysis: '国际、国家及行业同类标准分析',
standardContrastiveAnalysis: '企业同类标准对比分析',
leadershipAndNecessity: '立项标准的领先性与必要性',
initiatedProject: '立项目的及预期效果等',
uploadAttachment: '上传附件'
}
}
+14 -26
View File
@@ -5,6 +5,7 @@ const enterpriseStandardLibrary = require('./enterpriseStandardLibrary/zh.js')
const businessSupport = require('./businessSupport/zh')
const projectLibrary = require('./projectLibrary/zh.js')
const dashboard = require('./dashboard/zh')
const workCenter = require('./workCenter/zh')
module.exports = {
// 共用
@@ -136,7 +137,16 @@ module.exports = {
standardName: '标准名称',
standardNumOrName: '标准编号/标准名称',
fileImportError: '文件导入错误',
flowCenter: '流程中心——',
flowCenter: '流程中心',
processInformation: '流程信息',
basicServiceInformation: '业务基本信息',
processApprovalInformation: '流程审批信息',
processName: '流程名称',
expirationDate: '截止日期',
processExplain: '流程说明',
entrust: '委托',
consent: '同意',
turnDown: '驳回',
// 树右键
treeRight: {
addFolder: '新增文件夹',
@@ -526,30 +536,6 @@ module.exports = {
downTemplate: '点击下载模板',
noFileMsg: '请选择一个文件'
},
// 新建流程页
newProcess: {
externalStandardsManagementProcess: '外部标准管理流程',
standardRegulationEntryCorrectionProcess: '标准法规入库/更正流程',
annotateTheConsultationProcess: '标准征求意见流程',
projectComplianceAssessmentProcess: '项目合规评估流程',
noMatchTrackingProcess: '未符合项跟踪流程',
regulatoryComplianceAssessmentProcess: '法规合规评估流程',
regulatoryProcurementProcess: '法规采购流程',
enterpriseProjectChangePlan: '企标立项/变更计划',
annualRevisionPlanActivelyReport: '年度制修订计划审批流程(各部门主动上报)',
annualRevisionPlanStandardizationInit: '年度制修订计划审批流程(标准化发起)',
enterpriseStandardSystemRevisionProcess: '企标制修订流程',
bidChangeProcess: '企标更改流程',
processOfEnterpriseBidReview: '企标复审流程',
processOfEnterpriseBidAnnulment: '企标废止流程',
processOfSealingEnterpriseStandard: '企标封存流程',
theSealedEnterpriseBidHasBeenActivatedProcess: '已封存企标启用流程',
enterpriseStandardAuditPlan: '企标稽查计划',
processOfEnterpriseStandardAudit: '企标稽查流程',
auditExtensionApplicationProcess: '稽查延期申请流程',
enterpriseStandardInspectionAndRectification: '企标稽查整改',
permissionApplicationProcess: '权限申请流程'
},
// 系统管理
system,
// 个人中心
@@ -563,5 +549,7 @@ module.exports = {
// 项目库
projectLibrary,
// 首页
dashboard
dashboard,
// 工作中心
workCenter
}
@@ -39,7 +39,7 @@
:scroll="{x: 900}"
:data-source="dataList"
:pagination="ipagination"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange, type: changeType }"
:loading="loading">
</a-table>
@@ -72,6 +72,11 @@ export default {
disabledSourceSearch: {
type: Boolean,
default: false
},
// 选择是单选还是多选
changeType: {
type: String,
default: 'checkbox'
}
},
data () {
@@ -59,17 +59,27 @@
@reset="searchReset" />
</div>
<div class="table-operator">
<!-- 新增 -->
<a-button icon="plus" type="primary" @click="handleAdd" v-has="'enterpriseStandard:add'">{{ $t('newlyAdded') }}</a-button>
<!-- 导入 -->
<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
<a-button icon="upload" type="primary" ghost v-has="'enterpriseStandard:upload'">{{ $t('import') }}</a-button>
</a-upload>
<!-- 导出 -->
<a-button icon="export" type="primary" ghost @click="handleExportXls($t('enterpriseStandardLibrary.standard.exportExcelFile'))" v-has="'enterpriseStandard:export'">{{ $t('export') }}</a-button>
<!-- 带文件导出 -->
<a-button icon="mail" type="primary" ghost @click="handleFileExport($t('enterpriseStandardLibrary.standard.exportZipFile'))" v-has="'enterpriseStandard:fileExport'">{{ $t('exportWithFile') }}</a-button>
<!-- 模板下载 -->
<a-button icon="download" type="primary" ghost @click="downTemplate($t('enterpriseStandardLibrary.standard.templateExport'))" v-has="'enterpriseStandard:templateDownload'">{{ $t('templateDownload') }}</a-button>
<!-- 批量删除 -->
<a-button icon="delete" type="primary" ghost @click="batchDel" v-has="'enterpriseStandard:batchDel'">{{ $t('batchDelete') }}</a-button>
<!-- 配置标准 -->
<a-button icon="setting" type="primary" ghost @click="handleAllocationStandard" v-has="'enterpriseStandard:allocationStandard'">{{ $t('enterpriseStandardLibrary.standard.allocationStandard') }}</a-button>
<!-- 移出标准 -->
<a-button icon="minus-circle" type="primary" ghost @click="handleShiftOutStandard" v-has="'enterpriseStandard:shiftOutStandard'">{{ $t('enterpriseStandardLibrary.standard.shiftOutStandard') }}</a-button>
<!-- 发起更改 -->
<a-button icon="setting" type="primary" ghost @click="handleInitChange" v-has="'enterpriseStandard:initChange'">{{ $t('enterpriseStandardLibrary.standard.initChange') }}</a-button>
<!-- 临时权限设置 -->
<a-button icon="setting" type="primary" ghost @click="handleTemporaryPermissSet" v-has="'enterpriseStandard:temporaryPermissSet'">{{ $t('enterpriseStandardLibrary.standard.temporaryPermissionSet') }}</a-button>
</div>
<div>
@@ -174,7 +184,7 @@ import TreeNodeModal from './modules/TreeNodeModal'
import UserSelectModal from '../../../components/selection/UserSelectModal'
// 配置标准弹框
import AllocationStandardDrawer from './modules/AllocationStandardDrawer'
import { postDownFile } from '@/api/manage'
import { postDownFile, downloadFile } from '@/api/manage'
export default {
name: 'EnterpriseStandardList',
@@ -405,6 +415,13 @@ export default {
modalLoading.destroy()
})
},
// 下载导入模板
downTemplate (fileName) {
if (!fileName || typeof fileName !== 'string') {
fileName = '模板文件'
}
downloadFile(this.url.downTemplateUrl, fileName + '.zip')
},
// 配置标准
handleAllocationStandard () {
console.log(this.currentTreeNode)
+26 -26
View File
@@ -17,30 +17,30 @@ export default {
dataList: [
{ // 外部标准管理流程
uid: 1,
text: this.$t('newProcess.externalStandardsManagementProcess'),
text: this.$t('workCenter.newProcess.externalStandardsManagementProcess'),
list: [
{ // 标准法规入库/更正流程
title: this.$t('newProcess.standardRegulationEntryCorrectionProcess'),
title: this.$t('workCenter.newProcess.standardRegulationEntryCorrectionProcess'),
path: '/workCenter/StandardEntryOrChangeProcess'
},
{ // 标准征求意见流程
title: this.$t('newProcess.annotateTheConsultationProcess'),
title: this.$t('workCenter.newProcess.annotateTheConsultationProcess'),
path: ''
},
{ // 项目合规评估流程
title: this.$t('newProcess.projectComplianceAssessmentProcess'),
title: this.$t('workCenter.newProcess.projectComplianceAssessmentProcess'),
path: ''
},
{ // 未符合项跟踪流程
title: this.$t('newProcess.noMatchTrackingProcess'),
title: this.$t('workCenter.newProcess.noMatchTrackingProcess'),
path: ''
},
{ // 法规合规评估流程
title: this.$t('newProcess.regulatoryComplianceAssessmentProcess'),
title: this.$t('workCenter.newProcess.regulatoryComplianceAssessmentProcess'),
path: ''
},
{ // 法规采购流程
title: this.$t('newProcess.regulatoryProcurementProcess'),
title: this.$t('workCenter.newProcess.regulatoryProcurementProcess'),
path: ''
}
]
@@ -50,73 +50,73 @@ export default {
text: '企标管理流程',
list: [
{ // 企标立项/变更计划
title: this.$t('newProcess.enterpriseProjectChangePlan'),
title: this.$t('workCenter.newProcess.enterpriseProjectChangePlan'),
path: '/workCenter/enterpriseStandardInitChange/flow/planApprovalChangeFlow'
},
{ // 年度制修订计划审批流程(各部门主动上报)
title: this.$t('newProcess.annualRevisionPlanActivelyReport'),
title: this.$t('workCenter.newProcess.annualRevisionPlanActivelyReport'),
path: ''
},
{ // 年度制修订计划审批流程(标准化发起)
title: this.$t('newProcess.annualRevisionPlanStandardizationInit'),
title: this.$t('workCenter.newProcess.annualRevisionPlanStandardizationInit'),
path: ''
},
{ // 企标制修订流程
title: this.$t('newProcess.enterpriseStandardSystemRevisionProcess'),
title: this.$t('workCenter.newProcess.enterpriseStandardSystemRevisionProcess'),
path: ''
},
{ // 企标更改流程
title: this.$t('newProcess.bidChangeProcess'),
title: this.$t('workCenter.newProcess.bidChangeProcess'),
path: ''
},
{ // 企标复审流程
title: this.$t('newProcess.processOfEnterpriseBidReview'),
title: this.$t('workCenter.newProcess.processOfEnterpriseBidReview'),
path: ''
},
{ // 企标废止流程
title: this.$t('newProcess.processOfEnterpriseBidAnnulment'),
title: this.$t('workCenter.newProcess.processOfEnterpriseBidAnnulment'),
path: ''
},
{ // 企标封存流程
title: this.$t('newProcess.processOfSealingEnterpriseStandard'),
title: this.$t('workCenter.newProcess.processOfSealingEnterpriseStandard'),
path: ''
},
{ // 已封存企标启用流程
title: this.$t('newProcess.theSealedEnterpriseBidHasBeenActivatedProcess'),
title: this.$t('workCenter.newProcess.theSealedEnterpriseBidHasBeenActivatedProcess'),
path: ''
},
{ // 企标稽查计划
title: this.$t('newProcess.enterpriseStandardAuditPlan'),
title: this.$t('workCenter.newProcess.enterpriseStandardAuditPlan'),
path: ''
},
{ // 企标稽查流程
title: this.$t('newProcess.processOfEnterpriseStandardAudit'),
title: this.$t('workCenter.newProcess.processOfEnterpriseStandardAudit'),
path: ''
},
{ // 稽查延期申请流程
title: this.$t('newProcess.auditExtensionApplicationProcess'),
title: this.$t('workCenter.newProcess.auditExtensionApplicationProcess'),
path: ''
},
{ // 企标稽查整改
title: this.$t('newProcess.enterpriseStandardInspectionAndRectification'),
title: this.$t('workCenter.newProcess.enterpriseStandardInspectionAndRectification'),
path: ''
},
{ // 权限申请流程
title: '权限申请流程',
title: this.$t('workCenter.newProcess.permissionApplicationProcess'),
path: ''
},
{
title: '标准宣贯流程',
{ // 标准宣贯流程
title: this.$t('workCenter.newProcess.standardPromotionProcess'),
path: ''
}
]
},
{ // 工作组相关流程
uid: 3,
text: '工作组相关流程',
text: this.$t('workCenter.newProcess.workgroupProcess'),
list: [
{
title: '会后管理流程',
{ // 会后管理流程
title: this.$t('workCenter.newProcess.postMeetingManagementProcess'),
path: ''
}
]
@@ -1,20 +1,805 @@
<template>
<internal-detail-page :title="$t('flowCenter') + $t('enterpriseStandardLibrary.initChangeFlow.title')" :loading="loading" :content-padding="0">
<internal-detail-page :title="pageTitle">
<a-form :form="form">
<div class="process-part-title">{{ $t('processInformation') }}</div>
<!-- 流程名称 -->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('processName')">
<a-input :placeholder="$t('pleaseEnter') + $t('processName')"
@change="event => event.target.value = event.target.value.trim()"
:maxLength="50"
v-decorator="['processName']" />
</a-form-item>
<!-- 截止日期 -->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('expirationDate')">
<a-date-picker :placeholder="$t('pleaseSelect') + $t('expirationDate')"
value-format="YYYY-MM-DD"
v-decorator="['expirationDate']" />
</a-form-item>
<!-- 流程说明 -->
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('processExplain')">
<a-textarea :placeholder="$t('pleaseSelect') + $t('processExplain')"
maxLength="500"
:rows="4"
v-decorator="['processExplain']" />
</a-form-item>
<div class="title-wrapper">流程信息</div>
<div class="process-part-title">{{ $t('basicServiceInformation') }}</div>
<a-form-model :model="formInline" v-if="isFormInline" class="form-add" :rules="rules" ref="ruleForm">
<!-- 基础信息部分 -->
<div class="collapsible-panel-form">
<div class="collapsible-panel-form-header">
<span>基础信息</span>
<div class="retractable-btn" @click="handleChangeRetractable('baseInfo')">
<a-icon type="double-right" :class="retractableFlag.baseInfo ? 'pack-up-btn' : 'unfold-btn'" />
{{ retractableFlag.baseInfo ? '收起' : '展开' }}
</div>
</div>
<div class="form-flex-box collapsible-panel-form-content" v-show="retractableFlag.baseInfo">
<!-- 申请类型 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.applicationType')">
{{ $t('workCenter.enterpriseInitChangePlan.applicationType') }}
</span>
</div>
<a-form-model-item class="item-model" prop="applicationType">
<a-select v-model="formInline.applicationType"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.applicationType')">
<a-select-option :value="1">{{ $t('workCenter.enterpriseInitChangePlan.standardProjectEstablishment') }}</a-select-option>
<a-select-option :value="2">{{ $t('workCenter.enterpriseInitChangePlan.change') }}</a-select-option>
</a-select>
</a-form-model-item>
</div>
<!-- 项目类别 -->
<div v-if="formInline.applicationType === 1" class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.itemCategory')">
{{ $t('workCenter.enterpriseInitChangePlan.itemCategory') }}
</span>
</div>
<a-form-model-item class="item-model" prop="itemCategory">
<a-select v-model="formInline.itemCategory"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.itemCategory')">
<a-select-option :value="1">{{ $t('workCenter.enterpriseInitChangePlan.formulate') }}</a-select-option>
<a-select-option :value="2">{{ $t('workCenter.enterpriseInitChangePlan.revise') }}</a-select-option>
</a-select>
</a-form-model-item>
</div>
<!-- 标准立项-制定 -->
<template v-if="formInline.itemCategory && formInline.itemCategory === 1">
<!-- 企业编号 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.enterpriseStandardNum')">
{{ $t('workCenter.enterpriseInitChangePlan.enterpriseStandardNum') }}
</span>
</div>
<a-form-model-item class="item-model" prop="enterpriseStandardNum">
<a-input class="box-input"
v-model="formInline.enterpriseStandardNum"
:maxLength="50"
disabled
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardNum')" />
</a-form-model-item>
</div>
<!-- 企业名称 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')">
{{ $t('workCenter.enterpriseInitChangePlan.enterpriseStandardName') }}
</span>
</div>
<a-form-model-item class="item-model" prop="enterpriseStandardName">
<a-input class="box-input"
v-model="formInline.enterpriseStandardName"
:maxLength="50"
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
</a-form-model-item>
</div>
<!-- 企业标准代号 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.enterpriseStandardCode')">
{{ $t('workCenter.enterpriseInitChangePlan.enterpriseStandardCode') }}
</span>
</div>
<a-form-model-item class="item-model" prop="enterpriseStandardCode">
<j-dict-select-tag class="box-input"
v-model="formInline.enterpriseStandardCode"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardCode')"
:type="'select'"
:triggerChange="false"
dictCode="enterprise_standard_code" />
</a-form-model-item>
</div>
<!-- 企业名称代号 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.enterpriseNameCode')">
{{ $t('workCenter.enterpriseInitChangePlan.enterpriseNameCode') }}
</span>
</div>
<a-form-model-item class="item-model" prop="enterpriseNameCode">
<j-dict-select-tag class="box-input"
v-model="formInline.enterpriseNameCode"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.enterpriseNameCode')"
:type="'select'"
:triggerChange="false"
dictCode="enterprise_name_code" />
</a-form-model-item>
</div>
<!-- 标准类别代号 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.standardCategoryCode')">
{{ $t('workCenter.enterpriseInitChangePlan.standardCategoryCode') }}
</span>
</div>
<a-form-model-item class="item-model" prop="standardCategoryCode">
<j-dict-select-tag class="box-input"
v-model="formInline.standardCategoryCode"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.standardCategoryCode')"
:type="'select'"
:triggerChange="false"
dictCode="standard_category_code" />
</a-form-model-item>
</div>
<!-- 年代号 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.yearNumber')">
{{ $t('workCenter.enterpriseInitChangePlan.yearNumber') }}
</span>
</div>
<a-form-model-item class="item-model" prop="yearNumber">
<j-date show-type="year"
v-model="formInline.yearNumber"
:default-value="yearNumberDefaultValue"
date-format="YYYY"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.yearNumber')" />
</a-form-model-item>
</div>
</template>
<!-- 标准立项-修订 -->
<template v-else-if="formInline.itemCategory && formInline.itemCategory === 2">
<!-- 企标编号 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.enterpriseStandardNum')">
{{ $t('workCenter.enterpriseInitChangePlan.enterpriseStandardNum') }}
</span>
</div>
<a-form-model-item class="item-model" prop="enterpriseStandardNum">
<standard-selection :source="StandardSource.ENTERPRISE.value"
:disabledSourceSearch="true"
changeType="radio"
v-model="formInline.enterpriseStandardNum"
@nameChange="nameChange"/>
</a-form-model-item>
</div>
<!-- 企标名称 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')">
{{ $t('workCenter.enterpriseInitChangePlan.enterpriseStandardName') }}
</span>
</div>
<a-form-model-item class="item-model" prop="enterpriseStandardName">
<a-input class="box-input"
v-model="formInline.enterpriseStandardName"
:maxLength="50"
disabled
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
</a-form-model-item>
</div>
<!-- 新企标编号 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardNum')">
{{ $t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardNum') }}
</span>
</div>
<a-form-model-item class="item-model" prop="newEnterpriseStandardNum">
<a-input class="box-input"
v-model="formInline.newEnterpriseStandardNum"
:maxLength="50"
disabled
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardNum')" />
</a-form-model-item>
</div>
<!-- 新企标名称 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardName')">
{{ $t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardName') }}
</span>
</div>
<a-form-model-item class="item-model" prop="newEnterpriseStandardName">
<a-input class="box-input"
v-model="formInline.newEnterpriseStandardName"
:maxLength="50"
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardName')" />
</a-form-model-item>
</div>
<!-- 年代号 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.yearNumber')">
{{ $t('workCenter.enterpriseInitChangePlan.yearNumber') }}
</span>
</div>
<a-form-model-item class="item-model" prop="yearNumber">
<j-date show-type="year"
v-model="formInline.yearNumber"
:default-value="yearNumberDefaultValue"
date-format="YYYY"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.yearNumber')" />
</a-form-model-item>
</div>
</template>
<!-- 标准英文名称 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.standardEnglishName')">
{{ $t('workCenter.enterpriseInitChangePlan.standardEnglishName') }}
</span>
</div>
<a-form-model-item class="item-model" prop="standardEnglishName">
<a-input class="box-input"
v-model="formInline.standardEnglishName"
:maxLength="50"
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.standardEnglishName')" />
</a-form-model-item>
</div>
<!-- 标准体系 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.standardSystem')">
{{ $t('workCenter.enterpriseInitChangePlan.standardSystem') }}
</span>
</div>
<a-form-model-item class="item-model" prop="standardSystem">
<j-dict-select-tag class="box-input"
v-model="formInline.standardSystem"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.standardSystem')"
:type="'select'"
:triggerChange="false"
dictCode="standard_system" />
</a-form-model-item>
</div>
<!-- 标准类型 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.standardType')">
{{ $t('workCenter.enterpriseInitChangePlan.standardType') }}
</span>
</div>
<a-form-model-item class="item-model" prop="standardType">
<j-dict-select-tag class="box-input"
v-model="formInline.standardType"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.standardType')"
:type="'select'"
:triggerChange="false"
dictCode="esp_standard_type" />
</a-form-model-item>
</div>
<!-- 标准等级分类 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.standardGradeClassification')">
{{ $t('workCenter.enterpriseInitChangePlan.standardGradeClassification') }}
</span>
</div>
<a-form-model-item class="item-model" prop="standardGradeClassification">
<j-dict-select-tag class="box-input"
v-model="formInline.standardGradeClassification"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.standardGradeClassification')"
:type="'select'"
:triggerChange="false"
dictCode="standard_grade_classify" />
</a-form-model-item>
</div>
<!-- 编制说明 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.compilationIllustration')">
{{ $t('workCenter.enterpriseInitChangePlan.compilationIllustration') }}
</span>
</div>
<a-form-model-item class="item-model" prop="compilationIllustration">
<a-button type="primary" class="button-text" @click="clickButtonToUpload('compilationIllustration')">
{{
(formInline.compilationIllustration === 'null' || formInline.compilationIllustration === ''
|| formInline.compilationIllustration === null || formInline.compilationIllustration === undefined)
? $t('uploadFile.clickUpload')
: $t('uploadFile.viewUploadedFiles')
}}
</a-button>
</a-form-model-item>
</div>
</div>
</div>
<!-- 完成日期部分 -->
<div class="collapsible-panel-form">
<div class="collapsible-panel-form-header">
<span>完成日期</span>
<div class="retractable-btn" @click="handleChangeRetractable('finishDate')">
<a-icon type="double-right" :class="retractableFlag.finishDate ? 'pack-up-btn' : 'unfold-btn'" />
{{ retractableFlag.finishDate ? '收起' : '展开' }}
</div>
</div>
<div class="form-flex-box collapsible-panel-form-content" v-show="retractableFlag.finishDate">
<!-- 草稿计划完成日期 -->
<div class="box-title-text form-flex-item">
<div class="title-text title-text-long">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.draftPlanFinishDate')">
{{ $t('workCenter.enterpriseInitChangePlan.draftPlanFinishDate') }}
</span>
</div>
<a-form-model-item class="item-model" prop="draftPlanFinishDate">
<a-date-picker v-model="formInline.draftPlanFinishDate" :showTime="false" value-format="YYYY-MM-DD"></a-date-picker>
</a-form-model-item>
</div>
<!-- 征求意见稿计划完成日期 -->
<div class="box-title-text form-flex-item">
<div class="title-text title-text-long">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.exposureDraftPlanFinishDate')">
{{ $t('workCenter.enterpriseInitChangePlan.exposureDraftPlanFinishDate') }}
</span>
</div>
<a-form-model-item class="item-model" prop="exposureDraftPlanFinishDate">
<a-date-picker v-model="formInline.exposureDraftPlanFinishDate" :showTime="false" value-format="YYYY-MM-DD"></a-date-picker>
</a-form-model-item>
</div>
<!-- 计划报批日期 -->
<div class="box-title-text form-flex-item">
<div class="title-text title-text-long">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.planSubmissionDate')">
{{ $t('workCenter.enterpriseInitChangePlan.planSubmissionDate') }}
</span>
</div>
<a-form-model-item class="item-model" prop="planSubmissionDate">
<a-date-picker v-model="formInline.planSubmissionDate" :showTime="false" value-format="YYYY-MM-DD"></a-date-picker>
</a-form-model-item>
</div>
</div>
</div>
<!-- 适用范围部分 -->
<div class="collapsible-panel-form">
<div class="collapsible-panel-form-header">
<span>适用范围</span>
<div class="retractable-btn" @click="handleChangeRetractable('rangeOfApplication')">
<a-icon type="double-right" :class="retractableFlag.rangeOfApplication ? 'pack-up-btn' : 'unfold-btn'" />
{{ retractableFlag.rangeOfApplication ? '收起' : '展开' }}
</div>
</div>
<div class="form-flex-box collapsible-panel-form-content" v-show="retractableFlag.rangeOfApplication">
<!-- 零部件名称 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.partName')">
{{ $t('workCenter.enterpriseInitChangePlan.partName') }}
</span>
</div>
<a-form-model-item class="item-model" prop="partName">
<a-tree-select v-model="formInline.partName"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
style="width: 100%"
:tree-data="partNameOptions"
:label-in-value="false"
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.partName')" />
</a-form-model-item>
</div>
<!-- 授权部门 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.authorizationDepart')">
{{ $t('workCenter.enterpriseInitChangePlan.authorizationDepart') }}
</span>
</div>
<a-form-model-item class="item-model" prop="authorizationDepart">
<j-select-depart v-model="formInline.authorizationDepart"
:backDepart="true" />
</a-form-model-item>
</div>
<!-- 主起草人 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.principalDrafter')">
{{ $t('workCenter.enterpriseInitChangePlan.principalDrafter') }}
</span>
</div>
<a-form-model-item class="item-model" prop="principalDrafter">
<user-selection :placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.principalDrafter')"
v-model="formInline.principalDrafter"
filedName="principalDrafter"
@nameChange="userSelectNameChange"
:nameStr="formInline.principalDrafter_dictText"
type="radio" />
</a-form-model-item>
</div>
<!-- 主起草单位 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.mainDraftUnit')">
{{ $t('workCenter.enterpriseInitChangePlan.mainDraftUnit') }}
</span>
</div>
<a-form-model-item class="item-model" prop="mainDraftUnit">
<j-select-depart v-model="formInline.mainDraftUnit"
:backDepart="true" />
</a-form-model-item>
</div>
<!-- 起草单位负责人 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.headOfMainDraftingUnit')">
{{ $t('workCenter.enterpriseInitChangePlan.headOfMainDraftingUnit') }}
</span>
</div>
<a-form-model-item class="item-model" prop="headOfMainDraftingUnit">
<user-selection :placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.headOfMainDraftingUnit')"
v-model="formInline.headOfMainDraftingUnit"
filedName="headOfMainDraftingUnit"
@nameChange="userSelectNameChange"
:nameStr="formInline.headOfMainDraftingUnit_dictText"
type="radio" />
</a-form-model-item>
</div>
<!-- 标准推进人 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.standardPusher')">
{{ $t('workCenter.enterpriseInitChangePlan.standardPusher') }}
</span>
</div>
<a-form-model-item class="item-model" prop="standardPusher">
<user-selection :placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.standardPusher')"
v-model="formInline.standardPusher"
filedName="standardPusher"
@nameChange="userSelectNameChange"
:nameStr="formInline.standardPusher_dictText"
type="radio" />
</a-form-model-item>
</div>
<!-- 配合单位 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="required">*</span>
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.suitUnit')">
{{ $t('workCenter.enterpriseInitChangePlan.suitUnit') }}
</span>
</div>
<a-form-model-item class="item-model" prop="suitUnit">
<j-select-depart v-model="formInline.suitUnit"
:backDepart="true" />
</a-form-model-item>
</div>
</div>
</div>
<!-- 立项说明部分 -->
<div class="collapsible-panel-form">
<div class="collapsible-panel-form-header">
<span>立项说明</span>
<div class="retractable-btn" @click="handleChangeRetractable('projectStatement')">
<a-icon type="double-right" :class="retractableFlag.projectStatement ? 'pack-up-btn' : 'unfold-btn'" />
{{ retractableFlag.projectStatement ? '收起' : '展开' }}
</div>
</div>
<div class="form-flex-box collapsible-panel-form-content" v-show="retractableFlag.projectStatement">
<!-- 立项/变更原因 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.projectApprovalChangeReason')">
{{ $t('workCenter.enterpriseInitChangePlan.projectApprovalChangeReason') }}
</span>
</div>
<a-form-model-item class="item-model" prop="projectApprovalChangeReason">
<a-textarea :placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.projectApprovalChangeReason')"
:maxLength="500"
v-model="formInline.projectApprovalChangeReason" :rows="4" />
</a-form-model-item>
</div>
<!-- 立项背景立项依据 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.projectBackground')">
{{ $t('workCenter.enterpriseInitChangePlan.projectBackground') }}
</span>
</div>
<a-form-model-item class="item-model" prop="projectBackground">
<a-textarea :placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.projectBackground')"
:maxLength="500"
v-model="formInline.projectBackground" :rows="4" />
</a-form-model-item>
</div>
<!-- 国际国家及行业同类标准分析 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.homogeneousStandardAnalysis')">
{{ $t('workCenter.enterpriseInitChangePlan.homogeneousStandardAnalysis') }}
</span>
</div>
<a-form-model-item class="item-model" prop="homogeneousStandardAnalysis">
<a-textarea :placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.homogeneousStandardAnalysis')"
:maxLength="500"
v-model="formInline.homogeneousStandardAnalysis" :rows="4" />
</a-form-model-item>
</div>
<!-- 企业同类标准对比分析 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.standardContrastiveAnalysis')">
{{ $t('workCenter.enterpriseInitChangePlan.standardContrastiveAnalysis') }}
</span>
</div>
<a-form-model-item class="item-model" prop="standardContrastiveAnalysis">
<a-textarea :placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.standardContrastiveAnalysis')"
:maxLength="500"
v-model="formInline.standardContrastiveAnalysis" :rows="4" />
</a-form-model-item>
</div>
<!-- 立项标准的领先性与必要性 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.leadershipAndNecessity')">
{{ $t('workCenter.enterpriseInitChangePlan.leadershipAndNecessity') }}
</span>
</div>
<a-form-model-item class="item-model" prop="leadershipAndNecessity">
<a-textarea :placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.leadershipAndNecessity')"
:maxLength="500"
v-model="formInline.leadershipAndNecessity" :rows="4" />
</a-form-model-item>
</div>
<!-- 立项目的及预期效果等 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.initiatedProject')">
{{ $t('workCenter.enterpriseInitChangePlan.initiatedProject') }}
</span>
</div>
<a-form-model-item class="item-model" prop="initiatedProject">
<a-textarea :placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.initiatedProject')"
:maxLength="500"
v-model="formInline.initiatedProject" :rows="4" />
</a-form-model-item>
</div>
<!-- 上传附件 -->
<div class="box-title-text form-flex-item">
<div class="title-text">
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.uploadAttachment')">
{{ $t('workCenter.enterpriseInitChangePlan.uploadAttachment') }}
</span>
</div>
<a-form-model-item class="item-model" prop="uploadAttachment">
<a-button type="primary" class="button-text" @click="clickButtonToUpload('uploadAttachment')">
{{
(formInline.uploadAttachment === 'null' || formInline.uploadAttachment === ''
|| formInline.uploadAttachment === null || formInline.uploadAttachment === undefined)
? $t('uploadFile.clickUpload')
: $t('uploadFile.viewUploadedFiles')
}}
</a-button>
</a-form-model-item>
</div>
</div>
</div>
</a-form-model>
<!-- 流程审批信息 -->
<div class="process-part-title">{{ $t('processApprovalInformation') }}</div>
<a-textarea :placeholder="$t('pleaseEnter')"
:maxLength="500"
v-model="remark" :rows="4" />
<j-upload v-model="attach" return-id/>
</a-form>
<!-- 操作按钮 -->
<div class="bottom-operate-box">
<!-- 委托 -->
<a-button type="primary" ghost :loading="loading" icon="arrow-up">{{ $t('entrust') }}</a-button>
<!-- 保存 -->
<a-button type="primary" ghost :loading="loading" icon="icon-save">{{ $t('preservation') }}</a-button>
<!-- 同意 -->
<a-button type="primary" :loading="loading" @click="handleConsent">{{ $t('consent') }}</a-button>
<!-- 驳回 -->
<a-button type="primary" :loading="loading" @click="handleTurnDown">{{ $t('turnDown') }}</a-button>
</div>
<upload-file ref="uploadFile" @change="uploadFileChange" :return-url="false"></upload-file>
</internal-detail-page>
</template>
<script>
import InternalDetailPage from '@/components/InternalDetailPage'
import { StandardSource } from '@/enums/commonEnums.js'
import StandardSelection from '@/components/selection/StandardSelection'
import UploadFile from '@/components/UploadFile'
import UserSelection from '@/components/selection/UserSelection'
import Vue from 'vue'
import { USER_INFO } from '@/store/mutation-types'
import { getFormDictTreeList } from '../../../../api/api'
export default {
name: 'PlanApprovalFlow',
components: {
InternalDetailPage
InternalDetailPage,
StandardSelection,
UploadFile,
UserSelection
},
computed: {
pageTitle () {
return this.$t('flowCenter') + '——' + this.$route.meta.title
},
yearNumberDefaultValue () {
return new Date().getFullYear() + ''
}
},
mounted () {
const userInfo = Vue.ls.get(USER_INFO)
// 初始化主起草人信息
this.formInline.principalDrafter = userInfo.id
this.formInline.principalDrafter_dictText = userInfo.realname
// 初始化主起草单位信息
this.formInline.mainDraftUnit = userInfo.departIds
// 获取零部件名称下拉框数据
this.initPartNameOptions()
},
data () {
return {
StandardSource,
loading: false,
form: this.$form.createForm(this),
labelCol: {
xs: { span: 24 },
sm: { span: 4 }
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 20 }
},
formInline: {},
isFormInline: true,
rules: {},
// 各模块的收齐和展开状态
retractableFlag: {
baseInfo: true, // 基础信息部分
finishDate: true, // 完成日期部分
rangeOfApplication: true, // 适用范围部分
projectStatement: true // 立项说明部分
},
uploadName: '',
partNameOptions: [],
remark: '', // 备注
attach: '' // 附件
}
},
methods: {
initPartNameOptions () {
getFormDictTreeList({ dictId: '1696821512600637441' }).then(res => {
if (res.success) {
this.partNameOptions = res.result
}
})
},
handleChangeRetractable (module) {
this.$set(this.retractableFlag, module, !this.retractableFlag[module])
this.$forceUpdate()
},
nameChange (value) {
this.formInline.enterpriseStandardName = value
},
// 点击文件上传
clickButtonToUpload (fieldName) {
this.$refs.uploadFile.open(this.formInline[fieldName])
this.uploadName = fieldName
},
// 文件上传改变后的回调
uploadFileChange (data) {
const attIdList = []
if (data && data.length > 0) {
data.map(item => {
attIdList.push(item.id)
})
}
/** 赋值给当前对应的表单文件 */
this.formInline[this.uploadName] = attIdList.join(',')
this.formInline = { ...this.formInline }
},
// 选择用户得到用户名
userSelectNameChange (value, fieldName) {
this.formInline[fieldName + '_dictText'] = value
},
}
}
</script>
<style scoped>
<style scoped lang="less">
/deep/ .ant-form-item-children {
width: 100%;
display: inline-block;
}
.form-flex-box {
display: flex;
flex-wrap: wrap;
}
.form-flex-item-line {
width: 100%;
}
.collapsible-panel-form {
margin-top: 20px;
&-header {
height: 56px;
line-height: 56px;
background: rgba(245, 245, 245, 0.6);
border-radius: 8px 8px 0 0;
border: 1px solid #E5E6EB;
padding: 0 20px;
font-size: 16px;
font-family: PingFang SC-Medium, PingFang SC, sans-serif;
font-weight: 600;
color: #1D2129;
display: flex;
justify-content: space-between;
.retractable-btn {
cursor: pointer;
font-size: 14px;
font-family: PingFang SC-Regular, PingFang SC, sans-serif;
color: #D52C26;
}
.anticon {
margin-right: 8px;
}
.pack-up-btn {
transform: rotate(-90deg);
}
.unfold-btn {
transform: rotate(90deg);
}
}
&-content {
border: 1px solid #E5E6EB;
border-top: none;
border-radius: 0 0 8px 8px;
padding: 20px;
}
}
.form-flex-item {
width: calc(100% / 3);
}
.title-text-long {
width: 210px;
}
</style>