[update] 企标详情页进入前判断权限,增加企标更改流程,把a-input去掉前后空格
This commit is contained in:
@@ -28,6 +28,8 @@ const collectStandard = (params) => postAction('/personal/lawsStandardCollection
|
||||
const cancelCollectStandard = (params) => postAction('/personal/lawsStandardCollection/enterprise/delete', params)
|
||||
// 分享企标
|
||||
const shareStandard = (params) => postAction('/personal/lawsStandardSharing/enterprise/add', params)
|
||||
// 查询是否有查看详情的权限
|
||||
const isCanLookDetail = (params) => getAction('/laws/standard/enterprise/detailPermission', params)
|
||||
|
||||
// 企标详情-获取更新记录
|
||||
const detailGetUpdateRecord = (params) => getAction('/laws/standard/enterprise/getUpdateRecordList', params)
|
||||
@@ -71,6 +73,7 @@ export {
|
||||
collectStandard,
|
||||
cancelCollectStandard,
|
||||
shareStandard,
|
||||
isCanLookDetail,
|
||||
|
||||
detailGetUpdateRecord,
|
||||
detailSubmitQuestion,
|
||||
|
||||
@@ -53,6 +53,18 @@ const standardizationInitAgree = (params) => postAction('', params)
|
||||
// 拒绝
|
||||
const standardizationInitReject = (params) => postAction('', params)
|
||||
|
||||
// 企标更改流程
|
||||
// 保存
|
||||
const enStandardChangeSave = (params) => postAction('', params)
|
||||
// 发起
|
||||
const enStandardChangeApproval = (params) => postAction('', params)
|
||||
// 转办
|
||||
const enStandardChangeTurnTo = (params) => postAction('', params)
|
||||
// 同意
|
||||
const enStandardChangeAgree = (params) => postAction('', params)
|
||||
// 拒绝
|
||||
const enStandardChangeReject = (params) => postAction('', params)
|
||||
|
||||
// 流程中心
|
||||
// 待办-转办
|
||||
const toDoTurnTo = (params) => postAction('', params)
|
||||
@@ -86,6 +98,12 @@ export {
|
||||
standardizationInitAgree,
|
||||
standardizationInitReject,
|
||||
|
||||
enStandardChangeSave,
|
||||
enStandardChangeApproval,
|
||||
enStandardChangeTurnTo,
|
||||
enStandardChangeAgree,
|
||||
enStandardChangeReject,
|
||||
|
||||
toDoTurnTo,
|
||||
compulsoryWithdrawal
|
||||
}
|
||||
|
||||
@@ -146,6 +146,18 @@ module.exports = {
|
||||
releaseDate: '发布日期',
|
||||
implementationDate: '实施日期'
|
||||
},
|
||||
enStandardChange: {
|
||||
releaseDate: '发布日期',
|
||||
materialDate: '实施日期',
|
||||
isTry: '是否试行',
|
||||
trialPeriod: '试行周期',
|
||||
scopeOfApplication: '标准适用范围',
|
||||
substituteStandardNumber: '代替标准号',
|
||||
quotedStandard: '引用标准',
|
||||
relevantFile: '关联文件',
|
||||
degreeOfBidAcquisition: '采标程度',
|
||||
adoptInternationalStandardNumber: '采用国际标准号',
|
||||
},
|
||||
// 流程配置
|
||||
processConfig: {
|
||||
processType: '流程类型',
|
||||
|
||||
@@ -146,6 +146,18 @@ module.exports = {
|
||||
releaseDate: '发布日期',
|
||||
implementationDate: '实施日期'
|
||||
},
|
||||
enStandardChange: {
|
||||
releaseDate: '发布日期',
|
||||
materialDate: '实施日期',
|
||||
isTry: '是否试行',
|
||||
trialPeriod: '试行周期',
|
||||
scopeOfApplication: '标准适用范围',
|
||||
substituteStandardNumber: '代替标准号',
|
||||
quotedStandard: '引用标准',
|
||||
relevantFile: '关联文件',
|
||||
degreeOfBidAcquisition: '采标程度',
|
||||
adoptInternationalStandardNumber: '采用国际标准号',
|
||||
},
|
||||
// 流程配置
|
||||
processConfig: {
|
||||
processType: '流程类型',
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
{{this.$t('standardSelect.standardSelection')}}
|
||||
</a-button>
|
||||
</div>
|
||||
<standard-selection-modal ref="standardSelectionModal" v-bind="$attrs" :value="value" @change="modalInput" @nameChange="modalNameChange"></standard-selection-modal>
|
||||
<standard-selection-modal ref="standardSelectionModal" v-bind="$attrs" :value="value" @change="modalInput" @nameChange="modalNameChange" @listChange="modalListChange"></standard-selection-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -46,6 +46,9 @@ export default {
|
||||
},
|
||||
modalNameChange (value) {
|
||||
this.$emit('nameChange', value)
|
||||
},
|
||||
modalListChange (value) {
|
||||
this.$emit('listChange', value)
|
||||
}
|
||||
},
|
||||
model: {
|
||||
|
||||
@@ -193,6 +193,7 @@ export default {
|
||||
})
|
||||
this.$emit('change', serialNumber.join(','))
|
||||
this.$emit('nameChange', serialNameArr.join(','))
|
||||
this.$emit('listChange', this.selectedRowList)
|
||||
this.visible = false
|
||||
} else {
|
||||
this.$message.warning(this.$t('selectLeastOne'))
|
||||
|
||||
+21
-2
@@ -6,6 +6,7 @@ import 'nprogress/nprogress.css' // progress bar style
|
||||
import { ACCESS_TOKEN, OAUTH2_LOGIN_PAGE_PATH, UI_CACHE_DB_DICT_DATA, USER_INFO, USER_NAME } from '@/store/mutation-types'
|
||||
import { generateIndexRouter, isOAuth2AppEnv, findFirstRoute, welcome } from '@/utils/util'
|
||||
import { getSSOUserInfo } from './api/api'
|
||||
import { isCanLookDetail } from './api/enterpriseStandardLibraryApi'
|
||||
|
||||
NProgress.configure({ showSpinner: false }) // NProgress Configuration
|
||||
|
||||
@@ -70,9 +71,27 @@ router.beforeEach(async (to, from, next) => {
|
||||
// 动态添加可访问路由表
|
||||
router.addRoutes(store.getters.addRouters)
|
||||
const redirect = decodeURIComponent(from.query.redirect || to.path)
|
||||
console.log(redirect)
|
||||
if (to.path === redirect) {
|
||||
// hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
|
||||
next({ ...to, replace: true })
|
||||
if (to.path === '/enterpriseStandardLibrary/enterpriseStandardDetail') {
|
||||
// 跳企标详情,需要判断是否能看详情
|
||||
const params = {}
|
||||
if (to.query.id) {
|
||||
params.id = to.query.id
|
||||
} else if (to.query.standardNumber) {
|
||||
params.standardNumber = to.query.standardNumber
|
||||
}
|
||||
isCanLookDetail(params).then(res => {
|
||||
if (res.success && res.result) {
|
||||
next({ ...to, replace: true })
|
||||
} else {
|
||||
next({ path: '/404' })
|
||||
}
|
||||
})
|
||||
} else {
|
||||
// hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record
|
||||
next({ ...to, replace: true })
|
||||
}
|
||||
} else {
|
||||
// 跳转到目的路由
|
||||
next({ path: redirect })
|
||||
|
||||
@@ -127,9 +127,7 @@
|
||||
<template v-slot:standard_number="{text, record}">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
<a class="table-text can-click-table-text" @click="detailClick(record)" v-if="(text || text === 0) && record.detailFlag">{{ text }}</a>
|
||||
<div class="table-text" v-else-if="(text || text === 0) && !record.detailFlag">{{ text }}</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
<a class="table-text can-click-table-text" @click="detailClick(record)">{{ text }}</a>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
@@ -137,9 +135,7 @@
|
||||
<template v-slot:standard_name="{text, record}">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
<a class="table-text can-click-table-text" @click="detailClick(record)" v-if="(text || text === 0) && record.detailFlag">{{ text }}</a>
|
||||
<div class="table-text" v-else-if="(text || text === 0) && !record.detailFlag">{{ text }}</div>
|
||||
<div class="table-text" v-else>{{ global.emptyLine }}</div>
|
||||
<a class="table-text can-click-table-text" @click="detailClick(record)">{{ text }}</a>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ export default {
|
||||
},
|
||||
{ // 企标更改流程
|
||||
title: this.$t('workCenter.newProcess.bidChangeProcess'),
|
||||
path: ''
|
||||
path: '/workCenter/enterpriseStandardChange/enterpriseStandardChangeFlow'
|
||||
},
|
||||
{ // 企标复审流程
|
||||
title: this.$t('workCenter.newProcess.processOfEnterpriseBidReview'),
|
||||
|
||||
+6
@@ -64,6 +64,7 @@
|
||||
v-model="formInline.newEnStandardNo"
|
||||
:maxLength="50"
|
||||
disabled
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardNum')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -80,6 +81,7 @@
|
||||
v-model="formInline.newEnStandardName"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -188,6 +190,7 @@
|
||||
v-model="formInline.originEnStandardName"
|
||||
:maxLength="50"
|
||||
disabled
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -204,6 +207,7 @@
|
||||
<!-- v-model="formInline.newEnStandardNo"-->
|
||||
<!-- :maxLength="50"-->
|
||||
<!-- disabled-->
|
||||
<!--@change="event => event.target.value = event.target.value.trim()"-->
|
||||
<!-- :placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardNum')" />-->
|
||||
<!-- </a-form-model-item>-->
|
||||
<!--</div>-->
|
||||
@@ -220,6 +224,7 @@
|
||||
v-model="formInline.newEnStandardName"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -236,6 +241,7 @@
|
||||
v-model="formInline.enStandardEnglishName"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.standardEnglishName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
|
||||
+6
@@ -64,6 +64,7 @@
|
||||
v-model="formInline.newEnStandardNo"
|
||||
:maxLength="50"
|
||||
disabled
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardNum')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -80,6 +81,7 @@
|
||||
v-model="formInline.newEnStandardName"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -187,6 +189,7 @@
|
||||
<!-- v-model="formInline.newEnStandardNo"-->
|
||||
<!-- :maxLength="50"-->
|
||||
<!-- disabled-->
|
||||
<!--@change="event => event.target.value = event.target.value.trim()"-->
|
||||
<!-- :placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardNum')" />-->
|
||||
<!-- </a-form-model-item>-->
|
||||
<!--</div>-->
|
||||
@@ -203,6 +206,7 @@
|
||||
v-model="formInline.originEnStandardName"
|
||||
:maxLength="50"
|
||||
disabled
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -219,6 +223,7 @@
|
||||
v-model="formInline.newEnStandardName"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -235,6 +240,7 @@
|
||||
v-model="formInline.enStandardEnglishName"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.standardEnglishName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,455 @@
|
||||
<template>
|
||||
<internal-detail-page :title="pageTitle" :content-padding="0">
|
||||
<!-- 标题右侧tab -->
|
||||
<template v-slot:titleRightCustom>
|
||||
<div class="table-operator-tab">
|
||||
<a class="switch-item" :class="switchValue === 'base' ? 'table-operator-tab-active' : ''"
|
||||
@click="switchChange('base')">{{ $t('basicInformation') }}
|
||||
</a>
|
||||
<a class="switch-item" :class="switchValue === 'user' ? 'table-operator-tab-active' : ''"
|
||||
@click="switchChange('user')">{{ $t('personalInformation') }}
|
||||
</a>
|
||||
</div>
|
||||
</template>
|
||||
<!-- 基础信息 -->
|
||||
<div v-show="switchValue === 'base'" class="detail-page-scroll-content">
|
||||
<!-- 流程信息 -->
|
||||
<div class="process-part-title">{{ $t('processInformation') }}</div>
|
||||
<a-form :form="processInfoForm">
|
||||
<a-row>
|
||||
<a-col :span="12">
|
||||
<!-- 流程名称 自动生成规则:标准号-标准名称-企标更改 -->
|
||||
<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()"
|
||||
disabled
|
||||
:maxLength="50"
|
||||
v-decorator="['processName', validatorRules.processName]" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<!-- 截止日期 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('expirationDate')">
|
||||
<a-date-picker :placeholder="$t('pleaseSelect') + $t('expirationDate')"
|
||||
style="width: 100%"
|
||||
:disabled="disabled"
|
||||
value-format="YYYY-MM-DD"
|
||||
v-decorator="['deadlineDate']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<!-- 流程说明 -->
|
||||
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('processExplain')">
|
||||
<a-textarea :placeholder="$t('pleaseEnter') + $t('processExplain')"
|
||||
:maxLength="500"
|
||||
:rows="4"
|
||||
:disabled="disabled"
|
||||
v-decorator="['processDescription']" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
|
||||
<!-- 业务基本信息 -->
|
||||
<div class="process-part-title">{{ $t('basicServiceInformation') }}</div>
|
||||
<!-- 节点1、主起草人发起 -->
|
||||
<main-drafter-init-base-info v-if="currentNode === 1" ref="baseInfoRef"></main-drafter-init-base-info>
|
||||
<!-- 节点2、相关人员校对 -->
|
||||
<!-- 节点3、起草人主管级领导审批 -->
|
||||
<!-- 节点4、标准化审批 -->
|
||||
<!-- 节点5、起草人主管级上一级领导审批 -->
|
||||
|
||||
<!-- 流程审批信息 -->
|
||||
<div class="process-part-title" v-if="!onlyLook">{{ $t('processApprovalInformation') }}</div>
|
||||
<a-form :form="approvalInfoForm" v-if="!onlyLook">
|
||||
<!--备注-->
|
||||
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('remarks')">
|
||||
<a-textarea :placeholder="$t('pleaseEnter') + $t('remarks')"
|
||||
:maxLength="500"
|
||||
:rows="4"
|
||||
v-decorator="['remarks', validatorRules.remarks]" />
|
||||
</a-form-item>
|
||||
<!--附件-->
|
||||
<a-form-item :labelCol="longLabelCol" :wrapperCol="longWrapperCol" :label="$t('businessSupport.questionAnswer.attach')">
|
||||
<j-upload v-decorator="['attachment']" return-id />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
<!-- 人员信息 -->
|
||||
<div v-show="switchValue === 'user'" class="detail-page-scroll-content p-0">
|
||||
<process-detail-list :url="url">
|
||||
<personnel-info slot="personnelInfo" ref="personnelInfo" :data="personnelInfoData" :currentNode="currentNode + ''"></personnel-info>
|
||||
</process-detail-list>
|
||||
</div>
|
||||
<!-- 操作按钮 -->
|
||||
<div class="detail-page-bottom-operate-box" v-if="!onlyLook">
|
||||
<!-- 发起节点 -->
|
||||
<template v-if="currentNode === 1">
|
||||
<!-- 保存 -->
|
||||
<a-button type="primary" ghost :loading="loading" @click="handleSave"><i class="iconfont icon-save"></i> {{ $t('preservation') }}</a-button>
|
||||
<!-- 提交 -->
|
||||
<a-button type="primary" :loading="loading" @click="handleStart" icon="upload">{{ $t('submit') }}</a-button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<!-- 转办 -->
|
||||
<a-button type="primary" ghost :loading="loading" @click="handleTurnTo" icon="arrow-up">{{ $t('turnTo') }}</a-button>
|
||||
<!-- 保存 -->
|
||||
<a-button type="primary" ghost :loading="loading" @click="handleSave"><i class="iconfont icon-save"></i> {{ $t('preservation') }}</a-button>
|
||||
<!-- 同意 -->
|
||||
<a-button type="primary" :loading="loading" @click="handleAgree" icon="check-circle">{{ $t('agree') }}</a-button>
|
||||
<!-- 驳回 -->
|
||||
<a-button type="primary" :loading="loading" @click="handleReject" icon="close-circle">{{ $t('reject') }}</a-button>
|
||||
</template>
|
||||
</div>
|
||||
|
||||
<!-- 选人弹框 -->
|
||||
<user-select-modal ref="userSelectModal" type="radio" @change="userSelectModalChange"></user-select-modal>
|
||||
</internal-detail-page>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import InternalDetailPage from '@/components/InternalDetailPage'
|
||||
import ProcessDetailList from '@/components/ProcessDetailList'
|
||||
import PersonnelInfo from '@/components/PersonnelInfo'
|
||||
import UserSelectModal from '@/components/selection/UserSelectModal'
|
||||
import { USER_INFO } from '@/store/mutation-types'
|
||||
import Vue from 'vue'
|
||||
import pick from 'lodash.pick'
|
||||
import {
|
||||
enStandardChangeSave,
|
||||
enStandardChangeApproval,
|
||||
enStandardChangeAgree,
|
||||
enStandardChangeReject,
|
||||
enStandardChangeTurnTo,
|
||||
getProcessDataById
|
||||
} from '@/api/workCenter'
|
||||
import MainDrafterInitBaseInfo from './modules/MainDrafterInitBaseInfo'
|
||||
|
||||
// 人员信息
|
||||
const personalInfo = [ // 人员信息的数据
|
||||
{
|
||||
id: 1,
|
||||
nodeName: '主起草人发起',
|
||||
nodeRoleName: '发起人',
|
||||
canChoose: false,
|
||||
userList: Vue.ls.get(USER_INFO).realname + '(' + Vue.ls.get(USER_INFO).username + ')'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
nodeName: '相关人员校对',
|
||||
nodeRoleName: '相关人员',
|
||||
canChoose: true,
|
||||
chooseType: 'checkbox',
|
||||
fieldName: ''
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
nodeName: '起草人主管级领导审批',
|
||||
nodeRoleName: '起草人主管级领导',
|
||||
canChoose: true,
|
||||
chooseType: 'radio',
|
||||
fieldName: ''
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
nodeName: '标准化审批',
|
||||
nodeRoleName: '标准化',
|
||||
canChoose: true,
|
||||
chooseType: 'radio',
|
||||
fieldName: ''
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
nodeName: '起草人主管级上一级领导审批',
|
||||
nodeRoleName: '起草人主管级上一级领导',
|
||||
canChoose: true,
|
||||
chooseType: 'radio',
|
||||
fieldName: ''
|
||||
}
|
||||
]
|
||||
|
||||
export default {
|
||||
name: 'EnterpriseStandardChangeFlow',
|
||||
components: {
|
||||
MainDrafterInitBaseInfo,
|
||||
InternalDetailPage,
|
||||
ProcessDetailList,
|
||||
PersonnelInfo,
|
||||
UserSelectModal
|
||||
},
|
||||
computed: {
|
||||
pageTitle () {
|
||||
return this.$t('flowCenter') + this.$route.meta.title
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
if (this.$route.query.processId) {
|
||||
this.currentNode = 2 // todo: 先设置一个假数据,后端还不能返回当前节点
|
||||
// 有流程id说明是从流程中心来的,需要初始化数据
|
||||
this.getProcessData(this.$route.query.processId)
|
||||
}
|
||||
if (this.currentNode === 1) {
|
||||
this.personnelInfoData = personalInfo
|
||||
this.disabled = false
|
||||
} else {
|
||||
this.personnelInfoData = personalInfo.map(item => {
|
||||
return { ...item, canChoose: false, fieldName: undefined }
|
||||
})
|
||||
this.disabled = true
|
||||
}
|
||||
// 如果是查看进入的,不可编辑,不可操作
|
||||
if (this.$route.query.onlyLook) {
|
||||
this.onlyLook = this.$route.query.onlyLook
|
||||
this.disabled = this.$route.query.onlyLook
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
switchValue: 'base', // 头部tab选中值
|
||||
disabled: false,
|
||||
onlyLook: false, // 是否仅查看
|
||||
currentNode: 1, // 当前节点
|
||||
model: [],
|
||||
processInfoForm: this.$form.createForm(this),
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 4 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 20 }
|
||||
},
|
||||
longLabelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 2 }
|
||||
},
|
||||
longWrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 22 }
|
||||
},
|
||||
validatorRules: {
|
||||
// 流程名称
|
||||
processName: {
|
||||
rules: [
|
||||
{ required: true, message: this.$t('pleaseEnter') + this.$t('processName') }
|
||||
],
|
||||
validateTrigger: 'blur'
|
||||
},
|
||||
remarks: {
|
||||
rules: [
|
||||
{ required: false, message: this.$t('pleaseEnter') + this.$t('remarks') }
|
||||
],
|
||||
validateTrigger: 'blur'
|
||||
}
|
||||
},
|
||||
formInline: {},
|
||||
approvalInfoForm: this.$form.createForm(this), // 审批信息表单
|
||||
personnelInfoData: [],
|
||||
url: {
|
||||
list: '' // 人员信息的右侧表格获取接口
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 根据流程id获取数据并回显
|
||||
getProcessData (processId) {
|
||||
getProcessDataById({ processInstanceId: processId }).then(res => {
|
||||
if (res.success) {
|
||||
this.model = res.result
|
||||
this.$nextTick(() => {
|
||||
// 初始化流程信息
|
||||
this.processInfoForm.setFieldsValue(pick(this.model[0], 'processName', 'deadlineDate', 'processDescription'))
|
||||
// 初始化流程审批信息,todo:需要判断是不是草稿进来的,草稿进来的才回显审批信息
|
||||
// this.approvalInfoForm.setFieldsValue(pick(this.model[0], 'remarks', 'attachment'))
|
||||
})
|
||||
// 初始化业务基本信息的申请类型和项目类别
|
||||
this.formInline.applicationCategory = this.model[0].applicationCategory
|
||||
this.formInline.projectType = this.model[0].projectType
|
||||
// 初始化人员信息 todo: 发起人还没处理
|
||||
this.personnelInfoData = personalInfo.map(item => {
|
||||
if (item.fieldName) {
|
||||
return { ...item, userList: this.model[0][item.fieldName + '_dictText'], canChoose: false }
|
||||
} else {
|
||||
return item
|
||||
}
|
||||
})
|
||||
// 初始化业务基本信息中组件内容
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 头部tab改变
|
||||
switchChange (value) {
|
||||
this.switchValue = value
|
||||
},
|
||||
// 业务基本信息组件中获取到流程名称改变后的值
|
||||
processNameChange (value) {
|
||||
const param = { processName: value }
|
||||
this.$nextTick(() => {
|
||||
this.processInfoForm.setFieldsValue(pick(param, 'processName'))
|
||||
})
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
// 有任意一项填了即可
|
||||
// 流程信息表单
|
||||
const processInfoForm = this.processInfoForm.getFieldsValue()
|
||||
// 流程审批信息
|
||||
const approvalInfoForm = this.approvalInfoForm.getFieldsValue()
|
||||
// 人员信息的数据, 处理成对象
|
||||
const personnelInfo = this.$refs.personnelInfo.stepsData
|
||||
const personnelObj = {}
|
||||
for (const item of personnelInfo) {
|
||||
if (item.fieldName) {
|
||||
personnelObj[item.fieldName] = item.user
|
||||
}
|
||||
}
|
||||
// 需要传给后端的数组
|
||||
const arr = []
|
||||
// 业务基本信息
|
||||
const baseInfo = this.$refs.baseInfoRef.getData()
|
||||
const param = { ...processInfoForm, ...baseInfo.formInline, ...approvalInfoForm, ...personnelObj }
|
||||
const flag = Object.values(param).some(v => !!v || v === 0)
|
||||
if (!flag) {
|
||||
// 提示至少填写一项
|
||||
this.$message.warning(this.$t('pleaseFillInAtLeastOneItem'))
|
||||
return
|
||||
}
|
||||
if (baseInfo.dataSource && baseInfo.dataSource.length > 0) {
|
||||
for (const item of baseInfo.dataSource) {
|
||||
arr.push({ ...item, ...param })
|
||||
}
|
||||
} else {
|
||||
arr.push(param)
|
||||
}
|
||||
this.loading = true
|
||||
// 保存到草稿
|
||||
enStandardChangeSave(arr).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 节点一时候的提交
|
||||
handleStart () {
|
||||
if (this.loading) return
|
||||
// 人员信息的数据, 处理成对象
|
||||
const personnelInfo = this.$refs.personnelInfo.stepsData
|
||||
const personnelObj = {}
|
||||
for (const item of personnelInfo) {
|
||||
if (item.fieldName) {
|
||||
personnelObj[item.fieldName] = item.user
|
||||
}
|
||||
}
|
||||
// 校验是否填了所有能填的人员信息
|
||||
if (!Object.values(personnelObj).every(v => !!v)) {
|
||||
this.$message.warning(this.$t('pleaseEnterPersonnelInfo'))
|
||||
return
|
||||
}
|
||||
// 流程信息的校验
|
||||
this.processInfoForm.validateFields((err, values) => {
|
||||
// 流程审批信息的校验
|
||||
this.approvalInfoForm.validateFields((approvalErr, approvalValues) => {
|
||||
this.$refs.baseInfoRef.getDataValidate(data => {
|
||||
if (!err && !approvalErr && data) {
|
||||
const arr = [] // 需要传给后端的数据
|
||||
enStandardChangeApproval(arr).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
// 转办
|
||||
handleTurnTo () {
|
||||
if (this.loading) return
|
||||
// 点击显示选人组件
|
||||
this.$refs.userSelectModal.open()
|
||||
},
|
||||
// 转办选完人的回调
|
||||
userSelectModalChange (userIds) {
|
||||
this.approvalInfoForm.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.loading = true
|
||||
const param = Object.assign({}, values)
|
||||
param.userId = userIds
|
||||
param.taskId = this.$route.query.taskId
|
||||
enStandardChangeTurnTo(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 同意
|
||||
handleAgree () {
|
||||
if (this.loading) return
|
||||
this.approvalInfoForm.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.loading = true
|
||||
const param = Object.assign({}, values)
|
||||
param.taskId = this.$route.query.taskId
|
||||
enStandardChangeAgree(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 驳回
|
||||
handleReject () {
|
||||
if (this.loading) return
|
||||
this.validatorRules.remarks.rules[0].required = true
|
||||
if (!this.approvalInfoForm.getFieldValue('remarks')) {
|
||||
this.$message.warning(this.$t('pleaseEnterRemarks'))
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.approvalInfoForm.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
this.loading = true
|
||||
const param = Object.assign({}, values)
|
||||
param.taskId = this.$route.query.id
|
||||
enStandardChangeReject(param).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success(res.message)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).finally(() => {
|
||||
this.loading = false
|
||||
this.validatorRules.remarks.rules[0].required = false
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,417 @@
|
||||
<template>
|
||||
<a-form-model :model="formInline" class="form-add" :rules="rules" ref="ruleForm">
|
||||
<div class="collapsible-panel-form">
|
||||
<div class="form-flex-box collapsible-panel-form-content collapsible-content-no-head">
|
||||
<!-- 制修订类型 -->
|
||||
<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.typeOfRevision')">
|
||||
{{ $t('workCenter.enterpriseInitChangePlan.typeOfRevision') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model">
|
||||
<a-input class="box-input"
|
||||
:maxLength="50"
|
||||
defaultValue="更改"
|
||||
disabled
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.typeOfRevision')" />
|
||||
</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.enterpriseStandardNum')">
|
||||
{{ $t('workCenter.enterpriseInitChangePlan.enterpriseStandardNum') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="enStandardNo">
|
||||
<standard-selection :source="StandardSource.ENTERPRISE.value"
|
||||
:disabled="disabled"
|
||||
:disabledSourceSearch="true"
|
||||
type="radio"
|
||||
v-model="formInline.enStandardNo"
|
||||
@listChange="listChange" />
|
||||
</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="enStandardName">
|
||||
<a-input class="box-input"
|
||||
v-model="formInline.enStandardName"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
: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.standardGradeClassification')">
|
||||
{{ $t('workCenter.enterpriseInitChangePlan.standardGradeClassification') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="enStandardClassification">
|
||||
<j-dict-select-tag class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.enStandardClassification"
|
||||
: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="required">*</span>
|
||||
<span class="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.standardSystem')">
|
||||
{{ $t('workCenter.enterpriseInitChangePlan.standardSystem') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="enStandardSystem">
|
||||
<a-tree-select
|
||||
v-model="formInline.enStandardSystem"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
style="width: 100%"
|
||||
:disabled="disabled"
|
||||
:tree-data="standardSystemOptions"
|
||||
tree-checkable
|
||||
treeCheckStrictly
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.standardSystem')" />
|
||||
</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.standardEnglishName')">
|
||||
{{ $t('workCenter.enterpriseInitChangePlan.standardEnglishName') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="enStandardEnglishName">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.enStandardEnglishName"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.standardEnglishName')" />
|
||||
</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.enStandardChange.releaseDate')">
|
||||
{{ $t('workCenter.enStandardChange.releaseDate') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="releaseDate">
|
||||
<a-date-picker
|
||||
v-model="formInline.releaseDate"
|
||||
:showTime="false"
|
||||
:disabled="disabled"
|
||||
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.enStandardChange.materialDate')">
|
||||
{{ $t('workCenter.enStandardChange.materialDate') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="materialDate">
|
||||
<a-date-picker
|
||||
v-model="formInline.materialDate"
|
||||
:showTime="false"
|
||||
:disabled="disabled"
|
||||
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">
|
||||
<span class="title-text-text" :title="$t('workCenter.enStandardChange.isTry')">
|
||||
{{ $t('workCenter.enStandardChange.isTry') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="isTry">
|
||||
<j-dict-select-tag class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.isTry"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.enStandardChange.isTry')"
|
||||
:type="'select'"
|
||||
:triggerChange="false"
|
||||
dictCode="is_trial" />
|
||||
</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.enStandardChange.trialPeriod')">
|
||||
{{ $t('workCenter.enStandardChange.trialPeriod') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="trialPeriod">
|
||||
<j-dict-select-tag class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.trialPeriod"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.enStandardChange.trialPeriod')"
|
||||
:type="'select'"
|
||||
:triggerChange="false"
|
||||
dictCode="trial_period" />
|
||||
</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.partName')">
|
||||
{{ $t('workCenter.enterpriseInitChangePlan.partName') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="componentName">
|
||||
<a-tree-select v-model="formInline.componentName"
|
||||
:disabled="disabled"
|
||||
: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="title-text-text" :title="$t('workCenter.enterpriseInitChangePlan.principalDrafter')">
|
||||
{{ $t('workCenter.enterpriseInitChangePlan.principalDrafter') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="mainDraftingUser">
|
||||
<user-selection :placeholder="$t('pleaseSelect')+$t('workCenter.enterpriseInitChangePlan.principalDrafter')"
|
||||
v-model="formInline.mainDraftingUser"
|
||||
:disabled="disabled"
|
||||
filedName="mainDraftingUser"
|
||||
@nameChange="userSelectNameChange"
|
||||
:nameStr="formInline.mainDraftingUser_dictText"
|
||||
type="radio" />
|
||||
</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.mainDraftUnit')">
|
||||
{{ $t('workCenter.enterpriseInitChangePlan.mainDraftUnit') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="mainDraftingUnit">
|
||||
<j-select-depart v-model="formInline.mainDraftingUnit"
|
||||
:disabled="disabled"
|
||||
:backDepart="true" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 标准适用范围 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text title-text-long">
|
||||
<span class="title-text-text" :title="$t('workCenter.enStandardChange.scopeOfApplication')">
|
||||
{{ $t('workCenter.enStandardChange.scopeOfApplication') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="scopeOfApplication">
|
||||
<a-textarea :placeholder="$t('pleaseEnter')+$t('workCenter.enStandardChange.scopeOfApplication')"
|
||||
:maxLength="500"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.scopeOfApplication" :rows="4" />
|
||||
</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.enStandardChange.substituteStandardNumber')">
|
||||
{{ $t('workCenter.enStandardChange.substituteStandardNumber') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="substitute_standard_number">
|
||||
<standard-selection :source="StandardSource.ENTERPRISE.value"
|
||||
:disabled="disabled"
|
||||
:disabledSourceSearch="true"
|
||||
type="radio"
|
||||
v-model="formInline.substitute_standard_number" />
|
||||
</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.enStandardChange.quotedStandard')">
|
||||
{{ $t('workCenter.enStandardChange.quotedStandard') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="quoted_standard">
|
||||
<standard-selection :source="StandardSource.ENTERPRISE.value"
|
||||
:disabled="disabled"
|
||||
:disabledSourceSearch="true"
|
||||
type="radio"
|
||||
v-model="formInline.quoted_standard" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
<!-- 关联文件 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text title-text-long">
|
||||
<span class="title-text-text" :title="$t('workCenter.enStandardChange.relevantFile')">
|
||||
{{ $t('workCenter.enStandardChange.relevantFile') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="associated_file">
|
||||
<a-button type="primary" class="button-text" style="width: 200px" @click="clickButtonToUpload('associated_file')">
|
||||
{{
|
||||
(formInline.associated_file === 'null' || formInline.associated_file === ''
|
||||
|| formInline.associated_file === null || formInline.associated_file === undefined)
|
||||
? $t('uploadFile.clickUpload')
|
||||
: $t('uploadFile.viewUploadedFiles')
|
||||
}}
|
||||
</a-button>
|
||||
</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.enStandardChange.degreeOfBidAcquisition')">
|
||||
{{ $t('workCenter.enStandardChange.degreeOfBidAcquisition') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="acquisition_degree">
|
||||
<j-dict-select-tag class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.acquisition_degree"
|
||||
:placeholder="$t('pleaseSelect')+$t('workCenter.enStandardChange.degreeOfBidAcquisition')"
|
||||
:type="'select'"
|
||||
:triggerChange="false"
|
||||
dictCode="degree_bid_acquisition" />
|
||||
</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.enStandardChange.adoptInternationalStandardNumber')">
|
||||
{{ $t('workCenter.enStandardChange.adoptInternationalStandardNumber') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model" prop="international_standard_num">
|
||||
<a-input class="box-input"
|
||||
v-model="formInline.international_standard_num"
|
||||
:disabled="disabled"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enStandardChange.adoptInternationalStandardNumber')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 上传文件弹框 -->
|
||||
<upload-file ref="uploadFile" @change="uploadFileChange" :return-url="false" :disabled="disabled"></upload-file>
|
||||
</a-form-model>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { StandardSource } from '@/enums/commonEnums'
|
||||
import { getTreeList } from '@/api/enterpriseStandardLibraryApi'
|
||||
import { getFormDictTreeList } from '@/api/api'
|
||||
import StandardSelection from '@/components/selection/StandardSelection'
|
||||
import UserSelection from '@/components/selection/UserSelection'
|
||||
|
||||
export default {
|
||||
name: 'BaseInfoForm',
|
||||
components: {
|
||||
StandardSelection,
|
||||
UserSelection
|
||||
},
|
||||
props: {
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
StandardSource,
|
||||
standardSystemOptions: [], // 标准体系下拉框数据
|
||||
partNameOptions: [], // 零部件名称下拉框数据
|
||||
formInline: {}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
// 获取标准体系下拉框数据
|
||||
this.initStandardSystemOptions()
|
||||
// 获取零部件名称下拉框数据
|
||||
this.initPartNameOptions()
|
||||
},
|
||||
methods: {
|
||||
// 获取标准体系下拉框数据
|
||||
initStandardSystemOptions () {
|
||||
getTreeList({ option: 1 }).then(res => {
|
||||
if (res.success) {
|
||||
this.standardSystemOptions = res.result
|
||||
}
|
||||
})
|
||||
},
|
||||
// 获取零部件名称下拉框数据
|
||||
initPartNameOptions () {
|
||||
getFormDictTreeList({ dictId: '1696821512600637441' }).then(res => {
|
||||
if (res.success) {
|
||||
this.partNameOptions = res.result
|
||||
}
|
||||
})
|
||||
},
|
||||
// 选完企标编号了,需要回显内容
|
||||
listChange (value) {
|
||||
console.log(value)
|
||||
},
|
||||
// 选择用户得到用户名
|
||||
userSelectNameChange (value, fieldName) {
|
||||
this.formInline[fieldName + '_dictText'] = 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 }
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.collapsible-content-no-head {
|
||||
border-top: 1px solid #E5E6EB;
|
||||
border-radius: 8px 8px 8px 8px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,162 @@
|
||||
<template>
|
||||
<div>
|
||||
<base-info-form :disabled="disabled"></base-info-form>
|
||||
<!-- 标准文本 -->
|
||||
<div class="box-title-text form-flex-item">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('workCenter.enStandardRevision.standardText')">
|
||||
{{ $t('workCenter.enStandardRevision.standardText') }}
|
||||
</span>
|
||||
</div>
|
||||
<a-form-model-item class="item-model">
|
||||
<div class="online-edit-wrapper">
|
||||
<!-- todo: 还不确定这里展示的是什么 -->
|
||||
<p>企业标准</p>
|
||||
<a-button type="primary">{{ $t('workCenter.enStandardRevision.onLineEditing') }}</a-button>
|
||||
</div>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
|
||||
<!-- 操作区域 -->
|
||||
<div v-if="!disabled" class="table-operator">
|
||||
<!-- 新增 -->
|
||||
<a-button icon="plus" type="primary" @click="handleAdd" :disabled="disabled">
|
||||
{{ $t('newlyAdded') }}
|
||||
</a-button>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<j-table
|
||||
:can-drag="true"
|
||||
:scroll="{x: '100%'}"
|
||||
ref="table"
|
||||
rowKey="enterpriseStandardPlanId"
|
||||
:columns="columns"
|
||||
:dataSource="dataSource"
|
||||
:pagination="false"
|
||||
:loading="loading">
|
||||
|
||||
<!-- 企标编号/企标名称 -->
|
||||
<template v-slot:toDetail="{text, record}">
|
||||
<a-tooltip overlay-class-name="tooltip-style">
|
||||
<template slot="title">{{ text || text === 0 ? text : global.emptyLine }}</template>
|
||||
<a v-if="text" class="link-a" @click="handleGoDetail(record)">{{ text }}</a>
|
||||
<div v-else class="table-text">{{ global.emptyLine }}</div>
|
||||
</a-tooltip>
|
||||
</template>
|
||||
|
||||
<!-- 操作栏 -->
|
||||
<div slot="action" slot-scope="{record, index}" class="action-span-cell">
|
||||
<a @click="handleEdit(record, index)" class="table-ope-btn" :disabled="disabled">{{ $t('edit') }}</a>
|
||||
<a-divider type="vertical" />
|
||||
<a @click="handleDelete(record.id, index)" class="table-ope-btn" :disabled="disabled">{{ $t('delete') }}</a>
|
||||
</div>
|
||||
|
||||
</j-table>
|
||||
</div>
|
||||
|
||||
<comment-modal ref="commentModal" @ok="modalFormOk"></comment-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import BaseInfoForm from './BaseInfoForm'
|
||||
import CommentModal from '../../enterpriseStandardRevision/modules/CommentModal'
|
||||
|
||||
export default {
|
||||
name: 'MainDrafterInitBaseInfo',
|
||||
components: { BaseInfoForm, CommentModal },
|
||||
props: {
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('serialNumber'),
|
||||
dataIndex: '',
|
||||
key: 'rowIndex',
|
||||
align: 'center',
|
||||
width: 80,
|
||||
customRender: function (t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{ // 条款号
|
||||
title: this.$t('workCenter.enStandardRevision.clauseNumber'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseNumber',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 条款名称
|
||||
title: this.$t('workCenter.enStandardRevision.clauseName'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseName',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
{ // 修改意见内容
|
||||
title: this.$t('workCenter.enStandardRevision.contentOfRevisedOpinion'),
|
||||
children: [
|
||||
{ // 修改前
|
||||
title: this.$t('workCenter.enStandardRevision.clauseName'),
|
||||
align: 'center',
|
||||
width: 180,
|
||||
dataIndex: 'clauseName',
|
||||
scopedSlots: { customRender: 'text' }
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
scopedSlots: { customRender: 'action' },
|
||||
align: 'center',
|
||||
width: 200
|
||||
}
|
||||
],
|
||||
dataSource: [],
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 新增征求意见
|
||||
handleAdd () {
|
||||
// 不知道左侧要预览哪个文件
|
||||
const file = ''
|
||||
this.$refs.commentModal.title = this.$t('newlyAdded')
|
||||
this.$refs.commentModal.add(file)
|
||||
},
|
||||
// 征求意见的编辑
|
||||
handleEdit (record, index) {
|
||||
// 不知道左侧要预览哪个文件
|
||||
const file = ''
|
||||
this.$refs.commentModal.title = this.$t('edit')
|
||||
this.$refs.commentModal.edit(file, record, index)
|
||||
},
|
||||
// 征求意见的删除
|
||||
handleDelete (index) {
|
||||
this.dataSource.splice(index, 1)
|
||||
},
|
||||
// 征求意见新增编辑完成
|
||||
modalFormOk (value, index) {
|
||||
console.log(value, index)
|
||||
if (index || index === 0) {
|
||||
// 有下标,说明是编辑
|
||||
this.dataSource.splice(index, 1, value)
|
||||
} else {
|
||||
// 没有下标, 是新增
|
||||
this.dataSource.push(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@@ -654,7 +654,7 @@ export default {
|
||||
this.processInfoForm.setFieldsValue(pick(param, 'processName'))
|
||||
})
|
||||
},
|
||||
// 保存(业务基本信息那里是表格的就穿给后端数组里多条数据,是表单的就在数组里放一条数据)
|
||||
// 保存(业务基本信息那里是表格的就传给后端数组里多条数据,是表单的就在数组里放一条数据)
|
||||
handleSave () {
|
||||
// 有任意一项填了即可
|
||||
// 流程信息表单
|
||||
@@ -761,7 +761,7 @@ export default {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 节点一时候的提交,发起立项变更申请(业务基本信息那里是表格的就穿给后端数组里多条数据,是表单的就在数组里放一条数据)
|
||||
// 节点一时候的提交,发起立项变更申请(业务基本信息那里是表格的就传给后端数组里多条数据,是表单的就在数组里放一条数据)
|
||||
handleStart () {
|
||||
if (this.loading) return
|
||||
// 人员信息的数据, 处理成对象
|
||||
@@ -888,26 +888,6 @@ export default {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
// // 立项和变更的数据不一样,分开判断
|
||||
// if (this.formInline.applicationCategory === ApplicationCategory.INITIATION.value) {
|
||||
// // 是立项
|
||||
// this.$refs.approvalBaseInfo.$refs.ruleForm.validate(approvalBaseValid => {
|
||||
// if (valid && approvalBaseValid && !err && !approvalErr) {
|
||||
// this.loading = true
|
||||
// const param = Object.assign({}, this.$refs.approvalBaseInfo.formInline)
|
||||
// console.log(param)
|
||||
// }
|
||||
// })
|
||||
// } else {
|
||||
// // 是变更
|
||||
// this.userForm.validateFields((userErr, userValues) => {
|
||||
// if (valid && !err && !approvalErr && !userErr) {
|
||||
// this.loading = true
|
||||
// const param = this.$refs.changeBaseInfo.dataSource
|
||||
// console.log(param)
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
v-model="formInline.newEnStandardNo"
|
||||
:maxLength="50"
|
||||
disabled
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardNum')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -42,6 +43,7 @@
|
||||
v-model="formInline.newEnStandardName"
|
||||
:disabled="disabled"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -131,6 +133,7 @@
|
||||
v-model="formInline.originEnStandardName"
|
||||
:maxLength="50"
|
||||
disabled
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -147,6 +150,7 @@
|
||||
v-model="formInline.newEnStandardNo"
|
||||
:maxLength="50"
|
||||
disabled
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardNum')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -163,6 +167,7 @@
|
||||
:disabled="disabled"
|
||||
v-model="formInline.newEnStandardName"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -197,6 +202,7 @@
|
||||
:disabled="disabled"
|
||||
v-model="formInline.enStandardEnglishName"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.standardEnglishName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
|
||||
@@ -35,6 +35,7 @@
|
||||
disabled
|
||||
v-model="formInline.originEnStandardName"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
|
||||
+1
@@ -45,6 +45,7 @@
|
||||
disabled
|
||||
v-model="formInline.originEnStandardName"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
disabled
|
||||
v-model="formInline.originEnStandardName"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
disabled
|
||||
v-model="formInline.standardNameOne"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -93,6 +94,7 @@
|
||||
disabled
|
||||
v-model="formInline.standardNameTwo"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.enterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -123,6 +125,7 @@
|
||||
<a-input class="box-input"
|
||||
v-model="formInline.newEnStandardNo"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardNum')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -139,6 +142,7 @@
|
||||
v-model="formInline.newEnStandardName"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.newEnterpriseStandardName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -154,6 +158,7 @@
|
||||
v-model="formInline.enStandardEnglishName"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enterpriseInitChangePlan.standardEnglishName')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
|
||||
@@ -22,18 +22,21 @@
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.enStandardRevision.clauseNumber')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('workCenter.enStandardRevision.clauseNumber')"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
v-decorator.trim="[ 'clauseNumber', validatorRules.clauseNumber ]" />
|
||||
</a-form-item>
|
||||
<!-- 条款名称 -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.enStandardRevision.clauseName')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('workCenter.enStandardRevision.clauseName')"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
v-decorator.trim="[ 'clauseName', validatorRules.clauseName ]" />
|
||||
</a-form-item>
|
||||
<!-- 修改意见内容(包括修改理由和依据) -->
|
||||
<a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" :label="$t('workCenter.enStandardRevision.contentOfRevisedOpinion')">
|
||||
<a-input :placeholder="$t('pleaseEnter') + $t('workCenter.enStandardRevision.contentOfRevisedOpinion')"
|
||||
:maxLength="50"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
v-decorator.trim="[ 'contentOfRevisedOpinion', validatorRules.contentOfRevisedOpinion ]" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
|
||||
+1
@@ -104,6 +104,7 @@
|
||||
v-model="formInline.judgingVenue"
|
||||
:maxLength="50"
|
||||
:disabled="disabled"
|
||||
@change="event => event.target.value = event.target.value.trim()"
|
||||
:placeholder="$t('pleaseEnter')+$t('workCenter.enStandardRevision.judgingVenue')" />
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user