code init
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
<!-- 流程中心 -->
|
||||
<template>
|
||||
<div class="processCenter">
|
||||
<!-- <com-header :isCollapsed="sideClose" @collapsedSider="toggleSideBar"></com-header>-->
|
||||
<div class="main">
|
||||
<!-- <side-bar :navList="navList" v-model="sideClose" @toggleSideBar="toggleSideBar" :class="{ 'side-close': sideClose }"></side-bar>-->
|
||||
<div class="sub-container" :class="{ 'side-close': sideClose }">
|
||||
<router-view></router-view>
|
||||
<!--<components :is="active"></components>-->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import ComHeader from '@/pages/components/Header'
|
||||
// import SideBar from '@/pages/components/SideBar'
|
||||
// import MyProcess from './pages/processList/tabComponents/processCenter'
|
||||
export default {
|
||||
name: 'index',
|
||||
data () {
|
||||
return {
|
||||
navList: [{
|
||||
title: '流程中心',
|
||||
path: '/processCenter'
|
||||
}],
|
||||
sideClose: false, // 边栏收展状态
|
||||
tabs: [
|
||||
{
|
||||
title: '待办流程',
|
||||
path: '/uncompletedProcess'
|
||||
}
|
||||
],
|
||||
active: 'MyProcess'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* @description: 边栏收缩
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018-09-18 11:11:46
|
||||
*/
|
||||
toggleSideBar () {
|
||||
this.sideClose = !this.sideClose
|
||||
}
|
||||
},
|
||||
components: {
|
||||
// ComHeader,
|
||||
// SideBar,
|
||||
// MyProcess
|
||||
},
|
||||
mounted () {
|
||||
let navList = []
|
||||
this.navList.map((nav) => {
|
||||
this.$store.getters.getMenuList.map((menu) => {
|
||||
if (nav.path === menu.href) {
|
||||
navList.push(nav)
|
||||
}
|
||||
})
|
||||
})
|
||||
this.navList = navList
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.processCenter{
|
||||
height: 100%;
|
||||
.main{
|
||||
height: 100%;
|
||||
.sub-container{
|
||||
height: 100%;
|
||||
background-color: white;
|
||||
}
|
||||
}
|
||||
.visible-options{
|
||||
.search-select{
|
||||
width: auto;
|
||||
.ivu-select-dropdown{
|
||||
max-width: none;
|
||||
}
|
||||
.search-input{
|
||||
.ivu-input-wrapper{
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,3 @@
|
||||
import Vue from 'vue';
|
||||
let Bus = new Vue();
|
||||
export default Bus;
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,38 @@
|
||||
<!--table表格内嵌form-->
|
||||
<template>
|
||||
<div class="expand-form-box">
|
||||
<slot></slot>
|
||||
<div class="expand-form-footer">
|
||||
<el-button v-if="isBtn" round class="common-button-default" icon="el-icon-close" @click="expandFormCancel">取消</el-button>
|
||||
<el-button v-if="isBtn" round class="common-button-primary" icon="el-icon-check" type="primary" @click="expandFormSave">保存</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'ExpandsionForm',
|
||||
props: {
|
||||
isBtn: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 取消
|
||||
expandFormCancel () {
|
||||
this.$emit('expandFormCancel')
|
||||
},
|
||||
// 保存
|
||||
expandFormSave () {
|
||||
this.$emit('expandFormSave')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.expand-form-box{
|
||||
.expand-form-footer{
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,184 @@
|
||||
<!-- 审批历史 -->
|
||||
<template>
|
||||
<div class="approval-history">
|
||||
<el-divider content-position="left">审批历史 <span class="iconfont" @click="isApprovalHistory = !isApprovalHistory"></span></el-divider>
|
||||
<el-collapse-transition name="el-zoom-in-top">
|
||||
<div class="prc-content-border" v-show="isApprovalHistory">
|
||||
<div class="approval-history-item"
|
||||
v-for="item in approvalData"
|
||||
:key="item.approvalTime">
|
||||
<div class="item-top">
|
||||
<div class="wrap">
|
||||
<span class="item-label">流程节点:</span>
|
||||
<span class="item-value">{{ item.approvalNode }}</span>
|
||||
</div>
|
||||
<div class="wrap">
|
||||
<span class="item-label">审批人/处理人:</span>
|
||||
<span class="item-value">{{ item.approvalUserName }}</span>
|
||||
</div>
|
||||
<div class="wrap" v-if="item.auditOpinions === '1' || item.auditOpinions === '0'">
|
||||
<span class="item-label">反馈意见:</span>
|
||||
<span class="item-value"
|
||||
:class="[{'no':item.auditOpinions === '1'}, {'yes':item.auditOpinions === '0'}]">
|
||||
{{ item.auditOpinions === '1' ? '不同意' : '同意' }}</span>
|
||||
</div>
|
||||
<div class="wrap" v-if="item.auditOpinions === '3'">
|
||||
<span class="item-label">状态:</span>
|
||||
<span class="item-value no">被退回</span>
|
||||
</div>
|
||||
<div class="wrap">
|
||||
<span class="item-label">审核时间/处理时间:</span>
|
||||
<span class="item-value">{{ $moment(item.approvalTime).format('YYYY-MM-DD HH:mm:ss') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-bottom" v-if="item.approvalData">
|
||||
<div class="table-wrap" v-if="item.auditOpinions === '1'">
|
||||
<el-table
|
||||
:data="item.approvalData"
|
||||
border
|
||||
tooltip-effect="dark"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px', fontWeight: 'bold', height: '48px'}"
|
||||
style="width: 100%">
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
width="60"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="itemContent"
|
||||
label="条款内容"
|
||||
width="120"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="itemApproval"
|
||||
label="修改意见"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-bottom" v-else>
|
||||
<span class="item-label">意见理由/退回原因:</span>
|
||||
<p>{{ item.auditOpinionsText }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-collapse-transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ProcessApprovalHistory',
|
||||
mixins: [],
|
||||
props: {
|
||||
// 审批历史
|
||||
approvalData: {
|
||||
type: Array,
|
||||
default: () => {
|
||||
return []
|
||||
}
|
||||
},
|
||||
// 默认展开
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
data () {
|
||||
return {
|
||||
isApprovalHistory: false
|
||||
}
|
||||
},
|
||||
methods: {},
|
||||
computed: {},
|
||||
watch: {
|
||||
isShow: {
|
||||
handler (val) {
|
||||
this.isApprovalHistory = val
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.isApprovalHistory = this.isShow
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@/assets/styles/style';
|
||||
.approval-history {
|
||||
.approval-history-item {
|
||||
border-bottom: 1px dashed #ddd;
|
||||
.item-top,
|
||||
.item-bottom {
|
||||
line-height: 40px;
|
||||
}
|
||||
.item-top {
|
||||
display: flex;
|
||||
.wrap {
|
||||
padding: 0 10px;
|
||||
position: relative;
|
||||
&:last-child {
|
||||
&::after {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
&::after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 1px;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 0;
|
||||
margin-top: -10px;
|
||||
background: #ccc;
|
||||
}
|
||||
.item-label {
|
||||
color: #ccc;
|
||||
}
|
||||
.item-value {
|
||||
color: #666;
|
||||
&.yes {
|
||||
color: #67c23a;
|
||||
}
|
||||
&.no {
|
||||
color: #f56c6c;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.item-bottom {
|
||||
display: flex;
|
||||
padding: 0 10px;
|
||||
.item-label {
|
||||
color: #ccc;
|
||||
flex: 0 0 135px;
|
||||
}
|
||||
p {
|
||||
color: #666;
|
||||
word-break: break-all;
|
||||
}
|
||||
.table-wrap {
|
||||
width: 100%;
|
||||
line-height: normal;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.iconfont {
|
||||
font-size: 20px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
color: @baseColor;
|
||||
user-select: none;
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,107 @@
|
||||
<!-- 流程基础信息 -->
|
||||
<template>
|
||||
<div class="prc-base-info">
|
||||
<el-collapse-transition name="el-zoom-in-top">
|
||||
<div class="info-content" v-if="showBaseInfo">
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<slot></slot>
|
||||
</div>
|
||||
<div class="info-content-right">
|
||||
<slot name="right"></slot>
|
||||
</div>
|
||||
</div>
|
||||
<el-divider v-if="showBorder"></el-divider>
|
||||
</div>
|
||||
</el-collapse-transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Bus from '../components/Bus'
|
||||
export default {
|
||||
name: 'ProcessBaseInfo',
|
||||
mixins: [],
|
||||
props: {
|
||||
toggle: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
showBorder: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
data () {
|
||||
return {
|
||||
showBaseInfo: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* @description: 展开或收起流程基础信息
|
||||
* @date: 2020-11-19 17:18:03
|
||||
*/
|
||||
toggleBaseInfoVisible() {
|
||||
this.showBaseInfo = !this.showBaseInfo
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted () {
|
||||
Bus.$on('toggleVisible', this.toggleBaseInfoVisible)
|
||||
if (this.toggle) {
|
||||
this.showBaseInfo = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.prc-base-info {
|
||||
/deep/ .el-form-item {
|
||||
margin-bottom: 18px;
|
||||
&.disabled {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
/deep/ .el-divider {
|
||||
margin: 3px 0 15px 0;
|
||||
}
|
||||
.search-area {
|
||||
padding: 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/deep/ .search-item{
|
||||
.el-form-item__label {
|
||||
color: #333;
|
||||
padding-right: 5px;
|
||||
}
|
||||
input.el-input__inner{
|
||||
display: inline-block;
|
||||
width: 165px;
|
||||
border-radius: 20px !important;
|
||||
color: #999;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.info-content-right {
|
||||
position: relative;
|
||||
top: -5px;
|
||||
/deep/ .right-item {
|
||||
display: flex;
|
||||
font-size: 16px;
|
||||
.label {
|
||||
margin-right: 10px;
|
||||
color: #ccc;
|
||||
}
|
||||
.value {
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,162 @@
|
||||
<!-- 流程选人/选部门树组件 -->
|
||||
<template>
|
||||
<el-drawer
|
||||
:title="title"
|
||||
:visible.sync="visibleTree"
|
||||
:wrapper-closable="false"
|
||||
:before-close="beforeClose"
|
||||
size="350px"
|
||||
append-to-body
|
||||
@close="handleClose"
|
||||
class="process-choose-tree">
|
||||
<div :class="{'demo-drawer-content': checkEnable}">
|
||||
<dept-tree
|
||||
v-if="!zNodes && visibleTree"
|
||||
treeDivId="deptTree"
|
||||
:editable="false"
|
||||
:onlyChecked="checkEnable"
|
||||
:check-enable="checkEnable"
|
||||
:dept-select="deptSelect"
|
||||
:show-user="showUser"
|
||||
:checkIdList="checkIdList"
|
||||
all-dept
|
||||
:chkboxType="{ 'Y': '', 'N': '' }"
|
||||
@treeOnCheck="handleTreeOnCheck"
|
||||
@treeDblClick="handleDblClick"
|
||||
ref="deptTree">
|
||||
</dept-tree>
|
||||
|
||||
<laws-tree
|
||||
v-if="zNodes && visibleTree"
|
||||
:zNodes="zNodes"
|
||||
treeDivId="lawsTree"
|
||||
:editable="false"
|
||||
:onlyChecked="checkEnable"
|
||||
:check-enable="checkEnable"
|
||||
:person-check="personCheck"
|
||||
:dept-select="deptSelect"
|
||||
:chkboxType="{ 'Y': '', 'N': '' }"
|
||||
:checkIdList="checkIdList"
|
||||
@treeOnCheck="handleTreeOnCheck"
|
||||
@treeDblClick="handleDblClick"
|
||||
ref="lawsTree">
|
||||
</laws-tree>
|
||||
</div>
|
||||
|
||||
<div class="demo-drawer-footer" v-if="checkEnable">
|
||||
<el-button
|
||||
round
|
||||
class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
type="primary"
|
||||
@click="handleTreeDrawerConfirm">确定
|
||||
</el-button>
|
||||
<el-button
|
||||
round
|
||||
class="common-button-default"
|
||||
icon="el-icon-close"
|
||||
@click="handleTreeDrawerCancel">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ProcessChooseTree',
|
||||
mixins: [],
|
||||
components: {},
|
||||
props: {
|
||||
title: {
|
||||
type: String,
|
||||
default: '组织结构'
|
||||
},
|
||||
visible: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
beforeClose: {
|
||||
type: Function,
|
||||
default: (done) => {
|
||||
done()
|
||||
},
|
||||
},
|
||||
// zNodes传入后使用lawsTree加载节点
|
||||
zNodes: {
|
||||
type: Array
|
||||
},
|
||||
// checkbox选择节点(用于多选)
|
||||
checkEnable: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
deptSelect: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
personCheck: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 部门树是否显示人员
|
||||
showUser: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
checkIdList: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
visibleTree: false,
|
||||
checkedList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleTreeOnCheck(checkedList) {
|
||||
this.checkedList = checkedList
|
||||
},
|
||||
|
||||
handleDblClick(treeId, treeNode) {
|
||||
this.$emit('dblClick', treeNode)
|
||||
this.visibleTree = false
|
||||
},
|
||||
|
||||
handleTreeDrawerConfirm() {
|
||||
this.$emit('confirm', this.checkedList)
|
||||
this.visibleTree = false
|
||||
},
|
||||
|
||||
handleTreeDrawerCancel() {
|
||||
this.$emit('cancel')
|
||||
this.visibleTree = false
|
||||
},
|
||||
|
||||
handleClose() {
|
||||
this.$emit('close')
|
||||
this.visibleTree = false
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {
|
||||
visible (val) {
|
||||
this.visibleTree = val
|
||||
},
|
||||
visibleTree (val) {
|
||||
this.$emit('update:visible', val)
|
||||
}
|
||||
},
|
||||
mounted () {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.el-drawer__body{
|
||||
& > div:first-child{
|
||||
display: flex;
|
||||
flex: auto;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,325 @@
|
||||
<!-- ProcessFooter -->
|
||||
<template>
|
||||
<div class="process-footer" v-if="showSave || showSubmit">
|
||||
<div class="footer-line"></div>
|
||||
<div class="btn-group-wrap">
|
||||
<slot></slot>
|
||||
<el-button
|
||||
type="warning"
|
||||
icon="el-icon-edit-outline"
|
||||
round
|
||||
class="common-button-warning"
|
||||
@click="handleOnLineEdit"
|
||||
v-if="showEdit">在线编辑</el-button>
|
||||
<!-- <el-button-->
|
||||
<!-- type="primary"-->
|
||||
<!-- round-->
|
||||
<!-- class="common-button-primary"-->
|
||||
<!-- @click="handleEntrust"-->
|
||||
<!-- :loading="isSubmit"-->
|
||||
<!-- v-if="showEntrust">-->
|
||||
<!-- <i class="iconfont" style="font-size: 12px;"></i>-->
|
||||
<!-- 委托</el-button>-->
|
||||
<el-button
|
||||
type="primary"
|
||||
round
|
||||
class="common-button-primary"
|
||||
icon="el-icon-message"
|
||||
@click="handleSendEmail"
|
||||
:loading="sendEmailLoading"
|
||||
v-if="showSendEmail"
|
||||
>发送邮件</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
round
|
||||
class="common-button-danger"
|
||||
icon="el-icon-close"
|
||||
@click="handleOver"
|
||||
:loading="submitLoading"
|
||||
v-if="showOver"
|
||||
>撤销申请</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
round
|
||||
class="common-button-primary"
|
||||
@click="handleSave"
|
||||
:loading="saveLoading"
|
||||
v-if="showSave">
|
||||
<i class="iconfont"></i>
|
||||
保存
|
||||
</el-button>
|
||||
<el-button
|
||||
type="danger"
|
||||
round
|
||||
class="common-button-danger"
|
||||
@click="beforeBack"
|
||||
:loading="isSubmit"
|
||||
v-if="showBack">
|
||||
<i class="iconfont" style="font-size: 12px;"></i>
|
||||
{{ backBTNText }}</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
round
|
||||
class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
@click="handleSubmit"
|
||||
:loading="submitLoading"
|
||||
v-if="showSubmit"
|
||||
>{{ submitBTNTextShow }}</el-button>
|
||||
</div>
|
||||
|
||||
<!-- 组织机构树 -->
|
||||
<!-- <ProcessChooseTree-->
|
||||
<!-- :visible.sync="visibleTree"-->
|
||||
<!-- show-user-->
|
||||
<!-- :dept-select="false"-->
|
||||
<!-- @dblClick="handleAssigneeNew"-->
|
||||
<!-- ></ProcessChooseTree>-->
|
||||
|
||||
<!-- 在线编辑 -->
|
||||
<only-office-edit ref="onlyOffice" :visible.sync="visibleOnlyOffice"></only-office-edit>
|
||||
|
||||
<!-- 从全公司选人,2021-03-22(上汽大数据量人员解决方案) -->
|
||||
<org-table
|
||||
v-if="showEntrust"
|
||||
:visible.sync="visibleTree"
|
||||
:config="{
|
||||
value: this.orgTableVal,
|
||||
valueName: this.orgTableName
|
||||
}"
|
||||
title="委托"
|
||||
:exclude-user="userId"
|
||||
:max-selected="1"
|
||||
max-selected-tips="当前任务只能委托给一个人"
|
||||
dialog-model
|
||||
@confirm="handleAssigneeNew"
|
||||
></org-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import OnlyOfficeEdit from '@/components/onlyOfficeEdit'
|
||||
import { changeAssigneeNew } from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'ProcessFooter',
|
||||
mixins: [],
|
||||
props: {
|
||||
// 是否显示结束流程按钮
|
||||
showOver: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否显示保存按钮
|
||||
showSave: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否显示发送邮件按钮
|
||||
showSendEmail: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 发送邮件按钮loading
|
||||
sendEmailLoading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否显示提交按钮
|
||||
showSubmit: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否显示委托按钮
|
||||
showEntrust: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否显示退回按钮
|
||||
showBack: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 提交按钮loading
|
||||
submitLoading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 保存按钮loading
|
||||
saveLoading: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否默认委托事件
|
||||
defaultEntrust: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否显示在线编辑按钮
|
||||
showEdit: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 标准编号(在线编辑)
|
||||
standNo: {
|
||||
type: String
|
||||
},
|
||||
// 未选择标准编号/企标编号进行在线编辑的提示
|
||||
noStandNoTip: {
|
||||
type: String,
|
||||
default: '请选择或输入企标编号后进行在线编辑'
|
||||
},
|
||||
// 审批节点
|
||||
approval: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 带有退回/驳回意见
|
||||
opinion: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
submitBTNText: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
components: {
|
||||
ProcessChooseTree,
|
||||
OnlyOfficeEdit
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
isSubmit: false,
|
||||
visibleTree: false,
|
||||
visibleOnlyOffice: false,
|
||||
orgTableVal: '',
|
||||
orgTableName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleOver() {
|
||||
this.$emit('over')
|
||||
},
|
||||
handleSave() {
|
||||
this.$emit('save')
|
||||
},
|
||||
handleSubmit() {
|
||||
this.$emit('submit')
|
||||
},
|
||||
handleSendEmail() {
|
||||
this.$emit('sendEmail')
|
||||
},
|
||||
handleEntrust() {
|
||||
if (this.defaultEntrust) {
|
||||
this.visibleTree = true
|
||||
} else {
|
||||
this.$emit('entrust')
|
||||
}
|
||||
},
|
||||
handleBack() {
|
||||
if (!this.opinion) {
|
||||
this.$confirm(`您确定要${this.approval ? '驳回' : '退回'}该任务吗?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
}).then(() => {
|
||||
this.$emit('back')
|
||||
}).catch(() => {})
|
||||
} else {
|
||||
this.$emit('back')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 委托
|
||||
* @date: 2020-12-16 10:11:31
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleAssigneeNew(checkedList, checkedIdList) {
|
||||
if (!checkedList.length) { return false }
|
||||
const assignee = checkedIdList[0]
|
||||
const assigneeUserName = checkedList[0].userName
|
||||
this.$confirm(`您确定要委托 ${assigneeUserName} 完成该任务吗?`, '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
}).then(() => {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}).catch(() => {})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 在线编辑
|
||||
* @date: 2021-01-08 10:32:16
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleOnLineEdit() {
|
||||
if (!this.standNo || this.standNo === '') {
|
||||
this.$message.warning(this.noStandNoTip)
|
||||
} else {
|
||||
this.visibleOnlyOffice = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs['onlyOffice'].officeInit(this.standNo, this.standId)
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
beforeBack() {
|
||||
this.handleBack()
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 提交按钮文字
|
||||
submitBTNTextShow() {
|
||||
return this.submitBTNText ? this.submitBTNText : this.approval ? '同意' : '提交'
|
||||
},
|
||||
// 退回按钮文字
|
||||
backBTNText() {
|
||||
return this.approval ? '驳回' : '退回'
|
||||
},
|
||||
userId() {
|
||||
return this.userInfo.userId
|
||||
},
|
||||
...mapGetters(['userInfo'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.process-footer {
|
||||
line-height: 50px;
|
||||
text-align: right;
|
||||
background: #fff;
|
||||
z-index: 999;
|
||||
margin-top: 20px;
|
||||
padding: 0;
|
||||
.footer-line {
|
||||
height: 1px;
|
||||
box-shadow: 0 -1px 2px 0px #e8e8e8;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,159 @@
|
||||
<!-- 流程信息公共头部 -->
|
||||
<template>
|
||||
<div class="prc-header-wrap">
|
||||
<div class="process-header">
|
||||
<div class="back" title="返回流程中心" @click="handleBack">
|
||||
<i class="el-icon-back"></i>
|
||||
</div>
|
||||
<span class="process-title">
|
||||
流程中心 —— <slot name="proName"></slot>
|
||||
<a>(<slot name="proNode"></slot>)</a>
|
||||
</span>
|
||||
<span
|
||||
class="iconfont"
|
||||
title="流程信息"
|
||||
v-if="toggle"
|
||||
@click="handleToggleVisible"></span>
|
||||
<div class="divider"></div>
|
||||
</div>
|
||||
<transition name="el-zoom-in-top">
|
||||
<div class="process-header"
|
||||
:class="[{'is-collapse': isCollapse}, {'fixed': headerFixed}]"
|
||||
:style="opacityStyle"
|
||||
v-if="headerFixed">
|
||||
<div class="back" title="返回流程中心" @click="handleBack">
|
||||
<i class="el-icon-back"></i>
|
||||
</div>
|
||||
<span class="process-title">
|
||||
流程中心 —— <slot name="proName"></slot>
|
||||
<a>(<slot name="proNode"></slot>)</a>
|
||||
</span>
|
||||
<span
|
||||
class="iconfont"
|
||||
title="流程信息"
|
||||
v-if="toggle"
|
||||
@click="handleToggleVisible"></span>
|
||||
</div>
|
||||
</transition>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Bus from '../components/Bus'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'ProcessHeader',
|
||||
mixins: [],
|
||||
props: {
|
||||
toggle: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
data () {
|
||||
return {
|
||||
opacityStyle: {},
|
||||
headerFixed: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleBack() {
|
||||
if (this.$store.state.detailMap !== '') {
|
||||
this.$router.push({
|
||||
path: this.$store.state.detailMap,
|
||||
query: {
|
||||
prcNum: this.$store.getters.getHandleInfo.prcNum,
|
||||
tabsName: this.$store.getters.getHandleInfo.tabsName
|
||||
}
|
||||
})
|
||||
this.$store.commit('setDetailMap', '')
|
||||
} else {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
handleToggleVisible() {
|
||||
Bus.$emit('toggleVisible')
|
||||
},
|
||||
|
||||
handleScroll (el) {
|
||||
const top = el.scrollTop()
|
||||
if (top > 80) {
|
||||
this.headerFixed = true
|
||||
let opacity = top / 140
|
||||
opacity = opacity > 1 ? 1 : opacity
|
||||
this.opacityStyle = { opacity }
|
||||
} else if (top === 0) {
|
||||
this.headerFixed = false
|
||||
this.opacityStyle = { opacity: 1 }
|
||||
} else {
|
||||
this.headerFixed = false
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['isCollapse'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
const el = $('.prc-header-wrap').parent('div')
|
||||
$(el).scroll(() => {
|
||||
this.handleScroll(el)
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@/assets/styles/style';
|
||||
.process-header {
|
||||
position: relative;
|
||||
padding-top: 20px;
|
||||
&.fixed {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 212px;
|
||||
width: 100%;
|
||||
background: #fff;
|
||||
z-index: 1000;
|
||||
box-shadow: 1px 1px 5px 0 #ddd;
|
||||
padding: 20px 15px;
|
||||
&.is-collapse {
|
||||
left: 64px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.process-title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
|
||||
a {
|
||||
font-size: 14px;
|
||||
margin-left: 5px;
|
||||
cursor: default;
|
||||
color: #888;
|
||||
}
|
||||
}
|
||||
.iconfont {
|
||||
font-size: 20px;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
color: @baseColor;
|
||||
user-select: none;
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.divider {
|
||||
width: 100%;
|
||||
height: 1px;
|
||||
background-color: #DCDFE6;
|
||||
margin: 15px 0 15px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,127 @@
|
||||
<!-- 流程输入框 -->
|
||||
<template>
|
||||
<el-input
|
||||
class="process-input"
|
||||
:class="{ 'is-error': showTips }"
|
||||
v-model="inputVal"
|
||||
:placeholder="placeholder"
|
||||
:readonly="readonly"
|
||||
:disabled="disabled"
|
||||
@input="handleInput"
|
||||
@click.native="handleClick">
|
||||
<el-tooltip slot="suffix" effect="dark" placement="top">
|
||||
<div slot="content" v-html="tips"></div>
|
||||
<span class="iconfont" v-show="showTips"></span>
|
||||
</el-tooltip>
|
||||
</el-input>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ProcessInput',
|
||||
mixins: [],
|
||||
components: {},
|
||||
props: {
|
||||
value: {
|
||||
type: [Number, String, Array]
|
||||
},
|
||||
placeholder: {
|
||||
type: String
|
||||
},
|
||||
readonly: {
|
||||
type: Boolean
|
||||
},
|
||||
showTips: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
tips: {
|
||||
type: String,
|
||||
default: '提示'
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
clickDisabled: {
|
||||
type: Boolean
|
||||
},
|
||||
clickDisabledTips: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
inputVal: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleInput(val) {
|
||||
if (this.value instanceof Array) {
|
||||
if (this.inputVal === '') {
|
||||
this.$emit('input', [])
|
||||
} else {
|
||||
this.$emit('input', val.split(','))
|
||||
}
|
||||
} else {
|
||||
this.$emit('input', val)
|
||||
}
|
||||
},
|
||||
|
||||
handleClick() {
|
||||
if (!this.disabled && !this.clickDisabled) {
|
||||
this.$emit('click')
|
||||
}
|
||||
if (this.clickDisabled && this.clickDisabledTips) {
|
||||
this.$message.warning(this.clickDisabledTips)
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value: {
|
||||
handler (val) {
|
||||
if (val instanceof Array) {
|
||||
this.inputVal = val.join(',')
|
||||
} else {
|
||||
this.inputVal = val
|
||||
}
|
||||
}
|
||||
},
|
||||
showTips: {
|
||||
immediate: true,
|
||||
handler (val) {
|
||||
if (val) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
if (this.value) {
|
||||
if (this.value instanceof Array) {
|
||||
this.inputVal = this.value.join(',')
|
||||
} else {
|
||||
this.inputVal = this.value
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.process-input {
|
||||
.iconfont {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 100%;
|
||||
}
|
||||
&.is-error {
|
||||
/deep/ .el-input__inner {
|
||||
border-color: #f56c6c !important;
|
||||
}
|
||||
.iconfont {
|
||||
color: #F56C6C;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,170 @@
|
||||
<!-- 流程组件公共数据 -->
|
||||
<script>
|
||||
import { changeAssigneeNew } from 'api/process'
|
||||
export default {
|
||||
name: 'ProcessMixins',
|
||||
mixins: [],
|
||||
components: {},
|
||||
data () {
|
||||
return {
|
||||
processTypeList: [
|
||||
{
|
||||
label: '法规入库及评估流程',
|
||||
value: '1'
|
||||
}, {
|
||||
label: '标准法规技术储备评估流程',
|
||||
value: '2'
|
||||
},
|
||||
{
|
||||
label: '项目评估流程',
|
||||
value: '3'
|
||||
},
|
||||
{
|
||||
label: '企标制修订流程',
|
||||
value: '4'
|
||||
},
|
||||
{
|
||||
label: '未符合项跟踪流程',
|
||||
value: '5'
|
||||
},
|
||||
{
|
||||
label: '企标制修订申请流程',
|
||||
value: '6'
|
||||
},
|
||||
{
|
||||
label: '企标废止流程',
|
||||
value: '7'
|
||||
},
|
||||
{
|
||||
label: '企标延期制修订申请流程',
|
||||
value: '8'
|
||||
},
|
||||
{
|
||||
label: '标准采购流程',
|
||||
value: '9'
|
||||
},
|
||||
{
|
||||
label: '工作组会前申请流程',
|
||||
value: '10'
|
||||
},
|
||||
{
|
||||
label: '企标制修订评估流程',
|
||||
value: '11'
|
||||
},
|
||||
{
|
||||
label: '企标勘误流程',
|
||||
value: '12'
|
||||
},
|
||||
{
|
||||
label: '行政管理要求评估流程',
|
||||
value: '13'
|
||||
},
|
||||
{
|
||||
label: '政策入库及评估流程',
|
||||
value: '14'
|
||||
},
|
||||
{
|
||||
label: '标准翻译申请流程',
|
||||
value: '15'
|
||||
},
|
||||
{
|
||||
label: '工作组会后管理流程',
|
||||
value: '16'
|
||||
},
|
||||
{
|
||||
label: '企标备案流程',
|
||||
value: '17'
|
||||
},
|
||||
{
|
||||
label: '标准法规清单发布/更新流程',
|
||||
value: '18'
|
||||
},
|
||||
{
|
||||
label: '企标复审流程',
|
||||
value: '19'
|
||||
}
|
||||
],
|
||||
formDisableFlag: false,
|
||||
pickerOptions: {
|
||||
disabledDate(time) {
|
||||
const start = new Date(new Date().toLocaleDateString());
|
||||
start.setTime(start.getTime());
|
||||
return time.getTime() < start
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* @description: 根据流程类型获取流程名称
|
||||
* @date: 2020-11-25 15:47:12
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
getPrcName(prcType) {
|
||||
let prcName = ''
|
||||
this.processTypeList.map(item => {
|
||||
if (item.value === prcType) {
|
||||
prcName = item.label
|
||||
}
|
||||
})
|
||||
return prcName
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 委托
|
||||
* @date: 2020-12-14 15:51:10
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
changeAssigneeNew(treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push('/processCenter')
|
||||
}, 100)
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 对表单部分字段进行校验
|
||||
* @date: 2021-01-15 10:00:16
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleValidField(field) {
|
||||
this.$refs['prcForm'].validateField(field)
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 查询下一节点处理人(高级经理)
|
||||
* @date: 2021-03-11
|
||||
* @auth: WangXu
|
||||
*/
|
||||
getResByCurrentRoleId(roleIds, roleName, callback) {
|
||||
// 获取当前 foRoleId 有 otherFORoleId 就一定是 其他起草人填写的 FO
|
||||
// 否则一定是主起草人填写的 FO
|
||||
this.$http.get('sys/role/getParentsByFOs', {
|
||||
ids: roleIds, // 当前登录人的角色
|
||||
roleHierarchyName: roleName // 上级角色
|
||||
}, {}, res => {
|
||||
if (res.ok) {
|
||||
callback.call(this, res.data)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted () {}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,471 @@
|
||||
<!--手动查找所有标准号-->
|
||||
<template>
|
||||
<!-- <div>-->
|
||||
<el-col :span="span">
|
||||
<el-form-item
|
||||
:label="config.attrName"
|
||||
:prop="config.attrField"
|
||||
:label-width="labelWidth"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': disabled}"
|
||||
>
|
||||
<el-input
|
||||
:title="value"
|
||||
:value="value"
|
||||
:placeholder="placeholder"
|
||||
:disabled="disabled"
|
||||
clearable
|
||||
@input="handleChange"
|
||||
></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
style="position:absolute;top: 10px;right: 0;"
|
||||
@click="selectLaws"
|
||||
v-if="(processModel && !disabled) || !processModel"
|
||||
>手动查找</el-button>
|
||||
</el-form-item>
|
||||
<el-dialog
|
||||
:title="config.attrName"
|
||||
:visible.sync="replaceLawsNumModel"
|
||||
width="900px"
|
||||
:close-on-click-modal="false"
|
||||
@close="replaceLawsNumModelCancel"
|
||||
:append-to-body="true"
|
||||
>
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form :modal="replaceLawsNumForm" inline class="label-input-form" @keyup.native.enter="getReplaceLawsNumRow">
|
||||
<el-form-item label="标准来源" class="search-item" v-if="showDataResource">
|
||||
<el-select
|
||||
v-model="replaceLawsNumForm.type"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option value="INLAND" label="国内标准库"></el-option>
|
||||
<el-option value="FOREIGN" label="国外标准库"></el-option>
|
||||
<el-option value="BUSINESS" label="企业标准库"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="编号/名称" class="search-item">
|
||||
<el-input v-model="replaceLawsNumForm.standNumber" placeholder="根据编号/名称查找" @keyup.native.enter="getReplaceLawsNumRow" clearable :maxlength="100"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
@click="getSearch">
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-refresh-left"
|
||||
round
|
||||
type="default"
|
||||
@click="getResetLawsNumRow"></el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
v-if="replaceLawsNumForm.standType === 'BUSINESS'"
|
||||
ref="selections"
|
||||
:data="replaceLawsNumRow"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%;overflow-y: auto;overflow-x: hidden;"
|
||||
border
|
||||
:height="300"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
class="v-class"
|
||||
@selection-change="selectReplaceStandNumRowChange">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="standSortShow"-->
|
||||
<!-- label="企标类别"-->
|
||||
<!-- width="130">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="standCode"
|
||||
label="企标编号"
|
||||
width="130">
|
||||
<template slot-scope="scope">
|
||||
<a class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.standCode }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standName"
|
||||
label="中文名称"
|
||||
width="130">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="issueTime"
|
||||
label="发布日期"
|
||||
width="130">
|
||||
<template slot-scope="scope">
|
||||
{{ !['已发布', 'TBD', ''].includes(scope.row.issueTime) ? $moment(scope.row.issueTime).format('YYYY-MM-DD') : scope.row.issueTime }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="putTime"
|
||||
label="实施日期"
|
||||
width="130">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.putTime ? $moment(scope.row.putTime).format('YYYY-MM-DD') : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standStatusShow"
|
||||
label="标准状态">
|
||||
<template slot-scope="scope">{{ scope.row.standStateShow || scope.row.standStatusShow }}</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-table
|
||||
v-else
|
||||
ref="selections"
|
||||
:data="tableData"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%;overflow-y: auto;overflow-x: hidden;"
|
||||
border
|
||||
:height="300"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="selectReplaceStandNumRowChange">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="标准编号">
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.standYear" class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.standSort }} {{ scope.row.standNumber }}-{{ scope.row.standYear }}</a>
|
||||
<a v-else class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.standSort }} {{ scope.row.standNumber }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standName"
|
||||
label="标准名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="issueTime"
|
||||
label="发布日期"
|
||||
width="130">
|
||||
<template slot-scope="scope">{{ !['已发布', 'TBD', ''].includes(scope.row.issueTime) ? $moment(scope.row.issueTime).format('YYYY-MM-DD') : scope.row.issueTime }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standStateShow"
|
||||
label="标准状态"
|
||||
width="130">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<loading :loading="replaceLoading">{{$t('m.dataAcquisition')}}</loading>
|
||||
<!--分页-->
|
||||
<pagination
|
||||
style="position: relative;"
|
||||
:page="replacePage"
|
||||
:total="replaceTotal"
|
||||
@pageChange="pageChangeReplace"
|
||||
@pageSizeChange="pageSizeChangeReplace"></pagination>
|
||||
<div slot="footer" class="demo-drawer-footer">
|
||||
<el-button size="small" round class="common-button-primary" icon="el-icon-close" @click="replaceLawsNumModel = false">取消</el-button>
|
||||
<el-button size="small" type="primary" round class="common-button-default" icon="el-icon-check" @click="replaceLawsNumModelBt">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-col>
|
||||
<!-- </div>-->
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'CustomInput',
|
||||
props: {
|
||||
config: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
value: {
|
||||
required: true
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 栅格比例
|
||||
span: {
|
||||
type: Number,
|
||||
default: 24
|
||||
},
|
||||
// 是否为流程中使用
|
||||
processModel: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// label宽度
|
||||
labelWidth: {
|
||||
type: String,
|
||||
default: '150px'
|
||||
},
|
||||
// 是否展示数据来源
|
||||
showDataResource: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
// 指定数据来源
|
||||
dataResource: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
replaceLawsNumModel: false,
|
||||
sarBussionessLawsEO: {
|
||||
replaceLawsNum: ''
|
||||
},
|
||||
// 代替标准号
|
||||
replaceLawsNumForm: {
|
||||
numberName: '', // 企标编号
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 0,
|
||||
lawsType: 'INLAND',
|
||||
quoteIdList: '',
|
||||
validFlag: '0',
|
||||
type: 'INLAND'
|
||||
},
|
||||
replaceLawsNumRow: [], // 代替政策号 数组内容
|
||||
replaceTotal: 0,
|
||||
selectedListRep: [],
|
||||
replaceLoading: true,
|
||||
replacePage: 1,
|
||||
tableData: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
placeholder () {
|
||||
return `请输入${this.config.attrName}`
|
||||
},
|
||||
showMessage () {
|
||||
return `${this.config.attrName}不能为空`
|
||||
},
|
||||
isRequired () {
|
||||
return !!this.config.isMust
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleChange (event) {
|
||||
// const value = event.target.value
|
||||
const value = event
|
||||
this.$emit('input', value)
|
||||
},
|
||||
selectLaws () {
|
||||
// if (this.standNumFlag === 1) {
|
||||
// this.$refs.selections.selectAll(false)
|
||||
// }
|
||||
// this.sarBussionessLawsEO.replaceLawsNum = ''
|
||||
this.replaceLawsNumForm.page = 1
|
||||
this.replacePage = 1
|
||||
this.replaceLawsNumModel = true
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 点击查询
|
||||
getSearch () {
|
||||
this.replaceLawsNumForm.page = 1
|
||||
this.replacePage = 1
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 代替政策号 请求数据
|
||||
getReplaceLawsNumRow () {
|
||||
this.replaceLawsNumForm.standType = this.replaceLawsNumForm.type
|
||||
|
||||
console.log(this.replaceLawsNumForm.type);
|
||||
if (this.replaceLawsNumForm.type === 'BUSINESS') {
|
||||
if (this.sarBussionessLawsEO.replaceLawsNum !== null && this.sarBussionessLawsEO.replaceLawsNum !== '') {
|
||||
this.replaceLawsNumForm.quoteIdList = this.quoteIdList1.toString() === '' ? '' : this.quoteIdList1
|
||||
} else {
|
||||
this.quoteIdList1 = []
|
||||
this.replaceLawsNumForm.quoteIdList = ''
|
||||
}
|
||||
this.replaceLawsNumForm.numberName = this.replaceLawsNumForm.standNumber
|
||||
this.$http.get('lawss/sarBussionessStand/getSarBussionStandPage', this.replaceLawsNumForm, {
|
||||
_this: this,
|
||||
loading: 'replaceLoading'
|
||||
}, res => {
|
||||
this.replaceLawsNumRow = res.data.list
|
||||
this.replaceTotal = res.data.count
|
||||
if (this.selectedListRep.length !== 0) {
|
||||
this.selectedListRep.map((list) => {
|
||||
this.replaceLawsNumRow.map((item) => {
|
||||
if (list.id === item.id) {
|
||||
item._checked = true
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
} else if (this.replaceLawsNumForm.type === 'INLAND' || this.replaceLawsNumForm.type === 'FOREIGN') {
|
||||
|
||||
this.replaceLawsNumForm.quoteIdList = ''
|
||||
|
||||
this.$http.get('lawss/sarStandardsInfo/getSarStandardsInfoPage', this.replaceLawsNumForm, {
|
||||
_this: this,
|
||||
loading: 'replaceLoading'
|
||||
}, res => {
|
||||
this.tableData = res.data.list
|
||||
this.replaceTotal = res.data.count
|
||||
if (this.selectedListRep.length !== 0) {
|
||||
this.selectedListRep.map((list) => {
|
||||
this.replaceLawsNumRow.map((item) => {
|
||||
if (list.id === item.id) {
|
||||
item._checked = true
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
},
|
||||
// 代替政策编号-取消
|
||||
replaceLawsNumModelCancel () {
|
||||
// this.replaceLawsNumModel = false
|
||||
this.$refs.selections.clearSelection()
|
||||
},
|
||||
// 代替政策号 table选择事件
|
||||
selectReplaceStandNumRowChange (row) {
|
||||
this.selectedListRep = row
|
||||
},
|
||||
// 代替政策分页
|
||||
pageChangeReplace (page) {
|
||||
this.replacePage = page
|
||||
this.replaceLawsNumForm.page = page
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
pageSizeChangeReplace (pageSize) {
|
||||
// this.replaceRows = pageSize
|
||||
this.replaceLawsNumForm.pageSize = pageSize
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 代替政策编号确定
|
||||
replaceLawsNumModelBt () {
|
||||
let textArr = []
|
||||
|
||||
if (typeof this.value === 'string') {
|
||||
if (this.value) {
|
||||
textArr = this.value.split(',')
|
||||
}
|
||||
}
|
||||
if (this.selectedListRep.length === 0) {
|
||||
return this.$message({
|
||||
message: '请先选择数据',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
if (this.selectedListRep.length + textArr.length > 20) {
|
||||
return this.$message({
|
||||
message: '代替标准号最多选择20项',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
this.selectedListRep.map((item) => {
|
||||
let texts = ''
|
||||
if (this.replaceLawsNumForm.standType === 'BUSINESS') {
|
||||
texts = item.standCode
|
||||
} else {
|
||||
if (item.standYear) {
|
||||
texts = `${item.standSort} ${item.standNumber}-${item.standYear}`
|
||||
} else {
|
||||
texts = `${item.standSort} ${item.standNumber}`
|
||||
}
|
||||
}
|
||||
textArr.push(texts)
|
||||
textArr = [...new Set(textArr)]
|
||||
this.replaceLawsNumModel = false
|
||||
})
|
||||
// this.SarLawsInfoEO.replaceLawsNum = textArr.join(',')
|
||||
this.$emit('input', textArr.join(','))
|
||||
this.$refs.selections.clearSelection()
|
||||
},
|
||||
// 点击查看
|
||||
handlePreview (item) {
|
||||
console.log(item)
|
||||
let name = ''
|
||||
let pageType = ''
|
||||
switch (this.replaceLawsNumForm.type) {
|
||||
case 'INLAND':
|
||||
name = 'OtherStandardDetails'
|
||||
pageType = 'INLAND_STAND'
|
||||
break
|
||||
case 'FOREIGN':
|
||||
name = 'OtherStandardDetails'
|
||||
pageType = 'FOREIGN_STAND'
|
||||
break
|
||||
case 'BUSINESS':
|
||||
name = 'OtherBussStandardDetails'
|
||||
pageType = 'BUSINESS_STAND'
|
||||
break
|
||||
}
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: name,
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: pageType
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
getResetLawsNumRow () {
|
||||
this.replaceLawsNumForm = {
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 0,
|
||||
validFlag: '0',
|
||||
standNumber: '',
|
||||
type: this.dataResource || 'INLAND'
|
||||
}
|
||||
this.replacePage = 1
|
||||
this.getReplaceLawsNumRow()
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
if (this.dataResource) {
|
||||
this.replaceLawsNumForm.type = this.dataResource
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
/deep/.el-dialog__body{
|
||||
padding: 0 15px;
|
||||
.search-area{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
/deep/.el-dialog__footer{
|
||||
padding: 0 15px 10px;
|
||||
}
|
||||
.add-form-item{
|
||||
/deep/.el-form-item__content{
|
||||
.el-input{
|
||||
width: calc(~'100% - 80px');
|
||||
.el-input__inner{
|
||||
width: calc(~'100% - 20px');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/deep/ .el-form-item__error {
|
||||
right: 85px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,364 @@
|
||||
<!--手动查找企标代理标准号-->
|
||||
<template>
|
||||
<!-- <div>-->
|
||||
<el-col :span="span">
|
||||
<el-form-item
|
||||
:label="config.attrName"
|
||||
:prop="config.attrField"
|
||||
:label-width="labelWidth"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': disabled}"
|
||||
>
|
||||
<el-input
|
||||
:title="value"
|
||||
:value="value"
|
||||
:placeholder="placeholder"
|
||||
:disabled="disabled"
|
||||
clearable
|
||||
@input="handleChange"
|
||||
></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
style="position:absolute;top: 10px;right: 0;"
|
||||
@click="selectLaws"
|
||||
v-if="(processModel && !disabled) || !processModel"
|
||||
>手动查找</el-button>
|
||||
</el-form-item>
|
||||
<el-dialog
|
||||
:title="config.attrName"
|
||||
:visible.sync="replaceLawsNumModel"
|
||||
width="900px"
|
||||
:close-on-click-modal="false"
|
||||
@close="replaceLawsNumModelCancel"
|
||||
:append-to-body="true"
|
||||
>
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form :model="replaceLawsNumForm" :inline="true" class="label-input-form">
|
||||
<el-form-item label="编号/名称" class="search-item">
|
||||
<el-input
|
||||
v-model="numberName"
|
||||
placeholder="根据编号/名称查找"
|
||||
clearable
|
||||
:maxlength="100"
|
||||
@keyup.enter.native="getReplaceLawsNumRow"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
@click="getReplaceLawsNumRow">
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-refresh-left"
|
||||
round
|
||||
type="default"
|
||||
@click="getResetLawsNumRow"></el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
ref="selections"
|
||||
:data="replaceLawsNumRow"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%;overflow-y: auto;overflow-x: hidden;"
|
||||
border
|
||||
:height="300"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
class="v-class"
|
||||
@selection-change="selectReplaceStandNumRowChange">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="standSortShow"-->
|
||||
<!-- label="企标类别"-->
|
||||
<!-- width="130">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="standCode"
|
||||
label="标准编号"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standName"
|
||||
label="标准名称"
|
||||
width="130">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="issueTime"
|
||||
label="发布日期"
|
||||
width="130">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.issueTime ? $moment(scope.row.issueTime).format('YYYY-MM-DD') : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="putTime"-->
|
||||
<!-- label="实施日期"-->
|
||||
<!-- width="130">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ scope.row.putTime ? $moment(scope.row.putTime).format('YYYY-MM-DD') : '' }}-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="standNatureShow"-->
|
||||
<!-- label="标准性质"-->
|
||||
<!-- width="130">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="standStatusShow"
|
||||
label="标准状态"
|
||||
width="130"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<loading :loading="replaceLoading">{{$t('m.dataAcquisition')}}</loading>
|
||||
<!--分页-->
|
||||
<pagination
|
||||
style="position: relative;"
|
||||
:page="replacePage"
|
||||
:total="replaceTotal"
|
||||
@pageChange="pageChangeReplace"
|
||||
@pageSizeChange="pageSizeChangeReplace"></pagination>
|
||||
<div slot="footer" class="demo-drawer-footer">
|
||||
<el-button size="small" round class="common-button-primary" icon="el-icon-close" @click="replaceLawsNumModel = false">取消</el-button>
|
||||
<el-button size="small" type="primary" round class="common-button-default" icon="el-icon-check" @click="replaceLawsNumModelBt">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-col>
|
||||
<!-- </div>-->
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'CustomInput',
|
||||
props: {
|
||||
config: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
value: {
|
||||
required: true
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 栅格比例
|
||||
span: {
|
||||
type: Number,
|
||||
default: 24
|
||||
},
|
||||
// 是否为流程中使用
|
||||
processModel: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// label宽度
|
||||
labelWidth: {
|
||||
type: String,
|
||||
default: '150px'
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
replaceLawsNumModel: false,
|
||||
sarBussionessLawsEO: {
|
||||
replaceLawsNum: ''
|
||||
},
|
||||
// 代替标准号
|
||||
replaceLawsNumForm: {
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 0,
|
||||
lawsType: 'INLAND',
|
||||
quoteIdList: '',
|
||||
validFlag: '0'
|
||||
},
|
||||
numberName: '', // 企标编号
|
||||
replaceLawsNumRow: [], // 代替政策号 数组内容
|
||||
replaceTotal: 0,
|
||||
selectedListRep: [],
|
||||
replaceLoading: true,
|
||||
replacePage: 1
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
placeholder () {
|
||||
return `请输入${this.config.attrName}`
|
||||
},
|
||||
showMessage () {
|
||||
return `${this.config.attrName}不能为空`
|
||||
},
|
||||
isRequired () {
|
||||
return !!this.config.isMust
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleChange (event) {
|
||||
// const value = event.target.value
|
||||
const value = event
|
||||
this.$emit('input', value)
|
||||
},
|
||||
selectLaws () {
|
||||
// if (this.standNumFlag === 1) {
|
||||
// this.$refs.selections.selectAll(false)
|
||||
// }
|
||||
// this.sarBussionessLawsEO.replaceLawsNum = ''
|
||||
this.replaceLawsNumModel = true
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 代替政策号 请求数据
|
||||
getReplaceLawsNumRow () {
|
||||
let advanceSearchVOStr = [
|
||||
{
|
||||
connect:'',
|
||||
field:'STAND_CODE',
|
||||
type:'like',
|
||||
value: this.numberName
|
||||
},
|
||||
{
|
||||
connect:'OR',
|
||||
field:'STAND_NAME',
|
||||
type:'like',
|
||||
value: this.numberName
|
||||
},
|
||||
]
|
||||
this.replaceLawsNumForm.advanceSearchVOStr = JSON.stringify(advanceSearchVOStr)
|
||||
if (this.sarBussionessLawsEO.replaceLawsNum !== null && this.sarBussionessLawsEO.replaceLawsNum !== '') {
|
||||
this.replaceLawsNumForm.quoteIdList = this.quoteIdList1.toString() === '' ? '' : this.quoteIdList1
|
||||
} else {
|
||||
this.quoteIdList1 = []
|
||||
this.replaceLawsNumForm.quoteIdList = ''
|
||||
}
|
||||
this.$http.get('lawss/sarBussRecords/page', this.replaceLawsNumForm, {
|
||||
_this: this,
|
||||
loading: 'replaceLoading'
|
||||
}, res => {
|
||||
this.replaceLawsNumRow = res.data.list
|
||||
this.replaceTotal = res.data.count
|
||||
if (this.selectedListRep.length !== 0) {
|
||||
this.selectedListRep.map((list) => {
|
||||
this.replaceLawsNumRow.map((item) => {
|
||||
if (list.id === item.id) {
|
||||
item._checked = true
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 代替政策编号-取消
|
||||
replaceLawsNumModelCancel () {
|
||||
// this.replaceLawsNumModel = false
|
||||
this.$refs.selections.clearSelection()
|
||||
},
|
||||
// 代替政策号 table选择事件
|
||||
selectReplaceStandNumRowChange (row) {
|
||||
this.selectedListRep = row
|
||||
},
|
||||
// 代替政策分页
|
||||
pageChangeReplace (page) {
|
||||
this.replacePage = page
|
||||
this.replaceLawsNumForm.page = page
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
pageSizeChangeReplace (pageSize) {
|
||||
// this.replaceRows = pageSize
|
||||
this.replaceLawsNumForm.pageSize = pageSize
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 代替政策编号确定
|
||||
replaceLawsNumModelBt () {
|
||||
let textArr = []
|
||||
|
||||
if (typeof this.value === 'string') {
|
||||
if (this.value) {
|
||||
textArr = this.value.split(',')
|
||||
}
|
||||
}
|
||||
if (this.selectedListRep.length === 0) {
|
||||
return this.$message({
|
||||
message: '请先选择数据',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
if (this.selectedListRep.length + textArr.length > 20) {
|
||||
return this.$message({
|
||||
message: '代替标准号最多选择20项',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
this.selectedListRep.map((item) => {
|
||||
let texts = item.standCode
|
||||
textArr.push(texts)
|
||||
textArr = [...new Set(textArr)]
|
||||
this.replaceLawsNumModel = false
|
||||
})
|
||||
// this.SarLawsInfoEO.replaceLawsNum = textArr.join(',')
|
||||
this.$emit('input', textArr.join(','))
|
||||
this.$refs.selections.clearSelection()
|
||||
},
|
||||
// 点击查看
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherBussStandardDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'BUSINESS_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
getResetLawsNumRow () {
|
||||
this.replaceLawsNumForm = {
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 0,
|
||||
validFlag: '0'
|
||||
}
|
||||
this.getReplaceLawsNumRow()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
/deep/.el-dialog__body{
|
||||
padding: 0 15px;
|
||||
.search-area{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
/deep/.el-dialog__footer{
|
||||
padding: 0 15px 10px;
|
||||
}
|
||||
.add-form-item{
|
||||
/deep/.el-form-item__content{
|
||||
.el-input{
|
||||
width: calc(~'100% - 80px');
|
||||
.el-input__inner{
|
||||
width: calc(~'100% - 20px');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/deep/ .el-form-item__error {
|
||||
right: 85px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,278 @@
|
||||
<!-- 手动查找代替政策号 -->
|
||||
<template>
|
||||
<!-- <div>-->
|
||||
<el-col :span="span">
|
||||
<el-form-item
|
||||
:label="config.attrName"
|
||||
:prop="config.attrField"
|
||||
:label-width="labelWidth"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': disabled}"
|
||||
>
|
||||
<el-input
|
||||
:value="value"
|
||||
:placeholder="placeholder"
|
||||
:disabled="disabled"
|
||||
clearable
|
||||
:class="{'prc-input': processModel}"
|
||||
@input="handleChange"
|
||||
></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
style="position:absolute;top: 10px;right: 0;"
|
||||
@click="selectLaws"
|
||||
v-if="(processModel && !disabled) || !processModel"
|
||||
>手动查找</el-button>
|
||||
</el-form-item>
|
||||
<el-dialog
|
||||
:title="config.attrName"
|
||||
:visible.sync="replaceLawsNumModel"
|
||||
width="875px"
|
||||
:close-on-click-modal="false"
|
||||
@close="replaceLawsNumModelCancel"
|
||||
:append-to-body="true"
|
||||
class="v-class"
|
||||
>
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form :modal="replaceLawsNumForm" :inline="true" class="label-input-form">
|
||||
<el-form-item label="政策编号" class="search-item">
|
||||
<el-input v-model="replaceLawsNumForm.lawsNumber" placeholder="根据政策编号查找" clearable :maxlength="100"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
@click="getReplaceLawsNumRow">
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-refresh-left"
|
||||
round
|
||||
type="default"
|
||||
@click="getResetLawsNumRow"></el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
ref="selections"
|
||||
:data="replaceLawsNumRow"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%;overflow-y: auto;overflow-x: hidden;"
|
||||
border
|
||||
:height="300"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="selectReplaceStandNumRowChange">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="政策编号"
|
||||
width="130">
|
||||
<template slot-scope="scope">
|
||||
<a @click="showLawsDetails(scope.row)">{{ scope.row.lawsNumber }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="lawsName"
|
||||
label="标准名称"
|
||||
:min-width="130">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="issueTime"
|
||||
label="发布日期"
|
||||
width="130">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="stateName"
|
||||
label="标准状态"
|
||||
width="130">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<loading :loading="replaceLoading">{{$t('m.dataAcquisition')}}</loading>
|
||||
<!--分页-->
|
||||
<pagination
|
||||
style="position: relative;"
|
||||
:page="replacePage"
|
||||
:total="replaceTotal"
|
||||
@pageChange="pageChangeReplace"
|
||||
@pageSizeChange="pageSizeChangeReplace"></pagination>
|
||||
<div slot="footer" class="demo-drawer-footer">
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" @click="replaceLawsNumModel = false">取消</el-button>
|
||||
<el-button type="primary" round class="common-button-default" icon="el-icon-close" @click="replaceLawsNumModelBt">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</el-col>
|
||||
<!-- </div>-->
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'CustomInput',
|
||||
props: {
|
||||
config: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
value: {
|
||||
required: true
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 栅格比例
|
||||
span: {
|
||||
type: Number,
|
||||
default: 24
|
||||
},
|
||||
// 是否为流程中使用
|
||||
processModel: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// label宽度
|
||||
labelWidth: {
|
||||
type: String,
|
||||
default: '150px'
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
replaceLawsNumModel: false,
|
||||
sarBussionessLawsEO: {
|
||||
replaceLawsNum: ''
|
||||
},
|
||||
// 代替标准号
|
||||
replaceLawsNumForm: {
|
||||
lawsNumber: '', // 政策编号
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 0,
|
||||
lawsType: 'FOREIGN',
|
||||
quoteIdList: ''
|
||||
},
|
||||
replaceLawsNumRow: [], // 代替政策号 数组内容
|
||||
replaceTotal: 0,
|
||||
selectedListRep: [],
|
||||
replaceLoading: true,
|
||||
replacePage: 1
|
||||
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
placeholder () {
|
||||
return `请输入${this.config.attrName}`
|
||||
},
|
||||
showMessage () {
|
||||
return `${this.config.attrName}不能为空`
|
||||
},
|
||||
isRequired () {
|
||||
return !!this.config.isMust
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleChange (event) {
|
||||
// const value = event.target.value
|
||||
const value = event
|
||||
this.$emit('input', value)
|
||||
},
|
||||
selectLaws () {
|
||||
// if (this.standNumFlag === 1) {
|
||||
// this.$refs.selections.selectAll(false)
|
||||
// }
|
||||
// this.sarBussionessLawsEO.replaceLawsNum = ''
|
||||
this.replaceLawsNumModel = true
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 代替政策号 请求数据
|
||||
getReplaceLawsNumRow () {
|
||||
this.$http.get('lawss/sarLawsInfo/page', this.replaceLawsNumForm, {
|
||||
_this: this,
|
||||
loading: 'replaceLoading'
|
||||
}, res => {
|
||||
this.replaceLawsNumRow = res.data.list
|
||||
this.replaceTotal = res.data.count
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 代替政策编号-取消
|
||||
replaceLawsNumModelCancel () {
|
||||
// this.replaceLawsNumModel = false
|
||||
this.$refs.selections.clearSelection()
|
||||
},
|
||||
// 代替政策号 table选择事件
|
||||
selectReplaceStandNumRowChange (row) {
|
||||
this.selectedListRep = row
|
||||
},
|
||||
// 代替政策分页
|
||||
pageChangeReplace (page) {
|
||||
this.replacePage = page
|
||||
this.replaceLawsNumForm.page = page
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
pageSizeChangeReplace (pageSize) {
|
||||
// this.replaceRows = pageSize
|
||||
this.replaceLawsNumForm.pageSize = pageSize
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 代替政策编号确定
|
||||
replaceLawsNumModelBt () {
|
||||
if (this.selectedListRep.length === 1) {
|
||||
const lawsNumber = this.selectedListRep[0].lawsNumber
|
||||
this.$emit('input', lawsNumber)
|
||||
this.$emit('change')
|
||||
} else if (this.selectedListRep.length > 1) {
|
||||
this.$message.warning('代替政策编号只能选择一条数据')
|
||||
} else {
|
||||
this.$message.warning('请先选择代替数据')
|
||||
}
|
||||
this.$refs.selections.clearSelection()
|
||||
this.replaceLawsNumModel = false
|
||||
},
|
||||
// 点击查看
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherBussStandardDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'BUSINESS_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
getResetLawsNumRow () {
|
||||
this.replaceLawsNumForm = {
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 0,
|
||||
validFlag: '0'
|
||||
}
|
||||
this.getReplaceLawsNumRow()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.prc-input {
|
||||
/deep/ .el-input__inner {
|
||||
background: #fff !important;
|
||||
}
|
||||
}
|
||||
/deep/ .el-form-item__error {
|
||||
right: 85px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,349 @@
|
||||
<!--手动查找企标代理标准号-->
|
||||
<template>
|
||||
<!-- <div>-->
|
||||
<el-col :span="span">
|
||||
<el-form-item
|
||||
:label="config.attrName"
|
||||
:prop="config.attrField"
|
||||
:label-width="labelWidth"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': disabled}"
|
||||
>
|
||||
<el-input
|
||||
:title="value"
|
||||
:value="value"
|
||||
:placeholder="placeholder"
|
||||
:disabled="disabled"
|
||||
clearable
|
||||
@input="handleChange"
|
||||
></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
style="position:absolute;top: 10px;right: 0;"
|
||||
@click="selectLaws"
|
||||
v-if="(processModel && !disabled) || !processModel"
|
||||
>手动查找</el-button>
|
||||
</el-form-item>
|
||||
<el-dialog
|
||||
:title="config.attrName"
|
||||
:visible.sync="replaceLawsNumModel"
|
||||
width="900px"
|
||||
:close-on-click-modal="false"
|
||||
@close="replaceLawsNumModelCancel"
|
||||
:append-to-body="true"
|
||||
>
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form :model="replaceLawsNumForm" :inline="true" class="label-input-form">
|
||||
<el-form-item label="编号/名称" class="search-item">
|
||||
<el-input v-model="replaceLawsNumForm.numberName" placeholder="根据编号/名称查找" clearable :maxlength="100"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
@click="getSearch">
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-refresh-left"
|
||||
round
|
||||
type="default"
|
||||
@click="getResetLawsNumRow"></el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
ref="selections"
|
||||
:data="replaceLawsNumRow"
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%;overflow-y: auto;overflow-x: hidden;"
|
||||
border
|
||||
:height="300"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
class="v-class"
|
||||
@selection-change="selectReplaceStandNumRowChange">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="standSortShow"-->
|
||||
<!-- label="企标类别"-->
|
||||
<!-- width="130">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="standCode"
|
||||
label="企标编号"
|
||||
width="130">
|
||||
<template slot-scope="scope">
|
||||
<span class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.standCode }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standName"
|
||||
label="中文名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="issueTime"
|
||||
label="发布日期"
|
||||
width="130">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.issueTime ? $moment(scope.row.issueTime).format('YYYY-MM-DD') : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="putTime"
|
||||
label="实施日期"
|
||||
width="130">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.putTime ? $moment(scope.row.putTime).format('YYYY-MM-DD') : '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standStatusShow"
|
||||
label="标准状态"
|
||||
width="150"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<loading :loading="replaceLoading">{{$t('m.dataAcquisition')}}</loading>
|
||||
<!--分页-->
|
||||
<pagination
|
||||
style="position: relative;"
|
||||
:page="replacePage"
|
||||
:total="replaceTotal"
|
||||
@pageChange="pageChangeReplace"
|
||||
@pageSizeChange="pageSizeChangeReplace"></pagination>
|
||||
<div slot="footer" class="demo-drawer-footer">
|
||||
<el-button size="small" round class="common-button-primary" icon="el-icon-close" @click="replaceLawsNumModel = false">取消</el-button>
|
||||
<el-button size="small" type="primary" round class="common-button-default" icon="el-icon-check" @click="replaceLawsNumModelBt">提交</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</el-col>
|
||||
<!-- </div>-->
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'CustomInput',
|
||||
props: {
|
||||
config: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
value: {
|
||||
required: true
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 栅格比例
|
||||
span: {
|
||||
type: Number,
|
||||
default: 24
|
||||
},
|
||||
// 是否为流程中使用
|
||||
processModel: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// label宽度
|
||||
labelWidth: {
|
||||
type: String,
|
||||
default: '150px'
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
replaceLawsNumModel: false,
|
||||
sarBussionessLawsEO: {
|
||||
replaceLawsNum: ''
|
||||
},
|
||||
// 代替标准号
|
||||
replaceLawsNumForm: {
|
||||
numberName: '', // 企标编号
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 0,
|
||||
lawsType: 'INLAND',
|
||||
quoteIdList: '',
|
||||
validFlag: '0'
|
||||
},
|
||||
replaceLawsNumRow: [], // 代替政策号 数组内容
|
||||
replaceTotal: 0,
|
||||
selectedListRep: [],
|
||||
replaceLoading: true,
|
||||
replacePage: 1
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
placeholder () {
|
||||
return `请输入${this.config.attrName}`
|
||||
},
|
||||
showMessage () {
|
||||
return `${this.config.attrName}不能为空`
|
||||
},
|
||||
isRequired () {
|
||||
return !!this.config.isMust
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击查询
|
||||
getSearch () {
|
||||
this.replaceLawsNumForm.page = 1
|
||||
this.replacePage = 1
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
handleChange (event) {
|
||||
// const value = event.target.value
|
||||
const value = event
|
||||
this.$emit('input', value)
|
||||
},
|
||||
selectLaws () {
|
||||
// if (this.standNumFlag === 1) {
|
||||
// this.$refs.selections.selectAll(false)
|
||||
// }
|
||||
// this.sarBussionessLawsEO.replaceLawsNum = ''
|
||||
this.replaceLawsNumModel = true
|
||||
this.replaceLawsNumForm.page = 1
|
||||
this.replacePage = 1
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 代替政策号 请求数据
|
||||
getReplaceLawsNumRow () {
|
||||
if (this.sarBussionessLawsEO.replaceLawsNum !== null && this.sarBussionessLawsEO.replaceLawsNum !== '') {
|
||||
this.replaceLawsNumForm.quoteIdList = this.quoteIdList1.toString() === '' ? '' : this.quoteIdList1
|
||||
} else {
|
||||
this.quoteIdList1 = []
|
||||
this.replaceLawsNumForm.quoteIdList = ''
|
||||
}
|
||||
this.$http.get('lawss/sarBussionessStand/getSarBussionStandPage', this.replaceLawsNumForm, {
|
||||
_this: this,
|
||||
loading: 'replaceLoading'
|
||||
}, res => {
|
||||
this.replaceLawsNumRow = res.data.list
|
||||
this.replaceTotal = res.data.count
|
||||
if (this.selectedListRep.length !== 0) {
|
||||
this.selectedListRep.map((list) => {
|
||||
this.replaceLawsNumRow.map((item) => {
|
||||
if (list.id === item.id) {
|
||||
item._checked = true
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 代替政策编号-取消
|
||||
replaceLawsNumModelCancel () {
|
||||
// this.replaceLawsNumModel = false
|
||||
this.$refs.selections.clearSelection()
|
||||
},
|
||||
// 代替政策号 table选择事件
|
||||
selectReplaceStandNumRowChange (row) {
|
||||
this.selectedListRep = row
|
||||
},
|
||||
// 代替政策分页
|
||||
pageChangeReplace (page) {
|
||||
this.replacePage = page
|
||||
this.replaceLawsNumForm.page = page
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
pageSizeChangeReplace (pageSize) {
|
||||
// this.replaceRows = pageSize
|
||||
this.replaceLawsNumForm.pageSize = pageSize
|
||||
this.getReplaceLawsNumRow()
|
||||
},
|
||||
// 代替政策编号确定
|
||||
replaceLawsNumModelBt () {
|
||||
let textArr = []
|
||||
|
||||
if (typeof this.value === 'string') {
|
||||
if (this.value) {
|
||||
textArr = this.value.split(',')
|
||||
}
|
||||
}
|
||||
if (this.selectedListRep.length === 0) {
|
||||
return this.$message({
|
||||
message: '请先选择数据',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
if (this.selectedListRep.length + textArr.length > 20) {
|
||||
return this.$message({
|
||||
message: '代替标准号最多选择20项',
|
||||
type: 'warning'
|
||||
})
|
||||
}
|
||||
this.selectedListRep.map((item) => {
|
||||
let texts = item.standCode
|
||||
textArr.push(texts)
|
||||
textArr = [...new Set(textArr)]
|
||||
this.replaceLawsNumModel = false
|
||||
})
|
||||
// this.SarLawsInfoEO.replaceLawsNum = textArr.join(',')
|
||||
this.$emit('input', textArr.join(','))
|
||||
this.$refs.selections.clearSelection()
|
||||
},
|
||||
// 点击查看
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherBussStandardDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'BUSINESS_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
getResetLawsNumRow () {
|
||||
this.replaceLawsNumForm = {
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent,
|
||||
total: 0,
|
||||
validFlag: '0'
|
||||
}
|
||||
this.replacePage = 1
|
||||
this.getReplaceLawsNumRow()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
/deep/.el-dialog__body{
|
||||
padding: 0 15px;
|
||||
.search-area{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
/deep/.el-dialog__footer{
|
||||
padding: 0 15px 10px;
|
||||
}
|
||||
.add-form-item{
|
||||
/deep/.el-form-item__content{
|
||||
.el-input{
|
||||
width: calc(~'100% - 80px');
|
||||
.el-input__inner{
|
||||
width: calc(~'100% - 20px');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/deep/ .el-form-item__error {
|
||||
right: 85px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,228 @@
|
||||
<!-- 表格组件 -->
|
||||
<template>
|
||||
<div class="process-table">
|
||||
<div class="header">
|
||||
<div class="flex-row">
|
||||
<slot name="header-left"></slot>
|
||||
</div>
|
||||
<div class="flex-row">
|
||||
<div class="switch-wrap"
|
||||
style="margin-right: 10px;"
|
||||
v-if="batchFill">
|
||||
<el-switch
|
||||
v-model="batchFillModel"
|
||||
:inactive-text="batchFillText">
|
||||
</el-switch>
|
||||
</div>
|
||||
<slot name="header-right"></slot>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
class="prc-table"
|
||||
:row-key="rowKey"
|
||||
border
|
||||
v-loading="loading"
|
||||
:element-loading-text="loadingText"
|
||||
element-loading-spinner="el-icon-loading"
|
||||
default-expand-all
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
:tree-props="{children: children, hasChildren: 'hasChildren'}">
|
||||
<el-table-column
|
||||
label=""
|
||||
width="60"
|
||||
align="center"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-checkbox
|
||||
:value="scope.row.checked"
|
||||
:disabled="scope.row.isParent && !scope.row[children].length"
|
||||
:indeterminate="isIndeterminate"
|
||||
@change="val => handleParentSelectionChange(val, scope.row, scope.$index)"
|
||||
v-if="scope.row.isParent"></el-checkbox>
|
||||
<el-checkbox
|
||||
:value="scope.row.checked"
|
||||
@change="val => handleItemsSelectionChange(val, scope.row, scope.$index)"
|
||||
v-else></el-checkbox>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template v-for="(col, index) in column">
|
||||
<!-- 普通展示类型 -->
|
||||
<el-table-column
|
||||
:key="col.prop"
|
||||
:prop="col.prop"
|
||||
:align="col.align || 'left'"
|
||||
v-if="!col.type"
|
||||
>
|
||||
<template slot="header" slot-scope="scope">
|
||||
<span v-html="col.label"></span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 输入框类型 -->
|
||||
<el-table-column
|
||||
:prop="col.prop"
|
||||
:align="col.align || 'left'"
|
||||
v-if="col.type === 'input'">
|
||||
<template slot="header" slot-scope="scope">
|
||||
<span v-html="col.label"></span>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row[col.prop]" :placeholder="'请输入' + col.label" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 输入框点击从树中选择的 -->
|
||||
<el-table-column
|
||||
:prop="col.prop"
|
||||
:align="col.align || 'left'"
|
||||
v-if="col.type === 'valInput'">
|
||||
<template slot="header" slot-scope="scope">
|
||||
<span v-html="col.label"></span>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row[col.prop]" v-show="false"></el-input>
|
||||
<el-input v-model="scope.row[col.showProp]" readonly :placeholder="'请选择' + col.label" v-if="col.showProp"></el-input>
|
||||
<span style="color: #aaa" v-else>showProp参数未传</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:prop="col.prop"
|
||||
:align="col.align || 'left'"
|
||||
v-if="col.type === 'action'">
|
||||
<template slot="header" slot-scope="scope">
|
||||
<span v-html="col.label"></span>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<span>操作</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</template>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="partsName"-->
|
||||
<!-- align="center">-->
|
||||
<!-- <template slot="header" slot-scope="scope">-->
|
||||
<!-- <span class="must">*</span>-->
|
||||
<!-- 责任部门-->
|
||||
<!-- </template>-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <el-input v-model="scope.row.parts" v-show="false"></el-input>-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="scope.row.partsName"-->
|
||||
<!-- placeholder="请选择部门"-->
|
||||
<!-- readonly-->
|
||||
<!-- @click.native="handleVisibleDept(scope.row.itemsList, scope.$index)"-->
|
||||
<!-- v-if="!scope.row.itemsList || !scope.row.itemsList.length"-->
|
||||
<!-- />-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column align="center">-->
|
||||
<!-- <template slot="header" slot-scope="scope">-->
|
||||
<!-- <span class="must">*</span>-->
|
||||
<!-- 联络人-->
|
||||
<!-- </template>-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <process-input-->
|
||||
<!-- v-model="scope.row.LLRName"-->
|
||||
<!-- placeholder="请选择人员"-->
|
||||
<!-- readonly-->
|
||||
<!-- :show-tips="scope.row.showTips"-->
|
||||
<!-- :tips="scope.row.tips"-->
|
||||
<!-- v-if="!scope.row.itemsList || !scope.row.itemsList.length"></process-input>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-table-column>-->
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'ProcessTable',
|
||||
mixins: [],
|
||||
components: {},
|
||||
props: {
|
||||
// 表格数据
|
||||
tableData: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
// 拓展Key
|
||||
rowKey: {
|
||||
type: String,
|
||||
default: 'id'
|
||||
},
|
||||
// 拓展表格数据
|
||||
children: {
|
||||
type: String,
|
||||
default: 'itemsList'
|
||||
},
|
||||
config: {
|
||||
type: Object,
|
||||
default: {}
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
batchFillModel: false,
|
||||
compConfig: {
|
||||
// 是否开启批量操作
|
||||
batchFill: false,
|
||||
// 批量操作按钮文字
|
||||
batchFillText: '批量填写',
|
||||
// loading
|
||||
loading: false,
|
||||
// loadingText
|
||||
loadingText: '正在加载数据',
|
||||
// column
|
||||
column: []
|
||||
},
|
||||
// checkbox是否全选
|
||||
isIndeterminate: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleParentSelectionChange() {},
|
||||
|
||||
handleItemsSelectionChange() {}
|
||||
},
|
||||
computed: {
|
||||
batchFill() {
|
||||
return this.compConfig.batchFill
|
||||
},
|
||||
batchFillText() {
|
||||
return this.compConfig.batchFillText
|
||||
},
|
||||
loading() {
|
||||
return this.compConfig.loading
|
||||
},
|
||||
loadingText() {
|
||||
return this.compConfig.loadingText
|
||||
},
|
||||
column() {
|
||||
return this.compConfig.column
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
config: {
|
||||
deep: true,
|
||||
handler(val, oldVal) {
|
||||
Object.assign(this.compConfig, oldVal, val)
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
Object.assign(this.compConfig, this.config)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.process-table {
|
||||
.header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,110 @@
|
||||
<!--整改流程标准号、标准名称、项目名称组件-->
|
||||
<template>
|
||||
<div class="header">
|
||||
<div class="item">
|
||||
<span class="label">标准号:</span>
|
||||
<span class="value table-jump" @click="detailsStandard(prcForm.standNum, prcForm.sarType)">{{ prcForm.standNum }}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="label">标准名称:</span>
|
||||
<span class="value table-jump" @click="detailsStandard(prcForm.standNum, prcForm.sarType)">{{ prcForm.standName }}</span>
|
||||
</div>
|
||||
<div class="item">
|
||||
<span class="label">项目名称:</span>
|
||||
<span class="value table-jump" @click="handlePreviewProject(prcForm.proId)">{{ prcForm.proName }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'ProcessZG',
|
||||
props: {
|
||||
prcForm: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 跳转基础库详情页
|
||||
* @param id 查询未失效标准或政策
|
||||
* @param sarType 当前数据是标准还是政策,判断跳转进哪个详情页
|
||||
*/
|
||||
detailsStandard (id, sarType) {
|
||||
this.$http.post('lawss/sarTestItem/validateStandNumber', {
|
||||
standnumber: id
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.pageType = res.data.standType
|
||||
let name = ''
|
||||
switch (sarType) {
|
||||
case 'INLAND_STAND':
|
||||
name = 'OtherStandardDetails'
|
||||
break
|
||||
case 'FOREIGN_LAWS':
|
||||
name = 'OtherLawsDetails'
|
||||
break
|
||||
case 'FOREIGN_STAND':
|
||||
name = 'OtherStandardDetails'
|
||||
break
|
||||
case 'BUSINESS_STAND':
|
||||
name = 'OtherBussStandardDetails'
|
||||
break
|
||||
}
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: name,
|
||||
params: {
|
||||
id: res.data.standid,
|
||||
pageType: sarType
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查询项目信息并跳转到项目详情
|
||||
* @param id
|
||||
*/
|
||||
handlePreviewProject (id) {
|
||||
this.$http.get('lawss/sarProductInfo/getProductInfoPage', {productIds: id}, {
|
||||
_this: this, loading: 'loading'
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.$store.commit('setLocalProData', JSON.stringify(res.data.list[0]))
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'LocalProductDetail'
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
.header {
|
||||
height: 55px;
|
||||
line-height: 55px;
|
||||
background: #eee;
|
||||
display: flex;
|
||||
padding: 0 20px;
|
||||
.item {
|
||||
margin-right: 20px;
|
||||
font-size: 16px;
|
||||
&:last-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
.label {
|
||||
color: #aaa;
|
||||
font-weight: 600;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,404 @@
|
||||
<!-- 流程组织机构树 -->
|
||||
<template>
|
||||
<div class="dept-tree">
|
||||
<laws-tree
|
||||
ref="deptTree"
|
||||
:treeDivId="treeDivId"
|
||||
:zNodes="zNodes"
|
||||
:expandAll="expandAll"
|
||||
:editable="editable"
|
||||
:deptSelect="deptSelect"
|
||||
:pIdCheck="pIdCheck"
|
||||
:loading="loading.treeLoading"
|
||||
@treeClick="(treeId, treeNode) => treeClick(treeId, treeNode)"
|
||||
@treeOnExpand="(treeId, treeNode) => treeOnExpand(treeId, treeNode)"
|
||||
@treeDblClick="(treeId, treeNode) => treeDblClick(treeId, treeNode)"
|
||||
@treeReady="treeReady"
|
||||
></laws-tree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'deptTree',
|
||||
data () {
|
||||
return {
|
||||
dept: [], // 部门节点
|
||||
deptUser: [], // 部门人员节点
|
||||
projectManagerzNodes: [],
|
||||
loading: {
|
||||
treeLoading: false
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 节点点击
|
||||
treeClick (treeId, treeNode) {
|
||||
this.$emit('treeClick', treeId, treeNode)
|
||||
},
|
||||
// 节点双击
|
||||
treeDblClick (treeId, treeNode) {
|
||||
this.$emit('treeDblClick', treeId, treeNode)
|
||||
},
|
||||
// 节点展开
|
||||
treeOnExpand (treeId, treeNode) {
|
||||
// this.projectManagerClick(treeNode.id, this.projectManagerzNodes)
|
||||
// this.$emit('treeOnExpand', treeId, treeNode)
|
||||
},
|
||||
// 首次加载完成
|
||||
treeReady () {
|
||||
this.$emit('treeReady')
|
||||
},
|
||||
// 节点重新加载
|
||||
treeReload () {
|
||||
this.$refs.deptTree.lawsTreeInit()
|
||||
},
|
||||
/**
|
||||
* @description: 获取组织到部门
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018/10/11 16:29:37
|
||||
*/
|
||||
getDept () {
|
||||
this.loading.treeLoading = true
|
||||
return new Promise((resolve, reject) => {
|
||||
let url = this.allDept ? 'sys/org/getTree' : 'sys/org/getIdsByorgType'
|
||||
this.$http.get(url, {}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
let zNodesDept = []
|
||||
res.data.map((item, i) => {
|
||||
let zObj = {}
|
||||
// 该节点为机构
|
||||
zObj.name = item.orgName
|
||||
zObj.icon = 'static/images/dept.png'
|
||||
// zObj.isParent = true
|
||||
zObj.shotName = item.shotName
|
||||
zObj.remarks = item.remarks
|
||||
zObj.id = item.id
|
||||
zObj.pId = item.pId
|
||||
zNodesDept[i] = zObj
|
||||
})
|
||||
this.dept = zNodesDept
|
||||
resolve(res.data)
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 获取所有人员
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018/10/11 16:57:33
|
||||
*/
|
||||
getUser (treeNodeList) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('sys/user', {
|
||||
pageNo: 1,
|
||||
processFlag: '1'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
for (let i = 0; i < res.data.list.length; i++) {
|
||||
let obj = {}
|
||||
for (let key in res.data.list[i]) {
|
||||
if (key === 'usid') {
|
||||
obj.id = res.data.list[i][key]
|
||||
} else if (key === 'orgId') {
|
||||
obj.pId = res.data.list[i][key]
|
||||
} else {
|
||||
obj[key] = res.data.list[i][key]
|
||||
}
|
||||
}
|
||||
treeNodeList.push(obj)
|
||||
}
|
||||
// 获取组织与人员完毕,开始组装树结构
|
||||
let zNodes = []
|
||||
for (let i = 0; i < treeNodeList.length; i++) {
|
||||
let zObj = {}
|
||||
zObj.id = treeNodeList[i].id
|
||||
zObj.pId = treeNodeList[i].pId
|
||||
// 该节点为人员
|
||||
if (treeNodeList[i].uname !== undefined) {
|
||||
zObj.name = treeNodeList[i].uname
|
||||
zObj.icon = 'static/images/user.png'
|
||||
zObj.isParent = false
|
||||
zObj.orgName = treeNodeList[i].orgName
|
||||
} else {
|
||||
// 该节点为机构
|
||||
zObj.name = treeNodeList[i].orgName
|
||||
zObj.icon = 'static/images/dept.png'
|
||||
zObj.isParent = true
|
||||
}
|
||||
zObj.shotName = treeNodeList[i].shotName
|
||||
zObj.remarks = treeNodeList[i].remarks
|
||||
if (zObj.pId === null && !zObj.isParent) {
|
||||
zObj.pId = ''
|
||||
zObj.orgName = '未分配人员'
|
||||
}
|
||||
zNodes[i] = zObj
|
||||
}
|
||||
zNodes.push({
|
||||
id: '',
|
||||
pId: null,
|
||||
name: '未分配人员',
|
||||
isParent: true,
|
||||
icon: 'static/images/dept.png'
|
||||
})
|
||||
this.deptUser = zNodes
|
||||
this.loading.treeLoading = false
|
||||
}
|
||||
resolve()
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 选中节点移除
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018/10/29 14:42:02
|
||||
*/
|
||||
removeNode (treeNode) {
|
||||
this.$refs.deptTree.removeNode(treeNode)
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 节点添加
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018/10/29 14:53:24
|
||||
*/
|
||||
addNode (treeNode) {
|
||||
this.$refs.deptTree.addNode(treeNode)
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 节点取消选中
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018/10/29 16:09:11
|
||||
*/
|
||||
cancelSelectedNode (treeNode) {
|
||||
if (treeNode !== '' && treeNode !== undefined) {
|
||||
this.$refs.deptTree.cancelSelectedNode(treeNode)
|
||||
} else {
|
||||
this.$refs.deptTree.cancelSelectedNode()
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 节点选中
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018/10/29 16:14:23
|
||||
*/
|
||||
selectNode (treeNode) {
|
||||
if (treeNode !== '' && treeNode !== undefined) {
|
||||
this.$refs.deptTree.selectNode(treeNode)
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 获取选中节点
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018/10/29 16:14:23
|
||||
*/
|
||||
getSelectNode (idList) {
|
||||
return this.$refs.deptTree.getSelectNode(idList)
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 保存打开的节点
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018/11/23 16:37:01
|
||||
*/
|
||||
setOpenNodes () {
|
||||
this.$refs.deptTree.setOpenNodes()
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 清空过滤输入框
|
||||
* @author: chenxiaoxi
|
||||
* @date: 2018/11/23 16:52:10
|
||||
*/
|
||||
clearSearch () {
|
||||
this.$refs.deptTree.clearSearch()
|
||||
},
|
||||
/**
|
||||
* @author liruohao
|
||||
* @date 2019/4/24
|
||||
* @Description: 获取选中的部门下子子部门
|
||||
*/
|
||||
getDeptChild (list) {
|
||||
this.$http.get('sys/org/getChildDept', {
|
||||
orgId: list[0]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
// 获取组织与人员完毕,开始组装树结构
|
||||
let zNodes = []
|
||||
let treeNodeList = res.data
|
||||
for (let i = 0; i < treeNodeList.length; i++) {
|
||||
let zObj = {}
|
||||
zObj.id = treeNodeList[i].id
|
||||
zObj.pId = treeNodeList[i].pId
|
||||
// 该节点为机构
|
||||
zObj.name = treeNodeList[i].orgName
|
||||
zObj.icon = 'static/images/dept.png'
|
||||
zObj.isParent = true
|
||||
zObj.shotName = treeNodeList[i].shotName
|
||||
zObj.remarks = treeNodeList[i].remarks
|
||||
zNodes[i] = zObj
|
||||
}
|
||||
this.projectManagerClick(list[0], zNodes)
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @author liruohao
|
||||
* @date 2019/4/23
|
||||
* @Description: 根据部门查询项目经理 责任工程师
|
||||
*/
|
||||
projectManagerClick (id, treeNodeList) {
|
||||
this.$http.get('sys/org/getTreeByRoleAndOrgId1', {
|
||||
roleName: this.department[1],
|
||||
orgId: id,
|
||||
processFlag: '1'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
if (res.data.list.length !== 0) {
|
||||
for (let i = 0; i < res.data.list.length; i++) {
|
||||
let obj = {}
|
||||
for (let key in res.data.list[i]) {
|
||||
if (key === 'usId') {
|
||||
obj.id = res.data.list[i][key]
|
||||
} else if (key === 'userName') {
|
||||
obj.name = res.data.list[i][key]
|
||||
} else {
|
||||
obj.icon = 'static/images/user.png'
|
||||
obj.isParent = false
|
||||
obj[key] = res.data.list[i][key]
|
||||
}
|
||||
}
|
||||
treeNodeList.push(obj)
|
||||
}
|
||||
this.projectManagerzNodes = treeNodeList
|
||||
}
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
props: {
|
||||
// 是否显示组织下的用户
|
||||
showUser: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否禁用
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 部门节点
|
||||
zNodesDept: {
|
||||
type: Array
|
||||
},
|
||||
// 部门人员节点
|
||||
zNodesDeptUser: {
|
||||
type: Array
|
||||
},
|
||||
// 是否可进行操作
|
||||
editable: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
// 部门是否可以被选择
|
||||
deptSelect: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 树实例Id
|
||||
treeDivId: {
|
||||
type: String
|
||||
},
|
||||
// 是否获取所有组织
|
||||
allDept: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 是否根据责任部门查找经理
|
||||
department: {
|
||||
type: Array
|
||||
},
|
||||
// 需要回显的节点
|
||||
idList: {
|
||||
type: Array,
|
||||
required: false
|
||||
},
|
||||
// 回显的部门节点
|
||||
deptList: {
|
||||
type: Array
|
||||
},
|
||||
// 是否展开全部
|
||||
expandAll: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 不选中根节点
|
||||
pIdCheck: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 节点(给lawsTree传的节点,根据展示的类型传不同的值)
|
||||
zNodes () {
|
||||
return this.showUser ? (this.zNodesDeptUser || this.deptUser) : (this.projectManagerzNodes.length === 0 ? (this.zNodesDept || this.dept) : this.projectManagerzNodes)
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
zNodes (val) {
|
||||
this.$nextTick(() => {
|
||||
if (this.idList && this.idList.length) {
|
||||
let deptUser = this.$refs.deptTree.getSelectNode(this.idList)
|
||||
this.$emit('selectNodeUser', deptUser)
|
||||
}
|
||||
})
|
||||
},
|
||||
deptList (val) {
|
||||
if (val.length) {
|
||||
let zNodes = this.showUser ? (this.zNodesDeptUser || this.deptUser) : (this.zNodesDept || this.dept)
|
||||
for (let i = 0; i < zNodes.length; i++) {
|
||||
val.map((displayNode) => {
|
||||
if (zNodes[i].id === displayNode.id) {
|
||||
zNodes.splice(i, 1)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
if (this.department) {
|
||||
this.getDeptChild(this.department)
|
||||
} else {
|
||||
this.getDept().then(res => {
|
||||
this.getUser(res)
|
||||
}, e => {})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.dept-tree{
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,139 @@
|
||||
export const roleUserData = {
|
||||
methods: {
|
||||
// 请求部门和人员数据
|
||||
SQGetRoleUserData(pOrgId, roleIdTwo, roleHierarchyName) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.SQGetDeptChild(pOrgId).then(treeNodeList => {
|
||||
this.SQGetUserByRole(treeNodeList, pOrgId, roleIdTwo, roleHierarchyName)
|
||||
.then(roleUserData => {
|
||||
resolve(roleUserData)
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 获取选中的部门下子子部门
|
||||
SQGetDeptChild (pOrgId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('sys/org/getChildDept', {
|
||||
orgId: this.BM || pOrgId
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
// 获取组织与人员完毕,开始组装树结构
|
||||
const zNodes = []
|
||||
let treeNodeList = res.data
|
||||
for (let i = 0; i < treeNodeList.length; i++) {
|
||||
let zObj = {}
|
||||
zObj.id = treeNodeList[i].id
|
||||
zObj.pId = treeNodeList[i].pId
|
||||
// 该节点为机构
|
||||
zObj.name = treeNodeList[i].orgName
|
||||
zObj.icon = 'static/images/dept.png'
|
||||
zObj.isParent = true
|
||||
zObj.shotName = treeNodeList[i].shotName
|
||||
zObj.remarks = treeNodeList[i].remarks
|
||||
zObj.iconSkin = 'org-dept'
|
||||
zNodes[i] = zObj
|
||||
}
|
||||
resolve(res.data)
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 查询指定角色的人员组成树结构
|
||||
SQGetUserByRole (treeNodeList, pOrgId, roleIdTwo, roleHierarchyName) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
orgId: this.BM || pOrgId,
|
||||
roleHierarchyName: this.roleName || roleHierarchyName,
|
||||
roleId: this.roleId || roleIdTwo
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
|
||||
if (res.ok) {
|
||||
for (let i = 0; i < res.data.length; i++) {
|
||||
let obj = {}
|
||||
for (let key in res.data[i]) {
|
||||
if (key === 'userId') {
|
||||
obj.id = res.data[i][key]
|
||||
} else if (key === 'orgId') {
|
||||
obj.pId = res.data[i][key]
|
||||
} else {
|
||||
obj[key] = res.data[i][key]
|
||||
}
|
||||
}
|
||||
obj.userId = res.data[i].userId || null
|
||||
obj.roleId = res.data[i].roleId || null
|
||||
treeNodeList.push(obj)
|
||||
}
|
||||
// 获取组织与人员完毕,开始组装树结构
|
||||
let zNodes = []
|
||||
for (let i = 0; i < treeNodeList.length; i++) {
|
||||
let zObj = {}
|
||||
zObj.id = treeNodeList[i].id
|
||||
zObj.pId = treeNodeList[i].pId
|
||||
// 该节点为人员
|
||||
if (treeNodeList[i].userName) {
|
||||
if (treeNodeList[i].email) {
|
||||
if (treeNodeList[i].roleName) {
|
||||
zObj.name = `${treeNodeList[i].userName}(${treeNodeList[i].email})(${treeNodeList[i].roleName})`
|
||||
} else {
|
||||
zObj.name = `${treeNodeList[i].userName}(${treeNodeList[i].email})`
|
||||
}
|
||||
} else {
|
||||
if (treeNodeList[i].roleName) {
|
||||
zObj.name = `${treeNodeList[i].userName}(${treeNodeList[i].roleName})`
|
||||
} else {
|
||||
zObj.name = `${treeNodeList[i].userName}`
|
||||
}
|
||||
}
|
||||
if (treeNodeList[i].roleName) {
|
||||
zObj.showName = treeNodeList[i].userName + '(' + treeNodeList[i].roleName + ')'
|
||||
} else {
|
||||
zObj.showName = treeNodeList[i].userName
|
||||
}
|
||||
zObj.icon = 'static/images/user.png'
|
||||
zObj.iconSkin = 'org-user'
|
||||
zObj.isParent = false
|
||||
zObj.orgName = treeNodeList[i].orgName
|
||||
// zObj.oldname = treeNodeList[i].userName
|
||||
zObj.roleId = treeNodeList[i].roleId
|
||||
zObj.roleName = treeNodeList[i].roleName
|
||||
zObj.userId = treeNodeList[i].userId
|
||||
zObj.userName = treeNodeList[i].userName
|
||||
zObj.pOrgId = treeNodeList[i].pOrgId
|
||||
zObj.userIdAndRoleId = treeNodeList[i].userIdAndRoleId
|
||||
} else {
|
||||
// 该节点为机构
|
||||
zObj.name = treeNodeList[i].orgName
|
||||
zObj.oldname = treeNodeList[i].orgName
|
||||
zObj.showName = treeNodeList[i].orgName
|
||||
zObj.icon = 'static/images/dept.png'
|
||||
zObj.iconSkin = 'org-dept'
|
||||
zObj.isParent = true
|
||||
zObj.isChecked = true
|
||||
}
|
||||
// zObj.shotName = treeNodeList[i].shotName
|
||||
// zObj.remarks = treeNodeList[i].remarks
|
||||
if (zObj.pId === null && !zObj.isParent) {
|
||||
zObj.pId = ''
|
||||
zObj.orgName = '未分配人员'
|
||||
}
|
||||
zNodes[i] = zObj
|
||||
}
|
||||
this.zNodes = zNodes
|
||||
resolve(this.zNodes)
|
||||
}
|
||||
}, e => {
|
||||
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,332 @@
|
||||
<comment>
|
||||
# 组件注释
|
||||
</comment>
|
||||
<template>
|
||||
<div class="State1">
|
||||
<div class="state-left-tree">
|
||||
<div class="tree-box">
|
||||
<FormItem label="任务选取" prop="processUserList">
|
||||
<div class="tree-container">
|
||||
<div class="selected-list" style="width: 100%">
|
||||
<laws-tree :zNodes="zNodes"
|
||||
ref="domesticTree"
|
||||
treeDivId="domesticTree"
|
||||
showRMenu
|
||||
deptSelect
|
||||
autoSelect
|
||||
allowDrag
|
||||
expandAll
|
||||
@treeClick="(treeId, treeNode) => clickDropMenu('clickMenu', treeNode)"
|
||||
@treeAdd="(treeId, treeNode) => clickDropMenu('newMenu', treeNode)"
|
||||
@treeEdit="(treeId, treeNode) => clickDropMenu('editMenu', treeNode)"
|
||||
@treeRemove="(treeId, treeNode) => clickDropMenu('deleteMenu', treeNode)"
|
||||
></laws-tree>
|
||||
</div>
|
||||
</div>
|
||||
</FormItem>
|
||||
</div>
|
||||
<div class="distribute">
|
||||
<Button type="primary" @click="distributeClick">分发</Button>
|
||||
</div>
|
||||
<div class="table-right">
|
||||
<Table :height="tableHeight" border ref="selection" :columns="sarPlanInfoTable" :data="sarPlanInfoDatas" @on-selection-change="getSelectedDatas"></Table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="state-left-bottom">
|
||||
<Button type="primary" @click="bottomClick">提交</Button>
|
||||
</div>
|
||||
<Modal v-model="menuModalFlag" width="600px" :title="menuModalTitle" @on-visible-change="modalChange" class="standards-tree-modal" :mask-closable="false">
|
||||
<Form ref="sarMenu" :model="sarMenu" :rules="sarMenuRules" class="label-input-form" :label-width="100">
|
||||
<FormItem label="条款号" prop="name" class="standards-info-item">
|
||||
<Input v-model.trim="sarMenu.name" placeholder="请输入条款号" style="width: 6rem"></Input>
|
||||
</FormItem>
|
||||
<FormItem label="条款名称" prop="itemName" class="standards-info-item">
|
||||
<Input v-model="sarMenu.itemName" placeholder="只允许输入条款名称" style="width: 6rem"></Input>
|
||||
</FormItem>
|
||||
</Form>
|
||||
<div slot="footer">
|
||||
<Button type="text" size="large" @click="menuModalFlag = false">取消</Button>
|
||||
<Button type="info" size="large" @click="newMenuSave">确定</Button>
|
||||
</div>
|
||||
</Modal>
|
||||
<Drawer
|
||||
class="re-choose-person-tree"
|
||||
:mask-closeable="false"
|
||||
title="处理人选择"
|
||||
:styles="styles"
|
||||
v-model="visibleReChoosePerson"
|
||||
@on-close="handleReChooseClose"
|
||||
width="350">
|
||||
<dept-tree
|
||||
treeDivId="reChoosePersonTree"
|
||||
showUser
|
||||
allDept
|
||||
:editable="false"
|
||||
v-if="visibleReChoosePerson"
|
||||
@treeClick="handleReChooseClick"
|
||||
></dept-tree>
|
||||
<div class="demo-drawer-footer">
|
||||
<Button @click="visibleReChoosePerson = false">取消</Button>
|
||||
<Button type="primary" @click="submit">提交</Button>
|
||||
</div>
|
||||
</Drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import 'zTree/js/jquery.ztree.core.js'
|
||||
import 'zTree/js/jquery.ztree.excheck.js'
|
||||
import 'zTree/js/jquery.ztree.exedit.js'
|
||||
import deptTree from '../../../components/deptTree'
|
||||
export default {
|
||||
name: 'State1',
|
||||
components: {
|
||||
deptTree
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
styles: {
|
||||
height: 'calc(100% - 55px)',
|
||||
overflow: 'auto',
|
||||
paddingBottom: '53px',
|
||||
position: 'static'
|
||||
},
|
||||
sarMenuRules: {
|
||||
name: [
|
||||
// {required: true, message: '条款号不能为空', trigger: 'blur'},
|
||||
{type: 'string', max: 100, message: '条款号不能超过100个字符', trigger: 'blur'}
|
||||
],
|
||||
itemName: [
|
||||
{required: true, message: '条款名称不能为空', trigger: 'blur'},
|
||||
{type: 'string', max: 100, message: '条款名称不能超过100个字符', trigger: 'blur'}
|
||||
]
|
||||
},
|
||||
sarMenu: {},
|
||||
menuModalFlag: false,
|
||||
menuModalTitle: '',
|
||||
reChoosePerson: '',
|
||||
// 重新选择下一处理人
|
||||
visibleReChoosePerson: false,
|
||||
tableHeight: 0,
|
||||
zNodes: [],
|
||||
sarPlanInfoTable: [
|
||||
{
|
||||
key: 'clause',
|
||||
align: 'center',
|
||||
title: '条款'
|
||||
},
|
||||
{
|
||||
key: 'sendUserName',
|
||||
align: 'center',
|
||||
title: '分发人'
|
||||
}
|
||||
],
|
||||
selectSarMenu: {},
|
||||
sarPlanInfoDatas: [],
|
||||
saveSelectedItems: []
|
||||
}
|
||||
},
|
||||
props: {
|
||||
processForm: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
watch: {},
|
||||
methods: {
|
||||
bottomClick () {
|
||||
if (this.sarPlanInfoDatas.length === 0) {
|
||||
return this.$Message.warning('请先选择分发人')
|
||||
}
|
||||
this.processForm.sendUser = []
|
||||
this.processForm.content = JSON.stringify(this.sarPlanInfoDatas)
|
||||
this.sarPlanInfoDatas.map((item) => {
|
||||
this.processForm.sendUser.push(item.sendUser)
|
||||
})
|
||||
this.processForm.stage = '2'
|
||||
this.processForm.taskEndTime = this.processForm.taskEndTime !== '' ? this.$dateFormat(this.processForm.taskEndTime, 'yyyy-MM-dd hh:mm:ss') : ''
|
||||
this.$http.post('activiti/busTaskInfo/createTask', this.processForm, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.$Message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
})
|
||||
},
|
||||
submit () {
|
||||
if (this.reChoosePerson.id) {
|
||||
this.sarPlanInfoDatas.push({
|
||||
clause: this.selectSarMenu.itemNum === null ? '' : this.selectSarMenu.itemNum + ' ' + this.selectSarMenu.itemName,
|
||||
sendUser: this.reChoosePerson.id,
|
||||
sendUserName: this.reChoosePerson.name
|
||||
})
|
||||
this.visibleReChoosePerson = false
|
||||
} else {
|
||||
this.$Message.warning('请先选择分发人')
|
||||
}
|
||||
},
|
||||
getSelectedDatas (selection) {
|
||||
this.saveSelectedItems = selection
|
||||
},
|
||||
// 生成总目录 id
|
||||
randomTreeId () {
|
||||
let data = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
|
||||
let result = ''
|
||||
for (let i = 0; i < 20; i++) {
|
||||
let r = Math.floor(Math.random() * 62)
|
||||
result += data[r]
|
||||
}
|
||||
return result
|
||||
},
|
||||
newMenuSave () {
|
||||
let obj = {
|
||||
id: this.randomTreeId(),
|
||||
pId: this.selectSarMenu.id,
|
||||
name: (this.sarMenu.name != null ? this.sarMenu.name : '') + ' ' + this.sarMenu.itemName,
|
||||
itemNum: this.sarMenu.name,
|
||||
itemName: this.sarMenu.itemName,
|
||||
type: this.selectSarMenu.level
|
||||
}
|
||||
if (this.menuAddOrUpdateFlag === 1) {
|
||||
this.zNodes.push(obj)
|
||||
this.menuModalFlag = false
|
||||
this.$Message.success('新增成功')
|
||||
} else {
|
||||
this.zNodes.map((item) => {
|
||||
if (item.id === this.sarMenu.id) {
|
||||
item.name = (this.sarMenu.name != null ? this.sarMenu.name : '') + ' ' + this.sarMenu.itemName
|
||||
item.itemNum = this.sarMenu.name
|
||||
item.itemName = this.sarMenu.itemName
|
||||
}
|
||||
})
|
||||
this.menuModalFlag = false
|
||||
this.$Message.success('编辑成功')
|
||||
}
|
||||
},
|
||||
// 对话框关闭时
|
||||
modalChange (flag) {
|
||||
if (!flag) {
|
||||
this.$refs['sarMenu'].resetFields()
|
||||
}
|
||||
},
|
||||
clickDropMenu (name, treeNode) {
|
||||
this.selectSarMenu = JSON.parse(JSON.stringify(treeNode))
|
||||
if (undefined !== this.selectSarMenu.id) { // 当前有选中节点
|
||||
if (name === 'newMenu') {
|
||||
if (treeNode.level >= 5) {
|
||||
this.$Message.warning('只能添加到第五级')
|
||||
} else {
|
||||
this.menuModalTitle = '新增目录'
|
||||
this.menuModalFlag = true
|
||||
this.menuAddOrUpdateFlag = 1
|
||||
}
|
||||
} else if (name === 'editMenu') {
|
||||
// if (this.selectSarMenu.type === 'root') {
|
||||
// this.$Message.warning('模板固定目录,不可编辑')
|
||||
// } else {
|
||||
// }
|
||||
this.sarMenu = JSON.parse(JSON.stringify(treeNode))
|
||||
this.sarMenu.name = this.selectSarMenu.itemNum
|
||||
this.menuModalTitle = '编辑目录'
|
||||
this.menuModalFlag = true
|
||||
this.menuAddOrUpdateFlag = 2
|
||||
} else if (name === 'deleteMenu') {
|
||||
this.$Modal.confirm({
|
||||
title: '提示',
|
||||
content: '确认删除此节点吗?',
|
||||
onOk: () => {
|
||||
this.zNodes.map((item, index) => {
|
||||
if (treeNode.id === item.id) {
|
||||
this.zNodes.splice(index, 1)
|
||||
}
|
||||
})
|
||||
this.$refs.domesticTree.selectRootNode()
|
||||
this.$Message.success('删除成功')
|
||||
}
|
||||
})
|
||||
// this.$Message.warning('正在开发中')
|
||||
} else {
|
||||
|
||||
}
|
||||
} else {
|
||||
this.$Modal.info({
|
||||
title: '提示',
|
||||
content: '请选择节点!'
|
||||
})
|
||||
}
|
||||
},
|
||||
handleReChooseClick (treeId, treeNode) {
|
||||
this.reChoosePerson = treeNode
|
||||
},
|
||||
handleReChooseClose () {
|
||||
this.reChoosePerson = ''
|
||||
this.reChooseType = ''
|
||||
},
|
||||
distributeClick () {
|
||||
if (this.selectSarMenu.pId) {
|
||||
|
||||
} else {
|
||||
return this.$Message.warning('不能选择根节点')
|
||||
}
|
||||
this.visibleReChoosePerson = true
|
||||
},
|
||||
treeSelect () {
|
||||
let array = this.processForm.selectTemplateList.filter((item) => {
|
||||
return item.id === this.processForm.template
|
||||
})
|
||||
let menuList = array[0].menuList
|
||||
let str = []
|
||||
let option = {}
|
||||
for (let i = 0; i < menuList.length; i++) {
|
||||
option = { id: menuList[i].id,
|
||||
pId: menuList[i].pid,
|
||||
itemNum: menuList[i].name,
|
||||
name: (menuList[i].name != null ? menuList[i].name : '') + ' ' + menuList[i].itemName,
|
||||
number: menuList[i].name,
|
||||
itemName: menuList[i].itemName != null ? menuList[i].itemName : '',
|
||||
type: menuList[i].type,
|
||||
remarks: menuList[i].remarks}
|
||||
str.push(option)
|
||||
if (menuList[i].parentId == null || menuList[i].parentId === '') {
|
||||
this.saveRootNodes = menuList[i].id
|
||||
}
|
||||
this.zNodes = str
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
mounted () {
|
||||
this.$nextTick(() => {
|
||||
this.treeSelect()
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
//@import '~styles/mixins';
|
||||
//@import '~styles/style';
|
||||
.State1 {
|
||||
width: 100%;
|
||||
height: 500px;
|
||||
.state-left-tree{
|
||||
//.flex();
|
||||
& > :first-child{
|
||||
flex: 0 0 40%;
|
||||
}
|
||||
& >:last-child{
|
||||
flex: 1;
|
||||
}
|
||||
.distribute{
|
||||
flex: 0 0 20%;
|
||||
//.flex();
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.state-left-bottom{
|
||||
//.flex();
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,222 @@
|
||||
<comment>
|
||||
# 流程demo 步骤5 页面
|
||||
</comment>
|
||||
<template>
|
||||
<div class="state5">
|
||||
<Table border ref="selection" :columns="detailspanumns" :data="detailData"></Table>
|
||||
<div class="date-box">
|
||||
<label class="label-text">会议讨论时间:</label>
|
||||
<DatePicker type="date" v-model="time" :editable="false" format="yyyy-MM-dd" placeholder="选择会议讨论时间" clearable></DatePicker>
|
||||
</div>
|
||||
<div class="state-left-bottom">
|
||||
<Button type="primary" @click="bottomClick">提交</Button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'State5',
|
||||
props: {
|
||||
processForm: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
time: null,
|
||||
detailspanumns: [
|
||||
{
|
||||
title: '条款号',
|
||||
key: 'taskName',
|
||||
align: 'center',
|
||||
width: 200,
|
||||
render: (h, params) => {
|
||||
return h('div', {
|
||||
class: {
|
||||
'text-overflow-hidden': true
|
||||
},
|
||||
attrs: {
|
||||
title: params.row.taskName
|
||||
}
|
||||
}, params.row.taskName)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '条款名称',
|
||||
key: 'taskAssigneeName',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', {
|
||||
class: {
|
||||
'text-overflow-hidden': true
|
||||
},
|
||||
attrs: {
|
||||
title: params.row.taskAssigneeName
|
||||
}
|
||||
}, params.row.taskAssigneeName)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '反馈意见',
|
||||
key: 'createTime',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
// let texts = params.row.createTime.substring(0, 10)
|
||||
let texts = params.row.createTime
|
||||
return h('div', {
|
||||
props: {}
|
||||
}, texts)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '反馈意见起草单位',
|
||||
key: 'completeTime',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
// let texts = params.row.completeTime.substring(0, 10)
|
||||
let texts = params.row.completeTime
|
||||
return h('div', {
|
||||
props: {}
|
||||
}, texts)
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '反馈意见起草人',
|
||||
key: 'taskComment',
|
||||
align: 'center',
|
||||
type: 'html',
|
||||
width: 200,
|
||||
render: (h, params) => {
|
||||
return h('div', {
|
||||
}, params.row.taskComment)
|
||||
}
|
||||
}
|
||||
],
|
||||
detailData: [
|
||||
{
|
||||
taskName: '3.3',
|
||||
taskAssigneeName: '车辆高度 vehicle height',
|
||||
createTime: '合格',
|
||||
completeTime: '一汽集团',
|
||||
taskComment: '王五'
|
||||
},
|
||||
{
|
||||
taskName: '3.5',
|
||||
taskAssigneeName: '低速货车 low-speed goods vehicle',
|
||||
createTime: '合格',
|
||||
completeTime: '东风集团',
|
||||
taskComment: '王五'
|
||||
},
|
||||
{
|
||||
taskName: '3.7',
|
||||
taskAssigneeName: '栏板式货车/半挂车 drop slide vehicle/trailer',
|
||||
createTime: '合格',
|
||||
completeTime: '北汽集团',
|
||||
taskComment: '张三'
|
||||
},
|
||||
{
|
||||
taskName: '3.8',
|
||||
taskAssigneeName: '平板式货车/半挂车 platform goods vehicle/trailer',
|
||||
createTime: '合格',
|
||||
completeTime: '广汽集团',
|
||||
taskComment: '李四'
|
||||
},
|
||||
{
|
||||
taskName: '3.12',
|
||||
taskAssigneeName: '长头绞接列车 long nose articulated vehicle',
|
||||
createTime: '合格',
|
||||
completeTime: '北汽集团',
|
||||
taskComment: '张三'
|
||||
},
|
||||
{
|
||||
taskName: '4.1',
|
||||
taskAssigneeName: '外廓尺寸要求',
|
||||
createTime: '合格',
|
||||
completeTime: '东风集团',
|
||||
taskComment: '赵六'
|
||||
},
|
||||
{
|
||||
taskName: '4.4',
|
||||
taskAssigneeName: '车辆通过性要求',
|
||||
createTime: '合格',
|
||||
completeTime: '东风集团',
|
||||
taskComment: '王五'
|
||||
},
|
||||
{
|
||||
taskName: '4.5',
|
||||
taskAssigneeName: '后悬要求',
|
||||
createTime: '合格',
|
||||
completeTime: '广汽集团',
|
||||
taskComment: '王五'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 流程5 提交 事件
|
||||
bottomClick () {
|
||||
this.$http.post('activiti/busTaskStageUser/createStageUser', {
|
||||
stage: '6',
|
||||
proId: this.$route.params.id,
|
||||
userId: JSON.parse(sessionStorage.getItem('userInfo')).userId
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.$Message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 查询流程信息
|
||||
getTem () {
|
||||
this.$http.get('activiti/busTaskInfo/getById', {
|
||||
id: this.$route.params.id
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.processForm.processNum = res.data.processNum
|
||||
this.processForm.type = '1'
|
||||
this.processForm.processRealName = res.data.processRealName
|
||||
this.processForm.relatedStandards = res.data.relatedStandards
|
||||
this.processForm.taskEndTime = res.data.taskEndTime
|
||||
this.processForm.template = res.data.template
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.getTem()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
//@import '~styles/style';
|
||||
//@import '~styles/mixins';
|
||||
.state5{
|
||||
.date-box{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-top: 10px;
|
||||
.label-text{
|
||||
width: 115px;
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.ivu-date-picker{
|
||||
width: 200px !important;
|
||||
}
|
||||
}
|
||||
.state-left-bottom{
|
||||
//.flex();
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
.ivu-btn{
|
||||
width: 120px;
|
||||
height: 40px;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,871 @@
|
||||
<!-- 标准采购申请流程 -->
|
||||
<template>
|
||||
<div class="step1-3">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准采购申请流程</template>
|
||||
<template slot="proNode">标准采购流程汇总</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item label="流程编号" class="search-item">
|
||||
<el-input v-model="$route.query.prcNum" disabled :title="$route.query.prcNum"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" class="search-item">
|
||||
<el-input v-model="$route.query.prcName" disabled :title="$route.query.prcName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="btn">
|
||||
<el-row>
|
||||
<div class="search-area" style="padding-top: 0;">
|
||||
<el-form :modal="forms" inline class="label-input-form" style="width: 100%;">
|
||||
<el-form-item label="采购人" class="search-item">
|
||||
<el-input v-model="forms.PurchaserId" style="display: none;"></el-input>
|
||||
<el-input v-model="forms.Purchaser" placeholder="请选择采购人" disabled></el-input>
|
||||
</el-form-item>
|
||||
<!-- <el-button type="primary" class="common-button-primary" round @click="openDrawer">选择</el-button>-->
|
||||
</el-form>
|
||||
</div>
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="detail-table-conent">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
@selection-change="handleSelectionChange"
|
||||
:height="tableHeight"
|
||||
>
|
||||
<el-table-column label="序号" type="index" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column label="标准号" prop="standNum" align="center" width="130" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.standId" @click="jumpStand(scope.row)" style="color: #0c91e5;cursor: pointer;">
|
||||
{{ scope.row.standNum }}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ scope.row.standNum }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标准名称" prop="standName" align="center" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.standId" @click="jumpStand(scope.row)" style="color: #0c91e5;cursor: pointer;">
|
||||
{{ scope.row.standName }}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ scope.row.standName }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="对比结果" prop="itemRes" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-tooltip class="item" effect="dark" :content="scope.row.itemRes === '1' ? ' 系统查询该标准已存在' : ' 系统查询该标准不存在'" placement="top-start">
|
||||
<div>{{ scope.row.itemRes === '1' ? '有': '无' }}</div>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="费用来源" prop="itemCost" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-select
|
||||
disabled
|
||||
:class="scope.row.itemCostRul ? '' : 'rul'"
|
||||
class="bead-input"
|
||||
v-model="scope.row.itemCost"
|
||||
placeholder="请输入费用来源"
|
||||
size="mini"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in costs"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目代号" prop="itemCode" align="center" width="200">
|
||||
<template slot-scope="scope">
|
||||
<div style="display: flex;" v-if="scope.row.itemCost === '1'">
|
||||
<el-input
|
||||
class="bead-input"
|
||||
:class="scope.row.itemCodeRul ? '' : 'rul'"
|
||||
v-model="scope.row.itemCode"
|
||||
size="mini"
|
||||
placeholder="请输入项目代号"
|
||||
disabled
|
||||
>
|
||||
</el-input>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="费用审批人" prop="itemCode" align="center" width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-if="scope.row.itemCost === '1'"
|
||||
class="bead-input"
|
||||
v-model="scope.row.handlerName"
|
||||
size="mini"
|
||||
placeholder="请选择费用审批人"
|
||||
:class="scope.row.handlerRul ? '' : 'rul'"
|
||||
disabled
|
||||
></el-input>
|
||||
<el-input style="display: none;" v-model="scope.row.handler"></el-input>
|
||||
<el-select
|
||||
disabled
|
||||
v-if="scope.row.itemCost === '2'"
|
||||
class="bead-input"
|
||||
v-model="scope.row.handler"
|
||||
placeholder="请选择费用审批人"
|
||||
size="mini"
|
||||
:class="scope.row.handlerRul ? '' : 'rul'"
|
||||
>
|
||||
<el-option
|
||||
disabled
|
||||
v-for="item in handlerList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="itemRem" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
class="bead-input"
|
||||
v-model="scope.row.itemRem"
|
||||
size="mini"
|
||||
disabled
|
||||
placeholder="请输入备注"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<ProcessApprovalHistory :approvalData="remarks"></ProcessApprovalHistory>
|
||||
</div>
|
||||
</div>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="visible.visibleManageTree"
|
||||
roleName="高级经理"
|
||||
:BM="$store.getters.userInfo.pOrgId"
|
||||
@dblClick="dblClick"
|
||||
></role-user-tree>
|
||||
<el-dialog title="标准添加" :visible.sync="displayLocationDialogVisible" :before-close="addCancel">
|
||||
<el-form ref="addForm" :rules="addFormRules" :model="addForm">
|
||||
<el-form-item label="标准号:" prop="standNum" :label-width="formLabelWidth">
|
||||
<el-input class="dialog-input" v-model="addForm.standNum"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标准名称:" prop="standName" :label-width="formLabelWidth">
|
||||
<el-input class="dialog-input" v-model="addForm.standName"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer">
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="addCancel">取 消</el-button>
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" :loading="addLoading" @click="addOk">保 存</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 查询项目代号 -->
|
||||
<el-dialog title="项目代号" :visible.sync="projectNoDialog">
|
||||
<el-table
|
||||
v-if="projectNoDialog"
|
||||
:data="projectNoList"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
>
|
||||
<el-table-column label="项目代号" prop="productNo" align="center" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column
|
||||
width="80"
|
||||
align="center"
|
||||
label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" :disabled="scope.row.id === itemCodeId" @click="productAdd(scope.row)">选择</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<!--上传-->
|
||||
<el-dialog
|
||||
width='400px'
|
||||
:visible.sync="importModalshowflagtemp"
|
||||
title="上传"
|
||||
>
|
||||
<el-upload
|
||||
class="customer-upload"
|
||||
multiple
|
||||
drag
|
||||
:on-success="uploadSuccess"
|
||||
:before-upload="beforeUpload"
|
||||
:on-remove="removeOneFile"
|
||||
:action="uploadPath"
|
||||
name="file"
|
||||
:file-list="defaultFileList"
|
||||
ref="importFileAboutStand">
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">点击或拖拽上传文件</div>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
<el-drawer
|
||||
title="组织结构"
|
||||
:visible.sync="isTreeDrawer">
|
||||
<dept-tree treeDivId="drawerModalTree"
|
||||
v-if="isTreeDrawer"
|
||||
ref="drawerModalTree"
|
||||
@treeClick="selcetShareLawsTree"
|
||||
allDept
|
||||
showUser
|
||||
:editable="false"
|
||||
style="padding: 0 15px">
|
||||
</dept-tree>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import {bzcgDetail, saveCgSq, queryTaskFirst} from 'api/process'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import ProcessMixin from "process/components/ProcessMixin";
|
||||
export default {
|
||||
name: "step1-3",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessInput,
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
manageId: '',
|
||||
manageName: '',
|
||||
manageZNodes: [],
|
||||
userObj: {},
|
||||
isGjjl: false,
|
||||
visible: {
|
||||
visibleManageTree: false
|
||||
},
|
||||
handlerList: [],
|
||||
isTreeDrawer: false,
|
||||
tableDeptIdList: [],
|
||||
depNode: [],
|
||||
id: '',
|
||||
itemCodeId: '',
|
||||
projectNoDialog: false,
|
||||
saveLoading: false,
|
||||
submitLoading: false,
|
||||
addLoading: false,
|
||||
projectNoList: [],
|
||||
indexList: [],
|
||||
uploadPath: 'api/lawss/actSarItems/importFile',
|
||||
defaultFileList: [],
|
||||
importModalshowflagtemp: false,
|
||||
visibleTree: false,
|
||||
remarks: [],
|
||||
forms: {
|
||||
Purchaser: '',
|
||||
PurchaserId: ''
|
||||
},
|
||||
tableHeight: null,
|
||||
value: "",
|
||||
itemResList: [
|
||||
{
|
||||
value: '1',
|
||||
label: '有'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '无'
|
||||
}
|
||||
],
|
||||
costs: [
|
||||
{
|
||||
value: "1",
|
||||
label: "项目经费",
|
||||
},
|
||||
{
|
||||
value: "2",
|
||||
label: "标准费用",
|
||||
},
|
||||
],
|
||||
displayLocationDialogVisible: false,
|
||||
formLabelWidth: "120px",
|
||||
prcForm: {
|
||||
// 截止时间
|
||||
prcDeadline: ""
|
||||
},
|
||||
tableData: [],
|
||||
addForm: {
|
||||
standNum: '',
|
||||
standName: ''
|
||||
},
|
||||
addFormRules: {
|
||||
standNum: [
|
||||
{ required: true, message: "标准号不能为空", trigger: "blur" },
|
||||
],
|
||||
standName: [
|
||||
{ required: true, message: "标准名称不能为空", trigger: "blur" },
|
||||
]
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
dblClick(treeNode) {
|
||||
this.manageId = treeNode.id
|
||||
this.manageName = treeNode.oldname || treeNode.name
|
||||
this.visible.visibleManageTree = false
|
||||
this.userObj.showTipsUser = false
|
||||
},
|
||||
handleVisibleManage() {
|
||||
this.visible.visibleManageTree = true
|
||||
},
|
||||
// 查询高级经理
|
||||
getGjjl () {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
orgId: this.$store.getters.userInfo.pOrgId,
|
||||
roleHierarchyName: '高级经理'
|
||||
}, {}, res => {
|
||||
if (res.ok) {
|
||||
let tipsUser = ''
|
||||
let showTipsUser = false
|
||||
if (res.data.length === 1) {
|
||||
this.manageId = res.data[0].userId
|
||||
this.manageName = res.data[0].userName
|
||||
this.isGjjl = true
|
||||
} else if (res.data.length > 1) {
|
||||
tipsUser += `<p><span style="color: #f56c6c;">${this.$store.getters.userInfo.orgName}</span> 下存在多个高级经理,请选择一个高级经理</p>`
|
||||
showTipsUser = true
|
||||
} else {
|
||||
tipsUser += `<p><span style="color: #f56c6c;">${this.$store.getters.userInfo.orgName}</span> 下的高级经理不存在,请及时维护</p>`
|
||||
showTipsUser = true
|
||||
}
|
||||
this.userObj = {
|
||||
tipsUser,
|
||||
showTipsUser
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 根据项目代号查询项目经理
|
||||
getHandler (id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawss/sarProductInfo/queryProjectManager', {
|
||||
id: id
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject(res.message)
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 获取总监
|
||||
getRole () {
|
||||
this.$http.get('lawss/sarProductInfo/queryProductRole', {
|
||||
itemCost: '2'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
let items = {}
|
||||
res.data.map((item) => {
|
||||
items.value = item.usid
|
||||
items.label = item.uname
|
||||
this.handlerList.push(items)
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击处理人事件
|
||||
handlerAdd (itemCode, id) {
|
||||
this.id = ''
|
||||
if (itemCode) {
|
||||
this.id = id
|
||||
this.isTreeDrawer = true
|
||||
} else {
|
||||
this.$message.warning('请输入项目代号')
|
||||
}
|
||||
},
|
||||
// 人员树点击事件
|
||||
selcetShareLawsTree (treeId, treeNode) {
|
||||
let arr = this.tableData
|
||||
for (let a = 0; a < arr.length; a++) {
|
||||
if (arr[a].id === this.id) {
|
||||
arr[a].handler = treeNode.id
|
||||
arr[a].handlerName = treeNode.name
|
||||
arr[a].handlerRul = true
|
||||
}
|
||||
}
|
||||
this.tableData = arr
|
||||
this.isTreeDrawer = false
|
||||
},
|
||||
// 选择项目代号
|
||||
productAdd (row) {
|
||||
let arr = this.tableData
|
||||
for (let a = 0; a < arr.length; a++) {
|
||||
if (arr[a].id === this.id) {
|
||||
arr[a].itemCodeId = row.id
|
||||
arr[a].itemCode = row.productNo
|
||||
this.getHandler(row.id).then(handler => {
|
||||
arr[a].handler = handler[0].usid
|
||||
arr[a].handlerName = handler[0].uname
|
||||
arr[a].handlerRul = true
|
||||
this.tableData = arr
|
||||
this.projectNoDialog = false
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
// 查询项目代号
|
||||
searchItemCode (id, itemCodeId) {
|
||||
this.id = id
|
||||
this.itemCodeId = ''
|
||||
if (itemCodeId) {
|
||||
this.itemCodeId = itemCodeId
|
||||
}
|
||||
this.projectNoDialog = true
|
||||
},
|
||||
// 跳转超链接
|
||||
jumpStand (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherStandardDetails',
|
||||
params: {
|
||||
id: item.standId,
|
||||
pageType: item.standType + '_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
// 修改费用来源触发
|
||||
itemCostChange (item) {
|
||||
item.itemCode = ''
|
||||
item.itemCodeId = ''
|
||||
item.handler = ''
|
||||
item.handlerRul = true
|
||||
item.handlerName = ''
|
||||
if (item.itemCost === '2') {
|
||||
item.itemCodeRul = true
|
||||
item.itemCostRul = true
|
||||
}
|
||||
},
|
||||
// 获取项目代号
|
||||
getNumber () {
|
||||
this.$http.get('lawss/sarProductInfo/queryProjectInfo',{}, { _this: this }, res => {
|
||||
if (res.ok) {
|
||||
this.projectNoList = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 批量删除
|
||||
deleteAll () {
|
||||
if (this.indexList.length > 0) {
|
||||
for (var a = 0; a < this.tableData.length; a++) {
|
||||
for (var b = 0; b < this.indexList.length; b++) {
|
||||
if (this.tableData[a].id === this.indexList[b]) {
|
||||
this.tableData.splice(a,1)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.$message.error('请选择要删除的数据')
|
||||
}
|
||||
},
|
||||
// 点击上传
|
||||
clickButtonToUpload () {
|
||||
this.importModalshowflagtemp = true
|
||||
},
|
||||
// 上传文件之前的钩子
|
||||
beforeUpload (file) {
|
||||
var filename = file.name
|
||||
var index1 = filename.lastIndexOf('.')
|
||||
var index2 = filename.length
|
||||
var fileSuffix = filename.substring(index1, index2)
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.xls') {
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传xls文件')
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size / 1024 / 1024 <= 200) {// eslint-disable-line
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
// 上传文件事件
|
||||
uploadSuccess (res, file, fileList) {
|
||||
if (res.ok) {
|
||||
this.$message.success('上传成功')
|
||||
this.importModalshowflagtemp = false
|
||||
for (var a = 0; a < res.data.length; a++) {
|
||||
var n = Math.random().toString(36).substr(2,10);
|
||||
res.data[a].id = n
|
||||
res.data[a].itemCodeRul = true
|
||||
res.data[a].itemCostRul = true
|
||||
res.data[a].handler = ''
|
||||
res.data[a].handlerName = ''
|
||||
this.tableData.push(res.data[a])
|
||||
}
|
||||
} else {
|
||||
fileList.pop()
|
||||
this.$message.error(res.message)
|
||||
}
|
||||
},
|
||||
removeOneFile (file, fileList) {
|
||||
},
|
||||
// 下载模板
|
||||
downloadItemsTemplate () {
|
||||
window.location.href = '/api/lawss/actSarItems/exportFile?exportName=流程模板'
|
||||
},
|
||||
handleSelectionChange (val) {
|
||||
this.indexList = []
|
||||
val.map((item) => {
|
||||
this.indexList.push(item.id)
|
||||
})
|
||||
},
|
||||
// 请求数据
|
||||
getData () {
|
||||
if (this.$route.query.bpnId) {
|
||||
queryTaskFirst({
|
||||
bpnId: this.$route.query.bpnId
|
||||
}).then(res => {
|
||||
console.log(res);
|
||||
let mes = JSON.parse(res.mes)
|
||||
this.forms = mes.prcForm
|
||||
this.tableData = mes.tableData
|
||||
})
|
||||
} else {
|
||||
return new Promise((resolve, reject) => {
|
||||
bzcgDetail({
|
||||
taskIds: this.$route.query.taskIds
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.tableData = res.dicTypeList
|
||||
this.remarks = res.remarks
|
||||
// this.forms.PurchaserId = res.bzcgyUserId
|
||||
// this.forms.Purchaser = res.bzcgyUserName
|
||||
this.prcForm.prcDeadline = res.prcDeadline
|
||||
resolve()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
}
|
||||
},
|
||||
handleDblClick (treeNode) {
|
||||
this.forms.Purchaser = treeNode.oldname || treeNode.name
|
||||
this.forms.PurchaserId = treeNode.id
|
||||
},
|
||||
openDrawer () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 取消新增
|
||||
addCancel () {
|
||||
this.addForm.standName = ''
|
||||
this.addForm.standNum = ''
|
||||
this.displayLocationDialogVisible = false
|
||||
},
|
||||
// 保存新增
|
||||
addOk () {
|
||||
this.$refs['addForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.addLoading = true
|
||||
this.$http.get('lawss/actSarItems/contrast', {
|
||||
standNumber: this.addForm.standNum
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
var item = {}
|
||||
item.itemRes = res.data.itemRes
|
||||
item.standId = res.data.standId
|
||||
item.standType = res.data.standType
|
||||
item.standNum = this.addForm.standNum
|
||||
item.standName = this.addForm.standName
|
||||
item.itemCost = ''
|
||||
item.itemCode = ''
|
||||
item.itemRem = ''
|
||||
item.itemCodeId = ''
|
||||
item.handler = ''
|
||||
item.handlerRul = true
|
||||
item.handlerName = ''
|
||||
item.itemCostRul = true
|
||||
item.itemCodeRul = true
|
||||
var n = Math.random().toString(36).substr(2,10);
|
||||
item.id = n
|
||||
this.tableData.push(item)
|
||||
this.addForm.standName = ''
|
||||
this.addForm.standNum = ''
|
||||
this.displayLocationDialogVisible = false
|
||||
} else {
|
||||
}
|
||||
this.addLoading = false
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-12-01 10:26:53
|
||||
*/
|
||||
handleSave() {
|
||||
if (this.tableData.length > 0) {
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('prcType', '9')
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData,
|
||||
forms: this.forms
|
||||
}))
|
||||
saveCgSq(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}).catch(e => {
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择标准')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-12-01 10:27:11
|
||||
*/
|
||||
handleSubmit() {
|
||||
if (this.tableData.length > 0) {
|
||||
var b = 0
|
||||
var CostRul = 0
|
||||
var CodeRul = 0
|
||||
var handlerRule = 0
|
||||
for (let a = 0; a < this.tableData.length; a++) {
|
||||
if (this.tableData[a].itemRes === '1') {
|
||||
// itemRes 对比结果 1为有 2为无
|
||||
b++
|
||||
} else {
|
||||
if (this.tableData[a].itemCost === '') {
|
||||
// itemCost 费用来源 1项目经费 2标准费用
|
||||
this.tableData[a].itemCostRul = false
|
||||
CostRul++
|
||||
} else {
|
||||
this.tableData[a].itemCostRul = true
|
||||
if (this.tableData[a].itemCost === '1') {
|
||||
if (this.tableData[a].itemCode === '') {
|
||||
// itemCode 项目代号
|
||||
this.tableData[a].itemCodeRul = false
|
||||
CodeRul++
|
||||
} else {
|
||||
this.tableData[a].itemCodeRul = true
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.tableData[a].handler === '') {
|
||||
this.tableData[a].handlerRul = false
|
||||
handlerRule++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CostRul > 0) {
|
||||
this.$message.error('请输入费用来源')
|
||||
return
|
||||
} else if (CodeRul > 0) {
|
||||
this.$message.error('请输入项目代号')
|
||||
return
|
||||
} else if (handlerRule > 0) {
|
||||
this.$message.error('请选择处理人')
|
||||
return
|
||||
}
|
||||
else if (this.forms.PurchaserId === '') {
|
||||
this.$message({
|
||||
message: '请选择采购人',
|
||||
type: 'error'
|
||||
})
|
||||
} else if (this.tableData.length < 1) {
|
||||
this.$message({
|
||||
message: '请添加标准',
|
||||
type: 'error'
|
||||
})
|
||||
} else if (this.tableData.length === b) {
|
||||
this.$message({
|
||||
message: '没有可审批的信息',
|
||||
type: 'error'
|
||||
})
|
||||
} else if (this.manageId === '') {
|
||||
this.$message({
|
||||
message: '请选择下一节点处理人',
|
||||
type: 'error'
|
||||
})
|
||||
} else {
|
||||
let json = {}
|
||||
json.prcDeadline = this.prcForm.prcDeadline
|
||||
json.dicTypeList = this.tableData
|
||||
json.opinion = this.feedback
|
||||
json.remarks = this.remarks
|
||||
json.manageId = this.manageId
|
||||
json = JSON.stringify(json)
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
},
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
roleName: '标准法规采购员'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.data.length > 0) {
|
||||
this.forms.PurchaserId = res.data[0].userId
|
||||
this.forms.Purchaser = res.data[0].userName
|
||||
}
|
||||
})
|
||||
this.getGjjl()
|
||||
this.getRole()
|
||||
this.getNumber()
|
||||
this.getData()
|
||||
this.tableHeight = $(".detail-table-conent").height() - 140;
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $(".detail-table-conent").height() - 140;
|
||||
}
|
||||
if (this.tableHeight < 220) {
|
||||
this.tableHeight = 220
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step1-3 {
|
||||
padding: 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.rul {
|
||||
/deep/.el-input__inner {
|
||||
border-color: red !important;
|
||||
}
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
overflow: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
}
|
||||
.bead-input {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.demo-dialog-footer {
|
||||
float: right;
|
||||
}
|
||||
.dialog-input {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px;
|
||||
width: 360px;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,375 @@
|
||||
<!-- 标准采购申请流程--采购员审批 -->
|
||||
<template>
|
||||
<div class="step1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准采购申请流程</template>
|
||||
<template slot="proNode">高级经理审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item label="流程编号" class="search-item">
|
||||
<el-input v-model="prcForm.prcNum" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" class="search-item">
|
||||
<el-input v-model="prcForm.prcName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="prcForm.overTime"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="detail-table-conent">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column label="序号" type="index" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="标准号"
|
||||
prop="standNum"
|
||||
align="center"
|
||||
width="130"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="标准名称" prop="standName" align="center" show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="对比结果"
|
||||
prop="itemRes"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.itemRes === '1' ? '有' : (scope.row.itemRes === '2' ? '无' : '') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="费用来源"
|
||||
prop="itemCost"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.itemCost === '1' ? '项目经费' : (scope.row.itemCost === '2' ? '标准费用' : '') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="项目代号"
|
||||
prop="itemCode"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="itemRem" align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="feedBack">
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="反馈意见">
|
||||
<el-select
|
||||
v-model="feedback"
|
||||
placeholder="是否同意"
|
||||
size="mini"
|
||||
class="bead"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
v-model="textarea"
|
||||
placeholder="请输入"
|
||||
resize="none"
|
||||
class="text"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
:saveLoading="saveLoading"
|
||||
:submitLoading="submitLoading"
|
||||
@entrust="handleEntrust"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import ProcessMixin from "process/components/ProcessMixin";
|
||||
import {bzcgDetail,saveCgSq,changeAssigneeNew} from 'api/process'
|
||||
export default {
|
||||
name: "step2",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
res: {},
|
||||
saveLoading: false,
|
||||
submitLoading: false,
|
||||
remarks: [],
|
||||
visibleTree: false,
|
||||
feedback: "",
|
||||
textarea: "",
|
||||
tableHeight: null,
|
||||
options: [
|
||||
{
|
||||
value: '0',
|
||||
label: '同意'
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
label: '不同意'
|
||||
}
|
||||
],
|
||||
prcForm: {},
|
||||
tableData: [],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
tableRowClassName({row, rowIndex}) {
|
||||
if (row.itemRes === '1') {
|
||||
return 'tableHide'
|
||||
}
|
||||
},
|
||||
// 请求数据
|
||||
getData () {
|
||||
return new Promise((resolve, reject) => {
|
||||
bzcgDetail({
|
||||
taskIds: this.$route.query.taskIds
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.tableData = res.dicTypeList
|
||||
this.remarks = res.remarks
|
||||
this.feedback = res.feedback
|
||||
this.textarea = res.textarea
|
||||
this.res = res
|
||||
resolve()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-12-01 10:26:53
|
||||
*/
|
||||
handleSave() {
|
||||
if (this.tableData.length > 0) {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
// _formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('prcType', '9')
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
dicTypeList: this.tableData,
|
||||
feedback: this.feedback,
|
||||
textarea: this.textarea,
|
||||
bzcgyUserId: this.res.bzcgyUserId,
|
||||
fqUserId: this.res.fqUserId,
|
||||
manageId: this.res.manageId,
|
||||
prcCreateUserName: this.res.prcCreateUserName,
|
||||
prcDeadline: this.res.prcDeadline,
|
||||
remarks: this.res.remarks,
|
||||
taskId: this.res.taskId
|
||||
}))
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
saveCgSq(_formData).then(res => {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}).catch(e => {
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择标准')
|
||||
}
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
handleDblClick (treeNode) {
|
||||
let userId = this.$store.getters.userInfo.usid || this.$store.getters.userInfo.userId
|
||||
if (treeNode.id === userId) {
|
||||
this.$message.warning('不可委托给自己')
|
||||
} else {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-12-01 10:27:11
|
||||
*/
|
||||
handleSubmit() {
|
||||
if (this.feedback === '') {
|
||||
this.$message.error('请审批')
|
||||
return
|
||||
}
|
||||
let json = {}
|
||||
json.dicTypeList = this.tableData
|
||||
json.opinion = this.feedback
|
||||
if (this.feedback === '1') {
|
||||
this.remarks.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: '1',
|
||||
auditOpinionsText: this.textarea,
|
||||
approvalNode: '高级经理审批',
|
||||
approvalTime: '',
|
||||
})
|
||||
}
|
||||
json.remarks = this.remarks
|
||||
json.prcDeadline = this.prcForm.overTime
|
||||
json.manageName = this.$store.getters.userInfo.uName
|
||||
json.manageId = this.$store.getters.userInfo.userId
|
||||
json = JSON.stringify(json)
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
};
|
||||
this.getData()
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step1 {
|
||||
padding: 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/deep/.tableHide {
|
||||
display: none;
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.text {
|
||||
display: inline;
|
||||
/deep/.el-textarea__inner {
|
||||
border-radius:20px;
|
||||
width: 580px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bead {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,368 @@
|
||||
<!-- 标准采购申请流程--采购员审批 -->
|
||||
<template>
|
||||
<div class="step1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准采购申请流程</template>
|
||||
<template slot="proNode">采购员审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item label="流程编号" class="search-item">
|
||||
<el-input v-model="prcForm.prcNum" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" class="search-item">
|
||||
<el-input v-model="prcForm.prcName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="prcForm.overTime"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="detail-table-conent">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column label="序号" type="index" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="标准号"
|
||||
prop="standNum"
|
||||
align="center"
|
||||
width="130"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="标准名称" prop="standName" align="center" show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="对比结果"
|
||||
prop="itemRes"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.itemRes === '1' ? '有' : (scope.row.itemRes === '2' ? '无' : '') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="费用来源"
|
||||
prop="itemCost"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.itemCost === '1' ? '项目经费' : (scope.row.itemCost === '2' ? '标准费用' : '') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="项目代号"
|
||||
prop="itemCode"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="itemRem" align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="feedBack">
|
||||
<!-- ref="form" :model="form" -->
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="反馈意见">
|
||||
<el-select v-model="feedback" placeholder="是否同意" size="mini"
|
||||
class="bead">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由">
|
||||
<el-input type="textarea" :rows="3" v-model="textarea" placeholder="请输入" class="text" resize="none"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
:saveLoading="saveLoading"
|
||||
:submitLoading="submitLoading"
|
||||
@entrust="handleEntrust"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {bzcgDetail,saveCgSq,changeAssigneeNew} from 'api/process'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import ProcessMixin from "process/components/ProcessMixin";
|
||||
export default {
|
||||
name: "step3",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
res: {},
|
||||
manageName: '',
|
||||
manage: '',
|
||||
saveLoading: false,
|
||||
submitLoading: false,
|
||||
remarks: [],
|
||||
visibleTree: false,
|
||||
feedback: "",
|
||||
textarea:"",
|
||||
tableHeight: null,
|
||||
options: [
|
||||
{
|
||||
value: '0',
|
||||
label: '同意'
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
label: '不同意'
|
||||
}
|
||||
],
|
||||
prcForm: {},
|
||||
tableData: []
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
tableRowClassName({row, rowIndex}) {
|
||||
if (row.itemRes === '1') {
|
||||
return 'tableHide'
|
||||
}
|
||||
},
|
||||
// 请求数据
|
||||
getData () {
|
||||
return new Promise((resolve, reject) => {
|
||||
bzcgDetail({
|
||||
taskIds: this.$route.query.taskIds
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.tableData = res.dicTypeList
|
||||
this.remarks = res.remarks
|
||||
this.manageName = res.manageName
|
||||
this.manage = res.manageId
|
||||
this.feedback = res.feedback
|
||||
this.textarea = res.textarea
|
||||
this.res = res
|
||||
resolve()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-12-01 10:26:53
|
||||
*/
|
||||
handleSave() {
|
||||
if (this.tableData.length > 0) {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('prcType', '9')
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
dicTypeList: this.tableData,
|
||||
feedback: this.feedback,
|
||||
textarea: this.textarea,
|
||||
bzcgyUserId: this.res.bzcgyUserId,
|
||||
fqUserId: this.res.fqUserId,
|
||||
manageId: this.res.manageId,
|
||||
prcCreateUserName: this.res.prcCreateUserName,
|
||||
prcDeadline: this.res.prcDeadline,
|
||||
remarks: this.res.remarks,
|
||||
taskId: this.res.taskId
|
||||
}))
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
saveCgSq(_formData).then(res => {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}).catch(e => {
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择标准')
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-12-01 10:27:11
|
||||
*/
|
||||
handleSubmit() {
|
||||
if (this.feedback === '') {
|
||||
this.$message.error('请审批')
|
||||
return
|
||||
}
|
||||
let json = {}
|
||||
json.dicTypeList = this.tableData
|
||||
json.opinion = this.feedback
|
||||
if (this.feedback === '1') {
|
||||
this.remarks.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: '1',
|
||||
auditOpinionsText: this.textarea,
|
||||
approvalNode: '采购员审批',
|
||||
approvalTime: '',
|
||||
})
|
||||
}
|
||||
json.remarks = this.remarks
|
||||
json.prcDeadline = this.prcForm.overTime
|
||||
json.manageName = this.manageName
|
||||
json.manageId = this.manage
|
||||
json = JSON.stringify(json)
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
handleDblClick (treeNode) {
|
||||
let userId = this.$store.getters.userInfo.usid || this.$store.getters.userInfo.userId
|
||||
if (treeNode.id === userId) {
|
||||
this.$message.warning('不可委托给自己')
|
||||
} else {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.getData()
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step1 {
|
||||
padding: 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/deep/.tableHide {
|
||||
display: none;
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.text {
|
||||
display: inline;
|
||||
/deep/.el-textarea__inner {
|
||||
width: 580px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bead {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,366 @@
|
||||
<!-- 标准采购申请流程--部门经理审批 -->
|
||||
<template>
|
||||
<div class="step1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准采购申请流程</template>
|
||||
<template slot="proNode">项目经理或EQ总监审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item label="流程编号" class="search-item">
|
||||
<el-input v-model="prcForm.prcNum" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" class="search-item">
|
||||
<el-input v-model="prcForm.prcName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="prcForm.overTime"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="detail-table-conent">
|
||||
<el-table
|
||||
:data="tableData1"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column label="序号" type="index" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="标准号"
|
||||
prop="standNum"
|
||||
align="center"
|
||||
width="130"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="标准名称" prop="standName" align="center" show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="对比结果"
|
||||
prop="itemRes"
|
||||
align="center"
|
||||
width="140">
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.itemRes === '1' ? '有' : (scope.row.itemRes === '2' ? '无' : '') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="费用来源"
|
||||
prop="itemCost"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.itemCost === '1' ? '项目经费' : (scope.row.itemCost === '2' ? '标准费用' : '') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="项目代号"
|
||||
prop="itemCode"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="itemRem" align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<div class="feedBack">
|
||||
<!-- ref="form" :model="form" -->
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="反馈意见">
|
||||
<el-select v-model="feedback" placeholder="是否同意" size="mini"
|
||||
class="bead">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由">
|
||||
<el-input type="textarea" :rows="3" v-model="textarea" placeholder="请输入" class="text" resize="none"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
:saveLoading="saveLoading"
|
||||
:submitLoading="submitLoading"
|
||||
@entrust="handleEntrust"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {bzcgDetail,saveCgSq,changeAssigneeNew} from 'api/process'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import ProcessMixin from "process/components/ProcessMixin";
|
||||
export default {
|
||||
name: "step4",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
res: {},
|
||||
saveLoading: false,
|
||||
submitLoading: false,
|
||||
remarks: [],
|
||||
visibleTree: false,
|
||||
feedback: "",
|
||||
textarea: "",
|
||||
tableHeight: null,
|
||||
options: [
|
||||
{
|
||||
value: '0',
|
||||
label: '同意'
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
label: '不同意'
|
||||
}
|
||||
],
|
||||
prcForm: {},
|
||||
tableData: [],
|
||||
tableData1: []
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
tableRowClassName({row, rowIndex}) {
|
||||
if (row.itemRes === '1') {
|
||||
return 'tableHide'
|
||||
}
|
||||
},
|
||||
// 请求数据
|
||||
getData () {
|
||||
return new Promise((resolve, reject) => {
|
||||
bzcgDetail({
|
||||
taskIds: this.$route.query.taskIds
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.tableData = res.dicTypeList
|
||||
this.tableData1 = res.dicTypeList.filter(item => item.itemRes !== '1')
|
||||
this.remarks = res.remarks
|
||||
this.feedback = res.feedback
|
||||
this.textarea = res.textarea
|
||||
this.res = res
|
||||
resolve()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-12-01 10:26:53
|
||||
*/
|
||||
handleSave() {
|
||||
if (this.tableData.length > 0) {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('prcType', '9')
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
dicTypeList: this.tableData,
|
||||
feedback: this.feedback,
|
||||
textarea: this.textarea,
|
||||
bzcgyUserId: this.res.bzcgyUserId,
|
||||
fqUserId: this.res.fqUserId,
|
||||
manageId: this.res.manageId,
|
||||
prcCreateUserName: this.res.prcCreateUserName,
|
||||
prcDeadline: this.res.prcDeadline,
|
||||
remarks: this.res.remarks,
|
||||
taskId: this.res.taskId
|
||||
}))
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
saveCgSq(_formData).then(res => {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}).catch(e => {
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择标准')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-12-01 10:27:11
|
||||
*/
|
||||
handleSubmit() {
|
||||
if (this.feedback === '') {
|
||||
this.$message.error('请审批')
|
||||
return
|
||||
}
|
||||
let json = {}
|
||||
json.dicTypeList = this.tableData
|
||||
json.opinion = this.feedback
|
||||
if (this.feedback === '1') {
|
||||
this.remarks.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: '1',
|
||||
auditOpinionsText: this.textarea,
|
||||
approvalNode: '项目经理或EQ总监审批',
|
||||
approvalTime: '',
|
||||
})
|
||||
}
|
||||
json.remarks = this.remarks
|
||||
json = JSON.stringify(json)
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
let standList = []
|
||||
this.tableData.map((item) => {
|
||||
standList.push(item.standNum)
|
||||
})
|
||||
this.$http.get('lawss/sarLawsInfo/updateLawsPrcNum', {
|
||||
standnumber: standList.join(','),
|
||||
prcNum: this.$route.query.prcNum
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.getData()
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step1 {
|
||||
padding: 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/deep/.tableHide {
|
||||
display: none;
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.text {
|
||||
display: inline;
|
||||
/deep/.el-textarea__inner {
|
||||
width: 580px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bead {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,856 @@
|
||||
<!-- 标准翻译申请流程 -->
|
||||
<template>
|
||||
<div class="step1-3">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准翻译申请流程</template>
|
||||
<template slot="proNode">标准翻译申请流程汇总</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item label="流程编号" class="search-item">
|
||||
<el-input v-model="$route.query.prcNum" disabled :title="$route.query.prcNum"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" class="search-item">
|
||||
<el-input v-model="$route.query.prcName" disabled :title="$route.query.prcName"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="btn">
|
||||
<el-row>
|
||||
<div class="search-area" style="padding-top: 0;">
|
||||
<el-form :modal="forms" inline class="label-input-form" style="width: 100%;">
|
||||
<el-form-item label="采购人" class="search-item">
|
||||
<el-input v-model="forms.PurchaserId" style="display: none;"></el-input>
|
||||
<el-input v-model="forms.Purchaser" placeholder="请选择采购人" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="detail-table-conent">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
@selection-change="handleSelectionChange"
|
||||
:height="tableHeight"
|
||||
>
|
||||
<el-table-column label="序号" type="index" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column label="标准号" prop="standNum" align="center" width="130" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.standId" @click="jumpStand(scope.row)" style="color: #0c91e5;cursor: pointer;">
|
||||
{{ scope.row.standNum }}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ scope.row.standNum }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标准名称" prop="standName" align="center" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.standId" @click="jumpStand(scope.row)" style="color: #0c91e5;cursor: pointer;">
|
||||
{{ scope.row.standName }}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ scope.row.standName }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="对比结果" prop="itemRes" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
<div>无</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="费用来源" prop="itemCost" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
<el-select
|
||||
disabled
|
||||
:class="scope.row.itemCostRul ? '' : 'rul'"
|
||||
class="bead-input"
|
||||
v-model="scope.row.itemCost"
|
||||
placeholder="请输入费用来源"
|
||||
size="mini"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in costs"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目编号" prop="itemCode" align="center" width="200">
|
||||
<template slot-scope="scope">
|
||||
<div style="display: flex;" v-if="scope.row.itemCost === '1'">
|
||||
<el-input
|
||||
disabled
|
||||
class="bead-input"
|
||||
:class="scope.row.itemCodeRul ? '' : 'rul'"
|
||||
v-model="scope.row.itemCode"
|
||||
size="mini"
|
||||
placeholder="请输入项目编号"
|
||||
>
|
||||
</el-input>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="费用审批人" prop="itemCode" align="center" width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
disabled
|
||||
v-if="scope.row.itemCost === '1'"
|
||||
class="bead-input"
|
||||
v-model="scope.row.handlerName"
|
||||
size="mini"
|
||||
placeholder="请选择费用审批人"
|
||||
:class="scope.row.handlerRul ? '' : 'rul'"
|
||||
></el-input>
|
||||
<el-input style="display: none;" v-model="scope.row.handler"></el-input>
|
||||
<el-select
|
||||
disabled
|
||||
v-if="scope.row.itemCost === '2'"
|
||||
class="bead-input"
|
||||
v-model="scope.row.handler"
|
||||
placeholder="请选择费用审批人"
|
||||
size="mini"
|
||||
:class="scope.row.handlerRul ? '' : 'rul'"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in handlerList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="itemRem" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
disabled
|
||||
class="bead-input"
|
||||
v-model="scope.row.itemRem"
|
||||
size="mini"
|
||||
placeholder="请输入备注"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<ProcessApprovalHistory :approvalData="remarks"></ProcessApprovalHistory>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog title="标准添加" :visible.sync="displayLocationDialogVisible" :before-close="addCancel">
|
||||
<el-form ref="addForm" :rules="addFormRules" :model="addForm">
|
||||
<el-form-item label="标准号:" prop="standNum" :label-width="formLabelWidth">
|
||||
<el-input class="dialog-input" v-model="addForm.standNum"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标准名称:" prop="standName" :label-width="formLabelWidth">
|
||||
<el-input class="dialog-input" v-model="addForm.standName"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer">
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="addCancel">取 消</el-button>
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" :loading="addLoading" @click="addOk">保 存</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<!--上传-->
|
||||
<el-dialog
|
||||
width='400px'
|
||||
:visible.sync="importModalshowflagtemp"
|
||||
title="上传"
|
||||
>
|
||||
<el-upload
|
||||
class="customer-upload"
|
||||
multiple
|
||||
drag
|
||||
:on-success="uploadSuccess"
|
||||
:before-upload="beforeUpload"
|
||||
:on-remove="removeOneFile"
|
||||
:action="uploadPath"
|
||||
name="file"
|
||||
:file-list="defaultFileList"
|
||||
ref="importFileAboutStand">
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">点击或拖拽上传文件</div>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="visible.visibleManageTree"
|
||||
roleName="高级经理"
|
||||
:BM="$store.getters.userInfo.pOrgId"
|
||||
@dblClick="dblClick"
|
||||
></role-user-tree>
|
||||
<!-- 查询项目代号 -->
|
||||
<el-dialog title="项目编号" :visible.sync="projectNoDialog">
|
||||
<el-table
|
||||
v-if="projectNoDialog"
|
||||
:data="projectNoList"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
>
|
||||
<el-table-column label="项目编号" prop="productNo" align="center" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column
|
||||
width="80"
|
||||
align="center"
|
||||
label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" :disabled="scope.row.id === itemCodeId" @click="productAdd(scope.row)">选择</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
<!-- 查询处理人-->
|
||||
<el-drawer
|
||||
title="组织结构"
|
||||
:visible.sync="isTreeDrawer">
|
||||
<dept-tree treeDivId="drawerModalTree"
|
||||
v-if="isTreeDrawer"
|
||||
ref="drawerModalTree"
|
||||
@treeClick="selcetShareLawsTree"
|
||||
allDept
|
||||
showUser
|
||||
:editable="false"
|
||||
style="padding: 0 15px">
|
||||
</dept-tree>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import {bzcgDetail,saveCgSq} from 'api/process'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import ProcessMixin from "process/components/ProcessMixin";
|
||||
export default {
|
||||
name: "step1-3",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessInput,
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
manageId: '',
|
||||
manageName: '',
|
||||
manageZNodes: [],
|
||||
userObj: {},
|
||||
isGjjl: false,
|
||||
visible: {
|
||||
visibleManageTree: false
|
||||
},
|
||||
handlerList: [],
|
||||
isTreeDrawer: false,
|
||||
tableDeptIdList: [],
|
||||
depNode: [],
|
||||
id: '',
|
||||
itemCodeId: '',
|
||||
projectNoDialog: false,
|
||||
saveLoading: false,
|
||||
submitLoading: false,
|
||||
addLoading: false,
|
||||
projectNoList: [],
|
||||
indexList: [],
|
||||
uploadPath: 'api/lawss/actSarItems/importFile',
|
||||
defaultFileList: [],
|
||||
importModalshowflagtemp: false,
|
||||
remarks: [],
|
||||
visibleTree: false,
|
||||
forms: {
|
||||
Purchaser: '',
|
||||
PurchaserId: ''
|
||||
},
|
||||
tableHeight: null,
|
||||
itemResList: [
|
||||
{
|
||||
value: '1',
|
||||
label: '有'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '无'
|
||||
}
|
||||
],
|
||||
options: [
|
||||
{
|
||||
value: "1",
|
||||
label: "有",
|
||||
},
|
||||
{
|
||||
value: "2",
|
||||
label: "无",
|
||||
},
|
||||
],
|
||||
value: "",
|
||||
costs: [
|
||||
{
|
||||
value: "1",
|
||||
label: "项目经费",
|
||||
},
|
||||
{
|
||||
value: "2",
|
||||
label: "标准费用",
|
||||
},
|
||||
],
|
||||
displayLocationDialogVisible: false,
|
||||
formLabelWidth: "120px",
|
||||
prcForm: {
|
||||
// 截止时间
|
||||
prcDeadline: ""
|
||||
},
|
||||
tableData: [],
|
||||
addForm: {
|
||||
standNum: '',
|
||||
standName: ''
|
||||
},
|
||||
addFormRules: {
|
||||
standNum: [
|
||||
{ required: true, message: "标准号不能为空", trigger: "blur" },
|
||||
],
|
||||
standName: [
|
||||
{ required: true, message: "标准名称不能为空", trigger: "blur" },
|
||||
]
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
dblClick(treeNode) {
|
||||
this.manageId = treeNode.id
|
||||
this.manageName = treeNode.oldname || treeNode.name
|
||||
this.visible.visibleManageTree = false
|
||||
this.userObj.showTipsUser = false
|
||||
},
|
||||
handleVisibleManage() {
|
||||
this.visible.visibleManageTree = true
|
||||
},
|
||||
// 查询高级经理
|
||||
getGjjl () {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
orgId: this.$store.getters.userInfo.pOrgId,
|
||||
roleHierarchyName: '高级经理'
|
||||
}, {}, res => {
|
||||
if (res.ok) {
|
||||
let tipsUser = ''
|
||||
let showTipsUser = false
|
||||
if (res.data.length === 1) {
|
||||
this.manageId = res.data[0].userId
|
||||
this.manageName = res.data[0].userName
|
||||
this.isGjjl = true
|
||||
} else if (res.data.length > 1) {
|
||||
tipsUser += `<p><span style="color: #f56c6c;">${this.$store.getters.userInfo.orgName}</span> 下存在多个高级经理,请选择一个高级经理</p>`
|
||||
showTipsUser = true
|
||||
} else {
|
||||
tipsUser += `<p><span style="color: #f56c6c;">${this.$store.getters.userInfo.orgName}</span> 下的高级经理不存在,请及时维护</p>`
|
||||
showTipsUser = true
|
||||
}
|
||||
this.userObj = {
|
||||
tipsUser,
|
||||
showTipsUser
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 根据项目代号查询项目经理
|
||||
getHandler (id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawss/sarProductInfo/queryProjectManager', {
|
||||
id: id
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject(res.message)
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 获取总监
|
||||
getRole () {
|
||||
this.$http.get('lawss/sarProductInfo/queryProductRole', {
|
||||
itemCost: '2'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
let items = {}
|
||||
res.data.map((item) => {
|
||||
items.value = item.usid
|
||||
items.label = item.uname
|
||||
this.handlerList.push(items)
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击处理人事件
|
||||
handlerAdd (itemCode, id) {
|
||||
this.id = ''
|
||||
if (itemCode) {
|
||||
this.id = id
|
||||
this.isTreeDrawer = true
|
||||
} else {
|
||||
this.$message.warning('请输入项目代号')
|
||||
}
|
||||
},
|
||||
// 人员树点击事件
|
||||
selcetShareLawsTree (treeId, treeNode) {
|
||||
let arr = this.tableData
|
||||
for (let a = 0; a < arr.length; a++) {
|
||||
if (arr[a].id === this.id) {
|
||||
arr[a].handler = treeNode.id
|
||||
arr[a].handlerName = treeNode.name
|
||||
arr[a].handlerRul = true
|
||||
}
|
||||
}
|
||||
this.tableData = arr
|
||||
this.isTreeDrawer = false
|
||||
},
|
||||
// 选择项目代号
|
||||
productAdd (row) {
|
||||
let arr = this.tableData
|
||||
for (let a = 0; a < arr.length; a++) {
|
||||
if (arr[a].id === this.id) {
|
||||
arr[a].itemCodeId = row.id
|
||||
arr[a].itemCode = row.productNo
|
||||
this.getHandler(row.id).then(handler => {
|
||||
arr[a].handler = handler[0].usid
|
||||
arr[a].handlerName = handler[0].uname
|
||||
arr[a].handlerRul = true
|
||||
this.tableData = arr
|
||||
this.projectNoDialog = false
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
// 查询项目代号
|
||||
searchItemCode (id, itemCodeId) {
|
||||
this.id = id
|
||||
this.itemCodeId = ''
|
||||
if (itemCodeId) {
|
||||
this.itemCodeId = itemCodeId
|
||||
}
|
||||
this.projectNoDialog = true
|
||||
},
|
||||
// 跳转超链接
|
||||
jumpStand (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherStandardDetails',
|
||||
params: {
|
||||
id: item.standId,
|
||||
pageType: item.standType + '_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
// 修改费用来源触发
|
||||
itemCostChange (item) {
|
||||
item.itemCode = ''
|
||||
item.itemCodeId = ''
|
||||
item.handler = ''
|
||||
item.handlerRul = true
|
||||
item.handlerName = ''
|
||||
if (item.itemCost === '2') {
|
||||
item.itemCodeRul = true
|
||||
item.itemCostRul = true
|
||||
}
|
||||
},
|
||||
// 获取项目代号
|
||||
getNumber () {
|
||||
this.$http.get('lawss/sarProductInfo/queryProjectInfo',{}, { _this: this }, res => {
|
||||
if (res.ok) {
|
||||
this.projectNoList = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 批量删除
|
||||
deleteAll () {
|
||||
if (this.indexList.length > 0) {
|
||||
for (var a = 0; a < this.tableData.length; a++) {
|
||||
for (var b = 0; b < this.indexList.length; b++) {
|
||||
if (this.tableData[a].id === this.indexList[b]) {
|
||||
this.tableData.splice(a,1)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.$message.error('请选择要删除的数据')
|
||||
}
|
||||
},
|
||||
// 点击上传
|
||||
clickButtonToUpload () {
|
||||
this.importModalshowflagtemp = true
|
||||
},
|
||||
// 上传文件之前的钩子
|
||||
beforeUpload (file) {
|
||||
var filename = file.name
|
||||
var index1 = filename.lastIndexOf('.')
|
||||
var index2 = filename.length
|
||||
var fileSuffix = filename.substring(index1, index2)
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.xls') {
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传xls文件')
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size / 1024 / 1024 <= 200) {// eslint-disable-line
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
// 上传文件事件
|
||||
uploadSuccess (res, file, fileList) {
|
||||
if (res.ok) {
|
||||
this.$message.success('上传成功')
|
||||
this.importModalshowflagtemp = false
|
||||
for (var a = 0; a < res.data.length; a++) {
|
||||
var n = Math.random().toString(36).substr(2,10);
|
||||
res.data[a].id = n
|
||||
res.data[a].itemCodeRul = true
|
||||
res.data[a].itemCostRul = true
|
||||
res.data[a].handler = ''
|
||||
res.data[a].handlerName = ''
|
||||
this.tableData.push(res.data[a])
|
||||
}
|
||||
} else {
|
||||
fileList.pop()
|
||||
this.$message.error(res.message)
|
||||
}
|
||||
},
|
||||
removeOneFile (file, fileList) {
|
||||
},
|
||||
// 下载模板
|
||||
downloadItemsTemplate () {
|
||||
window.location.href = '/api/lawss/actSarItems/exportFile?exportName=流程模板'
|
||||
},
|
||||
handleSelectionChange (val) {
|
||||
this.indexList = []
|
||||
val.map((item) => {
|
||||
this.indexList.push(item.id)
|
||||
})
|
||||
},
|
||||
// 请求数据
|
||||
getData () {
|
||||
return new Promise((resolve, reject) => {
|
||||
bzcgDetail({
|
||||
taskIds: this.$route.query.taskIds
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.tableData = res.dicTypeList
|
||||
this.remarks = res.remarks
|
||||
this.prcForm.prcDeadline = res.prcDeadline
|
||||
resolve()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
handleDblClick (treeNode) {
|
||||
this.forms.Purchaser = treeNode.oldname || treeNode.name
|
||||
this.forms.PurchaserId = treeNode.id
|
||||
},
|
||||
openDrawer () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 取消新增
|
||||
addCancel () {
|
||||
this.addForm.standName = ''
|
||||
this.addForm.standNum = ''
|
||||
this.displayLocationDialogVisible = false
|
||||
},
|
||||
// 保存新增
|
||||
addOk () {
|
||||
this.$refs['addForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.addLoading = true
|
||||
this.$http.get('lawss/actSarItems/contrast', {
|
||||
standNumber: this.addForm.standNum,
|
||||
standType: 'FOREIGN'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
var item = {}
|
||||
item.itemRes = res.data.itemRes
|
||||
item.standId = res.data.standId
|
||||
item.standType = res.data.standType
|
||||
item.standNum = this.addForm.standNum
|
||||
item.standName = this.addForm.standName
|
||||
item.itemCost = ''
|
||||
item.itemCode = ''
|
||||
item.itemRem = ''
|
||||
item.itemCodeId = ''
|
||||
item.handler = ''
|
||||
item.handlerRul = true
|
||||
item.handlerName = ''
|
||||
item.itemCostRul = true
|
||||
item.itemCodeRul = true
|
||||
var n = Math.random().toString(36).substr(2,10);
|
||||
item.id = n
|
||||
this.tableData.push(item)
|
||||
this.addForm.standName = ''
|
||||
this.addForm.standNum = ''
|
||||
this.displayLocationDialogVisible = false
|
||||
} else {
|
||||
}
|
||||
this.addLoading = false
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-12-01 10:26:53
|
||||
*/
|
||||
handleSave() {
|
||||
if (this.tableData.length > 0) {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('prcType', '15')
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData
|
||||
}))
|
||||
saveCgSq(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择标准')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-12-01 10:27:11
|
||||
*/
|
||||
handleSubmit() {
|
||||
if (this.tableData.length > 0) {
|
||||
var b = 0
|
||||
var CostRul = 0
|
||||
var CodeRul = 0
|
||||
var handlerRule = 0
|
||||
for (let a = 0; a < this.tableData.length; a++) {
|
||||
if (this.tableData[a].itemRes === '1') {
|
||||
b++
|
||||
} else {
|
||||
if (this.tableData[a].itemCost === '') {
|
||||
this.tableData[a].itemCostRul = false
|
||||
CostRul++
|
||||
} else {
|
||||
this.tableData[a].itemCostRul = true
|
||||
if (this.tableData[a].itemCost === '1') {
|
||||
if (this.tableData[a].itemCode === '') {
|
||||
this.tableData[a].itemCodeRul = false
|
||||
CodeRul++
|
||||
} else {
|
||||
this.tableData[a].itemCodeRul = true
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.tableData[a].handler === '') {
|
||||
this.tableData[a].handlerRul = false
|
||||
handlerRule++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CostRul > 0) {
|
||||
this.$message.error('请输入费用来源')
|
||||
return
|
||||
} else if (CodeRul > 0) {
|
||||
this.$message.error('请输入项目代号')
|
||||
return
|
||||
} else if (handlerRule > 0) {
|
||||
this.$message.error('请选择处理人')
|
||||
return
|
||||
} else if (this.forms.PurchaserId === '') {
|
||||
this.$message({
|
||||
message: '请选择采购人',
|
||||
type: 'error'
|
||||
})
|
||||
} else if (this.tableData.length < 1) {
|
||||
this.$message({
|
||||
message: '请添加标准',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
// else if (this.tableData.length === b) {
|
||||
// this.$message({
|
||||
// message: '没有可审批的信息',
|
||||
// type: 'error'
|
||||
// })
|
||||
// }
|
||||
else if (this.manageId === '') {
|
||||
this.$message({
|
||||
message: '请选择下一节点处理人',
|
||||
type: 'error'
|
||||
})
|
||||
} else {
|
||||
let json = {}
|
||||
json.prcDeadline = this.prcForm.prcDeadline
|
||||
json.dicTypeList = this.tableData
|
||||
json.opinion = this.feedback
|
||||
json.remarks = this.remarks
|
||||
json.manageId = this.manageId
|
||||
json.prcCreateUserName = this.$store.getters.userInfo.uName
|
||||
json = JSON.stringify(json)
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
},
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
roleName: '标准法规采购员'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.data.length > 0) {
|
||||
this.forms.PurchaserId = res.data[0].userId
|
||||
this.forms.Purchaser = res.data[0].userName
|
||||
}
|
||||
})
|
||||
this.getGjjl()
|
||||
this.getRole()
|
||||
this.getData()
|
||||
this.getNumber()
|
||||
this.tableHeight = $(".detail-table-conent").height() - 140;
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $(".detail-table-conent").height() - 140;
|
||||
}
|
||||
if (this.tableHeight < 220) {
|
||||
this.tableHeight = 220
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step1-3 {
|
||||
padding: 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.rul {
|
||||
/deep/.el-input__inner {
|
||||
border-color: red !important;
|
||||
}
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
overflow: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
}
|
||||
.bead-input {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.demo-dialog-footer {
|
||||
float: right;
|
||||
}
|
||||
.dialog-input {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px;
|
||||
width: 360px;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -0,0 +1,997 @@
|
||||
<!-- 标准翻译申请流程 -->
|
||||
<template>
|
||||
<div class="step1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准翻译申请流程</template>
|
||||
<template slot="proNode">标准翻译申请流程发起</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="btn">
|
||||
<el-row>
|
||||
<div class="search-area" style="padding-top: 0;">
|
||||
<el-form :model="forms" inline class="label-input-form" style="width: 100%;">
|
||||
<el-form-item label="采购人" class="search-item">
|
||||
<el-input v-model="forms.PurchaserId" style="display: none;"></el-input>
|
||||
<!-- <el-input v-model="forms.Purchaser" placeholder="请选择采购人" disabled></el-input>-->
|
||||
<process-input
|
||||
v-model="forms.Purchaser"
|
||||
placeholder="请选择采购人"
|
||||
readonly
|
||||
disabled
|
||||
:show-tips="forms.PurchaserIdObj.showTipsUser"
|
||||
:tips="forms.PurchaserIdObj.tipsUser"
|
||||
></process-input>
|
||||
</el-form-item>
|
||||
<!-- <el-button type="primary" class="common-button-primary" round @click="openDrawer">选择</el-button>-->
|
||||
</el-form>
|
||||
</div>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-button type="primary" class="common-button-primary" round @click="displayLocationDialogVisible = true">新增</el-button>
|
||||
<el-button type="primary" class="common-button-primary" round @click="clickButtonToUpload">上传</el-button>
|
||||
<el-button type="primary" class="common-button-primary" round @click="downloadItemsTemplate">下载模板</el-button>
|
||||
<el-button type="danger" class="common-button-danger" round @click="deleteAll">批量删除</el-button>
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="detail-table-conent">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
:height="tableHeight"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column label="序号" type="index" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column label="标准号" prop="standNum" align="center" width="130" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.standId" @click="jumpStand(scope.row)" style="color: #0c91e5;cursor: pointer;">
|
||||
{{ scope.row.standNum }}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ scope.row.standNum }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标准名称" prop="standName" align="center" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<div v-if="scope.row.standId" @click="jumpStand(scope.row)" style="color: #0c91e5;cursor: pointer;">
|
||||
{{ scope.row.standName }}
|
||||
</div>
|
||||
<div v-else>
|
||||
{{ scope.row.standName }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="对比结果" prop="itemRes" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
<div>无</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="费用来源" prop="itemCost" align="center" width="160">
|
||||
<template slot-scope="scope">
|
||||
<!-- :disabled="scope.row.itemRes === '1'"-->
|
||||
<el-select
|
||||
:class="scope.row.itemCostRul ? '' : 'rul'"
|
||||
class="bead-input"
|
||||
v-model="scope.row.itemCost"
|
||||
placeholder="请输入费用来源"
|
||||
size="mini"
|
||||
@change="itemCostChange(scope.row)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in costs"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="项目编号" prop="itemCode" align="center" width="200">
|
||||
<template slot-scope="scope">
|
||||
<div style="display: flex;" v-if="scope.row.itemCost === '1'">
|
||||
<el-input
|
||||
class="bead-input"
|
||||
:class="scope.row.itemCodeRul ? '' : 'rul'"
|
||||
v-model="scope.row.itemCode"
|
||||
size="mini"
|
||||
placeholder="请输入项目编号"
|
||||
>
|
||||
<i slot="suffix" style="cursor: pointer;" class="el-input__icon el-icon-search" @click="searchItemCode(scope.row.id, scope.row.itemCodeId)"></i>
|
||||
</el-input>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="费用审批人" prop="itemCode" align="center" width="140">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-if="scope.row.itemCost === '1'"
|
||||
@click.native="handlerAdd(scope.row.itemCode, scope.row.id, scope.row)"
|
||||
class="bead-input"
|
||||
v-model="scope.row.handlerName"
|
||||
size="mini"
|
||||
placeholder="请选择费用审批人"
|
||||
:class="scope.row.handlerRul ? '' : 'rul'"
|
||||
></el-input>
|
||||
<el-input style="display: none;" v-model="scope.row.handler"></el-input>
|
||||
<el-select
|
||||
v-if="scope.row.itemCost === '2'"
|
||||
class="bead-input"
|
||||
v-model="scope.row.handler"
|
||||
placeholder="请选择费用审批人"
|
||||
size="mini"
|
||||
:class="scope.row.handlerRul ? '' : 'rul'"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in handlerList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="itemRem" align="center">
|
||||
<template slot-scope="scope">
|
||||
<!-- :disabled="scope.row.itemRes === '1'"-->
|
||||
<el-input
|
||||
class="bead-input"
|
||||
v-model="scope.row.itemRem"
|
||||
size="mini"
|
||||
placeholder="请输入备注"
|
||||
></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<el-divider content-position="left">下一节点处理人(高级经理)</el-divider>
|
||||
<div style="width: 250px; margin-top: 20px">
|
||||
<el-input v-model="manageId" v-show="false"></el-input>
|
||||
<process-input
|
||||
v-model="manageName"
|
||||
placeholder="请选择高级经理"
|
||||
readonly
|
||||
:show-tips="userObj.showTipsUser"
|
||||
:tips="userObj.tipsUser"
|
||||
:disabled="isGjjl"
|
||||
@click="handleVisibleManage"
|
||||
></process-input>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
:saveLoading="saveLoading"
|
||||
:submitLoading="submitLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
:sendEmailLoading="isSendEmailLoading"
|
||||
:showSendEmail="needSendEmail"
|
||||
@sendEmail="handleSendEmail"
|
||||
/>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="visible.visibleManageTree"
|
||||
roleName="高级经理"
|
||||
:BM="$store.getters.userInfo.pOrgId"
|
||||
@dblClick="dblClick"
|
||||
></role-user-tree>
|
||||
<el-dialog title="标准添加" :visible.sync="displayLocationDialogVisible" :before-close="addCancel">
|
||||
<el-form ref="addForm" :rules="addFormRules" :model="addForm">
|
||||
<el-form-item label="标准号:" prop="standNum" :label-width="formLabelWidth">
|
||||
<el-input class="dialog-input" v-model="addForm.standNum"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标准名称:" prop="standName" :label-width="formLabelWidth">
|
||||
<el-input class="dialog-input" v-model="addForm.standName"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer">
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="addCancel">取 消</el-button>
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" :loading="addLoading" @click="addOk">保 存</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!-- 查询项目代号 -->
|
||||
<el-dialog title="项目编号" :visible.sync="projectNoDialog" class="myDialog">
|
||||
<div class="search-area">
|
||||
<el-form ref="form" :model="form" inline class="label-input-form">
|
||||
<el-form-item label="项目编号" class="search-item">
|
||||
<el-input v-model="form.productNo" placeholder="请输入项目代号"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
@click="getNumber(1)"
|
||||
round>
|
||||
</el-button>
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="reachgetNumber"
|
||||
round></el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-table
|
||||
v-if="projectNoDialog"
|
||||
:data="projectNoList"
|
||||
border
|
||||
height="50vh"
|
||||
style="width: 100%; height: 100%;"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px'
|
||||
}"
|
||||
>
|
||||
<el-table-column label="项目代号" prop="productNo" align="center" show-overflow-tooltip></el-table-column>
|
||||
<el-table-column
|
||||
width="80"
|
||||
align="center"
|
||||
label="操作">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" :disabled="scope.row.id === itemCodeId" @click="productAdd(scope.row)">选择</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
:page="page"
|
||||
:total="total"
|
||||
@pageChange="pageChange"
|
||||
@pageSizeChange="pageSizeChange"></pagination>
|
||||
</el-dialog>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<!--上传-->
|
||||
<el-dialog
|
||||
width='400px'
|
||||
:visible.sync="importModalshowflagtemp"
|
||||
title="上传"
|
||||
>
|
||||
<el-upload
|
||||
class="customer-upload"
|
||||
multiple
|
||||
drag
|
||||
:on-success="uploadSuccess"
|
||||
:before-upload="beforeUpload"
|
||||
:on-remove="removeOneFile"
|
||||
:action="uploadPath"
|
||||
name="file"
|
||||
:file-list="defaultFileList"
|
||||
ref="importFileAboutStand">
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">点击或拖拽上传文件</div>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
<el-drawer
|
||||
title="组织结构"
|
||||
:visible.sync="isTreeDrawer">
|
||||
<dept-tree treeDivId="drawerModalTree"
|
||||
v-if="isTreeDrawer"
|
||||
ref="drawerModalTree"
|
||||
@treeClick="selcetShareLawsTree"
|
||||
allDept
|
||||
showUser
|
||||
:editable="false"
|
||||
style="padding: 0 15px">
|
||||
</dept-tree>
|
||||
</el-drawer>
|
||||
|
||||
<!-- 采购处理人(上汽全公司选人解决方案) -->
|
||||
<org-table
|
||||
title="标准翻译申请处理人"
|
||||
:visible.sync="visibleOrgTable"
|
||||
dialog-model
|
||||
:config="orgTableConfig"
|
||||
:max-selected="1"
|
||||
max-selected-tips="标准翻译申请处理人只能为一个人"
|
||||
@confirm="handleOrgTableConfirm"
|
||||
></org-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import ProcessMixin from "process/components/ProcessMixin";
|
||||
import { saveTaskFirst } from 'api/process'
|
||||
export default {
|
||||
name: "step1",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessInput,
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
productNo: ''
|
||||
},
|
||||
page: 1,
|
||||
total: 0,
|
||||
bpnId: '',
|
||||
manageId: '',
|
||||
manageName: '',
|
||||
manageZNodes: [],
|
||||
needSendEmail:false,
|
||||
isSendEmailLoading:false,
|
||||
userObj: {},
|
||||
isGjjl: false,
|
||||
visible: {
|
||||
visibleManageTree: false
|
||||
},
|
||||
handlerList: [],
|
||||
isTreeDrawer: false,
|
||||
tableDeptIdList: [],
|
||||
depNode: [],
|
||||
id: '',
|
||||
itemCodeId: '',
|
||||
projectNoDialog: false,
|
||||
saveLoading: false,
|
||||
submitLoading: false,
|
||||
addLoading: false,
|
||||
projectNoList: [],
|
||||
indexList: [],
|
||||
uploadPath: 'api/lawss/actSarItems/importFile1',
|
||||
defaultFileList: [],
|
||||
importModalshowflagtemp: false,
|
||||
visibleTree: false,
|
||||
forms: {
|
||||
Purchaser: '',
|
||||
PurchaserId: '',
|
||||
PurchaserIdObj: {}
|
||||
},
|
||||
tableHeight: null,
|
||||
value: "",
|
||||
itemResList: [
|
||||
{
|
||||
value: '1',
|
||||
label: '有'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '无'
|
||||
}
|
||||
],
|
||||
costs: [
|
||||
{
|
||||
value: "1",
|
||||
label: "项目经费",
|
||||
},
|
||||
{
|
||||
value: "2",
|
||||
label: "标准费用",
|
||||
},
|
||||
],
|
||||
displayLocationDialogVisible: false,
|
||||
formLabelWidth: "120px",
|
||||
prcForm: {
|
||||
// 截止时间
|
||||
prcDeadline: ""
|
||||
},
|
||||
tableData: [],
|
||||
addForm: {
|
||||
standNum: '',
|
||||
standName: ''
|
||||
},
|
||||
addFormRules: {
|
||||
standNum: [
|
||||
{ required: true, message: "标准号不能为空", trigger: "blur" },
|
||||
],
|
||||
standName: [
|
||||
{ required: true, message: "标准名称不能为空", trigger: "blur" },
|
||||
]
|
||||
},
|
||||
visibleOrgTable: false,
|
||||
orgTableConfig: {
|
||||
value: '',
|
||||
valueName: ''
|
||||
}
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
pageChange (page) {
|
||||
this.getNumber(page)
|
||||
},
|
||||
pageSizeChange () {
|
||||
this.pageSize = this.$store.getters.userInfo.configContent
|
||||
this.getNumber(1)
|
||||
},
|
||||
dblClick(treeNode) {
|
||||
this.manageId = treeNode.userId
|
||||
this.manageName = treeNode.userName || treeNode.oldname
|
||||
this.visible.visibleManageTree = false
|
||||
this.userObj.showTipsUser = false
|
||||
},
|
||||
handleVisibleManage() {
|
||||
this.visible.visibleManageTree = true
|
||||
},
|
||||
// 查询高级经理
|
||||
getGjjl () {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
orgId: this.$store.getters.userInfo.pOrgId,
|
||||
roleHierarchyName: '高级经理'
|
||||
}, {}, res => {
|
||||
if (res.ok) {
|
||||
let tipsUser = ''
|
||||
let showTipsUser = false
|
||||
if (res.data.length === 1) {
|
||||
this.manageId = res.data[0].userId
|
||||
this.manageName = res.data[0].userName
|
||||
this.isGjjl = true
|
||||
} else if (res.data.length > 1) {
|
||||
tipsUser += `<p><span style="color: #f56c6c;">${this.$store.getters.userInfo.orgName}</span> 下存在多个高级经理,请选择一个高级经理</p>`
|
||||
showTipsUser = true
|
||||
} else {
|
||||
tipsUser += `<p><span style="color: #f56c6c;">${this.$store.getters.userInfo.orgName}</span> 下的高级经理不存在,请及时维护</p>`
|
||||
showTipsUser = true
|
||||
}
|
||||
this.userObj = {
|
||||
tipsUser,
|
||||
showTipsUser
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 根据项目代号查询项目经理
|
||||
getHandler (id) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawss/sarProductInfo/queryProjectManager', {
|
||||
id: id
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject(res.message)
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 获取总监
|
||||
getRole () {
|
||||
this.$http.get('lawss/sarProductInfo/queryProductRole', {
|
||||
itemCost: '2'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
let items = {}
|
||||
res.data.map((item) => {
|
||||
items.value = item.usid
|
||||
items.label = item.uname
|
||||
this.handlerList.push(items)
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击处理人事件
|
||||
handlerAdd (itemCode, id, row) {
|
||||
this.id = ''
|
||||
if (itemCode) {
|
||||
this.id = id
|
||||
this.orgTableConfig = {
|
||||
value: row.handler,
|
||||
valueName: row.handlerName
|
||||
}
|
||||
// this.isTreeDrawer = true
|
||||
this.visibleOrgTable = true
|
||||
} else {
|
||||
this.$message.warning('请输入项目代号')
|
||||
}
|
||||
},
|
||||
// 人员树点击事件
|
||||
selcetShareLawsTree (treeId, treeNode) {
|
||||
let arr = this.tableData
|
||||
for (let a = 0; a < arr.length; a++) {
|
||||
if (arr[a].id === this.id) {
|
||||
arr[a].handler = treeNode.id
|
||||
arr[a].handlerName = treeNode.name
|
||||
arr[a].handlerRul = true
|
||||
}
|
||||
}
|
||||
this.tableData = arr
|
||||
this.isTreeDrawer = false
|
||||
},
|
||||
handleOrgTableConfirm(checkedList, checkedIdList) {
|
||||
let findIndex = -1
|
||||
let row = {}
|
||||
this.tableData.map((item, index) => {
|
||||
if (item.id === this.id) {
|
||||
row = JSON.parse(JSON.stringify(item))
|
||||
findIndex = index
|
||||
}
|
||||
})
|
||||
row.handler = checkedList[0].userId
|
||||
row.handlerName = checkedList[0].userName
|
||||
row.handlerRul = true
|
||||
this.$set(this.tableData, findIndex, row)
|
||||
},
|
||||
// 选择项目代号
|
||||
productAdd (row) {
|
||||
let arr = this.tableData
|
||||
for (let a = 0; a < arr.length; a++) {
|
||||
if (arr[a].id === this.id) {
|
||||
arr[a].itemCodeId = row.id
|
||||
arr[a].itemCode = row.productNo
|
||||
this.getHandler(row.id).then(handler => {
|
||||
arr[a].handler = handler[0].usid
|
||||
arr[a].handlerName = handler[0].uname
|
||||
arr[a].handlerRul = true
|
||||
this.tableData = arr
|
||||
this.projectNoDialog = false
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
// 查询项目代号
|
||||
searchItemCode (id, itemCodeId) {
|
||||
this.id = id
|
||||
this.itemCodeId = ''
|
||||
if (itemCodeId) {
|
||||
this.itemCodeId = itemCodeId
|
||||
}
|
||||
this.projectNoDialog = true
|
||||
},
|
||||
// 跳转超链接
|
||||
jumpStand (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherStandardDetails',
|
||||
params: {
|
||||
id: item.standId,
|
||||
pageType: item.standType + '_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
// 修改费用来源触发
|
||||
itemCostChange (item) {
|
||||
item.itemCode = ''
|
||||
item.itemCodeId = ''
|
||||
item.handler = ''
|
||||
item.handlerRul = true
|
||||
item.handlerName = ''
|
||||
if (item.itemCost === '2') {
|
||||
item.itemCodeRul = true
|
||||
item.itemCostRul = true
|
||||
}
|
||||
},
|
||||
// 获取项目代号
|
||||
getNumber (page) {
|
||||
this.$http.get('lawss/sarProductInfo/queryProjectInfo',{
|
||||
productNo: this.form.productNo,
|
||||
page: page,
|
||||
pageSize: this.$store.getters.userInfo.configContent
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.total = res.data.count
|
||||
this.projectNoList = res.data.list
|
||||
}
|
||||
})
|
||||
},
|
||||
reachgetNumber () {
|
||||
this.form.productNo = ''
|
||||
this.getNumber(1)
|
||||
},
|
||||
// 批量删除
|
||||
deleteAll () {
|
||||
if (this.indexList.length > 0) {
|
||||
for (var a = 0; a < this.tableData.length; a++) {
|
||||
for (var b = 0; b < this.indexList.length; b++) {
|
||||
if (this.tableData[a].id === this.indexList[b]) {
|
||||
this.tableData.splice(a,1)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.$message.error('请选择要删除的数据')
|
||||
}
|
||||
},
|
||||
// 点击上传
|
||||
clickButtonToUpload () {
|
||||
this.importModalshowflagtemp = true
|
||||
},
|
||||
// 上传文件之前的钩子
|
||||
beforeUpload (file) {
|
||||
var filename = file.name
|
||||
var index1 = filename.lastIndexOf('.')
|
||||
var index2 = filename.length
|
||||
var fileSuffix = filename.substring(index1, index2)
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.xls') {
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传xls文件')
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size / 1024 / 1024 <= 200) {// eslint-disable-line
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
// 上传文件事件
|
||||
uploadSuccess (res, file, fileList) {
|
||||
if (res.ok) {
|
||||
this.$message.success('上传成功')
|
||||
this.importModalshowflagtemp = false
|
||||
for (var a = 0; a < res.data.length; a++) {
|
||||
var n = Math.random().toString(36).substr(2,10);
|
||||
res.data[a].id = n
|
||||
res.data[a].itemCodeRul = true
|
||||
res.data[a].itemCostRul = true
|
||||
res.data[a].handler = ''
|
||||
res.data[a].handlerName = ''
|
||||
this.tableData.push(res.data[a])
|
||||
}
|
||||
} else {
|
||||
fileList.pop()
|
||||
this.$message.error(res.message)
|
||||
}
|
||||
},
|
||||
removeOneFile (file, fileList) {
|
||||
},
|
||||
// 下载模板
|
||||
downloadItemsTemplate () {
|
||||
window.location.href = '/api/lawss/actSarItems/exportFile?exportName=流程模板'
|
||||
},
|
||||
handleSelectionChange (val) {
|
||||
this.indexList = []
|
||||
val.map((item) => {
|
||||
this.indexList.push(item.id)
|
||||
})
|
||||
},
|
||||
handleDblClick (treeNode) {
|
||||
this.forms.Purchaser = treeNode.oldname || treeNode.name
|
||||
this.forms.PurchaserId = treeNode.id
|
||||
},
|
||||
openDrawer () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 取消新增
|
||||
addCancel () {
|
||||
this.addForm.standName = ''
|
||||
this.addForm.standNum = ''
|
||||
this.displayLocationDialogVisible = false
|
||||
},
|
||||
// 保存新增
|
||||
addOk () {
|
||||
this.$refs['addForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.addLoading = true
|
||||
this.$http.get('lawss/actSarItems/contrast', {
|
||||
standNumber: this.addForm.standNum,
|
||||
standType: 'FOREIGN'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
var item = {}
|
||||
item.itemRes = res.data.itemRes
|
||||
item.standId = res.data.standId
|
||||
item.standType = res.data.standType
|
||||
item.standNum = this.addForm.standNum
|
||||
item.standName = this.addForm.standName
|
||||
item.itemCost = ''
|
||||
item.itemCode = ''
|
||||
item.itemRem = ''
|
||||
item.itemCodeId = ''
|
||||
item.handler = ''
|
||||
item.handlerRul = true
|
||||
item.handlerName = ''
|
||||
item.itemCostRul = true
|
||||
item.itemCodeRul = true
|
||||
var n = Math.random().toString(36).substr(2,10);
|
||||
item.id = n
|
||||
this.tableData.push(item)
|
||||
this.addForm.standName = ''
|
||||
this.addForm.standNum = ''
|
||||
this.displayLocationDialogVisible = false
|
||||
} else {
|
||||
}
|
||||
this.addLoading = false
|
||||
})
|
||||
}
|
||||
});
|
||||
},
|
||||
// 保存
|
||||
handleSave() {
|
||||
if (this.tableData.length > 0) {
|
||||
let _formData = new FormData()
|
||||
_formData.append('id', this.bpnId || '')
|
||||
_formData.append('createUser', this.$store.getters.userInfo.userId)
|
||||
_formData.append('createUserName', this.$store.getters.userInfo.uName)
|
||||
_formData.append('prcType', this.$route.query.type)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData,
|
||||
manageId: this.manageId,
|
||||
manageName: this.manageName
|
||||
}))
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
saveTaskFirst(_formData).then(res => {
|
||||
this.$message.success('保存成功')
|
||||
this.bpnId = res.result
|
||||
// this.$router.push('/processCenter')
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}).catch(e => {
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择标准')
|
||||
}
|
||||
},
|
||||
// 提交
|
||||
handleSubmit() {
|
||||
if (this.tableData.length > 0) {
|
||||
var b = 0
|
||||
var CostRul = 0
|
||||
var CodeRul = 0
|
||||
var handlerRule = 0
|
||||
for (let a = 0; a < this.tableData.length; a++) {
|
||||
if (this.tableData[a].itemRes === '1') {
|
||||
b++
|
||||
} else {
|
||||
if (this.tableData[a].itemCost === '') {
|
||||
this.tableData[a].itemCostRul = false
|
||||
CostRul++
|
||||
} else {
|
||||
this.tableData[a].itemCostRul = true
|
||||
if (this.tableData[a].itemCost === '1') {
|
||||
if (this.tableData[a].itemCode === '') {
|
||||
this.tableData[a].itemCodeRul = false
|
||||
CodeRul++
|
||||
} else {
|
||||
this.tableData[a].itemCodeRul = true
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.tableData[a].handler === '') {
|
||||
this.tableData[a].handlerRul = false
|
||||
handlerRule++
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CostRul > 0) {
|
||||
this.$message.error('请输入费用来源')
|
||||
return
|
||||
} else if (CodeRul > 0) {
|
||||
this.$message.error('请输入项目代号')
|
||||
return
|
||||
} else if (handlerRule > 0) {
|
||||
this.$message.error('请选择处理人')
|
||||
return
|
||||
} else if (this.forms.PurchaserId === '') {
|
||||
this.$message({
|
||||
message: '请选择采购人',
|
||||
type: 'error'
|
||||
})
|
||||
} else if (this.tableData.length < 1) {
|
||||
this.$message({
|
||||
message: '请添加标准',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
// else if (this.tableData.length === b) {
|
||||
// this.$message({
|
||||
// message: '没有可审批的信息',
|
||||
// type: 'error'
|
||||
// })
|
||||
// }
|
||||
else if (this.manageId === '') {
|
||||
this.$message({
|
||||
message: '请选择下一节点处理人',
|
||||
type: 'error'
|
||||
})
|
||||
} else {
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
this.$http.get('lawss/activiti/startProcess', {type: '15'}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
let json = {}
|
||||
json.prcDeadline = this.prcForm.prcDeadline
|
||||
json.prcCreateUserName = this.$store.getters.userInfo.uName
|
||||
json.dicTypeList = this.tableData
|
||||
json.bzcgyUserId = this.forms.PurchaserId
|
||||
json.remarks = []
|
||||
json.manageId = this.manageId
|
||||
json = JSON.stringify(json)
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: res.data,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
this.$message.error('流程发起失败')
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
// 发送邮件
|
||||
handleSendEmail(){
|
||||
this.isSendEmailLoading = true
|
||||
this.$http.post('/lawss/mail/sendMailByRoleId', {msg :'采购人不存在,请配置相关角色人员',roleId:'ZVXUGCP56D'},{
|
||||
_this: this,
|
||||
}, res => {
|
||||
if(res.ok){
|
||||
this.isSendEmailLoading = false
|
||||
this.$message({
|
||||
message: '邮件发送成功',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
this.isSendEmailLoading = false
|
||||
})
|
||||
},
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
roleName: '标准法规采购员'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.data.length > 0) {
|
||||
this.forms.PurchaserId = res.data[0].userId
|
||||
this.forms.Purchaser = res.data[0].userName
|
||||
} else {
|
||||
let tipsUser = ''
|
||||
let showTipsUser = false
|
||||
tipsUser += `<p>采购人不存在,请配置相关角色人员</p>`
|
||||
showTipsUser = true
|
||||
this.forms.PurchaserIdObj = {
|
||||
tipsUser,
|
||||
showTipsUser
|
||||
}
|
||||
this.needSendEmail = true
|
||||
}
|
||||
})
|
||||
this.getGjjl()
|
||||
this.getRole()
|
||||
this.getNumber()
|
||||
this.tableHeight = $(".detail-table-conent").height()
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $(".detail-table-conent").height()
|
||||
}
|
||||
if (this.tableHeight < 220) {
|
||||
this.tableHeight = 220
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step1 {
|
||||
padding: 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.myDialog {
|
||||
/deep/.el-dialog__body {
|
||||
padding: 0px 20px 57px;
|
||||
}
|
||||
}
|
||||
.rul {
|
||||
/deep/.el-input__inner {
|
||||
border-color: red !important;
|
||||
}
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.bead-input {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.demo-dialog-footer {
|
||||
float: right;
|
||||
}
|
||||
.dialog-input {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px;
|
||||
width: 360px;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,375 @@
|
||||
<!-- 标准翻译申请流程--采购员审批 -->
|
||||
<template>
|
||||
<div class="step1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准翻译申请流程</template>
|
||||
<template slot="proNode">高级经理审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item label="流程编号" class="search-item">
|
||||
<el-input v-model="prcForm.prcNum" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" class="search-item">
|
||||
<el-input v-model="prcForm.prcName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="prcForm.overTime"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="detail-table-conent">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column label="序号" type="index" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="标准号"
|
||||
prop="standNum"
|
||||
align="center"
|
||||
width="130"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="标准名称" prop="standName" align="center" show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="对比结果"
|
||||
prop="itemRes"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>无</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="费用来源"
|
||||
prop="itemCost"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.itemCost === '1' ? '项目经费' : (scope.row.itemCost === '2' ? '标准费用' : '') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="项目代号"
|
||||
prop="itemCode"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="itemRem" align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<div class="feedBack">
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="反馈意见">
|
||||
<el-select
|
||||
v-model="feedback"
|
||||
placeholder="是否同意"
|
||||
size="mini"
|
||||
class="bead"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
v-model="textarea"
|
||||
placeholder="请输入"
|
||||
resize="none"
|
||||
class="text"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
:saveLoading="saveLoading"
|
||||
:submitLoading="submitLoading"
|
||||
@entrust="handleEntrust"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import ProcessMixin from "process/components/ProcessMixin";
|
||||
import {bzcgDetail,changeAssigneeNew,saveCgSq} from 'api/process'
|
||||
export default {
|
||||
name: "step2",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
res: {},
|
||||
saveLoading: false,
|
||||
submitLoading: false,
|
||||
remarks: [],
|
||||
visibleTree: false,
|
||||
feedback: "",
|
||||
textarea: "",
|
||||
tableHeight: null,
|
||||
options: [
|
||||
{
|
||||
value: '0',
|
||||
label: '同意'
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
label: '不同意'
|
||||
}
|
||||
],
|
||||
prcForm: {},
|
||||
tableData: [],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
tableRowClassName({row, rowIndex}) {
|
||||
if (row.itemRes === '1') {
|
||||
return 'tableHide'
|
||||
}
|
||||
},
|
||||
// 请求数据
|
||||
getData () {
|
||||
return new Promise((resolve, reject) => {
|
||||
bzcgDetail({
|
||||
taskIds: this.$route.query.taskIds
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.tableData = res.dicTypeList
|
||||
this.remarks = res.remarks
|
||||
this.feedback = res.feedback
|
||||
this.textarea = res.textarea
|
||||
this.res = res
|
||||
resolve()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-12-01 10:26:53
|
||||
*/
|
||||
handleSave() {
|
||||
if (this.tableData.length > 0) {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('prcType', '15')
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
dicTypeList: this.tableData,
|
||||
feedback: this.feedback,
|
||||
textarea: this.textarea,
|
||||
bzcgyUserId: this.res.bzcgyUserId,
|
||||
fqUserId: this.res.fqUserId,
|
||||
manageId: this.res.manageId,
|
||||
prcCreateUserName: this.res.prcCreateUserName,
|
||||
prcDeadline: this.res.prcDeadline,
|
||||
remarks: this.res.remarks,
|
||||
taskId: this.res.taskId
|
||||
}))
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
saveCgSq(_formData).then(res => {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}).catch(e => {
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择标准')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-12-01 10:27:11
|
||||
*/
|
||||
handleSubmit() {
|
||||
if (this.feedback === '') {
|
||||
this.$message.error('请审批')
|
||||
return
|
||||
}
|
||||
let json = {}
|
||||
json.dicTypeList = this.tableData
|
||||
json.opinion = this.feedback
|
||||
if (this.feedback === '1') {
|
||||
this.remarks.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: '1',
|
||||
auditOpinionsText: this.textarea,
|
||||
approvalNode: '高级经理审批',
|
||||
approvalTime: '',
|
||||
})
|
||||
}
|
||||
json.remarks = this.remarks
|
||||
json.manageName = this.$store.getters.userInfo.uName
|
||||
json.manageId = this.$store.getters.userInfo.userId
|
||||
json = JSON.stringify(json)
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
handleDblClick (treeNode) {
|
||||
let userId = this.$store.getters.userInfo.usid || this.$store.getters.userInfo.userId
|
||||
if (treeNode.id === userId) {
|
||||
this.$message.warning('不可委托给自己')
|
||||
} else {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
};
|
||||
this.getData()
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step1 {
|
||||
padding: 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/deep/.tableHide {
|
||||
display: none;
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.text {
|
||||
display: inline;
|
||||
/deep/.el-textarea__inner {
|
||||
border-radius:20px;
|
||||
width: 580px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bead {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,368 @@
|
||||
<!-- 标准翻译申请流程--内部领导审批 -->
|
||||
<template>
|
||||
<div class="step1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准翻译申请流程</template>
|
||||
<template slot="proNode">采购员审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item label="流程编号" class="search-item">
|
||||
<el-input v-model="prcForm.prcNum" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" class="search-item">
|
||||
<el-input v-model="prcForm.prcName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="prcForm.overTime"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="detail-table-conent">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column label="序号" type="index" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="标准号"
|
||||
prop="standNum"
|
||||
align="center"
|
||||
width="130"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="标准名称" prop="standName" align="center" show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="对比结果"
|
||||
prop="itemRes"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>无</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="费用来源"
|
||||
prop="itemCost"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.itemCost === '1' ? '项目经费' : (scope.row.itemCost === '2' ? '标准费用' : '') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="项目代号"
|
||||
prop="itemCode"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="itemRem" align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<div class="feedBack">
|
||||
<!-- ref="form" :model="form" -->
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="反馈意见">
|
||||
<el-select v-model="feedback" placeholder="是否同意" size="mini"
|
||||
class="bead">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由">
|
||||
<el-input type="textarea" :rows="3" v-model="textarea" placeholder="请输入" class="text" resize="none"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
:saveLoading="saveLoading"
|
||||
:submitLoading="submitLoading"
|
||||
@entrust="handleEntrust"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import {bzcgDetail,saveCgSq,changeAssigneeNew} from 'api/process'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import ProcessMixin from "process/components/ProcessMixin";
|
||||
export default {
|
||||
name: "step3",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
res: {},
|
||||
manageName: '',
|
||||
manage: '',
|
||||
saveLoading: false,
|
||||
submitLoading: false,
|
||||
remarks: [],
|
||||
visibleTree: false,
|
||||
feedback: "",
|
||||
textarea:"",
|
||||
tableHeight: null,
|
||||
options: [
|
||||
{
|
||||
value: '0',
|
||||
label: '同意'
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
label: '不同意'
|
||||
}
|
||||
],
|
||||
prcForm: {},
|
||||
tableData: []
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
tableRowClassName({row, rowIndex}) {
|
||||
if (row.itemRes === '1') {
|
||||
return 'tableHide'
|
||||
}
|
||||
},
|
||||
// 请求数据
|
||||
getData () {
|
||||
return new Promise((resolve, reject) => {
|
||||
bzcgDetail({
|
||||
taskIds: this.$route.query.taskIds
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.tableData = res.dicTypeList
|
||||
this.remarks = res.remarks
|
||||
this.manageName = res.manageName
|
||||
this.manage = res.manageId
|
||||
this.feedback = res.feedback
|
||||
this.textarea = res.textarea
|
||||
this.res = res
|
||||
resolve()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-12-01 10:26:53
|
||||
*/
|
||||
handleSave() {
|
||||
if (this.tableData.length > 0) {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('prcType', '15')
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
dicTypeList: this.tableData,
|
||||
feedback: this.feedback,
|
||||
textarea: this.textarea,
|
||||
bzcgyUserId: this.res.bzcgyUserId,
|
||||
fqUserId: this.res.fqUserId,
|
||||
manageId: this.res.manageId,
|
||||
prcCreateUserName: this.res.prcCreateUserName,
|
||||
prcDeadline: this.res.prcDeadline,
|
||||
remarks: this.res.remarks,
|
||||
taskId: this.res.taskId
|
||||
}))
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
saveCgSq(_formData).then(res => {
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择标准')
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-12-01 10:27:11
|
||||
*/
|
||||
handleSubmit() {
|
||||
if (this.feedback === '') {
|
||||
this.$message.error('请审批')
|
||||
return
|
||||
}
|
||||
let json = {}
|
||||
json.dicTypeList = this.tableData
|
||||
json.opinion = this.feedback
|
||||
if (this.feedback === '1') {
|
||||
this.remarks.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: '1',
|
||||
auditOpinionsText: this.textarea,
|
||||
approvalNode: '采购员审批',
|
||||
approvalTime: '',
|
||||
})
|
||||
}
|
||||
json.remarks = this.remarks
|
||||
json.prcDeadline = this.prcForm.overTime
|
||||
json.manageName = this.manageName
|
||||
json.manageId = this.manage
|
||||
json = JSON.stringify(json)
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
handleDblClick (treeNode) {
|
||||
let userId = this.$store.getters.userInfo.usid || this.$store.getters.userInfo.userId
|
||||
if (treeNode.id === userId) {
|
||||
this.$message.warning('不可委托给自己')
|
||||
} else {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.getData()
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step1 {
|
||||
padding: 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/deep/.tableHide {
|
||||
display: none;
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.text {
|
||||
display: inline;
|
||||
/deep/.el-textarea__inner {
|
||||
width: 580px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bead {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,368 @@
|
||||
<!-- 标准翻译申请流程--部门经理审批 -->
|
||||
<template>
|
||||
<div class="step1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准翻译申请流程</template>
|
||||
<template slot="proNode">项目经理或EQ总监审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item label="流程编号" class="search-item">
|
||||
<el-input v-model="prcForm.prcNum" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" class="search-item">
|
||||
<el-input v-model="prcForm.prcName" disabled></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
disabled
|
||||
v-model="prcForm.overTime"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="detail-table-conent">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{
|
||||
background: '#e8e8e8',
|
||||
color: '#333333',
|
||||
fontSize: '16px',
|
||||
fontWeight: 'bold',
|
||||
height: '48px',
|
||||
}"
|
||||
:height="tableHeight"
|
||||
:row-class-name="tableRowClassName"
|
||||
>
|
||||
<el-table-column label="序号" type="index" align="center" width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="标准号"
|
||||
prop="standNum"
|
||||
align="center"
|
||||
width="130"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="标准名称" prop="standName" align="center" show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="对比结果"
|
||||
prop="itemRes"
|
||||
align="center"
|
||||
width="140">
|
||||
<template slot-scope="scope">
|
||||
<div>无</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="费用来源"
|
||||
prop="itemCost"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div>{{ scope.row.itemCost === '1' ? '项目经费' : (scope.row.itemCost === '2' ? '标准费用' : '') }}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="项目代号"
|
||||
prop="itemCode"
|
||||
align="center"
|
||||
width="140"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="itemRem" align="center">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
|
||||
<div class="feedBack">
|
||||
<!-- ref="form" :model="form" -->
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="反馈意见">
|
||||
<el-select v-model="feedback" placeholder="是否同意" size="mini"
|
||||
class="bead">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由">
|
||||
<el-input type="textarea" :rows="3" v-model="textarea" placeholder="请输入" class="text" resize="none"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
:saveLoading="saveLoading"
|
||||
:submitLoading="submitLoading"
|
||||
@entrust="handleEntrust"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import {bzcgDetail,saveCgSq,changeAssigneeNew} from 'api/process'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import ProcessMixin from "process/components/ProcessMixin";
|
||||
export default {
|
||||
name: "step4",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
res: {},
|
||||
saveLoading: false,
|
||||
submitLoading: false,
|
||||
remarks: [],
|
||||
visibleTree: false,
|
||||
feedback: "",
|
||||
textarea: "",
|
||||
tableHeight: null,
|
||||
options: [
|
||||
{
|
||||
value: '0',
|
||||
label: '同意'
|
||||
},
|
||||
{
|
||||
value: '1',
|
||||
label: '不同意'
|
||||
}
|
||||
],
|
||||
prcForm: {},
|
||||
tableData: []
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
tableRowClassName({row, rowIndex}) {
|
||||
if (row.itemRes === '1') {
|
||||
return 'tableHide'
|
||||
}
|
||||
},
|
||||
// 请求数据
|
||||
getData () {
|
||||
return new Promise((resolve, reject) => {
|
||||
bzcgDetail({
|
||||
taskIds: this.$route.query.taskIds
|
||||
}).then(res => {
|
||||
if (res) {
|
||||
this.tableData = res.dicTypeList
|
||||
this.remarks = res.remarks
|
||||
this.feedback = res.feedback
|
||||
this.textarea = res.textarea
|
||||
this.res = res
|
||||
resolve()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-12-01 10:26:53
|
||||
*/
|
||||
handleSave() {
|
||||
if (this.tableData.length > 0) {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('prcType', '15')
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
dicTypeList: this.tableData,
|
||||
feedback: this.feedback,
|
||||
textarea: this.textarea,
|
||||
bzcgyUserId: this.res.bzcgyUserId,
|
||||
fqUserId: this.res.fqUserId,
|
||||
manageId: this.res.manageId,
|
||||
prcCreateUserName: this.res.prcCreateUserName,
|
||||
prcDeadline: this.res.prcDeadline,
|
||||
remarks: this.res.remarks,
|
||||
taskId: this.res.taskId
|
||||
}))
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
saveCgSq(_formData).then(res => {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}).catch(e => {
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择标准')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-12-01 10:27:11
|
||||
*/
|
||||
handleSubmit() {
|
||||
if (this.feedback === '') {
|
||||
this.$message.error('请审批')
|
||||
return
|
||||
}
|
||||
let json = {}
|
||||
json.dicTypeList = this.tableData
|
||||
json.opinion = this.feedback
|
||||
if (this.feedback === '1') {
|
||||
this.remarks.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: '1',
|
||||
auditOpinionsText: this.textarea,
|
||||
approvalNode: '项目经理或EQ总监审批',
|
||||
approvalTime: '',
|
||||
})
|
||||
}
|
||||
json.remarks = this.remarks
|
||||
json = JSON.stringify(json)
|
||||
this.submitLoading = true
|
||||
this.saveLoading = true
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: this.$route.query.taskIds,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
let standList = []
|
||||
this.tableData.map((item) => {
|
||||
standList.push(item.standNum)
|
||||
})
|
||||
this.$http.get('lawss/sarLawsInfo/updateLawsPrcNum', {
|
||||
standnumber: standList.join(','),
|
||||
prcNum: this.$route.query.prcNum
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
this.submitLoading = false
|
||||
this.saveLoading = false
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.getData()
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
window.onresize = () => {
|
||||
this.tableHeight = $(".detail-table-conent").height();
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step1 {
|
||||
padding: 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
/deep/.tableHide {
|
||||
display: none;
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
.text {
|
||||
display: inline;
|
||||
/deep/.el-textarea__inner {
|
||||
width: 580px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bead {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,899 @@
|
||||
<!-- 会签人审核清单节点 -->
|
||||
<!-- 海外法规清单确认流程 -->
|
||||
<template>
|
||||
<div class="step2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准法规清单发布/更新流程</template>
|
||||
<template slot="proNode">会签审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="prcForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
|
||||
<div class="retrieval prc-content-border">
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="listInfo"
|
||||
:rules="prcFormRules"
|
||||
class="label-input-form"
|
||||
label-width="130px"
|
||||
>
|
||||
<!--<el-row :gutter="25">-->
|
||||
<!-- <!– <el-col :span="8">–>-->
|
||||
<!-- <!– <el-form-item–>-->
|
||||
<!-- <!– label="清单编号"–>-->
|
||||
<!-- <!– prop="code"–>-->
|
||||
<!-- <!– class="add-form-item"–>-->
|
||||
<!-- <!– >–>-->
|
||||
<!-- <!– <el-input–>-->
|
||||
<!-- <!– v-model="prcForm.code"–>-->
|
||||
<!-- <!– maxlength="100"–>-->
|
||||
<!-- <!– clearable–>-->
|
||||
<!-- <!– placeholder="请输入清单编号"></el-input>–>-->
|
||||
<!-- <!– </el-form-item>–>-->
|
||||
<!-- <!– </el-col>–>-->
|
||||
<!-- <el-col :span="8">-->
|
||||
<!-- <el-form-item-->
|
||||
<!-- label="清单名称"-->
|
||||
<!-- prop="accessContent"-->
|
||||
<!-- class="add-form-item"-->
|
||||
<!-- >-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="listInfo.accessContent"-->
|
||||
<!-- maxlength="100"-->
|
||||
<!-- clearable-->
|
||||
<!-- readonly-->
|
||||
<!-- placeholder="请选择清单名称"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="4">-->
|
||||
<!-- <div class="search-btn-wrap">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="primary"-->
|
||||
<!-- @click="handleSearchBussStandard">按条件查询</el-button>-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-col>-->
|
||||
<!--</el-row>-->
|
||||
<div class="transition-box">
|
||||
<!-- <p class="transition-box-p">-->
|
||||
<!-- <label class="transition-box-label">国内/海外:</label>-->
|
||||
<!-- <span class="transition-box-span">{{ sarAccessEO.type === 'INLAND' ? '国内' : '海外' }}</span>-->
|
||||
<!-- </p>-->
|
||||
<div>
|
||||
<p class="transition-box-p" style="width: 50%;display: inline-block;">
|
||||
<label class="transition-box-label">清单名称:</label>
|
||||
<span class="transition-box-span">{{ listInfo.accessContent }}</span>
|
||||
</p>
|
||||
<p class="transition-box-p" style="width: 50%;display: inline-block;">
|
||||
<label class="transition-box-label">国家/地区:</label>
|
||||
<span class="transition-box-span">{{ listInfo.countryShow }}</span>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!--<p class="transition-box-p">-->
|
||||
<!-- <label class="transition-box-label">清单说明:</label>-->
|
||||
<!-- <span class="transition-box-span">{{ listInfo.remark || '-' }}</span>-->
|
||||
<!--</p>-->
|
||||
<!--<div class="transition-box-p">-->
|
||||
<!-- <label class="transition-box-label">附件:</label>-->
|
||||
<!-- <div class="file-box" v-if="fileInfoList.length > 0">-->
|
||||
<!-- <span-->
|
||||
<!-- class="transition-box-span"-->
|
||||
<!-- v-for="item in fileInfoList"-->
|
||||
<!-- :key="item.id"-->
|
||||
<!-- @click="fileDownLoad(item.id)"-->
|
||||
<!-- >{{ item.name }}</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <span class="transition-box-span" v-else>-</span>-->
|
||||
<!--</div>-->
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<!-- <div class="skip">-->
|
||||
<!-- <el-link-->
|
||||
<!-- href="http://localhost:9999/#/bzcg/step2?type=9"-->
|
||||
<!-- target="_blank"-->
|
||||
<!-- >标准清单</el-link-->
|
||||
<!-- >-->
|
||||
<!-- </div>-->
|
||||
<div class="container">
|
||||
<el-tabs v-model="activeName" @tab-click="handleClick">
|
||||
<el-tab-pane label="技术要求" name="SKILL">
|
||||
<div class="standards-drawer-table">
|
||||
<el-table
|
||||
:data="sarAccessInfoList"
|
||||
style="width: 100%"
|
||||
border
|
||||
height="100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change=""
|
||||
ref="tableSKILL"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed="left"
|
||||
width="180px"
|
||||
label="标准号"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.resId && scope.row.sarType !== 'TEMP'" class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.code }}</a>
|
||||
<span v-else>{{ scope.row.code }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed="left"
|
||||
show-overflow-tooltip
|
||||
prop="name"
|
||||
width="200px"
|
||||
label="中文名称"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.resId && scope.row.sarType !== 'TEMP'" class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.name }}</a>
|
||||
<span v-else>{{ scope.row.name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="enName"
|
||||
width="150px"
|
||||
label="英文名称"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.resId && scope.row.sarType !== 'TEMP'" class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.enName }}</a>
|
||||
<span v-else>{{ scope.row.enName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="newPutTime"-->
|
||||
<!-- width="180px"-->
|
||||
<!-- label="新车型实施日期">-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="prodPutTime"-->
|
||||
<!-- width="180px"-->
|
||||
<!-- label="在产车实施日期">-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="eopPutTime"-->
|
||||
<!-- width="180px"-->
|
||||
<!-- label="EOP实施日期">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="newPutTextTime"
|
||||
width="200px"
|
||||
label="新车型实施日期"
|
||||
sortable
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="prodPutTextTime"
|
||||
width="200px"
|
||||
label="在产车实施日期"
|
||||
sortable
|
||||
>
|
||||
</el-table-column>
|
||||
<!--<el-table-column-->
|
||||
<!-- prop="eopPutTextTime"-->
|
||||
<!-- width="200px"-->
|
||||
<!-- label="EOP实施日期(项目)"-->
|
||||
<!-- sortable-->
|
||||
<!-->-->
|
||||
<!--</el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="synopsis"-->
|
||||
<!-- width="100px"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- label="法规说明">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="performInfo"
|
||||
width="100px"
|
||||
show-overflow-tooltip
|
||||
label="实施说明">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="authDelive"
|
||||
width="120px"
|
||||
label="认证交付物">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="authObjId"
|
||||
width="110px"
|
||||
label="认证对象">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="askNatureName"
|
||||
width="100px"
|
||||
label="监管类型">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="applyArcticId"
|
||||
width="120px"
|
||||
show-overflow-tooltip
|
||||
label="适用车辆类型">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ZRBMName"
|
||||
width="100px"
|
||||
show-overflow-tooltip
|
||||
label="责任部门">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.ZRBMName || scope.row.zrbmname || '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--<el-table-column-->
|
||||
<!-- prop="XGBMName"-->
|
||||
<!-- width="100px"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- label="相关部门">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ scope.row.XGBMName || scope.row.xgbmname || '' }}-->
|
||||
<!-- </template>-->
|
||||
<!--</el-table-column>-->
|
||||
<el-table-column
|
||||
prop="FOName"
|
||||
width="80px"
|
||||
show-overflow-tooltip
|
||||
label="FO">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.FOName || scope.row.foname || '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="proEssessUser"
|
||||
width="120px"
|
||||
show-overflow-tooltip
|
||||
label="项目评估角色">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="synopsis"
|
||||
width="120px"
|
||||
show-overflow-tooltip
|
||||
label="文本说明">
|
||||
</el-table-column>
|
||||
<!--<el-table-column-->
|
||||
<!-- width="120px"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- label="标签">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ scope.row.GXHBQName || scope.row.gxhbqName || '' }}-->
|
||||
<!-- </template>-->
|
||||
<!--</el-table-column>-->
|
||||
<!--<el-table-column-->
|
||||
<!-- prop="askTypeName"-->
|
||||
<!-- width="120px"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- label="要求类型">-->
|
||||
<!--</el-table-column>-->
|
||||
</el-table>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="行政要求" name="ADMIN">
|
||||
<div class="standards-drawer-table">
|
||||
<el-table
|
||||
:data="sarAccessInfoListADMIN"
|
||||
style="width: 100%"
|
||||
border
|
||||
height="100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change=""
|
||||
ref="tableADMIN"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed="left"
|
||||
width="180px"
|
||||
label="标准号"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.resId && scope.row.sarType !== 'TEMP'" class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.code }}</a>
|
||||
<span v-else>{{ scope.row.code }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
fixed="left"
|
||||
show-overflow-tooltip
|
||||
prop="name"
|
||||
width="200px"
|
||||
label="中文名称"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.resId && scope.row.sarType !== 'TEMP'" class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.name }}</a>
|
||||
<span v-else>{{ scope.row.name }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
prop="enName"
|
||||
width="150px"
|
||||
label="英文名称"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.resId && scope.row.sarType !== 'TEMP'" class="table-jump" @click="handlePreview(scope.row)">{{ scope.row.enName }}</a>
|
||||
<span v-else>{{ scope.row.enName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="newPutTime"-->
|
||||
<!-- width="180px"-->
|
||||
<!-- label="新车型实施日期">-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="prodPutTime"-->
|
||||
<!-- width="180px"-->
|
||||
<!-- label="在产车实施日期">-->
|
||||
<!-- </el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="eopPutTime"-->
|
||||
<!-- width="180px"-->
|
||||
<!-- label="EOP实施日期">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="newPutTextTime"
|
||||
width="200px"
|
||||
label="新车型实施日期"
|
||||
sortable
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="prodPutTextTime"
|
||||
width="200px"
|
||||
label="在产车实施日期"
|
||||
sortable
|
||||
>
|
||||
</el-table-column>
|
||||
<!--<el-table-column-->
|
||||
<!-- prop="eopPutTextTime"-->
|
||||
<!-- width="200px"-->
|
||||
<!-- label="EOP实施日期(项目)"-->
|
||||
<!-- sortable-->
|
||||
<!-->-->
|
||||
<!--</el-table-column>-->
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="synopsis"-->
|
||||
<!-- width="100px"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- label="法规说明">-->
|
||||
<!-- </el-table-column>-->
|
||||
<el-table-column
|
||||
prop="performInfo"
|
||||
width="100px"
|
||||
show-overflow-tooltip
|
||||
label="实施说明">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="authDelive"
|
||||
width="120px"
|
||||
label="认证交付物">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="authObjId"
|
||||
width="110px"
|
||||
label="认证对象">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="askNatureName"
|
||||
width="100px"
|
||||
label="监管类型">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="applyArcticId"
|
||||
width="120px"
|
||||
show-overflow-tooltip
|
||||
label="适用车辆类型">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ZRBMName"
|
||||
width="100px"
|
||||
show-overflow-tooltip
|
||||
label="责任部门">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.ZRBMName || scope.row.zrbmname || '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--<el-table-column-->
|
||||
<!-- prop="XGBMName"-->
|
||||
<!-- width="100px"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- label="相关部门">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ scope.row.XGBMName || scope.row.xgbmname || '' }}-->
|
||||
<!-- </template>-->
|
||||
<!--</el-table-column>-->
|
||||
<el-table-column
|
||||
prop="FOName"
|
||||
width="80px"
|
||||
show-overflow-tooltip
|
||||
label="FO">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.FOName || scope.row.foname || '' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="proEssessUser"
|
||||
width="120px"
|
||||
show-overflow-tooltip
|
||||
label="项目评估角色">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="synopsis"
|
||||
width="120px"
|
||||
show-overflow-tooltip
|
||||
label="文本说明">
|
||||
</el-table-column>
|
||||
<!--<el-table-column-->
|
||||
<!-- width="120px"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- label="标签">-->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ scope.row.GXHBQName || scope.row.gxhbqName || '' }}-->
|
||||
<!-- </template>-->
|
||||
<!--</el-table-column>-->
|
||||
<!--<el-table-column-->
|
||||
<!-- prop="askTypeName"-->
|
||||
<!-- width="120px"-->
|
||||
<!-- show-overflow-tooltip-->
|
||||
<!-- label="要求类型">-->
|
||||
<!--</el-table-column>-->
|
||||
<el-table-column
|
||||
prop="isInvolveAccess"
|
||||
width="150px"
|
||||
show-overflow-tooltip
|
||||
label="是否涉及准入审核">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
<div class="sign" v-if="!processDetail">
|
||||
<el-form
|
||||
label-width="150px"
|
||||
ref="bzqdForm"
|
||||
:model="bzqdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
:rules="bzqdFormRules"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinion" class="add-form-item">
|
||||
<el-select v-model="bzqdForm.opinion">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="bzqdForm.opinionContent"
|
||||
clearable
|
||||
resize="none"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
style="margin-top: 0;"
|
||||
show-save
|
||||
show-submit
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import BussRetrieval from 'process/components/BussRetrieval'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import {completeTask, saveTaskForPub, queryDetail, foreignAccessProcess, isEnd} from 'api/process'
|
||||
export default {
|
||||
name: 'step2',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
BussRetrieval,
|
||||
ProcessFooter
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
id: '',
|
||||
loading: false,
|
||||
saveLoading: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
formDisableFlag: '',
|
||||
bzqdForm: {
|
||||
opinion: '',
|
||||
opinionContent: '',
|
||||
opinionAll: []
|
||||
},
|
||||
bzqdFormRules: {
|
||||
opinion: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
listInfo: {
|
||||
accessContent: '',
|
||||
country: '',
|
||||
countryShow: '',
|
||||
relateFile: ''
|
||||
},
|
||||
fileInfoList: [],
|
||||
prcFormRules: {},
|
||||
activeName: 'SKILL', // 当前激活
|
||||
sarAccessInfoList: [], // 清单条目 技术要求table 数据
|
||||
sarAccessInfoListADMIN: [], // 清单条目 行政要求table数据
|
||||
accessSarTypeList: [], // 清单类型table选中数组
|
||||
isSubmit: false,
|
||||
processDetail: false
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-12-01 10:26:53
|
||||
*/
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
sarAccessInfoList: this.sarAccessInfoList,
|
||||
sarAccessInfoListADMIN: this.sarAccessInfoListADMIN,
|
||||
bzqdForm: this.bzqdForm,
|
||||
listInfo: this.listInfo,
|
||||
id: this.id
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-12-01 10:27:11
|
||||
*/
|
||||
handleSubmit () {
|
||||
this.$refs['bzqdForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
if (this.bzqdForm.opinion === '0') {
|
||||
this.bzqdForm.opinionContent = ''
|
||||
this.bzqdForm.opinionAll = []
|
||||
} else {
|
||||
// 拼接审核意见信息
|
||||
this.bzqdForm.opinionAll = [
|
||||
{
|
||||
opinion: this.bzqdForm.opinion,
|
||||
opinionContent: this.bzqdForm.opinionContent,
|
||||
opinionName: this.$store.getters.userInfo.uName,
|
||||
opinionId: this.$store.getters.userInfo.userId,
|
||||
opinionNode: '会签审批',
|
||||
opinionTime: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
sarAccessInfoList: this.sarAccessInfoList,
|
||||
sarAccessInfoListADMIN: this.sarAccessInfoListADMIN,
|
||||
bzqdForm: this.bzqdForm,
|
||||
listInfo: this.listInfo,
|
||||
id: this.id
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
if (this.bzqdForm.opinion !== '0') {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
isEnd({
|
||||
pId: this.$store.getters.getHandleInfo.prcId
|
||||
}).then(end => {
|
||||
if (end === 1) {
|
||||
this.foreignAccessProcess()
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 海外清单流程入库
|
||||
foreignAccessProcess () {
|
||||
const _formData = new FormData()
|
||||
_formData.append('infoJson', JSON.stringify({
|
||||
sarAccessInfoList: this.sarAccessInfoList,
|
||||
sarAccessInfoListADMIN: this.sarAccessInfoListADMIN,
|
||||
id: this.id
|
||||
}))
|
||||
foreignAccessProcess(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 技术清单tab页切换事件
|
||||
handleClick (tab, event) {
|
||||
this.activeName = tab.name
|
||||
},
|
||||
// 点击查看
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherStandardDetails',
|
||||
params: {
|
||||
id: item.resId,
|
||||
pageType: item.sarType
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.sarAccessInfoList = mesg.sarAccessInfoList
|
||||
this.sarAccessInfoListADMIN = mesg.sarAccessInfoListADMIN
|
||||
this.bzqdForm = mesg.bzqdForm
|
||||
this.listInfo = mesg.listInfo
|
||||
if (this.listInfo.relateFile) {
|
||||
this.getFileInfo()
|
||||
}
|
||||
this.id = mesg.id
|
||||
this.loading = false
|
||||
this.$refs.bzqdForm.resetFields()
|
||||
})
|
||||
},
|
||||
// 请求上传的文件信息
|
||||
getFileInfo () {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.listInfo.relateFile
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.$nextTick(() => {
|
||||
res.data.map(item => {
|
||||
// 赋值要回显的上传文件内容
|
||||
this.fileInfoList.push({
|
||||
name: item.oldFileName,
|
||||
uid: item.uid,
|
||||
status: item.status,
|
||||
id: item.id
|
||||
})
|
||||
})
|
||||
})
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 附件下载事件
|
||||
fileDownLoad (attId) {
|
||||
window.location.href = '/api/att/attFile/downloadFile?fileId=' + attId
|
||||
},
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted () {
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step2 {
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.container {
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
.container {
|
||||
//height: calc(~'100% - 52px - 55px - 50px');
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.el-tabs{
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: auto;
|
||||
.standards-drawer-table {
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
/deep/.el-tabs__content{
|
||||
//height: calc(~'100% - 55px');
|
||||
overflow-y: auto;
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.el-tab-pane{
|
||||
height: 100%;
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.bead {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
.skip {
|
||||
margin: 10px;
|
||||
}
|
||||
.bead-input {
|
||||
/deep/ .el-input__inner {
|
||||
border-radius: 20px !important;
|
||||
}
|
||||
}
|
||||
.transition-box{
|
||||
padding: 0 10px;
|
||||
background: #ffffff;
|
||||
font-size: 14px;
|
||||
.transition-box-p{
|
||||
line-height: 35px;
|
||||
.transition-box-label{
|
||||
display: inline-block;
|
||||
width: 80px;
|
||||
vertical-align: top;
|
||||
}
|
||||
.transition-box-span{
|
||||
display: inline-block;
|
||||
width: calc(~'100% - 100px');
|
||||
}
|
||||
.file-box{
|
||||
display: inline-block;
|
||||
width: calc(~'100% - 100px');
|
||||
.transition-box-span{
|
||||
display: block;
|
||||
width: 100%;
|
||||
cursor: pointer;
|
||||
color: #4498f0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.prc-content-border {
|
||||
padding: 10px 20px;
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,817 @@
|
||||
<!--会后管理流程 - 第一步-->
|
||||
<template>
|
||||
<div id="hhglStep1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">会后管理流程</template>
|
||||
<template slot="proNode">工作组会议会后管理流程</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="creatTime">
|
||||
<el-date-picker
|
||||
v-model="prcForm.creatTime"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="hhglStep1-box">
|
||||
<el-form
|
||||
ref="hhglForm"
|
||||
:model="hhglForm"
|
||||
class="label-input-form prc-content-border"
|
||||
:rules="hhglFormRules"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="分标委名称"
|
||||
prop="FBWName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
v-model="hhglForm.FBWName"
|
||||
placeholder="请选择"
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in FBWOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="工作组名称"
|
||||
prop="GZZName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
v-model="hhglForm.GZZName"
|
||||
placeholder="请选择"
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in GZZOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<template v-for="(item, index) in hhglForm.standList">
|
||||
<el-row :gutter="24" :key="index">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准号"
|
||||
class="add-form-item"
|
||||
:prop="item.standNo"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.standNo" :disabled="formDisableFlag" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
class="add-form-item"
|
||||
:prop="item.menuName"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.menuName" :disabled="formDisableFlag" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="会议名称"
|
||||
prop="meetingName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="hhglForm.meetingName"
|
||||
placeholder="请输入"
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="参会时间"
|
||||
prop="meetingTime"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="formDisableFlag"
|
||||
v-model="hhglForm.meetingTime"
|
||||
placeholder="请选择参会时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="会议通知"
|
||||
class="add-form-item"
|
||||
prop="meetingFile"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<input type="hidden" v-model="hhglForm.meetingFile" />
|
||||
<template v-for="(item, index) in meetingFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-row :gutter="24">-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item-->
|
||||
<!-- label="参会人"-->
|
||||
<!-- class="add-form-item"-->
|
||||
<!-- prop="attendee"-->
|
||||
<!-- >-->
|
||||
<!-- <input v-model="hhglForm.attendee" type="hidden" />-->
|
||||
<!-- <input v-if="processDetail" v-model="hhglForm.attendee" type="hidden" disabled />-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-if="!processDetail"-->
|
||||
<!-- v-model="hhglForm.attendeeName"-->
|
||||
<!-- placeholder="请选择参会人"-->
|
||||
<!-- readonly-->
|
||||
<!-- @click.native="handleVisibleOrgTable"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12" label-width="150px">
|
||||
<el-form-item
|
||||
label="相关资料"
|
||||
class="add-form-item"
|
||||
prop="relevantDataFile"
|
||||
>
|
||||
<input type="hidden" v-model="hhglForm.relevantDataFile" />
|
||||
<el-button
|
||||
size="small"
|
||||
@click="clickButtonToUpload"
|
||||
icon="el-icon-upload"
|
||||
class="form-upload-btn"
|
||||
>
|
||||
{{ hhglForm.relevantDataFile === 'null' || hhglForm.relevantDataFile === '' || hhglForm.relevantDataFile == null ? '点击上传' : '查看已上传的文件' }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="下一处理人"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
prop="manageId"
|
||||
>
|
||||
<!-- <el-input v-model="hqsqForm.manageId" v-show="false" />-->
|
||||
<process-input
|
||||
v-model="hhglForm.manageId"
|
||||
disabled
|
||||
:show-tips="userObj.showTipsUser"
|
||||
:tips="userObj.tipsUser"
|
||||
></process-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--审批结果-->
|
||||
<ProcessApprovalHistory
|
||||
:approvalData="approvalHistory"
|
||||
v-if="approvalHistory.length"
|
||||
></ProcessApprovalHistory>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:showSendEmail="hhglForm.manageId ? false : true"
|
||||
:sendEmailLoading="isSendEmail"
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
@sendEmail="handleSendEmail"
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
round
|
||||
class="common-button-primary"
|
||||
:loading="uncommittedLoading"
|
||||
@click="uncommittedClick"
|
||||
>未参加</el-button>
|
||||
</ProcessFooter>
|
||||
<!-- 组织机构树 -->
|
||||
<el-drawer
|
||||
title="组织结构"
|
||||
:visible.sync="isTreeDrawer"
|
||||
@opened="drawerOpen"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<dept-tree
|
||||
v-if="checkType === 'person' && isTreeDrawer"
|
||||
treeDivId="roleTree"
|
||||
ref="roleTree"
|
||||
allDept
|
||||
showUser
|
||||
checkEnable
|
||||
:editable="false"
|
||||
:check-id-list="checkIdList"
|
||||
@treeOnCheck="(checkedList) => treeOnRoleCheck(checkedList)"
|
||||
style="overflow: auto">
|
||||
</dept-tree>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="isTreeOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="isTreeDrawer = false">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
|
||||
<!-- 0326上汽全公司选人 -->
|
||||
<org-table
|
||||
:visible.sync="visibleOrgTable"
|
||||
dialog-model
|
||||
:config="orgTableConfig"
|
||||
@confirm="handleOrgTableConfirm"
|
||||
></org-table>
|
||||
|
||||
<el-dialog
|
||||
width='400px'
|
||||
:visible.sync="importModalshowflagtemp"
|
||||
title="导入文件"
|
||||
@close="defaultFileList = []"
|
||||
>
|
||||
<el-upload
|
||||
class="customer-upload"
|
||||
multiple
|
||||
drag
|
||||
:on-success="uploadSuccess"
|
||||
:on-remove="removeOneFile"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadPath"
|
||||
name="file"
|
||||
:file-list="defaultFileList"
|
||||
ref="importFileAboutStand">
|
||||
<!-- :show-file-list="showUploadlist"-->
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">点击或拖拽上传文件</div>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
import { queryDetail, completeTask, saveTaskForPub, changeAssigneeNew } from 'api/process'
|
||||
export default {
|
||||
name: 'HhglStep1',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessInput,
|
||||
ProcessHeader,
|
||||
ProcessFooter,
|
||||
ProcessBaseInfo,
|
||||
ProcessChooseTree,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
userObj: {},
|
||||
loading: false,
|
||||
uncommittedLoading: false,
|
||||
isSendEmail: false,
|
||||
saveLoading: false,
|
||||
isSubmit: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 截止时间
|
||||
creatTime: '',
|
||||
dept: this.$store.getters.userInfo.orgId
|
||||
},
|
||||
formDisableFlag: false,
|
||||
hhglForm: {
|
||||
FBWName: '', // 分标委名称
|
||||
GZZName: '', // 工作组名称
|
||||
standList: [], // 标准list
|
||||
meetingName: '', // 会议名称
|
||||
meetingTime: '', // 参会时间
|
||||
meetingFile: '', // 会议通知
|
||||
attendee: '', // 参会人
|
||||
attendeeName: '', // 参会人name
|
||||
attendeeAll: [], // 全部选择(包括人员部门)回显用
|
||||
relevantDataFile: '', // 相关资料
|
||||
uncommitted: '0',
|
||||
usid: '', // 下一处理人
|
||||
manageId: '' // 下一处理人
|
||||
},
|
||||
hhglFormRules: {
|
||||
attendeeName: [
|
||||
{ required: true, message: '参会人不能为空', trigger: 'change' }
|
||||
],
|
||||
relevantDataFile: [
|
||||
{ required: true, message: '相关资料不能为空', trigger: 'change' }
|
||||
],
|
||||
manageId: [
|
||||
{ required: true, message: 'EQ经理不存在,请配置相关角色人员', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
meetingFileList: [],
|
||||
FBWOptions: [],
|
||||
GZZOptions: [],
|
||||
defaultFileList: [],
|
||||
checkType: null,
|
||||
isTreeDrawer: false,
|
||||
treeRoleNameList: [],
|
||||
treeRoleIdList: [],
|
||||
importModalshowflagtemp: false,
|
||||
uploadPath: 'api/att/attFile/upload',
|
||||
approvalHistory: [], // 审批结果
|
||||
checkIdList: [],
|
||||
processDetail: false,
|
||||
visibleOrgTable: false,
|
||||
orgTableConfig: {
|
||||
value: '',
|
||||
valueName: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
nextProcessor(){
|
||||
this.$http.get('/sys/org/getUserAllByRoleId', {roleId: 'EQ-G-6'},{
|
||||
_this: this,
|
||||
loading: 'loading'
|
||||
}, res => {
|
||||
if(res.length > 0){
|
||||
this.hhglForm.manageId = res[0].uname
|
||||
this.hhglForm.usid = res[0].usid
|
||||
} else {
|
||||
let tipsUser = ''
|
||||
let showTipsUser = false
|
||||
tipsUser += `<p><span style="color: white;">EQ经理不存在,请配置相关角色人员</p>`
|
||||
showTipsUser = true
|
||||
this.userObj = {
|
||||
tipsUser,
|
||||
showTipsUser
|
||||
}
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 查询分标委
|
||||
queryFbw () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawss/sarGroupMenu/queryFbw', {}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.FBWOptions = res.data
|
||||
resolve()
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 根据分标委查询工作组
|
||||
FBWChange (val) {
|
||||
this.$http.get('lawss/sarGroupMenu/queryGroup', {
|
||||
fbwId: val
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
// this.hhglForm.GZZName = ''
|
||||
this.GZZOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 请求文件
|
||||
getFile () {
|
||||
if (this.hhglForm.meetingFile) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.hhglForm.meetingFile
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.meetingFileList = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 打开选择人员drawer
|
||||
handleVisibleRole () {
|
||||
this.checkType = 'person'
|
||||
// this.isTreeDrawer = true
|
||||
this.visibleOrgTable = true
|
||||
},
|
||||
// 赋值回显人员
|
||||
drawerOpen () {
|
||||
this.checkIdList = this.hhglForm.attendee ? this.hhglForm.attendeeAll : []
|
||||
// if (checkedArr.length > 0) {
|
||||
// setTimeout(() => {
|
||||
// this.$nextTick(() => {
|
||||
// this.$refs.roleTree.checkedNode(checkedArr)
|
||||
// })
|
||||
// }, 1000)
|
||||
// }
|
||||
},
|
||||
// 人员选择事件
|
||||
treeOnRoleCheck (checkedList) {
|
||||
this.treeRoleNameList = []
|
||||
this.treeRoleIdList = []
|
||||
this.hhglForm.attendeeAll = []
|
||||
checkedList.map((item, index) => {
|
||||
this.hhglForm.attendeeAll.push(item.id)
|
||||
if (!item.isParent) {
|
||||
this.treeRoleNameList.push(item.oldname || item.name)
|
||||
this.treeRoleIdList.push(item.id)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击确定赋值部门和人员
|
||||
isTreeOk () {
|
||||
this.hhglForm.attendeeName = this.treeRoleNameList.join(',')
|
||||
this.hhglForm.attendee = this.treeRoleIdList.join(',')
|
||||
this.isTreeDrawer = false
|
||||
},
|
||||
// 点击上传按钮
|
||||
clickButtonToUpload () {
|
||||
this.importModalshowflagtemp = true
|
||||
if (this.hhglForm.relevantDataFile) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.hhglForm.relevantDataFile
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
res.data.map(item => {
|
||||
item.name = item.oldFileName
|
||||
})
|
||||
this.defaultFileList = res.data || []
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
this.defaultFileList = []
|
||||
}
|
||||
},
|
||||
// 上传文件事件
|
||||
uploadSuccess (res, file, fileList) {
|
||||
if (res.ok) {
|
||||
this.$message({
|
||||
message: '文件上传成功',
|
||||
type: 'success'
|
||||
})
|
||||
// this.defaultFileList.push(res.data)
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'error'
|
||||
})
|
||||
fileList.pop()
|
||||
}
|
||||
const attIdList = []
|
||||
fileList.map(item => {
|
||||
if (item.response && item.response.data && item.response.data.attId) {
|
||||
attIdList.push(item.response.data.attId)
|
||||
}
|
||||
})
|
||||
this.hhglForm.relevantDataFile = attIdList.join(',')
|
||||
},
|
||||
removeOneFile (file, fileList) {
|
||||
this.defaultFileList.map((item, index) => {
|
||||
if (item.id === file.id) {
|
||||
this.defaultFileList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 文件上传之前的钩子
|
||||
beforeUpload (file) {
|
||||
let filename = file.name
|
||||
let index1 = filename.lastIndexOf('.')
|
||||
let index2 = filename.length
|
||||
let fileSuffix = filename.substring(index1, index2)
|
||||
//把后缀转大写
|
||||
if(fileSuffix !== undefined && fileSuffix !== null){
|
||||
fileSuffix = fileSuffix.toUpperCase()
|
||||
}
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.PDF' || fileSuffix === '.DOC' || fileSuffix === '.DOCX' || fileSuffix === '.PPT'
|
||||
|| fileSuffix === '.PPTX'|| fileSuffix === '.XLS'|| fileSuffix === '.XLSX'
|
||||
|| fileSuffix === '.PNG'|| fileSuffix === '.JPG'|| fileSuffix === '.JPEG') {
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传pdf、doc、docx、ppt、pptx、xls、xlsx、png、jpg、jpeg等文件')
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size > 200 * 1024 * 1024) {// eslint-disable-line
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hhglForm: this.hhglForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 点击未参加按钮事件
|
||||
uncommittedClick () {
|
||||
this.hhglForm.uncommitted = '1'
|
||||
this.uncommittedLoading = true
|
||||
let _formData = new FormData()
|
||||
this.hhglForm.opinion = ''
|
||||
this.hhglForm.opinionContent = ''
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hhglForm: this.hhglForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
this.uncommittedLoading = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.uncommittedLoading = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.uncommittedLoading = false
|
||||
})
|
||||
},
|
||||
// 发送邮件
|
||||
handleSendEmail(){
|
||||
this.isSendEmail = true
|
||||
this.$http.post('/lawss/mail/sendMailByRoleId', {msg :'EQ经理不存在,请配置相关角色人员',roleId:'ZVXUGCP56D'},{
|
||||
_this: this,
|
||||
}, res => {
|
||||
if(res.ok){
|
||||
this.isSendEmail = false
|
||||
this.$message({
|
||||
message: '邮件发送成功',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
this.isSendEmail = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
if (this.hhglForm.relevantDataFile){
|
||||
this.hhglFormRules.relevantDataFile[0].required = false
|
||||
}
|
||||
this.$refs['hhglForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
this.hhglForm.opinion = ''
|
||||
this.hhglForm.opinionContent = ''
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hhglForm: this.hhglForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
this.isSubmit = false
|
||||
if (res.success) {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
if(mesg.hhglForm !== undefined && mesg.hhglForm !== null){
|
||||
// 赋值审批历史
|
||||
let approvalHistory = mesg.hhglForm
|
||||
this.approvalHistory.push({
|
||||
approvalUserName: approvalHistory.opinionName, // 审批人
|
||||
auditOpinions: approvalHistory.opinion, // 审批意见
|
||||
auditOpinionsText: approvalHistory.opinionContent, // 意见内容
|
||||
approvalNode: approvalHistory.opinionNode, // 审批人角色
|
||||
approvalTime: approvalHistory.opinionTime // 审批时间
|
||||
})
|
||||
} else {
|
||||
mesg.attendee = ''
|
||||
mesg.attendeeName = ''
|
||||
mesg.opinion = ''
|
||||
mesg.opinionName = ''
|
||||
mesg.relevantDataFile = ''
|
||||
mesg.attendee = this.$store.getters.userInfo.userId
|
||||
mesg.attendeeName = this.$store.getters.userInfo.userName
|
||||
}
|
||||
this.hhglForm = mesg.hhglForm ? {...mesg.hhglForm} : {...mesg}
|
||||
this.hhglForm.uncommitted = '0'
|
||||
this.loading = false
|
||||
this.queryFbw().then(() => {
|
||||
this.FBWChange(this.hhglForm.FBWName)
|
||||
})
|
||||
this.$refs.hhglForm.resetFields()
|
||||
})
|
||||
},
|
||||
|
||||
handleVisibleOrgTable() {
|
||||
this.visibleOrgTable = true
|
||||
this.orgTableConfig = {
|
||||
value: this.hhglForm.attendee,
|
||||
valueName: this.hhglForm.attendeeName,
|
||||
}
|
||||
},
|
||||
|
||||
handleOrgTableConfirm(checkedList, checkedIdList) {
|
||||
const idList = [], nameList = []
|
||||
checkedList.map(item => {
|
||||
idList.push(item.userId)
|
||||
nameList.push(item.userName)
|
||||
})
|
||||
this.hhglForm.attendee = idList.join(',')
|
||||
this.hhglForm.attendeeName = nameList.join(',')
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'hhglForm.meetingFile' (newVal) {
|
||||
this.getFile()
|
||||
},
|
||||
defaultFileList (newVal, oldVal) {
|
||||
if (this.importModalshowflagtemp) {
|
||||
let fileId = []
|
||||
newVal.map(item => {
|
||||
fileId.push(item.id)
|
||||
})
|
||||
this.hhglForm.relevantDataFile = fileId.join(',')
|
||||
if (this.hhglForm.relevantDataFile !== '') {
|
||||
this.$refs.hhglForm.clearValidate('relevantDataFile')
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.nextProcessor()
|
||||
this.formDisableFlag = true
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
this.queryDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#hhglStep1{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.hhglStep1-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,538 @@
|
||||
<!--会后管理流程 - 第二步-->
|
||||
<template>
|
||||
<div id="hhglStep2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">会后管理流程</template>
|
||||
<template slot="proNode">领导审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="hhglStep2-box">
|
||||
<el-form
|
||||
ref="hhglForm"
|
||||
:model="hhglForm"
|
||||
class="label-input-form prc-content-border"
|
||||
:rules="hhglFormRules"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="分标委名称"
|
||||
prop="FBWName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
v-model="hhglForm.FBWName"
|
||||
placeholder="请选择"
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in FBWOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="工作组名称"
|
||||
prop="GZZName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
v-model="hhglForm.GZZName"
|
||||
placeholder="请选择"
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in GZZOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<template v-for="(item, index) in hhglForm.standList">
|
||||
<el-row :gutter="24" :key="index">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准号"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
:prop="item.standNo"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.standNo" :disabled="formDisableFlag" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
:prop="item.menuName"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.menuName" :disabled="formDisableFlag" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="会议名称"
|
||||
prop="meetingName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="hhglForm.meetingName"
|
||||
placeholder="请输入"
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="参会时间"
|
||||
prop="meetingTime"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="formDisableFlag"
|
||||
v-model="hhglForm.meetingTime"
|
||||
placeholder="请选择参会时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="会议通知"
|
||||
class="add-form-item"
|
||||
prop="meetingFile"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<input type="hidden" v-model="hhglForm.meetingFile" />
|
||||
<template v-for="(item, index) in meetingFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-row :gutter="24">-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item-->
|
||||
<!-- label="参会人"-->
|
||||
<!-- class="add-form-item"-->
|
||||
<!-- prop="attendee"-->
|
||||
<!-- :class="{'form-item-disabled': formDisableFlag}"-->
|
||||
<!-- >-->
|
||||
<!-- <input v-model="hhglForm.attendee" type="hidden" />-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="hhglForm.attendeeName"-->
|
||||
<!-- placeholder="请选择参会人"-->
|
||||
<!-- readonly-->
|
||||
<!-- :disabled="formDisableFlag"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="相关资料"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
prop="relevantDataFile"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<input type="hidden" v-model="hhglForm.relevantDataFile" />
|
||||
<template v-for="(item, index) in relevantDataFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<template v-if="!processDetail">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinion" class="add-form-item">
|
||||
<el-select v-model="hhglForm.opinion">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="hhglForm.opinionContent"
|
||||
clearable
|
||||
resize="none"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import { queryDetail, completeTask, saveTaskForPub, afterConferenceProcess, changeAssigneeNew } from 'api/process'
|
||||
export default {
|
||||
name: 'HhglStep2',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessFooter,
|
||||
ProcessBaseInfo,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
saveLoading: false,
|
||||
isSubmit: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
formDisableFlag: false,
|
||||
hhglForm: {
|
||||
FBWName: '', // 分标委名称
|
||||
GZZName: '', // 工作组名称
|
||||
standList: [], // 标准list
|
||||
meetingName: '', // 会议名称
|
||||
meetingTime: '', // 参会时间
|
||||
meetingFile: '', // 会议通知
|
||||
attendee: '', // 参会人
|
||||
attendeeName: '', // 参会人name
|
||||
attendeeAll: [], // 全部选择(包括人员部门)回显用
|
||||
relevantDataFile: '', // 相关资料
|
||||
opinion: '', // 反馈意见
|
||||
opinionContent: '' // 意见理由
|
||||
},
|
||||
hhglFormRules: {
|
||||
opinion: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
meetingFileList: [],
|
||||
relevantDataFileList: [],
|
||||
FBWOptions: [],
|
||||
GZZOptions: [],
|
||||
processDetail: false
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
// 查询分标委
|
||||
queryFbw () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawss/sarGroupMenu/queryFbw', {}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.FBWOptions = res.data
|
||||
resolve()
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 根据分标委查询工作组
|
||||
FBWChange (val) {
|
||||
this.$http.get('lawss/sarGroupMenu/queryGroup', {
|
||||
fbwId: val
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
// this.hhglForm.GZZName = ''
|
||||
this.GZZOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 请求文件
|
||||
getFile (fileName, fileList) {
|
||||
if (this.hhglForm[fileName]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.hhglForm[fileName]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hhglForm: this.hhglForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['hhglForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
this.hhglForm.opinionName = this.$store.getters.userInfo.uName
|
||||
this.hhglForm.opinionNode = '领导审批'
|
||||
this.hhglForm.opinionTime = ''
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hhglForm: this.hhglForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
if (this.hhglForm.opinion !== '0') {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.afterConferenceProcess()
|
||||
}
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
// this.$message.warning(res.message)
|
||||
let message = res.message
|
||||
if (message.indexOf('1#2') !== -1){
|
||||
message = message.split('1#2')[1]
|
||||
this.$message.warning(message)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 会后流程入库
|
||||
afterConferenceProcess () {
|
||||
const _formData = new FormData()
|
||||
let infoJson = JSON.parse(JSON.stringify(this.hhglForm))
|
||||
infoJson.prcNum = this.prcForm.prcNum
|
||||
_formData.append('infoJson', JSON.stringify(infoJson))
|
||||
afterConferenceProcess(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.hhglForm = mesg.hhglForm
|
||||
this.loading = false
|
||||
this.queryFbw().then(() => {
|
||||
this.FBWChange(this.hhglForm.FBWName)
|
||||
})
|
||||
this.$refs.hhglForm.resetFields()
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'hhglForm.meetingFile' (newVal) {
|
||||
this.getFile('meetingFile', 'meetingFileList')
|
||||
},
|
||||
// 相关资料
|
||||
'hhglForm.relevantDataFile' (newVal) {
|
||||
this.getFile('relevantDataFile', 'relevantDataFileList')
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#hhglStep2{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.hhglStep2-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,652 @@
|
||||
<!--会前申请流程 第一步-->
|
||||
<template>
|
||||
<div id="hqsqStep1">
|
||||
<ProcessHeader>
|
||||
<template slot="proName">会前申请流程</template>
|
||||
<template slot="proNode">流程发起</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo>
|
||||
<el-form
|
||||
ref="prcForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="hqsqStep1-box">
|
||||
<el-form
|
||||
ref="hqsqForm"
|
||||
:model="hqsqForm"
|
||||
class="label-input-form prc-content-border"
|
||||
:rules="hqsqFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="分标委名称"
|
||||
prop="FBWName"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-select
|
||||
v-model="hqsqForm.FBWName"
|
||||
placeholder="请选择"
|
||||
@change="FBWChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in FBWOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="工作组名称"
|
||||
prop="GZZName"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-select
|
||||
v-model="hqsqForm.GZZName"
|
||||
placeholder="请先选择分标委"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in GZZOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<template v-for="(item, index) in hqsqForm.standList">
|
||||
<el-row :gutter="24" :key="index">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准号"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
:prop="item.standNo"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.standNo" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
:prop="item.menuName"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.menuName" />
|
||||
<el-button
|
||||
v-show="hqsqForm.standList.length > 1"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
icon="el-icon-minus"
|
||||
@click="removeStand(index)"
|
||||
style="right: 50px !important;"
|
||||
>
|
||||
</el-button>
|
||||
<el-button
|
||||
v-show="index === hqsqForm.standList.length - 1"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
icon="el-icon-plus"
|
||||
@click="addStand(item)"
|
||||
>
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="会议名称"
|
||||
prop="meetingName"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-input v-model="hqsqForm.meetingName" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="参会时间"
|
||||
prop="meetingTime"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="hqsqForm.meetingTime"
|
||||
placeholder="请选择参会时间"
|
||||
clearable
|
||||
:picker-options="pickerOptions"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="会议通知"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
prop="meetingFile"
|
||||
>
|
||||
<el-input v-model="hqsqForm.meetingFile" v-show="false" />
|
||||
<el-button
|
||||
size="small"
|
||||
@click="clickButtonToUpload"
|
||||
icon="el-icon-upload"
|
||||
class="form-upload-btn">
|
||||
{{ hqsqForm.meetingFile === 'null' || hqsqForm.meetingFile === '' || hqsqForm.meetingFile == null ? '点击上传' : '查看已上传的文件' }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="下一处理人"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
prop="manageId">
|
||||
<process-input
|
||||
v-model="hqsqForm.manageId"
|
||||
disabled
|
||||
:show-tips="userObj.showTipsUser"
|
||||
:tips="userObj.tipsUser"
|
||||
></process-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
:showSendEmail="hqsqForm.manageId ? false : true"
|
||||
:sendEmailLoading="isSendEmail"
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
@sendEmail="handleSendEmail"
|
||||
></ProcessFooter>
|
||||
<el-dialog
|
||||
width='400px'
|
||||
:visible.sync="importModalshowflagtemp"
|
||||
title="导入文件"
|
||||
@close="defaultFileList = []"
|
||||
>
|
||||
<el-upload
|
||||
class="customer-upload"
|
||||
multiple
|
||||
drag
|
||||
:on-success="uploadSuccess"
|
||||
:on-remove="removeOneFile"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadPath"
|
||||
name="file"
|
||||
:file-list="defaultFileList"
|
||||
ref="importFileAboutStand">
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">点击或拖拽上传文件</div>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
<loading :loading="hqsqDataLoading">数据处理中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import {startProcess, completeTask, saveTaskFirst, queryTaskFirst} from 'api/process'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'HqsqStep1',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessInput,
|
||||
ProcessHeader,
|
||||
ProcessFooter,
|
||||
ProcessBaseInfo,
|
||||
CustomFile
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
userObj: {},
|
||||
hqsqDataLoading: false,
|
||||
loading: false,
|
||||
saveLoading: false,
|
||||
isSubmit: false,
|
||||
isSendEmail: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
createUserName: this.$store.getters.userInfo.uName,
|
||||
createUserId: this.$store.getters.userInfo.userId,
|
||||
dept: this.$store.getters.userInfo.orgId
|
||||
},
|
||||
prcFormRules: {
|
||||
// prcDeadline: [
|
||||
// { required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
// ]
|
||||
},
|
||||
hqsqForm: {
|
||||
FBWName: '', // 分标委名称
|
||||
GZZName: '', // 工作组名称
|
||||
standList: [
|
||||
{
|
||||
menuName: '',
|
||||
standNo: ''
|
||||
}
|
||||
], // 标准list
|
||||
meetingName: '', // 会议名称
|
||||
meetingTime: '', // 参会时间
|
||||
meetingFile: '', // 会议通知
|
||||
usid: '', // 下一处理人
|
||||
manageId: '' // 下一处理人
|
||||
},
|
||||
hqsqFormRules: {
|
||||
FBWName: [
|
||||
{ required: true, message: '分标委名称不能为空', trigger: 'change' }
|
||||
],
|
||||
GZZName: [
|
||||
{ required: false, message: '工作组名称不能为空', trigger: 'change' }
|
||||
],
|
||||
meetingName: [
|
||||
{ required: true, message: '会议名称不能为空', trigger: 'change' }
|
||||
],
|
||||
meetingTime: [
|
||||
{ required: true, message: '参会时间不能为空', trigger: 'change' }
|
||||
],
|
||||
meetingFile: [
|
||||
{ required: true, message: '会议通知不能为空', trigger: 'change' }
|
||||
],
|
||||
manageId: [
|
||||
{ required: true, message: 'EQ经理不存在,请配置相关角色人员', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
importModalshowflagtemp: false,
|
||||
uploadPath: 'api/att/attFile/upload',
|
||||
defaultFileList: [],
|
||||
FBWOptions: [], // 分标委下拉数据
|
||||
GZZOptions: [], // 工作组下拉数据
|
||||
pickerOptions: {
|
||||
disabledDate (time) {
|
||||
return time.getTime() < Date.now() - 8.64e7 // 如果没有后面的-8.64e7就是不可以选择今天的
|
||||
}
|
||||
},
|
||||
bpnId: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
nextProcessor(){
|
||||
this.$http.get('/sys/org/getUserAllByRoleId', {roleId: 'EQ-G-6'},{
|
||||
_this: this,
|
||||
loading: 'hqsqDataLoading'
|
||||
}, res => {
|
||||
if(res.length > 0){
|
||||
this.hqsqForm.manageId = res[0].uname
|
||||
this.hqsqForm.usid = res[0].usid
|
||||
} else {
|
||||
let tipsUser = ''
|
||||
let showTipsUser = false
|
||||
tipsUser += `<p><span style="color: white;">EQ经理不存在,请配置相关角色人员</p>`
|
||||
showTipsUser = true
|
||||
this.userObj = {
|
||||
tipsUser,
|
||||
showTipsUser
|
||||
}
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
},
|
||||
// 点击上传按钮
|
||||
clickButtonToUpload () {
|
||||
this.importModalshowflagtemp = true
|
||||
if (this.hqsqForm.meetingFile) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.hqsqForm.meetingFile
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
res.data.map(item => {
|
||||
item.name = item.oldFileName
|
||||
})
|
||||
this.defaultFileList = res.data || []
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
this.defaultFileList = []
|
||||
}
|
||||
},
|
||||
// 上传文件事件
|
||||
uploadSuccess (res, file, fileList) {
|
||||
if (res.ok) {
|
||||
this.$message({
|
||||
message: '文件上传成功',
|
||||
type: 'success'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'error'
|
||||
})
|
||||
fileList.pop()
|
||||
}
|
||||
const attIdList = []
|
||||
fileList.map(item => {
|
||||
if (item.response && item.response.data && item.response.data.attId) {
|
||||
attIdList.push(item.response.data.attId)
|
||||
}
|
||||
})
|
||||
this.hqsqForm.meetingFile = attIdList.join(',')
|
||||
},
|
||||
removeOneFile (file, fileList) {
|
||||
this.defaultFileList.map((item, index) => {
|
||||
if (item.id === file.id) {
|
||||
this.defaultFileList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 文件上传之前的钩子
|
||||
beforeUpload (file) {
|
||||
let filename = file.name
|
||||
let index1 = filename.lastIndexOf('.')
|
||||
let index2 = filename.length
|
||||
let fileSuffix = filename.substring(index1, index2)
|
||||
//把后缀转大写
|
||||
if(fileSuffix !== undefined && fileSuffix !== null){
|
||||
fileSuffix = fileSuffix.toUpperCase()
|
||||
}
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.PDF' || fileSuffix === '.DOC' || fileSuffix === '.DOCX' || fileSuffix === '.PPT'
|
||||
|| fileSuffix === '.PPTX'|| fileSuffix === '.XLS'|| fileSuffix === '.XLSX'
|
||||
|| fileSuffix === '.PNG'|| fileSuffix === '.JPG'|| fileSuffix === '.JPEG') {
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传pdf、doc、docx、ppt、pptx、xls、xlsx、png、jpg、jpeg等文件')
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size > 200 * 1024 * 1024) {// eslint-disable-line
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('id', this.bpnId)
|
||||
_formData.append('createUser', this.$store.getters.userInfo.userId)
|
||||
_formData.append('createUserName', this.$store.getters.userInfo.uName)
|
||||
_formData.append('prcType', this.$route.query.type)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hqsqForm: this.hqsqForm
|
||||
}))
|
||||
saveTaskFirst(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
this.bpnId = res.result
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['prcForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.$refs['hqsqForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.startProcess().then(taskId => {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskId', taskId)
|
||||
_formData.append('userId', this.userId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hqsqForm: this.hqsqForm
|
||||
}))
|
||||
_formData.append('manageId', this.hqsqForm.usid )
|
||||
completeTask(_formData).then(res => {
|
||||
this.isSubmit = false
|
||||
if (res.success) {
|
||||
this.$message.success('流程发起成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
let message = res.message
|
||||
if (message.indexOf('1#2') !== -1){
|
||||
message = message.split('1#2')[1]
|
||||
this.$message.warning(message)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 发送邮件
|
||||
handleSendEmail(){
|
||||
this.isSendEmail = true
|
||||
this.$http.post('/lawss/mail/sendMailByRoleId', {msg :'EQ经理不存在,请配置相关角色人员',roleId:'ZVXUGCP56D'},{
|
||||
_this: this,
|
||||
}, res => {
|
||||
if(res.ok){
|
||||
this.isSendEmail = false
|
||||
this.$message({
|
||||
message: '邮件发送成功',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
this.isSendEmail = false
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 流程开启
|
||||
* @date: 2020-11-12 10:23:50
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
startProcess () {
|
||||
this.isSubmit = true
|
||||
return new Promise((resolve, reject) => {
|
||||
startProcess({
|
||||
type: this.$route.query.type,
|
||||
id: this.bpnId
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
})
|
||||
},
|
||||
// 查询详情
|
||||
queryTaskFirst () {
|
||||
queryTaskFirst({
|
||||
bpnId: this.bpnId
|
||||
}).then(res => {
|
||||
let mes = JSON.parse(res.mes)
|
||||
this.prcForm = mes.prcForm
|
||||
this.hqsqForm = mes.hqsqForm
|
||||
this.$http.get('lawss/sarGroupMenu/queryGroup', {
|
||||
fbwId: this.hqsqForm.FBWName
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.GZZOptions = res.data
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 查询分标委
|
||||
queryFbw () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawss/sarGroupMenu/queryFbw', {}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.FBWOptions = res.data
|
||||
resolve()
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 根据分标委查询工作组
|
||||
FBWChange (val) {
|
||||
this.$http.get('lawss/sarGroupMenu/queryGroup', {
|
||||
fbwId: val
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.hqsqForm.GZZName = ''
|
||||
this.GZZOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 根据工作组查询标准
|
||||
GZZChange (val) {
|
||||
this.$http.get('lawss/sarGroupMenu/queryStand', {
|
||||
groupId: val
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.hqsqForm.standList.map((items, index) => {
|
||||
if (items.id || items.pId) {
|
||||
this.hqsqForm.standList.splice(index, 1)
|
||||
} else if (!items.menuName || !items.standNo) {
|
||||
this.hqsqForm.standList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
res.data.map(item => {
|
||||
this.hqsqForm.standList.push(item)
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击添加标准按钮事件
|
||||
addStand (val) {
|
||||
// 判断标准是否填写完成
|
||||
let isOk = false
|
||||
for (let i in this.hqsqForm.standList) {
|
||||
if (!this.hqsqForm.standList[i].menuName || !this.hqsqForm.standList[i].standNo) {
|
||||
isOk = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if (isOk) {
|
||||
this.$message.warning('请填写完成标准后在添加')
|
||||
return false
|
||||
}
|
||||
this.hqsqForm.standList.push({
|
||||
menuName: val.menuName,
|
||||
standNo: val.standNo
|
||||
})
|
||||
},
|
||||
// 移除标准事件
|
||||
removeStand (index) {
|
||||
this.hqsqForm.standList.splice(index, 1)
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
defaultFileList (newVal, oldVal) {
|
||||
if (this.importModalshowflagtemp) {
|
||||
let fileId = []
|
||||
newVal.map(item => {
|
||||
fileId.push(item.id)
|
||||
})
|
||||
this.hqsqForm.meetingFile = fileId.join(',')
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo']),
|
||||
userId () {
|
||||
return this.userInfo.userId
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.nextProcessor()
|
||||
this.queryFbw().then(() => {
|
||||
if (this.$route.query.bpnId) {
|
||||
this.bpnId = this.$route.query.bpnId
|
||||
this.queryTaskFirst()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#hqsqStep1{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.hqsqStep1-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
.common-button-primary{
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,502 @@
|
||||
<!--会前申请流程 第二步-->
|
||||
<template>
|
||||
<div id="hqsqStep2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">会前申请流程</template>
|
||||
<template slot="proNode">领导审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="hqsqStep2-box">
|
||||
<el-form
|
||||
ref="hqsqForm"
|
||||
:model="hqsqForm"
|
||||
class="label-input-form prc-content-border"
|
||||
:rules="hqsqFormRules"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="分标委名称"
|
||||
prop="FBWName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
v-model="hqsqForm.FBWName"
|
||||
placeholder="请选择"
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in FBWOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="工作组名称"
|
||||
prop="GZZName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
v-model="hqsqForm.GZZName"
|
||||
placeholder="请选择"
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in GZZOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<template v-for="(item, index) in hqsqForm.standList">
|
||||
<el-row :gutter="24" :key="index">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准号"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
:prop="item.standNo"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.standNo" :disabled="formDisableFlag" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
:prop="item.menuName"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.menuName" :disabled="formDisableFlag" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="会议名称"
|
||||
prop="meetingName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="hqsqForm.meetingName"
|
||||
placeholder="请输入"
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="参会时间"
|
||||
prop="meetingTime"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="formDisableFlag"
|
||||
v-model="hqsqForm.meetingTime"
|
||||
placeholder="请选择参会时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="会议通知"
|
||||
class="add-form-item"
|
||||
prop="meetingFile"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<input type="hidden" v-model="hqsqForm.meetingFile" />
|
||||
<template v-for="(item, index) in defaultFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<template v-if="!processDetail">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinion" class="add-form-item">
|
||||
<el-select v-model="hqsqForm.opinion">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="hqsqForm.opinionContent"
|
||||
clearable
|
||||
resize="none"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
></ProcessFooter>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import { queryDetail, completeTask, saveTaskForPub, preConferenceProcess, changeAssigneeNew } from 'api/process'
|
||||
export default {
|
||||
name: 'HqsqStep2',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessFooter,
|
||||
ProcessBaseInfo,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
hqsqForm: {
|
||||
FBWName: '', // 分标委名称
|
||||
GZZName: '', // 工作组名称
|
||||
standList: [], // 标准list
|
||||
meetingName: '', // 会议名称
|
||||
meetingTime: '', // 参会时间
|
||||
meetingFile: '', // 会议通知
|
||||
opinion: '', // 反馈意见
|
||||
opinionContent: '' // 意见内容
|
||||
},
|
||||
hqsqFormRules: {
|
||||
opinion: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
formDisableFlag: false,
|
||||
FBWOptions: [],
|
||||
GZZOptions: [],
|
||||
defaultFileList: [],
|
||||
processDetail: false
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hqsqForm: this.hqsqForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['hqsqForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
this.hqsqForm.opinionName = this.$store.getters.userInfo.uName
|
||||
this.hqsqForm.opinionNode = '领导审批'
|
||||
this.hqsqForm.opinionTime = ''
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hqsqForm: this.hqsqForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
if (this.hqsqForm.opinion !== '0') {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.preConferenceProcess()
|
||||
}
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 查询分标委
|
||||
queryFbw () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawss/sarGroupMenu/queryFbw', {}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.FBWOptions = res.data
|
||||
resolve()
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 根据分标委查询工作组
|
||||
FBWChange (val) {
|
||||
this.$http.get('lawss/sarGroupMenu/queryGroup', {
|
||||
fbwId: val
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.GZZOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 请求文件
|
||||
getFile () {
|
||||
if (this.hqsqForm.meetingFile) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.hqsqForm.meetingFile
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.defaultFileList = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.hqsqForm = mesg.hqsqForm
|
||||
this.loading = false
|
||||
this.queryFbw().then(() => {
|
||||
this.FBWChange(this.hqsqForm.FBWName)
|
||||
})
|
||||
this.$refs.hqsqForm.resetFields()
|
||||
})
|
||||
},
|
||||
// 入库
|
||||
preConferenceProcess () {
|
||||
const _formData = new FormData()
|
||||
let infoJson = JSON.parse(JSON.stringify(this.hqsqForm))
|
||||
infoJson.prcNum = this.prcForm.prcNum
|
||||
infoJson.pubUser = this.prcForm.createUserId
|
||||
_formData.append('infoJson', JSON.stringify(infoJson))
|
||||
preConferenceProcess(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'hqsqForm.meetingFile' (newVal) {
|
||||
this.getFile()
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#hqsqStep2{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.hqsqStep2-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,566 @@
|
||||
<!--会前申请流程 参会人再次申请-->
|
||||
<template>
|
||||
<div id="hqsqStep3">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">会前申请流程</template>
|
||||
<template slot="proNode">参会人再次申请</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="prcForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="hqsqStep3-box">
|
||||
<el-form
|
||||
ref="hqsqForm"
|
||||
:model="hqsqForm"
|
||||
class="label-input-form prc-content-border"
|
||||
:rules="hqsqFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="分标委名称"
|
||||
prop="FBWName"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-select
|
||||
v-model="hqsqForm.FBWName"
|
||||
placeholder="请选择"
|
||||
@change="FBWChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in FBWOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="工作组名称"
|
||||
prop="GZZName"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-select
|
||||
v-model="hqsqForm.GZZName"
|
||||
placeholder="请先选择分标委"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) in GZZOptions"
|
||||
:key="index"
|
||||
:label="item.menuName"
|
||||
:value="item.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<template v-for="(item, index) in hqsqForm.standList">
|
||||
<el-row :gutter="24" :key="index">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准号"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
:prop="item.standNo"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.standNo" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
:prop="item.menuName"
|
||||
>
|
||||
<el-input placeholder="请输入" v-model="item.menuName" />
|
||||
<el-button
|
||||
v-show="index > 0"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
icon="el-icon-minus"
|
||||
@click="removeStand(index)"
|
||||
style="right: 50px !important;"
|
||||
>
|
||||
</el-button>
|
||||
<el-button
|
||||
v-show="index === hqsqForm.standList.length - 1"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
icon="el-icon-plus"
|
||||
@click="addStand"
|
||||
>
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="会议名称"
|
||||
prop="meetingName"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-input v-model="hqsqForm.meetingName" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="参会时间"
|
||||
prop="meetingTime"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="hqsqForm.meetingTime"
|
||||
placeholder="请选择参会时间"
|
||||
clearable
|
||||
:picker-options="pickerOptions"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="会议通知"
|
||||
class="add-form-item"
|
||||
label-width="150px"
|
||||
prop="meetingFile"
|
||||
>
|
||||
<el-input v-model="hqsqForm.meetingFile" v-show="false" />
|
||||
<el-button
|
||||
size="small"
|
||||
@click="clickButtonToUpload"
|
||||
icon="el-icon-upload"
|
||||
class="form-upload-btn"
|
||||
>
|
||||
{{ hqsqForm.meetingFile === 'null' || hqsqForm.meetingFile === '' || hqsqForm.meetingFile == null ? '点击上传' : '查看已上传的文件' }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--审批结果-->
|
||||
<ProcessApprovalHistory
|
||||
:approvalData="approvalHistory"
|
||||
></ProcessApprovalHistory>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
></ProcessFooter>
|
||||
<el-dialog
|
||||
width='400px'
|
||||
:visible.sync="importModalshowflagtemp"
|
||||
title="导入文件"
|
||||
@close="defaultFileList = []"
|
||||
>
|
||||
<el-upload
|
||||
class="customer-upload"
|
||||
multiple
|
||||
drag
|
||||
:on-success="uploadSuccess"
|
||||
:on-remove="removeOneFile"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadPath"
|
||||
name="file"
|
||||
:file-list="defaultFileList"
|
||||
ref="importFileAboutStand">
|
||||
<!-- :show-file-list="showUploadlist"-->
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">点击或拖拽上传文件</div>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
import {completeTask, saveTaskForPub, queryDetail} from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'HqsqStep3',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessFooter,
|
||||
ProcessBaseInfo,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
saveLoading: false,
|
||||
isSubmit: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {},
|
||||
hqsqForm: {
|
||||
FBWName: '', // 分标委名称
|
||||
GZZName: '', // 工作组名称
|
||||
standList: [
|
||||
{
|
||||
menuName: '',
|
||||
standNo: ''
|
||||
}
|
||||
], // 标准list
|
||||
meetingName: '', // 会议名称
|
||||
meetingTime: '', // 参会时间
|
||||
meetingFile: '' // 会议通知
|
||||
},
|
||||
hqsqFormRules: {
|
||||
FBWName: [
|
||||
{ required: true, message: '分标委名称不能为空', trigger: 'change' }
|
||||
],
|
||||
meetingName: [
|
||||
{ required: true, message: '会议名称不能为空', trigger: 'change' }
|
||||
],
|
||||
meetingTime: [
|
||||
{ required: true, message: '参会时间不能为空', trigger: 'change' }
|
||||
],
|
||||
meetingFile: [
|
||||
{ required: true, message: '会议通知不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
importModalshowflagtemp: false,
|
||||
uploadPath: 'api/att/attFile/upload',
|
||||
defaultFileList: [],
|
||||
FBWOptions: [], // 分标委下拉数据
|
||||
GZZOptions: [], // 工作组下拉数据
|
||||
approvalHistory: [], // 审批结果
|
||||
pickerOptions: {
|
||||
disabledDate (time) {
|
||||
return time.getTime() < Date.now() - 8.64e7 // 如果没有后面的-8.64e7就是不可以选择今天的
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击上传按钮
|
||||
clickButtonToUpload () {
|
||||
this.importModalshowflagtemp = true
|
||||
if (this.hqsqForm.meetingFile) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.hqsqForm.meetingFile
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
res.data.map(item => {
|
||||
item.name = item.oldFileName
|
||||
})
|
||||
this.defaultFileList = res.data || []
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
this.defaultFileList = []
|
||||
}
|
||||
},
|
||||
// 上传文件事件
|
||||
uploadSuccess (res, file, fileList) {
|
||||
if (res.ok) {
|
||||
this.$message({
|
||||
message: '文件上传成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.defaultFileList.push(res.data)
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'error'
|
||||
})
|
||||
fileList.pop()
|
||||
}
|
||||
},
|
||||
removeOneFile (file, fileList) {
|
||||
this.defaultFileList.map((item, index) => {
|
||||
if (item.id === file.id) {
|
||||
this.defaultFileList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 文件上传之前的钩子
|
||||
beforeUpload (file) {
|
||||
let filename = file.name
|
||||
let index1 = filename.lastIndexOf('.')
|
||||
let index2 = filename.length
|
||||
let fileSuffix = filename.substring(index1, index2)
|
||||
//把后缀转大写
|
||||
if(fileSuffix !== undefined && fileSuffix !== null){
|
||||
fileSuffix = fileSuffix.toUpperCase()
|
||||
}
|
||||
// 判断上传文件格式
|
||||
if (fileSuffix === '.PDF' || fileSuffix === '.DOC' || fileSuffix === '.DOCX' || fileSuffix === '.PPT'
|
||||
|| fileSuffix === '.PPTX'|| fileSuffix === '.XLS'|| fileSuffix === '.XLSX'
|
||||
|| fileSuffix === '.PNG'|| fileSuffix === '.JPG'|| fileSuffix === '.JPEG') {
|
||||
return true
|
||||
} else {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传pdf、doc、docx、ppt、pptx、xls、xlsx、png、jpg、jpeg等文件')
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size > 200 * 1024 * 1024) {// eslint-disable-line
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hqsqForm: this.hqsqForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['hqsqForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
this.hqsqForm.opinion = ''
|
||||
this.hqsqForm.opinionContent = ''
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
hqsqForm: this.hqsqForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
this.isSubmit = false
|
||||
if (res.success) {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 查询分标委
|
||||
queryFbw () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawss/sarGroupMenu/queryFbw', {}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.FBWOptions = res.data
|
||||
resolve()
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 根据分标委查询工作组
|
||||
FBWChange (val) {
|
||||
this.$http.get('lawss/sarGroupMenu/queryGroup', {
|
||||
fbwId: val
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.hqsqForm.GZZName = ''
|
||||
this.GZZOptions = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 根据工作组查询标准
|
||||
GZZChange (val) {
|
||||
this.$http.get('lawss/sarGroupMenu/queryStand', {
|
||||
groupId: val
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.hqsqForm.standList.map((items, index) => {
|
||||
if (items.id || items.pId) {
|
||||
this.hqsqForm.standList.splice(index, 1)
|
||||
} else if (!items.menuName || !items.standNo) {
|
||||
this.hqsqForm.standList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
res.data.map(item => {
|
||||
this.hqsqForm.standList.push(item)
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击添加标准按钮事件
|
||||
addStand () {
|
||||
// 判断标准是否填写完成
|
||||
let isOk = false
|
||||
for (let i in this.hqsqForm.standList) {
|
||||
if (!this.hqsqForm.standList[i].menuName || !this.hqsqForm.standList[i].standNo) {
|
||||
isOk = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if (isOk) {
|
||||
this.$message.warning('请填写完成标准后在添加')
|
||||
return false
|
||||
}
|
||||
this.hqsqForm.standList.push({
|
||||
menuName: '',
|
||||
standNo: ''
|
||||
})
|
||||
},
|
||||
// 移除标准事件
|
||||
removeStand (index) {
|
||||
this.hqsqForm.standList.splice(index, 1)
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.hqsqForm = mesg.hqsqForm
|
||||
let approvalHistory = mesg.hqsqForm
|
||||
this.approvalHistory.push({
|
||||
approvalUserName: approvalHistory.opinionName, // 审批人
|
||||
auditOpinions: approvalHistory.opinion, // 审批意见
|
||||
auditOpinionsText: approvalHistory.opinionContent, // 意见内容
|
||||
approvalNode: approvalHistory.opinionNode, // 审批人角色
|
||||
approvalTime: approvalHistory.opinionTime // 审批时间
|
||||
})
|
||||
this.loading = false
|
||||
this.queryFbw().then(() => {
|
||||
this.$http.get('lawss/sarGroupMenu/queryGroup', {
|
||||
fbwId: this.hqsqForm.FBWName
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.GZZOptions = res.data
|
||||
}
|
||||
})
|
||||
})
|
||||
this.$refs.hqsqForm.resetFields()
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
defaultFileList (newVal, oldVal) {
|
||||
if (this.importModalshowflagtemp) {
|
||||
let fileId = []
|
||||
newVal.map(item => {
|
||||
fileId.push(item.id)
|
||||
})
|
||||
this.hqsqForm.meetingFile = fileId.join(',')
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo']),
|
||||
userId () {
|
||||
return this.userInfo.userId
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#hqsqStep3{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.hqsqStep3-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
.common-button-primary{
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,103 @@
|
||||
<template>
|
||||
<div id="table-expand">
|
||||
<ul>
|
||||
<li v-for="(item,index) in row.itemsList" :key="index">
|
||||
<span>
|
||||
<Checkbox v-model="item.single" @on-change="(check) => typeClick(check, item, index)"></Checkbox>
|
||||
</span>
|
||||
<span><a @click="focusType3(item, index)">{{item.resNum}}</a></span>
|
||||
<span><a @click="focusType3(item, index)">{{item.resName}}</a></span>
|
||||
<span><Input v-model="item.orgName" style="width: 8vw" @on-focus="focusType(item, index)" readonly></Input></span>
|
||||
<span><Input v-model="item.projectManagerName" style="width: 8vw" @on-focus="focusType2(item, index)" readonly></Input></span>
|
||||
<span><Button type="primary" size="small" @click.native="focusType4(item, index)">查看</Button></span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'table-expand',
|
||||
data () {
|
||||
return {
|
||||
single: false,
|
||||
singleList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* @author liruohao
|
||||
* @date 2019/3/21
|
||||
* @Description:跳页
|
||||
*/
|
||||
showLawsDetails (item) {
|
||||
},
|
||||
typeClick (check, item, index) {
|
||||
this.$emit('singleChange', check, index)
|
||||
},
|
||||
// 数据改变发送给父组件
|
||||
dataChange (value, index, key) {
|
||||
this.$emit('dataChange', value, index, key)
|
||||
},
|
||||
focusType (item, childIndex) {
|
||||
this.$emit('inputType', ['orgName', 'deptName', 'projectManagerName', childIndex])
|
||||
},
|
||||
focusType2 (item, childIndex) {
|
||||
this.$emit('inputType2', ['projectManagerName', 'projectManager', childIndex])
|
||||
},
|
||||
focusType3 (item, childIndex) {
|
||||
this.$emit('inputType3', [item, childIndex])
|
||||
},
|
||||
focusType4 (item, childIndex) {
|
||||
this.$emit('inputType4', [item, childIndex])
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
props: {
|
||||
row: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {
|
||||
},
|
||||
mounted () {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
//@import '~styles/mixins';
|
||||
#table-expand{
|
||||
ul{
|
||||
li{
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
padding-left: 50px;
|
||||
//.flex();
|
||||
&>span{
|
||||
flex: 1;
|
||||
//.flex();
|
||||
word-break:break-all;
|
||||
word-wrap:break-word;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
&:first-child{
|
||||
flex: none;
|
||||
width: 60px;
|
||||
.ivu-checkbox-wrapper{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
&:last-child{
|
||||
flex: none;
|
||||
width: 150px;
|
||||
.ivu-checkbox-wrapper{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,89 @@
|
||||
<template>
|
||||
<div id="table-expand2">
|
||||
<ul>
|
||||
<li v-for="(item,index) in row.itemsList" :key="index">
|
||||
<span>
|
||||
<a @click="focusType2(item, index)">{{item.resNum}}</a>
|
||||
</span>
|
||||
<span>
|
||||
<a @click="focusType2(item, index)">{{item.resName}}</a>
|
||||
</span>
|
||||
<span>
|
||||
<Input v-model="item.orgName" style="width: 8vw" id="" @on-focus="focusType(item, index)" readonly></Input>
|
||||
</span>
|
||||
<span>
|
||||
<Input v-model="item.engineerName" style="width: 8vw" name="" @on-focus="focusType3(item, index)" readonly></Input>
|
||||
</span>
|
||||
<span><Button type="primary" size="small" @click.native="focusType4(item, index)">查看</Button></span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'table-expand2',
|
||||
data () {
|
||||
return {
|
||||
modalTypes: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
focusType (item, childIndex) {
|
||||
this.$emit('inputType', ['orgName', 'deptName', childIndex])
|
||||
},
|
||||
focusType3 (item, childIndex) {
|
||||
this.$emit('inputType3', ['engineerName', 'engineer', childIndex, item])
|
||||
},
|
||||
focusType2 (item, childIndex) {
|
||||
this.$emit('inputType2', [item, childIndex])
|
||||
},
|
||||
focusType4 (item, childIndex) {
|
||||
this.$emit('inputType4', [item, childIndex])
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
props: {
|
||||
row: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted () {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
//@import '~styles/mixins';
|
||||
#table-expand2{
|
||||
ul{
|
||||
li{
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
padding-left: 50px;
|
||||
//.flex();
|
||||
&>span{
|
||||
flex: 1;
|
||||
//.flex();
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
&:last-child{
|
||||
flex: none;
|
||||
width: 150px;
|
||||
.ivu-checkbox-wrapper{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
/*&:first-child{*/
|
||||
/*flex: none;*/
|
||||
/*width: 60px;*/
|
||||
/*.ivu-checkbox-wrapper{*/
|
||||
/*margin-right: 0;*/
|
||||
/*}*/
|
||||
/*}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,111 @@
|
||||
<template>
|
||||
<div id="table-expand4">
|
||||
<ul>
|
||||
<li v-for="(item,index) in row.itemsList" :key="index">
|
||||
<span><a @click="focusType2(item, index)">{{item.resNum}}</a></span>
|
||||
<span><a @click="focusType2(item, index)">{{item.resName}}</a></span>
|
||||
<span>
|
||||
<Select v-model="item.resResult" :transfer="transfer" @on-change="(value) => dataChange(value, index, 'resResult')" style="width: 8vw">
|
||||
<Option v-for="item in resResultList" :value="item.value" :key="item.value" class="ivu-select-item " style="margin-top: 0;padding-left: 0;display: block;text-align: center">{{ item.label }}</Option>
|
||||
</Select>
|
||||
</span>
|
||||
<!--<span><Input v-model="item.proveMaterial" readonly @on-blur="dataChange(item.proveMaterial, index, 'proveMaterial')" style="width: 8vw"></Input></span>-->
|
||||
<span>
|
||||
<Input v-model="item.proveMaterial" readonly @click.native="focusType3(item, index, 'proveMaterial')" placeholder="最多输入1000字" style="width: 8vw" />
|
||||
</span>
|
||||
<!--<span><Input v-model="item.reasonExplain" readonly @on-blur="dataChange(item.reasonExplain, index, 'reasonExplain')" style="width: 8vw"></Input></span>-->
|
||||
<span><Input v-model="item.reasonExplain" readonly placeholder="最多输入1000字" @click.native = "focusType4(item, index, 'reasonExplain')" style="width: 8vw" /></span>
|
||||
<span><Button type="primary" size="small" @click.native="focusType5(item, index)">查看</Button></span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'table-expand4',
|
||||
data () {
|
||||
return {
|
||||
modalTypes: '',
|
||||
transfer: true,
|
||||
resResultList: [{
|
||||
value: 1,
|
||||
label: '符合'
|
||||
}, {
|
||||
value: 0,
|
||||
label: '不符合'
|
||||
}]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 数据改变发送给父组件
|
||||
dataChange (value, index, key) {
|
||||
this.$emit('dataChange', value, index, key)
|
||||
},
|
||||
focusType2 (value, index, key) {
|
||||
this.$emit('inputType2', [value, index, key])
|
||||
},
|
||||
focusType3 (value, index, key) {
|
||||
this.$emit('inputType3', [value, index, key])
|
||||
},
|
||||
focusType4 (value, index, key) {
|
||||
this.$emit('inputType4', [value, index, key])
|
||||
},
|
||||
focusType5 (item, childIndex) {
|
||||
this.$emit('inputType5', [item, childIndex])
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
props: {
|
||||
row: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted () {
|
||||
/* for (let i = 0; i < this.row.itemsList.length; i++) {
|
||||
for (let j in this.row.itemsList[i]) {
|
||||
if (j === 'proveMaterial' || j === 'reasonExplain') {
|
||||
this.row.itemsList[i][j] = (this.row.itemsList[i][j] === '' || this.row.itemsList[i][j] === null) ? '' : this.row.itemsList[i][j].replace(/<br \/>/g, '\r\n')
|
||||
this.row.itemsList[i][j] = (this.row.itemsList[i][j] === '' || this.row.itemsList[i][j] === null) ? '' : this.row.itemsList[i][j].replace(/<br \/>/g, '\n')
|
||||
}
|
||||
}
|
||||
} */
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
//@import '~styles/mixins';
|
||||
#table-expand4 {
|
||||
ul {
|
||||
li {
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
padding-left: 50px;
|
||||
//.flex();
|
||||
& > span {
|
||||
flex: 1;
|
||||
//.flex();
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
&:last-child{
|
||||
flex: none;
|
||||
width: 150px;
|
||||
.ivu-checkbox-wrapper{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
/*&:first-child{*/
|
||||
/*flex: none;*/
|
||||
/*width: 60px;*/
|
||||
/*.ivu-checkbox-wrapper{*/
|
||||
/*margin-right: 0;*/
|
||||
/*}*/
|
||||
/*}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,110 @@
|
||||
<template>
|
||||
<div id="table-expand5">
|
||||
<ul>
|
||||
<li v-for="(item,index) in row.itemsList" :key="index">
|
||||
<span>
|
||||
<a @click="focusType2(item, index)">{{item.resNum}}</a>
|
||||
</span>
|
||||
<span>
|
||||
<a @click="focusType2(item, index)">{{item.resName}}</a>
|
||||
</span>
|
||||
<span>
|
||||
<Input v-model="item.orgName" style="width: 8vw;" @on-focus="focusType(item, index)" readonly></Input>
|
||||
</span>
|
||||
<span>
|
||||
<Input v-model="item.office" @on-blur="dataChange(item.office, index, 'office')" style="width: 8vw" readonly></Input>
|
||||
</span>
|
||||
<span>
|
||||
<Input v-model="item.engineerName" style="width: 8vw" @on-focus="focusType3(item, index)" readonly></Input>
|
||||
</span>
|
||||
<span>
|
||||
<Select v-model="item.isAgree" :transfer="transfer" @on-change="(value) => dataChange(value, index, 'isAgree')" style="width:8vw" :class="{'colorOption': item.isAgree === 0}">
|
||||
<Option v-for="item in isAgreeList" :value="item.value" :key="item.value" class="ivu-select-item " style="margin-top: 0;padding-left: 0;display: block;text-align: center">{{ item.label }}</Option>
|
||||
</Select>
|
||||
</span>
|
||||
<span>
|
||||
<Button type="primary" size="small" @click.native="focusType4(item, index)" style="margin-right: 5px">查看</Button>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'table-expand5',
|
||||
data () {
|
||||
return {
|
||||
transfer: true,
|
||||
colonFlag: false,
|
||||
modalTypes: '',
|
||||
isAgreeList: [{
|
||||
value: 1,
|
||||
label: '同意'
|
||||
}, {
|
||||
value: 0,
|
||||
label: '不同意'
|
||||
}]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
focusType (item, childIndex) {
|
||||
this.$emit('inputType', ['orgName', 'deptName', childIndex])
|
||||
},
|
||||
focusType2 (value, index, key) {
|
||||
this.$emit('inputType2', [value, index, key])
|
||||
},
|
||||
focusType3 (item, childIndex) {
|
||||
this.$emit('inputType3', ['engineerName', 'engineer', childIndex])
|
||||
},
|
||||
// 数据改变发送给父组件
|
||||
dataChange (value, index, key) {
|
||||
if (!value) {
|
||||
this.colonFlag = true
|
||||
} else {
|
||||
this.colonFlag = false
|
||||
}
|
||||
this.$emit('dataChange', value, index, key)
|
||||
},
|
||||
focusType4 (item, childIndex) {
|
||||
this.$emit('inputType4', [item, childIndex])
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
props: {
|
||||
row: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted () {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
//@import '~styles/mixins';
|
||||
#table-expand5{
|
||||
ul{
|
||||
li{
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
padding-left: 50px;
|
||||
//.flex();
|
||||
&>span{
|
||||
flex: 1;
|
||||
//.flex();
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.colorOption{
|
||||
.ivu-select-selected-value{
|
||||
color: red;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,121 @@
|
||||
<template>
|
||||
<div id="table-expand6">
|
||||
<ul class="tableUl">
|
||||
<li v-for="(item,index) in row.itemsList" :key="index">
|
||||
<span>
|
||||
<a @click="focusType2(item, index)">{{item.resNum}}</a>
|
||||
</span>
|
||||
<span>
|
||||
<a @click="focusType2(item, index)">{{item.resName}}</a>
|
||||
</span>
|
||||
<span>
|
||||
<Input v-model="item.orgName" style="width: 8vw; margin-left: 15px" @on-focus="focusType(item, index)" readonly></Input>
|
||||
</span>
|
||||
<span>
|
||||
<Input v-model="item.engineerName" style="width: 8vw" @on-focus="focusType3(item, index)" readonly></Input>
|
||||
</span>
|
||||
<span>
|
||||
<!--<Select v-model="item.resResult" @on-change="(value) => dataChange(value, index, 'resResult')" style="width:150px" readonly>-->
|
||||
<!--<Option v-for="item in resResultList" :value="item.value" :key="item.value" class="ivu-select-item " style="margin-top: 0;padding-left: 0;display: block" >{{ item.label }}</Option>-->
|
||||
<!--</Select>-->
|
||||
<!--<search-select v-model="item.resResultList" :options="resResultList" @on-change="(value) => dataChange(value, index, 'resResult')" style="width:150px" readonly/>-->
|
||||
<Input v-model="item.resResult" style="width: 8vw" readonly></Input>
|
||||
</span>
|
||||
<span>
|
||||
<Input v-model="item.proveMaterial" @on-blur="dataChange(item.proveMaterial, index, 'proveMaterial')" style="width: 8vw" readonly></Input>
|
||||
</span>
|
||||
<span>
|
||||
<Input v-model="item.reasonExplain" @on-blur="dataChange(item.reasonExplain, index, 'reasonExplain')" style="width: 8vw" readonly></Input>
|
||||
</span>
|
||||
<span><Button type="primary" size="small" @click.native="focusType5(item, index)">查看</Button></span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'table-expand6',
|
||||
data () {
|
||||
return {
|
||||
modalTypes: '',
|
||||
resResultList: [{
|
||||
value: 1,
|
||||
label: '符合'
|
||||
}, {
|
||||
value: 0,
|
||||
label: '不符合'
|
||||
}]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
focusType (item, childIndex) {
|
||||
this.$emit('inputType', ['orgName', 'deptName', childIndex])
|
||||
},
|
||||
focusType2 (value, index, key) {
|
||||
this.$emit('inputType2', [value, index, key])
|
||||
},
|
||||
focusType3 (item, childIndex) {
|
||||
this.$emit('inputType3', ['engineerName', 'engineer', childIndex])
|
||||
},
|
||||
focusType5 (item, childIndex) {
|
||||
this.$emit('inputType5', [item, childIndex])
|
||||
},
|
||||
// 数据改变发送给父组件
|
||||
dataChange (value, index, key) {
|
||||
this.$emit('dataChange', value, index, key)
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
props: {
|
||||
row: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted () {
|
||||
for (let i = 0; i < this.row.itemsList.length; i++) {
|
||||
if (this.row.itemsList[i].resResult === 0) {
|
||||
this.row.itemsList[i].resResult = '不符合'
|
||||
} else if (this.row.itemsList[i].resResult === 1) {
|
||||
this.row.itemsList[i].resResult = '符合'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
//@import '~styles/mixins';
|
||||
#table-expand6{
|
||||
ul{
|
||||
li{
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
padding-left: 50px;
|
||||
//.flex();
|
||||
&>span{
|
||||
flex: 1;
|
||||
//.flex();
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
&:last-child{
|
||||
flex: none;
|
||||
width: 100px;
|
||||
.ivu-checkbox-wrapper{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
/*&:first-child{*/
|
||||
/*flex: none;*/
|
||||
/*width: 60px;*/
|
||||
/*.ivu-checkbox-wrapper{*/
|
||||
/*margin-right: 0;*/
|
||||
/*}*/
|
||||
/*}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,951 @@
|
||||
<template>
|
||||
<div id="process3">
|
||||
<div class="process-content">
|
||||
<div class="back" title="返回流程中心" @click="back">
|
||||
<i class="el-icon-back"></i>
|
||||
</div>
|
||||
<span class="process-title">流程中心 —— {{ processTitle }}<a v-if="processForm.type !== ''">({{
|
||||
processName
|
||||
}})</a></span>
|
||||
</div>
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form inline :model="processForm" ref="processForm" class="label-input-form">
|
||||
<!--<el-form-item label="流程编号" prop="processNum" class="search-item">-->
|
||||
<!--<el-input v-model="processForm.processNum" disabled />-->
|
||||
<!--</el-form-item>-->
|
||||
<el-form-item label="流程类型" prop="type" class="search-item">
|
||||
<el-select
|
||||
v-model="processForm.type"
|
||||
placeholder="请选择"
|
||||
filterable
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="item in processTypeList"
|
||||
:value="item.value"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" prop="processRealName" class="search-item">
|
||||
<el-input v-model="processForm.processRealName" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="截止时间" prop="deadline" class="search-item">
|
||||
<el-datePicker v-model="processForm.deadline"
|
||||
:editable="false"
|
||||
placeholder="请选择日期"></el-datePicker>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程描述" prop="describe" class="search-item">
|
||||
<el-input v-model="processForm.describe" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form inline :model="standForm" ref="standForm" class="label-input-form">
|
||||
<el-form-item label="数据来源" prop="dataSources" class="search-item">
|
||||
<el-select
|
||||
v-model="standForm.dataSources"
|
||||
placeholder="请选择"
|
||||
>
|
||||
<el-option value="INLAND" label="国内标准法规"></el-option>
|
||||
<el-option value="FOREIGN" label="海外标准法规"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="标准号" prop="standNumber" class="search-item">
|
||||
<el-input v-model="standForm.standNumber" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="标准名称" prop="standName" class="search-item">
|
||||
<el-input v-model="standForm.standName" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="文本状态" prop="standState" class="search-item">
|
||||
<el-select v-model="standForm.standState"
|
||||
placeholder="请选择标准状态"
|
||||
clearable>
|
||||
<el-option v-for="opt in standStateOptions" :key="opt.value" :value="opt.value === undefined ? '' :opt.value" :label="opt.label">{{ opt.label }}
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
@click="standSearch">
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-refresh-left"
|
||||
round
|
||||
@click="standClear"></el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-divider content-position="left">属性及文本附件</el-divider>
|
||||
<!--属性及文本附件table-->
|
||||
<el-table
|
||||
ref="standTable"
|
||||
:data="standTableList"
|
||||
border
|
||||
style="width: 100%;"
|
||||
height="300px"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="standTableSelect">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="标准号">
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.standYear">{{ scope.row.standSortShow }} {{ scope.row.standNumber }}-{{ scope.row.standYear }}</a>
|
||||
<a v-else>{{ scope.row.standSortShow }} {{ scope.row.standNumber }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standName"
|
||||
label="标准名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standStateShow"
|
||||
label="文本状态">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="issueTime"
|
||||
label="发布日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="putTime"
|
||||
label="标准实施日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productPutTime"
|
||||
label="在产车实施日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="newCarPutTime"
|
||||
label="新车型实施日期">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form inline :model="typeProject" ref="typeProject" class="label-input-form">
|
||||
<el-form-item label="适用车辆型号" prop="productSet" class="search-item">
|
||||
<el-input v-model="typeProject.productSet" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
@click="typeProjectSearch">
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
icon="el-icon-refresh-left"
|
||||
round
|
||||
@click="typeProjectClear"></el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-divider content-position="left">车型项目信息</el-divider>
|
||||
<el-table
|
||||
ref="typeProjectTable"
|
||||
:data="typeProjectTableList"
|
||||
border
|
||||
style="width: 100%;"
|
||||
height="300px"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="typeProjectTableSelect">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productName"
|
||||
label="项目名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productSet"
|
||||
label="车辆类别">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="sopTime"
|
||||
label="SOP日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="eopTime"
|
||||
label="计划EOP日期">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="content" v-show="isTaskDistribution">
|
||||
<el-divider content-position="left">任务分发</el-divider>
|
||||
<template v-for="(item, index) in taskDistribution">
|
||||
<h5 :key="index + 1">{{ item.productName }}</h5>
|
||||
<el-table
|
||||
:key="index"
|
||||
ref="Table"
|
||||
:data="item.children"
|
||||
border
|
||||
row-key="resId"
|
||||
default-expand-all
|
||||
style="width: 100%; padding-bottom: 15px;"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
:tree-props="{children: 'itemsList'}">
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="resNum"
|
||||
label="标准号/条目号">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="resName"
|
||||
label="标准名称/条目名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="责任部门">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-if="scope.row.isTree || typeof(scope.row.isTree) === 'undefined'"
|
||||
v-model="scope.row.deptName"
|
||||
placeholder="请选择部门"
|
||||
readonly
|
||||
@click.native="handleVisibleDept(index, scope.row.resId, scope.row.isTree)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="VSE">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
v-if="scope.row.isTree || typeof(scope.row.isTree) === 'undefined'"
|
||||
v-model="scope.row.VSEName"
|
||||
placeholder="请选择人员"
|
||||
readonly
|
||||
@click.native="handleVisiblePerson(index, scope.row.resId, scope.row.isTree, scope.row.zNodes)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="评估状态">
|
||||
<template slot-scope="scope">
|
||||
<span>未评估</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" @click="submitProcess" :loading="isSubmit">提交</el-button>
|
||||
<!--<el-button round class="common-button-default" icon="el-icon-close" @click="resetForm">取消</el-button>-->
|
||||
</div>
|
||||
<!--标准库dialog-->
|
||||
<el-drawer
|
||||
size="1000px"
|
||||
:visible.sync="standDialog"
|
||||
title="选择标准"
|
||||
>
|
||||
<div class="container">
|
||||
<el-table
|
||||
ref="standTableDialog"
|
||||
:data="standTableListDialog"
|
||||
border
|
||||
style="width: 100%;"
|
||||
height="100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="standTableSelectDialog">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="标准号">
|
||||
<template slot-scope="scope">
|
||||
<a v-if="scope.row.standYear">{{ scope.row.standSortShow }} {{ scope.row.standNumber }}-{{ scope.row.standYear }}</a>
|
||||
<a v-else>{{ scope.row.standSortShow }} {{ scope.row.standNumber }}</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standName"
|
||||
label="标准名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standStateShow"
|
||||
label="文本状态">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="issueTime"
|
||||
label="发布日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="putTime"
|
||||
label="标准实施日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productPutTime"
|
||||
label="在产车实施日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="newCarPutTime"
|
||||
label="新车型实施日期">
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="230">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
class="opera-btn"
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="handlePreview(scope.row)">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<pagination :page="standForm.page" :total="standTableTotal"
|
||||
@pageChange="standTablePageChange" @pageSizeChange="standTablePageSizeChange"></pagination>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button round class="common-button-default" icon="el-icon-check" @click="standDialog = false">取消</el-button>
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-close" @click="standDialogOk">确定</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!--项目库dialog-->
|
||||
<el-drawer
|
||||
size="1000px"
|
||||
:visible.sync="typeProjectDialog"
|
||||
title="选择项目"
|
||||
>
|
||||
<div class="container">
|
||||
<el-table
|
||||
ref="typeProjectTableDialog"
|
||||
:data="typeProjectTableListDialog"
|
||||
border
|
||||
style="width: 100%;"
|
||||
height="100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="typeProjectTableDialogSelect">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productName"
|
||||
label="项目名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productSet"
|
||||
label="车辆类别">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="sopTime"
|
||||
label="SOP日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="eopTime"
|
||||
label="计划EOP日期">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<pagination :page="typeProject.page" :total="typeProjectTableTotal"
|
||||
@pageChange="typeProjectTablePageChange" @pageSizeChange="typeProjectTablePageSizeChange"></pagination>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button round class="common-button-default" icon="el-icon-check" @click="typeProjectDialog = false">取消</el-button>
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-close" @click="typeProjectOk">确定</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 组织机构树 -->
|
||||
<el-drawer
|
||||
title="组织结构"
|
||||
:visible.sync="isTreeDrawer">
|
||||
<laws-tree
|
||||
v-if="checkType === 'dept' && isTreeDrawer"
|
||||
:zNodes="depNode"
|
||||
deptSelect
|
||||
treeDivId="deptTreeOrg"
|
||||
@treeDblClick="(treeId, treeNode) => treeDbOrgTree(treeId, treeNode)"
|
||||
:editable="false"
|
||||
ref="depTreeAuth"
|
||||
class="ztree" style="height: 300px;overflow: auto">
|
||||
</laws-tree>
|
||||
<laws-tree
|
||||
v-if="checkType === 'person' && isTreeDrawer"
|
||||
:zNodes="personZNodes"
|
||||
personCheck
|
||||
treeDivId="deptTreeUser"
|
||||
@treeDblClick="(treeId, treeNode) => handleTaskTreeDblClick(treeId, treeNode)"
|
||||
:editable="false"
|
||||
ref="depTreeAuth"
|
||||
class="ztree" style="height: 300px;overflow: auto">
|
||||
</laws-tree>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import {startProcess, completeTask} from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'process3',
|
||||
props: {
|
||||
// processForm: {
|
||||
// type: Object
|
||||
// },
|
||||
// processTypeList: {
|
||||
// type: Array
|
||||
// },
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
processTitle: this.$route.query.processTitle,
|
||||
processName: this.$route.query.processName,
|
||||
// 流程基本信息
|
||||
processForm: {
|
||||
processNum: '', // 流程编号
|
||||
type: '', // 流程类型
|
||||
describe: '', // 流程描述
|
||||
processRealName: '', // 流程名称
|
||||
deadline: '' // 截止时间
|
||||
},
|
||||
// 查询标准form字段
|
||||
standForm: {
|
||||
dataSources: 'INLAND', // 资料类型
|
||||
standNumber: '', // 标准号
|
||||
standName: '', // 标准名称
|
||||
standState: '', // 文本状态
|
||||
validFlag: 0,
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent
|
||||
},
|
||||
loading: false,
|
||||
standStateOptions: [], // 文本状态下拉框数据
|
||||
// 车型项目form字段
|
||||
typeProject: {
|
||||
productSet: '', // 车辆类型
|
||||
validFlag: 0,
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent
|
||||
},
|
||||
vehicleTypeOptions: [], // 车辆类型下拉框数据
|
||||
// 类型列表
|
||||
processTypeList: [
|
||||
{
|
||||
label: '法规入库及评估流程',
|
||||
value: '1'
|
||||
}, {
|
||||
label: '法规技术评估流程',
|
||||
value: '2'
|
||||
},
|
||||
{
|
||||
label: '项目评估流程',
|
||||
value: '3'
|
||||
}
|
||||
],
|
||||
// 车型项目table字段
|
||||
typeProjectTableList: [],
|
||||
typeProjectTableSelectedList: [],
|
||||
typeProjectTableTotal: 0,
|
||||
typeProjectTableListDialog: [],
|
||||
typeProjectTableSelectedDialogList: [],
|
||||
// 标准法规table字段
|
||||
standTableList: [],
|
||||
standTableSelectedList: [],
|
||||
standTableTotal: 0,
|
||||
standTableListDialog: [],
|
||||
standTableSelectedDialogList: [],
|
||||
// 任务分发 字段
|
||||
taskDistribution: [],
|
||||
isTaskDistribution: false,
|
||||
isSubmit: false,
|
||||
depNode: [], // 部门树
|
||||
standDialog: false, // 标准dialog
|
||||
typeProjectDialog: false, // 项目dialog
|
||||
// 分解单选取树类型(dept选取部门/person选取人员)
|
||||
checkType: '',
|
||||
isParent: '',
|
||||
setObj: {},
|
||||
personZNodes: [],
|
||||
isTreeDrawer: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 查询标准table
|
||||
standSearch () {
|
||||
this.standDialog = true
|
||||
this.$http.get('lawss/sarStandardsInfo/getSarStandardsInfoPage', this.standForm, {
|
||||
_this: this, loading: 'loading'
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.standTableListDialog = res.data.list
|
||||
this.standTableTotal = res.data.count
|
||||
}
|
||||
})
|
||||
},
|
||||
// 查询标准清空
|
||||
standClear () {
|
||||
this.standForm.dataSources = 'INLAND' // 资料类型
|
||||
this.standForm.standNumber = '' // 标准号
|
||||
this.standForm.standName = '' // 标准名称
|
||||
this.standForm.standState = '' // 文本状态
|
||||
this.standForm.page = 1
|
||||
this.standSearch()
|
||||
},
|
||||
// 查询车型项目table
|
||||
typeProjectSearch () {
|
||||
this.typeProjectDialog = true
|
||||
this.$http.get('lawss/sarProductInfo/getProductInfoPage', this.typeProject, {
|
||||
_this: this, loading: 'loading'
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.typeProjectTableListDialog = res.data.list
|
||||
this.typeProjectTableTotal = res.data.count
|
||||
}
|
||||
})
|
||||
},
|
||||
// 查询车型项目清空
|
||||
typeProjectClear () {
|
||||
this.typeProject.productSet = ''
|
||||
this.typeProject.page = 1
|
||||
this.typeProjectSearch()
|
||||
},
|
||||
// 标准库分页事件
|
||||
standTablePageChange (page) {
|
||||
this.standForm.page = page
|
||||
this.standSearch()
|
||||
},
|
||||
standTablePageSizeChange (pageSize) {
|
||||
this.standForm.pageSize = this.$store.getters.userInfo.configContent
|
||||
this.standSearch()
|
||||
},
|
||||
// 标准库table选中事件
|
||||
// 标准选择一条,项目可以多选,标准选择多条,项目只能选择一条,反之一样
|
||||
standTableSelect (selected) {
|
||||
this.standTableSelectedList = selected
|
||||
if (this.standTableSelectedList.length > 1 && this.typeProjectTableSelectedList.length > 1) {
|
||||
this.standTableSelectedList = []
|
||||
this.$refs.standTable.clearSelection()
|
||||
this.taskDistribution = []
|
||||
this.isTaskDistribution = false
|
||||
this.$message.warning('项目库选中多条数据时,标准库只能选择一条数据')
|
||||
} else {
|
||||
if (this.standTableSelectedList.length > 0 && this.typeProjectTableSelectedList.length > 0) {
|
||||
this.taskDistribution = []
|
||||
Promise.all([this.getEntry(this.standTableSelectedList)]).then((values) => {
|
||||
this.typeProjectTableSelectedList.map(typeItem => {
|
||||
typeItem.children = []
|
||||
values[0].map(standItem => {
|
||||
if (standItem.itemsList !== null && standItem.itemsList.length > 0) {
|
||||
standItem.isTree = false
|
||||
} else {
|
||||
standItem.isTree = true
|
||||
}
|
||||
typeItem.children.push(standItem)
|
||||
})
|
||||
this.taskDistribution.push(typeItem)
|
||||
})
|
||||
this.isTaskDistribution = true
|
||||
})
|
||||
} else {
|
||||
this.isTaskDistribution = false
|
||||
}
|
||||
}
|
||||
},
|
||||
// 项目库table选中事件
|
||||
// 标准选择一条,项目可以多选,标准选择多条,项目只能选择一条,反之一样
|
||||
typeProjectTableSelect (selected) {
|
||||
this.typeProjectTableSelectedList = selected
|
||||
if (this.standTableSelectedList.length > 1 && this.typeProjectTableSelectedList.length > 1) {
|
||||
this.typeProjectTableSelectedList = []
|
||||
this.$refs.typeProjectTable.clearSelection()
|
||||
this.taskDistribution = []
|
||||
this.isTaskDistribution = false
|
||||
this.$message.warning('标准库选中多条数据时,项目库只能选择一条数据')
|
||||
} else {
|
||||
if (this.standTableSelectedList.length > 0 && this.typeProjectTableSelectedList.length > 0) {
|
||||
this.taskDistribution = []
|
||||
Promise.all([this.getEntry(this.standTableSelectedList)]).then((values) => {
|
||||
this.typeProjectTableSelectedList.map(typeItem => {
|
||||
typeItem.children = []
|
||||
values[0].map(standItem => {
|
||||
if (standItem.itemsList !== null && standItem.itemsList.length > 0) {
|
||||
standItem.isTree = false
|
||||
} else {
|
||||
standItem.isTree = true
|
||||
}
|
||||
typeItem.children.push(standItem)
|
||||
})
|
||||
this.taskDistribution.push(typeItem)
|
||||
})
|
||||
this.isTaskDistribution = true
|
||||
})
|
||||
} else {
|
||||
this.isTaskDistribution = false
|
||||
}
|
||||
}
|
||||
},
|
||||
// 请求条目
|
||||
getEntry (list) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let ids = []
|
||||
list.map(item => {
|
||||
ids.push(item.id)
|
||||
})
|
||||
this.$http.get('lawss/sarStandardsInfo/getSarStandAndItems', {
|
||||
ids: ids.join(',')
|
||||
}, {
|
||||
_this: this,
|
||||
loading: 'loading'
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject(res.message)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
// 项目库分页事件
|
||||
typeProjectTablePageChange (page) {
|
||||
this.typeProject.page = page
|
||||
this.typeProjectSearch()
|
||||
},
|
||||
typeProjectTablePageSizeChange (pageSize) {
|
||||
this.typeProject.pageSize = this.$store.getters.userInfo.configContent
|
||||
this.typeProjectSearch()
|
||||
},
|
||||
// 双击选择部门
|
||||
treeDbOrgTree (treeId, treeNode) {
|
||||
Promise.all([this.projectManagerClick(treeNode.id, [])]).then((zNodes) => {
|
||||
let index = this.setObj.index
|
||||
let id = this.setObj.id
|
||||
// 判断是里面条目点击还是外面条目
|
||||
if (this.isParent) {
|
||||
this.taskDistribution[index].children.map((item, childIndex) => {
|
||||
if (item.resId === id) {
|
||||
this.taskDistribution[index].children[childIndex].deptName = treeNode.name
|
||||
this.taskDistribution[index].children[childIndex].deptId = treeNode.id
|
||||
this.taskDistribution[index].children[childIndex].zNodes = zNodes[0]
|
||||
this.$set(this.taskDistribution[index].children, childIndex, this.taskDistribution[index].children[childIndex])
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.taskDistribution[index].children.map((item, childIndex) => {
|
||||
item.itemsList.map((items, itemsIndex) => {
|
||||
if (items.resId === id) {
|
||||
this.taskDistribution[index].children[childIndex].itemsList[itemsIndex].deptName = treeNode.name
|
||||
this.taskDistribution[index].children[childIndex].itemsList[itemsIndex].deptId = treeNode.id
|
||||
this.taskDistribution[index].children[childIndex].itemsList[itemsIndex].zNodes = zNodes[0]
|
||||
// 赋值责任部门
|
||||
this.$set(this.taskDistribution[index].children[childIndex].itemsList, itemsIndex, this.taskDistribution[index].children[childIndex].itemsList[itemsIndex])
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
this.isTreeDrawer = false
|
||||
})
|
||||
},
|
||||
projectManagerClick (id, treeNodeList) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('sys/org/getTreeByRoleAndOrgId1', {
|
||||
roleName: 'VSE',
|
||||
orgId: id,
|
||||
processFlag: '1'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
res.data.list = res.data.list || []
|
||||
if (res.data.list.length !== 0) {
|
||||
for (let i = 0; i < res.data.list.length; i++) {
|
||||
let obj = {}
|
||||
for (let key in res.data.list[i]) {
|
||||
if (key === 'usId') {
|
||||
obj.id = res.data.list[i][key]
|
||||
} else if (key === 'userName') {
|
||||
obj.name = res.data.list[i][key]
|
||||
} else {
|
||||
obj.icon = 'static/images/user.png'
|
||||
obj.isParent = false
|
||||
obj[key] = res.data.list[i][key]
|
||||
}
|
||||
}
|
||||
treeNodeList.push(obj)
|
||||
}
|
||||
resolve(treeNodeList)
|
||||
} else {
|
||||
resolve(treeNodeList)
|
||||
}
|
||||
} else {
|
||||
reject(res.message)
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 双击选择VSE
|
||||
handleTaskTreeDblClick (treeId, treeNode) {
|
||||
let index = this.setObj.index
|
||||
let id = this.setObj.id
|
||||
// 判断是里面条目点击还是外面条目
|
||||
if (this.isParent) {
|
||||
this.taskDistribution[index].children.map((item, childIndex) => {
|
||||
if (item.resId === id) {
|
||||
this.taskDistribution[index].children[childIndex].VSEName = treeNode.name
|
||||
this.taskDistribution[index].children[childIndex].VSEId = treeNode.id
|
||||
this.$set(this.taskDistribution[index].children, childIndex, this.taskDistribution[index].children[childIndex])
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.taskDistribution[index].children.map((item, childIndex) => {
|
||||
item.itemsList.map((items, itemsIndex) => {
|
||||
if (items.resId === id) {
|
||||
this.taskDistribution[index].children[childIndex].itemsList[itemsIndex].VSEName = treeNode.name
|
||||
this.taskDistribution[index].children[childIndex].itemsList[itemsIndex].VSEId = treeNode.id
|
||||
// 赋值责任部门
|
||||
this.$set(this.taskDistribution[index].children[childIndex].itemsList, itemsIndex, this.taskDistribution[index].children[childIndex].itemsList[itemsIndex])
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
this.isTreeDrawer = false
|
||||
},
|
||||
/**
|
||||
* @description: 流程开启
|
||||
* @date: 2020-11-12 10:23:50
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
startProcess () {
|
||||
return new Promise((resolve, reject) => {
|
||||
startProcess({
|
||||
type: 3
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
})
|
||||
},
|
||||
// 流程提交
|
||||
submitProcess () {
|
||||
this.isSubmit = true
|
||||
this.startProcess().then(taskId => {
|
||||
console.log(JSON.stringify({
|
||||
processForm: this.processForm,
|
||||
standTableList: this.standTableList,
|
||||
typeProjectTableList: this.typeProjectTableList,
|
||||
taskDistribution: this.taskDistribution
|
||||
}))
|
||||
console.log(JSON.parse(JSON.stringify({
|
||||
processForm: this.processForm,
|
||||
standTableList: this.standTableList,
|
||||
typeProjectTableList: this.typeProjectTableList,
|
||||
taskDistribution: this.taskDistribution
|
||||
})))
|
||||
completeTask({
|
||||
taskId,
|
||||
userId: this.userId,
|
||||
json: JSON.stringify({
|
||||
processForm: this.processForm,
|
||||
standTableList: this.standTableList,
|
||||
typeProjectTableList: this.typeProjectTableList,
|
||||
taskDistribution: this.taskDistribution
|
||||
})
|
||||
}).then(res => {
|
||||
this.isSubmit = false
|
||||
if (res.ok) {
|
||||
this.$message.success('流程发起成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
})
|
||||
},
|
||||
// 请求部门结构树
|
||||
getOrgTreeSource () {
|
||||
this.$http.get('sys/org/getTree', {}, {_this: this},
|
||||
res => {
|
||||
if (res.ok) {
|
||||
let treeNode = []
|
||||
res.data.map((item, index) => {
|
||||
let treeItem = {}
|
||||
for (let key in item) {
|
||||
if (key === 'orgName') {
|
||||
treeItem.name = item[key]
|
||||
} else {
|
||||
treeItem[key] = item[key]
|
||||
}
|
||||
}
|
||||
treeNode[index] = treeItem
|
||||
})
|
||||
this.depNode = treeNode
|
||||
}
|
||||
})
|
||||
},
|
||||
// 标准库dialog选择事件
|
||||
standTableSelectDialog (selected) {
|
||||
this.standTableSelectedDialogList = selected
|
||||
},
|
||||
// 标准库dialog确定事件
|
||||
standDialogOk () {
|
||||
if (this.standTableSelectedDialogList.length > 0) {
|
||||
this.standTableList = this.standTableSelectedDialogList
|
||||
} else {
|
||||
this.standTableList = []
|
||||
}
|
||||
this.standDialog = false
|
||||
},
|
||||
// 项目库dialog选择事件
|
||||
typeProjectTableDialogSelect (selected) {
|
||||
this.typeProjectTableSelectedDialogList = selected
|
||||
},
|
||||
// 项目库dialog确定事件
|
||||
typeProjectOk () {
|
||||
if (this.typeProjectTableSelectedDialogList.length > 0) {
|
||||
this.typeProjectTableList = this.typeProjectTableSelectedDialogList
|
||||
} else {
|
||||
this.typeProjectTableList = []
|
||||
}
|
||||
this.typeProjectDialog = false
|
||||
},
|
||||
// 点击查看
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherBussStandardDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'BUSINESS_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
/**
|
||||
* @description: 打开选择部门drawer
|
||||
* @date: 2020-11-10 22:52:41
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleVisibleDept (index, id, isParent) {
|
||||
this.checkType = 'dept'
|
||||
this.isParent = typeof isParent === 'undefined' ? false : isParent
|
||||
this.setObj = {
|
||||
index: index,
|
||||
id: id
|
||||
}
|
||||
this.isTreeDrawer = true
|
||||
},
|
||||
// 打开选择人员drawer
|
||||
handleVisiblePerson (index, id, isParent, zNodes) {
|
||||
this.checkType = 'person'
|
||||
this.isParent = typeof isParent === 'undefined' ? false : isParent
|
||||
this.setObj = {
|
||||
index: index,
|
||||
id: id
|
||||
}
|
||||
this.isTreeDrawer = true
|
||||
this.personZNodes = zNodes || []
|
||||
},
|
||||
back () {
|
||||
this.$router.push('/processCenter')
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo']),
|
||||
userId () {
|
||||
return this.userInfo.userId
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
let processForm = JSON.parse(this.$route.query.processForm)
|
||||
processForm.modelDataSource = '0'
|
||||
processForm.dataSources = 'INLAND' // 数据来源
|
||||
this.processForm = processForm
|
||||
// 从数据库中查询各下拉框数据
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.standStateOptions = res.data.STANDSTATE // 文本状态
|
||||
this.vehicleTypeOptions = res.data.PRODUCTTYPE // 车辆类型
|
||||
}, e => {
|
||||
})
|
||||
this.getOrgTreeSource()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
#process3{
|
||||
height: 100%;
|
||||
.process-content {
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
padding: 10px;
|
||||
background: #ffffff;
|
||||
.process-title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
display: inline-block;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
}
|
||||
}
|
||||
.content{
|
||||
.el-divider{
|
||||
margin: 0;
|
||||
padding: 15px 0;
|
||||
background: #ffffff;
|
||||
.el-divider__text{
|
||||
color: #409EFF;
|
||||
font-size: 16px;
|
||||
}
|
||||
/*margin: 0;*/
|
||||
/*padding: 15px 0;*/
|
||||
}
|
||||
}
|
||||
.footer{
|
||||
padding: 0 10px;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
text-align: right;
|
||||
background: #ffffff;
|
||||
}
|
||||
.container{
|
||||
padding-top: 10px;
|
||||
height: calc(~'100% - 50px - 56px')
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,647 @@
|
||||
<!--企标备案流程 - 第二步-->
|
||||
<template>
|
||||
<div id="qbbaStep2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标备案流程</template>
|
||||
<template slot="proNode">会签审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbbaStep2-box">
|
||||
<el-form
|
||||
ref="qbbaForm"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称" prop="productName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请选择项目名称"
|
||||
clearable
|
||||
v-model="qbbaForm.productName"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
prop="standName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input :disabled="formDisableFlag" v-model="qbbaForm.standName" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="类型"
|
||||
prop="planType"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.planType"
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option :value="1" label="制订"></el-option>
|
||||
<el-option :value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代替企标编号" prop="replaceStandNum" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.replaceStandNum"
|
||||
placeholder="请输入代替企标编号"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="产品类型"
|
||||
prop="productCategory"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.productCategory"
|
||||
placeholder="请选择产品类型">
|
||||
<el-option value="整车" label="整车"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="适用车辆类型"
|
||||
prop="applyType"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
v-model="qbbaForm.applyType"
|
||||
multiple
|
||||
placeholder="请选择"
|
||||
filterable
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in applyArcticOptions"
|
||||
:key="opt.value"
|
||||
:label="opt.label"
|
||||
:value="opt.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传企标" prop="standardFile" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in defaultFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
style="padding-left: 10px;"
|
||||
@click="handlePreview(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-divider content-position="left">反馈意见</el-divider>
|
||||
|
||||
<el-form
|
||||
ref="qbbaForm2"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinion" class="add-form-item">
|
||||
<el-select v-model="qbbaForm.opinion">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24" v-if="qbbaForm.opinion === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionList" class="add-form-item">
|
||||
<div class="opinion-table-btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary add-button"
|
||||
round
|
||||
@click="addModal"
|
||||
><i class="iconfont"></i>新增</el-button>
|
||||
<el-button
|
||||
class="common-button-default delete-button"
|
||||
round
|
||||
@click="deleteStand"
|
||||
><i class="iconfont"></i>删除</el-button>
|
||||
</div>
|
||||
<div class="pro-table-content">
|
||||
<el-table
|
||||
:data="qbbaForm.opinionList"
|
||||
ref="table"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="tableDataSelect"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="条款号"
|
||||
prop="resNum">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="修改意见"
|
||||
prop="opinionContent">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit">
|
||||
</ProcessFooter>
|
||||
<!--新增评审意见抽屉-->
|
||||
<el-drawer
|
||||
title="添加意见"
|
||||
:visible.sync="isDrawerOpinionList"
|
||||
:wrapperClosable="false"
|
||||
size="800px"
|
||||
@close="resetForm"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<el-form
|
||||
v-if="isDrawerOpinionList"
|
||||
ref="opinionForm"
|
||||
:model="opinionForm"
|
||||
:rules="opinionFormRules"
|
||||
class="label-input-form"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="条款内容" prop="resNum" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.resNum"
|
||||
placeholder="请输入条款内容"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="评审意见" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.opinionContent"
|
||||
placeholder="请输入评审意见"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="isDrawerOpinionList = false">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import {queryDetail, completeTask, saveTaskForPub, changeAssigneeNew, getConvertFileByAttId} from 'api/process'
|
||||
export default {
|
||||
name: 'QbbaStep2',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
// 企标备案form字段
|
||||
qbbaForm: {
|
||||
standardFile: '', // 上传企标
|
||||
productName: '', // 项目名称
|
||||
standName: '', // 标准名称
|
||||
planType: '', // 类型
|
||||
replaceStandNum: '', // 代替标准号
|
||||
productCategory: '整车', // 产品类型
|
||||
applyType: [], // 适用车辆类型
|
||||
VSE: '',
|
||||
VSEName: '',
|
||||
authentication: '', // 认证工程师
|
||||
authenticationName: '',
|
||||
statute: '', // 法规工程师
|
||||
statuteName: '',
|
||||
opinion: '', // 审核意见
|
||||
opinionList: [], // 评审意见
|
||||
remark: '', // 备注
|
||||
opinionAll: []
|
||||
},
|
||||
qbbaFormRules: {
|
||||
opinion: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
defaultFileList: [],
|
||||
formDisableFlag: false,
|
||||
standardTextFileList: [],
|
||||
isDrawerOpinionList: false, // 评审意见抽屉状态
|
||||
// 评审意见form表单字段
|
||||
opinionForm: {
|
||||
resNum: '',
|
||||
opinionContent: ''
|
||||
},
|
||||
opinionFormRules: {
|
||||
resNum: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
opinionContent: [
|
||||
{ required: true, message: '评审意见不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
opinionListSelected: [],
|
||||
number: 0,
|
||||
applyArcticOptions: [] // 适用车型下拉框
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 新增评审意见
|
||||
addModal () {
|
||||
this.isDrawerOpinionList = true
|
||||
},
|
||||
// 删除评审意见
|
||||
deleteStand () {
|
||||
if (this.opinionListSelected.length > 0) {
|
||||
this.opinionListSelected.map(item => {
|
||||
this.qbbaForm.opinionList.map((items, index) => {
|
||||
if (item.index === items.index) {
|
||||
this.qbbaForm.opinionList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
this.opinionListSelected = []
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的数据')
|
||||
}
|
||||
},
|
||||
// 添加评审意见确定事件
|
||||
opinionFormOk () {
|
||||
this.$refs['opinionForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.opinionForm.index = this.number
|
||||
this.qbbaForm.opinionList.push(JSON.parse(JSON.stringify(this.opinionForm)))
|
||||
this.number++
|
||||
this.isDrawerOpinionList = false
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 评审意见抽屉关闭事件
|
||||
resetForm () {
|
||||
this.$refs.opinionForm.resetFields()
|
||||
},
|
||||
// table选中事件
|
||||
tableDataSelect (selected) {
|
||||
this.opinionListSelected = selected
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
let success = 0
|
||||
this.$refs['qbbaForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
success++
|
||||
}
|
||||
})
|
||||
this.$refs['qbbaForm2'].validate((valid) => {
|
||||
if (valid) {
|
||||
success++
|
||||
}
|
||||
})
|
||||
if (success === 2) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
if (this.qbbaForm.opinion === '0') {
|
||||
this.qbbaForm.opinionList = []
|
||||
this.qbbaForm.remark = ''
|
||||
this.qbbaForm.opinionAll = []
|
||||
} else {
|
||||
// 拼接审核意见信息
|
||||
this.qbbaForm.opinionAll = [
|
||||
{
|
||||
opinion: this.qbbaForm.opinion,
|
||||
remark: this.qbbaForm.remark,
|
||||
opinionList: this.qbbaForm.opinionList,
|
||||
opinionName: this.$store.getters.userInfo.uName,
|
||||
opinionId: this.$store.getters.userInfo.userId,
|
||||
opinionNode: '会签审批',
|
||||
opinionTime: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 文件预览
|
||||
handlePreview(attId) {
|
||||
// const attId = file.response.data.id
|
||||
this.getConvertFileByAttId(attId)
|
||||
.then(res => {
|
||||
switch (res.convertState) {
|
||||
case 'ERROR':
|
||||
this.$message.warning('文档转换失败')
|
||||
break
|
||||
case 'LODING':
|
||||
this.$message.info('文档转换中,请稍后查看')
|
||||
break
|
||||
case 'SUCCESS':
|
||||
const { convertFileInfo } = res
|
||||
window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + convertFileInfo.id))
|
||||
break
|
||||
}
|
||||
}).catch(e => {
|
||||
this.$message.warning('文档转换失败')
|
||||
})
|
||||
|
||||
},
|
||||
|
||||
// 读取文档转换后的文件
|
||||
getConvertFileByAttId(attId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getConvertFileByAttId({
|
||||
attId
|
||||
}).then(res => {
|
||||
if (res.ok && res.data.convertState) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
}).catch(e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 请求文件
|
||||
getFile (current, fileNameList) {
|
||||
if (this.qbbaForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbbaForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.qbbaForm = mesg.qbbaForm
|
||||
this.qbbaForm.opinionList = mesg.qbbaForm.opinionList || []
|
||||
this.loading = false
|
||||
this.$refs.qbbaForm.resetFields()
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 规范性引用文件
|
||||
'qbbaForm.standardFile' (newVal) {
|
||||
this.getFile('standardFile', 'defaultFileList')
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
// 从数据库中查询各下拉框数据
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.applyArcticOptions = res.data.ENERGYTYPES // 根据需求文档,产品类别对应标准属性中的“适用车型”
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbbaStep2{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbbaStep2-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
.pro-table-content{
|
||||
.el-table{
|
||||
/deep/ th{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,741 @@
|
||||
<!--企标备案流程 - 第三步-->
|
||||
<template>
|
||||
<div id="qbbaStep3">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标备案流程</template>
|
||||
<template slot="proNode">企标工程师审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbbaStep3-box">
|
||||
<el-form
|
||||
ref="qbbaForm"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称" prop="productName" class="add-form-item">
|
||||
<el-input
|
||||
placeholder="请选择项目名称"
|
||||
clearable
|
||||
v-model="qbbaForm.productName"
|
||||
readonly
|
||||
></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
disabled
|
||||
style="position:absolute;top: 10px;right: 0;"
|
||||
@click="selectProduct"
|
||||
>手动查找</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
prop="standName"
|
||||
class="add-form-item"
|
||||
>
|
||||
<el-input v-model="qbbaForm.standName" placeholder="请输入" clearable readonly />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
>
|
||||
<el-input v-model="qbbaForm.standCode" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="类型"
|
||||
prop="planType"
|
||||
:class="{'form-item-disabled': true}"
|
||||
class="add-form-item">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="qbbaForm.planType"
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option :value="1" label="制订"></el-option>
|
||||
<el-option :value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<ProcessSearchStand
|
||||
key="replaceStandNum"
|
||||
:config="{
|
||||
attrName: '代替企标编号',
|
||||
attrField: 'replaceStandNum'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="150px"
|
||||
v-model="qbbaForm.replaceStandNum"
|
||||
disabled
|
||||
processModel
|
||||
></ProcessSearchStand>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="产品类型"
|
||||
prop="productCategory"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': true}"
|
||||
>
|
||||
<el-select
|
||||
disabled
|
||||
v-model="qbbaForm.productCategory"
|
||||
placeholder="请选择产品类型">
|
||||
<el-option value="整车" label="整车"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="适用车辆类型"
|
||||
prop="applyType"
|
||||
:class="{'form-item-disabled': true}"
|
||||
class="add-form-item">
|
||||
<el-select disabled v-model="qbbaForm.applyType" multiple placeholder="请选择" :filterable="true">
|
||||
<el-option
|
||||
v-for="opt in applyArcticOptions"
|
||||
:key="opt.value"
|
||||
:label="opt.label"
|
||||
:value="opt.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="发布时间"
|
||||
prop="issueTime"
|
||||
class="add-form-item">
|
||||
<el-date-picker
|
||||
v-model="qbbaForm.issueTime"
|
||||
type="date"
|
||||
:editable="false"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder="请选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="实施时间"
|
||||
prop="putTime"
|
||||
class="add-form-item">
|
||||
<el-date-picker
|
||||
v-model="qbbaForm.putTime"
|
||||
type="date"
|
||||
:editable="false"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder="请选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传企标" prop="standardFile" class="add-form-item">
|
||||
<input type="hidden" v-model="qbbaForm.standardFile" />
|
||||
<template v-for="(item, index) in defaultFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
style="padding-left: 10px;padding-right: 160px;line-height: 50px;"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
<el-button
|
||||
size="small"
|
||||
icon="el-icon-upload"
|
||||
class="form-upload-btn"
|
||||
@click="clickButtonToUpload('standardFile')"
|
||||
>
|
||||
{{ qbbaForm.standardFile === 'null' || qbbaForm.standardFile === '' || qbbaForm.standardFile == null ? '点击上传' : '查看已上传的文件' }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!--上传-->
|
||||
<el-dialog
|
||||
width='400px'
|
||||
:visible.sync="importModalshowflagtemp"
|
||||
title="导入文件"
|
||||
>
|
||||
<el-upload
|
||||
class="customer-upload"
|
||||
multiple
|
||||
drag
|
||||
:on-success="uploadSuccess"
|
||||
:on-remove="removeOneFile"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadPath"
|
||||
:on-exceed="onExceed"
|
||||
name="file"
|
||||
:file-list="defaultFileList"
|
||||
:limit="1"
|
||||
ref="importFileAboutStand">
|
||||
<!-- :show-file-list="showUploadlist"-->
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">点击或拖拽上传文件</div>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
<!--项目库dialog-->
|
||||
<el-drawer
|
||||
size="1000px"
|
||||
:visible.sync="typeProjectDialog"
|
||||
title="选择项目"
|
||||
@close="typeProjectDialogClose"
|
||||
:wrapperClosable="false"
|
||||
>
|
||||
<div class="demo-drawer-content-mini">
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form inline :model="productForm" ref="productForm" class="label-input-form">
|
||||
<el-form-item label="项目名称" prop="productName" class="search-item">
|
||||
<el-input v-model="productForm.productName" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="车型系列" prop="standName" class="search-item">
|
||||
<el-input v-model="productForm.productSet" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
@click="searchProduct">
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<el-table
|
||||
ref="typeProjectTableDialog"
|
||||
:data="typeProjectTableList"
|
||||
border
|
||||
style="width: 100%;"
|
||||
height="100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="typeProjectTableDialogSelect">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productName"
|
||||
label="项目名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productSet"
|
||||
label="车型系列">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="sopTime"
|
||||
label="SOP日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="eopTime"
|
||||
label="计划EOP日期">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<pagination :page="productForm.page" :total="typeProjectTableTotal"
|
||||
@pageChange="typeProjectTablePageChange" @pageSizeChange="typeProjectTablePageSizeChange"></pagination>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="typeProjectOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="typeProjectDialogClose">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessSearchStand from '../../../components/ProcessSearchStand'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import {queryDetail, completeTask, saveTaskForPub, changeAssigneeNew, addConvertFile} from 'api/process'
|
||||
import {dateFormat} from '@/common/date'
|
||||
export default {
|
||||
name: 'QbbaStep3',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessSearchStand,
|
||||
ProcessChooseTree
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
// 企标备案form字段
|
||||
qbbaForm: {
|
||||
standardFile: '', // 上传企标
|
||||
productName: '', // 项目名称
|
||||
standName: '', // 标准名称
|
||||
standCode: '', // 标准编号
|
||||
planType: '', // 类型
|
||||
productCategory: '整车', // 产品类型
|
||||
applyType: [], // 适用车辆类型
|
||||
replaceStandNum: '', // 代替标准号
|
||||
issueTime: '', // 发布时间
|
||||
putTime: '' // 实施时间
|
||||
},
|
||||
qbbaFormRules: {
|
||||
productName: [
|
||||
{ required: true, message: '项目名称不能为空', trigger: 'change' }
|
||||
],
|
||||
standName: [
|
||||
{ required: true, message: '标准名称不能为空', trigger: 'change' }
|
||||
],
|
||||
standCode: [
|
||||
{ required: true, message: '标准编号不能为空', trigger: 'change' }
|
||||
],
|
||||
planType: [
|
||||
{ required: true, message: '类型不能为空', trigger: 'change' }
|
||||
],
|
||||
VSE: [
|
||||
{ required: true, message: 'VSE不能为空', trigger: 'change' }
|
||||
],
|
||||
authentication: [
|
||||
{ required: true, message: '认证工程师不能为空', trigger: 'change' }
|
||||
],
|
||||
statute: [
|
||||
{ required: true, message: '法规工程师不能为空', trigger: 'change' }
|
||||
],
|
||||
issueTime: [
|
||||
{ required: true, message: '发布时间不能为空', trigger: 'change' }
|
||||
],
|
||||
putTime: [
|
||||
{ required: true, message: '实施时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
defaultFileList: [],
|
||||
defaultFileList2: [], // 第一步上传的文件
|
||||
uploadPath: 'api/att/attFile/upload',
|
||||
importModalshowflagtemp: false,
|
||||
uploadName: '',
|
||||
typeProjectDialog: false, // 项目dialog
|
||||
// 车型项目form字段
|
||||
productForm: {
|
||||
productName: '', // 项目名称
|
||||
productSet: '', // 车辆类型
|
||||
validFlag: 0,
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent
|
||||
},
|
||||
// 车型项目table字段
|
||||
typeProjectTableList: [],
|
||||
typeProjectTableSelectedList: [],
|
||||
typeProjectTableTotal: 0,
|
||||
applyArcticOptions: [] // 适用车型下拉框
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击上传按钮事件
|
||||
clickButtonToUpload (current) {
|
||||
this.importModalshowflagtemp = true
|
||||
this.uploadName = current
|
||||
if (this.qbbaForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbbaForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
res.data.map(item => {
|
||||
item.name = item.oldFileName
|
||||
})
|
||||
this.defaultFileList = res.data || []
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
this.defaultFileList = []
|
||||
}
|
||||
},
|
||||
// 上传文件事件
|
||||
uploadSuccess (res, file, fileList) {
|
||||
if (res.ok) {
|
||||
this.$message({
|
||||
message: '文件上传成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.defaultFileList.push(res.data)
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'error'
|
||||
})
|
||||
fileList.pop()
|
||||
}
|
||||
},
|
||||
// 文件上传之前的钩子
|
||||
beforeUpload (file) {
|
||||
let filename = file.name
|
||||
let index1 = filename.lastIndexOf('.')
|
||||
let index2 = filename.length
|
||||
let fileSuffix = filename.substring(index1, index2)
|
||||
if (fileSuffix !== '.pdf' && fileSuffix !== '.PDF' && fileSuffix !== '.doc' && fileSuffix !== '.docx') {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传pdf、PDF、doc、docx文件')
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size > 200 * 1024 * 1024) {// eslint-disable-line
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
removeOneFile (file, fileList) {
|
||||
this.defaultFileList.map((item, index) => {
|
||||
if (item.id === file.id) {
|
||||
this.defaultFileList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 文件超出个数限制事件
|
||||
onExceed () {
|
||||
this.$message.warning('只能上传一个附件')
|
||||
},
|
||||
// 选择项目名称事件
|
||||
selectProduct () {
|
||||
this.typeProjectDialog = true
|
||||
this.searchProduct()
|
||||
},
|
||||
// 项目抽屉关闭事件
|
||||
typeProjectDialogClose () {
|
||||
this.typeProjectDialog = false
|
||||
this.productForm.productSet = ''
|
||||
this.productForm.productName = ''
|
||||
this.productForm.page = 1
|
||||
},
|
||||
// 项目库dialog选择事件
|
||||
typeProjectTableDialogSelect (selected) {
|
||||
this.typeProjectTableSelectedList = selected
|
||||
},
|
||||
// 项目库dialog确定事件
|
||||
typeProjectOk () {
|
||||
if (this.typeProjectTableSelectedList.length === 1) {
|
||||
this.qbbaForm.productName = this.typeProjectTableSelectedList[0].productName
|
||||
this.typeProjectTableSelectedList = []
|
||||
this.typeProjectDialog = false
|
||||
} else {
|
||||
this.$message.warning('请选择一条数据')
|
||||
}
|
||||
},
|
||||
// 项目库分页事件
|
||||
typeProjectTablePageChange (page) {
|
||||
this.productForm.page = page
|
||||
this.searchProduct()
|
||||
},
|
||||
typeProjectTablePageSizeChange (pageSize) {
|
||||
this.productForm.pageSize = this.$store.getters.userInfo.configContent
|
||||
this.searchProduct()
|
||||
},
|
||||
// 项目列表搜索事件
|
||||
searchProduct () {
|
||||
this.$http.get('lawss/sarProductInfo/getProductInfoPage', this.productForm, {
|
||||
_this: this, loading: 'loading'
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.typeProjectTableList = res.data.list
|
||||
this.typeProjectTableTotal = res.data.count
|
||||
}
|
||||
})
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbbaForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
this.qbbaForm.loginUser = this.$store.getters.userInfo.userId
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
this.addConvertFile(this.qbbaForm.standardFile).then(() => {
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
}).catch(err => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
const qbbaForm = {...mesg.qbbaForm}
|
||||
const sopTime = qbbaForm ? dateFormat(qbbaForm.sopTime) : ''
|
||||
this.qbbaForm = {...qbbaForm, putTime: sopTime}
|
||||
// this.qbbaForm.putTime = mesg.qbbaForm.sopTime
|
||||
// this.$set(this.qbbaForm, 'putTime', mesg.qbbaForm.sopTime)
|
||||
this.loading = false
|
||||
this.$refs.qbbaForm.clearValidate()
|
||||
this.getFile('standardFile', 'defaultFileList')
|
||||
}, err => {
|
||||
console.error(err)
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 请求文件
|
||||
getFile (current, fileNameList) {
|
||||
if (this.qbbaForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbbaForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description: 企标文件文档转换
|
||||
* @author: chenxiaoxi
|
||||
* @time: 2021-03-19 09:28:46
|
||||
*/
|
||||
addConvertFile(attId) {
|
||||
const _attId = attId.replace(/,/g, '')
|
||||
return new Promise((resolve, reject) => {
|
||||
addConvertFile({
|
||||
attId: _attId
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
resolve()
|
||||
} else {
|
||||
this.$message.warning('企标文本转换失败')
|
||||
reject()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
defaultFileList (newVal, oldVal) {
|
||||
if (this.importModalshowflagtemp) {
|
||||
let fileId = []
|
||||
newVal.map(item => {
|
||||
fileId.push(item.id)
|
||||
})
|
||||
this.qbbaForm[this.uploadName] = fileId.join(',')
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
// 从数据库中查询各下拉框数据
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.applyArcticOptions = res.data.ENERGYTYPES // 根据需求文档,产品类别对应标准属性中的“适用车型”
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbbaStep3{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbbaStep3-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
.container{
|
||||
//height: calc(~'100% - 51.5px');
|
||||
flex: auto;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,686 @@
|
||||
<!--企标备案流程 - 第五步-->
|
||||
<template>
|
||||
<div id="qbbaStep5">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标备案流程</template>
|
||||
<template slot="proNode">VI总监审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbbaStep5-box">
|
||||
<el-form
|
||||
ref="qbbaForm"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称" prop="productName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请选择项目名称"
|
||||
clearable
|
||||
v-model="qbbaForm.productName"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
prop="standName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input :disabled="formDisableFlag" v-model="qbbaForm.standName" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input :disabled="formDisableFlag" v-model="qbbaForm.standCode" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="类型"
|
||||
prop="planType"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.planType"
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option :value="1" label="制订"></el-option>
|
||||
<el-option :value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代替企标编号" prop="replaceStandNum" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.replaceStandNum"
|
||||
placeholder="请输入代替企标编号"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="产品类型"
|
||||
prop="productCategory"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.productCategory"
|
||||
placeholder="请选择产品类型">
|
||||
<el-option value="整车" label="整车"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="适用车辆类型"
|
||||
prop="applyType"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select v-model="qbbaForm.applyType" multiple placeholder="请选择" :disabled="formDisableFlag" :filterable="true">
|
||||
<el-option
|
||||
v-for="opt in applyArcticOptions"
|
||||
:key="opt.value"
|
||||
:label="opt.label"
|
||||
:value="opt.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="发布时间"
|
||||
prop="issueTime"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.issueTime"
|
||||
type="date"
|
||||
:editable="false"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder="请选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="实施时间"
|
||||
prop="putTime"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.putTime"
|
||||
type="date"
|
||||
:editable="false"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder="请选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传企标" prop="standardFile" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in defaultFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="handlePreview(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<el-divider content-position="left">反馈意见</el-divider>
|
||||
<el-form
|
||||
ref="qbbaForm"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinionStep5" class="add-form-item">
|
||||
<el-select v-model="qbbaForm.opinionStep5">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24" v-if="qbbaForm.opinionStep5 === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionList" class="add-form-item">
|
||||
<div class="opinion-table-btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary add-button"
|
||||
round
|
||||
@click="addModal"
|
||||
><i class="iconfont"></i>新增</el-button>
|
||||
<el-button
|
||||
class="common-button-default delete-button"
|
||||
round
|
||||
@click="deleteStand"
|
||||
><i class="iconfont"></i>删除</el-button>
|
||||
</div>
|
||||
<div class="pro-table-content">
|
||||
<el-table
|
||||
:data="qbbaForm.opinionList"
|
||||
ref="table"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="tableDataSelect"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="条款号"
|
||||
prop="resNum">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="修改意见"
|
||||
prop="opinionContent">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!--<el-row :gutter="24" v-if="qbbaForm.opinionStep5 === '1'">-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item label="备注" prop="remark" class="add-form-item">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="qbbaForm.remark"-->
|
||||
<!-- placeholder="请输入"-->
|
||||
<!-- :autosize="{ minRows: 2, maxRows: 4}"-->
|
||||
<!-- type="textarea"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!--</el-row>-->
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!--新增评审意见抽屉-->
|
||||
<el-drawer
|
||||
title="添加意见"
|
||||
:visible.sync="isDrawerOpinionList"
|
||||
:wrapperClosable="false"
|
||||
size="800px"
|
||||
@close="resetForm"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<el-form
|
||||
v-if="isDrawerOpinionList"
|
||||
ref="opinionForm"
|
||||
:model="opinionForm"
|
||||
:rules="opinionFormRules"
|
||||
class="label-input-form"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="条款内容" prop="resNum" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.resNum"
|
||||
placeholder="请输入条款内容"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.opinionContent"
|
||||
placeholder="请输入意见理由"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="isDrawerOpinionList = false">取消</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import {queryDetail, completeTask, saveTaskForPub, changeAssigneeNew, getConvertFileByAttId} from 'api/process'
|
||||
export default {
|
||||
name: 'QbbaStep5',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
// 企标备案form字段
|
||||
qbbaForm: {
|
||||
standardFile: '', // 上传企标
|
||||
productName: '', // 项目名称
|
||||
standName: '', // 标准名称
|
||||
standCode: '', // 标准编号
|
||||
productCategory: '整车', // 产品类型
|
||||
applyType: [], // 适用车辆类型
|
||||
planType: '', // 类型
|
||||
replaceStandNum: '', // 代替标准号
|
||||
issueTime: '', // 发布时间
|
||||
putTime: '', // 实施时间
|
||||
opinionStep5: '', // 反馈意见
|
||||
opinionList: [], // 意见理由
|
||||
remark: '', // 备注
|
||||
opinionAll: []
|
||||
},
|
||||
qbbaFormRules: {
|
||||
opinionStep5: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
defaultFileList: [],
|
||||
formDisableFlag: false,
|
||||
standardTextFileList: [],
|
||||
isDrawerOpinionList: false, // 评审意见抽屉状态
|
||||
// 评审意见form表单字段
|
||||
opinionForm: {
|
||||
resNum: '',
|
||||
opinionContent: ''
|
||||
},
|
||||
opinionFormRules: {
|
||||
resNum: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
opinionContent: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
opinionListSelected: [],
|
||||
number: 0,
|
||||
applyArcticOptions: [] // 适用车型下拉框
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 新增评审意见
|
||||
addModal () {
|
||||
this.isDrawerOpinionList = true
|
||||
},
|
||||
// 删除评审意见
|
||||
deleteStand () {
|
||||
if (this.opinionListSelected.length > 0) {
|
||||
this.opinionListSelected.map(item => {
|
||||
this.qbbaForm.opinionList.map((items, index) => {
|
||||
if (item.index === items.index) {
|
||||
this.qbbaForm.opinionList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
this.opinionListSelected = []
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的数据')
|
||||
}
|
||||
},
|
||||
// 添加评审意见确定事件
|
||||
opinionFormOk () {
|
||||
this.$refs['opinionForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.opinionForm.index = this.number
|
||||
this.qbbaForm.opinionList.push(JSON.parse(JSON.stringify(this.opinionForm)))
|
||||
this.number++
|
||||
this.isDrawerOpinionList = false
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 评审意见抽屉关闭事件
|
||||
resetForm () {
|
||||
this.$refs.opinionForm.resetFields()
|
||||
},
|
||||
// table选中事件
|
||||
tableDataSelect (selected) {
|
||||
this.opinionListSelected = selected
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbbaForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
if (this.qbbaForm.opinionStep5 === '0') {
|
||||
this.qbbaForm.opinionList = []
|
||||
this.qbbaForm.remark = ''
|
||||
this.qbbaForm.opinionAll = []
|
||||
} else {
|
||||
// 拼接反馈意见信息
|
||||
this.qbbaForm.opinionAll = [
|
||||
{
|
||||
opinion: this.qbbaForm.opinionStep5,
|
||||
remark: this.qbbaForm.remark,
|
||||
opinionList: this.qbbaForm.opinionList,
|
||||
opinionName: this.$store.getters.userInfo.uName,
|
||||
opinionId: this.$store.getters.userInfo.userId,
|
||||
opinionNode: 'VI总监审批',
|
||||
opinionTime: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 文件预览
|
||||
handlePreview(attId) {
|
||||
this.getConvertFileByAttId(attId)
|
||||
.then(res => {
|
||||
switch (res.convertState) {
|
||||
case 'ERROR':
|
||||
this.$message.warning('文档转换失败')
|
||||
break
|
||||
case 'LODING':
|
||||
this.$message.info('文档转换中,请稍后查看')
|
||||
break
|
||||
case 'SUCCESS':
|
||||
const { convertFileInfo } = res
|
||||
window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + convertFileInfo.id))
|
||||
break
|
||||
}
|
||||
}).catch(e => {
|
||||
this.$message.warning('文档转换失败')
|
||||
})
|
||||
},
|
||||
|
||||
// 读取文档转换后的文件
|
||||
getConvertFileByAttId(attId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getConvertFileByAttId({
|
||||
attId
|
||||
}).then(res => {
|
||||
if (res.ok && res.data.convertState) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
}).catch(e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 请求文件
|
||||
getFile (current, fileNameList) {
|
||||
if (this.qbbaForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbbaForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.qbbaForm = mesg.qbbaForm
|
||||
this.qbbaForm.opinionList = mesg.qbbaForm.opinionList || []
|
||||
this.loading = false
|
||||
this.$refs.qbbaForm.resetFields()
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 规范性引用文件
|
||||
'qbbaForm.standardFile' (newVal) {
|
||||
this.getFile('standardFile', 'defaultFileList')
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
// 从数据库中查询各下拉框数据
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.applyArcticOptions = res.data.ENERGYTYPES // 根据需求文档,产品类别对应标准属性中的“适用车型”
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbbaStep5{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbbaStep5-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
.pro-table-content{
|
||||
.el-table{
|
||||
/deep/ th{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,685 @@
|
||||
<!--企标备案流程 - 第六步-->
|
||||
<template>
|
||||
<div id="qbbaStep6">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标备案流程</template>
|
||||
<template slot="proNode">企标备案专家审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbbaStep6-box">
|
||||
<el-form
|
||||
ref="qbbaForm"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称" prop="productName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请选择项目名称"
|
||||
clearable
|
||||
v-model="qbbaForm.productName"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
prop="standName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input :disabled="formDisableFlag" v-model="qbbaForm.standName" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input :disabled="formDisableFlag" v-model="qbbaForm.standCode" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="类型"
|
||||
prop="planType"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.planType"
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option :value="1" label="制订"></el-option>
|
||||
<el-option :value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代替企标编号" prop="replaceStandNum" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.replaceStandNum"
|
||||
placeholder="请输入代替企标编号"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="产品类型"
|
||||
prop="productCategory"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.productCategory"
|
||||
placeholder="请选择产品类型">
|
||||
<el-option value="整车" label="整车"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="适用车辆类型"
|
||||
prop="applyType"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select v-model="qbbaForm.applyType" multiple placeholder="请选择" :disabled="formDisableFlag" :filterable="true">
|
||||
<el-option
|
||||
v-for="opt in applyArcticOptions"
|
||||
:key="opt.value"
|
||||
:label="opt.label"
|
||||
:value="opt.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="发布时间"
|
||||
prop="issueTime"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.issueTime"
|
||||
type="date"
|
||||
:editable="false"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder="请选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="实施时间"
|
||||
prop="putTime"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.putTime"
|
||||
type="date"
|
||||
:editable="false"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder="请选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传企标" prop="standardFile" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in defaultFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="handlePreview(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<el-divider content-position="left">反馈意见</el-divider>
|
||||
<el-form
|
||||
ref="qbbaForm"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinionStep6" class="add-form-item">
|
||||
<el-select v-model="qbbaForm.opinionStep6">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24" v-if="qbbaForm.opinionStep6 === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionList" class="add-form-item">
|
||||
<div class="opinion-table-btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary add-button"
|
||||
round
|
||||
@click="addModal"
|
||||
><i class="iconfont"></i>新增</el-button>
|
||||
<el-button
|
||||
class="common-button-default delete-button"
|
||||
round
|
||||
@click="deleteStand"
|
||||
><i class="iconfont"></i>删除</el-button>
|
||||
</div>
|
||||
<div class="pro-table-content">
|
||||
<el-table
|
||||
:data="qbbaForm.opinionList"
|
||||
ref="table"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="tableDataSelect"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="条款号"
|
||||
prop="resNum">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="修改意见"
|
||||
prop="opinionContent">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!--<el-row :gutter="24" v-if="qbbaForm.opinionStep6 === '1'">-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item label="备注" prop="remark" class="add-form-item">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="qbbaForm.remark"-->
|
||||
<!-- placeholder="请输入"-->
|
||||
<!-- :autosize="{ minRows: 2, maxRows: 4}"-->
|
||||
<!-- type="textarea"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!--</el-row>-->
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!--新增意见理由抽屉-->
|
||||
<el-drawer
|
||||
title="添加意见"
|
||||
:visible.sync="isDrawerOpinionList"
|
||||
:wrapperClosable="false"
|
||||
size="800px"
|
||||
@close="resetForm"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<el-form
|
||||
v-if="isDrawerOpinionList"
|
||||
ref="opinionForm"
|
||||
:model="opinionForm"
|
||||
:rules="opinionFormRules"
|
||||
class="label-input-form"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="条款内容" prop="resNum" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.resNum"
|
||||
placeholder="请输入条款内容"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.opinionContent"
|
||||
placeholder="请输入意见理由"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="isDrawerOpinionList = false">取消</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import {queryDetail, completeTask, saveTaskForPub, changeAssigneeNew, getConvertFileByAttId} from 'api/process'
|
||||
export default {
|
||||
name: 'QbbaStep6',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
// 企标备案form字段
|
||||
qbbaForm: {
|
||||
standardFile: '', // 上传企标
|
||||
productName: '', // 项目名称
|
||||
standName: '', // 标准名称
|
||||
standCode: '', // 标准编号
|
||||
productCategory: '整车', // 产品类型
|
||||
applyType: [], // 适用车辆类型
|
||||
planType: '', // 类型
|
||||
replaceStandNum: '', // 代替标准号
|
||||
issueTime: '', // 发布时间
|
||||
putTime: '', // 实施时间
|
||||
opinionStep6: '', // 反馈意见
|
||||
opinionList: [], // 意见理由
|
||||
remark: '', // 备注
|
||||
opinionAll: []
|
||||
},
|
||||
qbbaFormRules: {
|
||||
opinionStep6: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
defaultFileList: [],
|
||||
formDisableFlag: false,
|
||||
standardTextFileList: [],
|
||||
isDrawerOpinionList: false, // 意见理由抽屉状态
|
||||
// 意见理由form表单字段
|
||||
opinionForm: {
|
||||
resNum: '',
|
||||
opinionContent: ''
|
||||
},
|
||||
opinionFormRules: {
|
||||
resNum: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
opinionContent: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
opinionListSelected: [],
|
||||
number: 0,
|
||||
applyArcticOptions: [] // 适用车型下拉框
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 新增意见理由
|
||||
addModal () {
|
||||
this.isDrawerOpinionList = true
|
||||
},
|
||||
// 删除意见理由
|
||||
deleteStand () {
|
||||
if (this.opinionListSelected.length > 0) {
|
||||
this.opinionListSelected.map(item => {
|
||||
this.qbbaForm.opinionList.map((items, index) => {
|
||||
if (item.index === items.index) {
|
||||
this.qbbaForm.opinionList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
this.opinionListSelected = []
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的数据')
|
||||
}
|
||||
},
|
||||
// 添加意见理由确定事件
|
||||
opinionFormOk () {
|
||||
this.$refs['opinionForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.opinionForm.index = this.number
|
||||
this.qbbaForm.opinionList.push(JSON.parse(JSON.stringify(this.opinionForm)))
|
||||
this.number++
|
||||
this.isDrawerOpinionList = false
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 意见理由抽屉关闭事件
|
||||
resetForm () {
|
||||
this.$refs.opinionForm.resetFields()
|
||||
},
|
||||
// table选中事件
|
||||
tableDataSelect (selected) {
|
||||
this.opinionListSelected = selected
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbbaForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
if (this.qbbaForm.opinionStep6 === '0') {
|
||||
this.qbbaForm.opinionList = []
|
||||
this.qbbaForm.remark = ''
|
||||
this.qbbaForm.opinionAll = []
|
||||
} else {
|
||||
// 拼接反馈意见信息
|
||||
this.qbbaForm.opinionAll = [
|
||||
{
|
||||
opinion: this.qbbaForm.opinionStep6,
|
||||
remark: this.qbbaForm.remark,
|
||||
opinionList: this.qbbaForm.opinionList,
|
||||
opinionName: this.$store.getters.userInfo.uName,
|
||||
opinionId: this.$store.getters.userInfo.userId,
|
||||
opinionNode: '企标备案专家审批',
|
||||
opinionTime: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 文件预览
|
||||
handlePreview(attId) {
|
||||
this.getConvertFileByAttId(attId)
|
||||
.then(res => {
|
||||
switch (res.convertState) {
|
||||
case 'ERROR':
|
||||
this.$message.warning('文档转换失败')
|
||||
break
|
||||
case 'LODING':
|
||||
this.$message.info('文档转换中,请稍后查看')
|
||||
break
|
||||
case 'SUCCESS':
|
||||
const { convertFileInfo } = res
|
||||
window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + convertFileInfo.id))
|
||||
break
|
||||
}
|
||||
}).catch(e => {
|
||||
this.$message.warning('文档转换失败')
|
||||
})
|
||||
},
|
||||
|
||||
// 读取文档转换后的文件
|
||||
getConvertFileByAttId(attId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getConvertFileByAttId({
|
||||
attId
|
||||
}).then(res => {
|
||||
if (res.ok && res.data.convertState) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
}).catch(e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 请求文件
|
||||
getFile (current, fileNameList) {
|
||||
if (this.qbbaForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbbaForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.qbbaForm = mesg.qbbaForm
|
||||
this.qbbaForm.opinionList = mesg.qbbaForm.opinionList || []
|
||||
this.loading = false
|
||||
this.$refs.qbbaForm.resetFields()
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 规范性引用文件
|
||||
'qbbaForm.standardFile' (newVal) {
|
||||
this.getFile('standardFile', 'defaultFileList')
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
// 从数据库中查询各下拉框数据
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.applyArcticOptions = res.data.ENERGYTYPES // 根据需求文档,产品类别对应标准属性中的“适用车型”
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbbaStep6{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbbaStep6-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
.pro-table-content{
|
||||
.el-table{
|
||||
/deep/ th{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,756 @@
|
||||
<!--企标备案流程 - 第六步-->
|
||||
<template>
|
||||
<div id="qbbaStep7">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标备案流程</template>
|
||||
<template slot="proNode">项目总工审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbbaStep7-box">
|
||||
<el-form
|
||||
ref="qbbaForm"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称" prop="productName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请选择项目名称"
|
||||
clearable
|
||||
v-model="qbbaForm.productName"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
prop="standName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input :disabled="formDisableFlag" v-model="qbbaForm.standName" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input :disabled="formDisableFlag" v-model="qbbaForm.standCode" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="类型"
|
||||
prop="planType"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.planType"
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option :value="1" label="制订"></el-option>
|
||||
<el-option :value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代替企标编号" prop="replaceStandNum" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.replaceStandNum"
|
||||
placeholder="请输入代替企标编号"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="产品类型"
|
||||
prop="productCategory"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.productCategory"
|
||||
placeholder="请选择产品类型">
|
||||
<el-option value="整车" label="整车"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="适用车辆类型"
|
||||
prop="applyType"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select v-model="qbbaForm.applyType" multiple placeholder="请选择" :disabled="formDisableFlag" :filterable="true">
|
||||
<el-option
|
||||
v-for="opt in applyArcticOptions"
|
||||
:key="opt.value"
|
||||
:label="opt.label"
|
||||
:value="opt.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="发布时间"
|
||||
prop="issueTime"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.issueTime"
|
||||
type="date"
|
||||
:editable="false"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder="请选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="实施时间"
|
||||
prop="putTime"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbbaForm.putTime"
|
||||
type="date"
|
||||
:editable="false"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder="请选择时间"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传企标" prop="standardFile" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in defaultFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="handlePreview(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
<el-divider content-position="left" v-if="!processDetail">反馈意见</el-divider>
|
||||
<el-form
|
||||
v-if="!processDetail"
|
||||
ref="qbbaForm"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules">
|
||||
<template >
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinionStep7" class="add-form-item">
|
||||
<el-select v-model="qbbaForm.opinionStep7">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24" v-if="qbbaForm.opinionStep7 === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionList" class="add-form-item">
|
||||
<div class="opinion-table-btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary add-button"
|
||||
round
|
||||
@click="addModal"
|
||||
><i class="iconfont"></i>新增</el-button>
|
||||
<el-button
|
||||
class="common-button-default delete-button"
|
||||
round
|
||||
@click="deleteStand"
|
||||
><i class="iconfont"></i>删除</el-button>
|
||||
</div>
|
||||
<div class="pro-table-content">
|
||||
<el-table
|
||||
:data="qbbaForm.opinionList"
|
||||
ref="table"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="tableDataSelect"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="条款号"
|
||||
prop="resNum">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="修改意见"
|
||||
prop="opinionContent">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!--<el-row :gutter="24" v-if="qbbaForm.opinionStep7 === '1'">-->
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item label="备注" prop="remark" class="add-form-item">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="qbbaForm.remark"-->
|
||||
<!-- placeholder="请输入"-->
|
||||
<!-- :autosize="{ minRows: 2, maxRows: 4}"-->
|
||||
<!-- type="textarea"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!--</el-row>-->
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--审批结果-->
|
||||
<ProcessApprovalHistory
|
||||
:approvalData="approvalHistory"
|
||||
v-if="approvalHistory.length && processDetail"
|
||||
></ProcessApprovalHistory>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!--新增意见理由抽屉-->
|
||||
<el-drawer
|
||||
title="添加意见"
|
||||
:visible.sync="isDrawerOpinionList"
|
||||
:wrapperClosable="false"
|
||||
size="800px"
|
||||
@close="resetForm"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<el-form
|
||||
v-if="isDrawerOpinionList"
|
||||
ref="opinionForm"
|
||||
:model="opinionForm"
|
||||
:rules="opinionFormRules"
|
||||
class="label-input-form"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="条款内容" prop="resNum" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.resNum"
|
||||
placeholder="请输入条款内容"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.opinionContent"
|
||||
placeholder="请输入意见理由"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="isDrawerOpinionList = false">取消</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
import {
|
||||
queryDetail,
|
||||
completeTask,
|
||||
saveTaskForPub,
|
||||
bussRecordsProcess,
|
||||
changeAssigneeNew,
|
||||
getConvertFileByAttId
|
||||
} from 'api/process'
|
||||
export default {
|
||||
name: 'QbbaStep7',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
approvalHistory: [],
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
// 企标备案form字段
|
||||
qbbaForm: {
|
||||
standardFile: '', // 上传企标
|
||||
productName: '', // 项目名称
|
||||
standName: '', // 标准名称
|
||||
standCode: '', // 标准编号
|
||||
productCategory: '整车', // 产品类型
|
||||
applyType: [], // 适用车辆类型
|
||||
planType: '', // 类型
|
||||
replaceStandNum: '', // 代替标准号
|
||||
issueTime: '', // 发布时间
|
||||
putTime: '', // 实施时间
|
||||
opinionStep7: '', // 反馈意见
|
||||
opinionList: [], // 意见理由
|
||||
remark: '', // 备注
|
||||
opinionAll: []
|
||||
},
|
||||
qbbaFormRules: {
|
||||
opinionStep7: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
defaultFileList: [],
|
||||
formDisableFlag: false,
|
||||
standardTextFileList: [],
|
||||
isDrawerOpinionList: false, // 意见理由抽屉状态
|
||||
// 意见理由form表单字段
|
||||
opinionForm: {
|
||||
resNum: '',
|
||||
opinionContent: ''
|
||||
},
|
||||
opinionFormRules: {
|
||||
resNum: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
opinionContent: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
opinionListSelected: [],
|
||||
number: 0,
|
||||
applyArcticOptions: [], // 适用车型下拉框
|
||||
processDetail: false
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
// 新增意见理由
|
||||
addModal () {
|
||||
this.isDrawerOpinionList = true
|
||||
},
|
||||
// 删除意见理由
|
||||
deleteStand () {
|
||||
if (this.opinionListSelected.length > 0) {
|
||||
this.opinionListSelected.map(item => {
|
||||
this.qbbaForm.opinionList.map((items, index) => {
|
||||
if (item.index === items.index) {
|
||||
this.qbbaForm.opinionList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
this.opinionListSelected = []
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的数据')
|
||||
}
|
||||
},
|
||||
// 添加意见理由确定事件
|
||||
opinionFormOk () {
|
||||
this.$refs['opinionForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.opinionForm.index = this.number
|
||||
this.qbbaForm.opinionList.push(JSON.parse(JSON.stringify(this.opinionForm)))
|
||||
this.number++
|
||||
this.isDrawerOpinionList = false
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 意见理由抽屉关闭事件
|
||||
resetForm () {
|
||||
this.$refs.opinionForm.resetFields()
|
||||
},
|
||||
// table选中事件
|
||||
tableDataSelect (selected) {
|
||||
this.opinionListSelected = selected
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbbaForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
if (this.qbbaForm.opinionStep7 === '0') {
|
||||
this.qbbaForm.opinionList = []
|
||||
this.qbbaForm.remark = ''
|
||||
this.qbbaForm.opinionAll = []
|
||||
} else {
|
||||
// 拼接反馈意见信息
|
||||
this.qbbaForm.opinionAll = [
|
||||
{
|
||||
opinion: this.qbbaForm.opinionStep7,
|
||||
remark: this.qbbaForm.remark,
|
||||
opinionList: this.qbbaForm.opinionList,
|
||||
opinionName: this.$store.getters.userInfo.uName,
|
||||
opinionId: this.$store.getters.userInfo.userId,
|
||||
opinionNode: '项目总工审批',
|
||||
opinionTime: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
if (this.qbbaForm.opinionStep7 === '0') {
|
||||
this.bussRecordsProcess()
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
}
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 文件预览
|
||||
handlePreview(attId) {
|
||||
this.getConvertFileByAttId(attId)
|
||||
.then(res => {
|
||||
switch (res.convertState) {
|
||||
case 'ERROR':
|
||||
this.$message.warning('文档转换失败')
|
||||
break
|
||||
case 'LODING':
|
||||
this.$message.info('文档转换中,请稍后查看')
|
||||
break
|
||||
case 'SUCCESS':
|
||||
const { convertFileInfo } = res
|
||||
window.open('/static/pdf/web/viewer.html?file=' + encodeURIComponent('/api/att/attFile/getFileInfo?fileId=' + convertFileInfo.id))
|
||||
break
|
||||
}
|
||||
}).catch(e => {
|
||||
this.$message.warning('文档转换失败')
|
||||
})
|
||||
},
|
||||
|
||||
// 读取文档转换后的文件
|
||||
getConvertFileByAttId(attId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
getConvertFileByAttId({
|
||||
attId
|
||||
}).then(res => {
|
||||
if (res.ok && res.data.convertState) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
reject()
|
||||
}
|
||||
}).catch(e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 请求文件
|
||||
getFile (current, fileNameList) {
|
||||
if (this.qbbaForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbbaForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.qbbaForm = mesg.qbbaForm
|
||||
// this.qbbaForm.opinionList = mesg.qbbaForm.opinionList || []
|
||||
let approvalHistory = this.qbbaForm.opinionAll || []
|
||||
approvalHistory.map(item => {
|
||||
item.opinionList.map(items => {
|
||||
items.itemContent = items.resNum
|
||||
items.itemApproval = items.opinionContent
|
||||
})
|
||||
this.approvalHistory.push({
|
||||
approvalUserName: item.opinionName, // 审批人
|
||||
auditOpinions: item.opinion, // 审批意见
|
||||
approvalData: item.opinionList, // 意见内容
|
||||
approvalNode: item.opinionNode, // 审批人角色
|
||||
approvalTime: item.opinionTime // 审批时间
|
||||
})
|
||||
})
|
||||
this.loading = false
|
||||
this.$refs.qbbaForm.resetFields()
|
||||
})
|
||||
},
|
||||
// 企标备案流程入库
|
||||
bussRecordsProcess () {
|
||||
const _formData = new FormData()
|
||||
let infoJson = JSON.parse(JSON.stringify(this.qbbaForm))
|
||||
infoJson.prcNum = this.prcForm.prcNum
|
||||
infoJson.putTime = this.$moment(infoJson.putTime).format('YYYY-MM-DD HH:mm:ss')
|
||||
_formData.append('infoJson', JSON.stringify(infoJson))
|
||||
bussRecordsProcess(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 规范性引用文件
|
||||
'qbbaForm.standardFile' (newVal) {
|
||||
this.getFile('standardFile', 'defaultFileList')
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
// 从数据库中查询各下拉框数据
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.applyArcticOptions = res.data.ENERGYTYPES // 根据需求文档,产品类别对应标准属性中的“适用车型”
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbbaStep7{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbbaStep7-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
.pro-table-content{
|
||||
.el-table{
|
||||
/deep/ th{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,858 @@
|
||||
<!--企标备案流程 - 流程重新发起-->
|
||||
<template>
|
||||
<div id="qbbaStep8">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标备案流程</template>
|
||||
<template slot="proNode">重新发起</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbbaStep8-box">
|
||||
<el-form
|
||||
ref="qbbaForm"
|
||||
:model="qbbaForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbbaFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="项目名称" prop="productName" class="add-form-item">
|
||||
<el-input
|
||||
placeholder="请选择项目名称"
|
||||
clearable
|
||||
v-model="qbbaForm.productName"
|
||||
readonly
|
||||
></el-input>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
style="position:absolute;top: 10px;right: 0;"
|
||||
@click="selectProduct"
|
||||
>手动查找</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="标准名称"
|
||||
prop="standName"
|
||||
class="add-form-item"
|
||||
>
|
||||
<el-input v-model="qbbaForm.standName" placeholder="请输入" clearable />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="类型"
|
||||
prop="planType"
|
||||
class="add-form-item">
|
||||
<el-select
|
||||
v-model="qbbaForm.planType"
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option :value="1" label="制订"></el-option>
|
||||
<el-option :value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<ProcessSearchStand
|
||||
key="replaceStandNum"
|
||||
:config="{
|
||||
attrName: '代替企标编号',
|
||||
attrField: 'replaceStandNum'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="150px"
|
||||
v-model="qbbaForm.replaceStandNum"
|
||||
></ProcessSearchStand>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="产品类型"
|
||||
prop="productCategory"
|
||||
class="add-form-item">
|
||||
<el-select
|
||||
v-model="qbbaForm.productCategory"
|
||||
placeholder="请选择产品类型">
|
||||
<el-option value="整车" label="整车"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="适用车辆类型"
|
||||
prop="applyType"
|
||||
class="add-form-item">
|
||||
<el-select v-model="qbbaForm.applyType" multiple placeholder="请选择" :filterable="true">
|
||||
<el-option
|
||||
v-for="opt in applyArcticOptions"
|
||||
:key="opt.value"
|
||||
:label="opt.label"
|
||||
:value="opt.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="VSE" prop="VSE" class="add-form-item">
|
||||
<input v-model="qbbaForm.VSE" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbbaForm.VSEName"
|
||||
placeholder="请选择VSE"
|
||||
readonly
|
||||
@click.native="handleVisibleRole('VSE', 'VSEName', 'VSE')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="认证工程师" prop="authentication" class="add-form-item">
|
||||
<input v-model="qbbaForm.authentication" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbbaForm.authenticationName"
|
||||
placeholder="请选择认证工程师"
|
||||
readonly
|
||||
@click.native="handleVisibleRole('authentication', 'authenticationName', '认证工程师')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="法规工程师" prop="statute" class="add-form-item">
|
||||
<input v-model="qbbaForm.statute" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbbaForm.statuteName"
|
||||
placeholder="请选择法规工程师"
|
||||
readonly
|
||||
@click.native="handleVisibleRole('statute', 'statuteName', '法规工程师')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="上传企标" prop="standardFile" class="add-form-item">
|
||||
<input type="hidden" v-model="qbbaForm.standardFile" />
|
||||
<template v-for="(item, index) in defaultFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
style="padding-left: 10px;padding-right: 160px;line-height: 50px;"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
<el-button
|
||||
size="small"
|
||||
icon="el-icon-upload"
|
||||
class="form-upload-btn"
|
||||
@click="clickButtonToUpload('standardFile')"
|
||||
>
|
||||
{{ qbbaForm.standardFile === 'null' || qbbaForm.standardFile === '' || qbbaForm.standardFile == null ? '点击上传' : '查看已上传的文件' }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--审批结果-->
|
||||
<ProcessApprovalHistory
|
||||
:approvalData="approvalHistory"
|
||||
v-if="approvalHistory.length"
|
||||
></ProcessApprovalHistory>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
submitBTNText="再次提交"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!--上传-->
|
||||
<el-dialog
|
||||
width='400px'
|
||||
:visible.sync="importModalshowflagtemp"
|
||||
title="导入文件"
|
||||
>
|
||||
<el-upload
|
||||
class="customer-upload"
|
||||
multiple
|
||||
drag
|
||||
:on-success="uploadSuccess"
|
||||
:on-remove="removeOneFile"
|
||||
:before-upload="beforeUpload"
|
||||
:action="uploadPath"
|
||||
:on-exceed="onExceed"
|
||||
name="file"
|
||||
:file-list="defaultFileList"
|
||||
:limit="1"
|
||||
ref="importFileAboutStand">
|
||||
<!-- :show-file-list="showUploadlist"-->
|
||||
<i class="el-icon-upload"></i>
|
||||
<div class="el-upload__text">点击或拖拽上传文件</div>
|
||||
</el-upload>
|
||||
</el-dialog>
|
||||
<!--项目库dialog-->
|
||||
<el-drawer
|
||||
size="1000px"
|
||||
:visible.sync="typeProjectDialog"
|
||||
title="选择项目"
|
||||
@close="typeProjectDialogClose"
|
||||
:wrapperClosable="false"
|
||||
>
|
||||
<div class="demo-drawer-content-mini">
|
||||
<div class="search-area">
|
||||
<div class="left">
|
||||
<el-form inline :model="productForm" ref="productForm" class="label-input-form">
|
||||
<el-form-item label="项目名称" prop="productName" class="search-item">
|
||||
<el-input v-model="productForm.productName" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item label="车型系列" prop="standName" class="search-item">
|
||||
<el-input v-model="productForm.productSet" placeholder="请输入" />
|
||||
</el-form-item>
|
||||
<el-form-item class="search-item btn-box">
|
||||
<el-button
|
||||
icon="el-icon-search"
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
@click="searchProduct">
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<el-table
|
||||
ref="typeProjectTableDialog"
|
||||
:data="typeProjectTableList"
|
||||
border
|
||||
style="width: 100%;"
|
||||
height="100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="typeProjectTableDialogSelect">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productName"
|
||||
label="项目名称">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="productSet"
|
||||
label="车型系列">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="sopTime"
|
||||
label="SOP日期">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="eopTime"
|
||||
label="计划EOP日期">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<pagination :page="productForm.page" :total="typeProjectTableTotal"
|
||||
@pageChange="typeProjectTablePageChange" @pageSizeChange="typeProjectTablePageSizeChange"></pagination>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="typeProjectOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="typeProjectDialogClose">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 组织机构树 -->
|
||||
<el-drawer
|
||||
title="组织结构"
|
||||
:visible.sync="isTreeDrawer"
|
||||
@opened="drawerOpen"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<dept-tree
|
||||
v-if="checkType === 'person' && isTreeDrawer"
|
||||
treeDivId="roleTree"
|
||||
ref="roleTree"
|
||||
allDept
|
||||
showUser
|
||||
checkEnable
|
||||
:editable="false"
|
||||
@treeOnCheck="(checkedList) => treeOnCheck(checkedList)"
|
||||
style="overflow: auto">
|
||||
</dept-tree>
|
||||
</div>
|
||||
<div class="demo-drawer-footer" v-if="checkType === 'person' && isTreeDrawer">
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="isTreeOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="isTreeDrawer = false">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
|
||||
<!-- 2021-03-23上汽全公司选人需求 -->
|
||||
<org-table
|
||||
:visible.sync="visibleOrgTable"
|
||||
:title="orgTableTitle"
|
||||
dialog-model
|
||||
:config="{
|
||||
value: orgTableVal,
|
||||
valueName: orgTableValName
|
||||
}"
|
||||
@confirm="isTreeOk"
|
||||
></org-table>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessSearchStand from '../../../components/ProcessSearchStand'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
import {queryDetail, completeTask, saveTaskForPub, addConvertFile} from 'api/process'
|
||||
import {mapGetters} from 'vuex'
|
||||
export default {
|
||||
name: 'QbbaStep8',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessSearchStand,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
prcCreateUser: this.$store.getters.userInfo.userId,
|
||||
prcCreateUserName: this.$store.getters.userInfo.uName,
|
||||
dept: this.$store.getters.userInfo.orgId
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
// 企标备案form字段
|
||||
qbbaForm: {
|
||||
standardFile: '', // 上传企标
|
||||
productName: '', // 项目名称
|
||||
standName: '', // 标准名称
|
||||
planType: '', // 类型
|
||||
replaceStandNum: '', // 代替标准号
|
||||
productCategory: '整车', // 产品类型
|
||||
applyType: [], // 适用车辆类型
|
||||
VSE: '',
|
||||
VSEName: '',
|
||||
authentication: '', // 认证工程师
|
||||
authenticationName: '',
|
||||
statute: '', // 法规工程师
|
||||
statuteName: ''
|
||||
},
|
||||
qbbaFormRules: {
|
||||
productName: [
|
||||
{ required: true, message: '项目名称不能为空', trigger: 'change' }
|
||||
],
|
||||
standName: [
|
||||
{ required: true, message: '标准名称不能为空', trigger: 'change' }
|
||||
],
|
||||
planType: [
|
||||
{ required: true, message: '类型不能为空', trigger: 'change' }
|
||||
],
|
||||
VSE: [
|
||||
{ required: true, message: 'VSE不能为空', trigger: 'change' }
|
||||
],
|
||||
authentication: [
|
||||
{ required: true, message: '认证工程师不能为空', trigger: 'change' }
|
||||
],
|
||||
statute: [
|
||||
{ required: true, message: '法规工程师不能为空', trigger: 'change' }
|
||||
],
|
||||
standardFile: [
|
||||
{ required: true, message: '企标文件不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
defaultFileList: [],
|
||||
defaultFileList2: [],
|
||||
uploadPath: 'api/att/attFile/upload',
|
||||
importModalshowflagtemp: false,
|
||||
uploadName: '',
|
||||
typeProjectDialog: false, // 项目dialog
|
||||
// 车型项目form字段
|
||||
productForm: {
|
||||
productName: '', // 项目名称
|
||||
productSet: '', // 车辆类型
|
||||
validFlag: 0,
|
||||
page: 1,
|
||||
pageSize: this.$store.getters.userInfo.configContent
|
||||
},
|
||||
// 车型项目table字段
|
||||
typeProjectTableList: [],
|
||||
typeProjectTableSelectedList: [],
|
||||
typeProjectTableTotal: 0,
|
||||
isTreeDrawer: false,
|
||||
checkType: '', // 选取树类型(dept选取部门/person选取人员)
|
||||
treeUserNameList: [],
|
||||
treeUserIdList: [],
|
||||
selectUserId: '', // 当前要选择的人员id字段
|
||||
selectUserName: '', // 当前要选择的人员name字段
|
||||
applyArcticOptions: [], // 适用车型下拉框
|
||||
approvalHistory: [], // 审批结果
|
||||
visibleOrgTable: false,
|
||||
orgTableVal: '',
|
||||
orgTableValName: '',
|
||||
field: '',
|
||||
roleName: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击上传按钮事件
|
||||
clickButtonToUpload (current) {
|
||||
this.importModalshowflagtemp = true
|
||||
this.uploadName = current
|
||||
if (this.qbbaForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbbaForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
res.data.map(item => {
|
||||
item.name = item.oldFileName
|
||||
})
|
||||
this.defaultFileList = res.data || []
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
this.defaultFileList = []
|
||||
}
|
||||
},
|
||||
// 上传文件事件
|
||||
uploadSuccess (res, file, fileList) {
|
||||
if (res.ok) {
|
||||
this.$message({
|
||||
message: '文件上传成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.defaultFileList.push(res.data)
|
||||
} else {
|
||||
this.$message({
|
||||
message: res.message,
|
||||
type: 'error'
|
||||
})
|
||||
fileList.pop()
|
||||
}
|
||||
},
|
||||
// 文件上传之前的钩子
|
||||
beforeUpload (file) {
|
||||
let filename = file.name
|
||||
let index1 = filename.lastIndexOf('.')
|
||||
let index2 = filename.length
|
||||
let fileSuffix = filename.substring(index1, index2)
|
||||
if (fileSuffix !== '.pdf' && fileSuffix !== '.PDF' && fileSuffix !== '.doc' && fileSuffix !== '.docx') {
|
||||
this.$message.error('文件' + file.name + '格式不正确,请上传pdf、PDF、doc、docx文件')
|
||||
return false
|
||||
}
|
||||
// 判断文件上传大小
|
||||
if (file.size > 200 * 1024 * 1024) {// eslint-disable-line
|
||||
this.$message.error('文件' + file.name + '大小不超过200M')
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
removeOneFile (file, fileList) {
|
||||
this.defaultFileList.map((item, index) => {
|
||||
if (item.id === file.id) {
|
||||
this.defaultFileList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 文件超出个数限制事件
|
||||
onExceed () {
|
||||
this.$message.warning('只能上传一个附件')
|
||||
},
|
||||
// 选择项目名称事件
|
||||
selectProduct () {
|
||||
this.typeProjectDialog = true
|
||||
this.searchProduct()
|
||||
},
|
||||
// 项目抽屉关闭事件
|
||||
typeProjectDialogClose () {
|
||||
this.typeProjectDialog = false
|
||||
this.productForm.productSet = ''
|
||||
this.productForm.productName = ''
|
||||
this.productForm.page = 1
|
||||
},
|
||||
// 项目库dialog选择事件
|
||||
typeProjectTableDialogSelect (selected) {
|
||||
this.typeProjectTableSelectedList = selected
|
||||
},
|
||||
// 项目库dialog确定事件
|
||||
typeProjectOk () {
|
||||
if (this.typeProjectTableSelectedList.length === 1) {
|
||||
this.qbbaForm = {...this.typeProjectTableSelectedList[0]}
|
||||
this.qbbaForm.productName = this.typeProjectTableSelectedList[0].productName
|
||||
this.userEOList(this.qbbaForm.userEOList)
|
||||
this.typeProjectTableSelectedList = []
|
||||
this.typeProjectDialog = false
|
||||
} else {
|
||||
this.$message.warning('请选择一条数据')
|
||||
}
|
||||
},
|
||||
// 赋值项目人员
|
||||
userEOList (list) {
|
||||
let VSEList = []
|
||||
let VSENameList = []
|
||||
let authenticationList = []
|
||||
let authenticationNameList = []
|
||||
let statuteList = []
|
||||
let statuteNameList = []
|
||||
list.map(item => {
|
||||
switch (item.roleName) {
|
||||
case 'VSE':
|
||||
VSEList.push(item.tsId)
|
||||
VSENameList.push(item.userName)
|
||||
break
|
||||
case '法规工程师':
|
||||
statuteList.push(item.tsId)
|
||||
statuteNameList.push(item.userName)
|
||||
break
|
||||
case '认证工程师':
|
||||
authenticationList.push(item.tsId)
|
||||
authenticationNameList.push(item.userName)
|
||||
break
|
||||
}
|
||||
this.qbbaForm.VSE = VSEList.join(',')
|
||||
this.qbbaForm.VSEName = VSENameList.join(',')
|
||||
this.qbbaForm.authentication = authenticationList.join(',')
|
||||
this.qbbaForm.authenticationName = authenticationNameList.join(',')
|
||||
this.qbbaForm.statute = statuteList.join(',')
|
||||
this.qbbaForm.statuteName = statuteNameList.join(',')
|
||||
this.qbbaForm.productCategory = '整车'
|
||||
})
|
||||
},
|
||||
// 项目库分页事件
|
||||
typeProjectTablePageChange (page) {
|
||||
this.productForm.page = page
|
||||
this.searchProduct()
|
||||
},
|
||||
typeProjectTablePageSizeChange (pageSize) {
|
||||
this.productForm.pageSize = this.$store.getters.userInfo.configContent
|
||||
this.searchProduct()
|
||||
},
|
||||
// 项目列表搜索事件
|
||||
searchProduct () {
|
||||
this.$http.get('lawss/sarProductInfo/getProductInfoPage', this.productForm, {
|
||||
_this: this, loading: 'loading'
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.typeProjectTableList = res.data.list
|
||||
this.typeProjectTableTotal = res.data.count
|
||||
}
|
||||
})
|
||||
},
|
||||
// 打开选择人员drawer
|
||||
handleVisibleRole (selectUserId, selectUserName, roleName) {
|
||||
this.checkType = 'person'
|
||||
this.field = selectUserId
|
||||
this.visibleOrgTable = true
|
||||
this.selectUserId = selectUserId
|
||||
this.selectUserName = selectUserName
|
||||
this.orgTableVal = this.qbbaForm[this.selectUserId]
|
||||
this.orgTableValName = this.qbbaForm[this.selectUserName]
|
||||
this.roleName = roleName // 角色名称
|
||||
// 赋值回显
|
||||
this.checkIdList = this.qbbaForm[this.selectUserId] ? this.qbbaForm[this.selectUserId].split(',') : []
|
||||
},
|
||||
// 点击选择人员
|
||||
treeOnCheck (treeOnCheck) {
|
||||
this.treeUserNameList = []
|
||||
this.treeUserIdList = []
|
||||
treeOnCheck.map((item, index) => {
|
||||
if (!item.isParent) {
|
||||
this.treeUserNameList.push(item.oldname || item.name)
|
||||
this.treeUserIdList.push(item.id)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击确定赋值人员
|
||||
isTreeOk (checkedList) {
|
||||
let treeUserNameList = []
|
||||
let treeUserIdList = []
|
||||
checkedList.map((item, index) => {
|
||||
if (!item.isParent) {
|
||||
treeUserNameList.push(item.userName)
|
||||
treeUserIdList.push(item.userId)
|
||||
}
|
||||
})
|
||||
this.qbbaForm[this.selectUserName] = treeUserNameList.join(',')
|
||||
this.qbbaForm[this.selectUserId] = treeUserIdList.join(',')
|
||||
this.visibleOrgTable = false
|
||||
},
|
||||
// 赋值回显人员和部门
|
||||
drawerOpen () {
|
||||
let checkedArr = this.qbbaForm[this.selectUserId] ? this.qbbaForm[this.selectUserId].split(',') : []
|
||||
if (checkedArr.length > 0) {
|
||||
setTimeout(() => {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.roleTree.checkedNode(checkedArr)
|
||||
})
|
||||
}, 1500)
|
||||
}
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbbaForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.$refs['qbbaForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
this.qbbaForm.opinion = ''
|
||||
this.qbbaForm.remark = ''
|
||||
this.qbbaForm.opinionList = []
|
||||
this.qbbaForm.opinionAll = []
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbbaForm: this.qbbaForm
|
||||
}))
|
||||
this.addConvertFile(this.qbbaForm.standardFile).then(() => {
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
this.isSubmit = false
|
||||
this.$message.success('流程发起成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
}).catch(err => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.qbbaForm = mesg.qbbaForm
|
||||
let approvalHistory = this.qbbaForm.opinionAll
|
||||
approvalHistory.map(item => {
|
||||
item.opinionList.map(items => {
|
||||
items.itemContent = items.resNum
|
||||
items.itemApproval = items.opinionContent
|
||||
})
|
||||
this.approvalHistory.push({
|
||||
approvalUserName: item.opinionName, // 审批人
|
||||
auditOpinions: item.opinion, // 审批意见
|
||||
approvalData: item.opinionList, // 意见内容
|
||||
approvalNode: item.opinionNode, // 审批人角色
|
||||
approvalTime: item.opinionTime // 审批时间
|
||||
})
|
||||
})
|
||||
this.loading = false
|
||||
this.$refs.qbbaForm.resetFields()
|
||||
this.getFile('standardFile', 'defaultFileList')
|
||||
|
||||
})
|
||||
},
|
||||
// 请求文件
|
||||
getFile (current, fileNameList) {
|
||||
if (this.qbbaForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbbaForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @description: 企标文件文档转换
|
||||
* @author: chenxiaoxi
|
||||
* @time: 2021-03-19 09:28:46
|
||||
*/
|
||||
addConvertFile(attId) {
|
||||
const _attId = attId.replace(/,/g, '')
|
||||
return new Promise((resolve, reject) => {
|
||||
addConvertFile({
|
||||
attId: _attId
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
resolve()
|
||||
} else {
|
||||
this.$message.warning('企标文本转换失败')
|
||||
reject()
|
||||
}
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
defaultFileList (newVal, oldVal) {
|
||||
if (this.importModalshowflagtemp) {
|
||||
let fileId = []
|
||||
newVal.map(item => {
|
||||
fileId.push(item.id)
|
||||
})
|
||||
this.qbbaForm[this.uploadName] = fileId.join(',')
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo']),
|
||||
userId () {
|
||||
return this.userInfo.userId
|
||||
},
|
||||
orgTableTitle() {
|
||||
return this.roleName
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
// 从数据库中查询各下拉框数据
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
_this: this
|
||||
}, res => {
|
||||
this.applyArcticOptions = res.data.ENERGYTYPES // 根据需求文档,产品类别对应标准属性中的“适用车型”
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbbaStep8{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbbaStep8-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
.pro-table-content{
|
||||
.el-table{
|
||||
/deep/ th{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
.container{
|
||||
//height: calc(~'100% - 51.5px');
|
||||
flex: auto;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,359 @@
|
||||
<template>
|
||||
<div id="qbfs">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">复审流程</template>
|
||||
<template slot="proNode">复审发起</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="title">企标信息:</div>
|
||||
<div>
|
||||
<el-form ref="form" :model="form" class="label-input-form" label-width="150px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企业编号" prop="country" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中文名称" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准类别" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="适用区域" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标大类" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标细类" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="SVPPS" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标状态" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="规范性引用文件" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="起草部门" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草人" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代替企标编号" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发布日期" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实施日期" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="密级" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-form class="label-input-form" :model="forms" label-width="150px">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="复审" label-width="150px" class="add-form-item myForm">
|
||||
<el-radio v-model="forms.type" label="0">继续启用</el-radio>
|
||||
<el-radio v-model="forms.type" label="1">废止</el-radio>
|
||||
<el-radio v-model="forms.type" label="2">修订</el-radio>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit
|
||||
show-entrust
|
||||
@entrust="handleEntrust"
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
export default {
|
||||
name: "qbfs",
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
form: {},
|
||||
fsdata: {},
|
||||
radio1: '',
|
||||
tableData: [],
|
||||
forms: {
|
||||
type: ''
|
||||
},
|
||||
prcForm: {
|
||||
prcDeadline: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 查询数据
|
||||
getData () {
|
||||
this.$http.get('lawss/sarBussionessStand/getSarBussionStandPage', {standCode: 'wxcs6'}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.tableData = res.data.list
|
||||
}
|
||||
})
|
||||
this.$http.get('lawss/sarBussionessStand/standRemindInfo', {standCode: 'wxcs6'}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.fsdata = res.data[0]
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$http.get('lawss/activiti/startProcess', {type: '19'}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
let json = {}
|
||||
if (this.forms.type === '1') {
|
||||
json.tableData = this.tableData
|
||||
}
|
||||
json.id = this.fsdata.id
|
||||
json.userId = this.$store.getters.userInfo.userId
|
||||
json.userName = this.$store.getters.userInfo.uName
|
||||
json.type = this.forms.type
|
||||
json.standCode = this.fsdata.standCode
|
||||
json.standName = this.fsdata.standName
|
||||
json.prcDeadline = this.prcForm.prcDeadline
|
||||
json = JSON.stringify(json)
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskId: res.data,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
// 保存
|
||||
// handleSave () {},
|
||||
// 委托
|
||||
handleEntrust () {}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.getData()
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
#qbfs {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
padding: 10px;
|
||||
flex-direction: column;
|
||||
background: #fff;
|
||||
/deep/.process-header {
|
||||
padding: 0;
|
||||
}
|
||||
.myForm {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/deep/.el-form-item__content {
|
||||
background: transparent;
|
||||
margin-left: 20px !important;
|
||||
width: 100%;
|
||||
/deep/.el-input__inner {
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
.title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,561 @@
|
||||
<template>
|
||||
<div id="qbfsStep1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">复审流程</template>
|
||||
<template slot="proNode">复审发起</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo >
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="title">企标信息:</div>
|
||||
<div>
|
||||
<el-form ref="form" :model="form" class="label-input-form" label-width="150px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企业编号" prop="country" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.standCode"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中文名称" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.standName"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.standEnName"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准类别" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.standSortShow"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="适用区域" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.applyCountryShow"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标大类" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标细类" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="SVPPS" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.SVPPSName"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标状态" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.standStatusShow"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="规范性引用文件" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.GFXYYWJ"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="起草部门" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.ZRBMName"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草人" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.ZYQCRName"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代替企标编号" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.replaceStandNum"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发布日期" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.issueTime"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实施日期" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.putTime"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="密级" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="form.QBMJ"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-form ref="forms" class="label-input-form" :rules="FormsRules" :model="forms" label-width="150px">
|
||||
<el-row>
|
||||
<!-- <el-col :span="24">-->
|
||||
<!-- <el-form-item label="联络人" prop="id" label-width="150px" class="add-form-item myForm">-->
|
||||
<!-- <el-select v-model="forms.id" placeholder="请选择">-->
|
||||
<!-- <el-option-->
|
||||
<!-- v-for="(item,index) in zNode"-->
|
||||
<!-- :key="index"-->
|
||||
<!-- :label="item.name"-->
|
||||
<!-- :value="item.id">-->
|
||||
<!-- </el-option>-->
|
||||
<!-- </el-select>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="12">
|
||||
<el-form-item label="其他起草人" prop="id" class="add-form-item">
|
||||
<input v-model="forms.id" type="hidden" />
|
||||
<el-input
|
||||
v-model="forms.idName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
@click.native="handleVisibleRole('id', 'idName')"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<!-- 组织机构树 -->
|
||||
<el-drawer
|
||||
title="组织结构"
|
||||
:visible.sync="isTreeDrawer"
|
||||
@opened="drawerOpen"
|
||||
size="400px"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<!-- <laws-tree-->
|
||||
<!-- v-if="checkType === 'dept' && isTreeDrawer"-->
|
||||
<!-- :zNodes="depNode"-->
|
||||
<!-- deptSelect-->
|
||||
<!-- checkEnable-->
|
||||
<!-- treeDivId="deptTreeOrg"-->
|
||||
<!-- @treeOnCheck="(checkedList) => treeOnDeptCheck(checkedList)"-->
|
||||
<!-- :editable="false"-->
|
||||
<!-- onlyChecked-->
|
||||
<!-- :chkboxType="{ 'Y': '', 'N': '' }"-->
|
||||
<!-- ref="deptTreeOrg"-->
|
||||
<!-- class="ztree" style="overflow: auto">-->
|
||||
<!-- </laws-tree>-->
|
||||
<dept-tree
|
||||
v-if="checkType === 'person' && isTreeDrawer"
|
||||
treeDivId="roleTree"
|
||||
ref="roleTree"
|
||||
allDept
|
||||
showUser
|
||||
expandAll
|
||||
checkEnable
|
||||
:editable="false"
|
||||
:chkboxType="{ 'Y': '', 'N': '' }"
|
||||
onlyChecked
|
||||
@treeOnCheck="(checkedList) => treeOnRoleCheck(checkedList)"
|
||||
style="overflow: auto">
|
||||
</dept-tree>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button type="primary" round class="common-button-primary" icon="el-icon-check" @click="isTreeOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="isTreeDrawer = false">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import CustomDatePickWithText, {formatText} from '@/components/CustomFormComponents/DatePickerGroupWithText'
|
||||
import {autoPutFirst, autoTaskFirst, saveTaskFirst} from 'api/process'
|
||||
export default {
|
||||
name: "step1",
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
CustomDatePickWithText
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
checkType: '',
|
||||
selectUserId: '',
|
||||
selectUserName: '',
|
||||
isTreeDrawer: false,
|
||||
checkNode: [],
|
||||
treeRoleNameList: [], // 人员名称数组
|
||||
treeRoleIdList: [], // 人员ID数组
|
||||
|
||||
|
||||
taskId: '',
|
||||
FormsRules: {
|
||||
id: [
|
||||
{ required: true, message: '请选择人员', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
zNode: [],
|
||||
form: {},
|
||||
fsdata: {},
|
||||
tableData: [],
|
||||
forms: {
|
||||
id: '',
|
||||
idName: ''
|
||||
},
|
||||
prcForm: {
|
||||
prcDeadline: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
formatText(str) {
|
||||
return formatText(str)
|
||||
},
|
||||
// 打开选择人员drawer
|
||||
handleVisibleRole (selectUserId, selectUserName) {
|
||||
this.checkType = 'person'
|
||||
this.isTreeDrawer = true
|
||||
this.selectUserId = selectUserId
|
||||
this.selectUserName = selectUserName
|
||||
},
|
||||
// 人员选择事件
|
||||
treeOnRoleCheck (checkedList) {
|
||||
this.checkNode = checkedList
|
||||
this.treeRoleNameList = []
|
||||
this.treeRoleIdList = []
|
||||
checkedList.map((item, index) => {
|
||||
if (!item.isParent) {
|
||||
this.treeRoleNameList.push(item.oldname || item.name)
|
||||
this.treeRoleIdList.push(item.id)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 点击确定赋值部门和人员
|
||||
isTreeOk () {
|
||||
if (this.checkType === 'dept') {
|
||||
this.qbzxdForm.compileUnitName = this.treeDeptNameList.join(',')
|
||||
this.qbzxdForm.compileUnit = this.treeDeptIdList.join(',')
|
||||
} else if (this.checkType === 'person') {
|
||||
// 数组去重,赋值起草部门
|
||||
// let deptId = this.qbzxdForm.primaryDrafterDept.split(',')
|
||||
// let deptName = this.qbzxdForm.primaryDrafterDeptName.split(',')
|
||||
// this.checkNode.map((item) => {
|
||||
// deptId.push(item.pOrgId)
|
||||
// deptName.push(item.pOrgName)
|
||||
// })
|
||||
// this.qbzxdForm.otherDrafterDept = [...new Set(deptId)].join(',')
|
||||
// this.qbzxdForm.otherDrafterDeptName = [...new Set(deptName)].join(',')
|
||||
this.forms[this.selectUserName] = this.treeRoleNameList.join(',')
|
||||
this.forms[this.selectUserId] = this.treeRoleIdList.join(',')
|
||||
console.log('this.treeRoleIdList',this.treeRoleIdList.join(','))
|
||||
console.log('this.forms[this.selectUserId]',this.forms[this.selectUserId])
|
||||
}
|
||||
this.isTreeDrawer = false
|
||||
},
|
||||
// 赋值回显人员和部门
|
||||
drawerOpen () {
|
||||
if (this.checkType === 'dept') {
|
||||
let checkedArr = this.qbzxdForm.compileUnit ? this.qbzxdForm.compileUnit.split(',') : []
|
||||
if (checkedArr.length > 0) {
|
||||
this.$refs.deptTreeOrg.checkedNode(checkedArr)
|
||||
}
|
||||
} else if (this.checkType === 'person') {
|
||||
let checkedArr = this.forms[this.selectUserId] ? this.forms[this.selectUserId].split(',') : []
|
||||
if (checkedArr.length > 0) {
|
||||
setTimeout(() => {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.roleTree.checkedNode(checkedArr)
|
||||
})
|
||||
}, 1500)
|
||||
}
|
||||
}
|
||||
},
|
||||
getZnode (orgId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('sys/org/getTreeByRoleAndOrgId1', {
|
||||
roleName: '',
|
||||
orgId: orgId,
|
||||
processFlag: '1'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
console.log(res.data);
|
||||
res.data.list = res.data.list || []
|
||||
if (res.data.list.length !== 0) {
|
||||
for (let i = 0; i < res.data.list.length; i++) {
|
||||
let obj = {}
|
||||
for (let key in res.data.list[i]) {
|
||||
if (key === 'usId') {
|
||||
obj.id = res.data.list[i][key]
|
||||
} else if (key === 'userName') {
|
||||
obj.name = res.data.list[i][key]
|
||||
} else {
|
||||
obj.icon = 'static/images/user.png'
|
||||
obj.isParent = false
|
||||
obj[key] = res.data.list[i][key]
|
||||
}
|
||||
}
|
||||
this.zNode.push(obj)
|
||||
}
|
||||
resolve(this.zNode)
|
||||
} else {
|
||||
resolve(this.zNode)
|
||||
}
|
||||
} else {
|
||||
reject(res.message)
|
||||
}
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
},
|
||||
// 查询数据
|
||||
getData () {
|
||||
if (this.$route.query.type === '19') {
|
||||
this.$http.get('lawss/sarBussionessStand/standRemindInfo', {standCode:'SMTC 2 00A 074-2021(V1)'}, {
|
||||
// this.$http.get('lawss/sarBussionessStand/reviewProcessInitiation', {standCode:'SMTC 2 00A 074-2021(V1)'}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
console.log(res.data);
|
||||
this.form = res.data[0]
|
||||
if (res.data[0].attrInfoMap){
|
||||
this.form.SVPPSName = res.data[0].attrInfoMap.SVPPSName
|
||||
this.form.GFXYYWJ = res.data[0].attrInfoMap.GFXYYWJ
|
||||
this.form.ZRBMName = res.data[0].attrInfoMap.ZRBMName
|
||||
this.form.ZYQCRName = res.data[0].attrInfoMap.ZYQCRName
|
||||
this.form.QBMJ = res.data[0].attrInfoMap.QBMJ
|
||||
console.log(this.form.issueTime);
|
||||
}
|
||||
this.getZnode(res.data[0].attrInfoMap.ZRBM)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$http.get('lawss/activiti/fsDetail', {taskIds:this.taskId}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res) {
|
||||
console.log(res);
|
||||
this.form = res
|
||||
if (res.attrInfoMap){
|
||||
this.form.SVPPSName = res.attrInfoMap.SVPPSName
|
||||
this.form.GFXYYWJ = res.attrInfoMap.GFXYYWJ
|
||||
this.form.ZRBMName = res.attrInfoMap.ZRBMName
|
||||
this.form.ZYQCRName = res.attrInfoMap.ZYQCRName
|
||||
this.form.QBMJ = res.attrInfoMap.QBMJ
|
||||
this.form.issueTime = formatText(this.form.issueTime)
|
||||
this.form.putTime = formatText(this.form.putTime)
|
||||
}
|
||||
this.getZnode(res.attrInfoMap.ZRBM)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
if (this.$route.query.type === '19') {
|
||||
// 模拟发起接口
|
||||
this.$http.get('lawss/sarBussionessStand/reviewProcessInitiation', {}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push('/processCenter')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$refs['forms'].validate((valid) => {
|
||||
if (valid) {
|
||||
let json = {...this.form}
|
||||
json.loginUserId = this.$store.getters.userInfo.userId
|
||||
json.fgllr = this.forms[this.selectUserId]
|
||||
json.prcDeadline = this.prcForm.prcDeadline
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskIds: this.taskId,
|
||||
userId : this.$store.getters.userInfo.userId,
|
||||
json: JSON.stringify(json)
|
||||
},{_this:this}, res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push('/processCenter')
|
||||
}else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.taskId = this.$route.query.taskIds
|
||||
this.getData()
|
||||
console.log(this.$route.query.type)
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
#qbfsStep1 {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
padding: 10px;
|
||||
flex-direction: column;
|
||||
background: #fff;
|
||||
/deep/.process-header {
|
||||
padding: 0;
|
||||
}
|
||||
.myForm {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/deep/.el-form-item__content {
|
||||
background: transparent;
|
||||
margin-left: 20px !important;
|
||||
width: 100%;
|
||||
/deep/.el-input__inner {
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
.title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,556 @@
|
||||
<template>
|
||||
<div id="qbfsStep2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">复审流程</template>
|
||||
<template slot="proNode">复审发起</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder=""
|
||||
clearable
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="content">
|
||||
<div class="title">企标信息:</div>
|
||||
<div>
|
||||
<el-form ref="form" :model="fsdata" class="label-input-form" label-width="150px">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企业编号" prop="standCode" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.standCode"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中文名称" prop="standName" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.standName"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="standEnName" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.standEnName"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准类别" prop="standSortShow" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.standSortShow"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="适用区域" prop="applyCountryShow" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.applyCountryShow"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标大类" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标细类" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.account"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="SVPPS" prop="SVPPSName" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.SVPPSName"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标状态" prop="standStatusShow" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.standStatusShow"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="规范性引用文件" prop="GFXYYWJ" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.GFXYYWJ"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="起草部门" prop="ZRBM_Name" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.ZRBMName"
|
||||
autocomplete="off"
|
||||
:disabled="mainPerson"
|
||||
@click.native="handleVisibleDept"
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草人" prop="ZYQCR_Name" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.ZYQCRName"
|
||||
autocomplete="off"
|
||||
:disabled="mainPerson"
|
||||
@click.native="handleVisibleRole"
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代替企标编号" prop="replaceStandNum" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.replaceStandNum"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发布日期" prop="issueTime" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.issueTime"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实施日期" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.putTime"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="密级" prop="country" label-width="150px" class="add-form-item myForm">
|
||||
<el-input
|
||||
v-model.trim="fsdata.QBMJ"
|
||||
autocomplete="off"
|
||||
disabled
|
||||
clearable>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-form class="label-input-form" :model="forms" label-width="150px">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="复审" label-width="150px" class="add-form-item myForm">
|
||||
<el-radio-group v-model="forms.type" @change="typeChange(forms.type)">
|
||||
<el-radio :label="0">继续启用</el-radio>
|
||||
<el-radio :label="1">废止</el-radio>
|
||||
<el-radio :label="2">修订</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-submit
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<!-- 组织机构树 -->
|
||||
<el-drawer
|
||||
title="组织结构"
|
||||
:visible.sync="isTreeDrawer"
|
||||
>
|
||||
<laws-tree
|
||||
v-if="checkType === 'dept' && isTreeDrawer"
|
||||
:zNodes="depNode"
|
||||
deptSelect
|
||||
treeDivId="deptTreeOrg"
|
||||
@treeDblClick="(treeId, treeNode) => treeDbOrgTree(treeId, treeNode)"
|
||||
:editable="false"
|
||||
ref="deptTreeOrg"
|
||||
class="ztree" style="overflow: auto">
|
||||
</laws-tree>
|
||||
<dept-tree
|
||||
v-if="checkType === 'person' && isTreeDrawer"
|
||||
treeDivId="roleTree"
|
||||
ref="roleTree"
|
||||
allDept
|
||||
showUser
|
||||
:editable="false"
|
||||
@treeDblClick="(treeId, treeNode) => treeDbRoleTree(treeId, treeNode)"
|
||||
style="overflow: auto">
|
||||
</dept-tree>
|
||||
</el-drawer>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="isRoleUserTree"
|
||||
:checkIdList="checkIdList"
|
||||
checkEnable
|
||||
:BM="this.fsdata.ZRBM_Name"
|
||||
@confirm="isTreeOk"
|
||||
></role-user-tree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import {inboundLiaisonDetailForLawsAss} from 'api/process'
|
||||
export default {
|
||||
name: "step2",
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
inboundLiaisonDetailForLawsAss
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
mainPerson: true,
|
||||
isTreeDrawer: false,
|
||||
isRoleUserTree: false,
|
||||
checkIdList: [],
|
||||
checkType: '', // 选取树类型(dept选取部门/person选取人员)
|
||||
depNode: [], // 部门树内容
|
||||
fsdata: {},
|
||||
tableData: [],
|
||||
QCBM:'',
|
||||
ZQCR:'',
|
||||
forms: {
|
||||
type: ''
|
||||
},
|
||||
prcForm: {
|
||||
prcDeadline: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击确定赋值人员
|
||||
isTreeOk (checkedList) {
|
||||
let treeUserNameList = []
|
||||
let treeUserIdList = []
|
||||
checkedList.map((item, index) => {
|
||||
if (!item.isParent) {
|
||||
treeUserNameList.push(item.oldname || item.name)
|
||||
treeUserIdList.push(item.id)
|
||||
}
|
||||
})
|
||||
this.fsdata.ZYQCRName = treeUserNameList.join(',')
|
||||
this.fsdata.ZYQCR_Name = treeUserIdList.join(',')
|
||||
console.log(this.fsdata.ZYQCR_Name);
|
||||
this.isRoleUserTree = false
|
||||
},
|
||||
// 请求部门结构树
|
||||
getOrgTreeSource () {
|
||||
this.$http.get('sys/org/getTree', {}, {_this: this},
|
||||
res => {
|
||||
if (res.ok) {
|
||||
let treeNode = []
|
||||
res.data.map((item, index) => {
|
||||
let treeItem = {}
|
||||
for (let key in item) {
|
||||
if (key === 'orgName') {
|
||||
treeItem.name = item[key]
|
||||
treeItem.icon = 'static/images/dept.png'
|
||||
} else {
|
||||
treeItem[key] = item[key]
|
||||
treeItem.icon = 'static/images/dept.png'
|
||||
}
|
||||
}
|
||||
treeNode[index] = treeItem
|
||||
})
|
||||
this.depNode = treeNode
|
||||
}
|
||||
})
|
||||
},
|
||||
// 部门树双击事件
|
||||
treeDbOrgTree (treeId, treeNode) {
|
||||
// this.qbkwForm.dept = treeNode.id
|
||||
// this.qbkwForm.deptName = treeNode.name
|
||||
this.fsdata.ZRBMName = treeNode.name
|
||||
this.fsdata.ZRBM_Name = treeNode.id
|
||||
this.isTreeDrawer = false
|
||||
},
|
||||
// 人员树双击事件
|
||||
treeDbRoleTree (treeId, treeNode) {
|
||||
this.fsdata.ZYQCRName = treeNode.name
|
||||
this.fsdata.ZYQCR_Name = treeNode.id
|
||||
this.isTreeDrawer = false
|
||||
},
|
||||
// 打开选择部门drawer
|
||||
handleVisibleDept () {
|
||||
if (this.mainPerson){
|
||||
|
||||
} else {
|
||||
this.checkType = 'dept'
|
||||
this.isTreeDrawer = true
|
||||
}
|
||||
},
|
||||
// 主起草人drawer
|
||||
handleVisibleRole () {
|
||||
if (this.mainPerson){
|
||||
|
||||
} else {
|
||||
this.checkType = 'person'
|
||||
// 判断起草部门是否存在
|
||||
if (this.fsdata.ZRBM_Name) {
|
||||
this.isRoleUserTree = true
|
||||
// 赋值回显
|
||||
this.checkIdList = this.qbkwForm.ZYQCRName ? this.qbkwForm.ZYQCRName.split(',') : []
|
||||
} else {
|
||||
this.$message.warning('请先选择起草部门')
|
||||
}
|
||||
}
|
||||
},
|
||||
typeChange (type) {
|
||||
console.log(`type${type}`);
|
||||
if (type === 2){
|
||||
// 选择修订-起草部门、主起草人也不可修改
|
||||
this.mainPerson = true
|
||||
} else {
|
||||
this.mainPerson = true
|
||||
// 起草部门 主起草人 为后台返的值
|
||||
this.fsdata.ZRBMName = this.QCBM
|
||||
this.fsdata.ZYQCRName = this.ZQCR
|
||||
}
|
||||
},
|
||||
// 查询数据
|
||||
getData () {
|
||||
// return new Promise((resolve, reject) => {
|
||||
// inboundLiaisonDetailForLawsAss({
|
||||
// taskIds: this.$route.query.taskIds
|
||||
// }).then(res => {
|
||||
// if (res) {
|
||||
// console.log(res)
|
||||
// resolve()
|
||||
// }
|
||||
// }).catch(e => {})
|
||||
// })
|
||||
this.$http.get('lawss/activiti/fsDetail', {taskIds: this.$route.query.taskIds}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res) {
|
||||
console.log(res);
|
||||
this.fsdata = res
|
||||
if (res.attrInfoMap){
|
||||
this.fsdata.SVPPSName = res.attrInfoMap.SVPPSName
|
||||
this.fsdata.GFXYYWJ = res.attrInfoMap.GFXYYWJ
|
||||
this.fsdata.ZRBMName = res.attrInfoMap.ZRBMName
|
||||
this.fsdata.ZYQCRName = res.attrInfoMap.ZYQCRName
|
||||
// 起草人id
|
||||
this.fsdata.ZYQCR_Name = res.attrInfoMap.ZYQCR
|
||||
this.QCBM = res.attrInfoMap.ZRBMName
|
||||
this.ZQCR = res.attrInfoMap.ZYQCRName
|
||||
this.fsdata.QBMJ = res.attrInfoMap.QBMJ
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
let json = {}
|
||||
let id ='';
|
||||
let userId = '';
|
||||
if (this.forms.type === 1){
|
||||
id = 'qbfzlc:1:3130004';
|
||||
userId = this.$store.getters.userInfo.userId;
|
||||
}
|
||||
if (this.forms.type === 2){
|
||||
id = 'qbzxdsqlc:1:2595004';
|
||||
userId = this.fsdata.ZYQCR_Name;
|
||||
}
|
||||
if (this.forms.type !== 0){
|
||||
this.$http.get('lawss/activiti/activiti_define_start1', {id: id,userId: userId}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res) {
|
||||
json.prcId = res.prcId
|
||||
json.taskId = res.taskId
|
||||
// 继续 废止
|
||||
if (this.forms.type === 1 || this.forms.type === 0) {
|
||||
console.log('json', json);
|
||||
json.id = this.fsdata.id
|
||||
json.standCode = this.fsdata.standCode
|
||||
json.standName = this.fsdata.standName
|
||||
json.type = this.forms.type
|
||||
// 登录用户id name
|
||||
json.userId = this.$store.getters.userInfo.userId
|
||||
json.userName = this.$store.getters.userInfo.uName
|
||||
json.prcDeadline = this.prcForm.prcDeadline
|
||||
json = JSON.stringify(json)
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskId: this.$route.query.taskIds,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
// 修订
|
||||
json.id = this.fsdata.id
|
||||
console.log('userId',this.fsdata.ZYQCR_Name);
|
||||
console.log('userName',this.fsdata.ZYQCRName);
|
||||
// 起草人id name
|
||||
json.userId = this.fsdata.ZYQCR_Name
|
||||
json.userName = this.fsdata.ZYQCRName
|
||||
json.type = this.forms.type
|
||||
json.standCode = this.fsdata.standCode
|
||||
json.standName = this.fsdata.standName
|
||||
json.prcDeadline = this.prcForm.prcDeadline
|
||||
json = JSON.stringify(json)
|
||||
this.$http.post('lawss/activiti/completeTask', {
|
||||
taskId: this.$route.query.taskIds,
|
||||
json: json
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.code === 200) {
|
||||
this.$message({
|
||||
message: '提交成功',
|
||||
type: 'success'
|
||||
})
|
||||
this.$router.push({
|
||||
name: 'processCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message({
|
||||
message: '提交失败',
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.getData()
|
||||
this.getOrgTreeSource()
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
#qbfsStep2 {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
padding: 10px;
|
||||
flex-direction: column;
|
||||
background: #fff;
|
||||
/deep/.process-header {
|
||||
padding: 0;
|
||||
}
|
||||
.myForm {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/deep/.el-form-item__content {
|
||||
background: transparent;
|
||||
margin-left: 20px !important;
|
||||
width: 100%;
|
||||
/deep/.el-input__inner {
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
.content {
|
||||
flex: auto;
|
||||
.title {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,574 @@
|
||||
<!-- 企标废止流程-FO审批 -->
|
||||
<template>
|
||||
<div class="step2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标废止流程</template>
|
||||
<template slot="proNode">FO审批</template>
|
||||
</ProcessHeader>
|
||||
<div class="prc-content">
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm1"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
class="label-input-form">
|
||||
<el-form-item label="流程编号" prop="prcNum" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcNum"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcNum"
|
||||
maxlength="100"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" prop="prcName" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcName"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcName"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<el-divider content-position="left">企标废止信息</el-divider>
|
||||
<div class="prc-content-border">
|
||||
<el-table
|
||||
:data="prcForm.tableData"
|
||||
style="width: 100%;"
|
||||
height="100%"
|
||||
border
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="企标编号"
|
||||
align="center"
|
||||
width="200"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a @click="handlePreview(scope.row)" class="table-jump">
|
||||
{{ scope.row.standSortShow }} {{ scope.row.standCode }}
|
||||
</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="中文名称"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
prop="standName"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="form-wrap" style="margin-top: 10px;">
|
||||
<el-form
|
||||
ref="baseForm2"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="130px"
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-form-item
|
||||
label="废止理由"
|
||||
prop="reasonAbolition"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.reasonAbolition"
|
||||
maxlength="100"
|
||||
clearable
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请填写废止理由"></el-input>
|
||||
</el-form-item>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="审核意见"
|
||||
prop="FOAuditOpinions"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="prcForm.FOAuditOpinions"
|
||||
clearable
|
||||
placeholder="请选择审核意见">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="意见理由"
|
||||
prop="FOAuditOpinionsText"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.FOAuditOpinionsText"
|
||||
maxlength="100"
|
||||
clearable
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||
placeholder="请填写意见理由"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 下一节点处理人 -->
|
||||
<el-divider content-position="left">下一节点处理人(高级经理)</el-divider>
|
||||
<div style="width: 250px; margin-top: 20px">
|
||||
<el-input v-model="manageId" v-show="false"></el-input>
|
||||
<process-input
|
||||
v-model="manageName"
|
||||
placeholder="请选择高级经理"
|
||||
readonly
|
||||
:show-tips="userObj.showTipsUser"
|
||||
:tips="userObj.tipsUser"
|
||||
:disabled="isGjjl"
|
||||
@click="handleVisibleManage"
|
||||
></process-input>
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<loading :loading="loading.loadTask" fixed>正在查询流程详情</loading>
|
||||
<loading :loading="loading.submit" fixed>正在提交</loading>
|
||||
<loading :loading="loading.saving" fixed>正在保存</loading>
|
||||
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
:showSendEmail="needSendEmail"
|
||||
:sendEmailLoading="isSendEmail"
|
||||
@sendEmail="handleSendEmail"
|
||||
/>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="visible.visibleManageTree"
|
||||
roleName="高级经理"
|
||||
:BM="$store.getters.userInfo.orgId"
|
||||
@dblClick="dblClick"
|
||||
></role-user-tree>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import {
|
||||
qbfzlcDetail,
|
||||
completeTask,
|
||||
saveTaskForPub
|
||||
} from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'step2',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
CustomFile,
|
||||
ProcessInput
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
needSendEmail: false,
|
||||
isSendEmail: false, // 发送邮件按钮 Loading
|
||||
manageId: '',// 高级经理id
|
||||
manageName: '',
|
||||
isGjjl: false,
|
||||
userObj: {},
|
||||
visible: {
|
||||
visibleManageTree: false
|
||||
},
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
// 废止理由
|
||||
reasonAbolition: '',
|
||||
// 标准文本
|
||||
standardText: '',
|
||||
// 审核意见 1同意/2不同意
|
||||
auditOpinions: '',
|
||||
// 意见文本
|
||||
opinion: '',
|
||||
// FO审核意见
|
||||
FOAuditOpinions: '',
|
||||
// FO审核意见文本
|
||||
FOAuditOpinionsText: '',
|
||||
// 审批历史
|
||||
approvalHistory: [],
|
||||
createUser: '',
|
||||
FO: '',
|
||||
FOName: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
type: [
|
||||
{ required: true, message: '请选择制修订类型', trigger: 'change' }
|
||||
],
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
],
|
||||
reasonAbolition: [
|
||||
{ required: true, message: '废止理由不能为空', trigger: 'change' }
|
||||
],
|
||||
FOAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
FOAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
loading: {
|
||||
loadTask: false,
|
||||
saving: false,
|
||||
submit: false
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 高级经理不存在,发送邮件
|
||||
handleSendEmail(){
|
||||
this.isSendEmail = true
|
||||
this.$http.post('/lawss/mail/sendMailByRoleId', {msg :'高级经理不存在,请配置相关角色人员',roleId:'ZVXUGCP56D'},{
|
||||
_this: this,
|
||||
}, res => {
|
||||
if(res.ok){
|
||||
this.isSendEmail = false
|
||||
this.$message({
|
||||
message: '邮件发送成功',
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
}, e => {
|
||||
this.isSendEmail = false
|
||||
})
|
||||
},
|
||||
dblClick(treeNode) {
|
||||
this.manageId = treeNode.id
|
||||
this.manageName = treeNode.oldname || treeNode.name
|
||||
this.visible.visibleManageTree = false
|
||||
this.userObj.showTipsUser = false
|
||||
},
|
||||
handleVisibleManage() {
|
||||
this.visible.visibleManageTree = true
|
||||
},
|
||||
// 查询高级经理
|
||||
getGjjl () {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
orgId: this.$store.getters.userInfo.orgId,
|
||||
roleHierarchyName: '高级经理'
|
||||
}, {}, res => {
|
||||
if (res.ok) {
|
||||
let tipsUser = ''
|
||||
let showTipsUser = false
|
||||
if (res.data.length === 1) {
|
||||
this.manageId = res.data[0].userId
|
||||
this.manageName = res.data[0].userName
|
||||
this.isGjjl = true
|
||||
this.needSendEmail = false
|
||||
} else if (res.data.length > 1) {
|
||||
tipsUser += `<p><span style="color: #f56c6c;">${this.$store.getters.userInfo.orgName}</span> 下存在多个高级经理,请选择一个高级经理</p>`
|
||||
showTipsUser = true
|
||||
this.needSendEmail = false
|
||||
} else {
|
||||
tipsUser += `<p><span style="color: #f56c6c;">${this.$store.getters.userInfo.orgName}</span> 下的高级经理不存在,请及时维护</p>`
|
||||
showTipsUser = true
|
||||
this.needSendEmail = true
|
||||
}
|
||||
this.userObj = {
|
||||
tipsUser,
|
||||
showTipsUser
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-11-26 16:10:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSave() {
|
||||
this.loading.saving = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
_formData.append('FOAuditOpinions', prcForm.FOAuditOpinions)
|
||||
_formData.append('pId', this.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.loading.saving = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.saving = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-11-26 16:10:15
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSubmit() {
|
||||
let success = 0
|
||||
this.$refs['baseForm2'].validate(valid => {
|
||||
if (valid) {
|
||||
success++
|
||||
}
|
||||
})
|
||||
if (success === 1) {
|
||||
this.loading.submit = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
prcForm.manageId = this.manageId
|
||||
prcForm.approvalHistory.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: prcForm.FOAuditOpinions,
|
||||
auditOpinionsText: prcForm.FOAuditOpinionsText,
|
||||
approvalNode: 'FO审批',
|
||||
approvalTime: ''
|
||||
})
|
||||
prcForm.foFillUser = this.$store.getters.userInfo.userId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskId', this.taskIds)
|
||||
_formData.append('FOAuditOpinions', prcForm.FOAuditOpinions)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
completeTask(_formData).then(res => {
|
||||
this.loading.submit = false
|
||||
if (res.success) {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
} else {
|
||||
let message = res.message
|
||||
if (message.indexOf('1#2') !== -1){
|
||||
message = message.split('1#2')[1]
|
||||
this.$message.warning(message)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.submit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
},
|
||||
|
||||
handleAuditOpinionsChange(val) {
|
||||
if (val === 1) {
|
||||
this.prcForm.opinion = '同意'
|
||||
} else {
|
||||
this.prcForm.opinion = '不同意'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标废止流程详情查询
|
||||
* @date: 2020-12-05 15:39:50
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
qbfzlcDetail() {
|
||||
this.loading.loadTask = true
|
||||
qbfzlcDetail({
|
||||
taskIds: this.taskIds
|
||||
}).then(res => {
|
||||
this.loading.loadTask = false
|
||||
if (res) {
|
||||
console.log('res', res);
|
||||
this.prcForm.prcDeadline = res.prcDeadline
|
||||
this.prcForm.tableData = res.tableData
|
||||
this.prcForm.reasonAbolition = res.reasonAbolition
|
||||
this.prcForm.FOAuditOpinions = res.FOAuditOpinions || ''
|
||||
this.prcForm.FOAuditOpinionsText = res.FOAuditOpinionsText || ''
|
||||
this.prcForm.approvalHistory = res.approvalHistory || []
|
||||
this.prcForm.createUser = res.createUser
|
||||
this.prcForm.FO = res.FO
|
||||
this.prcForm.FOName = res.FOName
|
||||
// 下一节点处理人
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.loadTask = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标详情查看
|
||||
* @date: 2020-12-01 14:12:02
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherBussStandardDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'BUSINESS_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
taskIds() {
|
||||
return this.$route.query.taskIds
|
||||
},
|
||||
...mapGetters(['getHandleInfo'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.prcForm.prcName = this.getHandleInfo.prcName
|
||||
this.prcForm.prcNum = this.getHandleInfo.prcNum
|
||||
this.prcForm.prcType = this.getHandleInfo.prcType
|
||||
this.qbfzlcDetail()
|
||||
this.getGjjl()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step2 {
|
||||
padding: 0 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content-border{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
.btn-wrap {
|
||||
height: 49px;
|
||||
line-height: 49px;
|
||||
}
|
||||
.search-btn-wrap {
|
||||
height: 49px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.search-btn {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
font-size: 14px;
|
||||
color: #409EFF;
|
||||
border: 1px solid #409EFF;
|
||||
border-radius: 15px;
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
|
||||
}
|
||||
.standard-content {
|
||||
height: 100%;
|
||||
padding-bottom: 50px;
|
||||
.content {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
.standard-table-wrap {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
/deep/ .pagination {
|
||||
position: static;
|
||||
.pagination-slot {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.add-form-item {
|
||||
/deep/ .el-form-item__content {
|
||||
background: #fff;
|
||||
}
|
||||
/deep/ .add-form-item {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
.prc-content-border {
|
||||
/deep/ .el-form-item__label {
|
||||
color: #666;
|
||||
}
|
||||
/deep/ .el-form-item__content {
|
||||
.el-input__inner,
|
||||
.el-textarea__inner {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,568 @@
|
||||
<!-- 企标废止流程-高级经理审批 -->
|
||||
<template>
|
||||
<div class="step3">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标废止流程</template>
|
||||
<template slot="proNode">高级经理审批</template>
|
||||
</ProcessHeader>
|
||||
<div class="prc-content">
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm1"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
class="label-input-form">
|
||||
<el-form-item label="流程编号" prop="prcNum" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcNum"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcNum"
|
||||
maxlength="100"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" prop="prcName" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcName"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcName"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<el-divider content-position="left">企标废止信息</el-divider>
|
||||
<div class="prc-content-border">
|
||||
<el-table
|
||||
:data="prcForm.tableData"
|
||||
style="width: 100%;"
|
||||
height="100%"
|
||||
border
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="企标编号"
|
||||
align="center"
|
||||
width="200"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a @click="handlePreview(scope.row)" class="table-jump">
|
||||
{{ scope.row.standSortShow }} {{ scope.row.standCode }}
|
||||
</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="中文名称"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
prop="standName"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="form-wrap" style="margin-top: 10px;">
|
||||
<el-form
|
||||
ref="baseForm2"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="130px"
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="废止理由"
|
||||
prop="reasonAbolition"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.reasonAbolition"
|
||||
maxlength="100"
|
||||
clearable
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||
disabled
|
||||
placeholder="请填写废止理由"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="审核意见"
|
||||
prop="managerAuditOpinions"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="prcForm.managerAuditOpinions"
|
||||
clearable
|
||||
placeholder="请选择审核意见">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="意见理由"
|
||||
prop="managerAuditOpinionsText"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.managerAuditOpinionsText"
|
||||
maxlength="100"
|
||||
clearable
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||
placeholder="请填写意见理由"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-row :gutter="24" v-if="needSendEmail">-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item label="企标工程师" prop="qbgcs" class="add-form-item">-->
|
||||
<!-- <input v-model="prcForm.qbgcs" type="hidden" />-->
|
||||
<!-- <process-input-->
|
||||
<!-- v-model="prcForm.qbgcsName"-->
|
||||
<!-- placeholder="暂无企标工程师"-->
|
||||
<!-- readonly-->
|
||||
<!-- :show-tips="qbgcsTips.show"-->
|
||||
<!-- :tips="qbgcsTips.msg"-->
|
||||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<loading :loading="loading.loadTask" fixed>正在查询流程详情</loading>
|
||||
<loading :loading="loading.submit" fixed>正在提交</loading>
|
||||
<loading :loading="loading.saving" fixed>正在保存</loading>
|
||||
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
/>
|
||||
<!-- :showSendEmail="needSendEmail"-->
|
||||
<!-- :sendEmailLoading="isSendEmail"-->
|
||||
<!-- @sendEmail="handleSendEmail"-->
|
||||
<!-- <ProcessFooter-->
|
||||
<!-- show-save-->
|
||||
<!-- show-submit-->
|
||||
<!-- :submitLoading="isSubmit"-->
|
||||
<!-- :saveLoading="saveLoading"-->
|
||||
<!-- @save="handleSaveEmail"-->
|
||||
<!-- @submit="handleSubmitEmail"-->
|
||||
<!-- :showSendEmail="needSendEmail"-->
|
||||
<!-- :sendEmailLoading="isSendEmail"-->
|
||||
<!-- @sendEmail="handleSendEmail"-->
|
||||
<!-- >-->
|
||||
<!-- </ProcessFooter>-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import { mapGetters } from 'vuex'
|
||||
import {
|
||||
qbfzlcDetail,
|
||||
completeTask,
|
||||
saveTaskForPub
|
||||
} from 'api/process'
|
||||
export default {
|
||||
name: 'step3',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
CustomFile,
|
||||
ProcessInput
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
needSendEmail: false,
|
||||
isSendEmail: false, // 发送邮件按钮 Loading
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
// 废止理由
|
||||
reasonAbolition: '',
|
||||
// 标准文本
|
||||
standardText: '',
|
||||
// 审核意见 1同意/2不同意
|
||||
auditOpinions: '',
|
||||
// 意见文本
|
||||
opinion: '',
|
||||
// FO审核意见
|
||||
FOAuditOpinions: '',
|
||||
// FO审核意见文本
|
||||
FOAuditOpinionsText: '',
|
||||
// 高级经理审核意见
|
||||
managerAuditOpinions: '',
|
||||
// 高级经理审核意见文本
|
||||
managerAuditOpinionsText: '',
|
||||
createUser: '',
|
||||
approvalHistory: [],
|
||||
qbgcs: '', // 企标工程师id
|
||||
qbgcsName: '' //企标工程师
|
||||
},
|
||||
qbgcsTips: {
|
||||
msg: '',
|
||||
show: false
|
||||
},
|
||||
prcFormRules: {
|
||||
type: [
|
||||
{ required: true, message: '请选择制修订类型', trigger: 'change' }
|
||||
],
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
],
|
||||
reasonAbolition: [
|
||||
{ required: true, message: '废止理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
FOName: [
|
||||
{ required: true, message: 'FO不能为空', trigger: 'blur' }
|
||||
],
|
||||
FOAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
FOAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
managerAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
managerAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
loading: {
|
||||
loadTask: false,
|
||||
submit: false,
|
||||
saving: false
|
||||
},
|
||||
tableData: {
|
||||
standardData: []
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 发送邮件
|
||||
// handleSendEmail(){
|
||||
// this.isSendEmail = true
|
||||
// this.$http.get('/lawss/mail/sendMailByUserId', {msg :'企业标准管理工程师不存在,请配置相关角色人员',userId:'WY8J26MH23'},{
|
||||
// _this: this,
|
||||
// }, res => {
|
||||
// if(res.ok){
|
||||
// this.isSendEmail = false
|
||||
// this.$message({
|
||||
// message: '邮件发送成功',
|
||||
// type: 'success'
|
||||
// })
|
||||
// }
|
||||
// }, e => {
|
||||
// this.isSendEmail = false
|
||||
// })
|
||||
// },
|
||||
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-11-26 16:10:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSave() {
|
||||
this.loading.saving = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
_formData.append('managerAuditOpinions', prcForm.managerAuditOpinions)
|
||||
_formData.append('pId', this.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.loading.saving = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.saving = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-11-26 16:10:15
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSubmit() {
|
||||
let success = 0
|
||||
this.$refs['baseForm2'].validate(valid => {
|
||||
if (valid) {
|
||||
success++
|
||||
}
|
||||
})
|
||||
if (success === 1) {
|
||||
this.loading.submit = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskId', this.taskIds)
|
||||
_formData.append('qbgcs', prcForm.qbgcs)
|
||||
_formData.append('managerAuditOpinions', prcForm.managerAuditOpinions)
|
||||
prcForm.approvalHistory.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: prcForm.managerAuditOpinions,
|
||||
auditOpinionsText: prcForm.managerAuditOpinionsText,
|
||||
approvalNode: '高级经理审批',
|
||||
approvalTime: ''
|
||||
})
|
||||
prcForm.gjjlFillUser = this.$store.getters.userInfo.userId
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
completeTask(_formData).then(res => {
|
||||
this.loading.submit = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.submit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
},
|
||||
|
||||
handleAuditOpinionsChange(val) {
|
||||
if (val === 1) {
|
||||
this.prcForm.opinion = '同意'
|
||||
} else {
|
||||
this.prcForm.opinion = '不同意'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标废止流程详情查询
|
||||
* @date: 2020-12-05 15:39:50
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
qbfzlcDetail() {
|
||||
this.loading.loadTask = true
|
||||
qbfzlcDetail({
|
||||
taskIds: this.taskIds
|
||||
}).then(res => {
|
||||
this.loading.loadTask = false
|
||||
if (res) {
|
||||
this.prcForm.prcDeadline = res.prcDeadline
|
||||
this.prcForm.tableData = res.tableData
|
||||
this.prcForm.reasonAbolition = res.reasonAbolition
|
||||
this.prcForm.managerAuditOpinions = res.managerAuditOpinions || ''
|
||||
this.prcForm.managerAuditOpinionsText = res.managerAuditOpinionsText || ''
|
||||
this.prcForm.approvalHistory = res.approvalHistory || []
|
||||
this.prcForm.createUser = res.createUser
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.loadTask = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标详情查看
|
||||
* @date: 2020-12-01 14:12:02
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherBussStandardDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'BUSINESS_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
taskIds() {
|
||||
return this.$route.query.taskIds
|
||||
},
|
||||
...mapGetters(['getHandleInfo'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.prcForm.prcName = this.getHandleInfo.prcName
|
||||
this.prcForm.prcNum = this.getHandleInfo.prcNum
|
||||
this.prcForm.prcType = this.getHandleInfo.prcType
|
||||
this.qbfzlcDetail()
|
||||
// this.$http.get('sys/org/getManagerByOrgIdNew', {
|
||||
// roleName: '企业标准管理工程师'
|
||||
// }, {
|
||||
// _this: this
|
||||
// }, res => {
|
||||
// if (res.ok) {
|
||||
// if (res.data.length > 0) {
|
||||
// const nameArr = res.data.map(item => item.userName)
|
||||
// const idArr = res.data.map(item => item.usId)
|
||||
// this.prcForm.qbgcs = idArr.join(',')
|
||||
// console.log(this.prcForm.qbgcs);
|
||||
// this.prcForm.qbgcsName = nameArr.join(',')
|
||||
// this.needSendEmail = false
|
||||
// } else {
|
||||
// this.qbgcsTips.msg = '企业标准管理工程师不存在,请配置相关角色人员'
|
||||
// this.qbgcsTips.show = true
|
||||
// this.needSendEmail = true
|
||||
// }
|
||||
// }
|
||||
// }, e => {
|
||||
// console.error(e)
|
||||
// })
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step3 {
|
||||
padding: 0 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content-border{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
.btn-wrap {
|
||||
height: 49px;
|
||||
line-height: 49px;
|
||||
}
|
||||
.search-btn-wrap {
|
||||
height: 49px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.search-btn {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
font-size: 14px;
|
||||
color: #409EFF;
|
||||
border: 1px solid #409EFF;
|
||||
border-radius: 15px;
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
|
||||
}
|
||||
.standard-content {
|
||||
height: 100%;
|
||||
padding-bottom: 50px;
|
||||
.content {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
.standard-table-wrap {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
/deep/ .pagination {
|
||||
position: static;
|
||||
.pagination-slot {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.add-form-item {
|
||||
/deep/ .el-form-item__content {
|
||||
background: #fff;
|
||||
}
|
||||
/deep/ .add-form-item {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
.prc-content-border {
|
||||
/deep/ .el-form-item__label {
|
||||
color: #666;
|
||||
}
|
||||
/deep/ .el-form-item__content {
|
||||
.el-input__inner,
|
||||
.el-textarea__inner {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,488 @@
|
||||
<!-- 企标废止流程-部门总监审批(作废,2021-02-03需求取消该节点) -->
|
||||
<template>
|
||||
<div class="step4">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标废止流程</template>
|
||||
<template slot="proNode">部门总监审批</template>
|
||||
</ProcessHeader>
|
||||
<div class="prc-content">
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm1"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
class="label-input-form">
|
||||
<el-form-item label="流程编号" prop="prcNum" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcNum"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcNum"
|
||||
maxlength="100"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" prop="prcName" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcName"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcName"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<el-divider content-position="left">企标废止信息</el-divider>
|
||||
<div class="prc-content-border">
|
||||
<el-table
|
||||
:data="prcForm.tableData"
|
||||
style="width: 100%;"
|
||||
height="100%"
|
||||
border
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="企标编号"
|
||||
align="center"
|
||||
width="200"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a @click="handlePreview(scope.row)" class="table-jump">
|
||||
{{ scope.row.standSortShow }} {{ scope.row.standCode }}
|
||||
</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="中文名称"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
prop="standName"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="form-wrap" style="margin-top: 10px;">
|
||||
<el-form
|
||||
ref="baseForm2"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="130px"
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="废止理由"
|
||||
prop="reasonAbolition"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.reasonAbolition"
|
||||
maxlength="100"
|
||||
clearable
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||
disabled
|
||||
placeholder="请填写废止理由"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="审核意见"
|
||||
prop="chiefInspectorAuditOpinions"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="prcForm.chiefInspectorAuditOpinions"
|
||||
clearable
|
||||
placeholder="请选择审核意见">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="意见理由"
|
||||
prop="chiefInspectorAuditOpinionsText"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.chiefInspectorAuditOpinionsText"
|
||||
maxlength="100"
|
||||
clearable
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||
placeholder="请填写意见理由"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<loading :loading="loading.loadTask" fixed>正在查询流程详情</loading>
|
||||
<loading :loading="loading.submit" fixed>正在提交</loading>
|
||||
<loading :loading="loading.saving" fixed>正在保存</loading>
|
||||
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import {
|
||||
qbfzlcDetail,
|
||||
completeTask,
|
||||
saveTaskForPub
|
||||
} from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'step4',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
// 废止理由
|
||||
reasonAbolition: '',
|
||||
// 标准文本
|
||||
standardText: '',
|
||||
// 审核意见 1同意/2不同意
|
||||
auditOpinions: '',
|
||||
// 意见文本
|
||||
opinion: '',
|
||||
// FO审核意见
|
||||
FOAuditOpinions: '',
|
||||
// FO审核意见文本
|
||||
FOAuditOpinionsText: '',
|
||||
// 高级经理审核意见
|
||||
managerAuditOpinions: '',
|
||||
// 高级经理审核意见文本
|
||||
managerAuditOpinionsText: '',
|
||||
// 部门总监审核意见
|
||||
chiefInspectorAuditOpinions: '',
|
||||
// 部门总监审核意见文本
|
||||
chiefInspectorAuditOpinionsText: '',
|
||||
createUser: '',
|
||||
approvalHistory: []
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
],
|
||||
reasonAbolition: [
|
||||
{ required: true, message: '废止理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
FOName: [
|
||||
{ required: true, message: 'FO不能为空', trigger: 'blur' }
|
||||
],
|
||||
FOAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
FOAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
managerAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
managerAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
chiefInspectorAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
chiefInspectorAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
loading: {
|
||||
loadTask: false,
|
||||
submit: false,
|
||||
saving: false
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-11-26 16:10:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSave() {
|
||||
this.loading.saving = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
_formData.append('chiefInspectorAuditOpinions', prcForm.chiefInspectorAuditOpinions)
|
||||
_formData.append('pId', this.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.loading.saving = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.saving = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-11-26 16:10:15
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSubmit() {
|
||||
let success = 0
|
||||
this.$refs['baseForm2'].validate(valid => {
|
||||
if (valid) {
|
||||
success++
|
||||
}
|
||||
})
|
||||
if (success === 1) {
|
||||
this.loading.submit = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskId', this.taskIds)
|
||||
_formData.append('chiefInspectorAuditOpinions', prcForm.chiefInspectorAuditOpinions)
|
||||
prcForm.approvalHistory.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: prcForm.chiefInspectorAuditOpinions,
|
||||
auditOpinionsText: prcForm.chiefInspectorAuditOpinionsText,
|
||||
approvalNode: '部门总监审批',
|
||||
approvalTime: ''
|
||||
})
|
||||
prcForm.bmzjFillUser = this.$store.getters.userInfo.userId
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
completeTask(_formData).then(res => {
|
||||
this.loading.submit = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('提交成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.submit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
},
|
||||
|
||||
handleAuditOpinionsChange(val) {
|
||||
if (val === 1) {
|
||||
this.prcForm.opinion = '同意'
|
||||
} else {
|
||||
this.prcForm.opinion = '不同意'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标废止流程详情查询
|
||||
* @date: 2020-12-05 15:39:50
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
qbfzlcDetail() {
|
||||
this.loading.loadTask = true
|
||||
qbfzlcDetail({
|
||||
taskIds: this.taskIds
|
||||
}).then(res => {
|
||||
this.loading.loadTask = false
|
||||
if (res) {
|
||||
this.prcForm.prcDeadline = res.prcDeadline
|
||||
this.prcForm.tableData = res.tableData
|
||||
this.prcForm.reasonAbolition = res.reasonAbolition
|
||||
this.prcForm.chiefInspectorAuditOpinions = res.chiefInspectorAuditOpinions || ''
|
||||
this.prcForm.chiefInspectorAuditOpinionsText = res.chiefInspectorAuditOpinionsText || ''
|
||||
this.prcForm.approvalHistory = res.approvalHistory || []
|
||||
this.prcForm.createUser = res.createUser
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.loadTask = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标详情查看
|
||||
* @date: 2020-12-01 14:12:02
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherBussStandardDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'BUSINESS_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
taskIds() {
|
||||
return this.$route.query.taskIds
|
||||
},
|
||||
...mapGetters(['getHandleInfo'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.prcForm.prcName = this.getHandleInfo.prcName
|
||||
this.prcForm.prcNum = this.getHandleInfo.prcNum
|
||||
this.prcForm.prcType = this.getHandleInfo.prcType
|
||||
this.qbfzlcDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step4 {
|
||||
padding: 0 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content-border{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
.btn-wrap {
|
||||
height: 49px;
|
||||
line-height: 49px;
|
||||
}
|
||||
.search-btn-wrap {
|
||||
height: 49px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.search-btn {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
font-size: 14px;
|
||||
color: #409EFF;
|
||||
border: 1px solid #409EFF;
|
||||
border-radius: 15px;
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
|
||||
}
|
||||
.standard-content {
|
||||
height: 100%;
|
||||
padding-bottom: 50px;
|
||||
.content {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
.standard-table-wrap {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
/deep/ .pagination {
|
||||
position: static;
|
||||
.pagination-slot {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.add-form-item {
|
||||
/deep/ .el-form-item__content {
|
||||
background: #fff;
|
||||
}
|
||||
/deep/ .add-form-item {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
.prc-content-border {
|
||||
/deep/ .el-form-item__label {
|
||||
color: #666;
|
||||
}
|
||||
/deep/ .el-form-item__content {
|
||||
.el-input__inner,
|
||||
.el-textarea__inner {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,544 @@
|
||||
<!-- 企标废止流程-企标工程师审批 -->
|
||||
<template>
|
||||
<div class="step5">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标废止流程</template>
|
||||
<template slot="proNode">企标工程师审批</template>
|
||||
</ProcessHeader>
|
||||
<div class="prc-content">
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm1"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
class="label-input-form">
|
||||
<el-form-item label="流程编号" prop="prcNum" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcNum"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcNum"
|
||||
maxlength="100"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" prop="prcName" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcName"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcName"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<el-divider content-position="left">企标废止信息</el-divider>
|
||||
<div class="prc-content-border">
|
||||
<el-table
|
||||
:data="prcForm.tableData"
|
||||
style="width: 100%;"
|
||||
height="100%"
|
||||
border
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="企标编号"
|
||||
align="center"
|
||||
width="200"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a @click="handlePreview(scope.row)" class="table-jump">
|
||||
{{ scope.row.standSortShow }} {{ scope.row.standCode }}
|
||||
</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="中文名称"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
prop="standName"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="form-wrap" style="margin-top: 10px;">
|
||||
<el-form
|
||||
ref="baseForm2"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="130px"
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="废止理由"
|
||||
prop="reasonAbolition"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.reasonAbolition"
|
||||
maxlength="100"
|
||||
clearable
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||
disabled
|
||||
placeholder="请填写废止理由"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="审核意见"
|
||||
prop="enterpriseBidEngineerAuditOpinions"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="prcForm.enterpriseBidEngineerAuditOpinions"
|
||||
clearable
|
||||
placeholder="请选择审核意见">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="意见理由"
|
||||
prop="enterpriseBidEngineerAuditOpinionsText"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.enterpriseBidEngineerAuditOpinionsText"
|
||||
maxlength="100"
|
||||
clearable
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||
placeholder="请填写意见理由"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<loading :loading="loading.loadTask" fixed>正在查询流程详情</loading>
|
||||
<loading :loading="loading.submit" fixed>正在提交</loading>
|
||||
<loading :loading="loading.saving" fixed>正在保存</loading>
|
||||
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import { mapGetters, mapMutations } from 'vuex'
|
||||
import {
|
||||
qbfzlcDetail,
|
||||
completeTask,
|
||||
bussAbolishProcess,
|
||||
saveTaskForPub,
|
||||
isEnd
|
||||
} from 'api/process'
|
||||
export default {
|
||||
name: 'step5',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
// 废止理由
|
||||
reasonAbolition: '',
|
||||
// 标准文本
|
||||
standardText: '',
|
||||
// 审核意见 1同意/2不同意
|
||||
auditOpinions: '',
|
||||
// 意见文本
|
||||
opinion: '',
|
||||
// FO审核意见
|
||||
FOAuditOpinions: '',
|
||||
// FO审核意见文本
|
||||
FOAuditOpinionsText: '',
|
||||
// 高级经理审核意见
|
||||
managerAuditOpinions: '',
|
||||
// 高级经理审核意见文本
|
||||
managerAuditOpinionsText: '',
|
||||
// 部门总监审核意见
|
||||
chiefInspectorAuditOpinions: '',
|
||||
// 部门总监审核意见文本
|
||||
chiefInspectorAuditOpinionsText: '',
|
||||
// 企标工程师审核意见
|
||||
enterpriseBidEngineerAuditOpinions: '',
|
||||
// 企标工程师审核意见文本
|
||||
enterpriseBidEngineerAuditOpinionsText: '',
|
||||
createUser: '',
|
||||
approvalHistory: []
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
],
|
||||
reasonAbolition: [
|
||||
{ required: true, message: '废止理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
FOName: [
|
||||
{ required: true, message: 'FO不能为空', trigger: 'blur' }
|
||||
],
|
||||
FOAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
FOAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
managerAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
managerAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
chiefInspectorAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
chiefInspectorAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
enterpriseBidEngineerAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
enterpriseBidEngineerAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
loading: {
|
||||
loadTask: false,
|
||||
submit: false,
|
||||
saving: false
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-11-26 16:10:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSave() {
|
||||
this.loading.saving = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
_formData.append('enterpriseBidEngineerAuditOpinions', prcForm.enterpriseBidEngineerAuditOpinions)
|
||||
_formData.append('pId', this.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.loading.saving = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.saving = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-11-26 16:10:15
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSubmit() {
|
||||
let success = 0
|
||||
this.$refs['baseForm2'].validate(valid => {
|
||||
if (valid) {
|
||||
success++
|
||||
}
|
||||
})
|
||||
if (success === 1) {
|
||||
this.loading.submit = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskId', this.taskIds)
|
||||
_formData.append('enterpriseBidEngineerAuditOpinions', prcForm.enterpriseBidEngineerAuditOpinions)
|
||||
prcForm.approvalHistory.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: prcForm.enterpriseBidEngineerAuditOpinions,
|
||||
auditOpinionsText: prcForm.enterpriseBidEngineerAuditOpinionsText,
|
||||
approvalNode: '企标工程师审批',
|
||||
approvalTime: ''
|
||||
})
|
||||
prcForm.qbgcsFillUser = this.$store.getters.userInfo.userId
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
completeTask(_formData).then(res => {
|
||||
this.loading.submit = false
|
||||
if (res.message === '操作成功') {
|
||||
if (prcForm.enterpriseBidEngineerAuditOpinions === '0') {
|
||||
// 判断流程是否结束
|
||||
isEnd({
|
||||
pId: this.$store.getters.getHandleInfo.prcId
|
||||
}).then(res => {
|
||||
if (res === 1) {
|
||||
this.bussAbolishProcess(JSON.stringify(prcForm))
|
||||
} else {
|
||||
this.$message.success('审批任务完成')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.success('提交成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
}
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.submit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
},
|
||||
|
||||
handleAuditOpinionsChange(val) {
|
||||
if (val === 1) {
|
||||
this.prcForm.opinion = '同意'
|
||||
} else {
|
||||
this.prcForm.opinion = '不同意'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标废止流程详情查询
|
||||
* @date: 2020-12-05 15:39:50
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
qbfzlcDetail() {
|
||||
this.loading.loadTask = true
|
||||
qbfzlcDetail({
|
||||
taskIds: this.proLastDetail ? this.proLastDetail.taskIds : this.taskIds
|
||||
}).then(res => {
|
||||
this.loading.loadTask = false
|
||||
if (res) {
|
||||
this.prcForm.prcDeadline = res.prcDeadline
|
||||
this.prcForm.tableData = res.tableData
|
||||
this.prcForm.reasonAbolition = res.reasonAbolition
|
||||
this.prcForm.enterpriseBidEngineerAuditOpinions = res.enterpriseBidEngineerAuditOpinions || ''
|
||||
this.prcForm.enterpriseBidEngineerAuditOpinionsText = res.enterpriseBidEngineerAuditOpinionsText || ''
|
||||
this.prcForm.approvalHistory = res.approvalHistory || []
|
||||
this.prcForm.createUser = res.createUser
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.loadTask = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 流程入库
|
||||
* @date: 2020-12-08 11:39:49
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
bussAbolishProcess(json) {
|
||||
const _formData = new FormData()
|
||||
_formData.append('infoJson', json)
|
||||
bussAbolishProcess(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('企标废止成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标详情查看
|
||||
* @date: 2020-12-01 14:12:02
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherBussStandardDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'BUSINESS_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
|
||||
...mapMutations(['setPrcLastDetail'])
|
||||
},
|
||||
computed: {
|
||||
taskIds() {
|
||||
return this.$route.query.taskIds
|
||||
},
|
||||
...mapGetters(['getHandleInfo', 'proLastDetail'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.prcForm.prcName = this.getHandleInfo.prcName
|
||||
this.prcForm.prcNum = this.getHandleInfo.prcNum
|
||||
this.prcForm.prcType = this.getHandleInfo.prcType
|
||||
this.qbfzlcDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step5 {
|
||||
padding: 0 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content-border{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
.btn-wrap {
|
||||
height: 49px;
|
||||
line-height: 49px;
|
||||
}
|
||||
.search-btn-wrap {
|
||||
height: 49px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.search-btn {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
font-size: 14px;
|
||||
color: #409EFF;
|
||||
border: 1px solid #409EFF;
|
||||
border-radius: 15px;
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
|
||||
}
|
||||
.standard-content {
|
||||
height: 100%;
|
||||
padding-bottom: 50px;
|
||||
.content {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
.standard-table-wrap {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
/deep/ .pagination {
|
||||
position: static;
|
||||
.pagination-slot {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.add-form-item {
|
||||
/deep/ .el-form-item__content {
|
||||
background: #fff;
|
||||
}
|
||||
/deep/ .add-form-item {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
.prc-content-border {
|
||||
/deep/ .el-form-item__label {
|
||||
color: #666;
|
||||
}
|
||||
/deep/ .el-form-item__content {
|
||||
.el-input__inner,
|
||||
.el-textarea__inner {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,490 @@
|
||||
<!-- 企标废止流程-汇总 -->
|
||||
<template>
|
||||
<div class="step6">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标废止流程</template>
|
||||
<template slot="proNode">汇总</template>
|
||||
</ProcessHeader>
|
||||
<div class="prc-content">
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm1"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
class="label-input-form">
|
||||
<el-form-item label="流程编号" prop="prcNum" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcNum"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcNum"
|
||||
maxlength="100"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" prop="prcName" class="search-item">
|
||||
<el-input
|
||||
:title="prcForm.prcName"
|
||||
class="process-textarea"
|
||||
v-model="prcForm.prcName"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请输入流程名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<el-divider content-position="left">企标废止信息</el-divider>
|
||||
<div class="prc-content-border">
|
||||
<el-table
|
||||
:data="prcForm.tableData"
|
||||
style="width: 100%;"
|
||||
height="100%"
|
||||
border
|
||||
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
|
||||
>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
width="100"
|
||||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="企标编号"
|
||||
align="center"
|
||||
width="200"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a @click="handlePreview(scope.row)" class="table-jump">
|
||||
{{ scope.row.standSortShow }} {{ scope.row.standCode }}
|
||||
</a>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="中文名称"
|
||||
align="center"
|
||||
show-overflow-tooltip
|
||||
prop="standName"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="form-wrap" style="margin-top: 10px;">
|
||||
<el-form
|
||||
ref="baseForm2"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="130px"
|
||||
class="label-input-form"
|
||||
>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="废止理由"
|
||||
prop="reasonAbolition"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.reasonAbolition"
|
||||
maxlength="100"
|
||||
clearable
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 4, maxRows: 6 }"
|
||||
disabled
|
||||
placeholder="请填写废止理由"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<!--审批结果-->
|
||||
<ProcessApprovalHistory :approvalData="prcForm.approvalHistory"></ProcessApprovalHistory>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<loading :loading="loading.loadTask" fixed>正在查询流程详情</loading>
|
||||
<loading :loading="loading.submit" fixed>正在提交</loading>
|
||||
<loading :loading="loading.saving" fixed>正在保存</loading>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
import { mapGetters, mapMutations } from 'vuex'
|
||||
import {
|
||||
qbfzlcDetail,
|
||||
completeTask,
|
||||
bussAbolishProcess,
|
||||
saveTaskForPub
|
||||
} from 'api/process'
|
||||
export default {
|
||||
name: 'step6',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
// 废止理由
|
||||
reasonAbolition: '',
|
||||
// 标准文本
|
||||
standardText: '',
|
||||
// 审核意见 1同意/2不同意
|
||||
auditOpinions: '',
|
||||
// 意见文本
|
||||
opinion: '',
|
||||
// FO审核意见
|
||||
FOAuditOpinions: '',
|
||||
// FO审核意见文本
|
||||
FOAuditOpinionsText: '',
|
||||
// 高级经理审核意见
|
||||
managerAuditOpinions: '',
|
||||
// 高级经理审核意见文本
|
||||
managerAuditOpinionsText: '',
|
||||
// 部门总监审核意见
|
||||
chiefInspectorAuditOpinions: '',
|
||||
// 部门总监审核意见文本
|
||||
chiefInspectorAuditOpinionsText: '',
|
||||
// 企标工程师审核意见
|
||||
enterpriseBidEngineerAuditOpinions: '',
|
||||
// 企标工程师审核意见文本
|
||||
enterpriseBidEngineerAuditOpinionsText: '',
|
||||
createUser: '',
|
||||
approvalHistory: []
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
],
|
||||
reasonAbolition: [
|
||||
{ required: true, message: '废止理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
FOName: [
|
||||
{ required: true, message: 'FO不能为空', trigger: 'blur' }
|
||||
],
|
||||
FOAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
FOAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
managerAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
managerAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
chiefInspectorAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
chiefInspectorAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
],
|
||||
enterpriseBidEngineerAuditOpinions: [
|
||||
{ required: true, message: '审核意见不能为空', trigger: 'change' }
|
||||
],
|
||||
enterpriseBidEngineerAuditOpinionsText: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
loading: {
|
||||
loadTask: false,
|
||||
submit: false,
|
||||
saving: false
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-11-26 16:10:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSave() {
|
||||
this.loading.saving = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
_formData.append('enterpriseBidEngineerAuditOpinions', prcForm.enterpriseBidEngineerAuditOpinions)
|
||||
_formData.append('pId', this.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.loading.saving = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.saving = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-11-26 16:10:15
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSubmit() {
|
||||
let success = 0
|
||||
this.$refs['baseForm2'].validate(valid => {
|
||||
if (valid) {
|
||||
success++
|
||||
}
|
||||
})
|
||||
if (success === 1) {
|
||||
this.loading.submit = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.dept = this.$store.getters.userInfo.orgId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskId', this.taskIds)
|
||||
_formData.append('enterpriseBidEngineerAuditOpinions', prcForm.enterpriseBidEngineerAuditOpinions)
|
||||
prcForm.approvalHistory.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: prcForm.enterpriseBidEngineerAuditOpinions,
|
||||
auditOpinionsText: prcForm.enterpriseBidEngineerAuditOpinionsText,
|
||||
approvalNode: '企标工程师审批',
|
||||
approvalTime: ''
|
||||
})
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
completeTask(_formData).then(res => {
|
||||
this.loading.submit = false
|
||||
if (res.message === '操作成功') {
|
||||
if (prcForm.enterpriseBidEngineerAuditOpinions === '0') {
|
||||
this.bussAbolishProcess(JSON.stringify(prcForm))
|
||||
} else {
|
||||
this.$message.success('提交成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
}
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.submit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
},
|
||||
|
||||
handleAuditOpinionsChange(val) {
|
||||
if (val === 1) {
|
||||
this.prcForm.opinion = '同意'
|
||||
} else {
|
||||
this.prcForm.opinion = '不同意'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标废止流程详情查询
|
||||
* @date: 2020-12-05 15:39:50
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
qbfzlcDetail() {
|
||||
this.loading.loadTask = true
|
||||
qbfzlcDetail({
|
||||
taskIds: this.proLastDetail ? this.proLastDetail.taskIds : this.taskIds
|
||||
}).then(res => {
|
||||
this.loading.loadTask = false
|
||||
if (res) {
|
||||
this.prcForm.prcDeadline = res.prcDeadline
|
||||
this.prcForm.tableData = res.tableData
|
||||
this.prcForm.reasonAbolition = res.reasonAbolition
|
||||
this.prcForm.enterpriseBidEngineerAuditOpinions = res.enterpriseBidEngineerAuditOpinions || ''
|
||||
this.prcForm.enterpriseBidEngineerAuditOpinionsText = res.enterpriseBidEngineerAuditOpinionsText || ''
|
||||
this.prcForm.approvalHistory = res.approvalHistory || []
|
||||
this.prcForm.createUser = res.createUser
|
||||
}
|
||||
}).catch(e => {
|
||||
this.loading.loadTask = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 流程入库
|
||||
* @date: 2020-12-08 11:39:49
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
bussAbolishProcess(json) {
|
||||
const _formData = new FormData()
|
||||
_formData.append('infoJson', json)
|
||||
bussAbolishProcess(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('入库成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 企标详情查看
|
||||
* @date: 2020-12-01 14:12:02
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handlePreview (item) {
|
||||
let routeUrl = this.$router.resolve({
|
||||
name: 'OtherBussStandardDetails',
|
||||
params: {
|
||||
id: item.id,
|
||||
pageType: 'BUSINESS_STAND'
|
||||
}
|
||||
})
|
||||
window.open(routeUrl.href, '_blank')
|
||||
},
|
||||
|
||||
...mapMutations(['setPrcLastDetail'])
|
||||
},
|
||||
computed: {
|
||||
taskIds() {
|
||||
return this.$route.query.taskIds
|
||||
},
|
||||
...mapGetters(['getHandleInfo', 'proLastDetail'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.prcForm.prcName = this.getHandleInfo.prcName
|
||||
this.prcForm.prcNum = this.getHandleInfo.prcNum
|
||||
this.prcForm.prcType = this.getHandleInfo.prcType
|
||||
this.qbfzlcDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step6 {
|
||||
padding: 0 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.prc-content-border{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
.btn-wrap {
|
||||
height: 49px;
|
||||
line-height: 49px;
|
||||
}
|
||||
.search-btn-wrap {
|
||||
height: 49px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.search-btn {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
padding: 0 10px;
|
||||
font-size: 14px;
|
||||
color: #409EFF;
|
||||
border: 1px solid #409EFF;
|
||||
border-radius: 15px;
|
||||
background: rgba(64, 158, 255, 0.1);
|
||||
font-family: 'Microsoft Yahei', '\5FAE\8F6F\96C5\9ED1', Arial, sans-serif !important;
|
||||
}
|
||||
.standard-content {
|
||||
height: 100%;
|
||||
padding-bottom: 50px;
|
||||
.content {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 10px;
|
||||
.standard-table-wrap {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
/deep/ .pagination {
|
||||
position: static;
|
||||
.pagination-slot {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.add-form-item {
|
||||
/deep/ .el-form-item__content {
|
||||
background: #fff;
|
||||
}
|
||||
/deep/ .add-form-item {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
.prc-content-border {
|
||||
/deep/ .el-form-item__label {
|
||||
color: #666;
|
||||
}
|
||||
/deep/ .el-form-item__content {
|
||||
.el-input__inner,
|
||||
.el-textarea__inner {
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,730 @@
|
||||
<!--企标勘误流程 - 第二步-->
|
||||
<template>
|
||||
<div id="qbkwStep2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标勘误流程</template>
|
||||
<template slot="proNode">FO审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbkwStep2-box">
|
||||
<el-divider content-position="left">企标信息</el-divider>
|
||||
<el-form
|
||||
ref="qbkwForm"
|
||||
:model="qbkwForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbkwFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标编号" prop="standCode" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.standCode"
|
||||
placeholder="请输入"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中文名称" prop="standName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.standName"
|
||||
placeholder="请输入"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="standEnName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请输入"
|
||||
maxlength="1000"
|
||||
v-model="qbkwForm.standEnName"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准类别" prop="standSort" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.standSort"
|
||||
placeholder="请选择标准类别"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in formOption.BUSSSTANDCLASS"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<custom-SVPPS
|
||||
:span="12"
|
||||
key="SVPPS"
|
||||
:config="{
|
||||
attrName: 'SVPPS',
|
||||
attrField: 'SVPPS',
|
||||
valueName: qbkwForm.attrInfoMap.SVPPSName,
|
||||
value: qbkwForm.attrInfoMap.SVPPS
|
||||
}"
|
||||
v-model="qbkwForm.attrInfoMap.SVPPS"
|
||||
:disabled="formDisableFlag"
|
||||
></custom-SVPPS>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标状态" prop="standStatus" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.standStatus"
|
||||
placeholder="请选择"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="(item, index) in formOption.BUSSSTATE"
|
||||
:key="index"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="规范性引用文件" prop="GFXYYWJ" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in quoteFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="起草部门" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbkwForm.attrInfoMap.ZQCBM" type="hidden" />
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.attrInfoMap.ZQCBMName"
|
||||
placeholder="请选择部门"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草人" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbkwForm.attrInfoMap.ZYQCR" type="hidden" />
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.attrInfoMap.ZYQCRName"
|
||||
placeholder="请选择主起草人"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代替企标编号" prop="replaceStandNum" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.replaceStandNum"
|
||||
placeholder="请输入代替企标编号"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发布日期" prop="issueTime" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-datePicker
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请选择时间"
|
||||
v-model="qbkwForm.issueTime"
|
||||
:editable="false"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实施日期" prop="putTime" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-datePicker
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请选择时间"
|
||||
v-model="qbkwForm.putTime"
|
||||
:editable="false"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准密级" prop="QBMJ" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.attrInfoMap.QBMJ"
|
||||
placeholder="请选择标准密级"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in formOption.MJ"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="更改信息说明" prop="explain" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.explain"
|
||||
placeholder="请输入"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="企标文本" prop="QBWB" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in standardTextFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件" prop="GCWB" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in GCWBFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinion" class="add-form-item">
|
||||
<el-select v-model="qbkwForm.opinion">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24" v-if="qbkwForm.opinion === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionList" class="add-form-item">
|
||||
<div class="opinion-table-btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary add-button"
|
||||
round
|
||||
@click="addModal"
|
||||
><i class="iconfont"></i>新增</el-button>
|
||||
<el-button
|
||||
class="common-button-default delete-button"
|
||||
round
|
||||
@click="deleteStand"
|
||||
><i class="iconfont"></i>删除</el-button>
|
||||
</div>
|
||||
<div class="pro-table-content">
|
||||
<el-table
|
||||
:data="qbkwForm.opinionList"
|
||||
ref="table"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="tableDataSelect"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="条款号"
|
||||
prop="resNum">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="修改意见"
|
||||
prop="opinionContent">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24" v-if="qbkwForm.opinion === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark" class="add-form-item">
|
||||
<el-input
|
||||
v-model="qbkwForm.remark"
|
||||
placeholder="请输入"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!--新增意见理由抽屉-->
|
||||
<el-drawer
|
||||
title="添加意见"
|
||||
:visible.sync="isDrawerOpinionList"
|
||||
:wrapperClosable="false"
|
||||
size="800px"
|
||||
@close="resetForm"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<el-form
|
||||
v-if="isDrawerOpinionList"
|
||||
ref="opinionForm"
|
||||
:model="opinionForm"
|
||||
:rules="opinionFormRules"
|
||||
class="label-input-form"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="条款内容" prop="resNum" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.resNum"
|
||||
placeholder="请输入条款内容"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.opinionContent"
|
||||
placeholder="请输入意见理由"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="isDrawerOpinionList = false">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import CustomSVPPS from '@/components/CustomFormComponents/SVPPS'
|
||||
import { queryDetail, completeTask, saveTaskForPub, changeAssigneeNew } from 'api/process'
|
||||
export default {
|
||||
name: 'QbkwStep2',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree,
|
||||
CustomSVPPS
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
qbkwForm: {
|
||||
standCode: '', // 企标编号
|
||||
standName: '', // 中文名称
|
||||
standEnName: '', // 英文名称
|
||||
standSort: '', // 标准类别
|
||||
standStatus: '', // 企标状态
|
||||
attrInfoMap: {
|
||||
QBMJ: '', // 标准密级
|
||||
GFXYYWJ: '', // 规范性引用文件
|
||||
SVPPS: '', // SVPPS
|
||||
SVPPSName: '',
|
||||
QBWB: '', // 企标文本
|
||||
GCWB: '', // 附件
|
||||
ZYQCR: '', // 主起草人
|
||||
ZYQCRName: '',
|
||||
ZQCBM: '', // 主起草部门
|
||||
ZQCBMName: ''
|
||||
},
|
||||
replaceStandNum: '', // 代替企标编号
|
||||
issueTime: '', // 发布日期
|
||||
putTime: '', // 实施日期
|
||||
explain: '', // 更改信息说明
|
||||
opinion: '', // 反馈意见
|
||||
opinionList: [], // 意见理由
|
||||
remark: '', // 备注
|
||||
opinionAll: []
|
||||
// toGrant: '' // 授权
|
||||
},
|
||||
qbkwFormRules: {
|
||||
opinion: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
formOption: {
|
||||
BUSSSTANDCLASS: [], // 标准类别
|
||||
STANDSOURCEREVISION: [], // 标准制修订来源
|
||||
MJ: [], // 标准密级
|
||||
BUSSSTATE: [] // 企标状态
|
||||
}, // 下拉框选项数据
|
||||
formDisableFlag: false,
|
||||
quoteFileList: [],
|
||||
standardTextFileList: [],
|
||||
GCWBFileList: [],
|
||||
isDrawerOpinionList: false, // 意见理由抽屉状态
|
||||
// 意见理由form表单字段
|
||||
opinionForm: {
|
||||
resNum: '',
|
||||
opinionContent: ''
|
||||
},
|
||||
opinionFormRules: {
|
||||
resNum: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
opinionContent: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
opinionListSelected: [],
|
||||
number: 0
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 新增意见理由
|
||||
addModal () {
|
||||
this.isDrawerOpinionList = true
|
||||
},
|
||||
// 删除意见理由
|
||||
deleteStand () {
|
||||
if (this.opinionListSelected.length > 0) {
|
||||
this.opinionListSelected.map(item => {
|
||||
this.qbkwForm.opinionList.map((items, index) => {
|
||||
if (item.index === items.index) {
|
||||
this.qbkwForm.opinionList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
this.opinionListSelected = []
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的数据')
|
||||
}
|
||||
},
|
||||
// 添加意见理由确定事件
|
||||
opinionFormOk () {
|
||||
this.$refs['opinionForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.opinionForm.index = this.number
|
||||
this.qbkwForm.opinionList.push(JSON.parse(JSON.stringify(this.opinionForm)))
|
||||
this.number++
|
||||
this.isDrawerOpinionList = false
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 意见理由抽屉关闭事件
|
||||
resetForm () {
|
||||
this.$refs.opinionForm.resetFields()
|
||||
},
|
||||
// table选中事件
|
||||
tableDataSelect (selected) {
|
||||
this.opinionListSelected = selected
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbkwForm: this.qbkwForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbkwForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
if (this.qbkwForm.opinion === '0') {
|
||||
this.qbkwForm.opinionList = []
|
||||
this.qbkwForm.remark = ''
|
||||
} else {
|
||||
// 拼接反馈意见信息
|
||||
this.qbkwForm.opinionAll = [
|
||||
{
|
||||
opinion: this.qbkwForm.opinion,
|
||||
remark: this.qbkwForm.remark,
|
||||
opinionList: this.qbkwForm.opinionList,
|
||||
opinionName: this.$store.getters.userInfo.uName,
|
||||
opinionId: this.$store.getters.userInfo.userId,
|
||||
opinionNode: 'FO审批',
|
||||
opinionTime: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbkwForm: this.qbkwForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
this.isSubmit = false
|
||||
if (res.success) {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择反馈意见')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 请求文件
|
||||
getFile (current, fileNameList) {
|
||||
let file = ''
|
||||
if (current === 'GFXYYWJ' || current === 'QBWB'|| current === 'GCWB') {
|
||||
file = this.qbkwForm.attrInfoMap[current]
|
||||
} else {
|
||||
file = this.qbkwForm[current]
|
||||
}
|
||||
if (file) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: file
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.qbkwForm = mesg.qbkwForm
|
||||
this.qbkwForm.opinionList = mesg.qbkwForm.opinionList || []
|
||||
this.loading = false
|
||||
this.$refs.qbkwForm.resetFields()
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 规范性引用文件
|
||||
'qbkwForm.attrInfoMap.GFXYYWJ' (newVal) {
|
||||
this.getFile('GFXYYWJ', 'quoteFileList')
|
||||
},
|
||||
// 企标文本
|
||||
'qbkwForm.attrInfoMap.QBWB' (newVal) {
|
||||
this.getFile('QBWB', 'standardTextFileList')
|
||||
},
|
||||
// 附件
|
||||
'qbkwForm.attrInfoMap.GCWB' (newVal) {
|
||||
this.getFile('GCWB', 'GCWBFileList')
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', {}, {_this: this}, res => {
|
||||
this.formOption.BUSSSTANDCLASS = res.data.BUSSSTANDCLASS || []
|
||||
this.formOption.STANDSOURCEREVISION = res.data.STANDSOURCEREVISION || []
|
||||
this.formOption.MJ = res.data.MJ || []
|
||||
this.formOption.BUSSSTATE = res.data.BUSSSTATE || []
|
||||
}, err => {})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbkwStep2{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbkwStep2-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
.pro-table-content{
|
||||
.el-table{
|
||||
/deep/ th{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,780 @@
|
||||
<!--企标勘误流程 - 第三步-->
|
||||
<template>
|
||||
<div id="qbkwStep3">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标勘误流程</template>
|
||||
<template slot="proNode">企标工程师发布</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbkwStep3-box">
|
||||
<el-divider content-position="left">企标信息</el-divider>
|
||||
<el-form
|
||||
ref="qbkwForm"
|
||||
:model="qbkwForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbkwFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标编号" prop="standCode" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.standCode"
|
||||
placeholder="请输入"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中文名称" prop="standName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.standName"
|
||||
placeholder="请输入"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="standEnName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请输入"
|
||||
maxlength="1000"
|
||||
v-model="qbkwForm.standEnName"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准类别" prop="standSort" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.standSort"
|
||||
placeholder="请选择标准类别"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in formOption.BUSSSTANDCLASS"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<custom-SVPPS
|
||||
:span="12"
|
||||
key="SVPPS"
|
||||
:config="{
|
||||
attrName: 'SVPPS',
|
||||
attrField: 'SVPPS',
|
||||
valueName: qbkwForm.attrInfoMap.SVPPSName,
|
||||
value: qbkwForm.attrInfoMap.SVPPS
|
||||
}"
|
||||
v-model="qbkwForm.attrInfoMap.SVPPS"
|
||||
:disabled="formDisableFlag"
|
||||
></custom-SVPPS>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标状态" prop="standStatus" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.standStatus"
|
||||
placeholder="请选择"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="(item, index) in formOption.BUSSSTATE"
|
||||
:key="index"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="规范性引用文件" prop="GFXYYWJ" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in quoteFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="起草部门" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbkwForm.attrInfoMap.ZQCBM" type="hidden" />
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.attrInfoMap.ZQCBMName"
|
||||
placeholder="请选择部门"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草人" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbkwForm.attrInfoMap.ZYQCR" type="hidden" />
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.attrInfoMap.ZYQCRName"
|
||||
placeholder="请选择主起草人"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="代替企标编号" prop="replaceStandNum" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.replaceStandNum"
|
||||
placeholder="请输入代替企标编号"
|
||||
readonly
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="发布日期" prop="issueTime" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-datePicker
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请选择时间"
|
||||
v-model="qbkwForm.issueTime"
|
||||
:editable="false"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实施日期" prop="putTime" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-datePicker
|
||||
:disabled="formDisableFlag"
|
||||
placeholder="请选择时间"
|
||||
v-model="qbkwForm.putTime"
|
||||
:editable="false"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准密级" prop="QBMJ" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.attrInfoMap.QBMJ"
|
||||
placeholder="请选择标准密级"
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in formOption.MJ"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="更改信息说明" prop="explain" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbkwForm.explain"
|
||||
placeholder="请输入"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="企标文本" prop="QBWB" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in standardTextFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="附件" prop="GCWB" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<template v-for="(item, index) in GCWBFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<template v-if="!processDetail">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinionStep3" class="add-form-item">
|
||||
<el-select v-model="qbkwForm.opinionStep3">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24" v-if="qbkwForm.opinionStep3 === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionList" class="add-form-item">
|
||||
<div class="opinion-table-btn-box">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary add-button"
|
||||
round
|
||||
@click="addModal"
|
||||
><i class="iconfont"></i>新增</el-button>
|
||||
<el-button
|
||||
class="common-button-default delete-button"
|
||||
round
|
||||
@click="deleteStand"
|
||||
><i class="iconfont"></i>删除</el-button>
|
||||
</div>
|
||||
<div class="pro-table-content">
|
||||
<el-table
|
||||
:data="qbkwForm.opinionList"
|
||||
ref="table"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="tableDataSelect"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="条款号"
|
||||
prop="resNum">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="修改意见"
|
||||
prop="opinionContent">
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24" v-if="qbkwForm.opinionStep3 === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注" prop="remark" class="add-form-item">
|
||||
<el-input
|
||||
v-model="qbkwForm.remark"
|
||||
placeholder="请输入"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!--新增意见理由抽屉-->
|
||||
<el-drawer
|
||||
title="添加意见"
|
||||
:visible.sync="isDrawerOpinionList"
|
||||
:wrapperClosable="false"
|
||||
size="800px"
|
||||
@close="resetForm"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<el-form
|
||||
v-if="isDrawerOpinionList"
|
||||
ref="opinionForm"
|
||||
:model="opinionForm"
|
||||
:rules="opinionFormRules"
|
||||
class="label-input-form"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="条款内容" prop="resNum" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.resNum"
|
||||
placeholder="请输入条款内容"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
v-model="opinionForm.opinionContent"
|
||||
placeholder="请输入意见理由"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button round class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button round class="common-button-default" icon="el-icon-close" @click="isDrawerOpinionList = false">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import CustomSVPPS from '@/components/CustomFormComponents/SVPPS'
|
||||
import { queryDetail, completeTask, saveTaskForPub, bussCorrectErrorProcess, changeAssigneeNew } from 'api/process'
|
||||
export default {
|
||||
name: 'QbkwStep3',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree,
|
||||
CustomSVPPS
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDeadline: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
qbkwForm: {
|
||||
standCode: '', // 企标编号
|
||||
standName: '', // 中文名称
|
||||
standEnName: '', // 英文名称
|
||||
standSort: '', // 标准类别
|
||||
standStatus: '', // 企标状态
|
||||
replaceStandNum: '', // 代替企标编号
|
||||
issueTime: '', // 发布日期
|
||||
putTime: '', // 实施日期
|
||||
attrInfoMap: {
|
||||
QBMJ: '', // 标准密级
|
||||
GFXYYWJ: '', // 规范性引用文件
|
||||
SVPPS: '', // SVPPS
|
||||
SVPPSName: '',
|
||||
QBWB: '', // 企标文本
|
||||
GCWB: '', // 附件
|
||||
ZYQCR: '', // 主起草人
|
||||
ZYQCRName: '',
|
||||
ZQCBM: '', // 主起草部门
|
||||
ZQCBMName: ''
|
||||
},
|
||||
explain: '', // 更改信息说明
|
||||
opinion: '', // 反馈意见
|
||||
opinionList: [], // 意见理由
|
||||
opinionStep3: '', // 企标工程师反馈意见
|
||||
remark: '', // 企标工程师备注
|
||||
// toGrant: '' // 授权
|
||||
},
|
||||
qbkwFormRules: {
|
||||
opinionStep3: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
formOption: {
|
||||
BUSSSTANDCLASS: [], // 标准类别
|
||||
STANDSOURCEREVISION: [], // 标准制修订来源
|
||||
MJ: [], // 标准密级
|
||||
BUSSSTATE: [] // 企标状态
|
||||
}, // 下拉框选项数据
|
||||
formDisableFlag: false,
|
||||
quoteFileList: [],
|
||||
standardTextFileList: [],
|
||||
GCWBFileList: [],
|
||||
isDrawerOpinionList: false, // 意见理由抽屉状态
|
||||
// 意见理由form表单字段
|
||||
opinionForm: {
|
||||
resNum: '',
|
||||
opinionContent: ''
|
||||
},
|
||||
opinionFormRules: {
|
||||
resNum: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
opinionContent: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
opinionListSelected: [],
|
||||
number: 0,
|
||||
processDetail: false
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
// 新增意见理由
|
||||
addModal () {
|
||||
this.isDrawerOpinionList = true
|
||||
},
|
||||
// 删除意见理由
|
||||
deleteStand () {
|
||||
if (this.opinionListSelected.length > 0) {
|
||||
this.opinionListSelected.map(item => {
|
||||
this.qbkwForm.opinionList.map((items, index) => {
|
||||
if (item.index === items.index) {
|
||||
this.qbkwForm.opinionList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
this.opinionListSelected = []
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的数据')
|
||||
}
|
||||
},
|
||||
// 添加意见理由确定事件
|
||||
opinionFormOk () {
|
||||
this.$refs['opinionForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.opinionForm.index = this.number
|
||||
this.qbkwForm.opinionList.push(JSON.parse(JSON.stringify(this.opinionForm)))
|
||||
this.number++
|
||||
this.isDrawerOpinionList = false
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 意见理由抽屉关闭事件
|
||||
resetForm () {
|
||||
this.$refs.opinionForm.resetFields()
|
||||
},
|
||||
// table选中事件
|
||||
tableDataSelect (selected) {
|
||||
this.opinionListSelected = selected
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbkwForm: this.qbkwForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbkwForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
if (this.qbkwForm.opinionStep3 === '0') {
|
||||
this.qbkwForm.opinionList = []
|
||||
this.qbkwForm.remark = ''
|
||||
} else {
|
||||
// 拼接反馈意见信息
|
||||
this.qbkwForm.opinionAll = [
|
||||
{
|
||||
opinion: this.qbkwForm.opinionStep3,
|
||||
remark: this.qbkwForm.remark,
|
||||
opinionList: this.qbkwForm.opinionList,
|
||||
opinionName: this.$store.getters.userInfo.uName,
|
||||
opinionId: this.$store.getters.userInfo.userId,
|
||||
opinionNode: '企标工程师发布',
|
||||
opinionTime: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
this.qbkwForm.loginUser = this.$store.getters.userInfo.userId
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbkwForm: this.qbkwForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
if (this.qbkwForm.opinionStep3 !== '0') {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.bussCorrectErrorProcess()
|
||||
}
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择反馈意见')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 企标勘误流程入库
|
||||
bussCorrectErrorProcess () {
|
||||
const _formData = new FormData()
|
||||
let infoJson = JSON.parse(JSON.stringify(this.qbkwForm))
|
||||
// 转换日期格式类型为string
|
||||
infoJson.attrInfoMap.FSRQ = infoJson.attrInfoMap.FSRQ ? this.$moment(infoJson.attrInfoMap.FSRQ).format('YYYY-MM-DD') : ''
|
||||
infoJson.attrInfoMap.FZRQ = infoJson.attrInfoMap.FZRQ ? this.$moment(infoJson.attrInfoMap.FZRQ).format('YYYY-MM-DD') : ''
|
||||
// 起草部门 (主起草部门+起草部门)
|
||||
let orgIdList = (infoJson.attrInfoMap.ZRBM + ',' + infoJson.attrInfoMap.ZQCBM).split(',')
|
||||
let orgNameList = (infoJson.attrInfoMap.ZRBMName + ',' + infoJson.attrInfoMap.ZQCBMName).split(',')
|
||||
infoJson.attrInfoMap.ZRBM = [...new Set(orgIdList)].join(',')
|
||||
infoJson.attrInfoMap.ZRBMName = [...new Set(orgNameList)].join(',')
|
||||
_formData.append('infoJson', JSON.stringify(infoJson))
|
||||
bussCorrectErrorProcess(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 请求文件
|
||||
getFile (current, fileNameList) {
|
||||
let file = ''
|
||||
if (current === 'GFXYYWJ' || current === 'QBWB'|| current === 'GCWB') {
|
||||
file = this.qbkwForm.attrInfoMap[current]
|
||||
} else {
|
||||
file = this.qbkwForm[current]
|
||||
}
|
||||
if (file) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: file
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.qbkwForm = mesg.qbkwForm
|
||||
this.qbkwForm.opinionList = mesg.qbkwForm.opinionList || []
|
||||
this.loading = false
|
||||
this.$refs.qbkwForm.resetFields()
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 规范性引用文件
|
||||
'qbkwForm.attrInfoMap.GFXYYWJ' (newVal) {
|
||||
this.getFile('GFXYYWJ', 'quoteFileList')
|
||||
},
|
||||
// 企标文本
|
||||
'qbkwForm.attrInfoMap.QBWB' (newVal) {
|
||||
this.getFile('QBWB', 'standardTextFileList')
|
||||
},
|
||||
// 附件
|
||||
'qbkwForm.attrInfoMap.GCWB' (newVal) {
|
||||
this.getFile('GCWB', 'GCWBFileList')
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', {}, {_this: this}, res => {
|
||||
this.formOption.BUSSSTANDCLASS = res.data.BUSSSTANDCLASS || []
|
||||
this.formOption.STANDSOURCEREVISION = res.data.STANDSOURCEREVISION || []
|
||||
this.formOption.MJ = res.data.MJ || []
|
||||
this.formOption.BUSSSTATE = res.data.BUSSSTATE || []
|
||||
}, err => {})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbkwStep3{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbkwStep3-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
.pro-table-content{
|
||||
.el-table{
|
||||
/deep/ th{
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,585 @@
|
||||
<!--企标延期制修订审批流程 - 第一步-->
|
||||
<template>
|
||||
<div id="qbyqzxdspStep1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标延期制修订审批流程</template>
|
||||
<template slot="proNode">主起草人发起流程</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo>
|
||||
<el-form
|
||||
ref="prcForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbyqzxdspStep1-box">
|
||||
<!-- <el-divider content-position="left">企标检索</el-divider>-->
|
||||
<!-- <div class="retrieval prc-content-border">-->
|
||||
<!-- <el-form-->
|
||||
<!-- :model="standForm"-->
|
||||
<!-- ref="standForm"-->
|
||||
<!-- class="label-input-form"-->
|
||||
<!-- label-width="130px"-->
|
||||
<!-- >-->
|
||||
<!-- <el-row :gutter="25">-->
|
||||
<!-- <el-col :span="8">-->
|
||||
<!-- <el-form-item label="标准号" prop="standCode" class="add-form-item">-->
|
||||
<!-- <el-input v-model="standForm.standCode" placeholder="请输入" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="8">-->
|
||||
<!-- <el-form-item label="标准名称" prop="cnName" class="add-form-item">-->
|
||||
<!-- <el-input v-model="standForm.cnName" placeholder="请输入" />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="4">-->
|
||||
<!-- <div class="search-btn-wrap">-->
|
||||
<!-- <el-button-->
|
||||
<!-- type="primary"-->
|
||||
<!-- @click="searchModal">-->
|
||||
<!-- 按条件查询-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </div>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
<!-- </el-form>-->
|
||||
<!-- </div>-->
|
||||
<el-divider content-position="left">企标信息</el-divider>
|
||||
<div class="pro-table-content">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
height="100%"
|
||||
ref="table"
|
||||
@expand-change="handleExpandChange">
|
||||
<el-table-column
|
||||
label="类型"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p>{{ scope.row.planType === '1' ? '制定' : '修订' }}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standCode"
|
||||
label="企标编号"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.standCode">{{ scope.row.standCode }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="cnName"
|
||||
label="标准名称"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.cnName">{{ scope.row.cnName }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="planStartTime"
|
||||
label="计划开始编写日期"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.planStartTime">{{ $moment(scope.row.planStartTime).format('YYYY-MM-DD') }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="putTime"
|
||||
label="计划发布日期"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.putTime">{{ $moment(scope.row.putTime).format('YYYY-MM-DD') }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="延期理由"
|
||||
align="center"
|
||||
prop="delay">
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="70">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
icon="el-icon-edit"
|
||||
@click="toogleExpand(scope.row, scope.$index)"
|
||||
></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column type="expand" width="1px">
|
||||
<template slot-scope="scope">
|
||||
<ExpansionForm :is-btn="false" @expandFormCancel="expandFormCancel" @expandFormSave="expandFormSave">
|
||||
<el-form
|
||||
:ref="'expandForm-' + scope.$index"
|
||||
:model="scope.row"
|
||||
class="expand-form"
|
||||
label-width="150px">
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="计划开始编写日期"
|
||||
prop="planStartTime"
|
||||
class="expand-form-item"
|
||||
:rules="{ required: true, message: '计划开始编写日期不能为空', trigger: 'change' }">
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="scope.row.planStartTime"
|
||||
:editable="false"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="计划发布日期"
|
||||
prop="putTime"
|
||||
class="expand-form-item"
|
||||
:rules="{ required: true, message: '计划发布日期不能为空', trigger: 'change' }">
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="scope.row.putTime"
|
||||
:editable="false"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="延期理由" prop="fillDelay" class="expand-form-item" :rules="{ required: true, message: '延期理由不能为空', trigger: 'change' }">
|
||||
<el-input
|
||||
v-model="scope.row.fillDelay"
|
||||
placeholder="请填写延期理由"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</ExpansionForm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div>
|
||||
<el-divider content-position="left">下一节点处理人(高级经理)</el-divider>
|
||||
<div style="width: 250px; margin-top: 20px">
|
||||
<el-input v-model="manageId" v-show="false"></el-input>
|
||||
<process-input
|
||||
v-model="manageName"
|
||||
placeholder="请选择高级经理"
|
||||
readonly
|
||||
:show-tips="userObj.showTipsUser"
|
||||
:tips="userObj.tipsUser"
|
||||
:disabled="isGjjl"
|
||||
@click="handleVisibleManage"
|
||||
></process-input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 企标检索 -->
|
||||
<BussRetrieval
|
||||
:visible.sync="isSearchDrawer"
|
||||
type="bussMyStandard"
|
||||
:condition="{
|
||||
standCode: standForm.standCode,
|
||||
cnName: standForm.cnName
|
||||
}"
|
||||
@confirm="handleBussRetrievalConfirm"
|
||||
></BussRetrieval>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="visible.visibleManageTree"
|
||||
roleName="高级经理"
|
||||
:BM="userInfo.pOrgId"
|
||||
@dblClick="dblClick"
|
||||
></role-user-tree>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ExpansionForm from 'process/components/ExpansionForm'
|
||||
import BussRetrieval from 'process/components/BussRetrieval'
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import {startProcess, completeTask, saveTaskFirst, queryTaskFirst} from 'api/process'
|
||||
import {mapGetters, mapMutations} from 'vuex'
|
||||
import Bus from '@/common/eventHub'
|
||||
export default {
|
||||
name: 'QbyqzxdspStep1',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessFooter,
|
||||
ProcessBaseInfo,
|
||||
ExpansionForm,
|
||||
BussRetrieval,
|
||||
ProcessInput
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
saveLoading: false,
|
||||
isSubmit: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
createUserName: this.$store.getters.userInfo.uName,
|
||||
createUserId: this.$store.getters.userInfo.userId,
|
||||
dept: this.$store.getters.userInfo.orgId
|
||||
},
|
||||
prcFormRules: {
|
||||
// prcDeadline: [
|
||||
// { required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
// ]
|
||||
},
|
||||
// 标准检索字段
|
||||
standForm: {
|
||||
standCode: '', // 标准号
|
||||
cnName: '' // 标准名称
|
||||
},
|
||||
tableData: [],
|
||||
expandForm: {
|
||||
putTime: '', // 计划发布日期
|
||||
planStartTime: '', // 计划开始编写日期
|
||||
delay: '' // 延期理由
|
||||
},
|
||||
expandFormRules: {
|
||||
delay: [
|
||||
{ required: true, message: '延期理由不能为空', trigger: 'change' }
|
||||
],
|
||||
planStartTime: [
|
||||
{ required: true, message: '计划开始编写日期不能为空', trigger: 'change' }
|
||||
],
|
||||
putTime: [
|
||||
{ required: true, message: '计划发布日期不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
rowObj: {},
|
||||
fillInIndex: 0,
|
||||
isSearchDrawer: false,
|
||||
manageId: '',
|
||||
manageName: '',
|
||||
manageZNodes: [],
|
||||
tips: '',
|
||||
visible: {
|
||||
visibleManageTree: false
|
||||
},
|
||||
userObj: {},
|
||||
isGjjl: false,
|
||||
bpnId: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击查询按钮
|
||||
searchModal () {
|
||||
this.isSearchDrawer = true
|
||||
},
|
||||
// 企标库信息带入
|
||||
handleBussRetrievalConfirm (dataItem) {
|
||||
this.tableData.push(dataItem)
|
||||
},
|
||||
// 点击展开填写form
|
||||
toogleExpand (row, index) {
|
||||
this.rowObj = row
|
||||
this.expandForm.putTime = row.putTime
|
||||
this.expandForm.planStartTime = row.planStartTime
|
||||
this.expandForm.delay = row.delay
|
||||
this.$refs.table.toggleRowExpansion(row)
|
||||
},
|
||||
|
||||
handleExpandChange(row, expanded) {
|
||||
if (expanded) {
|
||||
this.rowObj = row
|
||||
this.expandForm.putTime = this.expandForm.putTime === '' ? row.putTime : this.expandForm.putTime
|
||||
this.expandForm.planStartTime = this.expandForm.planStartTime === '' ? row.planStartTime : this.expandForm.planStartTime
|
||||
this.expandForm.fillDelay = this.expandForm.delay === '' ? row.delay : this.expandForm.delay
|
||||
}
|
||||
},
|
||||
|
||||
// 表格内form表单取消按钮事件
|
||||
expandFormCancel () {
|
||||
this.$refs.table.toggleRowExpansion(this.rowObj)
|
||||
this.rowObj = {}
|
||||
console.log('执行343')
|
||||
},
|
||||
// 表格内form表单保存按钮事件
|
||||
expandFormSave () {
|
||||
this.$refs['expandForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
// this.$refs.table.toggleRowExpansion(this.rowObj)
|
||||
let index = this.fillInIndex
|
||||
let nonComplianceList = JSON.parse(JSON.stringify(this.tableData))
|
||||
nonComplianceList[index].putTime = this.expandForm.putTime
|
||||
nonComplianceList[index].planStartTime = this.expandForm.planStartTime
|
||||
nonComplianceList[index].delay = this.expandForm.delay
|
||||
this.tableData = nonComplianceList
|
||||
this.$nextTick(() => {
|
||||
this.$refs.table.toggleRowExpansion(this.tableData[0])
|
||||
console.log(358)
|
||||
})
|
||||
this.rowObj = {}
|
||||
this.$message.success('保存成功')
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
this.tableData.map(item => {
|
||||
item.manageId = this.manageId
|
||||
item.manageName = this.manageName
|
||||
})
|
||||
let _formData = new FormData()
|
||||
_formData.append('id', this.bpnId)
|
||||
_formData.append('createUser', this.$store.getters.userInfo.userId)
|
||||
_formData.append('createUserName', this.$store.getters.userInfo.uName)
|
||||
_formData.append('prcType', this.$route.query.type)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData
|
||||
}))
|
||||
saveTaskFirst(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
this.bpnId = res.result
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
//
|
||||
},
|
||||
/**
|
||||
* @description: 流程开启
|
||||
* @date: 2020-11-12 10:23:50
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
startProcess () {
|
||||
this.isSubmit = true
|
||||
return new Promise((resolve, reject) => {
|
||||
startProcess({
|
||||
type: this.$route.query.type,
|
||||
id: this.bpnId
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['prcForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.tableData.length === 0) {
|
||||
return this.$message.warning('请先选择企标数据')
|
||||
}
|
||||
if (this.tableData.length) {
|
||||
this.$refs.table.toggleRowExpansion(this.tableData[0], true)
|
||||
this.$nextTick(() => {
|
||||
this.$refs['expandForm-0'].validate(valid => {
|
||||
if (valid) {
|
||||
this.tableData.map(item => {
|
||||
item.manageId = this.manageId
|
||||
item.manageName = this.manageName
|
||||
item.delay = item.fillDelay
|
||||
})
|
||||
if (!this.manageId) {
|
||||
return this.$message.warning('请选择高级经理')
|
||||
}
|
||||
this.startProcess().then(taskId => {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskId', taskId)
|
||||
_formData.append('userId', this.userId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
this.isSubmit = false
|
||||
if (res.success) {
|
||||
this.$message.success('流程发起成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 查询详情
|
||||
queryTaskFirst () {
|
||||
queryTaskFirst({
|
||||
bpnId: this.bpnId
|
||||
}).then(res => {
|
||||
let mes = JSON.parse(res.mes)
|
||||
this.prcForm = mes.prcForm
|
||||
mes.tableData.map(item => {
|
||||
item.fillDelay = item.fillDelay || ''
|
||||
})
|
||||
this.tableData = mes.tableData
|
||||
this.manageId = this.tableData[0].manageId
|
||||
this.manageName = this.tableData[0].manageName
|
||||
})
|
||||
},
|
||||
handleVisibleManage() {
|
||||
this.visible.visibleManageTree = true
|
||||
},
|
||||
dblClick(treeNode) {
|
||||
this.manageId = treeNode.id
|
||||
this.manageName = treeNode.userName || treeNode.name
|
||||
this.visible.visibleManageTree = false
|
||||
this.userObj.showTipsUser = false
|
||||
},
|
||||
/**
|
||||
* @description: 查询下一节点处理人(高级经理)
|
||||
* @date: 2021-02-20 15:30:55
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
// 查询高级经理
|
||||
getGjjl () {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
orgId: this.userInfo.orgId,
|
||||
roleHierarchyName: '高级经理'
|
||||
}, {}, res => {
|
||||
if (res.ok) {
|
||||
let tipsUser = ''
|
||||
let showTipsUser = false
|
||||
if (res.data.length === 1) {
|
||||
this.manageId = res.data[0].userId
|
||||
this.manageName = res.data[0].userName
|
||||
this.isGjjl = true
|
||||
} else if (res.data.length > 1) {
|
||||
tipsUser += `<p><span style="color: #F56C6C;">${this.userInfo.orgName}</span> 下存在多个高级经理,请选择一个高级经理</p>`
|
||||
showTipsUser = true
|
||||
} else {
|
||||
tipsUser += `<p><span style="color: #F56C6C;">${this.userInfo.orgName}</span> 下高级经理不存在,请及时维护</p>`
|
||||
showTipsUser = true
|
||||
}
|
||||
this.userObj = {
|
||||
tipsUser,
|
||||
showTipsUser
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
...mapMutations(['setMyBussStandardPlan'])
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo', 'myBussStandardPlan']),
|
||||
userId () {
|
||||
return this.userInfo.userId
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
// 从草稿进入
|
||||
if (this.$route.query.bpnId) {
|
||||
this.bpnId = this.$route.query.bpnId
|
||||
this.queryTaskFirst()
|
||||
}
|
||||
// 从我的企标进入
|
||||
if (this.myBussStandardPlan) {
|
||||
this.myBussStandardPlan.fillDelay = ''
|
||||
this.tableData.push(this.myBussStandardPlan)
|
||||
if (this.tableData.length) {
|
||||
this.$refs.table.toggleRowExpansion(this.tableData[0])
|
||||
}
|
||||
this.getGjjl()
|
||||
}
|
||||
|
||||
this.$nextTick(() => {
|
||||
if (this.tableData.length) {
|
||||
this.$refs.table.toggleRowExpansion(this.tableData[0])
|
||||
}
|
||||
})
|
||||
},
|
||||
beforeRouteLeave(to, from, next) {
|
||||
this.setMyBussStandardPlan()
|
||||
setTimeout(() => {
|
||||
next()
|
||||
}, 100)
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbyqzxdspStep1{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbyqzxdspStep1-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.pro-table-content{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,436 @@
|
||||
<!--企标延期制修订审批流程 - 第二步-->
|
||||
<template>
|
||||
<div id="qbyqzxdspStep2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标延期制修订审批流程</template>
|
||||
<template slot="proNode">高级经理审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbyqzxdspStep2-box">
|
||||
<el-divider content-position="left">企标信息</el-divider>
|
||||
<div class="pro-table-content">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
height="100%"
|
||||
ref="table"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="类型"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p>{{ scope.row.planType === '1' ? '制定' : '修订' }}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standCode"
|
||||
label="企标编号"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.standCode">{{ scope.row.standCode }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="cnName"
|
||||
label="标准名称"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.cnName">{{ scope.row.cnName }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="planStartTime"
|
||||
label="计划开始编写日期"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.planStartTime">{{ $moment(scope.row.planStartTime).format('YYYY-MM-DD') }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="putTime"
|
||||
label="计划发布日期"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.putTime">{{ $moment(scope.row.putTime).format('YYYY-MM-DD') }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="延期原因"
|
||||
width="100px"
|
||||
align="center"
|
||||
type="expand"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div class="delay-box">
|
||||
<label>延期原因:</label>
|
||||
<span>{{scope.row.delay}}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="to-examine-box" v-if="!processDetail">
|
||||
<el-form
|
||||
ref="toExamineForm"
|
||||
:model="toExamineForm"
|
||||
:rules="toExamineFormRules"
|
||||
label-width="150px"
|
||||
class="label-input-form prc-content-border"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinion" class="add-form-item">
|
||||
<el-select v-model="toExamineForm.opinion">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="toExamineForm.opinionContent"
|
||||
clearable
|
||||
resize="none"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import { queryDetail, completeTask, saveTaskForPub, changeAssigneeNew, delayProcessToBussPlan } from 'api/process'
|
||||
export default {
|
||||
name: 'QbyqzxdspStep2',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessFooter,
|
||||
ProcessBaseInfo,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
saveLoading: false,
|
||||
isSubmit: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {},
|
||||
tableData: [],
|
||||
// 审核form字段
|
||||
toExamineForm: {
|
||||
opinion: '', // 审批意见
|
||||
opinionContent: '' // 意见理由
|
||||
},
|
||||
// 审核form表单字段验证条件
|
||||
toExamineFormRules: {
|
||||
opinion: [
|
||||
{ required: true, message: '审批意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
processDetail: false
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.$refs['toExamineForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.saveLoading = true
|
||||
this.tableData.map(item => {
|
||||
item.opinion = this.toExamineForm.opinion
|
||||
item.opinionContent = this.toExamineForm.opinionContent
|
||||
})
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择反馈意见')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['toExamineForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
this.tableData.map(item => {
|
||||
item.opinion = this.toExamineForm.opinion
|
||||
item.opinionContent = this.toExamineForm.opinionContent
|
||||
item.opinionAll = [
|
||||
{
|
||||
opinion: this.toExamineForm.opinion,
|
||||
opinionContent: this.toExamineForm.opinionContent,
|
||||
opinionName: this.$store.getters.userInfo.uName,
|
||||
opinionId: this.$store.getters.userInfo.userId,
|
||||
opinionNode: '高级经理审批',
|
||||
opinionTime: ''
|
||||
}
|
||||
]
|
||||
})
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
if (this.toExamineForm.opinion !== '0') {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.delayProcessToBussPlan()
|
||||
}
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 入库
|
||||
delayProcessToBussPlan () {
|
||||
const _formData = new FormData()
|
||||
let infoJson = JSON.parse(JSON.stringify(this.tableData))
|
||||
// 赋值流程名称和流程编号
|
||||
infoJson.map(item => {
|
||||
item.prcNum = this.prcForm.prcNum
|
||||
item.prcName = this.prcForm.prcName
|
||||
})
|
||||
_formData.append('infoJson', JSON.stringify(infoJson))
|
||||
delayProcessToBussPlan(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.tableData = mesg.tableData
|
||||
this.toExamineForm.opinion = mesg.tableData[0].opinion || ''
|
||||
this.toExamineForm.opinionContent = mesg.tableData[0].opinionContent || ''
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbyqzxdspStep2{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbyqzxdspStep2-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 0 10px 0;
|
||||
.pro-table-content{
|
||||
//height: calc(~'100% - 60px');
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
/deep/.el-table__expand-column{
|
||||
.cell{
|
||||
.el-table__expand-icon{
|
||||
transform: rotate(0deg) !important;
|
||||
text-align: center;
|
||||
.el-icon:before{
|
||||
content: '查看';
|
||||
color: #4498f0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.delay-box{
|
||||
& > label{
|
||||
display: inline-block;
|
||||
width: 80px;
|
||||
vertical-align: top;
|
||||
}
|
||||
& > span{
|
||||
display: inline-block;
|
||||
width: calc(~'100% - 100px');
|
||||
word-break: break-all;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,433 @@
|
||||
<!--企标延期制修订审批流程 - 第三步 废除部门总监审批步骤-->
|
||||
<template>
|
||||
<div id="qbyqzxdspStep3">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标延期制修订审批流程</template>
|
||||
<template slot="proNode">部门总监审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbyqzxdspStep3-box">
|
||||
<el-divider content-position="left">企标信息</el-divider>
|
||||
<div class="pro-table-content">
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
height="100%"
|
||||
ref="table"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="类型"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p>{{ scope.row.planType === '1' ? '制定' : '修订' }}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standCode"
|
||||
label="企标编号"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.standCode">{{ scope.row.standCode }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="cnName"
|
||||
label="标准名称"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.cnName">{{ scope.row.cnName }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="putTime"
|
||||
label="计划发布日期"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.putTime">{{ $moment(scope.row.putTime).format('YYYY-MM-DD') }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="planEndTime"
|
||||
label="计划结束日期"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.planEndTime">{{ $moment(scope.row.planEndTime).format('YYYY-MM-DD') }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="延期原因"
|
||||
width="100px"
|
||||
align="center"
|
||||
type="expand"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<div class="delay-box">
|
||||
<label>延期原因:</label>
|
||||
<span>{{scope.row.delay}}</span>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="to-examine-box" v-if="!processDetail">
|
||||
<el-form
|
||||
ref="toExamineForm"
|
||||
:model="toExamineForm"
|
||||
:rules="toExamineFormRules"
|
||||
label-width="150px"
|
||||
class="label-input-form prc-content-border"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinionStep3" class="add-form-item">
|
||||
<el-select v-model="toExamineForm.opinionStep3">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionContentStep3" class="add-form-item">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="toExamineForm.opinionContentStep3"
|
||||
clearable
|
||||
resize="none"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import { queryDetail, completeTask, delayProcessToBussPlan, saveTaskForPub, changeAssigneeNew } from 'api/process'
|
||||
export default {
|
||||
name: 'QbyqzxdspStep3',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessFooter,
|
||||
ProcessBaseInfo,
|
||||
ProcessChooseTree
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
saveLoading: false,
|
||||
isSubmit: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {},
|
||||
tableData: [],
|
||||
// 审核form字段
|
||||
toExamineForm: {
|
||||
opinionStep3: '', // 审批意见
|
||||
opinionContentStep3: '' // 意见理由
|
||||
},
|
||||
// 审核form表单字段验证条件
|
||||
toExamineFormRules: {
|
||||
opinionStep3: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
processDetail: false
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.$refs['toExamineForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.saveLoading = true
|
||||
this.tableData.map(item => {
|
||||
item.opinionStep3 = this.toExamineForm.opinionStep3
|
||||
item.opinionContentStep3 = this.toExamineForm.opinionContentStep3
|
||||
})
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择反馈意见')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
console.log(res)
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['toExamineForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
this.tableData.map(item => {
|
||||
item.opinionStep3 = this.toExamineForm.opinionStep3
|
||||
item.opinionContentStep3 = this.toExamineForm.opinionContentStep3
|
||||
item.opinionAll = [
|
||||
{
|
||||
opinion: this.toExamineForm.opinionStep3,
|
||||
opinionContent: this.toExamineForm.opinionContentStep3,
|
||||
opinionName: this.$store.getters.userInfo.uName,
|
||||
opinionId: this.$store.getters.userInfo.userId,
|
||||
opinionNode: '部门总监审批',
|
||||
opinionTime: ''
|
||||
}
|
||||
]
|
||||
})
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
if (this.toExamineForm.opinionStep3 !== '0') {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.delayProcessToBussPlan()
|
||||
}
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.tableData = mesg.tableData
|
||||
this.toExamineForm.opinionStep3 = mesg.tableData[0].opinionStep3 || ''
|
||||
this.toExamineForm.opinionContentStep3 = mesg.tableData[0].opinionContentStep3 || ''
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 入库
|
||||
delayProcessToBussPlan () {
|
||||
const _formData = new FormData()
|
||||
let infoJson = JSON.parse(JSON.stringify(this.tableData))
|
||||
_formData.append('infoJson', JSON.stringify(infoJson))
|
||||
delayProcessToBussPlan(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
console.log(this.$store.getters.getHandleInfo)
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbyqzxdspStep3{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbyqzxdspStep3-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 0 10px 0;
|
||||
.pro-table-content{
|
||||
//height: calc(~'100% - 60px');
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
/deep/.el-table__expand-column{
|
||||
.cell{
|
||||
.el-table__expand-icon{
|
||||
transform: rotate(0deg) !important;
|
||||
text-align: center;
|
||||
.el-icon:before{
|
||||
content: '查看';
|
||||
color: #4498f0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.delay-box{
|
||||
& > label{
|
||||
display: inline-block;
|
||||
width: 80px;
|
||||
vertical-align: top;
|
||||
}
|
||||
& > span{
|
||||
display: inline-block;
|
||||
width: calc(~'100% - 100px');
|
||||
word-break: break-all;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,483 @@
|
||||
<!--企标延期制修订审批流程 - 主起草人重新申请-->
|
||||
<template>
|
||||
<div id="qbyqzxdspStep4">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标延期制修订审批流程</template>
|
||||
<template slot="proNode">主起草人重新申请</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="prcForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbyqzxdspStep4-box">
|
||||
<el-divider content-position="left">企标信息</el-divider>
|
||||
<el-table
|
||||
:data="tableData"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}"
|
||||
height="100%"
|
||||
ref="table"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
align="center"
|
||||
width="50">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="类型"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p>{{ scope.row.planType === '1' ? '制定' : '修订' }}</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="standCode"
|
||||
label="企标编号"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.standCode">{{ scope.row.standCode }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="cnName"
|
||||
label="标准名称"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.cnName">{{ scope.row.cnName }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="planStartTime"
|
||||
label="计划开始编写日期"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.planStartTime">{{ $moment(scope.row.planStartTime).format('YYYY-MM-DD') }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="putTime"
|
||||
label="计划发布日期"
|
||||
align="center">
|
||||
<template slot-scope="scope">
|
||||
<p v-if="scope.row.putTime">{{ $moment(scope.row.putTime).format('YYYY-MM-DD') }}</p>
|
||||
<p style="color: #ccc;" v-else>--</p>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
show-overflow-tooltip
|
||||
label="延期理由"
|
||||
prop="delay">
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" width="70" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
icon="el-icon-edit"
|
||||
@click="toogleExpand(scope.row, scope.$index)"
|
||||
></el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column type="expand" width="1px">
|
||||
<template slot-scope="scope">
|
||||
<ExpansionForm @expandFormCancel="expandFormCancel" @expandFormSave="expandFormSave">
|
||||
<el-form
|
||||
ref="expandForm"
|
||||
:model="expandForm"
|
||||
:rules="expandFormRules"
|
||||
class="expand-form"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划开始编写日期" prop="planStartTime" class="expand-form-item">
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="expandForm.planStartTime"
|
||||
:editable="false"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划发布日期" prop="putTime" class="expand-form-item">
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="expandForm.putTime"
|
||||
:editable="false"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="延期理由" prop="delay" class="expand-form-item">
|
||||
<el-input
|
||||
v-model="expandForm.delay"
|
||||
placeholder="请输入"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</ExpansionForm>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div>
|
||||
<el-divider content-position="left">下一节点处理人(高级经理)</el-divider>
|
||||
<div style="width: 250px; margin-top: 20px">
|
||||
<el-input v-model="manageId" v-show="false"></el-input>
|
||||
<process-input
|
||||
v-model="manageName"
|
||||
placeholder="请选择高级经理"
|
||||
readonly
|
||||
:show-tips="userObj.showTipsUser"
|
||||
:tips="userObj.tipsUser"
|
||||
:disabled="isGjjl"
|
||||
@click="handleVisibleManage"
|
||||
></process-input>
|
||||
</div>
|
||||
</div>
|
||||
<!--审批结果-->
|
||||
<ProcessApprovalHistory
|
||||
:approvalData="approvalHistory"
|
||||
v-if="approvalHistory.length"
|
||||
></ProcessApprovalHistory>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
<!-- 企标检索 -->
|
||||
<BussRetrieval
|
||||
:visible.sync="isSearchDrawer"
|
||||
type="bussMyStandard"
|
||||
:condition="{
|
||||
standCode: standForm.standCode,
|
||||
cnName: standForm.cnName
|
||||
}"
|
||||
@confirm="handleBussRetrievalConfirm"
|
||||
></BussRetrieval>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="visible.visibleManageTree"
|
||||
roleName="高级经理"
|
||||
:BM="userInfo.pOrgId"
|
||||
@dblClick="dblClick"
|
||||
></role-user-tree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ExpansionForm from 'process/components/ExpansionForm'
|
||||
import BussRetrieval from 'process/components/BussRetrieval'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import {queryDetail, completeTask, saveTaskForPub} from 'api/process'
|
||||
import {mapGetters} from "vuex";
|
||||
export default {
|
||||
name: 'QbyqzxdspStep4',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessFooter,
|
||||
ProcessBaseInfo,
|
||||
ExpansionForm,
|
||||
BussRetrieval,
|
||||
ProcessApprovalHistory,
|
||||
ProcessInput
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
saveLoading: false,
|
||||
isSubmit: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {},
|
||||
// 标准检索字段
|
||||
standForm: {
|
||||
standCode: '', // 标准号
|
||||
cnName: '' // 标准名称
|
||||
},
|
||||
tableData: [
|
||||
{
|
||||
opinionAll: []
|
||||
}
|
||||
],
|
||||
expandForm: {
|
||||
putTime: '', // 计划发布日期
|
||||
planStartTime: '', // 计划开始编写日期
|
||||
delay: '' // 延期理由
|
||||
},
|
||||
expandFormRules: {
|
||||
delay: [
|
||||
{ required: true, message: '延期理由不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
rowObj: {},
|
||||
fillInIndex: null,
|
||||
isSearchDrawer: false,
|
||||
approvalHistory: [], // 审批结果
|
||||
manageId: '',
|
||||
manageName: '',
|
||||
manageZNodes: [],
|
||||
tips: '',
|
||||
visible: {
|
||||
visibleManageTree: false
|
||||
},
|
||||
userObj: {},
|
||||
isGjjl: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击查询按钮
|
||||
searchModal () {
|
||||
this.isSearchDrawer = true
|
||||
},
|
||||
// 企标库信息带入
|
||||
handleBussRetrievalConfirm (dataItem) {
|
||||
this.tableData.push(dataItem)
|
||||
},
|
||||
// 点击展开填写form
|
||||
toogleExpand (row, index) {
|
||||
if (typeof this.rowObj === 'undefined' || Object.keys(this.rowObj).length === 0) {
|
||||
this.rowObj = row
|
||||
this.fillInIndex = index
|
||||
this.expandForm.putTime = row.putTime
|
||||
this.expandForm.planStartTime = row.planStartTime
|
||||
this.expandForm.delay = row.delay
|
||||
this.$refs.table.toggleRowExpansion(row)
|
||||
} else {
|
||||
this.$message.warning('请先保存当前打开的节点数据')
|
||||
}
|
||||
},
|
||||
// 表格内form表单取消按钮事件
|
||||
expandFormCancel () {
|
||||
this.$refs.table.toggleRowExpansion(this.rowObj)
|
||||
this.rowObj = {}
|
||||
},
|
||||
// 表格内form表单保存按钮事件
|
||||
expandFormSave () {
|
||||
this.$refs['expandForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.$refs.table.toggleRowExpansion(this.rowObj)
|
||||
let index = this.fillInIndex
|
||||
let nonComplianceList = JSON.parse(JSON.stringify(this.tableData))
|
||||
nonComplianceList[index].putTime = this.expandForm.putTime
|
||||
nonComplianceList[index].planStartTime = this.expandForm.planStartTime
|
||||
nonComplianceList[index].delay = this.expandForm.delay
|
||||
this.tableData = nonComplianceList
|
||||
this.rowObj = {}
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
this.tableData.map(item => {
|
||||
item.manageId = this.manageId
|
||||
item.manageName = this.manageName
|
||||
})
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
//
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
if (this.tableData.length === 0) {
|
||||
return this.$message.warning('请先选择企标数据')
|
||||
}
|
||||
// 判断是否节点处于展开状态
|
||||
if (typeof this.rowObj !== 'undefined' && Object.keys(this.rowObj).length !== 0) {
|
||||
return this.$message.warning('请先保存当前打开的节点数据')
|
||||
}
|
||||
// 判断延期理由是否全部填写完成
|
||||
let required = false
|
||||
this.tableData.map(item => {
|
||||
if (!item.delay) {
|
||||
required = true
|
||||
}
|
||||
})
|
||||
if (required) {
|
||||
return this.$message.warning('延期理由未全部填写')
|
||||
}
|
||||
if (!this.manageId) {
|
||||
return this.$message.warning('请选择高级经理')
|
||||
}
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
this.tableData.map(item => {
|
||||
item.opinion = ''
|
||||
item.opinionContent = ''
|
||||
item.opinionStep3 = ''
|
||||
item.opinionContentStep3 = ''
|
||||
item.manageId = this.manageId
|
||||
item.manageName = this.manageName
|
||||
})
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
tableData: this.tableData
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
this.isSubmit = false
|
||||
if (res.success) {
|
||||
this.$message.success('流程重新发起成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.prcForm = mesg.prcForm
|
||||
this.tableData = mesg.tableData
|
||||
this.manageId = this.tableData[0].manageId
|
||||
this.manageName = this.tableData[0].manageName
|
||||
let approvalHistory = this.tableData[0].opinionAll
|
||||
approvalHistory.map(item => {
|
||||
this.approvalHistory.push({
|
||||
approvalUserName: item.opinionName, // 审批人
|
||||
auditOpinions: item.opinion, // 审批意见
|
||||
auditOpinionsText: item.opinionContent, // 意见内容
|
||||
approvalNode: item.opinionNode, // 审批人角色
|
||||
approvalTime: item.opinionTime // 审批时间
|
||||
})
|
||||
})
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
handleVisibleManage() {
|
||||
this.visible.visibleManageTree = true
|
||||
},
|
||||
dblClick(treeNode) {
|
||||
this.manageId = treeNode.id
|
||||
this.manageName = treeNode.userName || treeNode.name
|
||||
this.visible.visibleManageTree = false
|
||||
this.userObj.showTipsUser = false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo']),
|
||||
userId () {
|
||||
return this.userInfo.userId
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbyqzxdspStep4{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbyqzxdspStep4-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,172 @@
|
||||
<!--SVPPS组件-->
|
||||
<template>
|
||||
<el-col :span="span">
|
||||
<el-form-item
|
||||
:label="config.attrName"
|
||||
:prop="config.attrField"
|
||||
:label-width="labelWidth"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': disabled}"
|
||||
>
|
||||
<el-input
|
||||
v-model="checkedName"
|
||||
:placeholder="'请选择' + config.attrName"
|
||||
readonly
|
||||
:disabled="disabled"
|
||||
:id="config.attrField"
|
||||
@click.native="handleSVPPSClick"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-drawer
|
||||
:title="config.attrName"
|
||||
:visible.sync="visible"
|
||||
:wrapper-closable="false"
|
||||
size="350px"
|
||||
append-to-body
|
||||
class="org-tree"
|
||||
@opened="drawerOpen"
|
||||
>
|
||||
<div class="demo-drawer-content">
|
||||
<laws-tree
|
||||
v-if="visible"
|
||||
:zNodes="zNodes"
|
||||
check-enable
|
||||
treeDivId="SVPPSID"
|
||||
@treeOnCheck="handleOnCheck"
|
||||
:editable="false"
|
||||
:chkboxType="{ 'Y': '', 'N': '' }"
|
||||
ref="SVPPSID"
|
||||
class="ztree" style="height: 100%;overflow: auto"
|
||||
/>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button
|
||||
round
|
||||
class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
type="primary"
|
||||
@click="handleTreeDrawerConfirm">确定
|
||||
</el-button>
|
||||
<el-button
|
||||
round
|
||||
class="common-button-default"
|
||||
icon="el-icon-close"
|
||||
@click="handleTreeDrawerCancel">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</el-col>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'SVPPS',
|
||||
props: {
|
||||
config: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
value: {
|
||||
required: true
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 栅格比例
|
||||
span: {
|
||||
type: Number,
|
||||
default: 24
|
||||
},
|
||||
labelWidth: {
|
||||
type: String,
|
||||
default: '150px'
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
visible: false,
|
||||
treeCheckNode: [],
|
||||
checkedName: '',
|
||||
zNodes: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getSvpps () {
|
||||
this.$http.get('/lawss/otSvpps/selectThree', {}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
let treeNode = []
|
||||
res.data.map((item, index) => {
|
||||
let treeItem = {
|
||||
name: item.svppsCode + ' ' + item.svppsCnName + ' ' + item.svppsEnName,
|
||||
pId: item.pid,
|
||||
id: item.id,
|
||||
svppsCode: item.svppsCode,
|
||||
snum: item.snum,
|
||||
fnum: item.fnum,
|
||||
tnum: item.tnum
|
||||
}
|
||||
treeNode[index] = treeItem
|
||||
})
|
||||
this.zNodes = treeNode
|
||||
}
|
||||
})
|
||||
},
|
||||
// 选择SVPPS事件
|
||||
handleOnCheck (treeCheckNode) {
|
||||
this.treeCheckNode = treeCheckNode
|
||||
},
|
||||
// 选择SVPPS确定事件
|
||||
handleTreeDrawerConfirm () {
|
||||
const checkedList = []
|
||||
const checkedNameList = []
|
||||
this.treeCheckNode.map(item => {
|
||||
// if (item.pId) {
|
||||
checkedList.push(item.id)
|
||||
checkedNameList.push(item.svppsCode)
|
||||
// }
|
||||
})
|
||||
this.checkedName = checkedNameList.join(',')
|
||||
this.$emit('input', checkedList.join(','))
|
||||
this.$emit('on-checked', this.checkedName)
|
||||
this.visible = false
|
||||
},
|
||||
// 选择SVPPS取消事件
|
||||
handleTreeDrawerCancel () {
|
||||
this.visible = false
|
||||
},
|
||||
// 赋值回显SVPPS
|
||||
drawerOpen () {
|
||||
let checkedArr = this.config.value ? this.config.value.split(',') : []
|
||||
if (checkedArr.length > 0) {
|
||||
setTimeout(() => {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.SVPPSID.checkedNode(checkedArr)
|
||||
})
|
||||
}, 1500)
|
||||
}
|
||||
},
|
||||
handleSVPPSClick() {
|
||||
if (this.disabled) {
|
||||
return false
|
||||
}
|
||||
this.visible = true
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
config: {
|
||||
deep: true,
|
||||
handler(val) {
|
||||
this.checkedName = val.valueName || ''
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.getSvpps()
|
||||
this.checkedName = this.config.valueName || ''
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,975 @@
|
||||
<!-- 企标制修定流程-联络人转发 -->
|
||||
<template>
|
||||
<div class="step2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标制修订流程</template>
|
||||
<template slot="proNode">联络人转发</template>
|
||||
</ProcessHeader>
|
||||
<div class="prc-content">
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
label="流程编号"
|
||||
prop="prcNum"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:title="prcForm.prcNum"
|
||||
v-model="prcForm.prcNum"
|
||||
placeholder="请输入流程编号"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="流程名称"
|
||||
prop="prcName"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:title="prcForm.prcName"
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="请输入截止时间"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<el-divider content-position="left">企标制修订信息</el-divider>
|
||||
<div class="pro-other-info prc-content-border">
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="140px"
|
||||
class="label-input-form">
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
|
||||
<el-form-item
|
||||
label="企标编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.standCode"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入企标编号"
|
||||
:disabled="formDisableFlag"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="制修订类型"
|
||||
prop="planType"
|
||||
class="add-form-item form-item-disabled">
|
||||
<el-select
|
||||
v-model="prcForm.planType"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option value="1" label="制定"></el-option>
|
||||
<el-option value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="中文名称"
|
||||
prop="cnName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.cnName"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入标准中文名称"
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="英文名称"
|
||||
prop="enName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
class="process-textarea"
|
||||
v-model="prcForm.enName"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入英文名称"
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<ProcessSearchStand
|
||||
class="customer-input-item"
|
||||
key="compRepNum"
|
||||
:config="{
|
||||
attrName: '代替企标编号',
|
||||
attrField: 'compRepNum'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="140px"
|
||||
processModel
|
||||
v-model="prcForm.compRepNum"
|
||||
:disabled="formDisableFlag"
|
||||
></ProcessSearchStand>
|
||||
<custom-SVPPS
|
||||
:config="{
|
||||
attrField: 'svpps',
|
||||
attrName: 'SVPPS',
|
||||
valueName: prcForm.svppsName
|
||||
}"
|
||||
:span="12"
|
||||
v-model="prcForm.svpps"
|
||||
label-width="140px"
|
||||
:disabled="formDisableFlag"
|
||||
@on-checked="checkName => prcForm.svppsName = checkName"
|
||||
></custom-SVPPS>
|
||||
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="25">
|
||||
<ProcessSearchStand
|
||||
class="customer-input-item"
|
||||
key="normalizedReferenceFile"
|
||||
:config="{
|
||||
attrName: '规范性引用文件',
|
||||
attrField: 'normalizedReferenceFile'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="140px"
|
||||
processModel
|
||||
v-model="prcForm.normalizedReferenceFile"
|
||||
:disabled="formDisableFlag"
|
||||
></ProcessSearchStand>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="密级"
|
||||
prop="level"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="prcForm.level"
|
||||
clearable
|
||||
placeholder="请选择密级"
|
||||
:disabled="formDisableFlag">
|
||||
<el-option :value="item.value" :label="item.label" v-for="item in MJ" :key="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="是否授权"
|
||||
prop="QBSQ"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-radio-group v-model="prcForm.QBSQ" :disabled="formDisableFlag">
|
||||
<el-radio v-for="item in SHIFOU" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<custom-file
|
||||
key="entStandText"
|
||||
:config="{
|
||||
attrName: '企标文本',
|
||||
attrField: 'entStandText'
|
||||
}"
|
||||
:allow-type="['.doc', '.docx']"
|
||||
:span="12"
|
||||
show-file-model
|
||||
processModel
|
||||
preview
|
||||
v-model="prcForm.entStandText"
|
||||
:disabled="formDisableFlag"
|
||||
></custom-file>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<custom-file
|
||||
key="relatedData"
|
||||
:config="{
|
||||
attrName: '附件',
|
||||
attrField: 'relatedData'
|
||||
}"
|
||||
:allow-type="['.png', '.jpg', '.jpeg', '.xls', '.xlsx', '.ppt', '.pptx', '.pdf', '.doc', '.docx']"
|
||||
:span="12"
|
||||
processModel
|
||||
show-file-model
|
||||
v-model="prcForm.relatedData"
|
||||
:disabled="formDisableFlag"
|
||||
></custom-file>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="主起草人"
|
||||
prop="primaryDrafter"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.primaryDrafter" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.primaryDrafterName"
|
||||
clearable
|
||||
placeholder="请选择主起草人"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="主起草部门"
|
||||
prop="primaryDrafterDept"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.primaryDrafterDept" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.primaryDrafterDeptName"
|
||||
clearable
|
||||
placeholder="选择主起草人后自动带出"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<!--<el-col :span="12">-->
|
||||
<!-- <el-formItem-->
|
||||
<!-- label="实施日期"-->
|
||||
<!-- prop="implementDate"-->
|
||||
<!-- class="add-form-item"-->
|
||||
<!-- :class="{'form-item-disabled': formDisableFlag}">-->
|
||||
<!-- <el-date-picker-->
|
||||
<!-- v-model="prcForm.implementDate"-->
|
||||
<!-- clearable-->
|
||||
<!-- placeholder="请选择实施日期"-->
|
||||
<!-- :editable="false"-->
|
||||
<!-- :disabled="formDisableFlag">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-formItem>-->
|
||||
<!--</el-col>-->
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="其他起草人"
|
||||
prop="otherDrafter"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.otherDrafter" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.otherDrafterName"
|
||||
placeholder="请选择其他起草人"
|
||||
readonly
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="起草部门"
|
||||
prop="otherDrafterDept"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.otherDrafterDept" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.otherDrafterDeptName"
|
||||
clearable
|
||||
placeholder="选择其他起草人后自动带出"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="涉及会签部门"
|
||||
prop="deptInvolvedCountersignature"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.deptInvolvedCountersignature" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.deptInvolvedCountersignatureName"
|
||||
placeholder="请选择涉及会签部门"
|
||||
readonly
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="涉及会签部门联络人"
|
||||
prop="HQBMLLR"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.HQBMLLR" v-show="false"></el-input>
|
||||
<process-input
|
||||
v-model="prcForm.HQBMLLRName"
|
||||
placeholder="请选择涉及会签部门联络人"
|
||||
readonly
|
||||
clearable
|
||||
:show-tips="deptInvTipsShow"
|
||||
:tips="deptInvTips"
|
||||
></process-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-divider content-position="left">转发</el-divider>
|
||||
<div class="prc-content-border">
|
||||
<el-form
|
||||
ref="baseForm3"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="130px"
|
||||
class="label-input-form">
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="审批人"
|
||||
prop="respUser"
|
||||
class="add-form-item">
|
||||
<el-input v-model="prcForm.respUser" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.respUserName"
|
||||
readonly
|
||||
placeholder="请选择审批人"
|
||||
@click.native="handleChoose('respUser')">
|
||||
</el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ProcessApprovalHistory
|
||||
:approvalData="prcForm.approvalHistory"
|
||||
v-if="prcForm.approvalHistory.length"></ProcessApprovalHistory>
|
||||
|
||||
<loading :loading="loading.submit" fixed>正在提交</loading>
|
||||
<loading :loading="loading.saving" fixed>正在保存</loading>
|
||||
<loading :loading="loading.loadTask" fixed>正在查询任务详情</loading>
|
||||
<loading :loading="loading.loadOption" fixed>正在加载流程基础数据</loading>
|
||||
|
||||
<!-- 填写意见 -->
|
||||
<el-dialog
|
||||
title="审核意见"
|
||||
:visible.sync="visible.approval"
|
||||
class="v-class"
|
||||
width="500px"
|
||||
@closed="handleApprovalClosed">
|
||||
<el-form :model="approvalForm" :rules="approvalFormRules" ref="approvalForm" v-if="visible.approval">
|
||||
<el-form-item label="条款内容" label-width="100px" prop="itemContent">
|
||||
<el-input
|
||||
v-model="approvalForm.itemContent"
|
||||
autocomplete="off"
|
||||
placeholder="请填写条款内容"
|
||||
max-length="100"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="修改意见" label-width="100px" prop="itemApproval">
|
||||
<el-input
|
||||
v-model="approvalForm.itemApproval"
|
||||
type="textarea"
|
||||
autocomplete="off"
|
||||
placeholder="请填写条款内容"
|
||||
max-length="100"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
round
|
||||
icon="el-icon-close"
|
||||
@click="visible.approval = false">取 消</el-button>
|
||||
<el-button
|
||||
class="common-button-primary"
|
||||
type="primary"
|
||||
round
|
||||
icon="el-icon-check"
|
||||
@click="handleAddApproval">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit">
|
||||
<el-button
|
||||
type="danger"
|
||||
round
|
||||
class="common-button-danger"
|
||||
icon="el-icon-check"
|
||||
@click="handleSubmit(true)">
|
||||
不涉及</el-button>
|
||||
</ProcessFooter>
|
||||
|
||||
<org-table
|
||||
:visible.sync="visible.visibleTree"
|
||||
title="审批人"
|
||||
:max-selected="1"
|
||||
max-selected-tips="只能选择一个审批人"
|
||||
:config="{
|
||||
value: prcForm.respUser,
|
||||
valueName: prcForm.respUserName
|
||||
}"
|
||||
:deptZNodes="orgZNodes"
|
||||
:orgId="prcForm.deptInvolvedCountersignature"
|
||||
dialog-model
|
||||
@confirm="handleSQTreeConfirm"></org-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import CustomInputForStandards from '@/components/CustomFormComponents/InputForStandards'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import CustomSVPPS from './components/SVPPS'
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import ProcessSearchStand from 'process/components/ProcessSearchAllStandard'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
import {
|
||||
getDicTypeListCode,
|
||||
qbzxdlcDetail,
|
||||
completeTask,
|
||||
saveTaskForPub
|
||||
} from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'step2',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
CustomInputForStandards,
|
||||
CustomFile,
|
||||
ProcessChooseTree,
|
||||
CustomSVPPS,
|
||||
ProcessInput,
|
||||
ProcessSearchStand,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
data () {
|
||||
var checkOtherDrafterDept = (rule, value, callback) => {
|
||||
// 主起草部门
|
||||
const dept = this.prcForm.primaryDrafterDept
|
||||
|
||||
if (!value && !dept) {
|
||||
return callback(new Error('请选择起草部门'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
|
||||
}
|
||||
return {
|
||||
prcForm: {
|
||||
// 制修订类型 1制订/2修订
|
||||
planType: '',
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
// 企业编号
|
||||
standCode: '',
|
||||
// 中文名称
|
||||
cnName: '',
|
||||
// 英文名称
|
||||
enName: '',
|
||||
// 标准类别
|
||||
standSort: '',
|
||||
// SVPPS
|
||||
svpps: '',
|
||||
svppsName: '',
|
||||
// 代替企业编号
|
||||
compRepNum: '',
|
||||
// 密级
|
||||
level: '',
|
||||
// 涉及的会签部门
|
||||
signDept: '',
|
||||
country: '',
|
||||
standGenera: '',
|
||||
planStatus: '',
|
||||
normalizedReferenceFile: '',
|
||||
otherDrafters: '',
|
||||
deptInvolvedCountersignature: '',
|
||||
respDept: '',
|
||||
respEngineer: '',
|
||||
respEngineerName: '',
|
||||
deptInvolvedCountersignatureName: '',
|
||||
otherDraftersName: '',
|
||||
issueDate: '',
|
||||
implementDate: '',
|
||||
// 其他起草人审核意见
|
||||
otherDraftersApproval: '',
|
||||
otherDraftersApprovalData: [],
|
||||
// 备注
|
||||
remark: '',
|
||||
respUser: '',
|
||||
respUserName: '',
|
||||
// 审批历史
|
||||
approvalHistory: [],
|
||||
createUser: '',
|
||||
// 涉及会签部门联络人
|
||||
HQBMLLR: '',
|
||||
HQBMLLRName: '',
|
||||
FORoleId: '',
|
||||
FORoleName: '',
|
||||
FOId: '',
|
||||
FOName: '',
|
||||
passBackFlag: 0
|
||||
},
|
||||
prcFormRules: {
|
||||
entStandText: [
|
||||
{ required: true, message: '企标文本不能为空', trigger: 'change' }
|
||||
],
|
||||
planType: [
|
||||
{ required: true, message: '请选择制修订类型', trigger: 'change' }
|
||||
],
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
standCode: [
|
||||
{ required: true, message: '企业编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
cnName: [
|
||||
{ required: true, message: '中文名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
enName: [
|
||||
{ required: true, message: '英文名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
standSort: [
|
||||
{ required: true, message: '标准类别不能为空', trigger: 'change' }
|
||||
],
|
||||
compRepNum: [
|
||||
// { required: true, message: '代替企标编号不能为空', trigger: 'change' }
|
||||
],
|
||||
level: [
|
||||
{ required: true, message: '密级不能为空', trigger: 'change' }
|
||||
],
|
||||
country: [
|
||||
{ required: true, message: '请选择适用区域', trigger: 'change' }
|
||||
],
|
||||
standGenera: [
|
||||
{ required: true, message: '请选择企标大类', trigger: 'change' }
|
||||
],
|
||||
planStatus: [
|
||||
{ required: true, message: '请选择企标状态', trigger: 'change' }
|
||||
],
|
||||
otherDrafters: [
|
||||
{ required: true, message: '请选择其他起草人', trigger: 'change' }
|
||||
],
|
||||
deptInvolvedCountersignature: [
|
||||
{ required: true, message: '请选择涉及的会签部门', trigger: 'change' }
|
||||
],
|
||||
respDept: [
|
||||
{ required: true, message: '请选择起草部门', trigger: 'change' }
|
||||
],
|
||||
respEngineer: [
|
||||
{ required: true, message: '请选择主起草人', trigger: 'change' }
|
||||
],
|
||||
issueDate: [
|
||||
{ required: true, message: '请选择发布日期', trigger: 'change' }
|
||||
],
|
||||
// implementDate: [
|
||||
// { required: true, message: '请选择实施日期', trigger: 'change' }
|
||||
// ],
|
||||
otherDraftersApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
respUser: [
|
||||
{ required: true, message: '请选择责任人', trigger: 'change' }
|
||||
],
|
||||
otherDrafter: [
|
||||
{ required: true, message: '请选择其他起草人', trigger: 'change' }
|
||||
],
|
||||
otherDrafterDept: [
|
||||
{ required: true, validator: checkOtherDrafterDept, trigger: 'change' }
|
||||
],
|
||||
primaryDrafter: [
|
||||
{ required: true, message: '请选择主起草人', trigger: 'change' }
|
||||
],
|
||||
QBSQ: [
|
||||
{ required: true, message: '请选择是否授权', trigger: 'change' }
|
||||
],
|
||||
HQBMLLR: [
|
||||
{ required: true, message: '会签部门联络人不能为空', trigger: 'change' }
|
||||
],
|
||||
FORoleId: [
|
||||
{ required: true, message: 'FO角色不能为空', trigger: 'change' }
|
||||
],
|
||||
FOId: [
|
||||
{ required: true, message: 'FO审批人不能为空', trigger: 'change' }
|
||||
],
|
||||
primaryDrafterDept: [
|
||||
{ required: true, message: '主起草部门不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
loading: {
|
||||
submit: false,
|
||||
saving: false,
|
||||
loadTask: false,
|
||||
loadOption: false
|
||||
},
|
||||
visible: {
|
||||
approval: false,
|
||||
visibleTree: false
|
||||
},
|
||||
countryList: [],
|
||||
standSortOptions: [],
|
||||
planStatusOption: [
|
||||
{
|
||||
value: '1',
|
||||
label: '制定中'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '修订中'
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '已发布'
|
||||
},
|
||||
{
|
||||
value: '4',
|
||||
label: '计划已确认(初始状态)'
|
||||
}
|
||||
],
|
||||
approvalForm: {
|
||||
itemContent: '',
|
||||
itemApproval: ''
|
||||
},
|
||||
approvalFormRules: {
|
||||
itemContent: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
itemApproval: [
|
||||
{ required: true, message: '评审意见不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
selection: [],
|
||||
// 涉及会签部门文字提示是否显示
|
||||
deptInvTipsShow: false,
|
||||
// 涉及会签部门文字提示内容
|
||||
deptInvTips: '',
|
||||
// FO文字提示是否显示
|
||||
FOTipsShow: false,
|
||||
// FO文字提示内容
|
||||
FOTips: '',
|
||||
MJ: [],
|
||||
SHIFOU: [],
|
||||
checkIdList: [],
|
||||
orgZNodes: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-11-26 16:10:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSave() {
|
||||
this.loading.saving = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
_formData.append('pId', this.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.loading.saving = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-11-26 16:10:15
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSubmit(bsj) {
|
||||
this.$refs['baseForm3'].validate((valid, fields) => {
|
||||
const sprValid = fields && fields['respUser']
|
||||
if (valid || (bsj && sprValid)) {
|
||||
const next = () => {
|
||||
this.loading.submit = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
prcForm.llr = this.userInfo.userId
|
||||
prcForm.llrName = this.userInfo.userName
|
||||
// bsj 1直接提交 0不涉及提交
|
||||
prcForm.bsj = bsj ? 1 : 0
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskId', this.taskIds)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
completeTask(_formData).then(res => {
|
||||
this.loading.submit = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
// 不涉及提交
|
||||
if (bsj) {
|
||||
this.$confirm('是否确认不涉及?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
confirmButtonClass: 'common-button-primary',
|
||||
roundButton: true
|
||||
}).then(() => {
|
||||
next()
|
||||
}).catch(() => {})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写完整')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 删除评审意见
|
||||
* @date: 2020-11-26 17:47:49
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleDelRevOpinions() {
|
||||
if (this.selection.length) {
|
||||
this.selection.map(delItem => {
|
||||
this.prcForm.otherDraftersApprovalData.map((item, index) => {
|
||||
if (JSON.stringify(delItem === JSON.stringify(item))) {
|
||||
this.prcForm.otherDraftersApprovalData.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的意见')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 新增评审意见
|
||||
* @date: 2020-11-26 17:48:44
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleAddRevOpinions() {
|
||||
this.visible.approval = true
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 流程详情查询
|
||||
* @date: 2020-12-07 19:16:17
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
qbzxdlcDetail() {
|
||||
this.loading.loadTask = true
|
||||
qbzxdlcDetail({
|
||||
taskIds: this.taskIds
|
||||
}).then(res => {
|
||||
this.loading.loadTask = false
|
||||
for (let key in res) {
|
||||
this.$set(this.prcForm, key, res[key])
|
||||
}
|
||||
this.prcForm.prcName = this.getHandleInfo.prcName
|
||||
this.prcForm.prcNum = this.getHandleInfo.prcNum
|
||||
this.prcForm.prcType = this.getHandleInfo.prcType
|
||||
}).catch(e => {
|
||||
this.loading.loadTask = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 加载数据字典
|
||||
* @date: 2020-12-03 19:28:45
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
getDicTypeListCode () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.loading.loadOption = true
|
||||
getDicTypeListCode()
|
||||
.then(res => {
|
||||
this.countryList = res.data.COUNTRY || []
|
||||
this.standSortOptions = res.data.BUSSSTANDCLASS || []
|
||||
this.MJ = res.data.MJ || []
|
||||
this.SHIFOU = res.data.SHIFOU || []
|
||||
this.loading.loadOption = false
|
||||
resolve()
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 添加评审意见
|
||||
* @date: 2020-12-07 19:56:23
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleAddApproval() {
|
||||
this.$refs.approvalForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.prcForm.otherDraftersApprovalData.push({
|
||||
itemContent: this.approvalForm.itemContent,
|
||||
itemApproval: this.approvalForm.itemApproval
|
||||
})
|
||||
this.visible.approval = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleApprovalClosed() {
|
||||
this.approvalForm = {
|
||||
itemContent: '',
|
||||
itemApproval: ''
|
||||
}
|
||||
},
|
||||
|
||||
handleApprovalSelectionChange(selection) {
|
||||
this.selection = selection
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 责任人选取
|
||||
* @date: 2021-03-04 16:19:35
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSQTreeConfirm(checkedList, checkedIdList) {
|
||||
if (checkedList.length) {
|
||||
const respUser = checkedList[0]
|
||||
this.prcForm.respUser = respUser.userId
|
||||
this.prcForm.respUserName = respUser.userName
|
||||
}
|
||||
},
|
||||
|
||||
handleSQTreeClosed() {},
|
||||
|
||||
handleChoose(field) {
|
||||
switch (field) {
|
||||
case 'respUser':
|
||||
this.checkIdList = this.prcForm.respUser.split(',')
|
||||
break
|
||||
}
|
||||
setTimeout(() => {
|
||||
this.visible.visibleTree = true
|
||||
}, 100)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
taskIds() {
|
||||
return this.$route.query.taskIds
|
||||
},
|
||||
orgId() {
|
||||
return this.userInfo.orgType === 'DEPART' ? this.userInfo.orgId : this.userInfo.pOrgId
|
||||
},
|
||||
...mapGetters(['getHandleInfo', 'userInfo'])
|
||||
},
|
||||
watch: {
|
||||
'prcForm.deptInvolvedCountersignature': {
|
||||
deep: true,
|
||||
handler (val) {
|
||||
const orgZNodes = []
|
||||
const orgId = this.prcForm.deptInvolvedCountersignature.split(',')
|
||||
const orgName = this.prcForm.deptInvolvedCountersignatureName.split(',')
|
||||
orgId.map((id, index) => {
|
||||
orgZNodes.push({
|
||||
id,
|
||||
name: orgName[index],
|
||||
icon: 'static/images/dept.png'
|
||||
})
|
||||
})
|
||||
this.orgZNodes = orgZNodes
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.getDicTypeListCode()
|
||||
.then(res => {
|
||||
this.qbzxdlcDetail()
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step2 {
|
||||
padding: 0 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
.customer-input-item {
|
||||
border-bottom: none;
|
||||
/deep/ .el-input {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.review-opinions {
|
||||
.review-opinions-header {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.review-opinions-content {
|
||||
padding: 15px 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,981 @@
|
||||
<!-- 企标修定流程-其它部门审批人会签 -->
|
||||
<template>
|
||||
<div class="step3">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标制修订流程</template>
|
||||
<template slot="proNode">其它部门审批人会签</template>
|
||||
</ProcessHeader>
|
||||
<div class="prc-content">
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
label="流程编号"
|
||||
prop="prcNum"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:title="prcForm.prcNum"
|
||||
v-model="prcForm.prcNum"
|
||||
placeholder="请输入流程编号"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="流程名称"
|
||||
prop="prcName"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:title="prcForm.prcName"
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="请输入截止时间"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<el-divider content-position="left">企标制修订信息</el-divider>
|
||||
<div class="pro-other-info prc-content-border">
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="140px"
|
||||
class="label-input-form">
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="企标编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.standCode"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入企标编号"
|
||||
:disabled="formDisableFlag"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="制修订类型"
|
||||
prop="planType"
|
||||
class="add-form-item form-item-disabled">
|
||||
<el-select
|
||||
v-model="prcForm.planType"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option value="1" label="制定"></el-option>
|
||||
<el-option value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="中文名称"
|
||||
prop="cnName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.cnName"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入标准中文名称"
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="英文名称"
|
||||
prop="enName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
class="process-textarea"
|
||||
v-model="prcForm.enName"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入英文名称"
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<ProcessSearchStand
|
||||
class="customer-input-item"
|
||||
key="compRepNum"
|
||||
:config="{
|
||||
attrName: '代替企标编号',
|
||||
attrField: 'compRepNum'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="140px"
|
||||
processModel
|
||||
v-model="prcForm.compRepNum"
|
||||
:disabled="formDisableFlag"
|
||||
></ProcessSearchStand>
|
||||
<custom-SVPPS
|
||||
:config="{
|
||||
attrField: 'svpps',
|
||||
attrName: 'SVPPS',
|
||||
valueName: prcForm.svppsName
|
||||
}"
|
||||
:span="12"
|
||||
v-model="prcForm.svpps"
|
||||
label-width="140px"
|
||||
:disabled="formDisableFlag"
|
||||
@on-checked="checkName => prcForm.svppsName = checkName"
|
||||
></custom-SVPPS>
|
||||
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="25">
|
||||
<ProcessSearchStand
|
||||
class="customer-input-item"
|
||||
key="normalizedReferenceFile"
|
||||
:config="{
|
||||
attrName: '规范性引用文件',
|
||||
attrField: 'normalizedReferenceFile'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="140px"
|
||||
processModel
|
||||
v-model="prcForm.normalizedReferenceFile"
|
||||
:disabled="formDisableFlag"
|
||||
></ProcessSearchStand>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="密级"
|
||||
prop="level"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="prcForm.level"
|
||||
clearable
|
||||
placeholder="请选择密级"
|
||||
:disabled="formDisableFlag">
|
||||
<el-option :value="item.value" :label="item.label" v-for="item in MJ" :key="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="是否授权"
|
||||
prop="QBSQ"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-radio-group v-model="prcForm.QBSQ" :disabled="formDisableFlag">
|
||||
<el-radio v-for="item in SHIFOU" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<custom-file
|
||||
key="entStandText"
|
||||
:config="{
|
||||
attrName: '企标文本',
|
||||
attrField: 'entStandText'
|
||||
}"
|
||||
:allow-type="['.doc', '.docx']"
|
||||
:span="12"
|
||||
processModel
|
||||
preview
|
||||
show-file-model
|
||||
v-model="prcForm.entStandText"
|
||||
:disabled="formDisableFlag"
|
||||
></custom-file>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<custom-file
|
||||
key="relatedData"
|
||||
:config="{
|
||||
attrName: '附件',
|
||||
attrField: 'relatedData'
|
||||
}"
|
||||
:allow-type="['.png', '.jpg', '.jpeg', '.xls', '.xlsx', '.ppt', '.pptx', '.pdf', '.doc', '.docx']"
|
||||
:span="12"
|
||||
processModel
|
||||
show-file-model
|
||||
v-model="prcForm.relatedData"
|
||||
:disabled="formDisableFlag"
|
||||
></custom-file>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="主起草人"
|
||||
prop="primaryDrafter"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.primaryDrafter" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.primaryDrafterName"
|
||||
clearable
|
||||
placeholder="请选择主起草人"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="主起草部门"
|
||||
prop="primaryDrafterDept"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.primaryDrafterDept" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.primaryDrafterDeptName"
|
||||
clearable
|
||||
placeholder="选择主起草人后自动带出"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<!--<el-col :span="12">-->
|
||||
<!-- <el-formItem-->
|
||||
<!-- label="实施日期"-->
|
||||
<!-- prop="implementDate"-->
|
||||
<!-- class="add-form-item"-->
|
||||
<!-- :class="{'form-item-disabled': formDisableFlag}">-->
|
||||
<!-- <el-date-picker-->
|
||||
<!-- v-model="prcForm.implementDate"-->
|
||||
<!-- clearable-->
|
||||
<!-- placeholder="请选择实施日期"-->
|
||||
<!-- :editable="false"-->
|
||||
<!-- :disabled="formDisableFlag">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-formItem>-->
|
||||
<!--</el-col>-->
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="其他起草人"
|
||||
prop="otherDrafter"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.otherDrafter" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.otherDrafterName"
|
||||
placeholder="请选择其他起草人"
|
||||
readonly
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="起草部门"
|
||||
prop="otherDrafterDept"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.otherDrafterDept" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.otherDrafterDeptName"
|
||||
clearable
|
||||
placeholder="选择其他起草人后自动带出"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="涉及会签部门"
|
||||
prop="deptInvolvedCountersignature"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.deptInvolvedCountersignature" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.deptInvolvedCountersignatureName"
|
||||
placeholder="请选择涉及会签部门"
|
||||
readonly
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="涉及会签部门联络人"
|
||||
prop="HQBMLLR"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.HQBMLLR" v-show="false"></el-input>
|
||||
<process-input
|
||||
v-model="prcForm.HQBMLLRName"
|
||||
placeholder="请选择涉及会签部门联络人"
|
||||
readonly
|
||||
clearable
|
||||
:show-tips="deptInvTipsShow"
|
||||
:tips="deptInvTips"
|
||||
></process-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-divider content-position="left">评审意见</el-divider>
|
||||
<div class="prc-content-border">
|
||||
<el-form
|
||||
ref="baseForm3"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="130px"
|
||||
class="label-input-form">
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="审核意见"
|
||||
prop="respApproval"
|
||||
class="add-form-item">
|
||||
<el-select
|
||||
v-model="prcForm.respApproval"
|
||||
placeholder="请选择审核意见"
|
||||
@change="handleRespApprovalChange">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<transition name="el-zoom-in-top">
|
||||
<div v-if="prcForm.respApproval === '1'">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="评审意见"
|
||||
prop="reviewOpinions"
|
||||
class="add-form-item"
|
||||
>
|
||||
<div class="review-opinions">
|
||||
<div class="review-opinions-header">
|
||||
<el-button
|
||||
type="danger"
|
||||
class="common-button-danger"
|
||||
round
|
||||
plain
|
||||
@click="handleDelRevOpinions">删除</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
plain
|
||||
@click="handleAddRevOpinions">新增</el-button>
|
||||
</div>
|
||||
<div class="review-opinions-content">
|
||||
<el-table
|
||||
:data="prcForm.respApprovalData"
|
||||
border
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px', fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="handleApprovalSelectionChange">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
width="60"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="itemContent"
|
||||
label="条款内容"
|
||||
width="120"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="itemApproval"
|
||||
label="修改意见"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-row>-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item-->
|
||||
<!-- label="备注"-->
|
||||
<!-- prop="remark"-->
|
||||
<!-- class="add-form-item">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="prcForm.remark"-->
|
||||
<!-- clearable-->
|
||||
<!-- placeholder="请填写备注"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
</div>
|
||||
</transition>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<loading :loading="loading.submit" fixed>正在提交</loading>
|
||||
<loading :loading="loading.saving" fixed>正在保存</loading>
|
||||
<loading :loading="loading.loadTask" fixed>正在查询任务详情</loading>
|
||||
<loading :loading="loading.loadOption" fixed>正在加载流程基础数据</loading>
|
||||
|
||||
<!-- 填写意见 -->
|
||||
<el-dialog
|
||||
title="审核意见"
|
||||
:visible.sync="visible.approval"
|
||||
class="v-class"
|
||||
width="500px"
|
||||
@closed="handleApprovalClosed">
|
||||
<el-form :model="approvalForm" :rules="approvalFormRules" ref="approvalForm" v-if="visible.approval">
|
||||
<el-form-item label="条款内容" label-width="100px" prop="itemContent">
|
||||
<el-input
|
||||
v-model="approvalForm.itemContent"
|
||||
autocomplete="off"
|
||||
placeholder="请填写条款内容"
|
||||
max-length="100"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="修改意见" label-width="100px" prop="itemApproval">
|
||||
<el-input
|
||||
v-model="approvalForm.itemApproval"
|
||||
type="textarea"
|
||||
autocomplete="off"
|
||||
placeholder="请填写条款内容"
|
||||
max-length="100"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
round
|
||||
icon="el-icon-close"
|
||||
@click="visible.approval = false">取 消</el-button>
|
||||
<el-button
|
||||
class="common-button-primary"
|
||||
type="primary"
|
||||
round
|
||||
icon="el-icon-check"
|
||||
@click="handleAddApproval">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import CustomInputForStandards from '@/components/CustomFormComponents/InputForStandards'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import CustomSVPPS from './components/SVPPS'
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import ProcessSearchStand from 'process/components/ProcessSearchAllStandard'
|
||||
import {
|
||||
getDicTypeListCode,
|
||||
qbzxdlcDetail,
|
||||
completeTask,
|
||||
saveTaskForPub
|
||||
} from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'step3',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
CustomInputForStandards,
|
||||
CustomFile,
|
||||
CustomSVPPS,
|
||||
ProcessInput,
|
||||
ProcessSearchStand
|
||||
},
|
||||
data () {
|
||||
var checkOtherDrafterDept = (rule, value, callback) => {
|
||||
// 主起草部门
|
||||
const dept = this.prcForm.primaryDrafterDept
|
||||
if (!value && !dept) {
|
||||
return callback(new Error('请选择起草部门'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
|
||||
}
|
||||
return {
|
||||
prcForm: {
|
||||
// 制修订类型 1制订/2修订
|
||||
planType: '',
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
// 企业编号
|
||||
standCode: '',
|
||||
// 中文名称
|
||||
cnName: '',
|
||||
// 英文名称
|
||||
enName: '',
|
||||
// 标准类别
|
||||
standSort: '',
|
||||
// SVPPS
|
||||
svpps: '',
|
||||
svppsName: '',
|
||||
// 代替企业编号
|
||||
compRepNum: '',
|
||||
// 密级
|
||||
level: '',
|
||||
// 涉及的会签部门
|
||||
signDept: '',
|
||||
country: '',
|
||||
standGenera: '',
|
||||
planStatus: '',
|
||||
normalizedReferenceFile: '',
|
||||
otherDrafters: '',
|
||||
deptInvolvedCountersignature: '',
|
||||
respDept: '',
|
||||
respEngineer: '',
|
||||
respEngineerName: '',
|
||||
deptInvolvedCountersignatureName: '',
|
||||
otherDraftersName: '',
|
||||
issueDate: '',
|
||||
implementDate: '',
|
||||
// 其他起草人审核意见
|
||||
otherDraftersApproval: '',
|
||||
otherDraftersApprovalData: [],
|
||||
// FO审核意见
|
||||
FOApproval: '',
|
||||
FOApprovalData: [],
|
||||
// 备注
|
||||
remark: '',
|
||||
// 责任人审核意见
|
||||
respApproval: '',
|
||||
respApprovalData: [],
|
||||
// 审批历史
|
||||
approvalHistory: [],
|
||||
createUser: '',
|
||||
// 涉及会签部门联络人
|
||||
HQBMLLR: '',
|
||||
HQBMLLRName: '',
|
||||
FORoleId: '',
|
||||
FORoleName: '',
|
||||
FOId: '',
|
||||
FOName: '',
|
||||
passBackFlag: 0
|
||||
},
|
||||
prcFormRules: {
|
||||
entStandText: [
|
||||
{ required: true, message: '企标文本不能为空', trigger: 'change' }
|
||||
],
|
||||
planType: [
|
||||
{ required: true, message: '请选择制修订类型', trigger: 'change' }
|
||||
],
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
standCode: [
|
||||
{ required: true, message: '企业编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
cnName: [
|
||||
{ required: true, message: '中文名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
enName: [
|
||||
{ required: true, message: '英文名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
standSort: [
|
||||
{ required: true, message: '标准类别不能为空', trigger: 'change' }
|
||||
],
|
||||
compRepNum: [
|
||||
// { required: true, message: '代替企标编号不能为空', trigger: 'change' }
|
||||
],
|
||||
level: [
|
||||
{ required: true, message: '密级不能为空', trigger: 'change' }
|
||||
],
|
||||
country: [
|
||||
{ required: true, message: '请选择适用区域', trigger: 'change' }
|
||||
],
|
||||
standGenera: [
|
||||
{ required: true, message: '请选择企标大类', trigger: 'change' }
|
||||
],
|
||||
planStatus: [
|
||||
{ required: true, message: '请选择企标状态', trigger: 'change' }
|
||||
],
|
||||
otherDrafters: [
|
||||
{ required: true, message: '请选择其他起草人', trigger: 'change' }
|
||||
],
|
||||
deptInvolvedCountersignature: [
|
||||
{ required: true, message: '请选择涉及的会签部门', trigger: 'change' }
|
||||
],
|
||||
respDept: [
|
||||
{ required: true, message: '请选择起草部门', trigger: 'change' }
|
||||
],
|
||||
respEngineer: [
|
||||
{ required: true, message: '请选择主起草人', trigger: 'change' }
|
||||
],
|
||||
issueDate: [
|
||||
{ required: true, message: '请选择发布日期', trigger: 'change' }
|
||||
],
|
||||
// implementDate: [
|
||||
// { required: true, message: '请选择实施日期', trigger: 'change' }
|
||||
// ],
|
||||
otherDraftersApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
FOApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
respApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
reviewOpinions: [
|
||||
{ required: true, validator: this.validReviewOpinions, trigger: 'change' }
|
||||
],
|
||||
otherDrafter: [
|
||||
{ required: true, message: '请选择其他起草人', trigger: 'change' }
|
||||
],
|
||||
otherDrafterDept: [
|
||||
{ required: true, validator: checkOtherDrafterDept, trigger: 'change' }
|
||||
],
|
||||
primaryDrafter: [
|
||||
{ required: true, message: '请选择主起草人', trigger: 'change' }
|
||||
],
|
||||
QBSQ: [
|
||||
{ required: true, message: '请选择是否授权', trigger: 'change' }
|
||||
],
|
||||
HQBMLLR: [
|
||||
{ required: true, message: '会签部门联络人不能为空', trigger: 'change' }
|
||||
],
|
||||
FORoleId: [
|
||||
{ required: true, message: 'FO角色不能为空', trigger: 'change' }
|
||||
],
|
||||
FOId: [
|
||||
{ required: true, message: 'FO审批人不能为空', trigger: 'change' }
|
||||
],
|
||||
primaryDrafterDept: [
|
||||
{ required: true, message: '主起草部门不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
countryList: [],
|
||||
standSortOptions: [],
|
||||
planStatusOption: [
|
||||
{
|
||||
value: '1',
|
||||
label: '制定中'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '修订中'
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '已发布'
|
||||
},
|
||||
{
|
||||
value: '4',
|
||||
label: '计划已确认(初始状态)'
|
||||
}
|
||||
],
|
||||
approvalForm: {
|
||||
itemContent: '',
|
||||
itemApproval: ''
|
||||
},
|
||||
approvalFormRules: {
|
||||
itemContent: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
itemApproval: [
|
||||
{ required: true, message: '评审意见不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
selection: [],
|
||||
loading: {
|
||||
submit: false,
|
||||
saving: false,
|
||||
loadTask: false,
|
||||
loadOption: false
|
||||
},
|
||||
visible: {
|
||||
approval: false
|
||||
},
|
||||
// 涉及会签部门文字提示是否显示
|
||||
deptInvTipsShow: false,
|
||||
// 涉及会签部门文字提示内容
|
||||
deptInvTips: '',
|
||||
// FO文字提示是否显示
|
||||
FOTipsShow: false,
|
||||
// FO文字提示内容
|
||||
FOTips: '',
|
||||
MJ: [],
|
||||
SHIFOU: [],
|
||||
checkIdList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-11-26 16:10:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSave() {
|
||||
this.loading.saving = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
_formData.append('pId', this.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.loading.saving = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-11-26 16:10:15
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSubmit() {
|
||||
this.$refs['baseForm3'].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.prcForm.respApproval === '1' && !this.prcForm.respApprovalData.length) {
|
||||
this.$message.warning('评审意见不能为空')
|
||||
return false
|
||||
}
|
||||
this.loading.submit = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskId', this.taskIds)
|
||||
prcForm.approvalHistory.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: prcForm.respApproval,
|
||||
approvalNode: '其它部门审批人会签',
|
||||
approvalTime: '',
|
||||
approvalData: prcForm.respApprovalData
|
||||
})
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
completeTask(_formData).then(res => {
|
||||
this.loading.submit = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写完整')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 删除评审意见
|
||||
* @date: 2020-11-26 17:47:49
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleDelRevOpinions() {
|
||||
if (this.selection.length) {
|
||||
this.selection.map(delItem => {
|
||||
this.prcForm.respApprovalData.map((item, index) => {
|
||||
if (JSON.stringify(delItem === JSON.stringify(item))) {
|
||||
this.prcForm.respApprovalData.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的意见')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 新增评审意见
|
||||
* @date: 2020-11-26 17:48:44
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleAddRevOpinions() {
|
||||
this.visible.approval = true
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 加载数据字典
|
||||
* @date: 2020-12-03 19:28:45
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
getDicTypeListCode () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.loading.loadOption = true
|
||||
getDicTypeListCode()
|
||||
.then(res => {
|
||||
this.countryList = res.data.COUNTRY || []
|
||||
this.standSortOptions = res.data.BUSSSTANDCLASS || []
|
||||
this.MJ = res.data.MJ || []
|
||||
this.SHIFOU = res.data.SHIFOU || []
|
||||
this.loading.loadOption = false
|
||||
resolve()
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 查询流程详情
|
||||
* @date: 2020-12-07 21:17:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
qbzxdlcDetail() {
|
||||
this.loading.loadTask = true
|
||||
qbzxdlcDetail({
|
||||
taskIds: this.taskIds
|
||||
}).then(res => {
|
||||
this.loading.loadTask = false
|
||||
for (let key in res) {
|
||||
this.$set(this.prcForm, key, res[key])
|
||||
}
|
||||
this.prcForm.prcName = this.getHandleInfo.prcName
|
||||
this.prcForm.prcNum = this.getHandleInfo.prcNum
|
||||
this.prcForm.prcType = this.getHandleInfo.prcType
|
||||
// 评审意见清空
|
||||
this.prcForm.respApproval = ''
|
||||
this.prcForm.respApprovalData = []
|
||||
}).catch(e => {
|
||||
this.loading.loadTask = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 添加评审意见
|
||||
* @date: 2020-12-07 19:56:23
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleAddApproval() {
|
||||
this.$refs.approvalForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.prcForm.respApprovalData.push({
|
||||
itemContent: this.approvalForm.itemContent,
|
||||
itemApproval: this.approvalForm.itemApproval
|
||||
})
|
||||
this.visible.approval = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleApprovalClosed() {
|
||||
this.approvalForm = {
|
||||
itemContent: '',
|
||||
itemApproval: ''
|
||||
}
|
||||
},
|
||||
|
||||
handleApprovalSelectionChange(selection) {
|
||||
this.selection = selection
|
||||
},
|
||||
|
||||
validReviewOpinions(rule, value, callback) {
|
||||
callback()
|
||||
},
|
||||
|
||||
handleRespApprovalChange(val) {
|
||||
if (val === '1') {
|
||||
this.prcForm.respApprovalData = []
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
taskIds() {
|
||||
return this.$route.query.taskIds
|
||||
},
|
||||
...mapGetters(['getHandleInfo'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.getDicTypeListCode()
|
||||
.then(res => {
|
||||
this.qbzxdlcDetail()
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step3 {
|
||||
padding: 0 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
.customer-input-item {
|
||||
border-bottom: none;
|
||||
}
|
||||
.review-opinions {
|
||||
.review-opinions-header {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.review-opinions-content {
|
||||
padding: 15px 10px;
|
||||
line-height: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,999 @@
|
||||
<!-- 企标修定流程-高级经理审批 -->
|
||||
<template>
|
||||
<div class="step4">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标制修订流程</template>
|
||||
<template slot="proNode">高级经理审批</template>
|
||||
</ProcessHeader>
|
||||
<div class="prc-content">
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
label="流程编号"
|
||||
prop="prcNum"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:title="prcForm.prcNum"
|
||||
v-model="prcForm.prcNum"
|
||||
placeholder="请输入流程编号"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="流程名称"
|
||||
prop="prcName"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:title="prcForm.prcName"
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="请输入截止时间"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<el-divider content-position="left">企标制修订信息</el-divider>
|
||||
<div class="pro-other-info prc-content-border">
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="140px"
|
||||
class="label-input-form">
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="企标编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.standCode"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入企标编号"
|
||||
:disabled="formDisableFlag"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="制修订类型"
|
||||
prop="planType"
|
||||
class="add-form-item form-item-disabled">
|
||||
<el-select
|
||||
v-model="prcForm.planType"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option value="1" label="制定"></el-option>
|
||||
<el-option value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="中文名称"
|
||||
prop="cnName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.cnName"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入标准中文名称"
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="英文名称"
|
||||
prop="enName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
class="process-textarea"
|
||||
v-model="prcForm.enName"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入英文名称"
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<ProcessSearchStand
|
||||
class="customer-input-item"
|
||||
key="compRepNum"
|
||||
:config="{
|
||||
attrName: '代替企标编号',
|
||||
attrField: 'compRepNum'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="140px"
|
||||
processModel
|
||||
v-model="prcForm.compRepNum"
|
||||
:disabled="formDisableFlag"
|
||||
></ProcessSearchStand>
|
||||
<custom-SVPPS
|
||||
:config="{
|
||||
attrField: 'svpps',
|
||||
attrName: 'SVPPS',
|
||||
valueName: prcForm.svppsName
|
||||
}"
|
||||
:span="12"
|
||||
v-model="prcForm.svpps"
|
||||
label-width="140px"
|
||||
:disabled="formDisableFlag"
|
||||
@on-checked="checkName => prcForm.svppsName = checkName"
|
||||
></custom-SVPPS>
|
||||
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="25">
|
||||
<ProcessSearchStand
|
||||
class="customer-input-item"
|
||||
key="normalizedReferenceFile"
|
||||
:config="{
|
||||
attrName: '规范性引用文件',
|
||||
attrField: 'normalizedReferenceFile'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="140px"
|
||||
processModel
|
||||
v-model="prcForm.normalizedReferenceFile"
|
||||
:disabled="formDisableFlag"
|
||||
></ProcessSearchStand>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="密级"
|
||||
prop="level"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="prcForm.level"
|
||||
clearable
|
||||
placeholder="请选择密级"
|
||||
:disabled="formDisableFlag">
|
||||
<el-option :value="item.value" :label="item.label" v-for="item in MJ" :key="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="是否授权"
|
||||
prop="QBSQ"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-radio-group v-model="prcForm.QBSQ" :disabled="formDisableFlag">
|
||||
<el-radio v-for="item in SHIFOU" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<custom-file
|
||||
key="entStandText"
|
||||
:config="{
|
||||
attrName: '企标文本',
|
||||
attrField: 'entStandText'
|
||||
}"
|
||||
:allow-type="['.doc', '.docx']"
|
||||
:span="12"
|
||||
processModel
|
||||
preview
|
||||
show-file-model
|
||||
v-model="prcForm.entStandText"
|
||||
:disabled="formDisableFlag"
|
||||
></custom-file>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<custom-file
|
||||
key="relatedData"
|
||||
:config="{
|
||||
attrName: '附件',
|
||||
attrField: 'relatedData'
|
||||
}"
|
||||
:allow-type="['.png', '.jpg', '.jpeg', '.xls', '.xlsx', '.ppt', '.pptx','.pdf','.doc','.docx']"
|
||||
:span="12"
|
||||
processModel
|
||||
show-file-model
|
||||
v-model="prcForm.relatedData"
|
||||
:disabled="formDisableFlag"
|
||||
></custom-file>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="主起草人"
|
||||
prop="primaryDrafter"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.primaryDrafter" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.primaryDrafterName"
|
||||
clearable
|
||||
placeholder="请选择主起草人"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="主起草部门"
|
||||
prop="primaryDrafterDept"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.primaryDrafterDept" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.primaryDrafterDeptName"
|
||||
clearable
|
||||
placeholder="选择主起草人后自动带出"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<!--<el-col :span="12">-->
|
||||
<!-- <el-formItem-->
|
||||
<!-- label="实施日期"-->
|
||||
<!-- prop="implementDate"-->
|
||||
<!-- class="add-form-item"-->
|
||||
<!-- :class="{'form-item-disabled': formDisableFlag}">-->
|
||||
<!-- <el-date-picker-->
|
||||
<!-- v-model="prcForm.implementDate"-->
|
||||
<!-- clearable-->
|
||||
<!-- placeholder="请选择实施日期"-->
|
||||
<!-- :editable="false"-->
|
||||
<!-- :disabled="formDisableFlag">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-formItem>-->
|
||||
<!--</el-col>-->
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="其他起草人"
|
||||
prop="otherDrafter"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.otherDrafter" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.otherDrafterName"
|
||||
placeholder="请选择其他起草人"
|
||||
readonly
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="起草部门"
|
||||
prop="otherDrafterDept"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.otherDrafterDept" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.otherDrafterDeptName"
|
||||
clearable
|
||||
placeholder="选择其他起草人后自动带出"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="涉及会签部门"
|
||||
prop="deptInvolvedCountersignature"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.deptInvolvedCountersignature" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.deptInvolvedCountersignatureName"
|
||||
placeholder="请选择涉及会签部门"
|
||||
readonly
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="涉及会签部门联络人"
|
||||
prop="HQBMLLR"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.HQBMLLR" v-show="false"></el-input>
|
||||
<process-input
|
||||
v-model="prcForm.HQBMLLRName"
|
||||
placeholder="请选择涉及会签部门联络人"
|
||||
readonly
|
||||
clearable
|
||||
:show-tips="deptInvTipsShow"
|
||||
:tips="deptInvTips"
|
||||
></process-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-divider content-position="left">评审意见</el-divider>
|
||||
<div class="prc-content-border">
|
||||
<el-form
|
||||
ref="baseForm3"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="130px"
|
||||
class="label-input-form">
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="审核意见"
|
||||
prop="manageApproval"
|
||||
class="add-form-item">
|
||||
<el-select
|
||||
v-model="prcForm.manageApproval"
|
||||
placeholder="请选择审核意见"
|
||||
@change="handleManageApprovalChange">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<transition name="el-zoom-in-top">
|
||||
<div v-if="prcForm.manageApproval === '1'">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="评审意见"
|
||||
prop="reviewOpinions"
|
||||
class="add-form-item"
|
||||
>
|
||||
<div class="review-opinions">
|
||||
<div class="review-opinions-header">
|
||||
<el-button
|
||||
type="danger"
|
||||
class="common-button-danger"
|
||||
round
|
||||
plain
|
||||
@click="handleDelRevOpinions">删除</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="common-button-primary"
|
||||
round
|
||||
plain
|
||||
@click="handleAddRevOpinions">新增</el-button>
|
||||
</div>
|
||||
<div class="review-opinions-content">
|
||||
<el-table
|
||||
:data="prcForm.manageApprovalData"
|
||||
border
|
||||
tooltip-effect="dark"
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px', fontWeight: 'bold', height: '48px'}"
|
||||
@selection-change="handleApprovalSelectionChange">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="序号"
|
||||
type="index"
|
||||
width="60"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="itemContent"
|
||||
label="条款内容"
|
||||
width="120"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="itemApproval"
|
||||
label="修改意见"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- <el-row>-->
|
||||
<!-- <el-col :span="12">-->
|
||||
<!-- <el-form-item-->
|
||||
<!-- label="备注"-->
|
||||
<!-- prop="remark"-->
|
||||
<!-- class="add-form-item">-->
|
||||
<!-- <el-input-->
|
||||
<!-- v-model="prcForm.remark"-->
|
||||
<!-- clearable-->
|
||||
<!-- placeholder="请填写备注"></el-input>-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- </el-row>-->
|
||||
</div>
|
||||
</transition>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<loading :loading="loading.submit" fixed>正在提交</loading>
|
||||
<loading :loading="loading.saving" fixed>正在保存</loading>
|
||||
<loading :loading="loading.loadTask" fixed>正在查询任务详情</loading>
|
||||
<loading :loading="loading.loadOption" fixed>正在加载流程基础数据</loading>
|
||||
|
||||
<!-- 填写意见 -->
|
||||
<el-dialog
|
||||
title="审核意见"
|
||||
:visible.sync="visible.approval"
|
||||
class="v-class"
|
||||
width="500px"
|
||||
@closed="handleApprovalClosed">
|
||||
<el-form :model="approvalForm" :rules="approvalFormRules" ref="approvalForm" v-if="visible.approval">
|
||||
<el-form-item label="条款内容" label-width="100px" prop="itemContent">
|
||||
<el-input
|
||||
v-model="approvalForm.itemContent"
|
||||
autocomplete="off"
|
||||
placeholder="请填写条款内容"
|
||||
max-length="100"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="修改意见" label-width="100px" prop="itemApproval">
|
||||
<el-input
|
||||
v-model="approvalForm.itemApproval"
|
||||
type="textarea"
|
||||
autocomplete="off"
|
||||
placeholder="请填写条款内容"
|
||||
max-length="100"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
round
|
||||
icon="el-icon-close"
|
||||
@click="visible.approval = false">取 消</el-button>
|
||||
<el-button
|
||||
class="common-button-primary"
|
||||
type="primary"
|
||||
round
|
||||
icon="el-icon-check"
|
||||
@click="handleAddApproval">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import CustomInputForStandards from '@/components/CustomFormComponents/InputForStandards'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import CustomSVPPS from './components/SVPPS'
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import ProcessSearchStand from 'process/components/ProcessSearchAllStandard'
|
||||
import {
|
||||
getDicTypeListCode,
|
||||
qbzxdlcDetail,
|
||||
completeTask,
|
||||
saveTaskForPub
|
||||
} from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'step4',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
CustomInputForStandards,
|
||||
CustomFile,
|
||||
CustomSVPPS,
|
||||
ProcessInput,
|
||||
ProcessSearchStand
|
||||
},
|
||||
data () {
|
||||
var checkOtherDrafterDept = (rule, value, callback) => {
|
||||
// 主起草部门
|
||||
const dept = this.prcForm.primaryDrafterDept
|
||||
if (!value && !dept) {
|
||||
return callback(new Error('请选择起草部门'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
|
||||
}
|
||||
return {
|
||||
prcForm: {
|
||||
// 制修订类型 1制订/2修订
|
||||
planType: '',
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
// 企业编号
|
||||
standCode: '',
|
||||
// 中文名称
|
||||
cnName: '',
|
||||
// 英文名称
|
||||
enName: '',
|
||||
// 标准类别
|
||||
standSort: '',
|
||||
// SVPPS
|
||||
svpps: '',
|
||||
svppsName: '',
|
||||
// 代替企业编号
|
||||
compRepNum: '',
|
||||
// 密级
|
||||
level: '',
|
||||
// 涉及的会签部门
|
||||
signDept: '',
|
||||
country: '',
|
||||
standGenera: '',
|
||||
planStatus: '',
|
||||
normalizedReferenceFile: '',
|
||||
otherDrafters: '',
|
||||
deptInvolvedCountersignature: '',
|
||||
respDept: '',
|
||||
respEngineer: '',
|
||||
respEngineerName: '',
|
||||
deptInvolvedCountersignatureName: '',
|
||||
otherDraftersName: '',
|
||||
issueDate: '',
|
||||
implementDate: '',
|
||||
// 其他起草人审核意见
|
||||
otherDraftersApproval: '',
|
||||
otherDraftersApprovalData: [],
|
||||
// FO审核意见
|
||||
FOApproval: '',
|
||||
FOApprovalData: [],
|
||||
// 备注
|
||||
remark: '',
|
||||
// 责任人审核意见
|
||||
respApproval: '',
|
||||
respApprovalData: [],
|
||||
// 高级经理审核意见
|
||||
manageApproval: '',
|
||||
manageApprovalData: [],
|
||||
// 审批历史
|
||||
approvalHistory: [],
|
||||
createUser: '',
|
||||
// 涉及会签部门联络人
|
||||
HQBMLLR: '',
|
||||
HQBMLLRName: '',
|
||||
FORoleId: '',
|
||||
FORoleName: '',
|
||||
FOId: '',
|
||||
FOName: '',
|
||||
passBackFlag: 0
|
||||
},
|
||||
prcFormRules: {
|
||||
entStandText: [
|
||||
{ required: true, message: '企标文本不能为空', trigger: 'change' }
|
||||
],
|
||||
planType: [
|
||||
{ required: true, message: '请选择制修订类型', trigger: 'change' }
|
||||
],
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
standCode: [
|
||||
{ required: true, message: '企业编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
cnName: [
|
||||
{ required: true, message: '中文名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
enName: [
|
||||
{ required: true, message: '英文名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
standSort: [
|
||||
{ required: true, message: '标准类别不能为空', trigger: 'change' }
|
||||
],
|
||||
compRepNum: [
|
||||
// { required: true, message: '代替企标编号不能为空', trigger: 'change' }
|
||||
],
|
||||
level: [
|
||||
{ required: true, message: '密级不能为空', trigger: 'change' }
|
||||
],
|
||||
country: [
|
||||
{ required: true, message: '请选择适用区域', trigger: 'change' }
|
||||
],
|
||||
standGenera: [
|
||||
{ required: true, message: '请选择企标大类', trigger: 'change' }
|
||||
],
|
||||
planStatus: [
|
||||
{ required: true, message: '请选择企标状态', trigger: 'change' }
|
||||
],
|
||||
otherDrafters: [
|
||||
{ required: true, message: '请选择其他起草人', trigger: 'change' }
|
||||
],
|
||||
deptInvolvedCountersignature: [
|
||||
{ required: true, message: '请选择涉及的会签部门', trigger: 'change' }
|
||||
],
|
||||
respDept: [
|
||||
{ required: true, message: '请选择起草部门', trigger: 'change' }
|
||||
],
|
||||
respEngineer: [
|
||||
{ required: true, message: '请选择主起草人', trigger: 'change' }
|
||||
],
|
||||
issueDate: [
|
||||
{ required: true, message: '请选择发布日期', trigger: 'change' }
|
||||
],
|
||||
implementDate: [
|
||||
{ required: true, message: '请选择实施日期', trigger: 'change' }
|
||||
],
|
||||
otherDraftersApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
FOApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
respApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
manageApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
reviewOpinions: [
|
||||
{ required: true, validator: this.validReviewOpinions, trigger: 'change' }
|
||||
],
|
||||
otherDrafter: [
|
||||
{ required: true, message: '请选择其他起草人', trigger: 'change' }
|
||||
],
|
||||
otherDrafterDept: [
|
||||
{ required: true, validator: checkOtherDrafterDept, trigger: 'change' }
|
||||
],
|
||||
primaryDrafter: [
|
||||
{ required: true, message: '请选择主起草人', trigger: 'change' }
|
||||
],
|
||||
QBSQ: [
|
||||
{ required: true, message: '请选择是否授权', trigger: 'change' }
|
||||
],
|
||||
HQBMLLR: [
|
||||
{ required: true, message: '会签部门联络人不能为空', trigger: 'change' }
|
||||
],
|
||||
FORoleId: [
|
||||
{ required: true, message: 'FO角色不能为空', trigger: 'change' }
|
||||
],
|
||||
FOId: [
|
||||
{ required: true, message: 'FO审批人不能为空', trigger: 'change' }
|
||||
],
|
||||
primaryDrafterDept: [
|
||||
{ required: true, message: '主起草部门不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
countryList: [],
|
||||
standSortOptions: [],
|
||||
planStatusOption: [
|
||||
{
|
||||
value: '1',
|
||||
label: '制定中'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '修订中'
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '已发布'
|
||||
},
|
||||
{
|
||||
value: '4',
|
||||
label: '计划已确认(初始状态)'
|
||||
}
|
||||
],
|
||||
approvalForm: {
|
||||
itemContent: '',
|
||||
itemApproval: ''
|
||||
},
|
||||
approvalFormRules: {
|
||||
itemContent: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
itemApproval: [
|
||||
{ required: true, message: '评审意见不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
selection: [],
|
||||
loading: {
|
||||
submit: false,
|
||||
saving: false,
|
||||
loadTask: false,
|
||||
loadOption: false
|
||||
},
|
||||
visible: {
|
||||
approval: false
|
||||
},
|
||||
// 涉及会签部门文字提示是否显示
|
||||
deptInvTipsShow: false,
|
||||
// 涉及会签部门文字提示内容
|
||||
deptInvTips: '',
|
||||
// FO文字提示是否显示
|
||||
FOTipsShow: false,
|
||||
// FO文字提示内容
|
||||
FOTips: '',
|
||||
MJ: [],
|
||||
SHIFOU: [],
|
||||
checkIdList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-11-26 16:10:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSave() {
|
||||
this.loading.saving = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
_formData.append('pId', this.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.loading.saving = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-11-26 16:10:15
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSubmit() {
|
||||
this.$refs['baseForm3'].validate(valid => {
|
||||
if (valid) {
|
||||
if (this.prcForm.manageApproval === '1') {
|
||||
this.prcForm.passBackFlag = 1
|
||||
}
|
||||
if (this.prcForm.manageApproval === '1' && !this.prcForm.manageApprovalData.length) {
|
||||
this.$message.warning('评审意见不能为空')
|
||||
return false
|
||||
}
|
||||
this.loading.submit = true
|
||||
// 起草 = 主起草 + 其他起草
|
||||
let result = this.prcForm.otherDrafterDept.indexOf(this.prcForm.primaryDrafterDept)
|
||||
if (result === -1){
|
||||
let otherDrafterDeptMiddle = []
|
||||
otherDrafterDeptMiddle.push(this.prcForm.primaryDrafterDept,this.prcForm.otherDrafterDept)
|
||||
this.prcForm.otherDrafterDept = otherDrafterDeptMiddle.toString()
|
||||
}
|
||||
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
prcForm.approvalHistory.push({
|
||||
approvalUserName: this.$store.getters.userInfo.uName,
|
||||
auditOpinions: prcForm.manageApproval,
|
||||
approvalNode: '高级经理审批',
|
||||
approvalTime: '',
|
||||
approvalData: prcForm.manageApprovalData
|
||||
})
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
completeTask(_formData).then(res => {
|
||||
this.loading.submit = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写完整')
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 删除评审意见
|
||||
* @date: 2020-11-26 17:47:49
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleDelRevOpinions() {
|
||||
if (this.selection.length) {
|
||||
this.selection.map(delItem => {
|
||||
this.prcForm.manageApprovalData.map((item, index) => {
|
||||
if (JSON.stringify(delItem === JSON.stringify(item))) {
|
||||
this.prcForm.manageApprovalData.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的意见')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 新增评审意见
|
||||
* @date: 2020-11-26 17:48:44
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleAddRevOpinions() {
|
||||
this.visible.approval = true
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 加载数据字典
|
||||
* @date: 2020-12-03 19:28:45
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
getDicTypeListCode () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.loading.loadOption = true
|
||||
getDicTypeListCode()
|
||||
.then(res => {
|
||||
this.countryList = res.data.COUNTRY || []
|
||||
this.standSortOptions = res.data.BUSSSTANDCLASS || []
|
||||
this.MJ = res.data.MJ || []
|
||||
this.SHIFOU = res.data.SHIFOU || []
|
||||
this.loading.loadOption = false
|
||||
resolve()
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 查询流程详情
|
||||
* @date: 2020-12-07 21:17:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
qbzxdlcDetail() {
|
||||
this.loading.loadTask = true
|
||||
qbzxdlcDetail({
|
||||
taskIds: this.taskIds
|
||||
}).then(res => {
|
||||
this.loading.loadTask = false
|
||||
console.log(res)
|
||||
for (let key in res) {
|
||||
this.$set(this.prcForm, key, res[key])
|
||||
}
|
||||
this.prcForm.prcName = this.getHandleInfo.prcName
|
||||
this.prcForm.prcNum = this.getHandleInfo.prcNum
|
||||
this.prcForm.prcType = this.getHandleInfo.prcType
|
||||
}).catch(e => {
|
||||
this.loading.loadTask = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 添加评审意见
|
||||
* @date: 2020-12-07 19:56:23
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleAddApproval() {
|
||||
this.$refs.approvalForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.prcForm.manageApprovalData.push({
|
||||
itemContent: this.approvalForm.itemContent,
|
||||
itemApproval: this.approvalForm.itemApproval
|
||||
})
|
||||
this.visible.approval = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleApprovalClosed() {
|
||||
this.approvalForm = {
|
||||
itemContent: '',
|
||||
itemApproval: ''
|
||||
}
|
||||
},
|
||||
|
||||
handleApprovalSelectionChange(selection) {
|
||||
this.selection = selection
|
||||
},
|
||||
|
||||
validReviewOpinions(rule, value, callback) {
|
||||
callback()
|
||||
},
|
||||
|
||||
handleManageApprovalChange(val) {
|
||||
if (val === '1') {
|
||||
this.prcForm.manageApprovalData = []
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
taskIds() {
|
||||
return this.$route.query.taskIds
|
||||
},
|
||||
...mapGetters(['getHandleInfo'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.getDicTypeListCode()
|
||||
.then(res => {
|
||||
this.qbzxdlcDetail()
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step4 {
|
||||
padding: 0 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
.customer-input-item {
|
||||
border-bottom: none;
|
||||
/deep/ .el-input {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.review-opinions {
|
||||
.review-opinions-header {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.review-opinions-content {
|
||||
padding: 15px 10px;
|
||||
line-height: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,916 @@
|
||||
<!-- 企标修定流程-企标工程师审核 -->
|
||||
<template>
|
||||
<div class="step5">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标制修订流程</template>
|
||||
<template slot="proNode">企标工程师审核</template>
|
||||
</ProcessHeader>
|
||||
<div class="prc-content">
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
label="流程编号"
|
||||
prop="prcNum"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:title="prcForm.prcNum"
|
||||
v-model="prcForm.prcNum"
|
||||
placeholder="请输入流程编号"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="流程名称"
|
||||
prop="prcName"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-input
|
||||
:title="prcForm.prcName"
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item"
|
||||
:class="{'disabled': formDisableFlag}">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder=""
|
||||
clearable
|
||||
:disabled="formDisableFlag"></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<el-divider content-position="left">企标制修订信息</el-divider>
|
||||
<div class="pro-other-info prc-content-border">
|
||||
<el-form
|
||||
ref="baseForm2"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
label-width="140px"
|
||||
class="label-input-form">
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="企标编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.standCode"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入企标编号"
|
||||
:disabled="formDisableFlag"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="制修订类型"
|
||||
prop="planType"
|
||||
class="add-form-item form-item-disabled">
|
||||
<el-select
|
||||
v-model="prcForm.planType"
|
||||
clearable
|
||||
disabled
|
||||
placeholder="请选择制修订类型">
|
||||
<el-option value="1" label="制定"></el-option>
|
||||
<el-option value="2" label="修订"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="中文名称"
|
||||
prop="cnName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="prcForm.cnName"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入标准中文名称"
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="英文名称"
|
||||
prop="enName"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
class="process-textarea"
|
||||
v-model="prcForm.enName"
|
||||
maxlength="100"
|
||||
clearable
|
||||
placeholder="请输入英文名称"
|
||||
:disabled="formDisableFlag"></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<ProcessSearchStand
|
||||
class="customer-input-item"
|
||||
key="compRepNum"
|
||||
:config="{
|
||||
attrName: '代替企标编号',
|
||||
attrField: 'compRepNum'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="140px"
|
||||
processModel
|
||||
v-model="prcForm.compRepNum"
|
||||
:disabled="formDisableFlag"
|
||||
></ProcessSearchStand>
|
||||
<custom-SVPPS
|
||||
:config="{
|
||||
attrField: 'svpps',
|
||||
attrName: 'SVPPS',
|
||||
valueName: prcForm.svppsName
|
||||
}"
|
||||
:span="12"
|
||||
v-model="prcForm.svpps"
|
||||
label-width="140px"
|
||||
:disabled="formDisableFlag"
|
||||
@on-checked="checkName => prcForm.svppsName = checkName"
|
||||
></custom-SVPPS>
|
||||
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="25">
|
||||
<ProcessSearchStand
|
||||
class="customer-input-item"
|
||||
key="normalizedReferenceFile"
|
||||
:config="{
|
||||
attrName: '规范性引用文件',
|
||||
attrField: 'normalizedReferenceFile'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="140px"
|
||||
processModel
|
||||
:disabled="formDisableFlag"
|
||||
v-model="prcForm.normalizedReferenceFile"
|
||||
></ProcessSearchStand>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="密级"
|
||||
prop="level"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="prcForm.level"
|
||||
clearable
|
||||
placeholder="请选择密级"
|
||||
:disabled="formDisableFlag">
|
||||
<el-option :value="item.value" :label="item.label" v-for="item in MJ" :key="item.value"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="是否授权"
|
||||
prop="QBSQ"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-radio-group v-model="prcForm.QBSQ" :disabled="formDisableFlag">
|
||||
<el-radio v-for="item in SHIFOU" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<custom-file
|
||||
key="entStandText"
|
||||
:config="{
|
||||
attrName: '企标文本',
|
||||
attrField: 'entStandText'
|
||||
}"
|
||||
:allow-type="['.doc', '.docx']"
|
||||
:span="12"
|
||||
processModel
|
||||
:re-upload="!isEnd"
|
||||
:disabled="isEnd"
|
||||
:preview="isEnd"
|
||||
:limit="1"
|
||||
exceed="企标文本只能上传1个文件"
|
||||
show-file-model
|
||||
v-model="prcForm.entStandText"
|
||||
@success="standFileReUploadFlag = 1"
|
||||
></custom-file>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<custom-file
|
||||
key="relatedData"
|
||||
:config="{
|
||||
attrName: '附件',
|
||||
attrField: 'relatedData'
|
||||
}"
|
||||
:allow-type="['.png', '.jpg', '.jpeg', '.xls', '.xlsx', '.ppt', '.pptx', '.pdf', '.doc', '.docx']"
|
||||
:span="12"
|
||||
processModel
|
||||
show-file-model
|
||||
v-model="prcForm.relatedData"
|
||||
:disabled="formDisableFlag"
|
||||
></custom-file>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="主起草人"
|
||||
prop="primaryDrafter"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.primaryDrafter" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.primaryDrafterName"
|
||||
clearable
|
||||
placeholder="请选择主起草人"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="主起草部门"
|
||||
prop="primaryDrafterDept"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.primaryDrafterDept" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.primaryDrafterDeptName"
|
||||
clearable
|
||||
placeholder="选择主起草人后自动带出"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<!--<el-col :span="12">-->
|
||||
<!-- <el-formItem-->
|
||||
<!-- label="实施日期"-->
|
||||
<!-- prop="implementDate"-->
|
||||
<!-- class="add-form-item"-->
|
||||
<!-- :class="{'form-item-disabled': formDisableFlag}">-->
|
||||
<!-- <el-date-picker-->
|
||||
<!-- v-model="prcForm.implementDate"-->
|
||||
<!-- clearable-->
|
||||
<!-- placeholder="请选择实施日期"-->
|
||||
<!-- :editable="false"-->
|
||||
<!-- :disabled="formDisableFlag">-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-formItem>-->
|
||||
<!--</el-col>-->
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="其他起草人"
|
||||
prop="otherDrafter"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.otherDrafter" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.otherDrafterName"
|
||||
placeholder="请选择其他起草人"
|
||||
readonly
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem
|
||||
label="起草部门"
|
||||
prop="otherDrafterDept"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.otherDrafterDept" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.otherDrafterDeptName"
|
||||
clearable
|
||||
placeholder="选择其他起草人后自动带出"
|
||||
readonly
|
||||
></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="涉及会签部门"
|
||||
prop="deptInvolvedCountersignature"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.deptInvolvedCountersignature" v-show="false"></el-input>
|
||||
<el-input
|
||||
v-model="prcForm.deptInvolvedCountersignatureName"
|
||||
placeholder="请选择涉及会签部门"
|
||||
readonly
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="涉及会签部门联络人"
|
||||
prop="HQBMLLR"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input v-model="prcForm.HQBMLLR" v-show="false"></el-input>
|
||||
<process-input
|
||||
v-model="prcForm.HQBMLLRName"
|
||||
placeholder="请选择涉及会签部门联络人"
|
||||
readonly
|
||||
clearable
|
||||
:show-tips="deptInvTipsShow"
|
||||
:tips="deptInvTips"
|
||||
></process-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<loading :loading="loading.submit" fixed>正在提交</loading>
|
||||
<loading :loading="loading.saving" fixed>正在保存</loading>
|
||||
<loading :loading="loading.loadTask" fixed>正在查询任务详情</loading>
|
||||
<loading :loading="loading.loadOption" fixed>正在加载流程基础数据</loading>
|
||||
|
||||
<!-- 填写意见 -->
|
||||
<el-dialog
|
||||
title="审核意见"
|
||||
:visible.sync="visible.approval"
|
||||
class="v-class"
|
||||
width="500px"
|
||||
@closed="handleApprovalClosed">
|
||||
<el-form :model="approvalForm" :rules="approvalFormRules" ref="approvalForm" v-if="visible.approval">
|
||||
<el-form-item label="条款内容" label-width="100px" prop="itemContent">
|
||||
<el-input
|
||||
v-model="approvalForm.itemContent"
|
||||
autocomplete="off"
|
||||
placeholder="请填写条款内容"
|
||||
max-length="100"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="修改意见" label-width="100px" prop="itemApproval">
|
||||
<el-input
|
||||
v-model="approvalForm.itemApproval"
|
||||
type="textarea"
|
||||
autocomplete="off"
|
||||
placeholder="请填写条款内容"
|
||||
max-length="100"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button
|
||||
class="common-button-default"
|
||||
round
|
||||
icon="el-icon-close"
|
||||
@click="visible.approval = false">取 消</el-button>
|
||||
<el-button
|
||||
class="common-button-primary"
|
||||
type="primary"
|
||||
round
|
||||
icon="el-icon-check"
|
||||
@click="handleAddApproval">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
v-if="!isEnd"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import CustomInputForStandards from '@/components/CustomFormComponents/InputForStandards'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import CustomSVPPS from './components/SVPPS'
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import ProcessSearchStand from 'process/components/ProcessSearchAllStandard'
|
||||
import {
|
||||
getDicTypeListCode,
|
||||
qbzxdlcDetail,
|
||||
completeTask,
|
||||
bussStandCreateProcess,
|
||||
saveTaskForPub
|
||||
} from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'step5',
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
CustomInputForStandards,
|
||||
CustomFile,
|
||||
CustomSVPPS,
|
||||
ProcessInput,
|
||||
ProcessSearchStand
|
||||
},
|
||||
data () {
|
||||
var checkOtherDrafterDept = (rule, value, callback) => {
|
||||
// 主起草部门
|
||||
const dept = this.prcForm.primaryDrafterDept
|
||||
if (!value && !dept) {
|
||||
return callback(new Error('请选择起草部门'))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
|
||||
}
|
||||
return {
|
||||
prcForm: {
|
||||
// 制修订类型 1制订/2修订
|
||||
planType: '',
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
// 企业编号
|
||||
standCode: '',
|
||||
// 中文名称
|
||||
cnName: '',
|
||||
// 英文名称
|
||||
enName: '',
|
||||
// 标准类别
|
||||
standSort: '',
|
||||
// SVPPS
|
||||
svpps: '',
|
||||
svppsName: '',
|
||||
// 代替企业编号
|
||||
compRepNum: '',
|
||||
// 密级
|
||||
level: '',
|
||||
// 涉及的会签部门
|
||||
signDept: '',
|
||||
country: '',
|
||||
standGenera: '',
|
||||
planStatus: '',
|
||||
normalizedReferenceFile: '',
|
||||
otherDrafters: '',
|
||||
deptInvolvedCountersignature: '',
|
||||
respDept: '',
|
||||
respEngineer: '',
|
||||
respEngineerName: '',
|
||||
deptInvolvedCountersignatureName: '',
|
||||
otherDraftersName: '',
|
||||
issueDate: '',
|
||||
implementDate: '',
|
||||
// 其他起草人审核意见
|
||||
otherDraftersApproval: '',
|
||||
otherDraftersApprovalData: [],
|
||||
// FO审核意见
|
||||
FOApproval: '',
|
||||
FOApprovalData: [],
|
||||
// 备注
|
||||
remark: '',
|
||||
// 责任人审核意见
|
||||
respApproval: '',
|
||||
respApprovalData: [],
|
||||
// 高级经理审核意见
|
||||
manageApproval: '',
|
||||
manageApprovalData: [],
|
||||
// 企标工程师审核意见
|
||||
enterBidEngApproval: '',
|
||||
enterBidEngApprovalData: [],
|
||||
// 审批历史
|
||||
approvalHistory: [],
|
||||
createUser: '',
|
||||
// 涉及会签部门联络人
|
||||
HQBMLLR: '',
|
||||
HQBMLLRName: '',
|
||||
FORoleId: '',
|
||||
FORoleName: '',
|
||||
FOId: '',
|
||||
FOName: '',
|
||||
passBackFlag: 0
|
||||
},
|
||||
// 企标文件是否被更新了
|
||||
standFileReUploadFlag: '',
|
||||
prcFormRules: {
|
||||
entStandText: [
|
||||
{ required: true, message: '企标文本不能为空', trigger: 'change' }
|
||||
],
|
||||
planType: [
|
||||
{ required: true, message: '请选择制修订类型', trigger: 'change' }
|
||||
],
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
standCode: [
|
||||
{ required: true, message: '企业编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
cnName: [
|
||||
{ required: true, message: '中文名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
enName: [
|
||||
{ required: true, message: '英文名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
standSort: [
|
||||
{ required: true, message: '标准类别不能为空', trigger: 'change' }
|
||||
],
|
||||
compRepNum: [
|
||||
// { required: true, message: '代替企标编号不能为空', trigger: 'change' }
|
||||
],
|
||||
level: [
|
||||
{ required: true, message: '密级不能为空', trigger: 'change' }
|
||||
],
|
||||
country: [
|
||||
{ required: true, message: '请选择适用区域', trigger: 'change' }
|
||||
],
|
||||
standGenera: [
|
||||
{ required: true, message: '请选择企标大类', trigger: 'change' }
|
||||
],
|
||||
planStatus: [
|
||||
{ required: true, message: '请选择企标状态', trigger: 'change' }
|
||||
],
|
||||
otherDrafters: [
|
||||
{ required: true, message: '请选择其他起草人', trigger: 'change' }
|
||||
],
|
||||
deptInvolvedCountersignature: [
|
||||
{ required: true, message: '请选择涉及的会签部门', trigger: 'change' }
|
||||
],
|
||||
respDept: [
|
||||
{ required: true, message: '请选择起草部门', trigger: 'change' }
|
||||
],
|
||||
respEngineer: [
|
||||
{ required: true, message: '请选择主起草人', trigger: 'change' }
|
||||
],
|
||||
issueDate: [
|
||||
{ required: true, message: '请选择发布日期', trigger: 'change' }
|
||||
],
|
||||
implementDate: [
|
||||
{ required: true, message: '请选择实施日期', trigger: 'change' }
|
||||
],
|
||||
otherDraftersApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
FOApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
respApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
enterBidEngApproval: [
|
||||
{ required: true, message: '请选择审核意见', trigger: 'change' }
|
||||
],
|
||||
reviewOpinions: [
|
||||
{ required: true, validator: this.validReviewOpinions, trigger: 'change' }
|
||||
],
|
||||
otherDrafter: [
|
||||
{ required: true, message: '请选择其他起草人', trigger: 'change' }
|
||||
],
|
||||
otherDrafterDept: [
|
||||
{ required: true, validator: checkOtherDrafterDept, trigger: 'change' }
|
||||
],
|
||||
primaryDrafter: [
|
||||
{ required: true, message: '请选择主起草人', trigger: 'change' }
|
||||
],
|
||||
QBSQ: [
|
||||
{ required: true, message: '请选择是否授权', trigger: 'change' }
|
||||
],
|
||||
HQBMLLR: [
|
||||
{ required: true, message: '会签部门联络人不能为空', trigger: 'change' }
|
||||
],
|
||||
FORoleId: [
|
||||
{ required: true, message: 'FO角色不能为空', trigger: 'change' }
|
||||
],
|
||||
FOId: [
|
||||
{ required: true, message: 'FO审批人不能为空', trigger: 'change' }
|
||||
],
|
||||
primaryDrafterDept: [
|
||||
{ required: true, message: '主起草部门不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
countryList: [],
|
||||
standSortOptions: [],
|
||||
planStatusOption: [
|
||||
{
|
||||
value: '1',
|
||||
label: '制定中'
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '修订中'
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '已发布'
|
||||
},
|
||||
{
|
||||
value: '4',
|
||||
label: '计划已确认(初始状态)'
|
||||
}
|
||||
],
|
||||
approvalForm: {
|
||||
itemContent: '',
|
||||
itemApproval: ''
|
||||
},
|
||||
approvalFormRules: {
|
||||
itemContent: [
|
||||
{ required: true, message: '条款内容不能为空', trigger: 'blur' }
|
||||
],
|
||||
itemApproval: [
|
||||
{ required: true, message: '评审意见不能为空', trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
selection: [],
|
||||
loading: {
|
||||
submit: false,
|
||||
saving: false,
|
||||
loadTask: false,
|
||||
loadOption: false
|
||||
},
|
||||
visible: {
|
||||
approval: false
|
||||
},
|
||||
// 涉及会签部门文字提示是否显示
|
||||
deptInvTipsShow: false,
|
||||
// 涉及会签部门文字提示内容
|
||||
deptInvTips: '',
|
||||
// FO文字提示是否显示
|
||||
FOTipsShow: false,
|
||||
// FO文字提示内容
|
||||
FOTips: '',
|
||||
MJ: [],
|
||||
SHIFOU: [],
|
||||
checkIdList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
/**
|
||||
* @description: 保存
|
||||
* @date: 2020-11-26 16:10:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSave() {
|
||||
this.loading.saving = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskIds', this.taskIds)
|
||||
_formData.append('pId', this.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.loading.saving = false
|
||||
if (res.message === '操作成功') {
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push({
|
||||
// name: 'ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 提交
|
||||
* @date: 2020-11-26 16:10:15
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleSubmit() {
|
||||
this.$refs['baseForm2'].validate(valid => {
|
||||
if (valid) {
|
||||
this.loading.submit = true
|
||||
const prcForm = JSON.parse(JSON.stringify(this.prcForm))
|
||||
if (!prcForm.standFileReUploadFlag) {
|
||||
prcForm.standFileReUploadFlag = this.standFileReUploadFlag === '' ? 0 : this.standFileReUploadFlag
|
||||
} else {
|
||||
prcForm.standFileReUploadFlag = this.standFileReUploadFlag === '' ? prcForm.standFileReUploadFlag : this.standFileReUploadFlag
|
||||
}
|
||||
prcForm.loginUser = this.$store.getters.userInfo.userId
|
||||
const _formData = new FormData()
|
||||
_formData.append('taskId', this.taskIds)
|
||||
_formData.append('json', JSON.stringify(prcForm))
|
||||
completeTask(_formData).then(res => {
|
||||
this.loading.submit = false
|
||||
if (res.message === '操作成功') {
|
||||
this.bussStandCreateProcess(JSON.stringify(prcForm))
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 删除评审意见
|
||||
* @date: 2020-11-26 17:47:49
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleDelRevOpinions() {
|
||||
if (this.selection.length) {
|
||||
this.selection.map(delItem => {
|
||||
this.prcForm.enterBidEngApprovalData.map((item, index) => {
|
||||
if (JSON.stringify(delItem === JSON.stringify(item))) {
|
||||
this.prcForm.enterBidEngApprovalData.splice(index, 1)
|
||||
}
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请选择要删除的意见')
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 新增评审意见
|
||||
* @date: 2020-11-26 17:48:44
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleAddRevOpinions() {
|
||||
this.visible.approval = true
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 加载数据字典
|
||||
* @date: 2020-12-03 19:28:45
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
getDicTypeListCode () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.loading.loadOption = true
|
||||
getDicTypeListCode()
|
||||
.then(res => {
|
||||
this.countryList = res.data.COUNTRY || []
|
||||
this.standSortOptions = res.data.BUSSSTANDCLASS || []
|
||||
this.MJ = res.data.MJ || []
|
||||
this.SHIFOU = res.data.SHIFOU || []
|
||||
this.loading.loadOption = false
|
||||
resolve()
|
||||
}).catch(e => {})
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 查询流程详情
|
||||
* @date: 2020-12-07 21:17:09
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
qbzxdlcDetail() {
|
||||
this.loading.loadTask = true
|
||||
qbzxdlcDetail({
|
||||
taskIds: this.taskIds
|
||||
}).then(res => {
|
||||
this.loading.loadTask = false
|
||||
for (let key in res) {
|
||||
this.$set(this.prcForm, key, res[key])
|
||||
}
|
||||
this.prcForm.prcName = this.getHandleInfo.prcName
|
||||
this.prcForm.prcNum = this.getHandleInfo.prcNum
|
||||
this.prcForm.prcType = this.getHandleInfo.prcType
|
||||
// 主起草人
|
||||
console.log(this.prcForm)
|
||||
}).catch(e => {
|
||||
this.loading.loadTask = false
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 添加评审意见
|
||||
* @date: 2020-12-07 19:56:23
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
handleAddApproval() {
|
||||
this.$refs.approvalForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.prcForm.enterBidEngApprovalData.push({
|
||||
itemContent: this.approvalForm.itemContent,
|
||||
itemApproval: this.approvalForm.itemApproval
|
||||
})
|
||||
this.visible.approval = false
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
handleApprovalClosed() {
|
||||
this.approvalForm = {
|
||||
itemContent: '',
|
||||
itemApproval: ''
|
||||
}
|
||||
},
|
||||
|
||||
handleApprovalSelectionChange(selection) {
|
||||
this.selection = selection
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 流程入库
|
||||
* @date: 2020-12-08 11:39:49
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
bussStandCreateProcess(json) {
|
||||
const _formData = new FormData()
|
||||
_formData.append('infoJson', json)
|
||||
bussStandCreateProcess(_formData).then(res => {
|
||||
if (res.message === '企标制修订流程入库成功') {
|
||||
this.$message.success('入库成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
validReviewOpinions(rule, value, callback) {
|
||||
callback()
|
||||
},
|
||||
|
||||
handleEnterBidEngApprovalChange(val) {
|
||||
if (val === '1') {
|
||||
this.prcForm.enterBidEngApprovalData = []
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
taskIds() {
|
||||
return this.$route.query.taskIds || this.getHandleInfo.taskIds
|
||||
},
|
||||
isEnd() {
|
||||
return this.getHandleInfo.isEnd || false
|
||||
},
|
||||
...mapGetters(['getHandleInfo'])
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.getDicTypeListCode()
|
||||
.then(res => {
|
||||
this.qbzxdlcDetail()
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.step5 {
|
||||
padding: 0 15px;
|
||||
background: #fff;
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
.customer-input-item {
|
||||
border-bottom: none;
|
||||
/deep/ .el-input {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.review-opinions {
|
||||
.review-opinions-header {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
padding: 0 10px;
|
||||
}
|
||||
.review-opinions-content {
|
||||
padding: 15px 10px;
|
||||
line-height: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,436 @@
|
||||
<template>
|
||||
<div id="qbzxdpgStep1">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标制修订评估</template>
|
||||
<template slot="proNode">企标工程师发起流程</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo>
|
||||
<el-form
|
||||
ref="prcForm"
|
||||
:model="prcForm"
|
||||
:rules="prcFormRules"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
label="截止时间"
|
||||
prop="prcDeadline"
|
||||
class="search-item">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbzxdpgStep1-box">
|
||||
<el-divider content-position="left">企标信息</el-divider>
|
||||
<el-form
|
||||
ref="qbzxdForm"
|
||||
:model="qbzxdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbzxdFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="计划类型"
|
||||
prop="type"
|
||||
class="add-form-item form-item-disabled"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.type"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="修订企标编号"
|
||||
prop="reviseBussStand"
|
||||
label-width="150px"
|
||||
class="add-form-item"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.reviseBussStand"
|
||||
readonly
|
||||
placeholder="请点击选择修订企标编号"
|
||||
@click.native="visibleBussRetrieval = true"></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中文名称" prop="cnName" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="qbzxdForm.cnName"
|
||||
placeholder="请输入"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="enName" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
placeholder="请输入"
|
||||
v-model="qbzxdForm.enName"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草部门" prop="primaryDrafterDept" class="add-form-item form-item-disabled">
|
||||
<input v-model="qbzxdForm.primaryDrafterDept" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.primaryDrafterDeptName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="制修订原因" title="描述制修订原因。包括涉及的PQCP、LLR、公司重要会议要求、标准核心内容/条款等。" prop="planReason" class="add-form-item">
|
||||
<template slot="label">制修订原因<i class="el-icon-warning-outline"></i></template>
|
||||
<el-input
|
||||
v-model="qbzxdForm.planReason"
|
||||
placeholder="描述制修订原因。包括涉及的PQCP、LLR、公司重要会议要求、标准核心内容/条款等。"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
/>
|
||||
<!-- <el-button-->
|
||||
<!-- size="small"-->
|
||||
<!-- icon="el-icon-upload"-->
|
||||
<!-- class="form-upload-btn"-->
|
||||
<!-- @click="clickButtonToUpload('planReasonFile')"-->
|
||||
<!-- >-->
|
||||
<!-- {{ qbzxdForm.planReasonFile === 'null' || qbzxdForm.planReasonFile === '' || qbzxdForm.planReasonFile == null ? '点击上传' : '查看已上传的文件' }}-->
|
||||
<!-- </el-button>-->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="FO" prop="FO" class="add-form-item">
|
||||
<input v-model="qbzxdForm.FO" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.FOName"
|
||||
placeholder="请选择FO"
|
||||
readonly
|
||||
@click.native="handleRoleUserTree"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
></ProcessFooter>
|
||||
<!-- 企标检索 -->
|
||||
<BussRetrieval
|
||||
:visible.sync="visibleBussRetrieval"
|
||||
type="bussStandard"
|
||||
show-condition
|
||||
:condition="{
|
||||
standCode: '',
|
||||
cnName: '',
|
||||
standStatus: 'N75QKJ5MWB'
|
||||
}"
|
||||
@confirm="handleBussRetrievalConfirm"
|
||||
></BussRetrieval>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="isRoleUserTree"
|
||||
roleName="FO,系统经理"
|
||||
:BM="qbzxdForm.primaryDrafterDept"
|
||||
@dblClick="dblClick"
|
||||
></role-user-tree>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import ExpansionForm from 'process/components/ExpansionForm'
|
||||
import BussRetrieval from 'process/components/BussRetrieval'
|
||||
import CustomOrg from '@/components/CustomFormComponents/OrgTree'
|
||||
import {startProcess, completeTask, saveTaskFirst, queryTaskFirst} from 'api/process'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'QbzxdpgStep1',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ExpansionForm,
|
||||
BussRetrieval,
|
||||
CustomOrg
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: '',
|
||||
prcCreateUser: this.$store.getters.userInfo.userId,
|
||||
prcCreateUserName: this.$store.getters.userInfo.uName,
|
||||
dept: this.$store.getters.userInfo.orgId
|
||||
},
|
||||
prcFormRules: {},
|
||||
// 企标制修订信息表单字段
|
||||
qbzxdForm: {
|
||||
type: '修订',
|
||||
reviseBussStand: '', // 修订企标
|
||||
standCode: '', // 企标编号
|
||||
cnName: '', // 企标名称
|
||||
enName: '', // 英文名称
|
||||
planStartTime: '', // 计划开始编写日期
|
||||
primaryDrafter: '', // 主起草人
|
||||
primaryDrafterName: '', // 主起草人名称
|
||||
compilersUser: '', // 其他起草人
|
||||
compilersUserName: '', // 其他起草人名称
|
||||
primaryDrafterDept: '', // 主起草人部门
|
||||
primaryDrafterDeptName: '', // 主起草人部门名称
|
||||
otherDrafterDept: '', // 起草部门
|
||||
otherDrafterDeptName: '', // 起草部门名称
|
||||
standLevel: '', // 标准密级
|
||||
putTime: '', // 计划发布日期
|
||||
planSource: '', // 标准制修订来源
|
||||
planReasonFile: '', // 制修订原因附件
|
||||
planReason: '', // 制修订原因
|
||||
planImpact: '', // 项目影响
|
||||
planImpactFile: '', // 项目影响附件
|
||||
testWork: '', // 验证工作
|
||||
testWorkFile: '', // 验证工作附件
|
||||
FORoleId: '',
|
||||
FORoleName: '',
|
||||
FO: '', // 人员ID
|
||||
FOName: '', // 人员name
|
||||
compileUnit: '', // 会签部门ID
|
||||
compileUnitName: '', // 会签部门Name
|
||||
treeRoleIdListAll: [],
|
||||
replacedStandNum: '', // 代替企标编号
|
||||
draftUser: this.$store.getters.userInfo.userId, // 当前流程发起人
|
||||
draftingUnitName: this.$store.getters.userInfo.orgName,
|
||||
draftingUnit: this.$store.getters.userInfo.orgId // 当前流程发起部门
|
||||
},
|
||||
// 企标制修订信息表单验证
|
||||
qbzxdFormRules: {
|
||||
type: [
|
||||
{ required: true, message: '计划类型不能为空', trigger: 'change' }
|
||||
],
|
||||
reviseBussStand: [
|
||||
{ required: true, message: '修订企标编号不能为空', trigger: 'change' }
|
||||
],
|
||||
cnName: [
|
||||
{ required: true, message: '中文名称不能为空', trigger: 'change' }
|
||||
],
|
||||
enName:[
|
||||
{ required: true, message: '英文名称不能为空', trigger: 'change' }
|
||||
],
|
||||
primaryDrafterDept: [
|
||||
{ required: true, message: '主起草部门不能为空', trigger: 'change' }
|
||||
],
|
||||
planReason: [
|
||||
{ required: true, message: '制修订原因不能为空', trigger: 'change' },
|
||||
{ type: 'string', max: 1000, message: '制修订原因不能超过1000个字符', trigger: 'change' }
|
||||
],
|
||||
FO: [
|
||||
{ required: true, message: 'FO不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
visibleBussRetrieval: false,
|
||||
isRoleUserTree: false,
|
||||
// 保存后返回的id
|
||||
bpnId: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 企标库信息带入
|
||||
handleBussRetrievalConfirm (dataItem) {
|
||||
this.qbzxdForm.reviseBussStand = dataItem.standCode
|
||||
let result= dataItem.standCode.split(/[()]/)
|
||||
let resultOther = ''
|
||||
if(result.length>0){
|
||||
resultOther = result[0]
|
||||
}
|
||||
if (result) {
|
||||
let num = result[1]
|
||||
let verNum =num.replace(/[^0-9]/ig,"");
|
||||
let verEn= num.replace(/[^A-Z]+/ig,"");
|
||||
// 替换成当前年份
|
||||
let indexRes = resultOther.lastIndexOf('-');
|
||||
// let res = resultOther.substring(indexRes+1,indexRes.length);
|
||||
let date=new Date;
|
||||
let y = date.getFullYear()
|
||||
resultOther = resultOther.replace(resultOther.substring(indexRes+1,indexRes.length),y)
|
||||
this.qbzxdForm.standCode = resultOther +'(' +verEn + Number(Number(verNum)+1) + ')'
|
||||
}
|
||||
this.qbzxdForm.cnName = dataItem.standName
|
||||
this.qbzxdForm.enName = dataItem.standEnName
|
||||
this.qbzxdForm.primaryDrafterDept = dataItem.attrInfoMap.ZQCBM
|
||||
this.qbzxdForm.primaryDrafterDeptName = dataItem.attrInfoMap.ZQCBMName
|
||||
this.visibleBussRetrieval = false
|
||||
},
|
||||
// 流程保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('id', this.bpnId)
|
||||
_formData.append('createUser', this.$store.getters.userInfo.userId)
|
||||
_formData.append('createUserName', this.$store.getters.userInfo.uName)
|
||||
_formData.append('prcType', this.$route.query.type)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
saveTaskFirst(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
this.bpnId = res.result
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 流程提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbzxdForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.startProcess().then(taskId => {
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskId', taskId)
|
||||
_formData.append('userId', this.userId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
this.isSubmit = false
|
||||
if (res.success) {
|
||||
this.$message.success('流程发起成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
/**
|
||||
* @description: 流程开启
|
||||
* @date: 2020-11-12 10:23:50
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
startProcess () {
|
||||
this.isSubmit = true
|
||||
return new Promise((resolve, reject) => {
|
||||
startProcess({
|
||||
type: this.$route.query.type,
|
||||
id: this.bpnId
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
resolve(res.data)
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
})
|
||||
},
|
||||
// 查询详情
|
||||
queryTaskFirst () {
|
||||
queryTaskFirst({
|
||||
bpnId: this.bpnId
|
||||
}).then(res => {
|
||||
let mes = JSON.parse(res.mes)
|
||||
this.prcForm = mes.prcForm
|
||||
this.qbzxdForm = mes.qbzxdForm
|
||||
})
|
||||
},
|
||||
// 人员点击事件
|
||||
handleRoleUserTree () {
|
||||
if (this.qbzxdForm.primaryDrafterDept) {
|
||||
this.isRoleUserTree = true
|
||||
} else {
|
||||
this.$message.warning('请先选择修订企标编号')
|
||||
}
|
||||
},
|
||||
// 人员双击事件
|
||||
dblClick (treeNode) {
|
||||
this.qbzxdForm.FO = treeNode.id
|
||||
this.qbzxdForm.FOName = treeNode.userName || treeNode.name
|
||||
this.qbzxdForm.FORoleId = treeNode.roleId
|
||||
this.qbzxdForm.FORoleName = treeNode.roleName
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['userInfo']),
|
||||
userId () {
|
||||
return this.userInfo.userId
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
if (this.$route.query.bpnId) {
|
||||
this.bpnId = this.$route.query.bpnId
|
||||
this.queryTaskFirst()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbzxdpgStep1{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbzxdpgStep1-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.action-bar{
|
||||
border: none;
|
||||
}
|
||||
.pro-table-content{
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,469 @@
|
||||
<!--企标制修订评估流程 第二步-->
|
||||
<template>
|
||||
<div id="qbzxdpgStep2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标制修订评估</template>
|
||||
<template slot="proNode">FO审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbzxdpgStep2-box">
|
||||
<el-divider content-position="left">企标信息</el-divider>
|
||||
<el-form
|
||||
ref="qbzxdForm"
|
||||
:model="qbzxdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbzxdFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="计划类型"
|
||||
prop="type"
|
||||
class="add-form-item form-item-disabled"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.type"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="修订企标编号"
|
||||
prop="reviseBussStand"
|
||||
label-width="150px"
|
||||
class="add-form-item form-item-disabled"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.reviseBussStand"
|
||||
disabled
|
||||
placeholder="请点击选择修订企标编号"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中文名称" prop="cnName" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="qbzxdForm.cnName"
|
||||
placeholder="请输入"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="enName" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
placeholder="请输入"
|
||||
v-model="qbzxdForm.enName"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草部门" prop="primaryDrafterDept" class="add-form-item form-item-disabled">
|
||||
<input v-model="qbzxdForm.primaryDrafterDept" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.primaryDrafterDeptName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="制修订原因" prop="planReason" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="qbzxdForm.planReason"
|
||||
placeholder="请输入"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
disabled
|
||||
/>
|
||||
<!-- <el-button-->
|
||||
<!-- size="small"-->
|
||||
<!-- icon="el-icon-upload"-->
|
||||
<!-- class="form-upload-btn"-->
|
||||
<!-- @click="clickButtonToUpload('planReasonFile')"-->
|
||||
<!-- >-->
|
||||
<!-- {{ qbzxdForm.planReasonFile === 'null' || qbzxdForm.planReasonFile === '' || qbzxdForm.planReasonFile == null ? '点击上传' : '查看已上传的文件' }}-->
|
||||
<!-- </el-button>-->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="主起草人"
|
||||
prop="primaryDrafter"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': processDetail}"
|
||||
>
|
||||
<el-input v-model="qbzxdForm.primaryDrafter" v-show="false" />
|
||||
<el-input v-if="processDetail" v-model="qbzxdForm.primaryDrafterName" disabled></el-input>
|
||||
<el-input
|
||||
v-if="!processDetail"
|
||||
v-model="qbzxdForm.primaryDrafterName"
|
||||
placeholder="请选择主起草人"
|
||||
readonly
|
||||
@click.native="handleRoleUserTree"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-form
|
||||
v-if="!processDetail"
|
||||
ref="qbzxdForm2"
|
||||
:model="qbzxdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbzxdFormRules"
|
||||
style="margin-top: 15px;"
|
||||
>
|
||||
<template>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinion" class="add-form-item">
|
||||
<el-select v-model="qbzxdForm.opinion">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-if="qbzxdForm.opinion === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<el-input
|
||||
placeholder="请输入意见理由"
|
||||
type="textarea"
|
||||
v-model="qbzxdForm.opinionContent"
|
||||
clearable
|
||||
resize="none"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
></ProcessFooter>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="isRoleUserTree"
|
||||
:BM="qbzxdForm.primaryDrafterDept"
|
||||
@dblClick="dblClick"
|
||||
></role-user-tree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import ExpansionForm from 'process/components/ExpansionForm'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import { qbzxdpgDetail, completeTask, saveTaskForPub, changeAssigneeNew } from 'api/process'
|
||||
import { getDepartmentByUserId } from 'api'
|
||||
export default {
|
||||
name: 'QbzxdpgStep2',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ExpansionForm,
|
||||
ProcessChooseTree
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
isTreeDrawer: false,
|
||||
// 企标制修订信息表单字段
|
||||
qbzxdForm: {
|
||||
type: '',
|
||||
reviseBussStand: '', // 修订企标
|
||||
standCode: '', // 企标编号
|
||||
cnName: '', // 企标名称
|
||||
enName: '', // 英文名称
|
||||
planStartTime: '', // 计划开始编写日期
|
||||
primaryDrafter: '', // 主起草人
|
||||
primaryDrafterName: '', // 主起草人名称
|
||||
compilersUser: '', // 其他起草人
|
||||
compilersUserName: '', // 其他起草人名称
|
||||
primaryDrafterDept: '', // 主起草人部门
|
||||
primaryDrafterDeptName: '', // 主起草人部门名称
|
||||
otherDrafterDept: '', // 起草部门
|
||||
otherDrafterDeptName: '', // 起草部门名称
|
||||
standLevel: '', // 标准密级
|
||||
putTime: '', // 计划发布日期
|
||||
planSource: '', // 标准制修订来源
|
||||
planReasonFile: '', // 制修订原因附件
|
||||
planReason: '', // 制修订原因
|
||||
planImpact: '', // 项目影响
|
||||
planImpactFile: '', // 项目影响附件
|
||||
testWork: '', // 验证工作
|
||||
testWorkFile: '', // 验证工作附件
|
||||
FORoleId: '',
|
||||
FORoleName: '',
|
||||
FO: '', // 人员ID
|
||||
FOName: '', // 人员name
|
||||
compileUnit: '', // 会签部门ID
|
||||
compileUnitName: '', // 会签部门Name
|
||||
treeRoleIdListAll: [],
|
||||
replacedStandNum: '', // 代替企标编号
|
||||
draftUser: this.$store.getters.userInfo.userId, // 当前流程发起人
|
||||
draftingUnitName: this.$store.getters.userInfo.orgName,
|
||||
draftingUnit: this.$store.getters.userInfo.orgId, // 当前流程发起部门
|
||||
opinion: '',
|
||||
opinionContent: ''
|
||||
},
|
||||
// 企标制修订信息表单验证
|
||||
qbzxdFormRules: {
|
||||
primaryDrafter: [
|
||||
{ required: true, message: '主起草人不能为空', trigger: 'change' }
|
||||
],
|
||||
opinion: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
],
|
||||
opinionContent: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
isRoleUserTree: false,
|
||||
processDetail: false
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbzxdForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.$refs['qbzxdForm2'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
this.isSubmit = false
|
||||
if (res.success) {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 请求详情
|
||||
qbzxdpgDetail () {
|
||||
this.loading = true
|
||||
qbzxdpgDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
// this.prcForm = mesg.prcForm
|
||||
this.qbzxdForm = res.qbzxdForm
|
||||
// this.qbzxdForm.primaryDrafter = ''
|
||||
// this.qbzxdForm.primaryDrafterName = ''
|
||||
this.loading = false
|
||||
this.$nextTick(() => {
|
||||
this.$refs.qbzxdForm.clearValidate()
|
||||
})
|
||||
})
|
||||
},
|
||||
// 人员点击事件
|
||||
handleRoleUserTree () {
|
||||
this.isRoleUserTree = true
|
||||
},
|
||||
// 人员双击事件
|
||||
dblClick (treeNode) {
|
||||
this.qbzxdForm.primaryDrafter = treeNode.id
|
||||
this.qbzxdForm.primaryDrafterName = treeNode.userName || treeNode.name
|
||||
// 查询主起草人部门
|
||||
getDepartmentByUserId({
|
||||
userIds: treeNode.id
|
||||
}).then(res => {
|
||||
if (res.ok) {
|
||||
this.qbzxdForm.otherDrafterDept = res.data[0].pOrgId
|
||||
this.qbzxdForm.otherDrafterDeptName = res.data[0].pOrgName
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.qbzxdpgDetail()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbzxdpgStep2{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbzxdpgStep2-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.pro-table-content{
|
||||
height: 100%;
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,635 @@
|
||||
<!--企标制修订审批流程 - 第四步-->
|
||||
<template>
|
||||
<div id="qbzxdpgStep4">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标制修订评估</template>
|
||||
<template slot="proNode">高级经理审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="prcDeadline">
|
||||
<el-date-picker
|
||||
v-model="prcForm.prcDeadline"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbzxdpgStep4-box">
|
||||
<el-divider content-position="left">企标制修订信息</el-divider>
|
||||
<el-form
|
||||
ref="qbzxdForm"
|
||||
:model="qbzxdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbzxdFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="计划类型"
|
||||
prop="type"
|
||||
class="add-form-item form-item-disabled"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.type"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="修订企标"
|
||||
prop="reviseBussStand"
|
||||
label-width="150px"
|
||||
class="add-form-item form-item-disabled"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.reviseBussStand"
|
||||
disabled
|
||||
placeholder="请点击选择修订企标"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12" title="企标编号规则请与部门联络人确认">
|
||||
<el-form-item label="企标编号" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="qbzxdForm.standCode"
|
||||
placeholder="请输入企标编号"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中文名称" prop="cnName" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="qbzxdForm.cnName"
|
||||
placeholder="请输入"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="enName" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
placeholder="请输入"
|
||||
maxlength="1000"
|
||||
v-model="qbzxdForm.enName"
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="代替企标编号"
|
||||
prop="replacedStandNum"
|
||||
class="add-form-item form-item-disabled"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.replacedStandNum"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草人" prop="primaryDrafter" class="add-form-item form-item-disabled">
|
||||
<input v-model="qbzxdForm.primaryDrafter" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.primaryDrafterName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="其他起草人" prop="compilersUser" class="add-form-item form-item-disabled">
|
||||
<input v-model="qbzxdForm.compilersUser" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.compilersUserName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="起草部门" prop="otherDrafterDept" class="add-form-item form-item-disabled">
|
||||
<input v-model="qbzxdForm.otherDrafterDept" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.otherDrafterDeptName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准密级" prop="standLevel" class="add-form-item form-item-disabled">
|
||||
<el-select
|
||||
v-model="qbzxdForm.standLevel"
|
||||
placeholder="请选择标准密级"
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in formOption.MJ"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划开始编写日期" prop="planStartTime" class="add-form-item form-item-disabled" title="到当前时间点系统自动发送提醒">
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="qbzxdForm.planStartTime"
|
||||
:editable="false"
|
||||
disabled
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划发布日期" prop="putTime" class="add-form-item form-item-disabled">
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="qbzxdForm.putTime"
|
||||
:editable="false"
|
||||
disabled
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="涉及会签部门" prop="compileUnit" class="add-form-item form-item-disabled">
|
||||
<input v-model="qbzxdForm.compileUnit" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.compileUnitName"
|
||||
placeholder="请选择涉及会签部门"
|
||||
readonly
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准制修订来源" prop="planSource" class="add-form-item form-item-disabled">
|
||||
<el-select
|
||||
v-model="qbzxdForm.planSource"
|
||||
placeholder="请选择标准制修订来源"
|
||||
clearable
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in formOption.STANDSOURCEREVISION"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="制修订原因" prop="planReason" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="qbzxdForm.planReason"
|
||||
placeholder="请输入"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
disabled
|
||||
/>
|
||||
<!-- <el-button-->
|
||||
<!-- size="small"-->
|
||||
<!-- icon="el-icon-upload"-->
|
||||
<!-- class="form-upload-btn"-->
|
||||
<!-- @click="clickButtonToUpload('planReasonFile')"-->
|
||||
<!-- >-->
|
||||
<!-- {{ qbzxdForm.planReasonFile === 'null' || qbzxdForm.planReasonFile === '' || qbzxdForm.planReasonFile == null ? '点击上传' : '查看已上传的文件' }}-->
|
||||
<!-- </el-button>-->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="验证工作" prop="testWork" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="qbzxdForm.testWork"
|
||||
placeholder="请输入"
|
||||
:autosize="{ minRows: 2, maxRows: 4}"
|
||||
type="textarea"
|
||||
disabled
|
||||
/>
|
||||
<!-- <el-button-->
|
||||
<!-- size="small"-->
|
||||
<!-- icon="el-icon-upload"-->
|
||||
<!-- class="form-upload-btn"-->
|
||||
<!-- @click="clickButtonToUpload('testWorkFile')"-->
|
||||
<!-- >-->
|
||||
<!-- {{ qbzxdForm.testWorkFile === 'null' || qbzxdForm.testWorkFile === '' || qbzxdForm.testWorkFile == null ? '点击上传' : '查看已上传的文件' }}-->
|
||||
<!-- </el-button>-->
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="项目影响"
|
||||
prop="planImpact"
|
||||
class="add-form-item form-item-disabled"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.planImpact"
|
||||
placeholder="请输入"
|
||||
type="textarea"
|
||||
disabled
|
||||
/>
|
||||
<template v-for="(item, index) in planImpactFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="to-examine-box" v-if="!processDetail">
|
||||
<el-form
|
||||
label-width="150px"
|
||||
ref="toExamineForm"
|
||||
:model="qbzxdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
:rules="qbzxdFormRules"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinionStep4" class="add-form-item">
|
||||
<el-select v-model="qbzxdForm.opinionStep4">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionContentStep4" class="add-form-item" v-if="qbzxdForm.opinionStep4 === '1'">
|
||||
<el-input
|
||||
placeholder="请输入意见理由"
|
||||
type="textarea"
|
||||
v-model="qbzxdForm.opinionContentStep4"
|
||||
clearable
|
||||
resize="none"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
></ProcessFooter>
|
||||
<!-- 组织机构树 -->
|
||||
<ProcessChooseTree
|
||||
:visible.sync="visibleTree"
|
||||
show-user
|
||||
:dept-select="false"
|
||||
@dblClick="handleDblClick"
|
||||
></ProcessChooseTree>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import ProcessHeader from 'process/components/ProcessHeader'
|
||||
import ProcessBaseInfo from 'process/components/ProcessBaseInfo'
|
||||
import ProcessFooter from 'process/components/ProcessFooter'
|
||||
import ProcessMixin from 'process/components/ProcessMixin'
|
||||
import ProcessChooseTree from 'process/components/ProcessChooseTree'
|
||||
import { qbzxdpgDetail, completeTask, saveTaskForPub, bussPlanAssessProcess, changeAssigneeNew } from 'api/process'
|
||||
export default {
|
||||
name: 'QbzxdpgStep4',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
visibleTree: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
prcDeadline: ''
|
||||
},
|
||||
prcFormRules: {},
|
||||
// 企标制修订信息表单字段
|
||||
qbzxdForm: {
|
||||
otherDrafterDept: '',
|
||||
otherDrafterDeptName: '',
|
||||
type: '',
|
||||
standCode: '',
|
||||
cnName: '',
|
||||
enName: '',
|
||||
standSort: '',
|
||||
planStartTime: '',
|
||||
planEndTime: '',
|
||||
replacedStandNum: '', // 代替企标编号
|
||||
primaryDrafter: '', // 标准起草组组长
|
||||
primaryDrafterName: '', // 标准起草组组长name
|
||||
compilersUser: '', // 标准起草组组员
|
||||
compilersUserName: '', // 标准起草组组员名称
|
||||
standLevel: '', // 标准密级
|
||||
putTime: '', // 计划发布日期
|
||||
planSource: '', // 标准制修订来源
|
||||
planReasonFile: '', // 制修订原因附件
|
||||
planReason: '', // 制修订原因
|
||||
planImpact: '', // 项目影响
|
||||
planImpactFile: '', // 项目影响附件
|
||||
testWork: '', // 验证工作
|
||||
testWorkFile: '', // 验证工作附件
|
||||
FO: '', // 人员ID
|
||||
FOName: '', // 人员name
|
||||
FORoleId: '',
|
||||
FORoleName: '',
|
||||
seniorManager: '', // 高级经理人员ID
|
||||
seniorManagerName: '', // 高级经理人员name
|
||||
compileUnit: '', // 会签部门ID
|
||||
compileUnitName: '', // 会签部门Name
|
||||
opinion: '', // 反馈意见
|
||||
opinionContent: '', // 意见内容
|
||||
treeRoleIdListAll: [],
|
||||
opinionStep4: '', // 反馈意见
|
||||
opinionContentStep4: '' // 意见内容
|
||||
},
|
||||
// 企标制修订信息表单验证
|
||||
qbzxdFormRules: {
|
||||
opinionStep4: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
],
|
||||
opinionContentStep4: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
processDetail: false,
|
||||
formOption: {
|
||||
BUSSSTANDCLASS: [], // 标准类别
|
||||
STANDSOURCEREVISION: [], // 标准制修订来源
|
||||
MJ: [] // 标准密级
|
||||
}, // 下拉框选项数据
|
||||
planImpactFileList: [] // 项目影响附件数组
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 委托
|
||||
handleEntrust () {
|
||||
this.visibleTree = true
|
||||
},
|
||||
// 选择委托人
|
||||
handleDblClick (treeNode) {
|
||||
changeAssigneeNew({
|
||||
taskId: this.$store.getters.getHandleInfo.taskIds, // 任务id
|
||||
assignee: treeNode.id, // 被委托人
|
||||
userId: this.$store.getters.userInfo.userId, // 委托人
|
||||
pId: this.$store.getters.getHandleInfo.prcId // 流程实例
|
||||
}).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('委托成功')
|
||||
this.$router.push('/processCenter')
|
||||
this.visibleTree = false
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['toExamineForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
this.qbzxdForm.opinionName = this.$store.getters.userInfo.uName
|
||||
this.qbzxdForm.opinionNode = '高级经理审批'
|
||||
this.qbzxdForm.opinionTime = ''
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
if (this.qbzxdForm.opinionStep4 !== '0') {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.bussPlanAssessProcess()
|
||||
}
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 企标制修订评估入库
|
||||
bussPlanAssessProcess () {
|
||||
const _formData = new FormData()
|
||||
let infoJson = JSON.parse(JSON.stringify(this.qbzxdForm))
|
||||
// 赋值流程名称和流程编号
|
||||
infoJson.prcNum = this.prcForm.prcNum
|
||||
infoJson.prcName = this.prcForm.prcName
|
||||
_formData.append('infoJson', JSON.stringify(infoJson))
|
||||
bussPlanAssessProcess(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 请求详情
|
||||
qbzxdpgDetail () {
|
||||
this.loading = true
|
||||
qbzxdpgDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
// this.prcForm = res.prcForm
|
||||
this.qbzxdForm = res.qbzxdForm
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 点击上传按钮
|
||||
getFile (current, fileNameList) {
|
||||
if (this.qbzxdForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbzxdForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 监听是否有附件
|
||||
// 项目影响
|
||||
'qbzxdForm.planImpactFile' (newVal) {
|
||||
this.getFile('planImpactFile', 'planImpactFileList')
|
||||
},
|
||||
},
|
||||
mounted () {
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.qbzxdpgDetail()
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', {}, {_this: this}, res => {
|
||||
this.formOption.BUSSSTANDCLASS = res.data.BUSSSTANDCLASS || []
|
||||
this.formOption.STANDSOURCEREVISION = res.data.STANDSOURCEREVISION || []
|
||||
this.formOption.MJ = res.data.MJ || []
|
||||
}, err => {})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbzxdpgStep4{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbzxdpgStep4-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.pro-table-content{
|
||||
height: 100%;
|
||||
flex: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
.to-examine-box{
|
||||
padding-top: 10px;
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,750 @@
|
||||
<!--企标制修订申请流程 - 第二步-->
|
||||
<template>
|
||||
<div id="qbzxdsqStep2">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标制修订申请</template>
|
||||
<template slot="proNode">FO审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="overTime">
|
||||
<el-date-picker
|
||||
v-model="prcForm.overTime"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbzxdsqStep2-box">
|
||||
<el-divider content-position="left">企标制修订信息</el-divider>
|
||||
<el-form
|
||||
ref="qbzxdForm"
|
||||
:model="qbzxdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbzxdFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="qbzxdForm.type === '修订' ? 24 : 12">
|
||||
<el-form-item
|
||||
label="修订企标"
|
||||
prop="reviseBussStand"
|
||||
label-width="150px"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
v-if="qbzxdForm.type === '修订'">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbzxdForm.reviseBussStand"
|
||||
readonly
|
||||
placeholder="请点击选择修订企标"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="计划类型"
|
||||
prop="type"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select v-model="qbzxdForm.type" :disabled="formDisableFlag">
|
||||
<el-option label="制定" value="制定"></el-option>
|
||||
<el-option label="修订" value="修订"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="企标编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbzxdForm.standCode"
|
||||
placeholder="请输入企标编号"
|
||||
clearable
|
||||
readonly
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标名称" prop="cnName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="qbzxdForm.cnName"
|
||||
placeholder="请输入"
|
||||
:disabled="formDisableFlag"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="enName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
placeholder="请输入"
|
||||
maxlength="1000"
|
||||
v-model="qbzxdForm.enName"
|
||||
:disabled="formDisableFlag"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="代替企标编号"
|
||||
prop="replacedStandNum"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.replacedStandNum"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草人" prop="primaryDrafter" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.primaryDrafter" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.primaryDrafterName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="其他起草人" prop="compilersUser" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.compilersUser" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.compilersUserName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草部门" prop="primaryDrafterDept" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.primaryDrafterDept" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.primaryDrafterDeptName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="起草部门" prop="otherDrafterDept" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.otherDrafterDept" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.otherDrafterDeptName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准密级" prop="standLevel" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="qbzxdForm.standLevel"
|
||||
placeholder="请选择标准密级"
|
||||
clearable
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in formOption.MJ"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="计划开始编写日期"
|
||||
prop="planStartTime"
|
||||
class="add-form-item"
|
||||
title="到当前时间点系统自动发送提醒"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="qbzxdForm.planStartTime"
|
||||
:editable="false"
|
||||
:disabled="formDisableFlag"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划发布日期" prop="putTime" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="qbzxdForm.putTime"
|
||||
:editable="false"
|
||||
:disabled="formDisableFlag"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="涉及会签部门" prop="compileUnit" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.compileUnit" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.compileUnitName"
|
||||
placeholder="请选择涉及会签部门"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准制修订来源" prop="planSource" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="qbzxdForm.planSource"
|
||||
placeholder="请选择标准制修订来源"
|
||||
clearable
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in formOption.STANDSOURCEREVISION"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="制修订原因"
|
||||
prop="planReason"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.planReason"
|
||||
placeholder="请输入"
|
||||
type="textarea"
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
<template v-for="(item, index) in planReasonFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="验证工作"
|
||||
prop="testWork"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.testWork"
|
||||
placeholder="请输入"
|
||||
type="textarea"
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
<template v-for="(item, index) in testWorkFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="项目影响"
|
||||
prop="planImpact"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.planImpact"
|
||||
placeholder="请输入"
|
||||
type="textarea"
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
<template v-for="(item, index) in planImpactFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="高级经理"
|
||||
prop="seniorManager"
|
||||
class="add-form-item"
|
||||
v-if="qbzxdForm.opinion !== '1'"
|
||||
:class="{'form-item-disabled': isGjjl}"
|
||||
>
|
||||
<input v-model="qbzxdForm.seniorManager" type="hidden" />
|
||||
<process-input
|
||||
v-if="processShow"
|
||||
v-model="qbzxdForm.seniorManagerName"
|
||||
placeholder="请选择高级经理"
|
||||
:disabled="isGjjl"
|
||||
:show-tips="userObj.showTipsUser"
|
||||
:tips="userObj.tipsUser"
|
||||
readonly
|
||||
@click="handleVisibleRole"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-form
|
||||
ref="qbzxdForm"
|
||||
:model="qbzxdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbzxdFormRules"
|
||||
style="margin-top: 15px;"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="opinion" class="add-form-item">
|
||||
<el-select v-model="qbzxdForm.opinion">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-if="qbzxdForm.opinion === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="opinionContent" class="add-form-item">
|
||||
<process-input
|
||||
type="textarea"
|
||||
v-model="qbzxdForm.opinionContent"
|
||||
clearable
|
||||
resize="none"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
></ProcessFooter>
|
||||
<!--根据部门和角色查询人员-->
|
||||
<role-user-tree
|
||||
:visible.sync="isTreeDrawer"
|
||||
roleName="高级经理"
|
||||
:BM="$store.getters.userInfo.pOrgId"
|
||||
@dblClick="dblClick"
|
||||
></role-user-tree>
|
||||
<!--审批结果-->
|
||||
<ProcessApprovalHistory
|
||||
v-if="isApprovalHistory"
|
||||
:approvalData="approvalHistory"
|
||||
></ProcessApprovalHistory>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { queryDetail, completeTask, saveTaskForPub } from 'api/process'
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessInput from '../../../components/ProcessInput'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
export default {
|
||||
name: 'QbzxdsqStep2',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessInput,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
overTime: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
overTime: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
// 企标制修订信息表单字段
|
||||
qbzxdForm: {
|
||||
otherDrafterDept: '',
|
||||
otherDrafterDeptName: '',
|
||||
type: '',
|
||||
standCode: '',
|
||||
cnName: '',
|
||||
enName: '',
|
||||
standSort: '',
|
||||
planStartTime: '',
|
||||
planEndTime: '',
|
||||
replacedStandNum: '', // 代替企标编号
|
||||
primaryDrafter: '', // 标准起草组组长
|
||||
primaryDrafterName: '', // 标准起草组组长name
|
||||
compilersUser: '', // 标准起草组组员
|
||||
compilersUserName: '', // 标准起草组组员名称
|
||||
standLevel: '', // 标准密级
|
||||
putTime: '', // 计划发布日期
|
||||
planSource: '', // 标准制修订来源
|
||||
planReasonFile: '', // 制修订原因附件
|
||||
planReason: '', // 制修订原因
|
||||
planImpact: '', // 项目影响
|
||||
planImpactFile: '', // 项目影响附件
|
||||
testWork: '', // 验证工作
|
||||
testWorkFile: '', // 验证工作附件
|
||||
FO: '', // 人员ID
|
||||
FOName: '', // 人员name
|
||||
FORoleId: '',
|
||||
FORoleName: '',
|
||||
seniorManager: '', // 高级经理人员ID
|
||||
seniorManagerName: '', // 高级经理人员name
|
||||
compileUnit: '', // 会签部门ID
|
||||
compileUnitName: '', // 会签部门Name
|
||||
opinion: '', // 反馈意见
|
||||
opinionContent: '', // 意见内容
|
||||
treeRoleIdListAll: []
|
||||
},
|
||||
// 企标制修订信息表单验证
|
||||
qbzxdFormRules: {
|
||||
seniorManager: [
|
||||
{ required: true, message: '高级经理不能为空', trigger: 'change' }
|
||||
],
|
||||
opinion: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
],
|
||||
opinionContent: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
formOption: {
|
||||
BUSSSTANDCLASS: [], // 标准类别
|
||||
STANDSOURCEREVISION: [], // 标准制修订来源
|
||||
MJ: [] // 标准密级
|
||||
}, // 下拉框选项数据
|
||||
isTreeDrawer: false,
|
||||
checkType: '',
|
||||
formDisableFlag: false,
|
||||
planImpactFileList: [], // 项目影响附件数组
|
||||
testWorkFileList: [], // 验证工作附件数组
|
||||
planReasonFileList: [], // 制修订原因附件数组
|
||||
userObj: {},
|
||||
isGjjl: false,
|
||||
processShow: false,
|
||||
approvalHistory: [], // 审批结果
|
||||
isApprovalHistory: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 点击上传按钮
|
||||
getFile (current, fileNameList) {
|
||||
if (this.qbzxdForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbzxdForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 打开选择人员drawer
|
||||
handleVisibleRole () {
|
||||
this.checkType = 'person'
|
||||
this.isTreeDrawer = true
|
||||
},
|
||||
// 人员选择事件
|
||||
dblClick (treeNode) {
|
||||
this.qbzxdForm.seniorManager = treeNode.id
|
||||
this.qbzxdForm.seniorManagerName = treeNode.userName || treeNode.name
|
||||
this.isTreeDrawer = false
|
||||
this.userObj.showTipsUser = false
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbzxdForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
if (this.qbzxdForm.opinion === '1' && this.qbzxdForm.seniorManager === undefined){
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
return
|
||||
}
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
if (this.qbzxdForm.opinion === '1') {
|
||||
this.qbzxdForm.opinionName = this.$store.getters.userInfo.uName
|
||||
this.qbzxdForm.opinionType = this.qbzxdForm.opinion
|
||||
this.qbzxdForm.opinionRemark = this.qbzxdForm.opinionContent
|
||||
this.qbzxdForm.opinionNode = 'FO审批'
|
||||
this.qbzxdForm.opinionTime = ''
|
||||
} else if (this.qbzxdForm.opinionNode === 'FO审批') {
|
||||
this.qbzxdForm.opinionName = ''
|
||||
this.qbzxdForm.opinionType = ''
|
||||
this.qbzxdForm.opinionRemark = ''
|
||||
this.qbzxdForm.opinionNode = ''
|
||||
this.qbzxdForm.opinionTime = ''
|
||||
}
|
||||
this.qbzxdForm.createUser = this.$store.getters.userInfo.userId
|
||||
this.qbzxdForm.dept = this.$store.getters.userInfo.orgId
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push('/processCenter')
|
||||
} else {
|
||||
this.$message.success(res.message)
|
||||
}
|
||||
this.isSubmit = false
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.qbzxdForm = mesg.qbzxdForm
|
||||
let approvalHistory = mesg.qbzxdForm
|
||||
this.approvalHistory.push({
|
||||
approvalUserName: approvalHistory.opinionName, // 审批人
|
||||
auditOpinions: approvalHistory.opinionType, // 审批意见
|
||||
auditOpinionsText: approvalHistory.opinionRemark, // 意见内容
|
||||
approvalNode: approvalHistory.opinionNode, // 审批人角色
|
||||
approvalTime: approvalHistory.opinionTime // 审批时间
|
||||
})
|
||||
if (approvalHistory.opinionName) {
|
||||
this.isApprovalHistory = true
|
||||
}
|
||||
this.$refs.qbzxdForm.resetFields()
|
||||
this.loading = false
|
||||
this.getGjjl()
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查询高级经理
|
||||
* id:当前需要查找上一级角色组的角色ID
|
||||
* roleHierarchyName:上一级角色组的名称
|
||||
* */
|
||||
getGjjl () {
|
||||
this.$http.get('sys/role/getParentIds', {
|
||||
id: this.qbzxdForm.FORoleId,
|
||||
roleHierarchyName: '高级经理'
|
||||
}, {}, res => {
|
||||
if (res.ok) {
|
||||
let tipsUser = ''
|
||||
let showTipsUser = false
|
||||
if (res.data.length === 1) {
|
||||
this.$set(this.qbzxdForm, 'seniorManager', res.data[0].userId)
|
||||
this.$set(this.qbzxdForm, 'seniorManagerName', res.data[0].userName)
|
||||
// this.qbzxdForm.seniorManager = res.data[0].userId
|
||||
// this.qbzxdForm.seniorManagerName = res.data[0].userName
|
||||
this.isGjjl = false
|
||||
} else if (res.data.length > 1) {
|
||||
tipsUser += `<p>当前任务存在多个高级经理,请手动选择</p>`
|
||||
showTipsUser = true
|
||||
this.isGjjl = false
|
||||
} else {
|
||||
tipsUser += `<p>当前任务未找到对应高级经理,请手动选择</p>`
|
||||
showTipsUser = true
|
||||
this.isGjjl = false
|
||||
}
|
||||
// setTimeout(() => {
|
||||
this.userObj = {
|
||||
tipsUser,
|
||||
showTipsUser
|
||||
}
|
||||
this.processShow = true
|
||||
// }, 200)
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
// 监听是否有附件
|
||||
// 项目影响
|
||||
'qbzxdForm.planImpactFile' (newVal) {
|
||||
this.getFile('planImpactFile', 'planImpactFileList')
|
||||
},
|
||||
// 制修订原因
|
||||
'qbzxdForm.planReasonFile' (newVal) {
|
||||
this.getFile('planReasonFile', 'planReasonFileList')
|
||||
},
|
||||
// 验证工作
|
||||
'qbzxdForm.testWorkFile' (newVal) {
|
||||
this.getFile('testWorkFile', 'testWorkFileList')
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', {}, {_this: this}, res => {
|
||||
this.formOption.BUSSSTANDCLASS = res.data.BUSSSTANDCLASS || []
|
||||
this.formOption.STANDSOURCEREVISION = res.data.STANDSOURCEREVISION || []
|
||||
this.formOption.MJ = res.data.MJ || []
|
||||
}, err => {})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbzxdsqStep2{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbzxdsqStep2-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
.prc-content-border {
|
||||
border: 1px dashed #ddd;
|
||||
padding: 20px;
|
||||
border-radius: 10px;
|
||||
background: #fefefe;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,696 @@
|
||||
<!--企标制修订申请流程 - 第三步-->
|
||||
<template>
|
||||
<div id="qbzxdsqStep3">
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">企标制修订申请</template>
|
||||
<template slot="proNode">高级经理审批</template>
|
||||
</ProcessHeader>
|
||||
<ProcessBaseInfo toggle>
|
||||
<el-form
|
||||
ref="baseForm"
|
||||
:model="prcForm"
|
||||
inline
|
||||
label-width="120"
|
||||
class="label-input-form">
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程编号"
|
||||
prop="prcNum">
|
||||
<el-input
|
||||
v-model="prcForm.prcNum"
|
||||
disabled
|
||||
placeholder="请输入流程编号"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="流程名称"
|
||||
prop="prcName">
|
||||
<el-input
|
||||
v-model="prcForm.prcName"
|
||||
placeholder="请输入流程名称"
|
||||
disabled
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
class="search-item"
|
||||
label="截止时间"
|
||||
prop="overTime">
|
||||
<el-date-picker
|
||||
v-model="prcForm.overTime"
|
||||
placeholder="" :picker-options="pickerOptions"
|
||||
disabled
|
||||
clearable></el-date-picker>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ProcessBaseInfo>
|
||||
<div class="qbzxdsqStep3-box">
|
||||
<el-divider content-position="left">企标制修订信息</el-divider>
|
||||
<el-form
|
||||
ref="qbzxdForm"
|
||||
:model="qbzxdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbzxdFormRules"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="qbzxdForm.type === '修订' ? 24 : 12">
|
||||
<el-form-item
|
||||
label="修订企标"
|
||||
prop="reviseBussStand"
|
||||
label-width="150px"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
v-if="qbzxdForm.type === '修订'">
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbzxdForm.reviseBussStand"
|
||||
readonly
|
||||
placeholder="请点击选择修订企标"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="计划类型"
|
||||
prop="type"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-select v-model="qbzxdForm.type" :disabled="formDisableFlag">
|
||||
<el-option label="制定" value="制定"></el-option>
|
||||
<el-option label="修订" value="修订"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="企标编号"
|
||||
prop="standCode"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
:disabled="formDisableFlag"
|
||||
v-model="qbzxdForm.standCode"
|
||||
placeholder="请输入企标编号"
|
||||
clearable
|
||||
readonly
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="企标名称" prop="cnName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
v-model="qbzxdForm.cnName"
|
||||
placeholder="请输入"
|
||||
:disabled="formDisableFlag"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="enName" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-input
|
||||
placeholder="请输入"
|
||||
maxlength="1000"
|
||||
v-model="qbzxdForm.enName"
|
||||
:disabled="formDisableFlag"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="代替企标编号"
|
||||
prop="replacedStandNum"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.replacedStandNum"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草人" prop="primaryDrafter" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.primaryDrafter" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.primaryDrafterName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="其他起草人" prop="compilersUser" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.compilersUser" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.compilersUserName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="主起草部门" prop="primaryDrafterDept" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.primaryDrafterDept" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.primaryDrafterDeptName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="起草部门" prop="compilersDept" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.compilersDept" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.otherDrafterDeptName"
|
||||
placeholder="请选择"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准密级" prop="standLevel" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="qbzxdForm.standLevel"
|
||||
placeholder="请选择标准密级"
|
||||
clearable
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in formOption.MJ"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item
|
||||
label="计划开始编写日期"
|
||||
prop="planStartTime"
|
||||
class="add-form-item"
|
||||
title="到当前时间点系统自动发送提醒"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="qbzxdForm.planStartTime"
|
||||
:editable="false"
|
||||
:disabled="formDisableFlag"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="计划发布日期" prop="putTime" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-datePicker
|
||||
placeholder="请选择时间"
|
||||
v-model="qbzxdForm.putTime"
|
||||
:editable="false"
|
||||
:disabled="formDisableFlag"
|
||||
></el-datePicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="涉及会签部门" prop="compileUnit" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<input v-model="qbzxdForm.compileUnit" type="hidden" />
|
||||
<el-input
|
||||
v-model="qbzxdForm.compileUnitName"
|
||||
placeholder="请选择涉及会签部门"
|
||||
readonly
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准制修订来源" prop="planSource" class="add-form-item" :class="{'form-item-disabled': formDisableFlag}">
|
||||
<el-select
|
||||
v-model="qbzxdForm.planSource"
|
||||
placeholder="请选择标准制修订来源"
|
||||
clearable
|
||||
:disabled="formDisableFlag"
|
||||
>
|
||||
<el-option
|
||||
v-for="opt in formOption.STANDSOURCEREVISION"
|
||||
:key="opt.value"
|
||||
:value="opt.value"
|
||||
:label="opt.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="制修订原因"
|
||||
prop="planReason"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.planReason"
|
||||
placeholder="请输入"
|
||||
type="textarea"
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
<template v-for="(item, index) in planReasonFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="验证工作"
|
||||
prop="testWork"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.testWork"
|
||||
placeholder="请输入"
|
||||
type="textarea"
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
<template v-for="(item, index) in testWorkFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="项目影响"
|
||||
prop="planImpact"
|
||||
class="add-form-item"
|
||||
:class="{'form-item-disabled': formDisableFlag}"
|
||||
>
|
||||
<el-input
|
||||
v-model="qbzxdForm.planImpact"
|
||||
placeholder="请输入"
|
||||
type="textarea"
|
||||
:disabled="formDisableFlag"
|
||||
/>
|
||||
<template v-for="(item, index) in planImpactFileList">
|
||||
<span
|
||||
:key="index"
|
||||
class="table-jump form-file-inline"
|
||||
@click="fileDownLoad(item.id)"
|
||||
>{{ item.oldFileName }}</span>
|
||||
</template>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-form
|
||||
ref="qbzxdForm"
|
||||
:model="qbzxdForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
:rules="qbzxdFormRules"
|
||||
style="margin-top: 15px;"
|
||||
>
|
||||
<template v-if="!processDetail">
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="反馈意见" prop="seniorManagerOpinion" class="add-form-item">
|
||||
<el-select v-model="qbzxdForm.seniorManagerOpinion">
|
||||
<el-option value="0" label="同意"></el-option>
|
||||
<el-option value="1" label="不同意"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row v-if="qbzxdForm.seniorManagerOpinion === '1'">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="意见理由" prop="seniorManagerOpinionContent" class="add-form-item">
|
||||
<el-input
|
||||
type="textarea"
|
||||
v-model="qbzxdForm.seniorManagerOpinionContent"
|
||||
clearable
|
||||
resize="none"
|
||||
:autosize="{ minRows: 4, maxRows: 8}"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-form>
|
||||
</div>
|
||||
<ProcessFooter
|
||||
v-if="!processDetail"
|
||||
show-save
|
||||
show-submit
|
||||
show-entrust
|
||||
default-entrust
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
></ProcessFooter>
|
||||
<!--审批结果-->
|
||||
<ProcessApprovalHistory
|
||||
v-if="isApprovalHistory"
|
||||
:approvalData="approvalHistory"
|
||||
></ProcessApprovalHistory>
|
||||
<loading :loading="loading">数据获取中</loading>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { queryDetail, completeTask, processCreateBussPlan, saveTaskForPub } from 'api/process'
|
||||
import ProcessHeader from '../../../components/ProcessHeader'
|
||||
import ProcessBaseInfo from '../../../components/ProcessBaseInfo'
|
||||
import ProcessFooter from '../../../components/ProcessFooter'
|
||||
import ProcessMixin from '../../../components/ProcessMixin'
|
||||
import ProcessApprovalHistory from 'process/components/ProcessApprovalHistory'
|
||||
export default {
|
||||
name: 'QbzxdsqStep3',
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
mixins: [ProcessMixin],
|
||||
data () {
|
||||
return {
|
||||
loading: false,
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
prcForm: {
|
||||
// 流程编号
|
||||
prcNum: '',
|
||||
// 流程类型
|
||||
prcType: '',
|
||||
// 流程名称
|
||||
prcName: '',
|
||||
// 流程描述
|
||||
prcDesc: '',
|
||||
// 截止时间
|
||||
overTime: ''
|
||||
},
|
||||
prcFormRules: {
|
||||
prcNum: [
|
||||
{ required: true, message: '流程编号不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcType: [
|
||||
{ required: true, message: '流程类型不能为空', trigger: 'change' }
|
||||
],
|
||||
prcName: [
|
||||
{ required: true, message: '流程名称不能为空', trigger: 'blur' }
|
||||
],
|
||||
prcDesc: [
|
||||
{ required: true, message: '流程描述不能为空', trigger: 'blur' }
|
||||
],
|
||||
overTime: [
|
||||
{ required: true, message: '截止时间不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
// 企标制修订信息表单字段
|
||||
qbzxdForm: {
|
||||
otherDrafterDept: '',
|
||||
otherDrafterDeptName: '',
|
||||
type: '',
|
||||
standCode: '',
|
||||
cnName: '',
|
||||
enName: '',
|
||||
standSort: '',
|
||||
planStartTime: '',
|
||||
planEndTime: '',
|
||||
replacedStandNum: '', // 代替企标编号
|
||||
primaryDrafter: '', // 标准起草组组长
|
||||
primaryDrafterName: '', // 标准起草组组长name
|
||||
compilersUser: '', // 标准起草组组员
|
||||
compilersUserName: '', // 标准起草组组员名称
|
||||
standLevel: '', // 标准密级
|
||||
putTime: '', // 计划发布日期
|
||||
planSource: '', // 标准制修订来源
|
||||
planReasonFile: '', // 制修订原因附件
|
||||
planReason: '', // 制修订原因
|
||||
planImpact: '', // 项目影响
|
||||
planImpactFile: '', // 项目影响附件
|
||||
testWork: '', // 验证工作
|
||||
testWorkFile: '', // 验证工作附件
|
||||
FO: '', // 人员ID
|
||||
FOName: '', // 人员name
|
||||
FORole: '',
|
||||
FORoleName: '',
|
||||
seniorManager: '', // 高级经理人员ID
|
||||
seniorManagerName: '', // 高级经理人员name
|
||||
compileUnit: '', // 会签部门ID
|
||||
compileUnitName: '', // 会签部门Name
|
||||
opinion: '', // FO反馈意见
|
||||
opinionContent: '', // FO意见内容
|
||||
treeRoleIdListAll: [],
|
||||
treeRoleIdListAllStep2: [],
|
||||
seniorManagerOpinion: '', // 高级经理反馈意见
|
||||
seniorManagerOpinionContent: '' // 高级经理意见内容
|
||||
},
|
||||
// 企标制修订信息表单验证
|
||||
qbzxdFormRules: {
|
||||
seniorManagerOpinion: [
|
||||
{ required: true, message: '反馈意见不能为空', trigger: 'change' }
|
||||
],
|
||||
seniorManagerOpinionContent: [
|
||||
{ required: true, message: '意见理由不能为空', trigger: 'change' }
|
||||
]
|
||||
},
|
||||
formOption: {
|
||||
BUSSSTANDCLASS: [], // 标准类别
|
||||
STANDSOURCEREVISION: [], // 标准制修订来源
|
||||
MJ: [] // 标准密级
|
||||
}, // 下拉框选项数据
|
||||
formDisableFlag: false,
|
||||
planImpactFileList: [], // 项目影响附件数组
|
||||
testWorkFileList: [], // 验证工作附件数组
|
||||
planReasonFileList: [], // 制修订原因附件数组
|
||||
processDetail: false,
|
||||
approvalHistory: [], // 审批结果
|
||||
isApprovalHistory: false
|
||||
}
|
||||
},
|
||||
beforeRouteEnter (to, from, next) {
|
||||
if (from.name === 'ProcessDetail') {
|
||||
next(vm => {
|
||||
vm.getProcessDetail()
|
||||
})
|
||||
} else {
|
||||
next()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getProcessDetail () {
|
||||
if (this.$store.getters.getHandleInfo.isEnd) {
|
||||
this.processDetail = true
|
||||
}
|
||||
},
|
||||
// 点击上传按钮
|
||||
getFile (current, fileNameList) {
|
||||
if (this.qbzxdForm[current]) {
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: this.qbzxdForm[current]
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
this[fileNameList] = res.data
|
||||
}, e => {
|
||||
})
|
||||
} else {
|
||||
}
|
||||
},
|
||||
// 保存
|
||||
handleSave () {
|
||||
this.saveLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
saveTaskForPub(_formData).then(res => {
|
||||
this.saveLoading = false
|
||||
this.$message.success('保存成功')
|
||||
// this.$router.push('/processCenter')
|
||||
}).catch(e => {
|
||||
this.saveLoading = false
|
||||
})
|
||||
},
|
||||
// 提交
|
||||
handleSubmit () {
|
||||
this.$refs['qbzxdForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
this.isSubmit = true
|
||||
let _formData = new FormData()
|
||||
this.qbzxdForm.opinionName = this.$store.getters.userInfo.uName
|
||||
this.qbzxdForm.opinionType = this.qbzxdForm.seniorManagerOpinion
|
||||
this.qbzxdForm.opinionRemark = this.qbzxdForm.seniorManagerOpinionContent
|
||||
this.qbzxdForm.opinionNode = '高级经理审批'
|
||||
this.qbzxdForm.opinionTime = ''
|
||||
_formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
_formData.append('pId', this.$store.getters.getHandleInfo.prcId)
|
||||
_formData.append('json', JSON.stringify({
|
||||
prcForm: this.prcForm,
|
||||
qbzxdForm: this.qbzxdForm
|
||||
}))
|
||||
completeTask(_formData).then(res => {
|
||||
if (res.success) {
|
||||
if (this.qbzxdForm.seniorManagerOpinion === '1') {
|
||||
this.isSubmit = false
|
||||
this.$message.success('提交成功')
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
} else {
|
||||
this.processCreateBussPlan()
|
||||
}
|
||||
} else {
|
||||
this.isSubmit = false
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
}).catch(e => {
|
||||
this.isSubmit = false
|
||||
})
|
||||
} else {
|
||||
this.$message.warning('请检查表单是否填写正确')
|
||||
}
|
||||
})
|
||||
},
|
||||
// 下载文件
|
||||
fileDownLoad (attId) {
|
||||
if (attId != null && attId !== '') {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
} else {
|
||||
this.$message.error('请选择要下载的文件')
|
||||
}
|
||||
},
|
||||
// 请求详情
|
||||
queryDetail () {
|
||||
this.loading = true
|
||||
queryDetail({
|
||||
taskIds: this.prcForm.taskIds
|
||||
}).then(res => {
|
||||
let mesg = JSON.parse(res.mesg)
|
||||
this.qbzxdForm = mesg.qbzxdForm
|
||||
let approvalHistory = mesg.qbzxdForm
|
||||
this.approvalHistory.push({
|
||||
approvalUserName: approvalHistory.opinionName, // 审批人
|
||||
auditOpinions: approvalHistory.opinionType, // 审批意见
|
||||
auditOpinionsText: approvalHistory.opinionRemark, // 意见内容
|
||||
approvalNode: approvalHistory.opinionNode, // 审批人角色
|
||||
approvalTime: approvalHistory.opinionTime // 审批时间
|
||||
})
|
||||
if (approvalHistory.opinionName) {
|
||||
this.isApprovalHistory = true
|
||||
}
|
||||
this.$refs.qbzxdForm.resetFields()
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
// 流程入库prcForm
|
||||
processCreateBussPlan () {
|
||||
const _formData = new FormData()
|
||||
let infoJson = JSON.parse(JSON.stringify(this.qbzxdForm))
|
||||
// 赋值流程名称和流程编号
|
||||
infoJson.prcNum = this.prcForm.prcNum
|
||||
infoJson.prcName = this.prcForm.prcName
|
||||
infoJson.qbCode = this.qbzxdForm.standCodeCondition ? this.qbzxdForm.standCodeCondition.qbCode : ''
|
||||
infoJson.classCode = this.qbzxdForm.standCodeCondition ? this.qbzxdForm.standCodeCondition.classCode : ''
|
||||
_formData.append('infoJson', JSON.stringify(infoJson))
|
||||
processCreateBussPlan(_formData).then(res => {
|
||||
if (res.ok) {
|
||||
this.$message.success('操作成功')
|
||||
setTimeout(() => {
|
||||
this.$router.push({
|
||||
name: 'ProcessCenter'
|
||||
})
|
||||
}, 100)
|
||||
} else {
|
||||
this.$message.warning(res.message)
|
||||
}
|
||||
})
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
// 监听是否有附件
|
||||
// 项目影响
|
||||
'qbzxdForm.planImpactFile' (newVal) {
|
||||
this.getFile('planImpactFile', 'planImpactFileList')
|
||||
},
|
||||
// 制修订原因
|
||||
'qbzxdForm.planReasonFile' (newVal) {
|
||||
this.getFile('planReasonFile', 'planReasonFileList')
|
||||
},
|
||||
// 验证工作
|
||||
'qbzxdForm.testWorkFile' (newVal) {
|
||||
this.getFile('testWorkFile', 'testWorkFileList')
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.formDisableFlag = true
|
||||
this.prcForm = this.$store.getters.getHandleInfo
|
||||
this.queryDetail()
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', {}, {_this: this}, res => {
|
||||
this.formOption.BUSSSTANDCLASS = res.data.BUSSSTANDCLASS || []
|
||||
this.formOption.STANDSOURCEREVISION = res.data.STANDSOURCEREVISION || []
|
||||
this.formOption.MJ = res.data.MJ || []
|
||||
}, err => {})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
#qbzxdsqStep3{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 15px;
|
||||
position: relative;
|
||||
height: 100%;
|
||||
background: #ffffff;
|
||||
.qbzxdsqStep3-box{
|
||||
flex: auto;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
.prc-content-border {
|
||||
border: 1px dashed #ddd;
|
||||
padding: 20px;
|
||||
border-radius: 10px;
|
||||
background: #fefefe;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,160 @@
|
||||
<!--SVPPS组件-->
|
||||
<template>
|
||||
<div class="svpps-wrap">
|
||||
<el-input
|
||||
v-model="checkedName"
|
||||
placeholder="请选择SVPPS"
|
||||
readonly
|
||||
@click.native="handleClick"
|
||||
:disabled="disabled"
|
||||
:title="checkedName"
|
||||
/>
|
||||
<el-drawer
|
||||
title="SVPPS"
|
||||
:visible.sync="visible"
|
||||
:wrapper-closable="false"
|
||||
size="350px"
|
||||
append-to-body
|
||||
class="org-tree"
|
||||
@opened="drawerOpen"
|
||||
>
|
||||
<laws-tree
|
||||
v-if="visible"
|
||||
:zNodes="zNodes"
|
||||
check-enable
|
||||
treeDivId="SVPPSID"
|
||||
@treeOnCheck="handleOnCheck"
|
||||
:editable="false"
|
||||
ref="SVPPSID"
|
||||
class="ztree"
|
||||
:chkboxType="{ 'Y': '', 'N': '' }"
|
||||
/>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button
|
||||
round
|
||||
class="common-button-primary"
|
||||
icon="el-icon-check"
|
||||
type="primary"
|
||||
@click="handleTreeDrawerConfirm">确定
|
||||
</el-button>
|
||||
<el-button
|
||||
round
|
||||
class="common-button-default"
|
||||
icon="el-icon-close"
|
||||
@click="handleTreeDrawerCancel">取消</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'SVPPS',
|
||||
props: {
|
||||
config: {
|
||||
type: Object,
|
||||
required: true
|
||||
},
|
||||
value: {
|
||||
required: true
|
||||
},
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
// 栅格比例
|
||||
span: {
|
||||
type: Number,
|
||||
default: 24
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
visible: false,
|
||||
treeCheckNode: [],
|
||||
checkedName: '',
|
||||
zNodes: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getSvpps () {
|
||||
this.$http.get('/lawss/otSvpps/selectThree', {}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
let treeNode = []
|
||||
res.data.map((item, index) => {
|
||||
let treeItem = {
|
||||
name: item.svppsCode + ' ' + item.svppsCnName,
|
||||
pId: item.pid,
|
||||
id: item.id,
|
||||
svppsCode: item.svppsCode,
|
||||
snum: item.snum,
|
||||
fnum: item.fnum,
|
||||
tnum: item.tnum
|
||||
}
|
||||
treeNode[index] = treeItem
|
||||
})
|
||||
this.zNodes = treeNode
|
||||
}
|
||||
})
|
||||
},
|
||||
// 选择SVPPS事件
|
||||
handleOnCheck (treeCheckNode) {
|
||||
this.treeCheckNode = treeCheckNode
|
||||
},
|
||||
// 选择SVPPS确定事件
|
||||
handleTreeDrawerConfirm () {
|
||||
const checkedList = []
|
||||
const checkedNameList = []
|
||||
this.treeCheckNode.map(item => {
|
||||
// if (item.pId) {
|
||||
checkedList.push(item.id)
|
||||
if(item.oldname){
|
||||
checkedNameList.push(item.oldname)
|
||||
} else {
|
||||
checkedNameList.push(item.name)
|
||||
}
|
||||
// }
|
||||
})
|
||||
this.checkedName = checkedNameList.join(',')
|
||||
this.$emit('input', checkedList.join(','))
|
||||
this.$emit('on-checked', this.checkedName)
|
||||
this.visible = false
|
||||
},
|
||||
// 选择SVPPS取消事件
|
||||
handleTreeDrawerCancel () {
|
||||
this.visible = false
|
||||
},
|
||||
// 赋值回显SVPPS
|
||||
drawerOpen () {
|
||||
let checkedArr = this.config.value ? this.config.value.split(',') : []
|
||||
if (checkedArr.length > 0) {
|
||||
setTimeout(() => {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.SVPPSID.checkedNode(checkedArr)
|
||||
})
|
||||
}, 1500)
|
||||
}
|
||||
},
|
||||
|
||||
handleClick() {
|
||||
if (!this.disabled) {
|
||||
this.visible = true
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.getSvpps()
|
||||
this.checkedName = this.config.valueName || ''
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
::v-deep .el-drawer-body{
|
||||
position: relative!important;
|
||||
}
|
||||
::v-deep .laws-tree {
|
||||
position: relative!important;
|
||||
height: calc(100% - 100px) !important;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,689 @@
|
||||
<!-- 入库基础信息详情 -->
|
||||
<template>
|
||||
<el-drawer
|
||||
:title="title"
|
||||
:visible.sync="dialogVisible"
|
||||
size="1200px">
|
||||
<div class="detail-content-wrap">
|
||||
<el-form
|
||||
ref="prcForm"
|
||||
:model="prcForm"
|
||||
class="label-input-form">
|
||||
<!-- 新增和修订的数据 -->
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem label="标准来源" prop="standType" label-width="130px" class="add-form-item" :class="{'form-item-disabled': formDisabled}">
|
||||
<el-select
|
||||
v-model="prcForm.standType"
|
||||
placeholder="请选择标准来源"
|
||||
:disabled="formDisabled">
|
||||
<el-option value="INLAND" label="国内标准库"></el-option>
|
||||
<el-option value="FOREIGN" label="海外标准库"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准类别" prop="standSort" label-width="130px" class="add-form-item" :class="{'form-item-disabled': formDisabled}">
|
||||
<el-select
|
||||
v-model="prcForm.standSort"
|
||||
:disabled="formDisabled"
|
||||
placeholder="请选择标准类别"
|
||||
filterable
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="item in standSortOptions"
|
||||
:key="item.value"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标准编号" prop="standNumber" label-width="130px" class="add-form-item" :class="{'form-item-disabled': formDisabled}">
|
||||
<el-input
|
||||
v-model="prcForm.standNumber"
|
||||
:disabled="formDisabled"
|
||||
placeholder="请输入标准编号"
|
||||
clearable
|
||||
:maxlength="100"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="中文名称" prop="standName" label-width="130px" class="add-form-item" :class="{'form-item-disabled': formDisabled}">
|
||||
<el-input v-model="prcForm.standName"
|
||||
:disabled="formDisabled"
|
||||
placeholder="请输入标准名称"
|
||||
clearable
|
||||
:maxlength="500"
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="英文名称" prop="standEnName" label-width="130px" class="add-form-item" :class="{'form-item-disabled': formDisabled}">
|
||||
<el-input
|
||||
v-model="prcForm.standEnName"
|
||||
maxlength="1000"
|
||||
:disabled="formDisabled"
|
||||
placeholder="请输入标准英文名称"
|
||||
clearable></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!------------------------------------ 表单信息 -------------------------------------------->
|
||||
<template>
|
||||
<!-- 数据字段展示 -->
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem label="重要度" title="设置为A时可纳入标准法规清单" prop="isRelateAccess" label-width="130px" class="add-form-item" :class="{'form-item-disabled': formDisabled}">
|
||||
<el-select v-model="prcForm.isRelateAccess" :disabled="formDisabled">
|
||||
<el-option value="1" label="A" key="1"></el-option>
|
||||
<el-option value="0" label="B" key="0"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem label="文本状态" prop="textStatus" label-width="130px" class="add-form-item" :class="{'form-item-disabled': formDisabled}">
|
||||
<el-select
|
||||
v-model="prcForm.textStatus"
|
||||
placeholder="请选择文本状态"
|
||||
:disabled="formDisabled">
|
||||
<el-option value="草案" label="草案"></el-option>
|
||||
<el-option value="征求意见稿" label="征求意见稿"></el-option>
|
||||
<el-option value="报批稿" label="报批稿"></el-option>
|
||||
<el-option value="送审稿" label="送审稿"></el-option>
|
||||
<!-- <el-option value="增补件(必读)" label="增补件(必读)"></el-option>-->
|
||||
<el-option value="发布稿(必读)" label="发布稿(必读)"></el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="25">
|
||||
<el-col :span="12">
|
||||
<el-formItem label="标准年份/系列" prop="standYear" label-width="130px" class="add-form-item" :class="{'form-item-disabled': formDisabled}">
|
||||
<el-input v-model="prcForm.standYear"
|
||||
placeholder="请输入标准年份/系列"
|
||||
:disabled="formDisabled"
|
||||
clearable></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-formItem label="标准状态" prop="standState" label-width="130px" class="add-form-item form-item-disabled">
|
||||
<el-select
|
||||
v-model="prcForm.standState"
|
||||
placeholder="请选择标准状态"
|
||||
disabled
|
||||
clearable>
|
||||
<el-option
|
||||
v-for="opt in standStateOptions"
|
||||
:key="opt.value"
|
||||
:value="opt.value === undefined ? '' :opt.value"
|
||||
:label="opt.label">{{ opt.label }}</el-option>
|
||||
</el-select>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="25">
|
||||
<custom-date-pick-with-text2
|
||||
:config="{
|
||||
attrName: '发布日期',
|
||||
attrField: 'issueTime'
|
||||
}"
|
||||
:span="12"
|
||||
label-width="130px"
|
||||
v-model="prcForm.issueTime"
|
||||
:disabled="formDisabled"
|
||||
@validate="$refs['prcForm'].validateField('issueTime')"
|
||||
></custom-date-pick-with-text2>
|
||||
<el-col :span="12">
|
||||
<el-formItem label="文本说明" prop="synopsis" label-width="130px" class="add-form-item" :class="{'form-item-disabled': formDisabled}">
|
||||
<el-input v-model="prcForm.synopsis" :disabled="formDisabled" placeholder="请输入文本说明"
|
||||
clearable :maxlength="100"></el-input>
|
||||
</el-formItem>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="25">
|
||||
<custom-file
|
||||
key="filePdf"
|
||||
:config="{
|
||||
attrName: 'PDF',
|
||||
attrField: 'filePdf'
|
||||
}"
|
||||
:allow-type="['.PDF', '.pdf']"
|
||||
:span="12"
|
||||
processModel
|
||||
show-file-model
|
||||
v-model="prcForm.filePdf"
|
||||
:disabled="formDisabled"
|
||||
></custom-file>
|
||||
<custom-file
|
||||
key="fileWord"
|
||||
:config="{
|
||||
attrName: 'WORD',
|
||||
attrField: 'fileWord'
|
||||
}"
|
||||
:allow-type="['.doc', '.docx']"
|
||||
:span="12"
|
||||
processModel
|
||||
show-file-model
|
||||
v-model="prcForm.fileWord"
|
||||
:disabled="formDisabled"
|
||||
></custom-file>
|
||||
</el-row>
|
||||
|
||||
<el-row :gutter="25">
|
||||
<!-- 动态数据 -->
|
||||
<template v-for="displayLocation in dynamicFormField" v-if="!['文本信息'].includes(displayLocation.label)">
|
||||
<!-- v-if="!['6DCCCGU9KFQXTQ6EGGA4', 'L378EYP5HL28KE7NSZ68'].includes(displayLocation.value)"-->
|
||||
<el-col :span="24" v-if="!['责任分配'].includes(displayLocation.label)">
|
||||
<el-divider content-position="left">{{ displayLocation.label }}</el-divider>
|
||||
</el-col>
|
||||
<template v-for="field in displayLocation.child" v-if="!['责任分配'].includes(displayLocation.label) || field.attrName === '发布机构'">
|
||||
<template v-if="field.attrType === 'DATE_PIC_OPTS'">
|
||||
<custom-date-pick-with-text
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="24"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
></custom-date-pick-with-text>
|
||||
</template>
|
||||
<template v-if="field.attrType === 'INPUT_STR' && !['XGLC', 'CHJL'].includes(field.attrField)">
|
||||
<template v-if="field.attrField === 'DTBJH' || field.attrField === 'YYBJ' || field.attrField === 'BYYBJ' || field.attrField === 'CBBH' || field.attrField === 'DXBZ'">
|
||||
<custom-input-for-standards
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
processModel
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
data-source
|
||||
v-if="prcForm.standType === 'INLAND'"
|
||||
></custom-input-for-standards>
|
||||
<custom-input-for-standards-for-foreign
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
processModel
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
data-source-from="INLAND"
|
||||
v-if="prcForm.standType === 'FOREIGN'"
|
||||
></custom-input-for-standards-for-foreign>
|
||||
</template>
|
||||
<template v-else>
|
||||
<custom-input
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
></custom-input>
|
||||
</template>
|
||||
</template>
|
||||
<template v-else-if="field.attrType === 'INPUT_NUM'">
|
||||
<!-- !['GLWJ', 'XGLC', 'CHJL'].includes(field.attrField) &&-->
|
||||
<custom-input-num
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
></custom-input-num>
|
||||
</template>
|
||||
<template v-else-if="field.attrType === 'DATE_PICKER'">
|
||||
<!-- !['GLWJ', 'XGLC', 'CHJL'].includes(field.attrField) &&-->
|
||||
<custom-date-pick
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
></custom-date-pick>
|
||||
</template>
|
||||
<template v-else-if="field.attrType === 'FILE'">
|
||||
<!-- !['GLWJ', 'XGLC', 'CHJL'].includes(field.attrField) &&-->
|
||||
<custom-file
|
||||
processModel
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
></custom-file>
|
||||
</template>
|
||||
<template v-else-if="field.attrType === 'TEXTAREA'">
|
||||
<!-- !['GLWJ', 'XGLC', 'CHJL'].includes(field.attrField) &&-->
|
||||
<custom-textarea
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
></custom-textarea>
|
||||
</template>
|
||||
<template v-else-if="field.selVal === 'ORGLIST' || field.selVal === 'USERLIST'">
|
||||
<custom-org
|
||||
class="add-form-item"
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
:zNodes="orgData"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
:data-model="prcForm"></custom-org>
|
||||
</template>
|
||||
<template v-else-if="field.attrType === 'SEL_OPTION'">
|
||||
<custom-select
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
></custom-select>
|
||||
</template>
|
||||
<template v-else-if="field.attrType === 'SEL_OPTS' && field.attrField !== 'ZRLX'">
|
||||
<!-- !['GLWJ', 'XGLC', 'CHJL', 'YQLX'].includes(field.attrField) &&-->
|
||||
<template v-if="field.attrField === 'SVPPS'">
|
||||
<custom-SVPPS
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
></custom-SVPPS>
|
||||
</template>
|
||||
<template v-else>
|
||||
<custom-select-array
|
||||
:key="field.attrField"
|
||||
:config="field"
|
||||
:span="12"
|
||||
v-model="prcForm[field.attrField]"
|
||||
:disabled="formDisabled"
|
||||
></custom-select-array>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
</el-row>
|
||||
</template>
|
||||
</el-form>
|
||||
<loading :loading="loading">正在加载基础信息详情</loading>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CustomInputForStandards from '@/components/CustomFormComponents/InputForStandards'
|
||||
import CustomInputForStandardsForForeign from '@/components/CustomFormComponents/InputForStandardsForForeign'
|
||||
import CustomInput from '@/components/CustomFormComponents/Input'
|
||||
import CustomTextarea from '@/components/CustomFormComponents/Textarea'
|
||||
import CustomSearchSelect from '@/components/CustomFormComponents/SearchSelect'
|
||||
import CustomSelect from '@/components/CustomFormComponents/Select'
|
||||
import CustomDatePick from '@/components/CustomFormComponents/DatePicker'
|
||||
import CustomFile from '@/components/CustomFormComponents/File'
|
||||
import CustomInputNum from '@/components/CustomFormComponents/InputNum'
|
||||
import CustomDatePickGroup from '@/components/CustomFormComponents/DatePickerGroup'
|
||||
import CustomSelectArray from '@/components/CustomFormComponents/SelectArray'
|
||||
import ProcessInput from 'process/components/ProcessInput'
|
||||
import CustomDatePickWithText2 from '@/components/CustomFormComponents/DatePickerWithText2'
|
||||
import ProcessHeader from "process/components/ProcessHeader";
|
||||
import ProcessBaseInfo from "process/components/ProcessBaseInfo";
|
||||
import ProcessFooter from "process/components/ProcessFooter";
|
||||
import CustomDatePickWithText from "@/components/CustomFormComponents/DatePickerGroupWithText";
|
||||
import CustomOrg from "@/components/CustomFormComponents/OrgTree";
|
||||
import CustomSVPPS from "@/components/CustomFormComponents/SVPPS";
|
||||
export default {
|
||||
name: 'detail',
|
||||
mixins: [],
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '法规入库基础信息'
|
||||
},
|
||||
processForm: {
|
||||
type: Object,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
components: {
|
||||
CustomFile,
|
||||
CustomInput,
|
||||
CustomInputForStandards,
|
||||
CustomTextarea,
|
||||
CustomSearchSelect,
|
||||
CustomDatePick,
|
||||
CustomSelect,
|
||||
CustomInputNum,
|
||||
CustomDatePickGroup,
|
||||
CustomSelectArray,
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
CustomDatePickWithText,
|
||||
CustomOrg,
|
||||
CustomSVPPS,
|
||||
ProcessInput,
|
||||
CustomDatePickWithText2,
|
||||
CustomInputForStandardsForForeign
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
formDisabled: true,
|
||||
allSelectOptions: {},
|
||||
countryOptions: [],
|
||||
regionOptions: [], // 区域
|
||||
standSortOptions: [], // 标准类别下拉框
|
||||
standSortConfigOptions: [], // 标准类别下拉框
|
||||
applyArcticOptions: [], // 适用车型下拉框
|
||||
standStateOptions: [], // 标准状态下拉框
|
||||
standFileClassifyOptions: [], // 文本状态下拉框
|
||||
standStateObj: {}, // 标准状态key + value
|
||||
adoptExtentOptions: [], // 采标程度下拉框
|
||||
emergyKindOptions: [], // 能源种类下拉框
|
||||
applyAuthOptions: [], // 适用认证下拉框
|
||||
categoryOptions: [], // 所属类别下拉框
|
||||
categoryConfigOptions: [], // 所属类别下拉框
|
||||
assemClassOptions: [], // 总成分类下拉框
|
||||
standAttributeList: [],
|
||||
formFieldListData: [], // 存储从接口取过来的原始数据
|
||||
dynamicFormField: [],
|
||||
displayLocation: [],
|
||||
prcForm: {
|
||||
filePdf: '',
|
||||
fileWord: '',
|
||||
textStatus: '',
|
||||
standType: '',
|
||||
type: this.$route.query.type,
|
||||
describe: '',
|
||||
// 截止时间
|
||||
deadline: '',
|
||||
processRealName: '',
|
||||
isRelateAccess: '1',
|
||||
// 适用地区
|
||||
applyCountry: '中国',
|
||||
// 标准类别
|
||||
standSort: '',
|
||||
// 适用车辆类型
|
||||
vehicleType: '',
|
||||
// 采标程度
|
||||
adoptTheDegree: '',
|
||||
// 标准编号
|
||||
standNumber: '',
|
||||
// 标准年份
|
||||
standYear: '',
|
||||
// 标准名称
|
||||
standName: '',
|
||||
// 标准英文名称
|
||||
standEnName: '',
|
||||
// 文本状态
|
||||
standState: '',
|
||||
// 代替标准号
|
||||
replaceStandNum: '',
|
||||
// 发布时间
|
||||
issueTime: '',
|
||||
// 新车型实施日期
|
||||
newPutTime: '',
|
||||
// 在产车实施日期
|
||||
prodPutTime: '',
|
||||
// 文本实施日期
|
||||
textPutTime: '',
|
||||
// EOP实施日期
|
||||
eopPutTime: '',
|
||||
// 文本说明
|
||||
WBSMWZ: '',
|
||||
editType: '',
|
||||
// 是否进入法规设计开发清单
|
||||
ifIn: '',
|
||||
// 准入类型
|
||||
saccessType: '',
|
||||
// 企标覆盖关系
|
||||
coverageRelationship: '',
|
||||
// 要求类型
|
||||
requiremenType: '',
|
||||
// 个性化标签
|
||||
personalizedTag: '',
|
||||
// 归口管理部门
|
||||
centralizedManage: '',
|
||||
// 发布机构
|
||||
issuer: '',
|
||||
// 分标委
|
||||
caseCmmittee: '',
|
||||
// 参与深度
|
||||
highEngagement: '',
|
||||
// 采标编号
|
||||
pickTheNumber: '',
|
||||
// 引用标准
|
||||
quotedStandard: '',
|
||||
standId: ''
|
||||
},
|
||||
loading: false
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* @description: 加载动态表单
|
||||
* @author: chenxiaoxi
|
||||
* @time: 2021-03-14 11:31:46
|
||||
*/
|
||||
getFormFieldList (prcForm) {
|
||||
const processForm = JSON.parse(JSON.stringify(prcForm))
|
||||
this.prcForm = {...this.prcForm, ...processForm}
|
||||
this.prcForm.standSort = processForm.standSort
|
||||
this.prcForm.standId = processForm.id
|
||||
Object.keys(processForm.attrInfoMap || {}).forEach((key) => {
|
||||
if (processForm.attrInfoMap[key]) {
|
||||
this.$set(this.prcForm, key, processForm.attrInfoMap[key])
|
||||
}
|
||||
})
|
||||
this.prcForm['id'] = processForm.id
|
||||
this.$http.get('lawss/sarStandAttrDetails/list', {}, {},
|
||||
res => {
|
||||
if (res.ok) {
|
||||
const { data = {} } = res
|
||||
const standKey = this.prcForm.standType + '_STAND'
|
||||
this.formFieldListData = data[standKey] || []
|
||||
this.resolveFormFieldList()
|
||||
}
|
||||
}, e => {})
|
||||
},
|
||||
|
||||
// 选项匹配
|
||||
resolveFormFieldList (isEdit) {
|
||||
const data = this.formFieldListData
|
||||
this.formFieldList = data.map((item) => {
|
||||
if (item.attrType === 'SEL_OPTION' || item.attrType === 'SEL_OPTS') {
|
||||
return Object.assign({}, item, {
|
||||
options: this.allSelectOptions[item.selVal]
|
||||
})
|
||||
} else {
|
||||
return item
|
||||
}
|
||||
})
|
||||
// 处理时间格式的数据
|
||||
data.forEach(item => {
|
||||
if (item.attrType === 'DATE_PICKER') {
|
||||
const date = this.prcForm[item.attrField] ? new Date(this.prcForm[item.attrField]) : ''
|
||||
this.$set(this.prcForm, item.attrField, date)
|
||||
} else {
|
||||
this.$set(this.prcForm, item.attrField, this.prcForm[item.attrField] || '')
|
||||
}
|
||||
})
|
||||
// 查询动态表单标题
|
||||
this.$nextTick(() => {
|
||||
Promise.all([this.queryDisplayLocation(), this.getGzzOption()]).then((values) => {
|
||||
const displayLocation = values[0]
|
||||
const dynamicFormField = this.prcForm
|
||||
const formFieldList = this.formFieldList
|
||||
formFieldList.forEach((field) => {
|
||||
if (field.attrField === 'GZZXX') {
|
||||
field.options = values[1]
|
||||
}
|
||||
displayLocation.forEach((location) => {
|
||||
let value = dynamicFormField[field.attrField]
|
||||
if (value && field.attrType === 'DATE_PICKER') {
|
||||
value = this.$dateFormat(value, 'yyyy-MM-dd')
|
||||
}
|
||||
field['value'] = value
|
||||
if (dynamicFormField[field.attrField + 'Name']) {
|
||||
field['valueName'] = dynamicFormField[field.attrField + 'Name']
|
||||
}
|
||||
if (field.showRegionId === location.value) {
|
||||
if (!location.child) {
|
||||
location['child'] = []
|
||||
}
|
||||
location['child'].push(field)
|
||||
}
|
||||
})
|
||||
})
|
||||
this.dynamicFormField = displayLocation
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 获取所有选项
|
||||
* @date: 2020-11-11 14:27:17
|
||||
* @auth: chenxiaoxi
|
||||
*/
|
||||
getDicTypeListCode () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('sys/dictype/getDicTypeListCode', '', {
|
||||
|
||||
}, res => {
|
||||
this.allSelectOptions = res.data || {}
|
||||
this.countryOptions = res.data.COUNTRY
|
||||
this.regionOptions = res.data.REGION // 区域
|
||||
this.standSortOptions = res.data.STANDCLASSIFY
|
||||
this.applyArcticOptions = res.data.PRODUCTTYPE // 根据需求文档,产品类别对应标准属性中的“适用车型”
|
||||
this.standStateOptions = res.data.STANDSTATE
|
||||
this.adoptExtentOptions = res.data.DEGREESTANDARD
|
||||
this.emergyKindOptions = res.data.ENERGYTYPES
|
||||
this.applyAuthOptions = res.data.PROVETYPE // 适用认证下拉框
|
||||
this.categoryOptions = res.data.CATEGORY // 能源种类
|
||||
this.assemClassOptions = res.data.ASSEMCLASSIFY // 总成分类
|
||||
this.categoryConfigOptions = res.data.CATEGORY
|
||||
this.standAttributeList = res.data.RULETYPE
|
||||
this.BZFGGXOUIUJ = res.data.BZFGGXOUIUJ
|
||||
resolve()
|
||||
}, e => {
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 获取工作组信息下拉框信息
|
||||
getGzzOption () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawss/sarGroupMenu/queryGroup', '', {
|
||||
|
||||
}, res => {
|
||||
if (res.ok) {
|
||||
let gzzxxOptions = []
|
||||
res.data.map(item => {
|
||||
gzzxxOptions.push({
|
||||
value: item.id,
|
||||
label: item.menuName
|
||||
})
|
||||
})
|
||||
this.allSelectOptions.GZZXX = gzzxxOptions
|
||||
resolve(gzzxxOptions)
|
||||
}
|
||||
}, e => {})
|
||||
})
|
||||
},
|
||||
|
||||
// 查询动态表单标题
|
||||
queryDisplayLocation () {
|
||||
return new Promise((resolve, reject) => {
|
||||
this.$http.get('lawssBase/utArea/getAreaList', {
|
||||
sarType: 'STAND'
|
||||
}, {
|
||||
|
||||
}, res => {
|
||||
resolve(res.data || [])
|
||||
}, e => {
|
||||
reject(e)
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
watch: {
|
||||
dialogVisible: {
|
||||
handler(val) {
|
||||
this.$emit('update:visible', val)
|
||||
}
|
||||
},
|
||||
visible: {
|
||||
handler(val) {
|
||||
this.dialogVisible = val
|
||||
}
|
||||
},
|
||||
processForm: {
|
||||
deep: true,
|
||||
handler (val) {
|
||||
this.loading = true
|
||||
// 查询选项
|
||||
Promise.all([
|
||||
this.getDicTypeListCode(),
|
||||
this.getGzzOption(),
|
||||
this.queryDisplayLocation()
|
||||
]).then(() => {
|
||||
// 加载动态表单
|
||||
this.getFormFieldList(val)
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
}, 100)
|
||||
}).catch(e => {})
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.dialogVisible = this.visible
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
/deep/ .el-dialog__header {
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 0 20px;
|
||||
height: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.el-dialog__title {
|
||||
color: #606266;
|
||||
}
|
||||
}
|
||||
/deep/ .el-input__inner {
|
||||
color: #666 !important;
|
||||
}
|
||||
.label-input-form {
|
||||
/deep/ .el-divider__text.is-left {
|
||||
left: 20px !important;
|
||||
padding: 0 20px;
|
||||
}
|
||||
}
|
||||
.detail-content-wrap {
|
||||
padding: 10px 20px;
|
||||
}
|
||||
/deep/ .add-form-item {
|
||||
.el-textarea {
|
||||
&.is-disabled {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,105 @@
|
||||
<!-- 退回意见 -->
|
||||
<template>
|
||||
<el-dialog
|
||||
:visible.sync="dialogVisible"
|
||||
:close-on-click-modal="false"
|
||||
:close-on-press-escape="false"
|
||||
@closed="handleClosed">
|
||||
<div slot="title">
|
||||
{{ title }}
|
||||
<span class="must" style="font-size: 12px;">(请确认您是否要退回该任务,并填写退回原因/意见)</span>
|
||||
</div>
|
||||
<el-input
|
||||
v-model="opinion"
|
||||
type="textarea"
|
||||
resize="none"
|
||||
:autosize="{ minRows: 3, maxRows: 8}"
|
||||
maxlength="1000"
|
||||
:placeholder="placeholder"></el-input>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button round size="small" @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" round size="small" @click="handleConfirmReject">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'reject',
|
||||
mixins: [],
|
||||
props: {
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: '退回'
|
||||
}
|
||||
},
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
opinion: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClosed() {
|
||||
this.opinion = ''
|
||||
},
|
||||
handleConfirmReject() {
|
||||
if (this.opinion === '') {
|
||||
this.$message.warning(`${this.title}意见不能为空`)
|
||||
} else {
|
||||
this.$emit('confirm', this.opinion)
|
||||
setTimeout(() => {
|
||||
this.dialogVisible = false
|
||||
}, 100)
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
placeholder() {
|
||||
return `请填写${this.title}意见`
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
dialogVisible: {
|
||||
handler(val) {
|
||||
this.$emit('update:visible', val)
|
||||
}
|
||||
},
|
||||
visible: {
|
||||
handler(val) {
|
||||
this.dialogVisible = val
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.dialogVisible = this.visible
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
/deep/ .el-dialog__header {
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 0 20px;
|
||||
height: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #606266;
|
||||
font-size: 16px;
|
||||
}
|
||||
/deep/ .el-dialog__body {
|
||||
padding: 20px 20px 5px !important;
|
||||
}
|
||||
/deep/ .el-dialog__footer {
|
||||
padding: 0 20px;
|
||||
height: 50px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
</style>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user