src/api/flowable/todo.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/api/projectProcess/projectProcess.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/projectProcess/components/EditTask.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/projectProcess/components/LogTimeLine.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/projectProcess/components/LogView.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/projectProcess/detail/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/flowable/todo.js
@@ -131,6 +131,14 @@ params: query }) } // 当前节点表单数据 export function currentFlowTaskForm(query) { return request({ url: '/flowable/task/current/flowTaskForm', method: 'get', params: query }) } // 流程节点查看详情表单 export function flowTaskFormDetail(processInsId, taskId) { return request({ src/api/projectProcess/projectProcess.js
@@ -46,6 +46,15 @@ }) } // 修改任务 export const editTask = (data) => { return request({ url: "/project-process/admin/edit/finish/task", method: "POST", data: data }) } // 流程待办列表 export function getProjectProcessTodo(query) { return request({ src/views/projectProcess/components/EditTask.vue
New file @@ -0,0 +1,195 @@ <template> <div> <el-dialog :title="'修改任务:' + currentTask.beforeNodeName" :visible.sync="open" :destroy-on-close="true" :fullscreen="true" :before-close="close"> <el-row> <el-col :span="16"> <div v-if="currentTask != null && currentTask.formJsonObj != null"> <v-form-render :form-data="currentTask.formJsonObj.formJson" ref="form"/> </div> </el-col> <el-col :span="8"> <div style="padding-left: 40px;min-height: 200px"> <div style="position: relative"> <div v-if="currentTask.taskStatus == '已完成'">当前状态:{{currentTask.taskStatus}}<span v-show="editForm.nowStatus">--->{{editForm.nowStatus}}</span>, <el-button type="primary" size="small" @click="openJump">改为跳过</el-button> <el-button type="primary" size="small" @click="openWait">改为容缺</el-button> <el-button type="text" size="small" @click="cancelStatus" v-show="editForm.nowStatus">取消状态更改</el-button> </div> <div v-else-if="currentTask.taskStatus == '跳过'">当前状态:{{currentTask.taskStatus}}<span v-show="editForm.nowStatus">--->{{editForm.nowStatus}}</span>, <el-button type="primary" size="small" @click="openWait">改为容缺</el-button> <el-button type="text" size="small" @click="cancelStatus" v-show="editForm.nowStatus">取消状态更改</el-button> </div> <div v-else-if="currentTask.taskStatus == '容缺'">当前状态:{{currentTask.taskStatus}}<span v-show="editForm.nowStatus">--->{{editForm.nowStatus}}</span>, <el-button type="primary" size="small" @click="openJump">改为跳过</el-button> <el-button type="text" size="small" @click="cancelStatus" v-show="editForm.nowStatus">取消状态更改</el-button> </div> <el-button style="position: absolute;right: 0px; top: 0px" type="primary" size="small" @click="save">保 存</el-button> </div> <div style="margin-top: 15px"> <el-form v-show="showJumpForm" :model="taskJumpForm" :rules="jumpRules" ref="jumpForm" label-position="left"> <el-form-item label="跳过说明" prop="desc"> <el-input v-model="taskJumpForm.desc"></el-input> </el-form-item> </el-form> <el-form v-show="showWaitForm" :model="taskWaitForm" :rules="waitRules" ref="waitForm" label-position="left"> <el-form-item label="容缺说明" prop="desc"> <el-input v-model="taskWaitForm.desc"></el-input> </el-form-item> </el-form> </div> </div> <div> <log-time-line v-if="currentTask.events && currentTask.events.length > 0" :log-list="currentTask.events"/> </div> </el-col> </el-row> </el-dialog> </div> </template> <script> import {currentFlowTaskForm} from "@/api/flowable/todo"; import LogTimeLine from "@/views/projectProcess/components/LogTimeLine"; import {editTask} from "@/api/projectProcess/projectProcess"; export default { name: "EditTask", components: {LogTimeLine}, props: { taskId: { type: String, required: true }, open: { type: Boolean, default: false } }, watch: { taskId: { handler(newV) { if (newV) { currentFlowTaskForm({taskId: newV}).then(res => { this.currentTask = res.data this.editForm.originalStatus = res.data.taskStatus this.editForm.taskId = newV this.formJson = this.currentTask.formJsonObj.formJson this.$nextTick(() => { this.$refs.form.setFormJson(this.currentTask.formJsonObj.formJson); this.$refs.form.setFormData(this.currentTask.formJsonObj); }) }) } } } }, data() { return { showJumpForm: false, showWaitForm: false, jumpRules: { desc: [ { required: true, message: '请输入跳过说明', trigger: 'blur' }, ] }, waitRules: { desc: [ { required: true, message: '请输入容缺说明', trigger: 'blur' }, ] }, currentTask: { }, taskJumpForm: { desc: '' }, taskWaitForm: { desc: '' }, formJson: {}, // 表单json formData: {}, // 填写的表单数据, editForm: { taskId: '', variables: null, originalStatus: '', nowStatus: '', taskJumpForm: null, taskWaitForm: null } } }, methods: { cancelStatus() { this.editForm.nowStatus = '' this.showWaitForm = false this.showJumpForm = false this.editForm.taskWaitForm = {} this.editForm.taskJumpForm = {} }, openJump() { this.showWaitForm = false this.editForm.taskWaitForm = {} this.editForm.nowStatus = '跳过' this.showJumpForm = true }, openWait() { this.showJumpForm = false this.editForm.taskJumpForm = {} this.editForm.nowStatus = '容缺' this.showWaitForm = true }, save() { this.$refs.form.getFormData().then(formData => { this.formData = formData const param = { formJson: this.formJson, } // 复制对象的属性值给新的对象 Object.assign(param, formData); this.editForm.variables = param if (this.editForm.nowStatus) { if (this.editForm.nowStatus == '跳过') { this.$refs['jumpForm'].validate((valid) => { if (valid) { this.editForm.taskJumpForm = this.taskJumpForm editTask(this.editForm).then(res => { this.$message.success("修改成功") this.close() }) } }) } else if (this.editForm.nowStatus == '容缺') { this.$refs['waitForm'].validate((valid) => { if (valid) { this.editForm.taskWaitForm = this.taskWaitForm editTask(this.editForm).then(res => { this.$message.success("修改成功") this.close() }) } }) } } else { this.editForm.nowStatus = this.editForm.originalStatus editTask(this.editForm).then(res => { this.$message.success("修改成功") this.close() }) } }) }, close() { this.$emit("close") } } } </script> <style scoped> </style> src/views/projectProcess/components/LogTimeLine.vue
@@ -93,6 +93,14 @@ <span class="tag">{{log.eventDataObj.content}}</span> </div> </div> <div class="log" v-else-if="log.eventType === 'EDIT'"> <div> <span class="tag name">{{log.nickName}}</span> <span class="tag db">修改</span> 了任务 <span class="tag taskName">{{log.taskName}}</span> </div> </div> <div class="log" v-else-if="log.eventType === 'TEAM_WORK'"> <div> <span class="tag name">{{log.nickName}}</span> @@ -124,7 +132,7 @@ getColor(log) { if (log.eventType === 'FINISHED') { return "#67C23A" } else if (log.eventType === 'REJECT') { } else if (log.eventType === 'REJECT' || log.eventType === 'EDIT') { return "#F56C6C" } else if (log.eventType === 'HANGUP') { return "#409EFF" @@ -148,4 +156,7 @@ .log { color: #606266; } .tag { margin: 0 5px; } </style> src/views/projectProcess/components/LogView.vue
@@ -104,6 +104,16 @@ <span class="tag">{{log.eventDataObj.content}}</span> </div> </div> <div class="log" v-else-if="log.eventType === 'EDIT'"> <div> <span class="tag name">{{log.nickName}}</span> 于 <span class="tag time">{{log.gmtCreate}}</span> <span class="tag db">修改</span> 了任务 <span class="tag taskName">{{log.taskName}}</span> </div> </div> <div class="log" v-else-if="log.eventType === 'TEAM_WORK'"> <div> <span class="tag name">{{log.nickName}}</span> src/views/projectProcess/detail/index.vue
@@ -88,6 +88,7 @@ <el-button v-if="scope.row.taskStatus !== '未开始'" @click="goToProcessDetail(scope.row)" type="text" size="small">查看</el-button> <el-button v-if="showHandle(scope.row)" @click="goToDo(scope.row)" type="text" size="small">办理</el-button> <el-button v-if = "scope.row.taskStatus === '待办'" @click="openSupervise(scope.row)" type="text" size="small">督办</el-button> <el-button v-if = "scope.row.taskStatus === '已完成' || scope.row.taskStatus === '跳过' || scope.row.taskStatus === '容缺'" v-hasPermi="['task:edit']" @click="openEditTask(scope.row)" type="text" size="small">修改</el-button> </template> </el-table-column> </el-table> @@ -127,62 +128,6 @@ <log-view style="padding: 10px 20px" :log-list="logList"/> </el-drawer> <!-- <el-dialog--> <!-- :title="`${this.queryParams.processName}:流转记录`"--> <!-- :visible.sync="processRecordShow"--> <!-- :fullscreen="true"--> <!-- :close-on-click-modal="false"--> <!-- :destroy-on-close="true"--> <!-- >--> <!-- <div>--> <!-- <log-view :log-list="logList"/>--> <!--<!– <div class="block">–>--> <!--<!– <el-timeline>–>--> <!--<!– <el-timeline-item–>--> <!--<!– v-for="(item,index ) in flowRecordList"–>--> <!--<!– :key="index"–>--> <!--<!– :icon="setIcon(item.finishTime)"–>--> <!--<!– :color="setColor(item.finishTime)"–>--> <!--<!– >–>--> <!--<!– <p style="font-weight: 700">{{item.taskName}}–>--> <!--<!– <span v-if="item.comment && item.comment.type === '3'" style="color: red">(执行了驳回)</span>–>--> <!--<!– <span v-if="item.overtime && item.overtime==='red'" style="color: red">(已超时)</span>–>--> <!--<!– <span v-if="item.overtime && item.overtime==='yellow'" style="color: orange">(即将超时)</span>–>--> <!--<!– </p>–>--> <!--<!– <el-card :body-style="{ padding: '10px' }">–>--> <!--<!– <el-descriptions class="margin-top" :column="1" size="small" border>–>--> <!--<!– <el-descriptions-item v-if="item.assigneeName" label-class-name="my-label">–>--> <!--<!– <template slot="label"><i class="el-icon-user"></i>办理人</template>–>--> <!--<!– {{item.assigneeName}}–>--> <!--<!– <el-tag type="info" size="mini">{{item.deptName}}</el-tag>–>--> <!--<!– </el-descriptions-item>–>--> <!--<!– <el-descriptions-item v-if="item.candidate" label-class-name="my-label">–>--> <!--<!– <template slot="label"><i class="el-icon-user"></i>候选办理</template>–>--> <!--<!– {{item.candidate}}–>--> <!--<!– </el-descriptions-item>–>--> <!--<!– <el-descriptions-item label-class-name="my-label">–>--> <!--<!– <template slot="label"><i class="el-icon-date"></i>接收时间</template>–>--> <!--<!– {{item.createTime}}–>--> <!--<!– </el-descriptions-item>–>--> <!--<!– <el-descriptions-item v-if="item.finishTime" label-class-name="my-label">–>--> <!--<!– <template slot="label"><i class="el-icon-date"></i>处理时间</template>–>--> <!--<!– {{item.finishTime}}–>--> <!--<!– </el-descriptions-item>–>--> <!--<!– <el-descriptions-item v-if="item.duration" label-class-name="my-label">–>--> <!--<!– <template slot="label"><i class="el-icon-time"></i>耗时</template>–>--> <!--<!– {{item.duration}}–>--> <!--<!– </el-descriptions-item>–>--> <!--<!– <el-descriptions-item v-if="item.comment" label-class-name="my-label">–>--> <!--<!– <template slot="label"><i class="el-icon-tickets"></i>处理意见</template>–>--> <!--<!– {{item.comment.comment}}–>--> <!--<!– </el-descriptions-item>–>--> <!--<!– </el-descriptions>–>--> <!--<!– </el-card>–>--> <!--<!– </el-timeline-item>–>--> <!--<!– </el-timeline>–>--> <!--<!– </div>–>--> <!-- </div>--> <!-- </el-dialog>--> <el-dialog :visible.sync="superviseShow" width="1000px" title="督办" append-to-body> <el-form ref="superviseForm" :model="superviseForm" :rules="superviseRules" label-width="80px"> <el-form-item label="督办内容" prop="content"> @@ -194,6 +139,8 @@ <el-button type="primary" @click="submitSupervise">确 定</el-button> </div> </el-dialog> <edit-task :task-id="editTaskId" :open="editTaskOpen" @close="editTaskOpen = false; editTaskId = ''"/> </div> </template> @@ -206,6 +153,7 @@ import {flowXmlAndNode} from "@/api/flowable/definition"; import BpmnViewer from '@/components/Process/viewer'; import LogView from "@/views/projectProcess/components/LogView"; import EditTask from "@/views/projectProcess/components/EditTask"; import {flowRecord} from "@/api/flowable/finished"; import {editProject} from "@/api/projectEngineering/projectInfo"; import {getProjectProcessLog} from "@/api/flowLog/flowLog"; @@ -214,10 +162,13 @@ name: "Detail", components: { BpmnViewer, LogView LogView, EditTask }, data() { return { editTaskId: '', editTaskOpen: false, logList: [], // 流程日志 processRecordShow: false, // 流转记录显示 flowRecordList: [], // 流程流转数据 @@ -280,6 +231,11 @@ this.getProjectProcessInfo() }, methods: { // 打开编辑任务 openEditTask(row) { this.editTaskOpen = true this.editTaskId = row.taskId }, transEventType(selectTabId) { if (selectTabId == 1) { return "all"