Browse Source

增加产品审批

master
yanyan 3 months ago
parent
commit
f2a43a531f
  1. 4
      src/api/workFlow/workFlow.js
  2. 118
      src/views/modules/srmPart/com_part_Approval.vue
  3. 170
      src/views/modules/srmPart/partInfoList.vue

4
src/api/workFlow/workFlow.js

@ -77,3 +77,7 @@ export const getPendingTaskCount = data => createAPI(`/workFlow/task/pendingCoun
// 撤回审批
export const withdrawTask = data => createAPI(`/workFlow/task/withdraw`, 'post', data)
// 通过业务单号查询流程节点实例列表
export const getNodeInstanceList = data => createAPI(`/workFlow/instance/getNodeInstanceList`, 'post', data)

118
src/views/modules/srmPart/com_part_Approval.vue

@ -1,57 +1,60 @@
<template>
<div class="customer-css">
<el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
<!-- <el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
<el-form :inline="true" label-position="top" style="margin-top: 0px">
<el-form-item label="Period:">
<el-input v-model="searchData.periodMohu" clearable style="width: 120px"></el-input>
</el-form-item>
<el-form-item label="Period Date:">
<el-date-picker
style="width: 120px"
v-model="searchData.startDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="Start">
</el-date-picker>
</el-form-item>
<el-form-item label="to:">
<el-date-picker
style="width: 120px"
v-model="searchData.endDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="End">
</el-date-picker>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="searchTable()">Query</el-button>
<!-- <el-button type="primary" @click="addModal()">新增</el-button>-->
</el-form-item>
</el-form>
</el-form>
<el-table
:data="dataList"
</el-form> -->
<el-table
:height=searchData.height
:data="dataList"
border
ref="nodeTable"
highlight-current-row
v-loading="dataListLoading"
style="width: 100%; ">
<el-table-column
v-for="(item,index) in columnList" :key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed==''?false:item.fixed"
:min-width="item.columnWidth"
:label="item.columnLabel">
style="width: 100%;">
<!-- <el-table-column prop="nodeOrder" label="序号" width="60" header-align="center" align="center"></el-table-column>
<el-table-column prop="nodeName" label="节点名称" min-width="100" header-align="center" align="center"></el-table-column> -->
<el-table-column prop="departmentName" label="审批部门" min-width="100" header-align="center" align="center">
<template slot-scope="scope">{{ scope.row.departmentName || '-' }}</template>
</el-table-column>
<el-table-column prop="approverName" label="要求审批人" min-width="80" header-align="center" align="center"></el-table-column>
<!-- <el-table-column prop="attemptNo" label="次数" width="60" header-align="center" align="center"></el-table-column>
<el-table-column prop="approveType" label="审批类型" min-width="100" header-align="center" align="center">
<template slot-scope="scope">
<span v-if="!item.columnHidden"> {{scope.row[item.columnProp]}}</span>
<span v-if="item.columnImage"><img :src="scope.row[item.columnProp]"
style="width: 100px; height: 80px"/></span>
<span v-if="scope.row.approveType === 'SINGLE'">单人审批</span>
<span v-else-if="scope.row.approveType === 'ALL'">会签</span>
<span v-else-if="scope.row.approveType === 'ANY'">或签</span>
<span v-else>{{ scope.row.approveType }}</span>
</template>
</el-table-column> -->
<el-table-column prop="status" label="状态" min-width="80" header-align="center" align="center">
<template slot-scope="scope">
<span :style="{ color: getNodeStatusColor(scope.row.status) }">{{ getNodeStatusText(scope.row.status) }}</span>
</template>
</el-table-column>
<el-table-column prop="specialRelease" label="是否特别放行" min-width="80" header-align="center" align="center"></el-table-column>
<el-table-column prop="completeTime" label="审批时间" min-width="150" header-align="center" align="center">
<template slot-scope="scope">{{ scope.row.completeTime || '-' }}</template>
</el-table-column>
<el-table-column prop="assigneeName" label="实际审批人" min-width="80" header-align="center" align="center"></el-table-column>
<el-table-column prop="comment" label="备注" min-width="150" header-align="center" align="left" show-overflow-tooltip></el-table-column>
<!-- <el-table-column fixed="right" header-align="center" align="center" width="100" label="操作">
<template slot-scope="scope">
<a type="text" size="small" @click="openApproveDialog(scope.row)">审批</a>
</template>
</el-table-column> -->
</el-table>
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
</div>
</template>
@ -59,6 +62,9 @@
<script>
import Chooselist from '@/views/modules/common/Chooselist_eam'
import {
getNodeInstanceList
} from '../../../api/workFlow/workFlow.js'
import {
deleteSrmMaterialFamilySupplier, deleteSrmMaterialFamilySupplierShareList,
@ -253,7 +259,7 @@ export default {
},
searchTable(){
searchSrmMaterialFamilySupplierShare(this.searchData).then(({data}) => {
getNodeInstanceList(this.searchData).then(({data}) => {
//
if (data && data.code == 0) {
this.dataList = data.rows
@ -263,6 +269,42 @@ export default {
}
});
},
//
getStatusColor(status) {
switch (status) {
case 'RUNNING': return '#409EFF'
case 'COMPLETED': return '#67C23A'
case 'TERMINATED': return '#F56C6C'
default: return '#909399'
}
},
getStatusText(status) {
switch (status) {
case 'RUNNING': return '运行中'
case 'COMPLETED': return '已完成'
case 'TERMINATED': return '已终止'
default: return status
}
},
getNodeStatusColor(status) {
switch (status) {
case 'PENDING': return '#E6A23C'
case 'APPROVED': return '#67C23A'
case 'REJECTED': return '#F56C6C'
case 'SKIPPED': return '#909399'
default: return '#909399'
}
},
getNodeStatusText(status) {
switch (status) {
case 'PENDING': return '待审批'
case 'APPROVED': return '已通过'
case 'REJECTED': return '已驳回'
case 'SKIPPED': return '已跳过'
default: return status
}
},
addModal(){
this.modelSearchData={
site:this.searchData.site,

170
src/views/modules/srmPart/partInfoList.vue

@ -55,6 +55,7 @@
width="160"
label="Action">
<template slot-scope="scope">
<el-link style="cursor: pointer" @click="openApproveDialog(scope.row)">审批 |</el-link>
<el-link style="cursor: pointer" @click="editPart(scope.row)">编辑 |</el-link>
<el-link style="cursor: pointer" @click="deletePart(scope.row)">删除</el-link>
</template>
@ -187,6 +188,52 @@
</div>
</el-dialog>
<!-- 审批对话框 - rqrq -->
<el-dialog
title="审批"
:visible.sync="approveDialogVisible"
width="550px"
:close-on-click-modal="false"
v-drag>
<el-form :model="approveData" label-position="top">
<!-- <el-row :gutter="20">
<el-col :span="12">
<el-form-item label="单据号">
<el-input v-model="approveData.applyNo" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="当前节点">
<el-input v-model="approveData.nodeName" disabled></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="审批部门">
<el-input v-model="approveData.departmentName" disabled></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审批人">
<el-input v-model="approveData.assigneeName" disabled></el-input>
</el-form-item>
</el-col>
</el-row> -->
<el-form-item label="审批意见">
<el-input type="textarea" v-model="approveData.comment" :rows="3" placeholder="请输入审批意见"></el-input>
</el-form-item>
</el-form>
<el-footer style="height:40px;margin-top: 60px;text-align:center">
<el-button type="success" @click="submitApprove('APPROVED')" :loading="approveLoading">同意</el-button>
<el-button type="danger" @click="submitApprove('REJECTED')" :loading="approveLoading">驳回</el-button>
<!-- <el-button type="info" @click="openFlowPreview">流程预览</el-button> -->
<el-button @click="approveDialogVisible = false" :disabled="approveLoading">取消</el-button>
</el-footer>
</el-dialog>
</div>
</template>
@ -262,6 +309,21 @@ export default {
mainDataList: [],
dataListLoading: false,
activeName: 'basicInfo',
//
approveDialogVisible: false,
approveLoading: false,
approveData: {
applyNo: '',
// nodeCode: '',
// nodeName: '',
// departmentName: '', // - rqrq
// assigneeName: '',
site: '',
orderType: '',
comment: '',
flowCode: '',
flowVersion: null
},
columnArray1: [
{
userId: this.$store.state.user.name,
@ -460,6 +522,42 @@ export default {
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: this.functionId,
serialNumber: 'partTableDepartmentName',
tableId: 'partTable',
tableName: '产品信息',
columnProp: 'departmentName',
headerAlign: 'center',
align: 'center',
columnLabel: '审批部门',
columnWidth: '100',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
},
{
userId: this.$store.state.user.name,
functionId: this.functionId,
serialNumber: 'partTableApproverName',
tableId: 'partTable',
tableName: '产品信息',
columnProp: 'assigneeName',
headerAlign: 'center',
align: 'center',
columnLabel: '要求审批人',
columnWidth: '100',
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: false
}
],
exportName: '产品信息' + this.dayjs().format('YYYYMMDDHHmmss'),
@ -559,7 +657,7 @@ export default {
this.currentpart.category = val.family_id
}
if (this.tagNo === 525) {
if (this.tagNo === 510) {
this.currentpart.unit = val.UMID
}
if (this.tagNo === 522) {
@ -687,7 +785,8 @@ export default {
refreshApproval () {
let inData = {
site: this.currentRow.site,
partNo: this.currentRow.partNo,
orderRef1: this.currentRow.partNo,
orderType: '产品资料',
height: Number(this.height) - 20
}
this.$refs.approval.init(inData)
@ -776,6 +875,73 @@ export default {
this.$message.error('删除失败: ' + error.message)
})
})
},
//
openApproveDialog(row) {
this.approveData = {
applyNo: row.flowNodeInstanceData.applyNo,
// nodeCode: row.nodeCode,
// nodeName: row.nodeName,
// departmentName: row.departmentName || '', // - rqrq
// assigneeName: row.assigneeName,
site: row.flowNodeInstanceData.site,
orderType: row.flowNodeInstanceData.orderType,
comment: '',
flowCode: row.flowNodeInstanceData.flowCode,
flowVersion: row.flowNodeInstanceData.flowVersion
}
this.approveDialogVisible = true
},
//
submitApprove(action) {
if (action === 'REJECTED' && !this.approveData.comment) {
this.$message.warning('驳回时必须填写审批意见')
return
}
this.approveLoading = true
approveNodeInstance({
applyNo: row.flowNodeInstanceData.applyNo,
nodeCode: row.flowNodeInstanceData.nodeCode,
site: row.flowNodeInstanceData.site,
orderType: row.flowNodeInstanceData.orderType,
action: action,
comment: this.approveData.comment
}).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success(action === 'APPROVED' ? '审批通过成功' : '驳回成功')
this.approveDialogVisible = false
this.getInstanceList()
this.getNodeInstanceList()
} else {
this.$message.error(data.msg || '操作失败')
}
}).finally(() => {
this.approveLoading = false
})
},
// - rqrq
handleRestart(row) {
this.$confirm('确定要重新发起审批流程吗?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
restartFlowInstance({
applyNo: row.flowNodeInstanceData.applyNo,
site: row.flowNodeInstanceData.site,
orderType: row.flowNodeInstanceData.orderType
}).then(({ data }) => {
if (data && data.code === 0) {
this.$message.success('重新审批成功')
this.getInstanceList()
this.nodeInstanceList = []
this.currentInstance = null
} else {
this.$message.error(data.msg || '操作失败')
}
})
}).catch(() => {})
}
}

Loading…
Cancel
Save