流程管理接口联调

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. 180
      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> </el-dialog>
</template> </template>
<script> <script>
import {
updateProcess,
} from '../../api/flowManagement/index';
export default { export default {
props: { props: {
showDialog: { showDialog: {
@ -65,6 +68,26 @@ export default {
this.openShow = false; this.openShow = false;
this.$emit('closeDialog'); 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> </script>

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

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