feat: There is no way the, 复审2

This commit is contained in:
super_liu
2022-02-16 18:00:35 +08:00
parent 01c5f13d37
commit 954e7748ef
5 changed files with 1066 additions and 165 deletions
@@ -294,6 +294,90 @@
</el-col>
</el-row>
</div>
<ProcessTitle v-show="opinionsShow2">
<template slot="title">复审信息</template>
</ProcessTitle>
<div class="prc-content-border" v-show="opinionsShow2">
<el-table
ref="selection"
tooltip-effect="dark"
style="width: 100%;margin-bottom: 20px;overflow-y:auto;height:auto;border-bottom: 1px solid #EBEEF5;"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}"
row-key="id"
:data="form.fileModelList"
border
default-expand-all>
<el-table-column
label="序号"
min-width="5%"
align="center">
<template slot-scope="scope">
{{scope.$index + 1}}
</template>
</el-table-column>
<el-table-column
prop="reviewResults"
label="复审结果"
min-width="8%"
align="center"
>
<template slot-scope="scope">
{{filterReviewResults(scope.row.reviewResults)}}
</template>
</el-table-column>
<el-table-column
prop="releaseTime"
label="初稿完成日期"
align="center"
min-width="15%">
<!-- <template slot-scope="scope">-->
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-input v-model="scope.row.modelUpdBefore" :title="scope.row.modelUpdBefore" :disabled="scope.row.disabled" placeholder="请维护章节修改前内容" @blur="modelNameFunc1(scope.row)"/>-->
<!-- </el-form-item>-->
<!-- </template>-->
</el-table-column>
<el-table-column
prop="draftTime"
label="计划标准发布日期"
align="center"
min-width="15%">
<!-- <template slot-scope="scope">-->
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-input v-model="scope.row.modelUpdAfter" :title="scope.row.modelUpdAfter" :disabled="scope.row.disabled" placeholder="请维护章节修改后内容" @blur="modelNameFunc2(scope.row)"/>-->
<!-- </el-form-item>-->
<!-- </template>-->
</el-table-column>
<el-table-column
prop="reviewResultsContent"
label="复审理由"
align="center"
min-width="20%">
<!-- <template slot-scope="scope">-->
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-input v-model="scope.row.modelContent" :disabled="scope.row.disabled" placeholder="请填写修改理由"/>-->
<!-- </el-form-item>-->
<!-- </template>-->
</el-table-column>
<el-table-column label="操作" align="center" min-width="5%">-->
<template slot-scope="scope" >
<div v-show="scope.row.reviewResults === '1'" @click="handleFilePreviewNew(scope.row,'preview','fs')" style="display: inline-block;cursor: pointer;color: #409EFF;">
预览
</div>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div v-show="scope.row.reviewResults === '1'" @click="handleFilePreviewNew(scope.row,'down','fs')" style="display: inline-block;cursor: pointer;color: #409EFF;">
下载
</div>
</template>
</el-table-column>
</el-table>
</div>
<ProcessTitle v-show="verifySarStandard">
<template slot="title">复审结果</template>
</ProcessTitle>
@@ -311,15 +395,15 @@
></el-option>
</el-select>
</el-form-item>
<el-form-item v-show="verifySort() !== '' && !verifySort()" label="初稿完成日期" prop="draftTime" class="add-form-item form-item-disabled">
<el-form-item v-if="verifySort() !== '' && !verifySort()" label="初稿完成日期" prop="draftTime" class="add-form-item form-item-disabled">
<el-datePicker v-model="form.draftTime"
:editable="false"
placeholder="请选择初稿完成日期"
value-format="yyyy-MM-dd"
></el-datePicker>
</el-form-item>
<el-form-item v-show="verifySort() !== '' && verifySort()" label="截止日期" prop="releaseTime" class="add-form-item form-item-disabled">
<el-datePicker v-model="form.releaseTime"
<el-form-item v-if="verifySort() !== '' && verifySort()" label="截止日期" prop="expirationDate" class="add-form-item form-item-disabled">
<el-datePicker v-model="form.expirationDate"
:editable="false"
placeholder="请选择截止日期"
value-format="yyyy-MM-dd"
@@ -336,13 +420,24 @@
@click.native="choiceZRRList('QCRBUSS', '选择主起草人', form.QCRBUSS)">
</el-input>
</el-form-item>
<el-form-item v-show="verifySort() !== '' && !verifySort()" label="计划标准发布日期" prop="releaseTime" class="add-form-item form-item-disabled">
<el-form-item v-if="verifySort() !== '' && !verifySort()" label="计划标准发布日期" prop="releaseTime" class="add-form-item form-item-disabled">
<el-datePicker v-model="form.releaseTime"
:editable="false"
placeholder="请选择计划标准发布日期"
value-format="yyyy-MM-dd"
></el-datePicker>
</el-form-item>
<el-form-item v-if="form.reviewResults === '1'" label="复审单" prop="LXDName" class="add-form-item form-item-disabled">
<div v-if="FSDList.length > 0" v-for="(item,index) in FSDList" :key="index" style="color: #409eff;cursor:pointer" class="fileClass">
<span style="width: 80%;" @click="handleFilePreviewNew(item,'preview','fs')" :title="item.name">{{ item.name | ellipsis2 }}</span>
<span style="width: 20%;margin-left: 15px;" v-if="item.id !== ''">
<el-button type="primary" size="mini" plain icon="el-icon-download" @click="handleFilePreviewNew(item,'down','fs')"></el-button>
</span>
<span style="width: 20%;margin-left: 15px;" v-if="item.id !== ''">
<el-button type="primary" size="mini" plain icon="el-icon-edit" @click="handleFilePreviewNew(item,'onlineEdit','fs')"></el-button>
</span>
</div>
</el-form-item>
</el-col>
</el-row>
<el-form-item v-show="form.reviewResults === '2' || form.reviewResults === '3'" label="复审理由" prop="reviewResultsContent" style="margin-left: 0;margin-bottom:0;" class="add-form-item form-item-disabled">
@@ -355,147 +450,6 @@
</el-input>
</el-form-item>
</div>
<ProcessTitle v-show="opinionsShow">
<template slot="title">意见信息</template>
</ProcessTitle>
<div class="prc-content-border" v-show="opinionsShow">
<el-table
ref="selection"
tooltip-effect="dark"
style="width: 100%;margin-bottom: 20px;overflow-y:auto;height:auto;border-bottom: 1px solid #EBEEF5;"
:header-cell-style="{background: '#e8e8e8', color: '#333333', fontSize: '16px',
fontWeight: 'bold', height: '48px'}"
row-key="id"
:data="form.infoList"
border
default-expand-all>
<el-table-column
label="序号"
min-width="5%"
align="center">
<template slot-scope="scope">
{{scope.$index + 1}}
</template>
</el-table-column>
<el-table-column
prop="modelNum"
label="条款号"
min-width="8%"
align="center"
>
</el-table-column>
<el-table-column
prop="modelUpdBefore"
label="修改前"
align="center"
min-width="20%">
<!-- <template slot-scope="scope">-->
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-input v-model="scope.row.modelUpdBefore" :title="scope.row.modelUpdBefore" :disabled="scope.row.disabled" placeholder="请维护章节修改前内容" @blur="modelNameFunc1(scope.row)"/>-->
<!-- </el-form-item>-->
<!-- </template>-->
</el-table-column>
<el-table-column
prop="modelUpdAfter"
label="修改后"
align="center"
min-width="20%">
<!-- <template slot-scope="scope">-->
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-input v-model="scope.row.modelUpdAfter" :title="scope.row.modelUpdAfter" :disabled="scope.row.disabled" placeholder="请维护章节修改后内容" @blur="modelNameFunc2(scope.row)"/>-->
<!-- </el-form-item>-->
<!-- </template>-->
</el-table-column>
<el-table-column
prop="modelContent"
label="修改理由"
align="center"
min-width="20%">
<!-- <template slot-scope="scope">-->
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-input v-model="scope.row.modelContent" :disabled="scope.row.disabled" placeholder="请填写修改理由"/>-->
<!-- </el-form-item>-->
<!-- </template>-->
</el-table-column>
<el-table-column
prop="zrDeptIdName"
label="提出部门"
align="center"
min-width="15%">
<!-- <template slot-scope="scope">-->
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-input v-model="scope.row.zrDeptIdName" disabled placeholder="请选择提出人自动带入部门"/>-->
<!-- </el-form-item>-->
<!-- </template>-->
</el-table-column>
<el-table-column
prop="zrUserIdName"
label="责任人"
min-width="15%"
align="center">
<!-- <template slot-scope="scope">-->
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-input v-model="scope.row.zrUserIdName" v-if="scope.row.pid === '0'" placeholder="请选择责任人" disabled />-->
<!-- </el-form-item>-->
<!-- </template>-->
</el-table-column>
<el-table-column
label="意见是否采纳"
min-width="15%"
align="center">
<template slot-scope="scope">
{{filterOp(scope.row.opinionsAdopted)}}
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-select style="margin-left: -223px;" v-model="scope.row.opinionsAdopted" filterable clearable :disabled="disabledState">-->
<!-- <el-option-->
<!-- v-for="item in opinionsAdoptedOptions"-->
<!-- :key="item.value"-->
<!-- :value="item.value"-->
<!-- :label="item.label"-->
<!-- ></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
</template>
</el-table-column>
<el-table-column
prop="opinionsAdoptedCont"
label="采纳理由"
align="center"
min-width="15%">
<!-- <template slot-scope="scope">-->
<!-- <el-form-item-->
<!-- style="margin-left: 0;margin-bottom:0;"-->
<!-- >-->
<!-- <el-input v-model="scope.row.opinionsAdoptedCont" clearable placeholder="请选择提出人自动带入部门"/>-->
<!-- </el-form-item>-->
<!-- </template>-->
</el-table-column>
</el-table>
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="汇总评审意见文件" prop="GLWJBUSSName" class="add-form-item form-item-disabled">
<div v-if="summaryFileList.length > 0" v-for="(item,index) in summaryFileList" :key="index" style="color: #409eff;cursor:pointer" class="fileClass">
<span style="width: 80%;" @click="handleFilePreview(item,'preview')">{{ item.name }}</span>
<span style="width: 20%;margin-left: 15px;" v-if="item.id !== ''">
<el-button type="primary" size="mini" plain icon="el-icon-download" @click="handleFilePreview(item,'down')"></el-button>
</span>
</div>
</el-form-item>
</el-col>
</el-row>
</div>
</form>
</template>
@@ -534,6 +488,14 @@ export default {
type: Array,
required: true
},
LXDListSub: {
type: Array,
required: true
},
FSDListSub: {
type: Array,
required: true
},
summaryFileList: {
type: Array,
required: false
@@ -566,6 +528,13 @@ export default {
return value.slice(0,35) + '...'
}
return value
},
ellipsis2 (value) {
if (!value) return ''
if (value.length > 20) {
return value.slice(0,20) + '...'
}
return value
}
},
data () {
@@ -581,6 +550,8 @@ export default {
{value: '3',label: '继续有效'},
],
form:{},
LXDList:[],
FSDList:[],
countryOptions:[],//国家地区
standSortOptions: [], // 标准类别
standNatureOptions: [], // 标准性质
@@ -629,6 +600,16 @@ export default {
choiceZRRList (type, title, id) {
this.$emit('formChoiceZRRListCancel',type,title,id)
},
filterReviewResults(data){
if(!data){
return ""
}
const map = new Map();
map.set("1","修订");
map.set("2","废止");
map.set("3","继续有效");
return map.get(data)
},
filterOp(data){
if(!data){
return ""
@@ -639,6 +620,50 @@ export default {
map.set("3","不采纳");
return map.get(data)
},
// 文件预览及下载
handleFilePreviewNew(file,type,onlineType) {
let id = ""
let fileName = ""
let fileNam2 = ""
if(onlineType === 'lx'){
if(this.form.standName && this.form.standName !== ''){
fileName = this.form.standName+'-立项单.docx'
fileNam2 = this.form.standName+'-立项单'
}else {
fileName = '立项单.docx'
fileNam2 = '立项单'
}
}else if(onlineType === 'fs'){
if(this.form.standName && this.form.standName !== ''){
fileName = this.form.standName+'-复审单.docx'
fileNam2 = this.form.standName+'-复审单'
}else {
fileName = '复审单.docx'
fileNam2 = '复审单'
}
}
if(file && file.id){
id = file.id
}else {
if(onlineType === 'fs'){
id = file.FSD
}else if(onlineType === 'lx'){
id = file.LXD
}
}
if (type === 'down') {
if (id) {
window.open('/api/lawss/activiti/downloadFileForSar?fileId=' + id +'&oldFileName='+fileName)
} else {
this.$message.warning('文件不存在,下载失败')
}
} else if(type === 'preview'){
this.$onlineEditPreview(id,fileNam2,this.$store.getters.userInfo.userId,this.$store.getters.userInfo.userName)
}else {
this.$onlineEdit(id,fileNam2,this.$store.getters.userInfo.userId,this.$store.getters.userInfo.userName)
}
},
// 文件预览及下载
handleFilePreview(file,type) {
let attId = ""
@@ -686,6 +711,8 @@ export default {
},
mounted () {
this.form = this.formSub
this.LXDList = this.LXDListSub
this.FSDList = this.FSDListSub
this.$http.get('sys/dictype/getDicTypeListCode', '', {
_this: this
}, res => {
@@ -1249,22 +1249,6 @@ export default {
this.modalShowRoleFlag = false
},
checkedRole (data) {
if (this.type === 0) {
this.roleForm.deptUserId = data[0].id
this.roleForm.deptUserIdName = data[0].name
} else if (this.type === 1) {
this.qbfsForm.modelData[this.zrIndex].bussFsSubUser1 = data[0].id
this.qbfsForm.modelData[this.zrIndex].bussFsSubUser1Name = data[0].name
} else {
this.qbfsForm.modelData.forEach(item => {
this.zrIdList.forEach(items => {
if (item.id === items) {
item.bussFsSubUser1 = data[0].id
item.bussFsSubUser1Name = data[0].name
}
})
})
}
if (this.type === "dockUser") {
this.roleForm.dockUser = data[0].id;
@@ -26,6 +26,8 @@
:BZSMBUSSFileList = "BZSMBUSSFileList"
:QTWJBUSSFileList = "QTWJBUSSFileList"
:GLWJBUSSFileList = "GLWJBUSSFileList"
:LXDListSub = "LXDList === undefined ? [] : LXDList"
:FSDListSub = "FSDList === undefined ? [] : FSDList"
:disabledState = "disabledState"
:opinionsShow2 = "false"
:verifySarStandard = "verifySarStandard"
@@ -148,6 +150,7 @@
@checkedRole="checkedRole2"
:nodeList="nodeList2"
></Role-tree>
<loading :loading="dataLoading">正在加载数据</loading>
</div>
</template>
@@ -155,11 +158,11 @@
import ProcessHeader from "../../components/ProcessHeader";
import ProcessFooter from "../../components/ProcessFooter";
import ProcessTitle from "../../components/ProcessTitle";
import { changeAssigneeNew, inboundLiaisonDetail, saveTaskFirst,taskDel,queryTaskFirst } from "api/process";
import { changeAssigneeNew, inboundLiaisonDetail, saveTaskFirst,taskDel,queryTaskFirst,processEditFile } from "api/process";
import formList from './common/formList.vue'
export default {
name: "qbfsStepSub1",
name: "qbfsStepSub2",
components:{
ProcessHeader,
ProcessFooter,
@@ -167,7 +170,22 @@ export default {
formList
},
data() {
const validateFsOnlineFile = async (rule, value, callback) => {
if(this.qbfsForm.FSD){
let fileObj = await this.processEditFile(this.qbfsForm.FSD)
if (fileObj) {
const editFileInfo = fileObj
console.log(editFileInfo)
if (editFileInfo && editFileInfo.editStatus === '1') {
callback()
} else {
callback(new Error('请先在线编辑,再提交流程!'))
}
}
}
};
return {
dataLoading:true,
bpnId: '',
formKey:1,
active: '1',
@@ -179,6 +197,8 @@ export default {
LSBBBUSSFileList: [],
QTWJBUSSFileList: [],
GLWJBUSSFileList: [],
LXDList: [],
FSDList: [],
fileList: [],
commentText: '',
detailData: [],
@@ -217,6 +237,18 @@ export default {
bussFsSubUser2Name: [
{required: true, message: "请选择企标复审人", trigger: "change"}
],
reviewResults: [
{required: true, message: "请选择复审结果", trigger: "change"}
],
draftTime: [
{required: true, message: "请选择初稿完成日期", trigger: "change"}
],
releaseTime: [
{required: true, message: "请选择计划标准发布日期", trigger: "change"}
],
LXDName: [
{ required: true, validator: validateFsOnlineFile, trigger: 'blur' }
],
},
}
},
@@ -228,7 +260,45 @@ export default {
this.processTable()
this.getData()
},
watch:{
'qbfsForm.reviewResults': {
handler (val) {
if (val !== '' && val !== null && typeof (val) !== 'undefined') {
if(val === '1'){
if (this.bpnId === undefined) {
this.getFsFile()
}
}
}
}
},
},
methods:{
async getFsFile(){
let fileObj = await this.getSaveFile("model_fs")
if(fileObj){
this.qbfsForm.FSD = fileObj.id
if(this.qbfsForm.standName){
this.qbfsForm.FSDName = this.qbfsForm.standName + '-复审单'
}else {
this.qbfsForm.FSDName = '复审单'
}
this.FSDList=this.assemble(fileObj.id,this.qbfsForm.FSDName);
this.formKey++
}
},
getSaveFile(model) {
return new Promise((resolve, reject) => {
this.$http.get('/lawss/activiti/saveEditFile', {
model: model
}, {
_this: this
}, res => {
const history = res;
resolve(history)
})
})
},
checkedRole2 (data) {
let idList = ''
let nameList = ''
@@ -272,13 +342,15 @@ export default {
formChoiceZRRListCancel(type, title, id){
this.choiceZRRList(type, title, id)
},
formCancel (form, list1,list2,list3,list4,list5) {
formCancel (form, list1,list2,list3,list4,list5,list6,list7) {
this.qbfsForm = form
this.FBGBUSSFileList = list1
this.LSBBBUSSFileList = list2
this.BZSMBUSSFileList = list3
this.QTWJBUSSFileList = list4
this.GLWJBUSSFileList = list5
this.LXDList = list6
this.FSDList = list7
},
processTable() {
this.$http.get("lawss/activiti/get_list_by_instance", {
@@ -330,6 +402,8 @@ export default {
this.LSBBBUSSFileList=this.assemble(this.qbfsForm.LSBBBUSS,this.qbfsForm.LSBBBUSSName);
this.QTWJBUSSFileList=this.assemble(this.qbfsForm.QTWJBUSS,this.qbfsForm.QTWJBUSSName);
this.GLWJBUSSFileList=this.assemble(this.qbfsForm.GLWJBUSS,this.qbfsForm.GLWJBUSSName);
this.LXDList=this.assemble(this.qbfsForm.LXD,this.qbfsForm.LXDName);
this.FSDList=this.assemble(this.qbfsForm.FSD,this.qbfsForm.FSDName);
this.standardDrawer = false
this.verifySarStandard = true
this.commentText = mes.commentText
@@ -361,7 +435,12 @@ export default {
const obj = {
reviewResultsContent:"",
draftTime:"",
releaseTime:"",
releaseTime:"",
expirationDate:"",
LXDName:"",
LXD:"",
FSDName:"",
FSD:"",
}
const json = Object.assign(bringData, bringData.attrInfoMap,item,obj);
this.qbfsForm = JSON.parse(JSON.stringify(json))
@@ -373,10 +452,13 @@ export default {
this.LSBBBUSSFileList=this.assemble(this.qbfsForm.LSBBBUSS,this.qbfsForm.LSBBBUSSName);
this.QTWJBUSSFileList=this.assemble(this.qbfsForm.QTWJBUSS,this.qbfsForm.QTWJBUSSName);
this.GLWJBUSSFileList=this.assemble(this.qbfsForm.GLWJBUSS,this.qbfsForm.GLWJBUSSName);
this.LXDList=this.assemble(this.qbfsForm.LXD,this.qbfsForm.LXDName);
this.FSDList=this.assemble(this.qbfsForm.FSD,this.qbfsForm.FSDName);
this.standardDrawer = false
this.verifySarStandard = true
this.formKey++
this.$forceUpdate()
this.dataLoading = false
})
},
handleTabs(name) {
@@ -402,12 +484,42 @@ export default {
this.saveLoading = false
})
},
processEditFile(id) {
return new Promise((resolve, reject) => {
processEditFile({
id
}).then(res => {
if (res) {
const history = res;
resolve(history)
} else {
reject()
}
}).catch(e => {
reject(e)
})
})
},
//流程提交
handleSubmit(){
this.$refs['qbfsForm'].validate((valid) => {
if (valid) {
this.isSubmit = true
this.saveLoading = true
this.qbfsForm.commentText = this.commentText
const infoList = []
const info = {}
info.reviewResults = this.qbfsForm.reviewResults
info.reviewResultsContent = this.qbfsForm.reviewResultsContent
info.draftTime = this.qbfsForm.draftTime
info.releaseTime = this.qbfsForm.releaseTime
info.expirationDate = this.qbfsForm.expirationDate
info.LXDName = this.qbfsForm.LXDName
info.LXD = this.qbfsForm.LXD
info.FSDName = this.qbfsForm.FSDName
info.FSD = this.qbfsForm.FSD
infoList.push(info)
this.qbfsForm.fileModelList = infoList
let json = JSON.stringify(this.qbfsForm);
this.$http.post('lawss/activiti/completeTask', {
taskIds: this.$route.query.taskIds,
@@ -428,6 +540,7 @@ export default {
}
}
this.isSubmit = false
this.saveLoading = false
}, e => {
});
}else {
@@ -0,0 +1,768 @@
<template>
<div class="qbfs-step2">
<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 === '3' ? 'active' : ''" @click="handleTabs('3')">审批历史</div>
</div>
<div class="content">
<el-form
ref="qbfsForm"
:model="qbfsForm"
:rules="formRules"
style="border: none"
class="label-input-form"
label-width="150px"
>
<div style="flex: auto; overflow: auto" v-show="active === '1'">
<formList
:key = "formKey"
:formSub = "qbfsForm"
:FBGBUSSFileList = "FBGBUSSFileList"
:LSBBBUSSFileList = "LSBBBUSSFileList"
:BZSMBUSSFileList = "BZSMBUSSFileList"
:QTWJBUSSFileList = "QTWJBUSSFileList"
:GLWJBUSSFileList = "GLWJBUSSFileList"
:LXDListSub = "LXDList === undefined ? [] : LXDList"
:FSDListSub = "FSDList === undefined ? [] : FSDList"
:disabledState = "disabledState"
:opinionsShow2 = "true"
:verifySarStandard = "verifySarStandard"
@formCancel="formCancel"
@formChoiceZRRListCancel = "formChoiceZRRListCancel"
></formList>
<div>
<el-collapse accordion>
<el-collapse-item title="回执说明">
<div style="margin: 10px 0;">
<el-input
type="textarea"
:rows="3"
resize="none"
placeholder="请输入意见"
v-model="commentText">
</el-input>
</div>
</el-collapse-item>
</el-collapse>
</div>
</div>
<div style="padding-top: 20px;" v-show="active === '3'">
<div class="flow-list">
<el-table
height="100%"
ref="selection"
:data="detailData"
tooltip-effect="dark"
style="width: 100%"
border
row-key="id"
:no-data-text="listNoDataText"
:header-cell-style="{background: '#f8f8f9', color: '#515a6e'}"
>
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<el-table-column
prop="name"
label="任务步骤"
align="center"
>
</el-table-column>
<el-table-column
prop="assignee"
label="任务受理人"
align="center"
>
</el-table-column>
<el-table-column
prop="createTime"
label="创建时间"
sortable="custom"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.createTime ? $moment(scope.row.createTime).format("YYYY-MM-DD HH:mm:ss") : "" }}</span>
</template>
</el-table-column>
<el-table-column
prop="endTime"
label="完成时间"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.endTime ? $moment(scope.row.endTime).format("YYYY-MM-DD HH:mm:ss") : "" }}</span>
</template>
</el-table-column>
<el-table-column
prop="comment"
label="流程信息"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.commentText }}</span>
</template>
</el-table-column>
<el-table-column
prop="completeFlag"
label="状态"
align="center">
<template slot-scope="scope">
<span>{{ scope.row.endTime ? "已完成" : "未完成" }}</span>
</template>
</el-table-column>
</el-table>
<loading :loading="loading">流程列表加载中</loading>
</div>
</div>
</el-form>
</div>
<ProcessFooter
v-show="verifySarStandard"
show-save
show-submit
:submitLoading="isSubmit"
:saveLoading="saveLoading"
@save="handleSave"
@submit="handleSubmit"
>
</ProcessFooter>
<!-- 福田全公司选人解决方案 -->
<Role-tree
check-box
:is-title="drawerTitle"
:is-visible.sync="drawerModal"
@checkedRole="checkedRoles"
:nodeList="nodeList"
></Role-tree>
<!-- 选择责任人-->
<Role-tree
:is-title="drawerTitle"
:is-visible.sync="modalshowflag"
@checkedRole="checkedRole"
:nodeList="nodeList2"
></Role-tree>
<Role-tree
is-title="选择责任部门对接人"
:is-visible.sync="modalShowRoleFlag"
@checkedRole="checkedRole2"
:nodeList="nodeList2"
></Role-tree>
<loading :loading="dataLoading">正在加载数据</loading>
</div>
</template>
<script>
import ProcessHeader from "../../components/ProcessHeader";
import ProcessFooter from "../../components/ProcessFooter";
import ProcessTitle from "../../components/ProcessTitle";
import { changeAssigneeNew, inboundLiaisonDetail, saveTaskFirst,taskDel,queryTaskFirst,processEditFile } from "api/process";
import formList from './common/formList.vue'
export default {
name: "bussFs2",
components:{
ProcessHeader,
ProcessFooter,
ProcessTitle,
formList
},
data() {
const validateFsOnlineFile = async (rule, value, callback) => {
if(this.qbfsForm.FSD){
let fileObj = await this.processEditFile(this.qbfsForm.FSD)
if (fileObj) {
const editFileInfo = fileObj
console.log(editFileInfo)
if (editFileInfo && editFileInfo.editStatus === '1') {
callback()
} else {
callback(new Error('请先在线编辑,再提交流程!'))
}
}
}
};
return {
dataLoading:true,
bpnId: '',
formKey:1,
active: '1',
modalShowRoleFlag:false,
disabledState:true,
verifySarStandard:true,
FBGBUSSFileList: [],
BZSMBUSSFileList: [],
LSBBBUSSFileList: [],
QTWJBUSSFileList: [],
GLWJBUSSFileList: [],
LXDList: [],
FSDList: [],
fileList: [],
commentText: '',
detailData: [],
nodeList: [],
nodeList2: [],
isSubmit: false,
saveLoading: false,
isTransfer: false,
// 调整处理人抽屉状态
drawerModal: false,
drawerTitle: "", //drawer标题
modalshowflag: false, // drawer开关
loading: false,
qbfsForm:{
entNumber: '',
cnName: '',
enName: '',
entCategory: '',
replaceNumber: '',
replacedNumber: '',
releaseDate: '',
implementDate: '',
reviewDate: '',
jgUser: '',
jgUserId: '',
bussFsSubUser2:'',
bussFsSubUser2Name:'',
},
roleForm: {
jgUser: ""
},
formRules: {
jgUser: [
{required: true, message: "请选择工作组成员", trigger: "change"}
],
bussFsSubUser2Name: [
{required: true, message: "请选择企标复审人", trigger: "change"}
],
reviewResults: [
{required: true, message: "请选择复审结果", trigger: "change"}
],
draftTime: [
{required: true, message: "请选择初稿完成日期", trigger: "change"}
],
releaseTime: [
{required: true, message: "请选择计划标准发布日期", trigger: "change"}
],
LXDName: [
{ required: true, validator: validateFsOnlineFile, trigger: 'blur' }
],
},
}
},
mounted() {
this.bpnId = this.$route.query.bpnId
if (this.bpnId !== undefined) {
this.getDataS()
}
this.processTable()
this.getData()
},
watch:{
'qbfsForm.reviewResults': {
handler (val) {
if (val !== '' && val !== null && typeof (val) !== 'undefined') {
if(val === '1'){
if (this.bpnId === undefined) {
this.getFsFile()
}
}
}
}
},
},
methods:{
async getFsFile(){
let fileObj = await this.getSaveFile("model_fs")
if(fileObj){
this.qbfsForm.FSD = fileObj.id
if(this.qbfsForm.standName){
this.qbfsForm.FSDName = this.qbfsForm.standName + '-复审单'
}else {
this.qbfsForm.FSDName = '复审单'
}
this.FSDList=this.assemble(fileObj.id,this.qbfsForm.FSDName);
this.formKey++
}
},
getSaveFile(model) {
return new Promise((resolve, reject) => {
this.$http.get('/lawss/activiti/saveEditFile', {
model: model
}, {
_this: this
}, res => {
const history = res;
resolve(history)
})
})
},
checkedRole2 (data) {
let idList = ''
let nameList = ''
data.forEach( item => {
if (nameList.length > 0) {
nameList += ','
idList += ','
}
idList += item.id
nameList += item.name
})
if(this.userType === 'QCRBUSS'){
this.qbfsForm.QCRBUSSID=idList;
this.qbfsForm.QCRBUSS=nameList;
this.formKey++
}
if(data !== undefined && data && data.length > 0){
const institutionIdList = this.unique(data.map(item => item.institutionId)).join(",")
const institutionNameList = this.unique(data.map(item => item.institutionName)).join(",")
this.qbfsForm.QCDWID = institutionIdList
this.qbfsForm.QCDW = institutionNameList
}
this.modalShowRoleFlag = false
},
unique(newArr) {
const res = new Map();
return newArr.filter((newArr) => !res.has(newArr) && res.set(newArr, 1));
},
choiceZRRList (type, title, id) {
this.nodeList2 = []
if(type === 'QCRBUSS'){
if ( this.qbfsForm.QCRBUSSID != undefined && this.qbfsForm.QCRBUSSID.length > 0) {
this.nodeList2 = this.qbfsForm.QCRBUSSID.split(',')
}
}
this.userType = type
this.drawerTitle = title
this.modalShowRoleFlag = true
},
formChoiceZRRListCancel(type, title, id){
this.choiceZRRList(type, title, id)
},
formCancel (form, list1,list2,list3,list4,list5,list6,list7) {
this.qbfsForm = form
this.FBGBUSSFileList = list1
this.LSBBBUSSFileList = list2
this.BZSMBUSSFileList = list3
this.QTWJBUSSFileList = list4
this.GLWJBUSSFileList = list5
this.LXDList = list6
this.FSDList = list7
},
processTable() {
this.$http.get("lawss/activiti/get_list_by_instance", {
prcNum: this.$route.query.prcNum,
sortWord: this.shunxu ? this.paixu : "",
shunxu: this.shunxu
}, {
loading: "loading",
_this: this
}, res => {
this.detailData = res
}, e => {
})
},
assemble(ids,names){
let list= new Array();
if(ids && ids !== '' && names && names !== ''){
let idArray=ids.split(',');
let nameArray=names.split(',');
for(let i=0; i<idArray.length; i++){
list.push({id:idArray[i],name:nameArray[i]});
}
}
return list;
},
getStandInfoUpdateById(standId) {
return new Promise((resolve, reject) => {
this.$http.get('lawss/sarBussionessStand/getStandInfoUpdateById', {id: standId}, {
_this: this
}, res => {
if(res && res.data){
const history = res;
resolve(history)
}
})
})
},
getDataS(){
queryTaskFirst({
bpnId: this.$route.query.bpnId
}).then(res => {
let mes = JSON.parse(res.mes)
this.qbfsForm = mes.qbfsForm
this.qbfsForm.WJSCRYBUSS= this.$store.getters.userInfo.userId
this.qbfsForm.WJSCRYBUSSName= this.$store.getters.userInfo.userName
this.qbfsForm['id'] = bringData.id
this.FBGBUSSFileList=this.assemble(this.qbfsForm.FBGBUSS,this.qbfsForm.FBGBUSSName);
this.BZSMBUSSFileList=this.assemble(this.qbfsForm.BZSMBUSS,this.qbfsForm.BZSMBUSSName);
this.LSBBBUSSFileList=this.assemble(this.qbfsForm.LSBBBUSS,this.qbfsForm.LSBBBUSSName);
this.QTWJBUSSFileList=this.assemble(this.qbfsForm.QTWJBUSS,this.qbfsForm.QTWJBUSSName);
this.GLWJBUSSFileList=this.assemble(this.qbfsForm.GLWJBUSS,this.qbfsForm.GLWJBUSSName);
this.LXDList=this.assemble(this.qbfsForm.LXD,this.qbfsForm.LXDName);
this.FSDList=this.assemble(this.qbfsForm.FSD,this.qbfsForm.FSDName);
this.standardDrawer = false
this.verifySarStandard = true
this.commentText = mes.commentText
this.formKey++
this.$forceUpdate()
});
},
getData() {
return new Promise((resolve, reject) => {
inboundLiaisonDetail({
taskIds: this.$route.query.taskIds,
pId: this.$route.query.prcId,
}).then(res => {
if (res) {
const processForm = JSON.parse(res.mesg)
this.getFormFieldList(processForm)
}
}).catch(e => {
})
})
},
/**
* @description: 动态表单读取
*/
async getFormFieldList (item) {
let standObj = await this.getStandInfoUpdateById(item.standId)
this.$nextTick(() => {
const bringData = standObj.data
const obj = {
reviewResultsContent:"",
draftTime:"",
releaseTime:"",
expirationDate:"",
LXDName:"",
LXD:"",
FSDName:"",
FSD:"",
}
const json = Object.assign(bringData, bringData.attrInfoMap,item,obj);
this.qbfsForm = JSON.parse(JSON.stringify(json))
this.qbfsForm.WJSCRYBUSS= this.$store.getters.userInfo.userId
this.qbfsForm.WJSCRYBUSSName= this.$store.getters.userInfo.userName
this.qbfsForm['id'] = bringData.id
this.FBGBUSSFileList=this.assemble(this.qbfsForm.FBGBUSS,this.qbfsForm.FBGBUSSName);
this.BZSMBUSSFileList=this.assemble(this.qbfsForm.BZSMBUSS,this.qbfsForm.BZSMBUSSName);
this.LSBBBUSSFileList=this.assemble(this.qbfsForm.LSBBBUSS,this.qbfsForm.LSBBBUSSName);
this.QTWJBUSSFileList=this.assemble(this.qbfsForm.QTWJBUSS,this.qbfsForm.QTWJBUSSName);
this.GLWJBUSSFileList=this.assemble(this.qbfsForm.GLWJBUSS,this.qbfsForm.GLWJBUSSName);
this.LXDList=this.assemble(this.qbfsForm.LXD,this.qbfsForm.LXDName);
this.FSDList=this.assemble(this.qbfsForm.FSD,this.qbfsForm.FSDName);
this.standardDrawer = false
this.verifySarStandard = true
this.formKey++
this.$forceUpdate()
this.dataLoading = false
})
},
handleTabs(name) {
this.active = name;
},
//流程保存
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.userName)
_formData.append('prcType', 'buss3')
_formData.append('json', JSON.stringify({
qbfsForm: this.qbfsForm,
commentText: this.commentText
}))
saveTaskFirst(_formData).then(res => {
this.saveLoading = false
this.$message.success('保存成功')
this.bpnId = res.result
}).catch(e => {
this.saveLoading = false
})
},
processEditFile(id) {
return new Promise((resolve, reject) => {
processEditFile({
id
}).then(res => {
if (res) {
const history = res;
resolve(history)
} else {
reject()
}
}).catch(e => {
reject(e)
})
})
},
//流程提交
handleSubmit(){
this.$refs['qbfsForm'].validate((valid) => {
if (valid) {
this.isSubmit = true
this.saveLoading = true
this.qbfsForm.commentText = this.commentText
const infoList = []
const info = {}
info.reviewResults = this.qbfsForm.reviewResults
info.reviewResultsContent = this.qbfsForm.reviewResultsContent
info.draftTime = this.qbfsForm.draftTime
info.releaseTime = this.qbfsForm.releaseTime
info.expirationDate = this.qbfsForm.expirationDate
info.LXDName = this.qbfsForm.LXDName
info.LXD = this.qbfsForm.LXD
info.FSDName = this.qbfsForm.FSDName
info.FSD = this.qbfsForm.FSD
infoList.push(info)
this.qbfsForm.fileModelList = infoList
let json = JSON.stringify(this.qbfsForm);
this.$http.post('lawss/activiti/completeTask', {
taskIds: this.$route.query.taskIds,
userId: this.$store.getters.userInfo.userId,
json: json,
}, {
_this: this
}, res => {
if (res.success) {
this.$message.success(res.message)
this.$router.push('/processCenter')
if (this.bpnId !== undefined && this.bpnId !== '') {
let taskId = {
id: this.bpnId
}
taskDel(taskId).then(res=>{
})
}
}
this.isSubmit = false
this.saveLoading = false
}, e => {
});
}else {
this.$message.warning('请检查基础信息表单是否填写完整')
}
})
},
//转办事件
handleTransfer(){
this.drawerModal = true
this.drawerTitle = '转办处理人'
this.selectPeople = row
},
//确认转办
checkedRoles (data) {
this.assigneeNewLoading = true
changeAssigneeNew({
taskId: this.$route.query.taskIds, // 任务id
assignee: data[0].id, // 被委托人
userId: this.$store.getters.userInfo.userId, // 委托人
pId: this.$route.query.prcId // 流程实例
}).then(res => {
this.isTransfer = false
if (res.success) {
this.drawerModal = false
this.$message.success('调整成功')
this.$router.push("/processCenter");
this.processNum()
} else {
this.$message.warning(res.message)
}
})
},
// 请求转换流程图
processNum (row) {
axios.request({
url: '/api/lawss/activiti/getImg?_t=' + new Date().getTime(),
responseType: 'blob',
method: 'get',
params: {
prcNum: this.$route.query.prcNum
}
}).then(res => {
// let blob = new Blob([res.data], {type: 'image/jpg'})
// let url = window.URL.createObjectURL(res.data)
this.processStep = window.URL.createObjectURL(res.data)
})
},
choiceZRRS() {
this.drawerTitle = '请选择企标复审人'
this.nodeList2 = [];
if (this.qbfsForm.bussFsSubUser2) {
this.nodeList2 = this.qbfsForm.bussFsSubUser2.split(",");
}
this.modalshowflag = true;
},
checkedRole(data) {
let idList = "";
let nameList = "";
data.forEach(item => {
if (nameList.length) {
nameList += ",";
idList += ",";
}
idList += item.id;
nameList += item.name;
});
this.$set(this.qbfsForm, 'jgUser', nameList)
this.$set(this.qbfsForm, 'jgUserId', idList)
if(this.qbfsForm.jgUser){
this.$refs.qbfsForm.validateField('jgUser')
}
this.$set(this.qbfsForm, 'bussFsSubUser2Name', nameList)
this.$set(this.qbfsForm, 'bussFsSubUser2', idList)
if(this.qbfsForm.bussFsSubUser2Name){
this.$refs.qbfsForm.validateField('bussFsSubUser2Name')
}
},
/**
* @Description: 点击下载
*/
downloadFile(attId) {
if (attId != null && attId !== "") {
window.location.href = "/api/att/attFile/downloadFileForSar?fileId=" + attId;
} else {
this.$message.error("请选择要下载的文件");
}
},
downloadFileByWater(attId, fileSuffix) {
let fileExtension = fileSuffix.substring(fileSuffix.lastIndexOf(".") + 1);
if (fileExtension !== "pdf" && fileExtension !== "PDF") {
this.$message.error("水印下载仅支持PDF,pdf格式文件");
} else {
if (attId != null && attId !== "") {
window.location.href = "/api/att/attFile/downloadFileForSarWaterMark?fileId=" + attId;
} else {
this.$message.error("请选择要下载的文件");
}
}
},
},
computed: {
listNoDataText() {
return this.processType === 1 ? "暂无待办流程" : "暂无已办流程";
}
},
};
</script>
<style lang="less" scoped>
@import '~@/assets/styles/style';
.qbfs-step2 {
/deep/ .el-drawer__container {
.prc-content-border {
border: none;
padding: 0 20px 0;
}
}
.fileClass {
cursor: pointer;
}
.fileClass:hover {
color: #0c91e5;
}
p {
& > a {
cursor: pointer;
}
& > i {
display: inline-block;
margin-left: 3px;
width: 18px;
height: 16px;
background-repeat: no-repeat;
background-size: 100% 100%;
background-position: center center;
vertical-align: sub;
cursor: pointer;
}
.icon-download {
background-image: url("~assets/images/shangqi/img/download.png");
}
.icon-download2 {
background-image: url("~assets/images/shangqi/img/download2.png");
}
}
.choiceBtn {
.el-button--primary {
width: 150px;
}
}
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 {
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;
right: 0;
top: 0;
}
.accessStandardsAndRegulations {
height: 100%;
}
}
}
.add-form-el-select {
/deep/ .el-select {
width: 210px;
}
}
.demo-drawer-content {
margin-top: 10px;
}
}
</style>
+9
View File
@@ -2019,6 +2019,15 @@ const routes = [
title: '企标复审流程'
}
},
{
path: '/bussFs2',
name: 'bussFs2',
component: () => import('@/pages/processCenter/pages/creatProcess/qbfs/step4.vue'),
meta: {
requireAuth: true,
title: '企标复审流程'
}
},
//企标复审流程
{
path: '/qbfsStep1',