1155 lines
40 KiB
Vue
1155 lines
40 KiB
Vue
<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>
|