<template> <view> <u-search :show-action="false" v-model="searchForm.title" @change="inputWord" margin="20rpx 50rpx"></u-search> <view> <u-swipe-action> <u-swipe-action-item v-for="(row) in dataList" @click="({index}) => commit(index, row)" :key="row.id" :threshold="60" duration="500" :options="row.code === 1?[ { text: '催办', style: { backgroundColor: '#3c9cff' } }, { text: '撤销', style: { backgroundColor: '#f56c6c' } }, { text: '历史', style: { backgroundColor: '#5ac725' } }]:row.code === 3 || row.code === 4 ?[{ text: '历史', style: { backgroundColor: '#5ac725' } },{ text: '编辑', style: { backgroundColor: '#3c9cff' } }]:[{ text: '历史', style: { backgroundColor: '#5ac725' } }]"> <u-cell-group> <u-cell @click="toDetail(row)"> <view slot="title" class="content"> <view class="text-bold text-grey"> <view class="ellipsis-description"> 标题:{{row.vars.title}} </view> </view> <view class="text-grey text-sm"> <view class="ellipsis-description"> 当前环节:{{row.taskName}} </view> </view> <view class="text-grey text-sm"> 执行时间:{{row.startTime | formatDate}} </view> </view> <view slot="right-icon"> <u-tag :text="row.status" plain shape="circle" :type="row.level === 'danger'? 'error':row.level"></u-tag> </view> </u-cell> </u-cell-group> </u-swipe-action-item> </u-swipe-action> </view> <u-loadmore :status="status" @loadmore="loadmore" :line="true" /> <u-gap height="20" bgColor="#fff"></u-gap> <u-back-top :scrollTop="0" mode="square"></u-back-top> </view> </template> <script> import taskService from "@/api/flowable/taskService" import processService from "@/api/flowable/processService" import userSelect from '@/components/user-select/user-select.vue' import pick from 'lodash.pick' export default { components:{ userSelect }, data() { return { status: 'loadmore', searchForm: { titile: '' }, dataList: [], tablePage: { pages: 0, currentPage: 0, pageSize: 10, orders: [{ column: "a.create_time", asc: false }], }, loading: false, } }, onLoad() { this.loadmore() }, methods: { // 输入监听 inputWord(e){ this.searchTimer && clearTimeout(this.searchTimer) this.searchTimer = setTimeout(()=>{ this.doSearch() },300) }, // 搜索 doSearch(){ this.dataList = []; this.tablePage.currentPage = 0; this.tablePage.pageSize = 10; this.tablePage.pages = 0; this.loadmore() }, onReachBottom() { this.loadmore() }, loadmore() { if(this.tablePage.currentPage!==0 && this.tablePage.pages <= this.tablePage.currentPage ) { this.status = 'nomore'; return; } this.tablePage.currentPage = ++ this.tablePage.currentPage; //联网加载数据 this.status = 'loading'; taskService.myApplyedList({ current: this.tablePage.currentPage, size: this.tablePage.pageSize, orders: this.tablePage.orders, ...this.searchForm }).then((data)=>{ //追加新数据 this.dataList=this.dataList.concat(data.records); this.tablePage.pages = data.pages; if(this.tablePage.pages <= this.tablePage.currentPage){ this.status = 'nomore' } else { this.status = 'loadmore' } }) }, commit(index, row){ if(row.code === 1) { if(index === 0){ this.urge(row) }else if(index === 1){ this.callback(row) }else if(index === 2){ this.toDetail(row) } } else if(row.code === 3 || row.code === 4) { if(index === 0){ this.urge(row) }else if(index === 1){ this.restart(row) } } else { if(index === 0){ this.toDetail(row) } } }, // 撤销申请 callback (row) { uni.showModal({ title: '提示', content: '确定要撤销该流程吗?', success: (res)=>{ if (res.confirm) { processService.revokeProcIns(row.processInstanceId, '用户撤销').then((data) => { uni.showToast({ title:data }) this.doSearch(this.curWord) }) } else if (res.cancel) { uni.hideLoading() } }, fail() { } }); }, urge (row) { uni.showToast({ title: '催办成功!' }) }, // 重新填写 restart(row) { // 读取流程表单 taskService .getTaskDef({ procInsId: row.processInstanceId, procDefId: row.processDefinitionId, }) .then((data) => { let query = { status: "start", title: row.vars.title, formTitle: row.vars.title, ...pick( data, "formType", "formUrl", "procDefKey", "taskDefKey", "procInsId", "procDefId", "taskId", "status", "title", "businessId" ) } uni.navigateTo({ url: '/pages/workbench/task/TaskFormEdit?flow='+JSON.stringify(query) }) }); }, toDetail (row) { taskService.getTaskDef({ procInsId: row.processInstanceId, procDefId: row.processDefinitionId }).then((data) => { let query = {readOnly: true, title: row.vars.title, formTitle: row.vars.title, ...pick(data, 'formType', 'formUrl', 'procDefKey', 'taskDefKey', 'procInsId', 'procDefId', 'taskId', 'status', 'title', 'businessId')} uni.navigateTo({ url: '/pages/workbench/task/TaskFormDetail?flow='+JSON.stringify(query) }) }) }, } } </script>