【修改】修改报告上传流程

This commit is contained in:
zhoulingpo
2023-05-09 09:20:54 +08:00
parent 4bd06f2360
commit 64bee0eb7d
15 changed files with 660 additions and 368 deletions
+1 -1
View File
@@ -8,7 +8,7 @@
<div class="menu-data" @click="handleRouter(item)"
:style="{'padding-left': item.level >= 2 ? '30px' : '10px'}">
<div class="menu-data-flex">
<img class="menu-icon" v-if="item.icon" :src="item.icon" alt="">
<!-- <img class="menu-icon" v-if="item.icon" :src="item.icon" alt="">-->
<span> <i class="icon-level2" v-if="item.level===3"></i> {{ item.label }}</span>
</div>
</div>
+190 -16
View File
@@ -3,6 +3,155 @@
<div>
<!-- 弹窗,dialogModel则作为单独组件使用 -->
<el-dialog
v-if="isOrg"
append-to-body
:title="showTitle"
:visible.sync="isVisible"
:close-on-click-modal="false"
class="org-table"
@close="handleClose">
<template >
<div class="search-area search-new">
<el-form
:model="searchForm"
inline
class="label-input-form"
@keyup.enter.native="handleSearch">
<el-row :gutter="24">
<el-col :xl="8" :lg="8">
<el-form-item label="部门名称" class="search-item">
<!-- <el-input :placeholder="'根据角色名查询'" class="search-item" v-model="searchForm.roleName"/>-->
<el-input v-model="searchForm.orgName" maxlength="50" placeholder="请输入部门名称"></el-input>
</el-form-item>
</el-col>
<el-col :xl="8" :lg="8">
<el-form-item label="部门编码" class="search-item">
<!-- <el-input-->
<!-- v-model="searchForm.uname"-->
<!-- placeholder="根据姓名查询"-->
<!-- clearable></el-input>-->
<el-input :placeholder="'请输入部门编码'" v-model="searchForm.orgCode"/>
</el-form-item>
</el-col>
<el-col :xl="8" :lg="24">
<el-form-item class="tag-btns">
<!-- :loading="loading.searching"-->
<el-button
:disabled="loading.searching"
type="primary"
size="small"
@click="handleSearch">查询
</el-button>
<el-button
size="small"
@click="handleReset">重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="org-user v-class">
<el-table
v-if="isVisible"
ref="orgTable"
:data="tableData"
tooltip-effect="dark"
style="width: 100%"
border
stripe
:header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }"
height="350"
v-loading="loading.loadData"
:cell-class-name="cellClassName"
@select="selectionRow"
@select-all="selectionRowAll">
<el-table-column v-if="maxSelected && maxSelected == 1" label="" width="35" align="center">
<template slot-scope="scope">
<el-radio class="tableRadio" v-model="tableChecked" @change="radioChange(scope.row)"
:label="scope.row.USID">{{ null }}
</el-radio>
</template>
</el-table-column>
<el-table-column
v-else
type="selection"
width="55"
align="center"
:selectable="isSelectable">
</el-table-column>
<!-- v-if="workNumFlag"-->
<el-table-column
label="部门名称"
width="120"
prop="orgName"
align="center"
show-overflow-tooltip>
</el-table-column>
<el-table-column
label="部门编码"
width="120"
:prop="orgCode"
align="center"
show-overflow-tooltip>
</el-table-column>
<el-table-column
prop="orgLevel"
label="部门级别"
align="center"
show-overflow-tooltip>
</el-table-column>
</el-table>
</div>
<el-pagination
class="pagination"
:current-page="page"
:page-sizes="[5, 10, 20]"
:pageSize="pageSize"
:total="total"
@current-change="handlePageChange"
@size-change="handlePageSizeChange"
layout="total, sizes, prev, pager, next, jumper"
></el-pagination>
<template v-if="btnFlag">
<!-- 已选择的用户 -->
<template v-if="maxSelected !== 1">
<el-divider content-position="left">已选择</el-divider>
<div class="checked-user-list">
<el-tag
size="medium"
closable
v-for="item in checkedList"
:key="item.usid || item.USID || item.id"
@close="handleRemove(item)">{{ item.uname || item.USNAME || item.name || item.orgName}}
</el-tag>
<el-button
type="danger"
size="mini"
@click="handleCleanChecked"
v-show="checkedIdList.length > 1">全部删除
</el-button>
</div>
</template>
<div style="text-align: right;" class="dialog-footer">
<el-button size="small"
type="primary"
class="common-button-primary"
@click="handleConfirm">
</el-button>
<el-button size="small"
class="common-button-default"
@click="handleCancel">
</el-button>
</div>
</template>
</template>
</el-dialog>
<el-dialog
v-else
append-to-body
:title="showTitle"
:visible.sync="isVisible"
@@ -211,6 +360,10 @@ export default {
name: 'OrgTable',
mixins: [],
props: {
isOrg: {
type: Boolean,
default: false
},
title: {
type: String,
default: '组织机构'
@@ -422,6 +575,8 @@ export default {
} else if (!chkItem.uname && chkItem.USNAME) {
chkItem.uname = chkItem.USNAME
chkItem.USNAME = chkItem.USNAME
}else{
chkItem.orgName = chkItem.orgName
}
})
this.$emit('confirm', this.checkedList, checkedIdList)
@@ -531,23 +686,42 @@ export default {
}
// let this.notUserId.length > 0 ? this.notUserId.toString() : null
// getRoleAndUserByOrgIdPage(
if(this.isOrg){
this.$api.org.sysOrgList(param).then((res) => {
this.loading.loadData = false
this.loading.searching = false
if (res.ok) {
this.total = res.data.total
this.tableData = res.data.records
const checkedRow = []
this.tableData.map(dataItem => {
const id = dataItem.usid || dataItem.USID || dataItem.orgId || dataItem.id
if (this.checkedIdList.includes(id)) {
checkedRow.push(dataItem)
}
})
this.checkedRow(checkedRow)
}
})
}else{
this.$api.user.sysUserList(param).then((res) => {
this.loading.loadData = false
this.loading.searching = false
if (res.ok) {
this.total = res.data.total
this.tableData = res.data.records
const checkedRow = []
this.tableData.map(dataItem => {
const id = dataItem.usid || dataItem.USID || dataItem.orgId || dataItem.id
if (this.checkedIdList.includes(id)) {
checkedRow.push(dataItem)
}
})
this.checkedRow(checkedRow)
}
})
this.$api.user.sysUserList(param).then((res) => {
this.loading.loadData = false
this.loading.searching = false
if (res.ok) {
this.total = res.data.total
this.tableData = res.data.records
const checkedRow = []
this.tableData.map(dataItem => {
const id = dataItem.usid || dataItem.USID || dataItem.orgId || dataItem.id
if (this.checkedIdList.includes(id)) {
checkedRow.push(dataItem)
}
})
this.checkedRow(checkedRow)
}
})
}
},
// handleRowSelect(selection, row) {
+37 -2
View File
@@ -53,6 +53,24 @@
:loading="TransferLoading"
v-if="showTransfer" round
>转办</el-button>
<el-button
type="primary"
size="large"
class="common-button-primary"
@click="handleSubmit('n')"
:loading="btyLoading"
v-if="showNoAgree" round>
不同意
</el-button>
<el-button
type="primary"
size="large"
class="common-button-primary"
@click="handleSubmit('y')"
:loading="tyLoading"
v-if="showAgree" round>
同意
</el-button>
<el-button
type="primary"
size="large"
@@ -128,6 +146,22 @@ export default {
name: 'ProcessFooter',
mixins: [],
props: {
btyLoading:{
type: Boolean,
default: false
},
tyLoading:{
type: Boolean,
default: false
},
showAgree:{
type: Boolean,
default: false
},
showNoAgree:{
type: Boolean,
default: false
},
// 是否显示结束流程按钮
showOver: {
type: Boolean,
@@ -249,8 +283,9 @@ export default {
handleReset () {
this.$emit('reset')
},
handleSubmit () {
this.$emit('submit')
handleSubmit (type) {
this.$emit('submit',type)
},
cancel () {
if (this.$store.state.detailMap !== '') {
-1
View File
@@ -110,7 +110,6 @@ export default {
alert("hhhh")
},
addToListTwo() {
debugger
let currentValue = this.listTwo.slice();
const itemsToBeMoved = [];
const key = this.props.key;
+32
View File
@@ -14,3 +14,35 @@ export const basMessage = new Esenum({
mark: {name: "水印前缀", value: "WATERMARK_PREFIX",index:0}
})
export const privacyLevelOptions= new Esenum([
{
value:'外部公开',
label:'外部公开'
},
{
value:'普通商密',
label:'普通商密'
},
{
value:'核心商密',
label:'核心商密'
},
{
value:'内部公开',
label:'内部公开'
},
{
value:'用户信息',
label:'用户信息'
},
{
value:'敏感信息',
label:'敏感信息'
},
])
export const confidentialLevelOptions = new Esenum([
{
value:'一般隐私',
label:'一般隐私'
}
])
+1
View File
@@ -121,6 +121,7 @@
default-expand-all
:filter-node-method="filterNode"
ref="tree"
check-strictly
@check="getHalfCheckedNode"
>
+21
View File
@@ -55,6 +55,9 @@
:filter-node-method="filterNode"
ref="tree"
@check="getHalfCheckedNode"
check-strictly
@check-change="setCheckedNodes"
:key="treeKey"
>
<template slot-scope="{node}">
<!-- <span v-if="node.label.length <= 10">{{ // node.label }}</span>-->
@@ -307,6 +310,7 @@ export default {
},
data() {
return {
treeKey:'',
watermarkText: '', // 水印
fullscreen: false,
/* =============================================== 操作日志 =============================================== */
@@ -464,6 +468,16 @@ export default {
},
methods: {
setCheckedNodes(node, checked) {
node.checked = checked;
if (node.children && node.children.length > 0) {
for (let child of node.children) {
this.setCheckedNodes(child, checked);
}
}
},
init() {
this.getTreeLabel()
// this.labelList();
@@ -782,6 +796,13 @@ export default {
};
this.tags = [] // 关键词
this.dialogReport = true;
// this.$router.push({
// path:'/reportprocess/launch',
// query:{
// id:this.$route.query.id,
// isBegin:1
// }
// })
},
// 必填项
checkReportF() {
@@ -159,7 +159,6 @@ export default {
if (this.$route.query.taskDefinitionKey == 'reEdit' ){
// 有idde
console.log(this.value)
debugger
var idsList=this.checkIds.filter(item=>{
if(item.id && item.id !=''){
return item
@@ -163,7 +163,6 @@ export default {
this.disabled=true
}
this.getProcessDetail(params).then(res=>{
debugger
this.tableData = JSON.parse(this.processOld.dataJson)
this.$set(this.applicationForm,'power',this.tableData[0].power)
this.$set(this.applicationForm,'applyReason',this.tableData[0].applyReason)
@@ -19,18 +19,6 @@
<!-- </el-form-item>-->
<!-- </el-col>-->
<!-- </el-row>-->
<el-row :gutter="24">
<el-col :span="24">
<el-form-item label="审批结果:" prop="flag"
label-width="132px" class="add-form-item"
:class="{'form-item-disabled': formdisableflag}">
<el-radio-group :disabled="formdisableflag" v-model="examineForm.flag" >
<el-radio :label="'1'">同意</el-radio>
<el-radio :label="'2'">不同意</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="24">
<el-col :span="24">
<el-form-item :prop="!formdisableflag?'approvalOpinion':''" label-width="132px" class="add-form-item">
@@ -44,6 +32,17 @@
</el-form-item>
</el-col>
</el-row>
<process-footer
v-if="!isDisable"
showCancel
:show-transfer="isShowTran"
:show-agree="isAgree"
:show-no-agree="isNoAgree"
:btyLoading="isBty"
:tyLoading="isTy"
@transfer="handleTransfer"
@submit="handleSubmit"
></process-footer>
<!-- <el-row :gutter="24">-->
<!-- <el-col :span="24">-->
<!-- <el-form-item label="附件" prop="entStandText" label-width="132px" class="add-form-item"-->
@@ -63,12 +62,18 @@
</el-form>
</div>
</template>
<script>
import processFooter from '@/components/ProcessFooter'
export default {
name: 'AuditOperation',
components:{
processFooter,
},
props: {
isDisable:{
type:Boolean,
@@ -76,11 +81,32 @@ export default {
},
examine:{
type:Object
},
taskId:{
type:String,
default:''
},
prcId:{
type:String,
default:''
},
prcType:{
type:String,
default:''
}
},
data () {
return {
isBty:false,
isTy:false,
isNoAgree: true,
isAgree: true,
visibleTree: false,
isSubmit: false,
tranLoading: false,
isShowTran: true,
isShowSubmit: true,
examineForm: {
planReasonFile: '',
oldName: '',
@@ -107,19 +133,42 @@ export default {
}
},
methods: {
handleTransfer(){
debugger
this.$emit('handleTransfer')
},
handleSubmit(type) {
debugger
if(type=='n'){
// 校验原因是否填写
this.examineForm.flag=2
if(this.examineForm.approvalOpinion==''){
this.$message.warning("请您填写原因")
return
}
}else{
this.examineForm.flag=1
}
this.$emit('handleSubmit')
// if (this.$refs.operationRef.submit()) {
// 通过了校验 需要整合参数 拿到原来的dataJson 再把新添加的增进去 在拼成dataJson
},
/** 在提交表单的校验 通过继续执行 */
submit () {
this.isSubmit = false
let v
this.$refs.examineForm.validate((valid) => {
v=valid
if (valid) {
this.isSubmit = true
return true
} else {
this.$message.warning('请检查表单是否填写正确')
return false
}
})
return v
}
}
+224 -179
View File
@@ -2,14 +2,6 @@
<div>
<el-form ref="processFormRef" :model="form" label-width="150px"
:rules="processFormRule" class="label-input-form" size="medium">
<el-row>
<el-col :span="9">
<el-form-item label="流程名称:" prop="prcName">
<el-input :disabled="formControl || formControlname" v-model="form.prcName"
placeholder="请输入流程名称"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-form-item label="报告名称:" prop="name">
@@ -28,22 +20,52 @@
<el-row>
<el-col :span="9">
<el-form-item label="报告所属部门:" prop="department">
<el-input :disabled="formControl" v-model="form.department" placeholder="请选择报告所属部门"
maxlength="100"></el-input>
<el-input readonly :disabled="formControl" v-model="form.departmentName" @click.na.native="handleClick" placeholder="请选择报告所属部门"
></el-input>
</el-form-item>
</el-col>
<el-col :span="9" :offset="6">
<el-form-item label="报告涉密等级:" prop="confidentialLevel">
<el-select :disabled="formControl" v-model="form.confidentialLevel" placeholder="请选择报告涉密等级">
<el-option v-for="item in dict['classified_level']" :key="item.itemValue" :label="item.itemName"
:value="item.itemValue">
</el-option>
</el-select>
<el-form-item label="标签:" prop="department">
<el-cascader :disabled="formControl" width="100%" v-model="form.labelList" :options="cascaderOptions"
filterable
:props="{ checkStrictly: true }" clearable placeholder="请选择标签">
<template slot-scope="{ node, data }">
<span :title="data.label">{{ data.label }}</span>
</template>
</el-cascader>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-col :span="9" >
<el-form-item label="报告涉密等级:" prop="confidentialLevel">
<el-select :disabled="formControl" v-model="form.confidentialLevel" placeholder="请选择报告涉密等级" @change="reportLevel">
<el-option v-for="item in privacyLevelOptions " :key="item.value" :label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="9" :offset="6" v-if="isShowTime">
<el-form-item label="保密到期日期:" prop="secrecyLast">
<el-date-picker :disabled="formControl" v-model="form.secrecyLast" type="year" value-format="yyyy"
placeholder="请选择保密到期日期"
prefix-icon="null" :picker-options="proOptions"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9" >
<el-form-item label="报告隐私等级:" prop="privacyLevel">
<el-select :disabled="formControl" v-model="form.privacyLevel" placeholder="请选择报告隐私等级">
<el-option v-for="item in confidentialLevelOptions" :key="item.value" :label="item.value"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="9" :offset="6">
<el-form-item label="关键词:" prop="tags">
<vue-tags-input :disabled="formControl" :class="{'is-diable':formControl}" placeholder="请输入关键词"
v-model="form.tags" :tags="tags"
@@ -64,30 +86,10 @@
}"/>
</el-form-item>
</el-col>
<el-col :span="9" :offset="6">
<el-form-item label="报告隐私等级:" prop="privacyLevelOptions">
<el-select :disabled="formControl" v-model="form.privacyLevelOptions" placeholder="请选择报告隐私等级">
<el-option v-for="item in dict['privacy_level']" :key="item.itemValue" :label="item.itemName" :value="item.itemValue">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-form-item label="标签:" prop="department">
<el-cascader :disabled="formControl" width="100%" v-model="form.labelList" :options="cascaderOptions"
filterable
:props="{ checkStrictly: true }" clearable placeholder="请选择标签">
<template slot-scope="{ node, data }">
<span :title="data.label">{{ data.label }}</span>
</template>
</el-cascader>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="18">
<el-col :span="24">
<el-form-item label="内容摘要:" prop="mainContent">
<el-input :disabled="formControl" v-model="form.mainContent" placeholder="请填写内容摘要" type="textarea"
maxlength="500"></el-input>
@@ -95,63 +97,45 @@
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-col :span="5">
<el-form-item label="上传报告:" prop="fileId">
<el-upload action="#" :http-request="(params) => uploadFile(params)" :show-file-list="true"
<el-upload action="#" :http-request="(params) => uploadFile(params)" :show-file-list="false"
:before-upload="beforeUploadFile" :on-remove="handleRemove"
:file-list="fileList">
<el-button :disabled="formControl">选择文件</el-button>
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-form-item label="权限设置:" required>
<el-button :disabled="formControl" @click="openDialog">权限设置</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-dialog title="权限设置" :visible.sync="dialogUser" width="950px" :close-on-click-modal="false"
:close-on-press-escape="false" modal-append-to-body append-to-body>
<div class="user-form">
<div style="text-align: center">
<newTranslate
@loadMore="loadMore"
style="text-align: left; display: inline-block"
filterable
v-model="listOne"
:titles="['全部人员', '预览权限人员','预览和下载权限人员']"
:props="{
key: 'value',
label: 'desc'
}"
:loadingMore="loadingMore"
:data="allUser"
:listTwo.sync="listTwo"
:button-texts="['全部', '预览', '预览与下载']"
></newTranslate>
</div>
<div class="done">
<el-button type="default" @click="closeD">取消</el-button>
<el-button type="primary" v-if="!formControl" @click="saveCheck">确定</el-button>
<el-button class="uploadBtn" :disabled="formControl">选择文件</el-button>
</div>
</div>
</el-dialog>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="8">
<span class="uploadFile" v-if="form.fileName">
<span :title="fileList[0].name">{{fileList[0].name}}</span>
<i class="el-icon-cloudy iconstyle"></i>
<i class="el-icon-delete iconstyle" @click="delFile"></i>
</span>
</el-col>
</el-row>
</el-form>
<orgTable :visible.sync="visibleOrgTable" title="人员列表" dialog-model :config="{
value: orgTableVal,
valueName: orgTableValName
}" :workNumFlag="true" :isOrg="true" :maxSelected="100" @confirm="isTreeOk"></orgTable>
</div>
</template>
<script>
import {fileType} from '@/utils/fileType'
import newTranslate from "../../../components/newTranslate";
import VueTagsInput from '@johmun/vue-tags-input';
import orgTable from '@/components/OrgTable'
import {privacyLevelOptions,confidentialLevelOptions} from '@/utils/Enum/enum'
export default {
dicts:['classified_level','privacy_level'],
dicts: ['classified_level', 'privacy_level'],
components: {
VueTagsInput,
newTranslate
newTranslate,
orgTable
},
props: {
@@ -169,14 +153,18 @@ export default {
},
data() {
return {
loadingMore:false,
privacyLevelOptions,
confidentialLevelOptions,
orgTableVal:'',
orgTableValName: '',
visibleOrgTable:false,
isShowTime:false, //是否显示日期
loadingMore: false,
listTwo: [], //存储下载预览的
allUser: [], //存储全部的
listOne: [1],
dialogUser: false,
confidentialLevelOptions: [],
cascaderOptions: [],
privacyLevelOptions: [],
tags: [],
pickerOptions: {
disabledDate(time) {
@@ -185,7 +173,7 @@ export default {
},
form: {},
processFormRule: {
fileId:[
fileId: [
{
required: true,
message: "上传报告不能为空",
@@ -242,25 +230,57 @@ export default {
pageNo: 1,
pageSize: 10
},
fileList:[]
fileList: []
}
},
watch:{
processForm(val){
debugger
this.form=this.processForm
watch: {
processForm(val) {
this.form = this.processForm
}
},
methods: {
loadMore(){
handleClick(){
this.orgTableVal=this.form.department
this.orgTableValName=this.form.departmentName
this.visibleOrgTable=true
},
isTreeOk(checkedList){
const parts = []
const partsName = []
checkedList.map((item, index) => {
parts.push(item.id)
partsName.push(item.orgName)
})
this.qcrList = checkedList
this.form.department = parts.toString()
this.form.departmentName = partsName.toString()
},
delFile() {
this.fileList=[]
this.form.fileName = '';
this.form.fileId = '';
},
reportLevel(item){
let imList=['普通商密','核心商密']
if( imList.indexOf(this.form.confidentialLevel)>-1){
this.isShowTime=true
this.form.secrecyLast = ''
}else{
this.isShowTime=false
this.form.secrecyLast = ''
}
},
loadMore() {
this.q.pageNo++
this.getAllPerson()
},
closeD() {
if (this.$route.query.isBegin || this.$route.query.isDraft) {
this.listOne=[]
this.listTwo=[]
}else{
this.listOne = []
this.listTwo = []
} else {
}
this.dialogUser = false
@@ -284,30 +304,31 @@ export default {
}
return obj
})
this.form.powerList=[...list1,...list2]
this.form.powerList = [...list1, ...list2]
this.dialogUser = false
} else {
//如果是发起人编辑节点
let list1 = this.listOne.map(item => {
let obj = {
userId: item.id,
power: 1
}
return obj
})
let list2 = this.listTwo.map(item => {
let obj = {
userId: item.id,
power: 2
}
return obj
})
this.form.powerList = [...list1, ...list2]
//如果是发起人编辑节点
let list1 = this.listOne.map(item => {
let obj = {
userId: item.id,
power: 1
}
return obj
})
let list2 = this.listTwo.map(item => {
let obj = {
userId: item.id,
power: 2
}
return obj
})
this.form.powerList = [...list1, ...list2]
}
} else {
}
}else{}
},
//获取全部人员
},
//获取全部人员
getAllPerson() {
this.$api.user.sysUserList(this.q).then(({data}) => {
let newlist = data.records.map(item => {
@@ -318,7 +339,7 @@ export default {
}
return obj
})
this.allUser=[...this.allUser,...newlist]
this.allUser = [...this.allUser, ...newlist]
this.total = data.total
this.q.pageNo = data.current
this.q.pageSize = data.size
@@ -326,77 +347,76 @@ export default {
this.q.pageNo = 1
this.sysUserList()
}
this.loadingMore=false
this.loadingMore = false
})
},
handleChange(value, direction, movedKeys) {
console.log(value, direction, movedKeys);
},
openDialog() {
this.dialogUser = true
},
handleChange(value, direction, movedKeys) {
console.log(value, direction, movedKeys);
},
openDialog() {
this.dialogUser = true
},
handleRemove(file, fileList) {
console.log(file, fileList);
this.form.fileName ='';
this.form.fileName = '';
this.form.fileId = '';
this.fileList=[]
this.fileList = []
},
//用递归方式去除children
getTreeData(data) {
for (var i = 0; i < data.length; i++) {
if (data[i].children.length < 1) {
// children若为空数组,则将children设为undefined
data[i].children = undefined;
} else {
// children若不为空数组,则继续 递归调用 本方法
this.getTreeData(data[i].children);
//用递归方式去除children
getTreeData(data) {
for (var i = 0; i < data.length; i++) {
if (data[i].children.length < 1) {
// children若为空数组,则将children设为undefined
data[i].children = undefined;
} else {
// children若不为空数组,则继续 递归调用 本方法
this.getTreeData(data[i].children);
}
}
return data;
},
updateList() {
this.$api.report.labelList().then(res => {
this.cascaderOptions = this.getTreeData(res.data)
})
this.$forceUpdate()
},
// 上传文件
uploadFile(params) {
let fd = new FormData();
fd.append('file', params.file);
this.$api.report.reportUploadFile(fd).then(({data}) => {
this.form.fileName = data.name;
this.form.fileId = data.key;
this.fileList = [data]
})
},
// 上传文件前
beforeUploadFile(file) {
let realFileType = file.name.split('.')[file.name.split('.').length - 1];
const isType = (
file.type === fileType.pdf || file.type === fileType.xls || file.type === fileType.xlsx || file.type === fileType.doc || file.type === fileType.docx || file.type === fileType.ppt || file.type === fileType.pptx
|| realFileType === 'pdf' || realFileType === 'xls' || realFileType === 'xlsx' || realFileType === 'doc' || realFileType === 'docx' || realFileType === 'ppt' || realFileType === 'pptx'
);
const isSize = file.size / 1024 / 1024 < 200;
if (!isType) {
this.$message.error('仅能上传 pdfxlsxlsxdocdocxpptpptx 格式文件');
}
if (!isSize) {
this.$message.error('您最大可上传200M文件');
}
return isType && isSize;
},
submit() {
let flag
this.$refs.processFormRef.validate(v => {
flag = v
return v
})
return flag
}
return data;
},
updateList() {
this.$api.report.labelList().then(res => {
this.cascaderOptions = this.getTreeData(res.data)
})
this.$forceUpdate()
},
// 上传文件
uploadFile(params) {
let fd = new FormData();
fd.append('file', params.file);
this.$api.report.reportUploadFile(fd).then(({data}) => {
this.form.fileName = data.name;
this.form.fileId = data.key;
this.fileList=[data]
})
},
// 上传文件前
beforeUploadFile(file) {
let realFileType = file.name.split('.')[file.name.split('.').length - 1];
const isType = (
file.type === fileType.pdf || file.type === fileType.xls || file.type === fileType.xlsx || file.type === fileType.doc || file.type === fileType.docx || file.type === fileType.ppt || file.type === fileType.pptx
|| realFileType === 'pdf' || realFileType === 'xls' || realFileType === 'xlsx' || realFileType === 'doc' || realFileType === 'docx' || realFileType === 'ppt' || realFileType === 'pptx'
);
const isSize = file.size / 1024 / 1024 < 200;
if (!isType) {
this.$message.error('仅能上传 pdfxlsxlsxdocdocxpptpptx 格式文件');
}
if (!isSize) {
this.$message.error('您最大可上传200M文件');
}
return isType && isSize;
},
submit() {
let flag
this.$refs.processFormRef.validate(v => {
flag = v
return v
})
return flag
}
},
mounted()
{
mounted() {
this.updateList()
this.getAllPerson()
}
@@ -448,5 +468,30 @@ export default {
}
}
}
.uploadBtn {
vertical-align: super;
}
.uploadFile{
margin-left: -35px;
height: 36px;
display: inline-block;
span{
display: inline-block;
color:#555;
max-width: 200px;
font-size: 15px;
word-break: keep-all;
text-overflow: ellipsis;
overflow: hidden;
}
.iconstyle{
margin-left: 5px;
font-size: 25px;
vertical-align: center;
line-height: 40px;
color: #555;
cursor: pointer;
}
}
</style>
+48 -57
View File
@@ -12,26 +12,19 @@
:process-form="processForm"></report-form>
</div>
<div class="process_content" v-if="$route.query.type !=='yiban'">
<span class="base_title">审核信息</span>
<audit-operation ref="operationRef" :prcId="prcId" :prcType="prcType" :taskId="taskId"
:examine="submitjson" :is-disable="disabled" @handleSubmit="handleSubmit" @handleTransfer="handleTransfer"></audit-operation>
</div>
<div class="process_content">
<span class="base_title">审批历史</span>
<process-approval-history :prcNum="prcNum"></process-approval-history>
</div>
<!-- v-if="$route.query.type !=='yiban'"-->
<div class="process_content" v-if="$route.query.type !=='yiban'">
<span class="base_title">审核信息</span>
<audit-operation ref="operationRef" :examine="submitjson" :is-disable="disabled"></audit-operation>
</div>
</div>
<process-footer
v-if="!disabled"
showCancel
:show-transfer="isShowTran"
:show-submit="isShowSubmit"
:submitLoading="isSubmit"
:TransferLoading="tranLoading"
@transfer="handleTransfer"
@submit="handleSubmit"
></process-footer>
<!-- <process-choose-tree-->
<!-- dialog-model-->
<!-- :visible.sync="visibleTree"-->
@@ -49,8 +42,7 @@
<script>
import processHeader from '@/components/ProcessHeader'
import processFooter from '@/components/ProcessFooter'
import processChooseTree from '../../components/OrgTable'
import processChooseTree from '@//components/OrgTable'
import processApprovalHistory from '@/components/ProcessApprovalHistory'
import auditOperation from './components/AuditOperation'
import reportTable from './components/reportForm'
@@ -63,11 +55,10 @@ export default {
components: {
processHeader,
reportTable,
processFooter,
processApprovalHistory,
auditOperation,
processChooseTree,
reportForm
reportForm,
processChooseTree
},
data () {
return {
@@ -83,11 +74,8 @@ export default {
}]
},
processForm: { prcName : ''},
visibleTree: false,
isSubmit: false,
tranLoading: false,
isShowTran: true,
isShowSubmit: true,
formControl: true,
disabled:false,
assignForm: {},
@@ -102,7 +90,7 @@ export default {
},
PERMISSION,
submitjson:{},
prcType:2
prcType: 4
}
},
created () {
@@ -142,22 +130,22 @@ export default {
// 选择转办
handleDblClick(treeNode) {
this.JuggleSub(this.taskId).then(res=> {
if(res){
if( treeNode[0].USID == this.$store.getters.userInfo.usid){
this.$message.warning("您不能转办给自己")
}else{
this.$api.process.changeAssignee({
taskId: this.taskId,
assignee: treeNode[0].USID,
userId: this.$store.getters.userInfo.usid,
pId: this.prcId
}).then(() => {
this.$message.success('转办成功')
this.$router.push({path: '/userCenter/processCenter', query: {id: this.$route.query.id}})
this.visibleTree = false
})
}
if(res){
if( treeNode[0].USID == this.$store.getters.userInfo.usid){
this.$message.warning("您不能转办给自己")
}else{
this.$api.process.changeAssignee({
taskId: this.taskId,
assignee: treeNode[0].USID,
userId: this.$store.getters.userInfo.usid,
pId: this.prcId
}).then(() => {
this.$message.success('转办成功')
this.$router.push({path: '/userCenter/processCenter', query: {id: this.$route.query.id}})
this.visibleTree = false
})
}
}
})
// taskId: this.$store.getters.getHandleInfo.taskId, // 任务id
// assignee: treeNode[0].userId, // 转办人
@@ -166,25 +154,28 @@ export default {
},
handleSubmit() {
this.JuggleSub(this.taskId).then(res=> {
if(res){
let submit = JSON.parse(this.processOld.submitJson)
let dataJson = this.processOld.dataJson
let submitJson = JSON.stringify({...submit, ...this.$refs.operationRef.examineForm})
this.completeProcess({
dataJson,
submitJson,
taskId: this.taskId,
userId: this.$store.getters.userInfo.usid,
prcType: this.prcType
})
}
})
// if (this.$refs.operationRef.submit()) {
// 通过了校验 需要整合参数 拿到原来的dataJson 再把新添加的增进去 在拼成dataJson
handleSubmit(type) {
if(this.$refs.operationRef.submit()){
this.JuggleSub(this.taskId).then(res=> {
if(res){
let submit = JSON.parse(this.processOld.submitJson)
let dataJson = this.processOld.dataJson
let submitJson = JSON.stringify({...submit, ...this.$refs.operationRef.examineForm})
this.completeProcess({
dataJson,
submitJson,
taskId: this.taskId,
userId: this.$store.getters.userInfo.usid,
prcType: this.prcType
})
}
})
}
}
// if (this.$refs.operationRef.submit()) {
// 通过了校验 需要整合参数 拿到原来的dataJson 再把新添加的增进去 在拼成dataJson
},
}
}
+41 -94
View File
@@ -3,7 +3,9 @@
<div class="process_box">
<process-header v-if="$route.query.isBegin || $route.query.isDraft" :title="'发起流程'"></process-header>
<process-header v-else-if="$route.query.type == 'yiban'" :title="'已办流程'" :proceesNum="prcNum"></process-header>
<process-header v-else :title="'发起人修改'" :proceesNum="prcNum"></process-header>
<process-header v-else-if=" $route.query.taskDefinitionKey == 'reEdit'" :title="'发起人修改'" :proceesNum="prcNum"></process-header>
<process-header v-else="" :title="'发起流程'" ></process-header>
<div class="procedure">
<div class="process_content">
@@ -23,29 +25,16 @@
:rules="assignFormRules" class="label-input-form" size="medium">
<el-row>
<el-col :span="9">
<el-form-item label="选择一级审批人:" prop="oneApprove">
<el-form-item label="选择审批人:" prop="oneApprove">
<el-input readonly :disabled="formControl" v-model="assignForm.oneApproveName"
@click.native="handleCheck('spr1')"
placeholder="请选择一级审批人员"></el-input>
placeholder="请选择审批人"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="9">
<el-form-item label="选择二级审批人员:" prop="twoApprove">
<el-input readonly :disabled="formControl" v-model="assignForm.twoApproveName"
@click.native="handleCheck('spr2')"
placeholder="请选择二级审批人员"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="说明:" prop="remark">
<el-input type="textarea" :disabled="formControl" v-model="assignForm.remark" placeholder="请输入说明"></el-input>
</el-form-item>
<el-col :span="9" style="margin-left: 5px">
<el-button size="medium" type="primary" @click="handleCheck('spr1')">选取</el-button>
</el-col>
</el-row>
</el-form>
</div>
</div>
@@ -113,55 +102,26 @@ export default {
prcName: '',
privacyLevel: '',
},
processFormRule: {
prcName: [{
required: true,
message: '请输入流程名称',
trigger: 'change'
}, {
max: 100,
message: '申请原因最多填写100字符',
trigger: 'change'
}]
},
applicationFormRule: {
applyReason: [{
max: 500, message: '申请原因最多填写500字符'
}],
power: [{
required: true,
message: '请选择申请权限'
}]
},
assignFormRules: {
oneApprove: [{
required: true,
message: '请选择一级审批人',
message: '请选择审批人',
trigger: 'change'
}],
twoApprove: [{
required: true,
message: '请选择二级审批人员',
trigger: 'change'
}],
remark: [{
max: 500, message: '说明最多填写500字符'
}]
},
prcType: 2,
prcType: 4,
prcName:''
}
},
async created() {
// 第一次进入此页面 需要清楚校验
if (this.$route.query.isBegin) {
// if (this.$route.query.isBegin) {
// if (this.$route.query.ids.split(',').length > 0) {
// this.reportList(this.$route.query.ids)
// }
this.isShowSave = true
this.$store.commit('setHandleProcess','')
this.handleReset()
}
// 如果是从草稿进入的
if (this.$route.query.isDraft) {
this.isShowSave = true
@@ -170,16 +130,11 @@ export default {
this.prcId = this.$store.getters.handleProcess?.prcId
this.prcName = this.$store.getters.handleProcess?.prcName
this.getDraftDetail().then(res => {
this.$set(this.processForm,'prcName', this.prcName)
if(this.processOld.submitJson !== '{}'){
let submitJson=JSON.parse(this.processOld.submitJson)
this.processForm=JSON.parse(this.processOld.dataJson)
this.$set(this.assignForm,'oneApprove',submitJson.oneApprove)
this.$set(this.assignForm,'oneApproveName',submitJson.oneApproveName)
this.$set(this.assignForm,'twoApprove',submitJson.twoApprove)
this.$set(this.assignForm,'twoApproveName',submitJson.twoApproveName)
this.$set(this.assignForm,'remark',submitJson.remark)
}
this.$nextTick(()=>{
this.$refs.processFormRef.clearValidate()
@@ -188,51 +143,56 @@ export default {
})
}
if (this.$route.query.taskDefinitionKey == 'reEdit' ) {
else if (this.$route.query.taskDefinitionKey == 'reEdit' ) {
this.taskId = this.$store.getters.handleProcess.taskId
this.prcNum = this.$store.getters.handleProcess.prcNum
this.prcId = this.$store.getters.handleProcess.prcId
this.prcName = this.$store.getters.handleProcess.prcName
this.prcName = JSON.stringify(this.prcName)
this.initShow = true
this.formControlname = true
this.$set(this.processForm,'prcName',this.$route.query.prcName)
await this.getProcessDetail()
let submitJson = JSON.parse(this.processOld.submitJson)
// this.applicationForm.applyReason = applyReason.applyReason
this.processForm=JSON.parse(this.processOld.dataJson)
this.$set(this.assignForm,'oneApprove',submitJson.oneApprove)
this.$set(this.assignForm,'oneApproveName',submitJson.oneApproveName)
this.$set(this.assignForm,'twoApprove',submitJson.twoApprove)
this.$set(this.assignForm,'twoApproveName',submitJson.twoApproveName)
this.$set(this.assignForm,'remark',submitJson.remark)
}
if (this.$route.query.type == 'yiban') {
else if (this.$route.query.type == 'yiban') {
this.taskId = this.$store.getters.handleProcess.taskId
this.prcNum = this.$store.getters.handleProcess.prcNum
this.prcId = this.$store.getters.handleProcess.prcId
this.prcName = this.$store.getters.handleProcess.prcName
this.formControl = true
this.initShow = true
this.showTableD = true
this.$set(this.processForm,'prcName', this.prcName)
this.getProcessDetail().then((res) => {
let submitJson = JSON.parse(this.processOld.submitJson)
this.processForm=JSON.parse(this.processOld.dataJson)
// this.applicationForm.applyReason = applyReason.applyReason
this.$set(this.assignForm,'oneApprove',submitJson.oneApprove)
this.$set(this.assignForm,'oneApproveName',submitJson.oneApproveName)
this.$set(this.assignForm,'twoApprove',submitJson.twoApprove)
this.$set(this.assignForm,'twoApproveName',submitJson.twoApproveName)
this.$set(this.assignForm,'remark',submitJson.remark)
})
}else{
// 第一次进入此页面 需要清楚校验
this.isShowSave = true
this.$store.commit('setHandleProcess','')
this.handleReset()
}
},
methods: {
handleReset() {
this.processForm.prcName = ''
if(this.$route.query.taskDefinitionKey == 'reEdit'){
this.processForm.prcName = this.prcName
this.processForm={
departmentName:'',
department:'',
name:'',
year:'',
labelList:'',
confidentialLevel:'',
secrecyLast:'',
privacyLevel:'',
tags:'',
mainContent:'',
fileId:'',
fileName:'',
}
this.applicationForm = {
applyReason: '',
@@ -244,6 +204,7 @@ export default {
twoApprove: ''
}
this.$nextTick(() => {
this.$refs.applicationFormRef.clearValidate()
this.$refs.assignFormRef.clearValidate()
})
@@ -283,25 +244,11 @@ export default {
}
// console.log(this.assignForm.name1Id, this.assignForm.name2Id)
},
// 获取表格列表 吧查询到的值传给子组件
reportList(ids) {
this.$api.permissionProcess.getReportLisy({
pageSize:1000,
pageNo:1,
ids: ids.split(',')
}).then(({data}) => {
this.tableData = data.records.map(item => {
item.reportId = item['id']
delete item['id']
return item
})
})
},
// 保存
handleSave(){
this.saveLoading = true
let submitJson = JSON.stringify({...this.assignForm, userId: this.$store.getters.userInfo.usid,approvalOpinion:this.assignForm.remark})
let submitJson = JSON.stringify({...this.assignForm, userId: this.$store.getters.userInfo.usid})
let dataJson = JSON.stringify(this.processForm)
let params = {
prcName: this.processForm.prcName,
@@ -332,8 +279,8 @@ export default {
handleSubmit() {
console.log(this.$store.getters.userInfo.usid, " this.$store.getters.userInfo.USID")
this.$refs.assignFormRef.validate(async v => {
debugger
this.processForm=this.$refs.basMes.form
this.processForm.prcName=this.processForm.name
let z=this.$refs.basMes.submit()
if (v && z) {
//如果不是第一次
@@ -341,7 +288,7 @@ export default {
let flag=await this.JuggleSub(this.taskId)
if(flag){
let dataJson = JSON.stringify(this.processForm)
let submitJson = JSON.stringify({...this.assignForm, userId: this.$store.getters.userInfo.usid,approvalOpinion:this.assignForm.remark})
let submitJson = JSON.stringify({...this.assignForm, userId: this.$store.getters.userInfo.usid})
this.completeProcess({
dataJson,
submitJson,
@@ -371,7 +318,7 @@ export default {
}
form.approvalOpinion = this.assignForm.remark
form.prcType = this.prcType
form.prcName = this.processForm.prcName
form.prcName = this.processForm.name
form.userId = this.$store.getters.userInfo.usid
form.bpnId = this.$store.getters.handleProcess?.id
//...this.applicationForm,...this.processForm,
@@ -137,7 +137,7 @@ export default {
}
})
};break;
case '2' :
case '4' :
if (row.taskDefinitionKey == 'start' || row.taskDefinitionKey == 'reEdit') {
this.$router.push({
path: '/reportprocess/launch',
@@ -128,7 +128,7 @@ export default {
}
})
};break;
case '2' :
case '4' :
if (row.taskDefinitionKey == 'start' || row.taskDefinitionKey == 'reEdit') {
this.$router.push({
path: '/reportprocess/launch',