Browse Source

工作流重新提交,删除功能

v3
超级管理员 2 years ago
parent
commit
636a2ca8c9
  1. 19
      src/api/DesignForm/requestapi.ts
  2. 5
      src/api/DesignForm/type.ts
  3. 310
      src/components/DesignForm/public/form/form.vue
  4. 1
      src/components/DesignForm/public/form/formGroup.vue
  5. 249
      src/utils/workflow/const.ts
  6. 11
      src/views/taskplatform/taskmanagement/completedmatters.vue
  7. 56
      src/views/taskplatform/taskmanagement/drafts.vue
  8. 10
      src/views/taskplatform/taskmanagement/lookAndOperateLogInfo.vue
  9. 269
      src/views/taskplatform/taskmanagement/lookFlowInfo.vue
  10. 148
      src/views/taskplatform/taskmanagement/myrequest.vue
  11. 15
      src/views/taskplatform/taskmanagement/runFlowStep.vue
  12. 67
      src/views/taskplatform/taskmanagement/taskcustomerformnew.vue
  13. 16
      src/views/taskplatform/taskmanagement/todolist.vue

19
src/api/DesignForm/requestapi.ts

@ -22,7 +22,8 @@ import {
gogoBackFormTabelStruct,
nodeFlow,
searchUserListForm,
taskflowquery
taskflowquery,
editFlowFormStatus
} from './type';
//自定义表单列表
export function getCustomerFormList(queryParams: SearchForm): AxiosPromise<CustomerFormPageResult> {
@ -219,3 +220,19 @@ export function submitApprovalResults(data?:customerFormLogo){
data: data
});
}
//改变工作流任务状态
export function delRunFlow(data?:editFlowFormStatus){
return request({
url: '/systemapi/task_flow/delRunFlow',
method: 'post',
data: data
});
}
//重新发起流程
export function afreshRunFlow(data?:enableVersionId){
return request({
url: '/systemapi/task_flow/afreshRunFlow',
method: 'post',
data: data
});
}

5
src/api/DesignForm/type.ts

@ -177,3 +177,8 @@ export interface taskflowquery extends PageQuery{
class?:number; //类型:1、我的请求;2、待办事宜;3、已办事宜;4:草稿箱
state?:number; //状态:状态:1、草稿;2:驳回;3:审批中;4:归档;5:删除
}
//编辑表单状态
export interface editFlowFormStatus{
id:string;
status:number;
}

310
src/components/DesignForm/public/form/form.vue

@ -34,8 +34,12 @@ const props = withDefaults(
editUrl?: string // url
beforeSubmit?: Function | string //
afterSubmit?: Function // return false
closeAppSubmit?: Function
closeAppSubmit?: Function //
changeKeyVal?: Function //
anewSubmit?: Function //
saveDraftPage?: Function //稿
saveEditFormInfo?: Function //稿
sendDraftSubmit?: Function //稿
value?: { [key: string]: any } // setValue
options?: { [key: string]: any } // setOptions
dict?: object //
@ -316,6 +320,20 @@ provide(constFormBtnEvent, (obj: any) => {
notReturn = props.closeAppSubmit()
}
break
case 'saveDraft': //稿
saveDraft() // 稿
break
case "saveEditDraft": //稿
saveEditDraft()
break
case 'afreshSubmit': //
afreshSubmit() //
break
case 'draftSubmit': //稿
draftSubmit()
break
default:
break
}
})
//
@ -334,7 +352,7 @@ const getData = (params = {}) => {
requestUrl ="/systemapi/task_management/add_form_data"
break;
case "editFormContent":
requestUrl ="/systemapi/task_management/customer_form_editdata"
requestUrl ="/systemapi/task_management/newcust_form_editdata"
break;
default:
}
@ -357,7 +375,9 @@ const getData = (params = {}) => {
.then((res: any) => {
loading.value = false
const result = res.data
// console.log("--->",res)
result.formKey = newParams.id
result.formId = newParams.version
console.log("停止数据请求--->",newParams)
if (result) {
let formatRes: any = result
//
@ -393,6 +413,7 @@ const getData = (params = {}) => {
}
//
const submit = (params = {}) => {
let addUrl = props.formData.config?.addUrl || props.addUrl
let editUrl = props.formData.config?.editUrl || props.editUrl
@ -416,7 +437,7 @@ const submit = (params = {}) => {
apiUrl ="/systemapi/task_management/add_form_newdata"
break;
case "editFormContent":
apiUrl ="/systemapi/task_management/customer_form_editdata"
apiUrl ="/systemapi/task_management/newcust_form_editdata"
break;
default:
}
@ -531,6 +552,7 @@ const resetFields = () => {
// setValue(Object.assign(model.value, obj || {})) //
}
onMounted(() => {
console.log("数据处理结束--->",props.type)
getInitModel()
nextTick(() => {
appendRemoveStyle(true)
@ -543,6 +565,281 @@ onUnmounted(() => {
}
appendRemoveStyle()
})
//
const afreshSubmit = (params = {}) => {
let apiUrl = "/systemapi/task_management/newcust_form_editdata"
if (props.isSearch || !apiUrl || loading.value) {
if (!props.isSearch && !apiUrl) {
console.error(
new Error('请在表单设计处配置接口事件url或选择数据源或设置props')
)
}
//
return
}
validate((valid: boolean, fields: any) => {
if (valid) {
const formatParams = Object.assign({}, fields, params)
let submitParams
const beforeSubmit = props.formData.events?.beforeSubmit
if (beforeSubmit) {
if (typeof beforeSubmit === 'function') {
submitParams = beforeSubmit(formatParams, route)
} else {
submitParams = formatResult(formatParams, beforeSubmit)
}
}
if (props.beforeSubmit && typeof props.beforeSubmit === 'string') {
submitParams = formatResult(formatParams, props.beforeSubmit)
} else if (typeof props.beforeSubmit === 'function') {
submitParams = props.beforeSubmit(formatParams, route)
}
if (submitParams === false) {
return
}
//
currencyFormApiSubmit(apiUrl, submitParams ?? formatParams)
.then((res: any) => {
anewSubmit('success', res)
})
.catch(res => {
anewSubmit('fail', res)
})
}else {
//
anewSubmit('validate', fields)
}
})
}
const anewSubmit = (type: string, res: any) => {
const anewSubmit = props.formData.events?.anewSubmit
let notReturn
if (typeof anewSubmit === 'function') {
notReturn = anewSubmit(type, res)
// console.log("notReturn-1-123456->",props.anewSubmit)
} else if (typeof props.anewSubmit === 'function') {
notReturn = props.anewSubmit(type, res)
// console.log("notReturn--123456->",props.anewSubmit)
}
loading.value = false
if (notReturn === false) {
// false
return
}
if (type === 'success') {
ElMessage.success(res.msg || '保存成功!')
} else if (type === 'fail') {
ElMessage.error(res.message || '保存失败!')
}
}
//稿
const saveDraft = (params = {}) => {
let apiUrl ="/systemapi/task_management/add_form_newdata"
if (props.isSearch || !apiUrl || loading.value) {
if (!props.isSearch && !apiUrl) {
console.error(
new Error('请在表单设计处配置接口事件url或选择数据源或设置props')
)
}
//
return
}
validate((valid: boolean, fields: any) => {
if (valid) {
const formatParams = Object.assign({}, fields, params)
let submitParams
const beforeSubmit = props.formData.events?.beforeSubmit
if (beforeSubmit) {
if (typeof beforeSubmit === 'function') {
submitParams = beforeSubmit(formatParams, route)
} else {
submitParams = formatResult(formatParams, beforeSubmit)
}
}
if (props.beforeSubmit && typeof props.beforeSubmit === 'string') {
submitParams = formatResult(formatParams, props.beforeSubmit)
} else if (typeof props.beforeSubmit === 'function') {
submitParams = props.beforeSubmit(formatParams, route)
}
if (submitParams === false) {
return
}
//
currencyFormApiSubmit(apiUrl, submitParams ?? formatParams)
.then((res: any) => {
saveDraftPage('success', res)
})
.catch(res => {
saveDraftPage('fail', res)
})
}else {
//
saveDraftPage('validate', fields)
}
})
}
const saveDraftPage = (type: string, res: any) => {
const saveDraftPage = props.formData.events?.saveDraftPage
let notReturn
if (typeof saveDraftPage === 'function') {
notReturn = saveDraftPage(type, res)
// console.log("notReturn-1-123456->",props.anewSubmit)
} else if (typeof props.saveDraftPage === 'function') {
notReturn = props.saveDraftPage(type, res)
// console.log("notReturn--123456->",props.anewSubmit)
}
loading.value = false
if (notReturn === false) {
// false
return
}
if (type === 'success') {
ElMessage.success(res.msg || '保存成功!')
} else if (type === 'fail') {
ElMessage.error(res.message || '保存失败!')
}
}
//稿
const saveEditDraft = (params = {}) => {
let apiUrl = "/systemapi/task_management/newcust_form_editdata"
if (props.isSearch || !apiUrl || loading.value) {
if (!props.isSearch && !apiUrl) {
console.error(
new Error('请在表单设计处配置接口事件url或选择数据源或设置props')
)
}
//
return
}
validate((valid: boolean, fields: any) => {
if (valid) {
const formatParams = Object.assign({}, fields, params)
let submitParams
const beforeSubmit = props.formData.events?.beforeSubmit
if (beforeSubmit) {
if (typeof beforeSubmit === 'function') {
submitParams = beforeSubmit(formatParams, route)
} else {
submitParams = formatResult(formatParams, beforeSubmit)
}
}
if (props.beforeSubmit && typeof props.beforeSubmit === 'string') {
submitParams = formatResult(formatParams, props.beforeSubmit)
} else if (typeof props.beforeSubmit === 'function') {
submitParams = props.beforeSubmit(formatParams, route)
}
if (submitParams === false) {
return
}
//
currencyFormApiSubmit(apiUrl, submitParams ?? formatParams)
.then((res: any) => {
saveEditFormInfo('success', res)
})
.catch(res => {
saveEditFormInfo('fail', res)
})
}else {
//
saveEditFormInfo('validate', fields)
}
})
}
const saveEditFormInfo = (type: string, res: any) => {
const saveEditFormInfo = props.formData.events?.saveEditFormInfo
let notReturn
if (typeof saveEditFormInfo === 'function') {
notReturn = saveEditFormInfo(type, res)
// console.log("notReturn-1-123456->",props.saveEditFormInfo)
} else if (typeof props.saveEditFormInfo === 'function') {
notReturn = props.saveEditFormInfo(type, res)
// console.log("notReturn--123456->",props.anewSubmit)
}
loading.value = false
if (notReturn === false) {
// false
return
}
if (type === 'success') {
ElMessage.success(res.msg || '保存成功!')
} else if (type === 'fail') {
ElMessage.error(res.message || '保存失败!')
}
}
/**
* 草稿提交审批
*/
const draftSubmit = (params = {}) => {
let apiUrl = "/systemapi/task_management/newcust_form_editdata"
if (props.isSearch || !apiUrl || loading.value) {
if (!props.isSearch && !apiUrl) {
console.error(
new Error('请在表单设计处配置接口事件url或选择数据源或设置props')
)
}
//
return
}
validate((valid: boolean, fields: any) => {
if (valid) {
const formatParams = Object.assign({}, fields, params)
let submitParams
const beforeSubmit = props.formData.events?.beforeSubmit
if (beforeSubmit) {
if (typeof beforeSubmit === 'function') {
submitParams = beforeSubmit(formatParams, route)
} else {
submitParams = formatResult(formatParams, beforeSubmit)
}
}
if (props.beforeSubmit && typeof props.beforeSubmit === 'string') {
submitParams = formatResult(formatParams, props.beforeSubmit)
} else if (typeof props.beforeSubmit === 'function') {
submitParams = props.beforeSubmit(formatParams, route)
}
if (submitParams === false) {
return
}
//
currencyFormApiSubmit(apiUrl, submitParams ?? formatParams)
.then((res: any) => {
sendDraftSubmit('success', res)
})
.catch(res => {
sendDraftSubmit('fail', res)
})
}else {
//
sendDraftSubmit('validate', fields)
}
})
}
const sendDraftSubmit = (type: string, res: any) => {
const sendDraftSubmit = props.formData.events?.sendDraftSubmit
let notReturn
if (typeof sendDraftSubmit === 'function') {
notReturn = sendDraftSubmit(type, res)
// console.log("notReturn-1-123456->",props.sendDraftSubmit)
} else if (typeof props.sendDraftSubmit === 'function') {
notReturn = props.sendDraftSubmit(type, res)
// console.log("notReturn--123456->",props.anewSubmit)
}
loading.value = false
if (notReturn === false) {
// false
return
}
if (type === 'success') {
ElMessage.success(res.msg || '提交成功!')
} else if (type === 'fail') {
ElMessage.error(res.message || '提交失败!')
}
}
defineExpose({
setOptions,
setValue,
@ -550,7 +847,10 @@ defineExpose({
validate,
resetFields,
getData,
submit
submit,
anewSubmit,
saveDraftPage,
saveEditFormInfo
})
</script>
<template>

1
src/components/DesignForm/public/form/formGroup.vue

@ -121,6 +121,7 @@ const draggableAdd = (evt: any) => {
'flex',
'div'
]
// console.log("-->",obj.type)
if (!notNeedItem.includes(obj.type)) {
objectItem = {
item: {

249
src/utils/workflow/const.ts

@ -88,3 +88,252 @@ export let timeEquation = [
"daterange",
"monthrange"
]
//新增表单数据按钮
export let submitButton = {
type: "div",
control:
{},
config:
{
textAlign: "center",
span: ""
},
list: [
{
type: "grid",
iconFont: "fa-th-large",
columns: [
{
attr:{
span: 7
},
list: [],
type: "gridChild"
},
{
attr:{
span: 5
},
list: [
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "确认提交",
type: "primary",
key: "submit"
},
config:{
textAlign: "center"
}
}
],
type: "gridChild"
},
{
list: [
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "保存草稿",
type: "warning",
key: "saveDraft"
},
config:{
textAlign: "center"
}
}
],
attr:{
span: 5
},
type: "gridChild"
},
{
list: [],
attr:{
span: 7
},
type: "gridChild"
}
],
control:{},
config:{}
}
]
}
//重新提交表单数据按钮
export let afreshSubmitButton = {
type: "div",
control:
{},
config:
{
textAlign: "center",
span: ""
},
list: [
{
type: "grid",
iconFont: "fa-th-large",
columns: [
{
attr:{
span: 7
},
list: [],
type: "gridChild"
},
{
attr:{
span: 5
},
list: [
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "确认提交",
type: "primary",
key: "afreshSubmit"
},
config:{
textAlign: "center"
}
}
],
type: "gridChild"
},
{
list: [
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "保存草稿",
type: "warning",
key: "saveEditDraft"
},
config:{
textAlign: "center"
}
}
],
attr:{
span: 5
},
type: "gridChild"
},
{
list: [],
attr:{
span: 7
},
type: "gridChild"
}
],
control:{},
config:{}
}
]
}
//申请修改
export let editFormCont = {
type: "div",
control:{},
config:{
textAlign: "center",
span: ""
},
list: [
{
type: "button",
control:{
label: "确认修改",
type: "primary",
key: "submitEdit"
},
config:{
textAlign: "center"
}
}
]
}
//草稿箱按钮
export let draftSubmitButton = {
type: "div",
control:
{},
config:
{
textAlign: "center",
span: ""
},
list: [
{
type: "grid",
iconFont: "fa-th-large",
columns: [
{
attr:{
span: 7
},
list: [],
type: "gridChild"
},
{
attr:{
span: 5
},
list: [
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "确认提交2",
type: "primary",
key: "draftSubmit"
},
config:{
textAlign: "center"
}
}
],
type: "gridChild"
},
{
list: [
{
type: "button",
iconFont: "fa-square-o",
control:{
label: "保存草稿",
type: "warning",
key: "saveEditDraft"
},
config:{
textAlign: "center"
}
}
],
attr:{
span: 5
},
type: "gridChild"
},
{
list: [],
attr:{
span: 7
},
type: "gridChild"
}
],
control:{},
config:{}
}
]
}

11
src/views/taskplatform/taskmanagement/completedmatters.vue

@ -8,7 +8,7 @@
import { taskFlowList } from '@/api/DesignForm/requestapi'
import { taskflowquery } from '@/api/DesignForm/type'
import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookAndOperateLogInfo.vue'
import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookFlowInfo.vue'
const selectInfo = reactive<taskflowquery>({
page: 1,
@ -157,7 +157,14 @@ const lookFlowInfo = (val:any,types:number) => {
</el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="100" >
<template #default="scope">
<el-button type="primary" class="fa fa-eye" @click="lookFlowInfo(scope.row,3)" />
<el-tooltip
class="box-item"
effect="dark"
content="查看详情"
placement="top-end"
>
<el-button type="primary" size="small" class="fa fa-eye" @click="lookFlowInfo(scope.row,3)" />
</el-tooltip>
</template>
</el-table-column>
</el-table>

56
src/views/taskplatform/taskmanagement/drafts.vue

@ -5,7 +5,7 @@
-->
<script lang='ts' setup>
import { Delete, Edit, Search, Share, Upload,View } from '@element-plus/icons-vue'
import { taskFlowList } from '@/api/DesignForm/requestapi'
import { taskFlowList,delRunFlow } from '@/api/DesignForm/requestapi'
import { taskflowquery } from '@/api/DesignForm/type'
const selectInfoDr = reactive<taskflowquery>({
@ -47,6 +47,42 @@ const initDataDr = () =>{
onMounted(()=>{
getToDoListDr();
})
/**
* 删除工作流
*/
const delFlowForm = (val:any) => {
ElMessageBox.confirm(
"您确定要删除此内容?一经删除!内容将不可恢复!",
'Warning',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
let sendInfo = {
id: val.idStr,
status: 5
}
delRunFlow(sendInfo)
.then((data)=>{
getToDoListDr();
ElMessage({
message: '删除成功!',
type: 'success'
})
})
})
.catch(() => {})
}
//
const editFlow = (val:any) => {
}
</script>
<template>
<div class="app_box">
@ -135,8 +171,22 @@ onMounted(()=>{
</el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="150" >
<template #default="scope">
<el-button type="warning" :icon="Edit" @click="editFlow(scope.row)" />
<el-button type="danger" :icon="Delete" @click="editFlow(scope.row.flowkeys)" />
<el-tooltip
class="box-item"
effect="dark"
content="编辑"
placement="top-end"
>
<el-button type="warning" size="small" class="fa fa-edit" @click="editFlow(scope.row)" />
</el-tooltip>
<el-tooltip
class="box-item"
effect="dark"
content="删除"
placement="top-end"
>
<el-button type="danger" size="small" class="fa fa-trash-o" @click="delFlowForm(scope.row)" />
</el-tooltip>
</template>
</el-table-column>
</el-table>

10
src/views/taskplatform/taskmanagement/lookAndOperateLogInfo.vue

@ -78,13 +78,12 @@ const formType = computed(() => {
const formEl = ref()
const formEl = ref<any>()
const drawerBeforeClose = () => {
console.log("监听打开关闭",false)
emits("getmytodolist")
emits("update:isshow", false);
}
@ -99,21 +98,22 @@ onMounted(()=>{
formState.formData = stringToObj(props.flowLogInfo.mastesform)
nextTick(() => {
console.log("res----------->", formEl.value)
formEl.value.getData({ id: props.flowLogInfo.flowkeys})
// formEl.value.getData({ id: props.flowLogInfo.flowkeys})
})
})
</script>
<template>
<el-drawer v-model="isOpen" v-loading="loadingData" element-loading-my-text="Loading..." :title="versiontitle" :close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :size="props.drawerWith" class="drawerClass" :before-close="drawerBeforeClose">
<table border="0" class="tableFlowBox">
<table border="0" v-if="isFlowForm" class="tableFlowBox">
<tr>
<td valign="top">
<div class="drawerFormBox boxLeft">
<ak-form
ref="formEl"
v-loading="formLoading" element-loading-text="Loading..."
:form-data="formState.formData"
:form-data="state.formData"
:type="formType"
:dict="formState.dict"
request-url="getFormContent"

269
src/views/taskplatform/taskmanagement/lookFlowInfo.vue

@ -0,0 +1,269 @@
<!--
@ 作者: 秦东
@ 时间: 2023-11-27 15:14:55
@ 备注:
-->
<script lang='ts' setup>
import { submitButton, afreshSubmitButton,editFormCont,draftSubmitButton } from "@/utils/workflow/const";
import {
json2string,
objToStringify,
string2json,
stringToObj
} from '@/utils/DesignForm/form'
import { haveCustomerFormVersion,generateFlow } from '@/api/taskapi/management'
import RunFlowStep from '@/views/taskplatform/taskmanagement/runFlowStep.vue'
import { judgeSubmitCancel,startRunFlow,afreshRunFlow } from '@/api/DesignForm/requestapi'
const props = defineProps({
isshow:{
type:Boolean,
default:true
},
drawerWith:{
type:Number,
default:0
},
flowLogInfo:{
type:Object,
default(){
return {}
}
},
operState:{
type:Number,
default:1
}
})
const emits = defineEmits(["update:isshow","getmytodolist"]);
const isOpen = computed({
get: () => props.isshow,
set: (val) => {
emits("update:isshow", val);
},
});
const formLoading = ref(false)
const loadingData = ref(false) //
const flowLoading = ref(false) //
const versiontitle = ref<any>("1")
const flowMap = ref<any>()
const nextStep = ref(0)
const nodeKey = ref<string>('');
const currentProgress = ref<number>(1);
//
const formState = reactive({
formData: {
list: [],
form: {},
config: {}
},
dict: {},
formId: 25,
id: 1,
loading: true
})
//
const gainFormData = () =>{
formLoading.value = true;
console.log("获取表单内容--->",props.flowLogInfo)
nextStep.value = props.flowLogInfo.nextStep
nodeKey.value = props.flowLogInfo.nodeKey;
currentProgress.value = props.flowLogInfo.currentStep
console.log("props.flowLogInfo--5-------->",props.flowLogInfo.mastesform)
formState.formData = stringToObj(props.flowLogInfo.mastesform)
// formState.formData.list.push(submitButton)
haveCustomerFormVersion({id:props.flowLogInfo.formVersionId})
.then(({ data }) =>{
console.log("res----------->",props.flowLogInfo.flowkeys, data)
// formState.formData = stringToObj(data.mastesform)
formState.dict = string2json(data.dict)
if(props.operState == 2 || props.operState == 3 || props.operState == 4){
judgeSubmitCancel({"name":data.mastesformjson})
.then((dataBut:any) =>{
console.log("res----判断按钮------->",dataBut,props.operState)
if(dataBut.code == 0){
// formState.formData.list.push(afreshSubmitButton)
// console.log("res----------->",dataBut,props.operState)
if (dataBut.data == 3 || dataBut.data == 4){
console.log("res----判断按钮------->",dataBut.data,props.operState)
if(props.operState == 2){
formState.formData.list.push(afreshSubmitButton)
}else if(props.operState == 3){
formState.formData.list.push(editFormCont)
}else if(props.operState == 4){
formState.formData.list.push(draftSubmitButton)
}
}
}
})
}
nextTick(() => {
formEl.value.getData({ id: props.flowLogInfo.flowkeys,version: props.flowLogInfo.formVersionId})
formState.loading = false
})
formLoading.value = false
})
}
const formType = computed(() => {
// id
if (true) {
return 2
} else {
return 1
}
// return props.operState
})
const formEl = ref<any>()
const drawerBeforeClose = () => {
console.log("监听打开关闭",false)
emits("getmytodolist")
emits("update:isshow", false);
}
onMounted(()=>{
versiontitle.value = props.flowLogInfo.title
flowMap.value = JSON.parse(props.flowLogInfo.flowcont)
gainFormData()
})
//
const closeAppSubmit = () => {
drawerBeforeClose();
}
const runstep = ref(null)
//
const anewSubmit = (type: string,val?:any) => {
console.log("重新提交数据---<",type,val)
if(type == "success"){
afreshRunFlow({id:props.flowLogInfo.flowkeys})
.then((data:any) => {
console.log("重新提交数据---<",data,runstep.value)
runstep.value.gainRunFlowTask()
})
.finally(() => {
drawerBeforeClose();
})
}
}
//稿
const saveEditFormInfo = (type: string,val?:any) => {
if(type == "success"){
runstep.value.gainRunFlowTask()
drawerBeforeClose();
}
}
//稿
const sendDraftSubmit = (type: string,val?:any) => {
if(type == "success"){
runstep.value.gainRunFlowTask()
drawerBeforeClose();
}
}
</script>
<template>
<el-drawer v-model="isOpen" v-loading="loadingData" element-loading-my-text="Loading..." :title="versiontitle" :close-on-click-modal="false" :close-on-press-escape="false" :destroy-on-close="true" :size="props.drawerWith" class="drawerClass" :before-close="drawerBeforeClose">
<table border="0" class="tableFlowBox">
<tr>
<td valign="top">
<div class="drawerFormBox boxLeft">
<ak-form
ref="formEl"
v-loading="formLoading" element-loading-text="Loading..."
:form-data="formState.formData"
:type="formType"
:dict="formState.dict"
request-url="getFormContent"
add-url="saveFormContent"
edit-url="editFormContent"
:before-submit="beforeSubmit"
:close-app-submit="closeAppSubmit"
:change-key-val="changeKeyVal"
:anew-submit = "anewSubmit"
:save-edit-form-info="saveEditFormInfo"
:send-draft-submit= "sendDraftSubmit"
/>
</div>
</td>
<td valign="top" width="350">
<RunFlowStep ref="runstep" :flow-key="props.flowLogInfo.flowkeys" :current-progress="currentProgress" @updatelist="drawerBeforeClose" />
</td>
</tr>
</table>
</el-drawer>
</template>
<style lang='scss' scoped>
.tableFlowBox{
width: 100%;
height: 100%;
// background-color: #000000;
.drawerFormBox{
width: 100%;
height: 100%;
// background-color: #ff0000;
}
}
.boxLeft{
padding: 0 10px 0 15px;
overflow: hidden;
overflow-y: auto;
}
.flowBox{
padding: 0 5px 0 10px;
}
.boxRight{
overflow: hidden;
overflow-y: auto;
border-left: 1px solid #EEEEEE;
}
.approvalBoard{
padding: 5px 10px;
background-color: #FFFFFF;
border-top: 1px solid #EEEEEE;
.juzhong{
padding: 10px 0;
text-align: center;
}
.appBoardTitle{
padding: 5px 0 10px 0;
display: block;
}
}
</style>
<style lang='scss'>
.drawerClass ::v-deep.el-drawer__header {
font-size: 22px;
text-align: center;
margin-bottom: 0px;
padding: 0;
.el-drawer__close-btn{
background-color: rgb(255, 77, 79);
color: white;
}
}
::v-deep .el-drawer__body {
padding: 0px;
}
.details {
width: 80%;
margin-right: 0px;
margin-left: 20%;
box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
}
.drawerBody{
padding: 20px;
}
</style>

148
src/views/taskplatform/taskmanagement/myrequest.vue

@ -4,17 +4,23 @@
@ 备注: 我的请求
-->
<script lang='ts' setup>
import { ElMessage,ElMessageBox } from 'element-plus'
import { Delete, Edit, Search, Share, Upload,View } from '@element-plus/icons-vue'
import { taskFlowList } from '@/api/DesignForm/requestapi'
import { taskFlowList,delRunFlow } from '@/api/DesignForm/requestapi'
import { taskflowquery } from '@/api/DesignForm/type'
import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookAndOperateLogInfo.vue'
// import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookAndOperateLogInfo.vue'
import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookFlowInfo.vue'
const selectMyInfo = reactive<taskflowquery>({
page: 1,
pagesize: 20,
class:1
})
const operState = ref<number>(1) // 1234
const inFoid = ref<string>()
const versionId = ref<string>() //使
const loadingMy = ref(false)
const searckFormReMyf = ref(ElForm);
const totalsMy = ref<number>(0) //
@ -60,8 +66,75 @@ const darwOpenOrClose = ref(false)
* types 记录类型; 1我的请求2待办事宜3已办事宜4草稿箱
*/
const lookFlowInfo = (val:any,types:number) => {
operState.value = 1
drawerMyWith.value = myappbox.value?.clientWidth
flowLogInfo.value = val
darwOpenOrClose.value = true
}
/**
* 重新申请
*/
const afreshSend = (val:any) =>{
operState.value = 2
drawerMyWith.value = myappbox.value?.clientWidth
flowLogInfo.value = val
versionId.value = val.version
darwOpenOrClose.value = true
inFoid.value = val.idStr
}
/**
* 申请修改数据
*/
const editFormSend = (val:any) =>{
operState.value = 3
drawerMyWith.value = myappbox.value?.clientWidth
flowLogInfo.value = val
versionId.value = val.version
darwOpenOrClose.value = true
inFoid.value = val.idStr
}
/**
* 删除工作流
*/
const delFlowForm = (val:any) => {
ElMessageBox.confirm(
"您确定要删除此内容?一经删除!内容将不可恢复!",
'Warning',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
let sendInfo = {
id: val.idStr,
status: 5
}
delRunFlow(sendInfo)
.then((data)=>{
getMyToDoList();
ElMessage({
message: '删除成功!',
type: 'success'
})
})
})
.catch(() => {})
}
/**
* 提交审批
*/
const submitApproval = (val:any) =>{
operState.value = 4
drawerMyWith.value = myappbox.value?.clientWidth
flowLogInfo.value = val
versionId.value = val.version
darwOpenOrClose.value = true
inFoid.value = val.idStr
}
</script>
<template>
@ -155,9 +228,56 @@ const lookFlowInfo = (val:any,types:number) => {
<el-text v-if="scope.row.currentNodeName" type="success">{{ scope.row.currentNodeName }}:</el-text><el-text v-for="(item,index) in scope.row.currentNodeUser" :key="index" type="warning">{{ item.name }}({{ item.number }})</el-text>
</template>
</el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="100" >
<el-table-column fixed="right" align="center" label="操作" width="200" >
<template #default="scope">
<el-button type="primary" class="fa fa-eye" @click="lookFlowInfo(scope.row,1)" />
<el-button-group>
<el-tooltip
v-if="scope.row.status==1"
class="box-item"
effect="dark"
content="提交审批"
placement="top-end"
>
<el-button type="success" size="small" class="fa fa-send-o" @click="submitApproval(scope.row)" />
</el-tooltip>
<el-tooltip
v-if="scope.row.status==2"
class="box-item"
effect="dark"
content="重新申请"
placement="top-end"
>
<el-button type="warning" size="small" class="fa fa-retweet" @click="afreshSend(scope.row)" />
</el-tooltip>
<el-tooltip
class="box-item"
effect="dark"
content="查看详情"
placement="top-end"
>
<el-button type="primary" size="small" class="fa fa-eye" @click="lookFlowInfo(scope.row,1)" />
</el-tooltip>
<el-tooltip
v-if="scope.row.status==2||scope.row.status==1"
class="box-item"
effect="dark"
content="删除"
placement="top-end"
>
<el-button type="danger" size="small" class="fa fa-trash-o" @click="delFlowForm(scope.row)" />
</el-tooltip>
<el-tooltip
v-if="scope.row.status==4"
class="box-item"
effect="dark"
content="申请修改"
placement="top-end"
>
<el-button type="info" size="small" class="fa fa-edit" @click="editFormSend(scope.row)" />
</el-tooltip>
</el-button-group>
</template>
</el-table-column>
</el-table>
@ -169,7 +289,7 @@ const lookFlowInfo = (val:any,types:number) => {
/>
</el-card>
<LookAndOperateLogInfo v-if="darwOpenOrClose" v-model:isshow="darwOpenOrClose" :flow-log-info="flowLogInfo" :drawer-with="drawerMyWith" @getmytodolist="getMyToDoList" />
<LookAndOperateLogInfo v-if="darwOpenOrClose" v-model:isshow="darwOpenOrClose" :flow-log-info="flowLogInfo" :drawer-with="drawerMyWith" :infoid="inFoid" :oper-state="operState" @getmytodolist="getMyToDoList" />
@ -191,4 +311,22 @@ const lookFlowInfo = (val:any,types:number) => {
width: 100%;
height: calc(100vh - 308px);
}
.tooltip-base-box {
width: 600px;
}
.tooltip-base-box .row {
display: flex;
align-items: center;
justify-content: space-between;
}
.tooltip-base-box .center {
justify-content: center;
}
.tooltip-base-box .box-item {
width: 110px;
margin-top: 10px;
}
</style>
<style>
</style>

15
src/views/taskplatform/taskmanagement/runFlowStep.vue

@ -31,6 +31,9 @@ const props = defineProps({
default:0
}
})
const emits = defineEmits(["updatelist"]);
const flowLoading = ref(false)
const openOrClose = ref(false) //
const openclosebox = ref(false) //
@ -107,14 +110,20 @@ const yesOrNo = (val:string,agreeOrRefuse:number) =>{
submitApprovalResults(sendInfo)
.then((data:any)=>{
console.log("提交审批----22222->",data)
// console.log("----22222->",data)
ElMessage({
message: '处理完成!',
type: 'success'
})
})
.finally(()=>{
gainRunFlowTask()
gainRunFlowTask();
emits("updatelist");
})
}
defineExpose({gainRunFlowTask})
</script>
<template>
<div class="drawerFormBox boxRight">
@ -126,7 +135,7 @@ const yesOrNo = (val:string,agreeOrRefuse:number) =>{
<el-steps v-loading="flowLoading" element-loading-text="Loading..." direction="vertical" :active="currentStep">
<el-step v-for="item in flowMaps" :key="item.step">
<template #title>
{{ item.nodeName }}
{{ item.nodeName }}<span v-if="item.examinemode==1"> 依次审批</span><span v-if="item.examinemode==2"> 会签</span><span v-if="item.examinemode==3"> 或签</span>
</template>
<template #description>
<table>

67
src/views/taskplatform/taskmanagement/taskcustomerformnew.vue

@ -6,8 +6,7 @@
<script lang='ts' setup>
import { ref, reactive, onMounted, computed, nextTick } from 'vue'
import { useRouter } from 'vue-router'
import { notAsA_BasisForJudgment,asAnApprovalActionControl,fixedValueControl,timeControl,timeEquation } from '@/utils/workflow/const'
import { notAsA_BasisForJudgment,asAnApprovalActionControl,fixedValueControl,timeControl,timeEquation,submitButton, afreshSubmitButton } from '@/utils/workflow/const'
import {
string2json,
@ -46,30 +45,6 @@ const props = defineProps({
default:0
}
})
const submitButton = {
type: "div",
control:
{},
config:
{
textAlign: "center",
span: ""
},
list: [
{
type: "button",
control:
{
label: "保存",
type: "primary",
key: "submit"
},
config:
{
textAlign: "center"
}
}]
}
const formLoading = ref(false)
const flowLoading = ref(false)
@ -130,6 +105,7 @@ const getTaskFormData = () =>{
haveCustomerFormVersion({id:props.versionid})
.then(({ data }) =>{
// console.log("",data)
gainFlowChart.id=data.flowkeystr
if(data.classify == 2){
isFlowForm.value = true;
}else{
@ -149,7 +125,6 @@ const getTaskFormData = () =>{
nextTick(() => {
//
gainFlowChart.id=data.flowkeystr
generateFlow(gainFlowChart)
.then((data:any) =>{
console.log("获取工作流不进图",data.data)
@ -167,11 +142,15 @@ const getTaskFormData = () =>{
const drawerWith = ref<number>(0);
onMounted(()=>{
drawerWith.value = window.innerWidth - 220
console.log("带有参数id为编辑状态--1-->",props.infoid)
});
window.addEventListener("resize", function(){
drawerWith.value = window.innerWidth -220
console.log("带有参数id为编辑状态--2-->",props.infoid)
})
const beforeSubmit = (params: any) => {
params.formId = props.versionid
@ -188,7 +167,8 @@ const afterSubmit = (type: string,val?:any) => {
if(val.data){
let sendInfo ={
id:val.data.uuid,
flowList:flowMap.value
flowList:flowMap.value,
state:3
}
startRunFlow(sendInfo)
.then((data:any)=>{
@ -418,6 +398,31 @@ const changeKeyVal = (key:any,val:any,type:any,attribute:any) => {
watch(()=>flowMap,(val:any)=>{
// console.log("-->",flowMap.value)
})
//稿
const saveDraftPage = (type: string,val?:any) => {
// console.log("------------------>",type,val)
if (type === 'success') {
// router.go(-1)
if(isFlowForm.value){
if(val.code == 0){
if(val.data){
let sendInfo ={
id:val.data.uuid,
flowList:flowMap.value,
state:1
}
startRunFlow(sendInfo)
.then((data:any)=>{
// console.log("--------1---------->",data)
})
}
}
// console.log("--------1---------->",type,val)
}
emits("searchquery");
closeAppSubmit();
}
}
const sendFlowInfo = ref<any>()
</script>
<template>
@ -427,8 +432,9 @@ const sendFlowInfo = ref<any>()
<td valign="top">
<div class="drawerFormBox boxLeft">
<ak-form
v-loading="formLoading" element-loading-text="Loading..."
ref="formEl"
v-loading="formLoading" element-loading-text="Loading..."
:form-data="state.formData"
:type="formType"
:dict="state.dict"
@ -439,6 +445,7 @@ const sendFlowInfo = ref<any>()
:after-submit="afterSubmit"
:close-app-submit="closeAppSubmit"
:change-key-val="changeKeyVal"
:save-draft-page="saveDraftPage"
/>
</div>
</td>
@ -490,7 +497,7 @@ const sendFlowInfo = ref<any>()
:before-submit="beforeSubmit"
:after-submit="afterSubmit"
:close-app-submit="closeAppSubmit"
:save-draft-page="saveDraftPage"
/>
</div>
</el-drawer>

16
src/views/taskplatform/taskmanagement/todolist.vue

@ -8,7 +8,8 @@
import { taskFlowList } from '@/api/DesignForm/requestapi'
import { taskflowquery } from '@/api/DesignForm/type'
import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookAndOperateLogInfo.vue'
// import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookAndOperateLogInfo.vue'
import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookFlowInfo.vue'
const selectInfoTd = reactive<taskflowquery>({
page: 1,
@ -157,7 +158,18 @@ const lookFlowInfo = (val:any,types:number) => {
</el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="100" >
<template #default="scope">
<el-button type="primary" class="fa fa-eye" @click="lookFlowInfo(scope.row,2)" />
<el-tooltip
class="box-item"
effect="dark"
content="查看详情"
placement="top-end"
>
<el-button type="primary" size="small" class="fa fa-eye" @click="lookFlowInfo(scope.row,2)" />
</el-tooltip>
</template>
</el-table-column>
</el-table>

Loading…
Cancel
Save