commit
This commit is contained in:
@@ -1,21 +1,15 @@
|
||||
<!-- 流程中心 -->
|
||||
<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 () {
|
||||
|
||||
@@ -315,7 +315,6 @@ export default {
|
||||
text-align: right;
|
||||
background: #fff;
|
||||
z-index: 999;
|
||||
margin-top: 20px;
|
||||
padding: 0;
|
||||
.footer-line {
|
||||
height: 1px;
|
||||
|
||||
@@ -9,37 +9,12 @@
|
||||
流程中心 —— <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>
|
||||
<el-divider></el-divider>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Bus from '../components/Bus'
|
||||
import { mapGetters } from 'vuex'
|
||||
export default {
|
||||
name: 'ProcessHeader',
|
||||
@@ -53,6 +28,7 @@ export default {
|
||||
components: {},
|
||||
data () {
|
||||
return {
|
||||
activeName: '',
|
||||
opacityStyle: {},
|
||||
headerFixed: false
|
||||
}
|
||||
@@ -73,25 +49,6 @@ export default {
|
||||
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: {
|
||||
@@ -99,32 +56,21 @@ export default {
|
||||
},
|
||||
watch: {},
|
||||
mounted () {
|
||||
const el = $('.prc-header-wrap').parent('div')
|
||||
$(el).scroll(() => {
|
||||
this.handleScroll(el)
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@/assets/styles/style';
|
||||
.el-divider {
|
||||
margin: 10px 0 0;
|
||||
}
|
||||
.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;
|
||||
}
|
||||
}
|
||||
padding-top: 10px;
|
||||
}
|
||||
.back {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.process-title {
|
||||
font-size: 18px;
|
||||
@@ -140,20 +86,4 @@ export 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,428 @@
|
||||
<template>
|
||||
<div class="bzfyStep1">
|
||||
<!-- 标准需求(翻译)申请流程-->
|
||||
<ProcessHeader toggle>
|
||||
<template slot="proName">标准需求(翻译)申请流程</template>
|
||||
<template slot="proNode">申请人发起流程</template>
|
||||
</ProcessHeader>
|
||||
<div class="headerTabs">
|
||||
<div class="headerTabsItem" :class="active === '1' ? 'active' : ''" @click="handleTabs('1')">基础信息</div>
|
||||
<div class="headerTabsItem" :class="active === '2' ? 'active' : ''" @click="handleTabs('2')">审批历史</div>
|
||||
</div>
|
||||
<div class="content" v-if="active === '1'">
|
||||
<div class="contentTitle">
|
||||
<div class="titleIcon"></div><div class="titleText">基础信息</div>
|
||||
</div>
|
||||
<el-form
|
||||
ref="qbkwForm"
|
||||
:model="form"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="申请单位" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="form.orgName"
|
||||
clearable
|
||||
readonly
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="申请人" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="form.account"
|
||||
clearable
|
||||
readonly
|
||||
disabled
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="联系电话" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="form.mobilePhone"
|
||||
placeholder="请输入联系电话"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="邮箱" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="form.email"
|
||||
placeholder="请输入邮箱"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div class="contentTitle">
|
||||
<div class="titleIcon"></div><div class="titleText">填写信息</div>
|
||||
</div>
|
||||
<div class="tableTitle">
|
||||
标准需求列表
|
||||
<div class="tableButton">
|
||||
<el-button plain class="common-button-primary" size="mini" @click="addList">添加</el-button>
|
||||
<el-button plain class="common-button-primary" size="mini">删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-table
|
||||
:data="data"
|
||||
border
|
||||
style="width: 100%"
|
||||
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
|
||||
fontWeight: 'bold', height: '48px'}">
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
type="index"
|
||||
width="55"
|
||||
label="序号"
|
||||
align="center">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="partCode"
|
||||
label="类型"
|
||||
width="180">
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="content"
|
||||
label="标准号"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="deptName"
|
||||
label="标准名称"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="需求时间"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="页数/字数"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="原语言"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="目标语言"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="是否为加急项目"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="是否自带预算"
|
||||
>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="userName"
|
||||
label="费用出自项目的项目名称、编号及费用科目"
|
||||
>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-collapse accordion>
|
||||
<el-collapse-item title="意见填写">
|
||||
<div style="margin: 10px 0;">
|
||||
<el-input
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
resize="none"
|
||||
placeholder="请输入意见"
|
||||
v-model="textarea">
|
||||
</el-input>
|
||||
</div>
|
||||
<div>注:文件需求日期应从该申请单审批完成后2日开始计算,日翻译量10000字符(可以每页700-800字符估算),周末及节假日除外。</div>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
</div>
|
||||
<div class="content" v-if="active === '2'">
|
||||
<div class="block" style="padding-top: 20px;">
|
||||
<el-timeline>
|
||||
<el-timeline-item timestamp="发起流程" placement="top" :color="user1 ? '#66b1ff' : ''">
|
||||
<el-card>
|
||||
<h4>流程发起人</h4>
|
||||
<div style="margin-top: 10px;">
|
||||
<el-input v-model="user1" placeholder="请输入"></el-input>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
<el-timeline-item timestamp="选择责任人" placement="top" :color="user2 ? '#66b1ff' : ''">
|
||||
<el-card>
|
||||
<h4>责任对接人</h4>
|
||||
<div style="margin-top: 10px;">
|
||||
<el-input v-model="user2" placeholder="请输入">
|
||||
|
||||
</el-input></div>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
<el-timeline-item timestamp="填写意见" placement="top" :color="user3 ? '#66b1ff' : ''">
|
||||
<el-card>
|
||||
<h4>责任人</h4>
|
||||
<div style="margin-top: 10px;">
|
||||
<el-input v-model="user3" placeholder="请输入"></el-input>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
<el-timeline-item timestamp="意见汇总并发起会签" placement="top" :color="user4 ? '#66b1ff' : ''">
|
||||
<el-card>
|
||||
<h4>标准法规工程师</h4>
|
||||
<div style="margin-top: 10px;">
|
||||
<el-input v-model="user4" placeholder="请输入"></el-input>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
<el-timeline-item timestamp="审核" placement="top" :color="user5 ? '#66b1ff' : ''">
|
||||
<el-card>
|
||||
<h4>责任对接人,标准法规部部门负责人</h4>
|
||||
<div style="margin-top: 10px;">
|
||||
<el-input v-model="user5" placeholder="请输入"></el-input>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 新增抽屉-->
|
||||
<el-drawer
|
||||
:title="title"
|
||||
:visible.sync="ListModel"
|
||||
size="800px"
|
||||
custom-class="demo-drawer"
|
||||
>
|
||||
<div class="demo-drawer-content add-demo">
|
||||
<el-form
|
||||
ref="qbkwForm"
|
||||
:model="ListForm"
|
||||
class="label-input-form prc-content-border"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="24">
|
||||
<el-form-item label="类型" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
placeholder="请选择类型"
|
||||
v-model="ListForm.orgName"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标准号" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
placeholder="请输入标准号"
|
||||
v-model="ListForm.account"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="标准名称" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="ListForm.mobilePhone"
|
||||
placeholder="请输入标准名称"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="需求时间" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="ListForm.email"
|
||||
placeholder="请输入需求时间"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="页数/字数" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="ListForm.email"
|
||||
placeholder="请输入页数/字数"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="原语言" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="ListForm.email"
|
||||
placeholder="请输入原语言"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="目标语言" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="ListForm.email"
|
||||
placeholder="请输入目标语言"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否为加急项目" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="ListForm.email"
|
||||
placeholder="请输入邮箱"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否自带预算" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="ListForm.email"
|
||||
placeholder="请输入邮箱"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="费用出自项目的项目名称、编号及费用科目" prop="standCode" class="add-form-item form-item-disabled">
|
||||
<el-input
|
||||
v-model="ListForm.email"
|
||||
placeholder="请输入费用出自项目的项目名称、编号及费用科目"
|
||||
clearable
|
||||
></el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="demo-drawer-footer">
|
||||
<el-button size="mini" @click="closeDrawer">取消</el-button>
|
||||
<el-button type="primary" size="mini" @click="OkDrawer">确定</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
<ProcessFooter
|
||||
show-save
|
||||
show-submit
|
||||
:submitLoading="isSubmit"
|
||||
:saveLoading="saveLoading"
|
||||
@save="handleSave"
|
||||
@submit="handleSubmit"
|
||||
>
|
||||
</ProcessFooter>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ProcessHeader from '../../components/ProcessHeader'
|
||||
import ProcessFooter from '../../components/ProcessFooter'
|
||||
export default {
|
||||
name: "bzfyStep1",
|
||||
data () {
|
||||
return {
|
||||
textarea: '', // 意见
|
||||
title: '', // 新增编辑抽屉标题
|
||||
ListModel: false, // 新增编辑抽屉开关
|
||||
active: '1', // 默认显示
|
||||
isSubmit: false,
|
||||
saveLoading: false,
|
||||
form: {
|
||||
orgName: this.$store.getters.userInfo.orgName,
|
||||
orgId: this.$store.getters.userInfo.orgId,
|
||||
account: this.$store.getters.userInfo.account,
|
||||
userId: this.$store.getters.userInfo.userId,
|
||||
mobilePhone: this.$store.getters.userInfo.mobilePhone,
|
||||
email: this.$store.getters.userInfo.email
|
||||
}, // 基础信息
|
||||
data: [], // 标准列表数据
|
||||
ListForm: {}, // 新增数据
|
||||
user1: '',
|
||||
user2: '',
|
||||
user3: '',
|
||||
user4: '',
|
||||
user5: '',
|
||||
}
|
||||
},
|
||||
components: {
|
||||
ProcessHeader,
|
||||
ProcessFooter
|
||||
},
|
||||
methods: {
|
||||
closeDrawer() {
|
||||
this.ListModel = false
|
||||
},
|
||||
OkDrawer() {
|
||||
this.ListModel = false
|
||||
var item = {
|
||||
partCode: '123'
|
||||
}
|
||||
this.data.push(item)
|
||||
},
|
||||
addList() {
|
||||
this.title = '新增标准'
|
||||
this.ListModel = true
|
||||
},
|
||||
handleTabs(name) {
|
||||
this.active = name
|
||||
},
|
||||
handleSave() {},
|
||||
handleSubmit() {}
|
||||
},
|
||||
mounted () {}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@/assets/styles/style';
|
||||
.bzfyStep1 {
|
||||
/deep/.el-drawer__container {
|
||||
.prc-content-border {
|
||||
border: none;
|
||||
padding: 0 20px 0;
|
||||
}
|
||||
}
|
||||
position: relative;
|
||||
height: 100%;
|
||||
.headerTabs {
|
||||
height: 52px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 10px;
|
||||
.headerTabsItem {
|
||||
border: 1px solid #c1c1c1;
|
||||
padding: 0 5px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
cursor: pointer;
|
||||
}
|
||||
.active {
|
||||
border: 1px solid #E6A23C;
|
||||
color: #fff;
|
||||
background: #E6A23C;
|
||||
}
|
||||
}
|
||||
.content {
|
||||
height: calc(~'100% - 103px');
|
||||
overflow: auto;
|
||||
.contentTitle {
|
||||
height: 30px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #E6A23C;
|
||||
.titleIcon{
|
||||
background: #E6A23C;
|
||||
width: 3px;
|
||||
height: 14px;
|
||||
}
|
||||
.titleText{
|
||||
margin-left: 10px;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
.tableTitle {
|
||||
margin-bottom: 10px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
position: relative;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
.tableButton {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,332 +0,0 @@
|
||||
<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
@@ -1,222 +0,0 @@
|
||||
<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
@@ -1,859 +0,0 @@
|
||||
<!-- 标准采购申请流程 -->
|
||||
<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 class="common-button-default" icon="el-icon-close" @click="addCancel">取 消</el-button>
|
||||
<el-button 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.demo-dialog-footer {
|
||||
float: right;
|
||||
}
|
||||
.btn {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,369 +0,0 @@
|
||||
<!-- 标准采购申请流程--采购员审批 -->
|
||||
<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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,362 +0,0 @@
|
||||
<!-- 标准采购申请流程--采购员审批 -->
|
||||
<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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,360 +0,0 @@
|
||||
<!-- 标准采购申请流程--部门经理审批 -->
|
||||
<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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,997 +0,0 @@
|
||||
<!-- 标准采购申请流程 -->
|
||||
<template>
|
||||
<div class="step1-2">
|
||||
<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
|
||||
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>
|
||||
<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',
|
||||
}"
|
||||
@selection-change="handleSelectionChange"
|
||||
:height="tableHeight"
|
||||
>
|
||||
<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">
|
||||
<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)"
|
||||
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">
|
||||
<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"
|
||||
/>
|
||||
<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 class="common-button-default" icon="el-icon-close" @click="addCancel">取 消</el-button>
|
||||
<el-button 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" 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>
|
||||
<!-- 查询处理人-->
|
||||
<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 {bzcgDetail, saveCgSq, queryTaskFirst, saveTaskFirst} 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-2",
|
||||
mixins: [ProcessMixin],
|
||||
components: {
|
||||
ProcessInput,
|
||||
ProcessHeader,
|
||||
ProcessBaseInfo,
|
||||
ProcessFooter,
|
||||
ProcessChooseTree,
|
||||
ProcessApprovalHistory
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
productNo: ''
|
||||
},
|
||||
page: 1,
|
||||
total: 0,
|
||||
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" },
|
||||
]
|
||||
},
|
||||
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
|
||||
},
|
||||
// 选择项目代号
|
||||
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)
|
||||
})
|
||||
},
|
||||
// 请求数据
|
||||
getData () {
|
||||
queryTaskFirst({
|
||||
bpnId: this.$route.query.bpnId
|
||||
}).then(res => {
|
||||
const mes = JSON.parse(res.mes)
|
||||
// this.forms = mes.forms
|
||||
this.tableData = mes.tableData
|
||||
this.prcForm.prcDeadline = mes.prcForm.prcDeadline
|
||||
this.manageId = mes.manageId
|
||||
this.manageName = mes.manageName
|
||||
if (!this.manageId) {
|
||||
this.getGjjl()
|
||||
}
|
||||
})
|
||||
},
|
||||
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.saveLoading = true
|
||||
this.submitLoading = true
|
||||
let _formData = new FormData()
|
||||
_formData.append('id', this.$route.query.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
|
||||
}))
|
||||
saveTaskFirst(_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('请选择标准')
|
||||
}
|
||||
// if (this.tableData.length > 0) {
|
||||
// let _formData = new FormData()
|
||||
// _formData.append('taskIds', this.$store.getters.getHandleInfo.taskIds)
|
||||
// _formData.append('prcType', '15')
|
||||
// _formData.append('json', JSON.stringify({
|
||||
// prcForm: this.prcForm,
|
||||
// tableData: this.tableData,
|
||||
// forms: this.forms
|
||||
// }))
|
||||
// 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.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.dicTypeList = this.tableData
|
||||
json.opinion = this.feedback
|
||||
json.remarks = this.remarks
|
||||
json.bzcgyUserId = this.forms.PurchaserId
|
||||
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 => {
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
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)
|
||||
},
|
||||
},
|
||||
computed: {},
|
||||
watch: {},
|
||||
mounted() {
|
||||
this.$http.get('sys/role/getRoleAndUserByOrgId', {
|
||||
roleName: '标准法规采购员'
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
if (res.data.length) {
|
||||
this.forms.PurchaserId = res.data[0].userId
|
||||
this.forms.Purchaser = res.data[0].userName
|
||||
}
|
||||
})
|
||||
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-2 {
|
||||
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: auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.detail-table-conent {
|
||||
flex: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.demo-dialog-footer {
|
||||
float: right;
|
||||
}
|
||||
.dialog-input {
|
||||
/deep/ .el-input__inner {
|
||||
width: 360px;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -1,850 +0,0 @@
|
||||
<!-- 标准翻译申请流程 -->
|
||||
<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 class="common-button-default" icon="el-icon-close" @click="addCancel">取 消</el-button>
|
||||
<el-button 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.demo-dialog-footer {
|
||||
float: right;
|
||||
}
|
||||
.dialog-input {
|
||||
/deep/ .el-input__inner {
|
||||
width: 360px;
|
||||
}
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -1,985 +0,0 @@
|
||||
<!-- 标准翻译申请流程 -->
|
||||
<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 class="common-button-default" icon="el-icon-close" @click="addCancel">取 消</el-button>
|
||||
<el-button 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.demo-dialog-footer {
|
||||
float: right;
|
||||
}
|
||||
.btn {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
@@ -1,369 +0,0 @@
|
||||
<!-- 标准翻译申请流程--采购员审批 -->
|
||||
<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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,363 +0,0 @@
|
||||
<!-- 标准翻译申请流程--内部领导审批 -->
|
||||
<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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
@@ -1,362 +0,0 @@
|
||||
<!-- 标准翻译申请流程--部门经理审批 -->
|
||||
<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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,889 +0,0 @@
|
||||
<!-- 会签人审核清单节点 -->
|
||||
<!-- 海外法规清单确认流程 -->
|
||||
<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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.skip {
|
||||
margin: 10px;
|
||||
}
|
||||
.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
@@ -1,817 +0,0 @@
|
||||
<!--会后管理流程 - 第一步-->
|
||||
<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 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>
|
||||
@@ -1,538 +0,0 @@
|
||||
<!--会后管理流程 - 第二步-->
|
||||
<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>
|
||||
@@ -1,652 +0,0 @@
|
||||
<!--会前申请流程 第一步-->
|
||||
<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>
|
||||
@@ -1,502 +0,0 @@
|
||||
<!--会前申请流程 第二步-->
|
||||
<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>
|
||||
@@ -1,566 +0,0 @@
|
||||
<!--会前申请流程 参会人再次申请-->
|
||||
<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>
|
||||
@@ -1,103 +0,0 @@
|
||||
<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>
|
||||
@@ -1,89 +0,0 @@
|
||||
<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>
|
||||
@@ -1,111 +0,0 @@
|
||||
<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>
|
||||
@@ -1,110 +0,0 @@
|
||||
<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>
|
||||
@@ -1,121 +0,0 @@
|
||||
<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
@@ -1,951 +0,0 @@
|
||||
<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 class="common-button-primary" icon="el-icon-check" type="primary" @click="submitProcess" :loading="isSubmit">提交</el-button>
|
||||
<!--<el-button 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 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 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
@@ -1,647 +0,0 @@
|
||||
<!--企标备案流程 - 第二步-->
|
||||
<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 class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button 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>
|
||||
@@ -1,741 +0,0 @@
|
||||
<!--企标备案流程 - 第三步-->
|
||||
<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"
|
||||
size="mini"
|
||||
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 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
@@ -1,686 +0,0 @@
|
||||
<!--企标备案流程 - 第五步-->
|
||||
<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 class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button 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>
|
||||
@@ -1,685 +0,0 @@
|
||||
<!--企标备案流程 - 第六步-->
|
||||
<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 class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button 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>
|
||||
@@ -1,756 +0,0 @@
|
||||
<!--企标备案流程 - 第六步-->
|
||||
<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 class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button 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>
|
||||
@@ -1,858 +0,0 @@
|
||||
<!--企标备案流程 - 流程重新发起-->
|
||||
<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"
|
||||
size="mini"
|
||||
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 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 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>
|
||||
@@ -1,359 +0,0 @@
|
||||
<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>
|
||||
@@ -1,561 +0,0 @@
|
||||
<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 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>
|
||||
@@ -1,556 +0,0 @@
|
||||
<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
@@ -1,573 +0,0 @@
|
||||
<!-- 企标废止流程-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;
|
||||
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>
|
||||
@@ -1,567 +0,0 @@
|
||||
<!-- 企标废止流程-高级经理审批 -->
|
||||
<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;
|
||||
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>
|
||||
@@ -1,487 +0,0 @@
|
||||
<!-- 企标废止流程-部门总监审批(作废,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;
|
||||
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>
|
||||
@@ -1,543 +0,0 @@
|
||||
<!-- 企标废止流程-企标工程师审批 -->
|
||||
<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;
|
||||
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>
|
||||
@@ -1,489 +0,0 @@
|
||||
<!-- 企标废止流程-汇总 -->
|
||||
<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;
|
||||
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
@@ -1,728 +0,0 @@
|
||||
<!--企标勘误流程 - 第二步-->
|
||||
<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"
|
||||
@click="addModal"
|
||||
><i class="iconfont"></i>新增</el-button>
|
||||
<el-button
|
||||
class="common-button-default delete-button"
|
||||
@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 class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button 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>
|
||||
@@ -1,778 +0,0 @@
|
||||
<!--企标勘误流程 - 第三步-->
|
||||
<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"
|
||||
@click="addModal"
|
||||
><i class="iconfont"></i>新增</el-button>
|
||||
<el-button
|
||||
class="common-button-default delete-button"
|
||||
@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 class="common-button-primary" icon="el-icon-check" type="primary" @click="opinionFormOk">确定</el-button>
|
||||
<el-button 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
@@ -1,585 +0,0 @@
|
||||
<!--企标延期制修订审批流程 - 第一步-->
|
||||
<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>
|
||||
@@ -1,436 +0,0 @@
|
||||
<!--企标延期制修订审批流程 - 第二步-->
|
||||
<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>
|
||||
@@ -1,433 +0,0 @@
|
||||
<!--企标延期制修订审批流程 - 第三步 废除部门总监审批步骤-->
|
||||
<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>
|
||||
@@ -1,483 +0,0 @@
|
||||
<!--企标延期制修订审批流程 - 主起草人重新申请-->
|
||||
<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>
|
||||
@@ -1,172 +0,0 @@
|
||||
<!--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
@@ -1,975 +0,0 @@
|
||||
<!-- 企标制修定流程-联络人转发 -->
|
||||
<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
@@ -1,981 +0,0 @@
|
||||
<!-- 企标修定流程-其它部门审批人会签 -->
|
||||
<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>
|
||||
@@ -1,999 +0,0 @@
|
||||
<!-- 企标修定流程-高级经理审批 -->
|
||||
<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>
|
||||
@@ -1,916 +0,0 @@
|
||||
<!-- 企标修定流程-企标工程师审核 -->
|
||||
<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>
|
||||
@@ -1,436 +0,0 @@
|
||||
<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>
|
||||
@@ -1,469 +0,0 @@
|
||||
<!--企标制修订评估流程 第二步-->
|
||||
<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
@@ -1,635 +0,0 @@
|
||||
<!--企标制修订审批流程 - 第四步-->
|
||||
<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
@@ -1,749 +0,0 @@
|
||||
<!--企标制修订申请流程 - 第二步-->
|
||||
<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;
|
||||
background: #fefefe;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,695 +0,0 @@
|
||||
<!--企标制修订申请流程 - 第三步-->
|
||||
<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;
|
||||
background: #fefefe;
|
||||
}
|
||||
}
|
||||
.process-footer{
|
||||
position: static;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,160 +0,0 @@
|
||||
<!--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>
|
||||
@@ -1,689 +0,0 @@
|
||||
<!-- 入库基础信息详情 -->
|
||||
<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>
|
||||
@@ -1,105 +0,0 @@
|
||||
<!-- 退回意见 -->
|
||||
<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 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>
|
||||
@@ -1,76 +0,0 @@
|
||||
import { getStandInfoById } from 'api/process'
|
||||
export const rukuMixins = {
|
||||
data() {
|
||||
return {
|
||||
prcFileList: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* @description: 获取展示的文件
|
||||
* @author: chenxiaoxi
|
||||
* @time: 2021-03-30 17:03:36
|
||||
*/
|
||||
getShowFileList(fileAttId) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let paramefile = fileAttId
|
||||
if (paramefile.charAt(paramefile.length - 1) === ',') {
|
||||
paramefile = paramefile.substring(0, paramefile.length - 1)
|
||||
}
|
||||
this.$http.get('att/attFile/getMultiFileInfos', {
|
||||
fileIds: paramefile
|
||||
}, {
|
||||
_this: this
|
||||
}, res => {
|
||||
const fileList = res.data, showFileList = []
|
||||
if (fileList && fileList.length) {
|
||||
fileList.map(file => {
|
||||
let obj = {name: '', response: {}}
|
||||
obj.name = file.oldFileName
|
||||
obj.response.data = file
|
||||
showFileList.push(obj)
|
||||
})
|
||||
}
|
||||
this.prcFileList = showFileList
|
||||
resolve()
|
||||
}, e => {
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 文件下载
|
||||
* @author: chenxiaoxi
|
||||
* @time: 2021-04-08 16:29:20
|
||||
*/
|
||||
handleDownloadFile(file) {
|
||||
const attId = file.response ? file.response.data.id : file.id
|
||||
if (attId) {
|
||||
window.location.href = '/api/att/attFile/downloadFileForSar?fileId=' + attId
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @description: 查询标准详情
|
||||
* @author: chenxiaoxi
|
||||
* @time: 2021-04-14 15:31:51
|
||||
*/
|
||||
getStandInfoById(standId, textStatus) {
|
||||
const fileType = {
|
||||
'草案': 'CA',
|
||||
'征求意见稿': 'ZQYJG',
|
||||
'送审稿': 'SSG',
|
||||
'报批稿': 'BPG',
|
||||
'发布稿(必读)': 'FBGBJBD'
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
getStandInfoById({
|
||||
id: standId
|
||||
}).then(res => {
|
||||
const file = res.data.attrInfoMap
|
||||
this.prcFileList.push(...file[fileType[textStatus]])
|
||||
}).catch(e => {})
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,344 +0,0 @@
|
||||
<!--评估 组件-->
|
||||
<template>
|
||||
<div class="assessment">
|
||||
<div class="result-feedback">
|
||||
<div style="margin-top: 15px;">
|
||||
<label>反馈意见:</label>
|
||||
<Input v-model="feedback" placeholder="请填写反馈意见" style="display: inline-block;width: 500px;" />
|
||||
</div>
|
||||
</div>
|
||||
<!--符合理由-->
|
||||
<div class="Accord-with-reason" v-if="isAccordWithReason">
|
||||
<div>
|
||||
<label style="vertical-align: middle;">符合理由:</label>
|
||||
<RadioGroup v-model="AccordWithReason" style="display: inline-block;" @on-change="AccrodWithReasonChange">
|
||||
<Radio label="企标已覆盖"></Radio>
|
||||
<Radio label="国标覆盖"></Radio>
|
||||
<Radio label="产品已满足"></Radio>
|
||||
<Radio label="技术储备充足"></Radio>
|
||||
</RadioGroup>
|
||||
</div>
|
||||
<!--企标号-->
|
||||
<div class="enterprise-label" v-if="isEnterpriseLabel">
|
||||
<label>企标号:</label>
|
||||
<Input v-model="EnterpriseLabel" placeholder="请输入企标号" style="display: inline-block;width: 500px;" />
|
||||
</div>
|
||||
<!--国标号-->
|
||||
<div class="GB-number" v-if="isGBNumber">
|
||||
<label>国标号:</label>
|
||||
<Input v-model="GBNumbe" placeholder="请输入国标号" style="display: inline-block;width: 500px;" />
|
||||
</div>
|
||||
<!--描述产品现状-->
|
||||
<div class="Product-status" v-if="isProductStatus">
|
||||
<label>产品现状:</label>
|
||||
<Input v-model="ProductStatus" placeholder="描述产品现状" style="display: inline-block;width: 500px;" />
|
||||
</div>
|
||||
<!--证明材料-->
|
||||
<div class="Proof-material" v-if="isProofMaterial">
|
||||
<label>说明原因:</label>
|
||||
<Input v-model="ExplainWhy" placeholder="请输入说明原因" style="display: inline-block;width: 500px;" /><br/><br/>
|
||||
<label>上传证明材料:</label>
|
||||
<Button icon="ios-cloud-upload-outline" @click="uploadFileProofMaterial(1)">点击上传</Button>
|
||||
</div>
|
||||
<!--佐证材料-->
|
||||
<div class="Proof-material">
|
||||
<label>上传佐证材料:</label>
|
||||
<Button icon="ios-cloud-upload-outline" @click="uploadFileProofMaterial(1)">点击上传</Button>
|
||||
</div>
|
||||
</div>
|
||||
<!--不符合 内容-->
|
||||
<div class="Non-conformity" v-if="isNonConformity">
|
||||
<div style="text-align: right;margin: 15px 0;">
|
||||
<Button type="primary" @click="addnonTableData">新增行</Button>
|
||||
</div>
|
||||
<Table border
|
||||
:columns="nonTableColumns"
|
||||
:data="nonTableData"
|
||||
class="standard-revision-table"
|
||||
></Table>
|
||||
</div>
|
||||
<!-- 待验证 内容-->
|
||||
<div class="To-be-verified" v-if="isToBeVerified">
|
||||
<div style="text-align: right;margin: 15px 0;">
|
||||
<Button type="primary" @click="addToBeTableData">新增</Button>
|
||||
</div>
|
||||
<Table border
|
||||
:columns="ToBeTableColumns"
|
||||
:data="ToBeTableData"
|
||||
class="standard-revision-table"
|
||||
></Table>
|
||||
</div>
|
||||
<!-- 上传文件 -->
|
||||
<Modal v-model="importModalshowflag" title="上传文件" :footer-hide="true" @on-visible-change="modalClose">
|
||||
<Upload
|
||||
multiple
|
||||
type="drag"
|
||||
action="api/att/attFile/upload"
|
||||
ref="userUpload"
|
||||
:on-success="handleSuccess"
|
||||
:max-size=308000
|
||||
:on-remove="(file, fileList) => handleFileRemove(file, fileList)"
|
||||
show-upload-list>
|
||||
<div style="padding: 20px 0">
|
||||
<Icon type="ios-cloud-upload" size="52" style="color: #3399ff"></Icon>
|
||||
<p>请选择您要上传的文件</p>
|
||||
</div>
|
||||
</Upload>
|
||||
</Modal>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
feedback: {
|
||||
type: String
|
||||
},
|
||||
state: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
AccordWithReason: '', // 符合理由
|
||||
isAccordWithReason: false, // 符合理由 显示隐藏 结果反馈 符合:true 不符合:false 待验证:false
|
||||
EnterpriseLabel: '', // 企标号
|
||||
GBNumbe: '', // 国标号
|
||||
ProductStatus: '', // 产品现状
|
||||
ExplainWhy: '', // 说明原因
|
||||
isEnterpriseLabel: false, // 企标号 显示隐藏
|
||||
isGBNumber: false, // 国标号 显示隐藏
|
||||
isProductStatus: false, // 描述产品现状 显示隐藏
|
||||
isProofMaterial: false, // 上传证明材料显示隐藏
|
||||
importModalshowflag: false, // 上传文件Modal 显示隐藏
|
||||
isNonConformity: false, // 不符合 内容 显示隐藏
|
||||
isToBeVerified: false, // 待验证 内容 显示隐藏
|
||||
// 不符合内容table表头
|
||||
nonTableColumns: [
|
||||
{
|
||||
title: '条款号',
|
||||
key: 'resNum',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '不符合内容',
|
||||
key: 'nonContent',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '我司现状',
|
||||
key: 'PresentSituation',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '更改方案',
|
||||
key: 'ChangePlan',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '预估更改周期',
|
||||
key: 'ChangeCycle',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '预估成本',
|
||||
key: 'EstimatedCost',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
}
|
||||
],
|
||||
// 不符合内容table表内容
|
||||
nonTableData: [
|
||||
{
|
||||
resNum: '',
|
||||
nonContent: '',
|
||||
PresentSituation: '',
|
||||
ChangePlan: '',
|
||||
ChangeCycle: '',
|
||||
EstimatedCost: ''
|
||||
}
|
||||
],
|
||||
// 待验证table表头
|
||||
ToBeTableColumns: [
|
||||
{
|
||||
title: '条款号',
|
||||
key: 'resNum',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '风险点',
|
||||
key: 'RiskPoint',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '验证方案',
|
||||
key: 'VerificationScheme',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '周期',
|
||||
key: 'cycle',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '成本',
|
||||
key: 'cost',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('Input', {})
|
||||
}
|
||||
}
|
||||
],
|
||||
// 待验证table表内容
|
||||
ToBeTableData: [
|
||||
{
|
||||
resNum: '',
|
||||
RiskPoint: '',
|
||||
VerificationScheme: '',
|
||||
cycle: '',
|
||||
cost: ''
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
modalClose (flag) {
|
||||
if (!flag) {
|
||||
this.$refs.userUpload.clearFiles()
|
||||
}
|
||||
},
|
||||
// 结果反馈 change事件
|
||||
agree (val) {
|
||||
switch (val) {
|
||||
case '0':
|
||||
this.isAccordWithReason = false
|
||||
this.isNonConformity = true
|
||||
this.isToBeVerified = false
|
||||
break
|
||||
case '1':
|
||||
this.isAccordWithReason = true
|
||||
this.isNonConformity = false
|
||||
this.isToBeVerified = false
|
||||
break
|
||||
case '2':
|
||||
this.isAccordWithReason = false
|
||||
this.isNonConformity = false
|
||||
this.isToBeVerified = true
|
||||
break
|
||||
}
|
||||
},
|
||||
// 符合理由 change事件
|
||||
AccrodWithReasonChange (data) {
|
||||
this.isEnterpriseLabel = data === '企标已覆盖' ? 'true' : false
|
||||
this.isGBNumber = data === '国标覆盖' ? 'true' : false
|
||||
this.isProductStatus = data === '产品已满足' ? 'true' : false
|
||||
this.isProofMaterial = data === '技术储备充足' ? 'true' : false
|
||||
},
|
||||
// 点击上传证明材料
|
||||
uploadFileProofMaterial () {
|
||||
this.importModalshowflag = true
|
||||
},
|
||||
// 上传文件
|
||||
handleSuccess (response, file, fileList) {
|
||||
if (response.data === null) {
|
||||
this.$Message.error('添加失败!')
|
||||
this.$refs['userUpload'].clearFiles()
|
||||
} else {
|
||||
this.$Message.success('上传文件成功!')
|
||||
this.importModalshowflag = false
|
||||
}
|
||||
},
|
||||
// 上传文件 移除
|
||||
handleFileRemove (file, fileList, type) {
|
||||
this.fileList.map((item, index) => {
|
||||
if (file.id || file.response.data.attId === item.id) {
|
||||
this.fileList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
},
|
||||
// 增加不符合table行
|
||||
addnonTableData () {
|
||||
this.nonTableData.push({
|
||||
resNum: '',
|
||||
nonContent: '',
|
||||
PresentSituation: '',
|
||||
ChangePlan: '',
|
||||
ChangeCycle: '',
|
||||
EstimatedCost: ''
|
||||
})
|
||||
},
|
||||
// 增加待验证table行
|
||||
addToBeTableData () {
|
||||
this.ToBeTableData.push({
|
||||
resNum: '',
|
||||
RiskPoint: '',
|
||||
VerificationScheme: '',
|
||||
cycle: '',
|
||||
cost: ''
|
||||
})
|
||||
},
|
||||
// 判断 符合/不符合/待验证 状态
|
||||
AssessmentState (state) {
|
||||
switch (state) {
|
||||
case '0':
|
||||
this.isNonConformity = true
|
||||
break
|
||||
case '1':
|
||||
this.isAccordWithReason = true
|
||||
break
|
||||
case '2':
|
||||
this.isToBeVerified = true
|
||||
break
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
state (newValue, oldValue) {
|
||||
this.agree(newValue)
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="less">
|
||||
.assessment{
|
||||
margin-top: 15px;
|
||||
& > div{
|
||||
margin-top: 15px;
|
||||
}
|
||||
.Accord-with-reason{
|
||||
& > div{
|
||||
margin-top: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 127 KiB |
@@ -1,116 +0,0 @@
|
||||
<comment>
|
||||
# 组件注释
|
||||
</comment>
|
||||
<template>
|
||||
<div class="typ3-1">
|
||||
<div class="text-list">
|
||||
<div class="list-top">任务分发</div>
|
||||
<Table class="type1Table" border :columns="distributeColumns" :data="distributeData" no-data-text="请先带入拆分结果" @on-selection-change="distributeChange"></Table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import state1 from '../type12Assembly/state1Expand'
|
||||
export default {
|
||||
name: 'typ3-1',
|
||||
components: {
|
||||
state1
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
distributeColumns: [
|
||||
{
|
||||
type: 'expand',
|
||||
width: 50,
|
||||
render: (h, params) => {
|
||||
return h(state1, {
|
||||
props: {
|
||||
row: params.row
|
||||
},
|
||||
on: {
|
||||
departmentFocus: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('departmentFocus', val)
|
||||
})
|
||||
},
|
||||
liaisonFocus: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('liaisonFocus', val)
|
||||
})
|
||||
},
|
||||
projectManagerFocus: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('projectManagerFocus', val)
|
||||
})
|
||||
},
|
||||
foFocus: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('foFocus', val)
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'selection',
|
||||
align: 'center',
|
||||
width: 50
|
||||
},
|
||||
{
|
||||
title: '标准号/条目号',
|
||||
key: 'resNum',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '标准名称/条目名称',
|
||||
key: 'resName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '责任部门',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: 'VSE',
|
||||
align: 'center'
|
||||
}
|
||||
],
|
||||
distributeData: [],
|
||||
distributeRow: []
|
||||
}
|
||||
},
|
||||
props: {
|
||||
distribute: {
|
||||
type: Array
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
distribute: {
|
||||
deep: true,
|
||||
handler (newVal, oldVal) {
|
||||
this.distributeData = newVal
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* @description: 分发任务
|
||||
* @author: liruohao
|
||||
* @date: 2019-08-28 09:35:42
|
||||
*/
|
||||
distributeChange (selection) {
|
||||
this.distributeRow = selection
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
mounted () {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.typ3-1 {
|
||||
}
|
||||
</style>
|
||||
@@ -1,140 +0,0 @@
|
||||
<comment>
|
||||
# 组件注释
|
||||
</comment>
|
||||
<template>
|
||||
<div class="typ3-2">
|
||||
<div class="text-list">
|
||||
<div class="list-top">任务分发</div>
|
||||
<Tabs value="name1" @on-click="tabClick">
|
||||
<TabPane label="M1车型" name="name1">
|
||||
<Table border :columns="distributeColumns" :data="distributeData1" :height="250"></Table>
|
||||
</TabPane>
|
||||
<TabPane label="M2车型" name="name2">
|
||||
<Table border :columns="distributeColumns" :data="distributeData2" :height="250"></Table>
|
||||
</TabPane>
|
||||
<TabPane label="M3车型" name="name3">
|
||||
<Table border :columns="distributeColumns" :data="distributeData3" :height="250"></Table>
|
||||
</TabPane>
|
||||
</Tabs>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import state2 from '../type12Assembly/state2Expand'
|
||||
export default {
|
||||
name: 'typ3-2',
|
||||
components: {
|
||||
state2
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
active: 'name1',
|
||||
distributeColumns: [
|
||||
{
|
||||
type: 'expand',
|
||||
width: 50,
|
||||
render: (h, params) => {
|
||||
return h(state2, {
|
||||
props: {
|
||||
row: params.row
|
||||
},
|
||||
on: {
|
||||
DREFocus: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('DREFocus', val)
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '标准号/条目号',
|
||||
key: 'resNum',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '标准名称/条目名称',
|
||||
key: 'resName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: 'DRE',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
if (params.row.itemsList === null || params.row.itemsList.length === 0) {
|
||||
return h('div', [
|
||||
h('Input', {
|
||||
style: {
|
||||
width: '8vw'
|
||||
},
|
||||
attrs: {
|
||||
title: params.row.DREName
|
||||
},
|
||||
nativeOn: {
|
||||
click: () => {
|
||||
}
|
||||
},
|
||||
props: {
|
||||
value: params.row.DREName,
|
||||
readonly: true
|
||||
}
|
||||
})
|
||||
])
|
||||
} else {
|
||||
return h('div')
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
distributeData1: [],
|
||||
distributeData2: [],
|
||||
distributeData3: []
|
||||
}
|
||||
},
|
||||
props: {
|
||||
distribute: {
|
||||
type: Array
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
distribute: {
|
||||
deep: true,
|
||||
handler (newVal, oldVal) {
|
||||
let array1 = JSON.parse(JSON.stringify(newVal))
|
||||
let array2 = JSON.parse(JSON.stringify(newVal))
|
||||
let array3 = JSON.parse(JSON.stringify(newVal))
|
||||
this.distributeData1 = array1
|
||||
this.distributeData2 = array2
|
||||
this.distributeData3 = array3
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
tabClick (val) {
|
||||
this.active = val
|
||||
},
|
||||
treeClick (name, id, index) {
|
||||
if (this.active === 'name1') {
|
||||
this.distribute[0].itemsList[index].DREName = name
|
||||
this.distribute[0].itemsList[index].DREId = id
|
||||
} else if (this.active === 'name2') {
|
||||
this.distribute[0].itemsList[index].DREName = name
|
||||
this.distribute[0].itemsList[index].DREId = id
|
||||
} else if (this.active === 'name3') {
|
||||
this.distribute[0].itemsList[index].DREName = name
|
||||
this.distribute[0].itemsList[index].DREId = id
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {},
|
||||
mounted () {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.typ3-2 {
|
||||
}
|
||||
</style>
|
||||
@@ -1,107 +0,0 @@
|
||||
<comment>
|
||||
# 流程三第san步
|
||||
</comment>
|
||||
<template>
|
||||
<div class="type12-3">
|
||||
<div class="text-list">
|
||||
<div class="list-top">M1车型</div>
|
||||
<Table border :columns="distributeColumns" :data="distributeData"></Table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import assessment from './Assessment'
|
||||
import state3 from '../type12Assembly/state3Expand'
|
||||
export default {
|
||||
name: 'type12-3',
|
||||
components: {
|
||||
state3,
|
||||
assessment
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
distributeColumns: [
|
||||
{
|
||||
type: 'expand',
|
||||
width: 50,
|
||||
render: (h, params) => {
|
||||
return h(state3, {
|
||||
props: {
|
||||
row: params.row
|
||||
},
|
||||
on: {
|
||||
showDetail: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('showDetail', val)
|
||||
})
|
||||
},
|
||||
uploadFile: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('uploadFile', val)
|
||||
})
|
||||
},
|
||||
feedbackFocus: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('feedbackFocus', val)
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '标准号/条目号',
|
||||
key: 'resNum',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '标准名称/条目名称',
|
||||
key: 'resName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '标准内容/条目内容',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
key: 'resResult',
|
||||
title: '结果反馈',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '反馈意见',
|
||||
align: 'center',
|
||||
key: 'feedback'
|
||||
}
|
||||
],
|
||||
distributeData: []
|
||||
}
|
||||
},
|
||||
props: {
|
||||
distribute: {
|
||||
type: Array
|
||||
},
|
||||
processForm: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
distribute: {
|
||||
deep: true,
|
||||
handler (newVal, oldVal) {
|
||||
this.distributeData = newVal
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {},
|
||||
computed: {},
|
||||
mounted () {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.type12-3 {
|
||||
}
|
||||
</style>
|
||||
@@ -1,104 +0,0 @@
|
||||
<comment>
|
||||
# 流程三第si步
|
||||
</comment>
|
||||
<template>
|
||||
<div class="type12-4">
|
||||
<div class="text-list">
|
||||
<div class="list-top">M1车型</div>
|
||||
<Table border :columns="distributeColumns" :data="distributeData"></Table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import state4 from '../type12Assembly/state4Expand'
|
||||
export default {
|
||||
name: 'type12-4',
|
||||
components: {
|
||||
state4
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
distributeColumns: [
|
||||
{
|
||||
type: 'expand',
|
||||
width: 50,
|
||||
render: (h, params) => {
|
||||
return h(state4, {
|
||||
props: {
|
||||
row: params.row
|
||||
},
|
||||
on: {
|
||||
showDetail: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('showDetail', val)
|
||||
})
|
||||
},
|
||||
showData: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('showData', val)
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '标准号',
|
||||
key: 'resNum',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
key: 'resName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '标准内容/条目内容',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: 'DRE',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '责任部门',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '结果反馈',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
width: 200
|
||||
}
|
||||
],
|
||||
distributeData: []
|
||||
}
|
||||
},
|
||||
props: {
|
||||
distribute: {
|
||||
type: Array
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
distribute: {
|
||||
deep: true,
|
||||
handler (newVal, oldVal) {
|
||||
this.distributeData = newVal
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {},
|
||||
computed: {},
|
||||
mounted () {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.type12-4 {
|
||||
}
|
||||
</style>
|
||||
@@ -1,857 +0,0 @@
|
||||
<comment>
|
||||
# 流程三第si步
|
||||
</comment>
|
||||
<template>
|
||||
<div class="type12-5">
|
||||
<div class="text-list">
|
||||
<div class="list-top">M1车型</div>
|
||||
<Table border :columns="distributeColumns" :data="distributeData"></Table>
|
||||
</div>
|
||||
<div class="text-list">
|
||||
<div class="list-top">M2车型</div>
|
||||
<Table border :columns="distributeColumns" :data="distributeData"></Table>
|
||||
</div>
|
||||
<div class="text-list">
|
||||
<div class="list-top">M3车型</div>
|
||||
<Table border :columns="distributeColumns" :data="distributeData"></Table>
|
||||
</div>
|
||||
<div class="state-4" v-if="state === 5">
|
||||
<div style="width: 150px;height: 40px;line-height: 40px;font-size: 15px; text-align: left;">符合项</div>
|
||||
<Table border :columns="fullPicture" :data="fullPictureList"></Table>
|
||||
<div style="width: 150px;height: 40px;line-height: 40px;font-size: 15px; text-align: left;">不符合项</div>
|
||||
<Table border :columns="nonConfomity" :data="nonConformityList"></Table>
|
||||
<div style="width: 150px;height: 40px;line-height: 40px;font-size: 15px; text-align: left;">待验证项</div>
|
||||
<Table border :columns="verification" :data="verificationList"></Table>
|
||||
</div>
|
||||
<div class="state-4" v-else>
|
||||
<div style="width: 150px;height: 40px;line-height: 40px;font-size: 15px; text-align: left;">符合项</div>
|
||||
<Table border :columns="fullPicture1" :data="fullPictureList1"></Table>
|
||||
<div style="width: 150px;height: 40px;line-height: 40px;font-size: 15px; text-align: left;">不符合项</div>
|
||||
<Table border :columns="nonConformity1" :data="nonConformityList1"></Table>
|
||||
<div style="width: 150px;height: 40px;line-height: 40px;font-size: 15px; text-align: left;">待验证项</div>
|
||||
<Table border :columns="verification1" :data="verificationList1"></Table>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import state4 from '../type12Assembly/state4Expand'
|
||||
export default {
|
||||
name: 'type12-5',
|
||||
components: {
|
||||
state4
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
verification: [
|
||||
{
|
||||
title: '序号',
|
||||
type: 'index',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
key: 'resNum',
|
||||
align: 'center',
|
||||
title: '标准号'
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
align: 'center',
|
||||
key: 'resName'
|
||||
},
|
||||
{
|
||||
key: 'showNumber',
|
||||
align: 'center',
|
||||
title: '条款号'
|
||||
},
|
||||
{
|
||||
key: 'people',
|
||||
align: 'center',
|
||||
title: '填写人'
|
||||
},
|
||||
{
|
||||
key: 'risk',
|
||||
align: 'center',
|
||||
title: '风险点'
|
||||
},
|
||||
{
|
||||
key: 'programme',
|
||||
align: 'center',
|
||||
title: '验证方案'
|
||||
},
|
||||
{
|
||||
key: 'cycle',
|
||||
align: 'center',
|
||||
title: '周期'
|
||||
},
|
||||
{
|
||||
key: 'cost',
|
||||
align: 'center',
|
||||
title: '成本'
|
||||
},
|
||||
{
|
||||
key: 'content',
|
||||
title: '查看条款内容',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
on: {
|
||||
click: () => {
|
||||
this.detailMoadlTitle = '查看标准内容/条目内容'
|
||||
this.$emit('showDetail', 'show')
|
||||
}
|
||||
}
|
||||
}, '查看')
|
||||
])
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '审批意见',
|
||||
key: 'details',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
on: {
|
||||
click: () => {
|
||||
this.$emit('openAgree')
|
||||
}
|
||||
}
|
||||
}, '点击填写')
|
||||
])
|
||||
}
|
||||
}
|
||||
],
|
||||
verificationList: [
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'EQ',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}, {
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'FO',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}, {
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'VSE',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}, {
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'DRE',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}, {
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: '起草人',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}
|
||||
],
|
||||
nonConfomity: [
|
||||
{
|
||||
title: '序号',
|
||||
type: 'index',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
key: 'resNum',
|
||||
align: 'center',
|
||||
title: '标准号'
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
align: 'center',
|
||||
key: 'resName'
|
||||
},
|
||||
{
|
||||
key: 'showNumber',
|
||||
align: 'center',
|
||||
title: '条款号'
|
||||
},
|
||||
{
|
||||
key: 'people',
|
||||
align: 'center',
|
||||
title: '填写人'
|
||||
},
|
||||
{
|
||||
key: 'noContent',
|
||||
align: 'center',
|
||||
title: '不符合内容'
|
||||
},
|
||||
{
|
||||
key: 'situation',
|
||||
align: 'center',
|
||||
title: '我司现状'
|
||||
},
|
||||
{
|
||||
key: 'programme',
|
||||
align: 'center',
|
||||
title: '更改方案'
|
||||
},
|
||||
{
|
||||
key: 'cycle',
|
||||
align: 'center',
|
||||
title: '预估更改周期'
|
||||
},
|
||||
{
|
||||
key: 'cost',
|
||||
align: 'center',
|
||||
title: '预估成本'
|
||||
},
|
||||
{
|
||||
key: 'content',
|
||||
title: '查看条款内容',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
on: {
|
||||
click: () => {
|
||||
this.detailMoadlTitle = '查看标准内容/条目内容'
|
||||
this.$emit('showDetail', 'show')
|
||||
}
|
||||
}
|
||||
}, '查看')
|
||||
])
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '审批意见',
|
||||
key: 'details',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
on: {
|
||||
click: () => {
|
||||
this.$emit('openAgree')
|
||||
}
|
||||
}
|
||||
}, '点击填写')
|
||||
])
|
||||
}
|
||||
}
|
||||
],
|
||||
nonConformityList: [
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'EQ',
|
||||
resName: '国内-标准1',
|
||||
noContent: '不符合内容',
|
||||
situation: '非常好',
|
||||
programme: '更改方案',
|
||||
cycle: '2019-10-10',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
},
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'VSE',
|
||||
resName: '国内-标准1',
|
||||
noContent: '不符合内容',
|
||||
situation: '非常好',
|
||||
programme: '更改方案',
|
||||
cycle: '2019-10-10',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
},
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'DRE',
|
||||
resName: '国内-标准1',
|
||||
noContent: '不符合内容',
|
||||
situation: '非常好',
|
||||
programme: '更改方案',
|
||||
cycle: '2019-10-10',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}
|
||||
],
|
||||
fullPicture: [
|
||||
{
|
||||
title: '序号',
|
||||
type: 'index',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
key: 'resNum',
|
||||
align: 'center',
|
||||
title: '标准号'
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
align: 'center',
|
||||
key: 'resName'
|
||||
},
|
||||
{
|
||||
key: 'showNumber',
|
||||
align: 'center',
|
||||
title: '条款号'
|
||||
},
|
||||
{
|
||||
key: 'people',
|
||||
align: 'center',
|
||||
title: '填写人'
|
||||
},
|
||||
{
|
||||
key: 'showName',
|
||||
align: 'center',
|
||||
title: '条款名称'
|
||||
},
|
||||
{
|
||||
key: 'resResult',
|
||||
title: '符合理由',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '具体详情',
|
||||
key: 'details',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '佐证材料',
|
||||
key: 'details',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
}, '点击查看佐证材料')
|
||||
])
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'content',
|
||||
title: '查看条款内容',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
on: {
|
||||
click: () => {
|
||||
this.detailMoadlTitle = '查看标准内容/条目内容'
|
||||
this.$emit('showDetail', 'show')
|
||||
}
|
||||
}
|
||||
}, '查看')
|
||||
])
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '审批意见',
|
||||
key: 'details',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
on: {
|
||||
click: () => {
|
||||
this.$emit('openAgree')
|
||||
}
|
||||
}
|
||||
}, '点击填写')
|
||||
])
|
||||
}
|
||||
}
|
||||
|
||||
],
|
||||
fullPictureList: [
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'EQ',
|
||||
resName: '国内-标准1',
|
||||
showName: '轮胎****',
|
||||
resResult: '企标已覆盖',
|
||||
orgName: '上汽',
|
||||
details: '企标号:XTSADA256'
|
||||
},
|
||||
{
|
||||
showNumber: '1.2',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'VSE',
|
||||
resName: '国内-标准1',
|
||||
showName: '碰撞****',
|
||||
resResult: '国标覆盖',
|
||||
orgName: '上汽',
|
||||
details: '国标号:XTSADA256'
|
||||
},
|
||||
{
|
||||
showNumber: '1.3',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'DRE',
|
||||
resName: '国内-标准1',
|
||||
showName: '******',
|
||||
resResult: '产品已满足',
|
||||
orgName: '上汽',
|
||||
details: '产品现状:非常好'
|
||||
},
|
||||
{
|
||||
showNumber: '1.4',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'DRE',
|
||||
resName: '国内-标准1',
|
||||
showName: '******',
|
||||
resResult: '技术储备充足',
|
||||
orgName: '上汽',
|
||||
details: '说明原因:技术有所欠缺'
|
||||
|
||||
}
|
||||
],
|
||||
verification1: [
|
||||
{
|
||||
title: '序号',
|
||||
type: 'index',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
key: 'resNum',
|
||||
align: 'center',
|
||||
title: '标准号'
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
align: 'center',
|
||||
key: 'resName'
|
||||
},
|
||||
{
|
||||
key: 'showNumber',
|
||||
align: 'center',
|
||||
title: '条款号'
|
||||
},
|
||||
{
|
||||
key: 'people',
|
||||
align: 'center',
|
||||
title: '填写人'
|
||||
},
|
||||
{
|
||||
key: 'risk',
|
||||
align: 'center',
|
||||
title: '风险点'
|
||||
},
|
||||
{
|
||||
key: 'programme',
|
||||
align: 'center',
|
||||
title: '验证方案'
|
||||
},
|
||||
{
|
||||
key: 'cycle',
|
||||
align: 'center',
|
||||
title: '周期'
|
||||
},
|
||||
{
|
||||
key: 'cost',
|
||||
align: 'center',
|
||||
title: '成本'
|
||||
},
|
||||
{
|
||||
key: 'content',
|
||||
title: '查看条款内容',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
on: {
|
||||
click: () => {
|
||||
this.detailMoadlTitle = '查看标准内容/条目内容'
|
||||
this.$emit('showDetail', 'show')
|
||||
}
|
||||
}
|
||||
}, '查看')
|
||||
])
|
||||
}
|
||||
}
|
||||
],
|
||||
verificationList1: [
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'EQ',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}, {
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'FO',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}, {
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'VSE',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}, {
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'DRE',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}, {
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: '起草人',
|
||||
resName: '国内-标准1',
|
||||
risk: '无',
|
||||
programme: '更改方案',
|
||||
cycle: '两周',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}
|
||||
],
|
||||
nonConformity1: [
|
||||
{
|
||||
title: '序号',
|
||||
type: 'index',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
key: 'resNum',
|
||||
align: 'center',
|
||||
title: '标准号'
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
align: 'center',
|
||||
key: 'resName'
|
||||
},
|
||||
{
|
||||
key: 'showNumber',
|
||||
align: 'center',
|
||||
title: '条款号'
|
||||
},
|
||||
{
|
||||
key: 'people',
|
||||
align: 'center',
|
||||
title: '填写人'
|
||||
},
|
||||
{
|
||||
key: 'noContent',
|
||||
align: 'center',
|
||||
title: '不符合内容'
|
||||
},
|
||||
{
|
||||
key: 'situation',
|
||||
align: 'center',
|
||||
title: '我司现状'
|
||||
},
|
||||
{
|
||||
key: 'programme',
|
||||
align: 'center',
|
||||
title: '更改方案'
|
||||
},
|
||||
{
|
||||
key: 'cycle',
|
||||
align: 'center',
|
||||
title: '预估更改周期'
|
||||
},
|
||||
{
|
||||
key: 'cost',
|
||||
align: 'center',
|
||||
title: '预估成本'
|
||||
},
|
||||
{
|
||||
key: 'content',
|
||||
title: '查看条款内容',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
on: {
|
||||
click: () => {
|
||||
this.detailMoadlTitle = '查看标准内容/条目内容'
|
||||
this.$emit('showDetail', 'show')
|
||||
}
|
||||
}
|
||||
}, '查看')
|
||||
])
|
||||
}
|
||||
}
|
||||
],
|
||||
nonConformityList1: [
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'EQ',
|
||||
resName: '国内-标准1',
|
||||
noContent: '不符合内容',
|
||||
situation: '非常好',
|
||||
programme: '更改方案',
|
||||
cycle: '2019-10-10',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
},
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'VSE',
|
||||
resName: '国内-标准1',
|
||||
noContent: '不符合内容',
|
||||
situation: '非常好',
|
||||
programme: '更改方案',
|
||||
cycle: '2019-10-10',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
},
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'DRE',
|
||||
resName: '国内-标准1',
|
||||
noContent: '不符合内容',
|
||||
situation: '非常好',
|
||||
programme: '更改方案',
|
||||
cycle: '2019-10-10',
|
||||
cost: '80W',
|
||||
orgName: '上汽'
|
||||
}
|
||||
],
|
||||
fullPicture1: [
|
||||
{
|
||||
title: '序号',
|
||||
type: 'index',
|
||||
width: 60,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
key: 'resNum',
|
||||
align: 'center',
|
||||
title: '标准号'
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
align: 'center',
|
||||
key: 'resName'
|
||||
},
|
||||
{
|
||||
key: 'showNumber',
|
||||
align: 'center',
|
||||
title: '条款号'
|
||||
},
|
||||
{
|
||||
key: 'people',
|
||||
align: 'center',
|
||||
title: '填写人'
|
||||
},
|
||||
{
|
||||
key: 'showName',
|
||||
align: 'center',
|
||||
title: '条款名称'
|
||||
},
|
||||
{
|
||||
key: 'resResult',
|
||||
title: '符合理由',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '具体详情',
|
||||
key: 'details',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '佐证材料',
|
||||
key: 'details',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
}, '点击查看佐证材料')
|
||||
])
|
||||
}
|
||||
},
|
||||
{
|
||||
key: 'content',
|
||||
title: '查看条款内容',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
return h('div', [
|
||||
h('a', {
|
||||
on: {
|
||||
click: () => {
|
||||
this.detailMoadlTitle = '查看标准内容/条目内容'
|
||||
this.$emit('showDetail', 'show')
|
||||
}
|
||||
}
|
||||
}, '查看')
|
||||
])
|
||||
}
|
||||
}
|
||||
],
|
||||
fullPictureList1: [
|
||||
{
|
||||
showNumber: '1.1',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'EQ',
|
||||
resName: '国内-标准1',
|
||||
showName: '轮胎****',
|
||||
resResult: '企标已覆盖',
|
||||
orgName: '上汽',
|
||||
details: '企标号:XTSADA256'
|
||||
},
|
||||
{
|
||||
showNumber: '1.2',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'VSE',
|
||||
resName: '国内-标准1',
|
||||
showName: '碰撞****',
|
||||
resResult: '国标覆盖',
|
||||
orgName: '上汽',
|
||||
details: '国标号:XTSADA256'
|
||||
},
|
||||
{
|
||||
showNumber: '1.3',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'DRE',
|
||||
resName: '国内-标准1',
|
||||
showName: '******',
|
||||
resResult: '产品已满足',
|
||||
orgName: '上汽',
|
||||
details: '产品现状:非常好'
|
||||
},
|
||||
{
|
||||
showNumber: '1.4',
|
||||
resNum: 'GB CESHI1',
|
||||
people: 'DRE',
|
||||
resName: '国内-标准1',
|
||||
showName: '******',
|
||||
resResult: '技术储备充足',
|
||||
orgName: '上汽',
|
||||
details: '说明原因:技术有所欠缺'
|
||||
|
||||
}
|
||||
],
|
||||
distributeColumns: [
|
||||
{
|
||||
type: 'expand',
|
||||
width: 50,
|
||||
render: (h, params) => {
|
||||
return h(state4, {
|
||||
props: {
|
||||
row: params.row
|
||||
},
|
||||
on: {
|
||||
showDetail: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('showDetail', val)
|
||||
})
|
||||
},
|
||||
showData: (val) => {
|
||||
this.$nextTick(() => {
|
||||
this.$emit('showData', val)
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '标准号',
|
||||
key: 'resNum',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '标准名称',
|
||||
key: 'resName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '责任人',
|
||||
align: 'center',
|
||||
render: (h, params) => {
|
||||
if (params.row.itemsList === null || params.row.itemsList.length === 0) {
|
||||
return h('div', [
|
||||
h('div', {
|
||||
}, '测试人员')
|
||||
])
|
||||
} else {
|
||||
return h('div')
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title: '标准内容/条目内容',
|
||||
align: 'center'
|
||||
}
|
||||
],
|
||||
distributeData: []
|
||||
}
|
||||
},
|
||||
props: {
|
||||
distribute: {
|
||||
type: Array
|
||||
},
|
||||
state: {
|
||||
type: Number
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
distribute: {
|
||||
deep: true,
|
||||
handler (newVal, oldVal) {
|
||||
this.distributeData = newVal
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {},
|
||||
computed: {},
|
||||
mounted () {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.type12-5 {
|
||||
}
|
||||
</style>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user