流程管理接口联调

dev-scheduling
zhangdi 3 months ago
parent 375d08dd1c
commit 79679149f5
  1. 2
      src/api/flowManagement/index.js
  2. 23
      src/views/a-template/checkDialog.vue
  3. 169
      src/views/flowManagement/addDialog.vue
  4. 182
      src/views/flowManagement/managementOfKeyTasks.vue
  5. 72
      src/views/flowManagement/review.vue

@ -94,3 +94,5 @@ export const projectApprove = (data) => {
});
}
// 项目审核

@ -11,6 +11,9 @@
</el-dialog>
</template>
<script>
import {
updateProcess,
} from '../../api/flowManagement/index';
export default {
props: {
showDialog: {
@ -65,6 +68,26 @@ export default {
this.openShow = false;
this.$emit('closeDialog');
},
submit() {
this.$refs.form.validate(async (valid) => {
if (valid) {
let params = {
id: this.$route.query.id,
approvalStatus:'',
// status: this.option.column[0].value,
// reason: this.option.column[1].value,
};
updateProcess(params).then((res) => {
if (res.code == 200) {
this.$message.success('操作成功');
this.closeDialog();
}
});
}
})
}
},
};
</script>

@ -2,7 +2,7 @@
<el-dialog
append-to-body="false"
:title="title"
:model-value="visible"
:model-value="openShow"
width="80%"
@close="handleClose"
>
@ -17,15 +17,18 @@
</el-col>
<el-col :span="8">
<el-form-item label="项目类型" prop="bcId">
<el-select :disabled="isDetail" v-model="addForm.bcId">
<el-option label="成本效率" :value="'310'"></el-option>
<el-option label="成本效率1" :value="'311'"></el-option>
<el-select :disabled="isDetail" v-model="addForm.bcId" clearable filterable>
<el-option
v-for="(item, index) in projectType"
:label="item.dictValue"
:value="item.dictKey"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="制单部门" prop="touchingDept">
<el-select :disabled="isDetail" v-model="addForm.touchingDept">
<el-select :disabled="isDetail" v-model="addForm.touchingDept" clearable filterable>
<el-option label="化学镀镍一班崔胜伟" value="61"></el-option>
<el-option label="部门二" value="62"></el-option>
</el-select>
@ -68,9 +71,12 @@
<el-row>
<el-col :span="8">
<el-form-item label="项目负责人" prop="projectHead">
<el-select :disabled="isDetail" v-model="addForm.projectHead">
<el-option label="admin" :value="1"></el-option>
<el-option label="负责人二" :value="2"></el-option>
<el-select :disabled="isDetail" v-model="addForm.projectHead" clearable filterable>
<el-option
v-for="item in memberList"
:label="item.realName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
@ -81,9 +87,14 @@
v-model="addForm.memberName"
multiple
placeholder="请选择成员名称"
clearable
filterable
>
<el-option label="测试" :value="521"></el-option>
<el-option label="成员二" :value="2"></el-option>
<el-option
v-for="item in memberList"
:label="item.realName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
@ -91,9 +102,17 @@
<el-row>
<el-col :span="8">
<el-form-item label="项目支持人" prop="projectSupportMan">
<el-select :disabled="isDetail" v-model="addForm.projectSupportMan">
<el-option label="测试" value="521"></el-option>
<el-option label="支持人二" value="2"></el-option>
<el-select
:disabled="isDetail"
v-model="addForm.projectSupportMan"
clearable
filterable
>
<el-option
v-for="item in memberList"
:label="item.realName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
@ -183,9 +202,17 @@
:prop="`stoneList[${scope.$index}].milestoneMan`"
:rules="addRules.milestoneMan"
>
<el-select v-model="scope.row.milestoneMan" placeholder="请选择里程碑负责人">
<el-option label="负责人一" :value="1"></el-option>
<el-option label="负责人二" :value="2"></el-option>
<el-select
v-model="scope.row.milestoneMan"
placeholder="请选择里程碑负责人"
clearable
filterable
>
<el-option
v-for="item in memberList"
:label="item.realName"
:value="item.id"
></el-option>
</el-select>
</el-form-item>
</template>
@ -258,36 +285,42 @@
align="center"
label="执行类型"
prop="executeType"
:width="isDetail ? '120' : ''"
></el-table-column>
<el-table-column
v-if="isDetail"
align="center"
label="延期时间"
prop="delayTime"
:width="isDetail ? '120' : ''"
></el-table-column>
<el-table-column
v-if="isDetail"
align="center"
label="核查结果"
prop="checkResult"
:width="isDetail ? '120' : ''"
></el-table-column>
<el-table-column
v-if="isDetail"
align="center"
label="核查人"
prop="checkMan"
:width="isDetail ? '120' : ''"
></el-table-column>
<el-table-column
v-if="isDetail"
align="center"
label="评价等级"
prop="grade"
:width="isDetail ? '120' : ''"
></el-table-column>
<el-table-column
v-if="isDetail"
align="center"
label="评价人"
prop="gradeMan"
:width="isDetail ? '120' : ''"
></el-table-column>
<el-table-column
v-if="isDetail"
@ -295,8 +328,9 @@
align="center"
label="业务领导评价"
prop="evaluate"
:width="isDetail ? '120' : ''"
></el-table-column>
<el-table-column v-if="isDetail" align="center" label="附件">
<el-table-column v-if="isDetail" align="center" label="附件" :width="isDetail ? '120' : ''">
<el-button type="text">附件</el-button>
</el-table-column>
<!-- 通用操作列 -->
@ -310,7 +344,7 @@
<!-- 弹窗底部按钮 -->
<template #footer>
<span class="dialog-footer">
<el-button @click="visible = false"> </el-button>
<el-button @click="handleClose"> </el-button>
<el-button type="primary" @click="handleSubmitForm"> </el-button>
</span>
</template>
@ -318,8 +352,9 @@
</template>
<script>
import { addProcess } from '../../api/flowManagement/index';
import { addProcess, getProcessDetail } from '@/api/flowManagement/index';
import { getRoleUserList } from '@/api/processManagement/taskDispatch';
import { getDictionary } from '@/api/system/dict';
export default {
name: 'AddDialog',
props: {
@ -332,30 +367,10 @@ export default {
required: true,
default: false,
},
addForm: {
rowItem: {
type: Object,
required: true,
default: () => ({
id: 0,
paCode: '',
touchingMan: '',
touchingDept: '',
touchingTime: '',
projectName: '',
bcId: 0,
projectBackcloth: '',
projectTarget: '',
desiredResult: '',
projectStartTime: '',
projectDesiredEnd: '',
projectEnd: '',
projectSupportMan: '',
projectHead: '',
memberId: 0,
memberName: '',
approvalStatus: 0,
stoneList: [], //
}),
default: () => ({}),
},
},
data() {
@ -418,6 +433,12 @@ export default {
{ required: true, message: '请选择里程碑节点', trigger: ['change', 'submit'] },
],
},
memberList: [], //
projectType: [], //
openShow: false,
addForm:{
stoneList:[]
}
};
},
computed: {
@ -426,19 +447,47 @@ export default {
return this.title === '详情';
},
},
mounted(){
mounted() {
this.openShow = this.visible;
this.getRoleUserList();
this.getDictionary();
if (this.title === '详情' || this.title === '修改') {
this.getDetails();
}
},
methods: {
getRoleUserList(){
getRoleUserList().then(res => {
this.memberList = res.data.data;
//
getRoleUserList() {
getRoleUserList({ size: 999999, current: 1 }).then(res => {
this.memberList = res.data.data.records;
});
},
// getDictionary
getDictionary() {
getDictionary({ code: 'flow_project_type' }).then(res => {
this.projectType = res.data.data;
});
},
//
getDetails() {
getProcessDetail(this.rowItem.id).then(res => {
console.log(res.data.data,'res');
this.addForm = res.data.data;
// memberName
if (res.data.data.memberName) {
this.addForm.memberName = String(res.data.data.memberName)
.split(',')
.map(id => id.trim())
.filter(Boolean);
} else {
this.addForm.memberName = [];
}
});
},
handleClose() {
this.$emit('close ', false);
handleClose(type) {
this.formError = '';
this.$refs.addForm?.resetFields();
this.openShow = false;
this.$emit('close ', type);
},
selectChange(list, row) {
row._select = !row._select;
@ -521,21 +570,17 @@ export default {
return;
}
const submitData = this.formatSubmitData(this.addForm);
console.log('submitData', submitData);
try {
const res = addProcess(submitData);
if (res.code === 200) {
if (this.title === '详情') {
updateProcess({ ...submitDat, approvalStatus: 1 }).then(res => {
this.$message.success('修改成功');
this.handleClose(true);
});
return;
} else {
addProcess({ ...submitData, approvalStatus: 1 }).then(res => {
this.$message.success('提交成功');
this.visible = false;
this.$emit('submit-form', submitData);
} else {
this.$message.error(res.msg || '提交失败');
}
this.visible = false;
this.$emit('submit-form', submitData);
} catch (err) {
this.$message.error(err.message);
console.error('提交失败:', err);
this.handleClose(true);
});
}
});
},

@ -8,10 +8,8 @@
v-model="form"
v-model:page="page"
ref="crud"
@row-del="rowDel"
@search-change="searchChange"
@search-reset="searchReset"
@selection-change="selectionChange"
@current-change="currentChange"
@size-change="sizeChange"
@refresh-change="refreshChange"
@ -22,13 +20,23 @@
</template>
<template #menu="{ row }">
<el-button type="text" @click="handleView(row)">详情</el-button>
<el-button type="text" @click="handleEdit(row)">修改</el-button>
<el-button type="text" v-if="row.status == 1" @click="checkRow(row)">审核</el-button>
<el-button type="text" @click="deleteRow(row)">删除</el-button>
<el-button type="text" v-if="row.approvalStatus == 1" @click="handleEdit(row)"
>修改</el-button
>
<el-button type="text" v-if="row.approvalStatus == 1" @click="checkRow(row)"
>审核</el-button
>
<el-button type="text" v-if="row.approvalStatus == 1" @click="deleteRow(row)"
>删除</el-button
>
</template>
<!-- 项目开始时间 -->
<template #projectStartTime="scope">
{{ scope.row.projectStartTime ? scope.row.projectStartTime.substring(0, 10) : '' }}
</template>
<template #projectDesiredEnd="scope">
{{ scope.row.projectDesiredEnd ? scope.row.projectDesiredEnd.substring(0, 10) : '' }}
</template>
<template #userName="{ row }">{{ row.projectHead.userName }}</template>
<template #touchingMan="{ row }">{{ row.touchingMan.userName }}</template>
<template #tsName="{ row }">{{ row.touchingDept.tsName }}</template>
<!-- 列表嵌套表格 -->
<template #expand="{ row }">
<el-table :data="row.stoneList">
@ -85,29 +93,20 @@
</avue-crud>
<!-- 新增弹窗 -->
<add-dialog
v-if="addDialogVisible"
:title="title"
:visible="addDialogVisible"
:add-form="addForm"
@close="addDialogVisible = false"
@submit-form="submitForm"
:rowItem="rowItem"
@close="closeDialog"
></add-dialog>
<!-- 审核弹窗 -->
<el-dialog v-model="checkDialog" title="审核" append-to-body width="30%">
<el-form ref="checkForm" :model="checkForm" :rules="checkRules" label-width="80px">
<el-form-item label="审核结果" prop="checkResult">
<el-radio-group v-model="checkForm.checkResult">
<el-radio label="1">通过</el-radio>
<el-radio label="2">不通过</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="checkDialog = false"> </el-button>
<el-button type="primary" @click="submitCheck"> </el-button>
</span>
</template>
</el-dialog>
<review
v-if="checkDialog"
:showDialog="checkDialog"
@closeDialog="closeDialog"
:rowItem="rowItem"
></review>
<!-- 执行/核查/核准弹窗 -->
<el-dialog append-to-body :title="subTitle" v-model="executeDialog">
<el-form :model="executeForm" :rules="executeRules" ref="executeForm" label-width="100">
@ -259,9 +258,9 @@ import {
delProcess,
} from '../../api/flowManagement/index';
import AddDialog from './addDialog.vue';
import review from './review.vue';
export default {
components: { AddDialog },
components: { AddDialog, review },
data() {
return {
//
@ -271,7 +270,6 @@ export default {
addDialogVisible: false, //
title: '新增',
loading: false,
title: '新增',
checkDialog: false,
subTitle: '执行',
detailForm: {},
@ -292,7 +290,7 @@ export default {
form: {},
existingFiles: [], //
addForm: {},
page: {
pageSize: 10,
currentPage: 1,
@ -322,7 +320,7 @@ export default {
addBtn: false,
labelWidth: 120,
menu: true,
menuWidth: 200,
menuWidth: 190,
dialogWidth: 600,
dialogClickModal: false,
searchEnter: true,
@ -346,74 +344,66 @@ export default {
{
label: '单据号',
prop: 'paCode',
span: 24,
labelWidth: 140,
overflow: true,
search: true,
},
{
label: '项目名称',
prop: 'projectName',
span: 24,
labelWidth: 140,
overflow: true,
search: true,
},
{
label: '项目负责人',
prop: 'projectHead',
span: 24,
labelWidth: 140,
overflow: true,
search: true,
searchLabelWidth: 100,
},
{
label: '项目开始时间',
prop: 'projectStartTime',
span: 24,
labelWidth: 140,
overflow: true,
search: false,
},
{
label: '项目预期结束时间',
prop: 'projectDesiredEnd',
span: 24,
labelWidth: 140,
overflow: true,
search: false,
},
{
label: '制单人',
prop: 'touchingMan',
span: 24,
labelWidth: 140,
overflow: true,
search: false,
},
{
label: '制单部门',
prop: 'touchingDept',
span: 24,
labelWidth: 140,
overflow: true,
search: false,
},
{
label: '制单时间',
prop: 'touchingTime',
span: 24,
labelWidth: 140,
overflow: true,
search: false,
},
{
label: '状态',
prop: 'approvalStatus',
span: 24,
labelWidth: 140,
overflow: true,
search: false,
type: 'select',
dicUrl: '/blade-system/dict/dictionary?code=flow_status',
props: {
label: 'dictValue',
value: 'dictKey',
},
},
],
},
@ -422,79 +412,27 @@ export default {
},
mounted() {},
methods: {
insertEvent() {
//
this.addForm.stoneList.push({});
},
openDialog() {
//
const newRow = {
status: 3,
statusTitle: '待执行',
checkMan: null,
checkResult: 0,
checkResultTitle: '未核查',
checkTime: null,
delayDate: false,
delayTime: null,
evaluate: null,
evolve: '',
executeResult: 0,
executeResultTitle: '无',
grade: 0,
gradeMan: null,
gradeTitle: '未评价',
keyValue: Date.now(),
lastPlan: '',
milestoneMan: {
accountId: null,
userId: null,
userName: '',
},
milestoneMemo: '',
milestoneNode: '',
milestonePlan: '',
okTime: null,
outputMaterial: '',
paIndex: (this.addForm.stoneList?.length || 0) + 1,
pmId: this.addForm.paId,
score: null,
updateMan: null,
};
if (!this.addForm.stoneList) {
this.addForm.stoneList = [];
closeDialog(type) {
this.checkDialog = false;
this.addDialogVisible = false
if (type) {
this.onLoad(this.page, this.query);
}
this.addForm.stoneList.push(newRow);
this.$message.success('插入成功');
},
handleAdd() {
this.title = '新增';
this.addForm = {
bsBasicClass: {
bcId: '',
},
touchingDept: {
tsId: '',
},
projectHead: {
userId: '',
},
projectSupportMan: {
userId: '',
},
};
this.rowItem = {}
this.addDialogVisible = true;
},
//
handleView(row) {
this.title = '详情';
this.addForm = row;
this.rowItem = row;
this.addDialogVisible = true;
},
//
handleEdit(row) {
this.addForm = row;
this.rowItem = row;
this.title = '修改';
this.addDialogVisible = true;
},
@ -511,12 +449,6 @@ export default {
});
});
},
// /
submitForm() {
this.loading = true;
this.addDialogVisible = false;
this.onLoad(this.page);
},
//
checkRow(row) {
@ -533,7 +465,7 @@ export default {
};
updateProcess(query).then(res => {
this.checkDialog = false;
this.onLoad(this.page);
this.onLoad(this.page, this.query);
});
}
});
@ -601,21 +533,9 @@ export default {
})
.catch(() => {});
},
delTable(index) {
this.$confirm('确定删除该条数据么?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
})
.then(() => {
this.addForm.stoneList.splice(index, 1);
this.$message.success('删除成功');
})
.catch(() => {});
},
searchReset() {
this.query = {};
this.onLoad(this.page);
this.onLoad(this.page, this.query);
},
searchChange(params, done) {
this.query = params;
@ -625,9 +545,11 @@ export default {
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page, this.query);
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad(this.page, this.query);
},
refreshChange() {
this.onLoad(this.page, this.query);

@ -0,0 +1,72 @@
<template>
<el-dialog title="审核" append-to-body :model-value="openShow" width="30%" @close="closeDialog">
<avue-form v-model="form" :option="option"></avue-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="closeDialog"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</template>
</el-dialog>
</template>
<script>
import {
updateProcess,
} from '../../api/flowManagement/index';
export default {
props: {
showDialog: {
type: Boolean,
default: false,
},
rowItem:{
type: Object,
default: () => ({})
}
},
data() {
return {
openShow: false,
form:{},
option: {
submitBtn: false,
emptyBtn: false,
column: [
{
label: '审批结果',
prop: 'status',
span: 24,
type: 'radio',
dicData: [
{ label: '审批通过', value: 3 },
{ label: '审批不通过', value: 2 },
],
rules: [{ required: true, message: '请选择', trigger: 'blur' }],
},
],
},
};
},
mounted() {
this.openShow = this.showDialog;
},
methods: {
closeDialog(type) {
this.openShow = false;
this.$emit('closeDialog',type);
},
submit() {
let query={
id:this.rowItem.id,
approvalStatus:this.form.status
}
updateProcess(query).then(res=>{
this.$message.success('操作成功')
this.closeDialog(true)
})
},
},
};
</script>
<style lang="scss" scoped></style>
Loading…
Cancel
Save