Files
foton-laws-system-front/src/pages/processCenter/pages/creatProcess/qbzxdlx/step1.vue
T

1155 lines
40 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="qbzxdlxStep1">
<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>
<div class="content" v-show="active === '1'">
<div style="flex: auto; overflow: auto;">
<ProcessTitle>
<template slot="title">基础信息</template>
</ProcessTitle>
<el-form class="label-input-form prc-content-border" label-width="150px" ref="qblx_pageData" :model="qblx_pageData" :rules="qblxRule">
<el-form-item label="流程名称" prop="processName" class="add-form-item form-item-disabled">
<el-input :disabled="disabledXX"
style="width: 90%"
clearable
v-model="qblx_pageData.processName"
placeholder="请输入流程名称"/>
</el-form-item>
<el-form-item label="项目目标" class="add-form-item form-item-disabled">
<el-input :disabled="disabledXX"
style="width: 90%"
clearable
v-model="qblx_pageData.projectTarget"
placeholder="请输入项目目标"/>
</el-form-item>
<el-form-item label="附件" prop="fileName" class="add-form-item form-item-disabled">
<div>
<el-upload
:action="uploadFileListPath"
show-file-list
:file-list="fileInfoList"
name="file"
accept=".PDF, .pdf, .doc, .DOC, .docx, .DOCX, .xls, .xlsx, .ppt, .pptx, .PPT, .PPTX, .JPG, .JPEG, .PNG, .jpg, .jpeg, .png"
:on-remove="delFileInfo"
:on-success="uploadBackSuccess"
:before-upload="beforeUpload"
>
<el-button :disabled="disabledXX" class="common-button-default" size="mini">
点击上传
</el-button>
</el-upload>
</div>
</el-form-item>
</el-form>
<process-title style="margin-top:5px; margin-bottom: 5px">
<template slot="title">填写信息</template>
</process-title>
<div class="tableTitle">
<div class="tableButton">
<el-button :disabled="disabledXX" type="primary" size="small" @click="addQblx('add','企标制修订立项计划')">新增</el-button>
<el-button :disabled="disabledXX" type="plain" size="small" @click="uploadQblx">导入</el-button>
<el-button :disabled="disabledXX" type="success" size="small" @click="downloadStatus">模板下载</el-button>
<el-button :disabled="disabledXX" type="danger" size="small" @click="delQblx">批量删除</el-button>
</div>
</div>
<el-table
:data="qblx_pageData.qblxData"
border
ref="entryTable"
height="68%"
style="width: 100%"
@selection-change="selectedDelete"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '20px'}">
<el-table-column type="selection" fixed="left" align="center" width="55"/>
<el-table-column prop="bussSort" label="企标类别" fixed="left" align="center" width="100"/>
<el-table-column prop="esName" label="企标名称" fixed="left" align="center" width="300" show-overflow-tooltip/>
<el-table-column prop="reviseStatus" label="制修订类型" width="200" align="center"></el-table-column>
<el-table-column prop="unitName" label="起草责任单位" width="200" align="center"></el-table-column>
<el-table-column prop="drafterName" label="起草人" width="150" align="center"></el-table-column>
<el-table-column prop="resPersonName" label="评审责任人" width="150" align="center"></el-table-column>
<el-table-column prop="wgLeaderName" label="工作组组长" width="150" align="center"></el-table-column>
<el-table-column prop="draftTime" label="计划标准初稿完成时间" min-width="180" align="center"></el-table-column>
<el-table-column prop="releaseTime" label="计划标准发布时间" width="150" align="center"></el-table-column>
<el-table-column prop="endTime" label="立项完成时间" min-width="150" align="center"></el-table-column>
<el-table-column label="操作" align="center" width="80" fixed="right">
<template slot-scope="scope">
<el-button :disabled="disabledXX" size="mini" type="primary" @click="editRow('edit','编辑信息',scope.row)">编辑</el-button>
</template>
</el-table-column>
</el-table>
</div>
<el-collapse accordion>
<el-collapse-item title="回执说明">
<div style="margin: 10px 0;">
<el-input :disabled="disabledXX"
type="textarea"
:rows="3"
resize="none"
placeholder="请输入意见"
v-model="commentText">
</el-input>
</div>
</el-collapse-item>
</el-collapse>
</div>
<div class="content" v-show="active === '2'">
<div class="block" style="padding-top: 20px;">
<el-timeline>
<el-form
ref="roleForm"
:model="roleForm"
class="label-input-form">
<el-timeline-item timestamp="起草" placement="top" :color="roleForm.startUser ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="startUserName" style="margin-bottom: 0">
<h4>标准法规工程师</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.startUser" disabled style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.startUserName" disabled placeholder="标准法规工程师"></el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
<el-timeline-item timestamp="立项确认" placement="top" :color="roleForm.dockUser ? '#66b1ff' : ''">
<el-card>
<el-form-item prop="dockUserName" style="margin-bottom: 0">
<h4>责任工程师</h4>
<div style="margin-top: 10px;width: 300px;">
<el-input :disabled="disabledXX" v-model="roleForm.dockUser" style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="roleForm.dockUserName" readonly placeholder="责任工程师"
@click.native="choiceZRR('2', '选择标准立项单位整车/系统总工', roleForm.dockUser)">
</el-input>
</div>
</el-form-item>
</el-card>
</el-timeline-item>
</el-form>
</el-timeline>
</div>
</div>
<!-- 新增/编辑弹框 -->
<el-drawer
:title="qblxTitle"
:visible.sync="qblxModel"
size="600px"
:wrapper-closable="false"
custom-class="demo-drawer"
>
<el-form :model="addQblxData" class="label-input-form prc-content-border"
label-width="150px" :rules="addRule" ref="addQblxData">
<el-form-item prop="bussSort" label="企标类别" style="width: 100%; margin-right:10px" class="add-form-item form-item-disabled">
<el-select :disabled="disabledXX" v-model="addQblxData.bussSort" filterable placeholder="请选择企标类别" style="width: 100%;">
<el-option
v-for="(item, index) in standSortOptions"
:key="index"
:value="item.value"
:label="item.label">
</el-option>
</el-select>
</el-form-item>
<el-form-item prop="esName" label="企标名称" style="width: 100%; margin-right:10px" class="add-form-item form-item-disabled">
<el-input :disabled="disabledXX"
v-model.trim="addQblxData.esName"
placeholder="请输入企标名称"
:maxlength="500"/>
</el-form-item>
<el-form-item prop="reviseStatus" label="制修订类型" style="width: 100%; margin-right:10px"
class="add-form-item form-item-disabled">
<el-select :disabled="disabledXX" v-model="addQblxData.reviseStatus" placeholder="请选择制修订类型">
<el-option label="制定" value="制定"></el-option>
<el-option label="修订" value="修订"></el-option>
</el-select>
</el-form-item>
<el-form-item label="起草责任单位" style="width: 100%; margin-right:10px" prop="unitName" class="add-form-item form-item-disabled">
<el-input :disabled="disabledXX" v-model="addQblxData.unit" style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="addQblxData.unitName" placeholder="请选择起草责任单位"
@click.native="choiceZRBM('unit', '选择起草责任单位', addQblxData.unit)">
</el-input>
</el-form-item>
<el-form-item prop="drafterName" label="起草人" style="width: 100%; margin-right:10px"
class="add-form-item form-item-disabled">
<el-input :disabled="disabledXX" v-model="addQblxData.drafter" style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="addQblxData.drafterName" placeholder="请选择起草人" readonly
@click.native="choiceZRRS('1')">
</el-input>
</el-form-item>
<el-form-item prop="resPersonName" label="评审责任人" style="width: 100%; margin-right:10px"
class="add-form-item form-item-disabled">
<el-input :disabled="disabledXX" v-model="addQblxData.resPerson" style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="addQblxData.resPersonName" placeholder="请选择评审责任人"
@click.native="choiceZRRS('2')">
</el-input>
</el-form-item>
<el-form-item prop="wgLeaderName" label="工作组组长" style="width: 100%; margin-right:10px" class="add-form-item form-item-disabled">
<el-input :disabled="disabledXX" v-model="addQblxData.wgLeader" style="display: none;"></el-input>
<el-input :disabled="disabledXX" v-model="addQblxData.wgLeaderName" placeholder="请选择工作组组长"
@click.native="choiceLeader"></el-input>
</el-form-item>
<el-form-item label="计划标准初稿完成时间" style="width: 100%; margin-right:10px" prop="draftTime" class="add-form-item form-item-disabled">
<el-date-picker :disabled="disabledXX"
v-model="addQblxData.draftTime"
value-format="yyyy-MM-dd"
type="date"
placeholder="请选择计划标准初稿完成时间">
</el-date-picker>
</el-form-item>
<el-form-item label="计划标准发布时间" style="width: 100%; margin-right:10px" prop="releaseTime" class="add-form-item form-item-disabled">
<el-date-picker :disabled="disabledXX"
v-model="addQblxData.releaseTime"
value-format="yyyy-MM-dd"
type="date"
placeholder="请选择计划标准发布时间">
</el-date-picker>
</el-form-item>
<el-form-item label="立项完成时间" style="width: 100%; margin-right:10px" prop="endTime" class="add-form-item form-item-disabled">
<el-date-picker :disabled="disabledXX"
v-model="addQblxData.endTime"
value-format="yyyy-MM-dd"
type="date"
placeholder="请选择立项完成时间">
</el-date-picker>
</el-form-item>
</el-form>
<div class="demo-drawer-footer">
<el-button :disabled="disabledXX" size="mini" @click="closeDrawer">取消</el-button>
<el-button :disabled="disabledXX" type="primary" size="mini" @click="OkDrawer">确认</el-button>
</div>
</el-drawer>
<!-- 选择工作组抽屉-->
<el-drawer
class="drawer-table"
title="选择工作组组长"
:visible.sync="workModel"
size="600px"
@close="closeWorkDrawer"
custom-class="demo-drawer"
>
<div class="demo-drawer-content">
<div style="position: absolute;bottom: 48px;top:60px;left: 0;right: 0">
<div style="position: absolute;bottom: 55px;top: 0;right: 0;left: 0">
<div class="left">
<el-form :modal="workSearch" :inline="true" class="label-input-form" style="margin-left:10px">
<el-form-item label="工作组" class="search-item">
<el-input :disabled="disabledXX"
v-model="workSearch.workGroupName"
clearable
placeholder="根据工作组进行查找"
/>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button :disabled="disabledXX"
type="primary"
class="common-button-primary"
size="small"
@click="getWorkBtn">
查询
</el-button>
</el-form-item>
<el-form-item class="search-item btn-box">
<el-button :disabled="disabledXX"
class="common-button-default"
size="small"
@click="clearSearch">清空
</el-button>
</el-form-item>
</el-form>
</div>
<loading :loading="tableLoading">数据加载中...</loading>
<el-table
ref="workGroup"
:data="workData"
tooltip-effect="dark"
border
style="width: 100%; flex: auto;"
class="table-height"
@selection-change="workChange"
: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
prop="workGroup"
label="工作组"
align="center">
</el-table-column>
<el-table-column
prop="workLeader"
label="工作组组长"
align="center">
</el-table-column>
</el-table>
</div>
<pagination
:page="page"
:pageSize="pageSize"
:total="total"
@pageChange="pageChange"
@pageSizeChange="pageSizeChange"
/>
</div>
</div>
<div class="demo-drawer-footer">
<el-button :disabled="disabledXX" size="mini" @click="closeWorkDrawer">取消</el-button>
<el-button :disabled="disabledXX" type="primary" size="mini" @click="OkWork">带入</el-button>
</div>
</el-drawer>
<ProcessFooter v-show="!disabledXX"
show-save
show-submit
:submitLoading="isSubmit"
:saveLoading="saveLoading"
@save="handleSave"
@submit="handleSubmit"
>
</ProcessFooter>
<Role-tree
check-box
is-title="选择责任人"
:is-visible.sync="modalshowflag3"
:nodeList="nodeList"
@checkedRole="drawerCheck"
/>
<!-- 多选择责任人-->
<Role-tree
:is-title="drawerTitle2"
:is-visible.sync="modalshowflag2"
@checkedRole="checkedRole2"
:nodeList="nodeList2"
></Role-tree>
<Role-tree
check-box
:is-title="drawerTitle"
:is-visible.sync="modalshowflag"
@checkedRole="checkedRole"
:nodeList="nodeList"
></Role-tree>
<!-- 选择起草责任单位-->
<Mechanism-tree
is-title="选择起草责任单位"
:is-visible.sync="modalshowflagZRBM"
:nodeList="nodeListZRBM"
@checkedRole="drawerCheckZRBM"
/>
<!--导入模态窗-->
<el-dialog width="400px" :visible.sync="importModalshowflag" title="导入文件" :footer-hide="true">
<el-upload
drag
:show-file-list="showUploadlist"
:on-success="importFileSuccess"
:on-remove="removeOneFile"
:before-upload="beforeUpload"
:action="importExcelUrl"
:file-list="defaultFileList"
accept=".xls"
name="file"
ref="importFileAboutStand">
<div style="padding: 20px 0">
<i class="el-icon-upload" style="color: #3399ff"></i>
<p>点击或拖拽上传文件</p>
</div>
</el-upload>
</el-dialog>
</div>
</template>
<script>
import ProcessHeader from "../../components/ProcessHeader";
import ProcessFooter from "../../components/ProcessFooter";
import ProcessTitle from "../../components/ProcessTitle";
import MechanismTree from "@/components/mechanismTree";
import { queryTaskFirst, saveTaskFirst, taskDel, downloadStatus,processCreatePlan} from "@/api/process.js";
export default {
components: {
ProcessHeader,
ProcessFooter,
MechanismTree,
ProcessTitle
},
name: "qbzxdlxStep1",
data() {
const standNameVerify = (rule, value, callback) => {
if(value === '' || value === null){
return callback(new Error('请输入企标名称'))
}else {
this.$http.get('esRevisePlan/es-revise-plan/getDataByNameAndSort', {
bussSort: this.addQblxData.bussSort,
esName: this.addQblxData.esName,
}, {
_this: this,
}, res => {
if (res.data && res.data > 0) {
return callback(new Error('企标名称重复'))
}else {
callback()
}
}, e => {
})
}
};
return {
disabledXX:!!this.$route.query.disabledXX,
tableLoading: false,
importModalshowflag: false, //导入弹窗
showUploadlist: true, // 导入过程中新增数据时,如果数据错误,不出现导入列表
importExcelUrl: 'api/att/attFile/uploadNew', // 导入EXCEL文档
defaultFileList: [], // 默认显示
uploadFileListPath: "api/att/attFile/uploadNew", // 上传的地址
fileInfoList: [], // 上传的附件
fileIds: [], // 上传的附件
fileListName: [], //上传的附件名称
standSortOptions: [], //企标类别下拉框
nodeListZRBM: [],
workData: [], //工作组数据
workChangeList: [],
modalshowflagZRBM: false,
modalshowflag2: false,
modalshowflag3: false,
workModel: false,
workSearch: {
workGroupName: "",
},
total: 0,
page: 1,
pageSize: this.$store.getters.userInfo.configContent,
roleType: '',
drawerTitle: '',
drawerTitle2: '',
listIndex: 0,
active: '1',
qblx_pageData: {
projectTarget: '',
processName: '',
qblxData: [],
},
commentText: '',
qblxRule: {
processName: [
{required: true, message:'请输入流程名称', trigger: 'blur'}
]
},
roleForm: {
startUserName: this.$store.getters.userInfo.userName,
startUser: this.$store.getters.userInfo.userId,
},
// 上传路径
uploadPath: 'api/att/attFile/uploadNew',
acceptShow: false,
// 上传所储存文件数组
fillFileList: [],
// 新增弹框
qblxTitle: '',
btnType: '',
qblxModel: false,
addQblxData: {
esName: '',
dutyUnit: '',
dutyPeopleId: '',
dutyPeople: '',
firstDraftTime: '',
planTime: '',
endTime: '',
},
addRule: {
// unit: [
// { required: true, message: "请选择起草单位", trigger: "change" }
// ],
bussSort: [
{ required: true, message: "请选择企标类别", trigger: "blur" }
],
esName: [
{ required: true, validator: standNameVerify, trigger: "blur" }
],
reviseStatus: [
{ required: true, message: "请选择制修订类型", trigger: "blur" }
],
// resPersonName: [
// { required: true, message: "请输入评审责任人", trigger: "blur" }
// ],
// wgLeaderName: [
// { required: true, message: "请输入工作组组长", trigger: "blur" }
// ],
// unitName: [
// { required: true, message: "请选择起草责任单位", trigger: "blur" }
// ],
// draftTime: [
// { required: true, message: "请输入计划标准初稿完成时间", trigger: "blur" }
// ],
// releaseTime: [
// {required: true, message: '请输入计划标准发布时间', trigger: 'blur'},
// ],
drafterName: [
{required: true, message: '请选择起草人', trigger: 'change'},
],
},
isSubmit: false,
saveLoading: false,
// 选人组件
modalshowflag: false,
nodeList: [],
nodeList2: [],
taskID: '',
bpnId: '',
// 表格勾选数据储存
deleteDataList: [],
// 设置当前日期之前不可选择
datePicker: {
disabledDate(date) {
return date.getTime() < Date.now() - 24 * 60 * 60 * 1000
}
}
}
},
mounted() {
this.bpnId = this.$route.query.bpnId
if (this.bpnId !== undefined) {
this.getData()
}
this.getWorkData()
//查询下拉框数据
this.$http.get('sys/dictype/getDicTypeListCode', '',{
_this: this
}, res => {
res.data.BUSSSTANDCLASS.forEach(item => {
if(item.label){
this.standSortOptions.push(item) //企标类别
}
})
})
},
methods: {
onFileExceed() {
this.$message.error('最多上传一个文件')
},
// 导入标准数据成功后执行
importFileSuccess (res, file, fileList) {
let files = {}
if (res.ok) {
files.attId = res.data.attId
files.fileName = res.data.name
if (res.data.standNum != null && res.data.standNum !== '') {
files.standNumSplit = res.data.standNum
}
if (res.data.standName != null && res.data.standName !== '') {
files.standNameSplit = res.data.standName
}
this.defaultFileList.push(file)
const _formData = new FormData()
_formData.append('standNumSplit', files.standNumSplit)
_formData.append('standNameSplit', files.standNameSplit)
_formData.append('fileType', files.fileType)
_formData.append('file', file.raw)
this.$http.postData('importWkExcel/importData', _formData,{
_this: this
}, res => {
console.log(res);
if(res.ok){
if(res.data.length){
this.qblx_pageData.qblxData = res.data
this.$message.success('文件上传成功')
}else{
this.$message.warning('请勿上传为空的文件')
}
}else{
const arr = res.data.split(';')
let newDatas = [],h = this.$createElement;
for (const i in arr) {
newDatas.push(h('p', null, arr[i]))
}
this.$confirm(h('div', null, newDatas), "提示", {
confirmButtonText: "确认",
confirmButtonClass: "common-button-primary",
dangerouslyUseHTMLString: true,
cancelButtonText: "取消",
type: "warning"
}).then(() => {
}).catch(() => {
});
}
})
this.importModalshowflag = false
this.$nextTick(() => {
this.$refs.importFileAboutStand.clearFiles()
})
} else {
this.defaultFileList = []
this.uploadFilesplitEo.attId = ''
this.$message.error(res.message)
}
},
//删除文件时执行
removeOneFile(){
},
getWorkBtn(){
this.page = 1
this.getWorkData()
},
clearSearch(){
this.workSearch.workGroupName = ''
this.getWorkData()
},
pageChange(page){
this.page = page
this.getWorkData()
},
pageSizeChange(pageSize){
this.pageSize = pageSize
this.getWorkData()
},
workChange(data) {
this.workChangeList = data
},
//工作组取消按钮
closeWorkDrawer(){
this.workModel = false
this.workSearch.workGroupName = ''
this.getWorkData()
this.$refs.workGroup.clearSelection()
},
OkWork(){
if(this.workChangeList.length > 1 ){
this.$message.warning('您只能选择一条数据进行带入')
}else if(this.workChangeList.length < 1 ){
this.$message.warning('请至少选择一条数据')
}else{
this.$set(this.addQblxData, 'wgLeader', this.workChangeList[0].workLeaderId)
this.$set(this.addQblxData, 'wgLeaderName', this.workChangeList[0].workLeader)
if(this.addQblxData.wgLeaderName){
this.$refs.qblx_pageData.validateField('wgLeaderName')
}
this.workModel = false
this.workSearch.workGroupName = ''
this.$refs.workGroup.clearSelection()
}
},
getWorkData() {
this.$http.get("workGroup/work-group", {
pageSize: this.pageSize,
page: this.page,
workGroupName: this.workSearch.workGroupName
}, {
_this: this
}, res => {
this.workData = res.data.records;
this.total = res.data.total;
this.tableLoading = false
}, e => {
});
},
choiceLeader(){
this.getWorkData()
this.workModel = true
},
choiceZRBM(type, title, id) {
this.nodeListZRBM = []
this.nodeListZRBM.push(id)
this.drawerTitle = title
this.modalshowflagZRBM = true
},
drawerCheckZRBM(data) {
let idList = ''
let nameList = ''
data.forEach(item => {
if (nameList.length) {
nameList += ','
idList += ','
}
idList += item.id
nameList += item.name
})
this.$set(this.addQblxData, 'unit', idList)
this.$set(this.addQblxData, 'unitName', nameList)
if(this.addQblxData.unit){
this.$refs.qblx_pageData.validateField('unit')
}
if(this.addQblxData.unitName){
this.$refs.qblx_pageData.validateField('unitName')
}
},
choiceZRRS(type) {
this.roleType = type
if(type === '1' ){
this.drawerTitle2 = '请选择起草人'
this.nodeList2 = [];
if (this.addQblxData.drafter !== undefined) {
this.nodeList2 = this.addQblxData.drafter.split(",");
}
}else if(type === '2'){
this.drawerTitle2 = '请选择评审责任人'
this.nodeList2 = [];
if (this.addQblxData.resPerson !== undefined) {
this.nodeList2 = this.addQblxData.resPerson.split(",");
}
}
this.modalshowflag2 = true;
},
checkedRole(data) {
this.$set(this.addQblxData, 'wgLeader', data[0].id)
this.$set(this.addQblxData, 'wgLeaderName', data[0].name)
if(this.addQblxData.wgLeaderName){
this.$refs.qblx_pageData.validateField('wgLeaderName')
}
this.modalshowflag = false;
},
checkedRole2(data) {
console.log(data);
let idList = "", nameList = ""
let unitList = "", unitNameList = ""
data.forEach(item => {
if (nameList.length) {
nameList += ",";
idList += ",";
unitList += ",";
unitNameList += ",";
}
idList += item.id;
nameList += item.name;
unitList += item.topUnitId
unitNameList += item.topUnit
});
if(this.roleType === '1'){
this.$set(this.addQblxData, 'drafter', idList)
this.$set(this.addQblxData, 'drafterName', nameList)
this.$set(this.addQblxData, 'unit', unitList)
this.$set(this.addQblxData, 'unitName', unitNameList)
}else if(this.roleType === '2'){
this.$set(this.addQblxData, 'resPerson', idList)
this.$set(this.addQblxData, 'resPersonName', nameList)
}
// === '0' false null undefined都属于false类变量 如果里面有值可以直接判断
if(this.addQblxData.drafterName){
this.$refs.qblx_pageData.validateField('drafterName');
}
if(this.addQblxData.unitName){
this.$refs.qblx_pageData.validateField('unitName');
}
if(this.addQblxData.resPersonName){
this.$refs.qblx_pageData.validateField('resPersonName');
}
},
// 右上标签页面切换
handleTabs(name) {
this.active = name
},
// 保存后获取的数据
getData() {
queryTaskFirst({
bpnId: this.$route.query.bpnId
}).then(res => {
let mes = JSON.parse(res.mes)
this.qblx_pageData = mes.form ? mes.form : mes.qblx_pageData
this.fileInfoList = mes.form ? mes.form.qblxFile : mes.qblx_pageData.qblxFile
this.commentText = mes.commentText
});
},
// 删除上传的文件
delFileInfo(file, fileList) {
this.fileInfoList.forEach((item, index) => {
if (item.name === file.name || item.id === file.id ) {
this.fileInfoList.splice(index,1)
}
})
},
// 上传文件成功回调
uploadBackSuccess(res, file, fileList) {
if (res.ok) {
this.fileInfoList.push(res.data)
this.$message.success("上传成功");
} else {
this.$message.error(res.message);
fileList.pop();
}
},
// 相关附件 上传之前钩子
beforeUpload(file) {
var filename = file.name;
// this.listForm.fileName = this.listForm.fileName + ',' + file.name
var index1 = filename.lastIndexOf(".");
var index2 = filename.length;
var 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 / 1024 / 1024 > 300) {
this.$message.warning("文件" + file.name + "大小不能超过300M");
return false;
}
return true;
},
// 表格勾选事件
selectedDelete(val) {
this.deleteDataList = val
},
// 流程阶段负责人选择
choiceZRR(type, title, id) {
this.nodeList = []
this.nodeList.push(id)
this.type = type
this.modalshowflag3 = true
},
// 选人组件确认
drawerCheck(data) {
this.addQblxData.dutyPeopleId = data[0].id
this.addQblxData.dutyPeople = data[0].name
this.modalshowflag = false
},
/** 新增按钮 */
addQblx(type,title) {
this.btnType = type
this.qblxTitle = title
this.qblxModel = true
},
// 抽屉确认按钮
OkDrawer() {
this.$refs['addQblxData'].validate((valid) => {
if (valid) {
if (this.btnType === 'add') {
this.qblx_pageData.qblxData.push(this.addQblxData)
}
this.addQblxData = {}
this.qblxModel = false
this.addQblxData = {
esName: '',
dutyUnit: '',
dutyPeopleId: '',
dutyPeople: '',
firstDraftTime: '',
planTime: '',
endTime : ''
}
}
})
},
// 抽屉取消按钮
closeDrawer() {
if (this.btnType === 'edit') {
let Items = JSON.parse(localStorage.getItem('obj'))
this.addQblxData.esName = Items.esName
this.addQblxData.unit = Items.unit
this.addQblxData.unitName = Items.unitName
this.addQblxData.dutyUnit = Items.dutyUnit
this.addQblxData.dutyPeopleId = Items.dutyPeopleId
this.addQblxData.dutyPeople = Items.dutyPeople
this.addQblxData.firstDraftTime = Items.firstDraftTime
this.addQblxData.planTime = Items.planTime
this.addQblxData.endTime = Items.endTime
} else {
this.addQblxData = {}
}
this.qblxModel = false
},
editRow(type,title,val) {
this.btnType = type
this.qblxTitle = title
localStorage.setItem('obj', JSON.stringify(val))
this.addQblxData = val
this.qblxModel = true
},
/** 删除按钮*/
delQblx() {
if (this.deleteDataList.length < 1) {
this.$message.warning("请选择一条数据进行删除");
} else {
this.$confirm("您确认删除这些数据?", "提示", {
confirmButtonText: "确认",
confirmButtonClass: "common-button-primary",
cancelButtonText: "取消",
type: "warning"
}).then(() => {
let exits = [];
this.deleteDataList.map(item => {
let index;
index = this.qblx_pageData.qblxData.findIndex(items => {
return items === item;
});
if (index > -1) {
this.qblx_pageData.qblxData.splice(index, 1);
}
exits.push(item);
});
this.deleteDataList = [];
}).catch(() => {
});
}
},
/** 数据导入到列表 */
uploadQblx() {
this.importModalshowflag = true
},
/** 模板下载 */
downloadStatus() {
downloadStatus().then(res => {
let blob = new Blob([res], { type: 'application/vnd.ms-excel' }); //以xls文件为例
//浏览器兼容,Google和火狐支持a标签的download,IE不支持
if (window.navigator && window.navigator.msSaveBlob) {
//IE浏览器、微软浏览器
/* 经过测试,微软浏览器Microsoft Edge下载文件时必须要重命名文件才可以打开,
IE可不重命名,以防万一,所以都写上比较好 */
window.navigator.msSaveBlob(blob, '企标制修订立项计划模板.xls');
} else {
//其他浏览器
let link = document.createElement('a'); // 创建a标签
link.style.display = 'none';
let objectUrl = URL.createObjectURL(blob);
link.href = objectUrl;
link.download = '企标制修订立项计划模板.xls';
link.click();
URL.revokeObjectURL(objectUrl);
}
})
},
// 保存按钮
handleSave() {
this.saveLoading = true;
let _formData = new FormData();
this.qblx_pageData.qblxFile = this.fileInfoList
_formData.append("createUser", this.$store.getters.userInfo.userId);
_formData.append("createUserName", this.$store.getters.userInfo.userName);
_formData.append("prcType", "26");
_formData.append("json", JSON.stringify({
qblx_pageData: this.qblx_pageData,
commentText: this.commentText
}));
saveTaskFirst(_formData).then(res => {
this.saveLoading = false;
this.$message.success("保存成功");
this.bpnId = res.result;
}).catch(e => {
this.saveLoading = false;
})
},
listSubmit (item) {
return new Promise((resolve, reject) => {
let newForm = Object.assign(this.roleForm, item,this.qblx_pageData);
newForm.startUserName = this.$store.getters.userInfo.userName
newForm.startUser = this.$store.getters.userInfo.userId
newForm.dockUser = item.drafter
newForm.dockUserName = item.drafterName
this.$http.post('lawss/activiti/startProcessRollBack',{
createUser: this.$store.getters.userInfo.userId,
createUserName: this.$store.getters.userInfo.userName,
type: '26',
json: JSON.stringify({
form: newForm,
commentText: this.commentText
})
},{
_this: this
},res => {
if(res.ok){
this.$http.post("lawss/activiti/completeTask", {
taskIds: res.data,
userId: this.$store.getters.userInfo.userId,
json: JSON.stringify(newForm)
}, {
_this: this
}, res => {
if (res.success) {
resolve()
this.$message.success(res.message);
if (this.bpnId !== undefined && this.bpnId !== '') {
let taskId = {
id: this.bpnId
}
taskDel(taskId).then(res=>{
// return res
})
}
// this.$router.push("/processCenter");
}
});
}
})
})
},
//流程提交事件
handleSubmit() {
if(this.qblx_pageData.qblxData.length){
let jsonData = this.qblx_pageData.qblxData
this.qblx_pageData.qblxFile = this.fileInfoList
this.qblx_pageData.commentText = this.commentText;
this.$refs["qblx_pageData"].validate((valid) => {
if (valid) {
this.$refs["roleForm"].validate(async (valid) => {
if (valid) {
this.isSubmit = true
let finishCount = 0;
while (finishCount < jsonData.length) {
await this.listSubmit(jsonData[finishCount])
.then(() => {
finishCount++
}).catch(e => {
})
}
if (finishCount === jsonData.length) {
this.isSubmit = false
this.$router.push('/processCenter')
}
this.isSubmit = false
} else {
return this.$message.warning("请完善人员信息");
}
});
} else {
return this.$message.warning("请完善基础信息");
}
});
}else{
this.$message.warning('立项列表不能为空')
}
},
}
}
</script>
<style lang="less" scoped>
@import '~@/assets/styles/style';
.qbzxdlxStep1 {
position: relative;
height: 100%;
/deep/ .el-upload-list__item-name {
//margin-left: 48px;
}
/deep/ .el-upload-list {
width: 50%;
margin-bottom: 10px;
}
/deep/ .el-drawer__container {
.prc-content-border {
height: 100%;
border: none;
padding: 0 20px 0;
}
}
.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 {
display: flex;
flex-direction: column;
justify-content: space-between;
height: calc(~'100% - 103px');
overflow: auto;
.tableTitle {
margin-bottom: 10px;
height: 30px;
line-height: 30px;
position: relative;
font-size: 13px;
font-weight: bold;
.tableButton {
position: absolute;
left: 0;
top: 0;
}
}
}
.content_form {
padding-top: 15px;
.el-divider--horizontal {
margin-top: 0px;
}
/deep/ .el-table__body-wrapper {
height: auto !important;
}
/deep/ .el-textarea__inner {
font-family: inherit;
}
/deep/ .el-table th {
padding: 0px;
}
}
.picker_style {
margin-left: 10px;
margin-bottom: 0;
min-height: 50px;
line-height: 50px;
border-bottom: 1px dashed #e5e5e5;
/deep/.el-input__inner{
border: 0;
}
}
.table-height{
height: calc(~'100% - 65px');
overflow: auto;
}
.drawer-table{
/deep/.el-drawer__body{
overflow-y: hidden;
}
/deep/.demo-drawer-content{
overflow-y: hidden;
}
}
}
</style>