Browse Source

合并秦东代码

v5
超级管理员 2 years ago
parent
commit
d8a193c1b6
  1. 44
      src/api/DesignForm/requestapi.ts
  2. 5
      src/api/DesignForm/type.ts
  3. 443
      src/components/DesignForm/public/form/form.vue
  4. 1
      src/components/DesignForm/public/form/formGroup.vue
  5. 297
      src/utils/workflow/const.ts
  6. 11
      src/views/taskplatform/taskmanagement/completedmatters.vue
  7. 81
      src/views/taskplatform/taskmanagement/drafts.vue
  8. 317
      src/views/taskplatform/taskmanagement/editFlowData.vue
  9. 10
      src/views/taskplatform/taskmanagement/lookAndOperateLogInfo.vue
  10. 379
      src/views/taskplatform/taskmanagement/lookFlowInfo.vue
  11. 196
      src/views/taskplatform/taskmanagement/myrequest.vue
  12. 26
      src/views/taskplatform/taskmanagement/runFlowStep.vue
  13. 67
      src/views/taskplatform/taskmanagement/taskcustomerformnew.vue
  14. 21
      src/views/taskplatform/taskmanagement/todolist.vue

44
src/api/DesignForm/requestapi.ts

@ -22,7 +22,8 @@ import {
gogoBackFormTabelStruct, gogoBackFormTabelStruct,
nodeFlow, nodeFlow,
searchUserListForm, searchUserListForm,
taskflowquery taskflowquery,
editFlowFormStatus
} from './type'; } from './type';
//自定义表单列表 //自定义表单列表
export function getCustomerFormList(queryParams: SearchForm): AxiosPromise<CustomerFormPageResult> { export function getCustomerFormList(queryParams: SearchForm): AxiosPromise<CustomerFormPageResult> {
@ -219,3 +220,44 @@ export function submitApprovalResults(data?:customerFormLogo){
data: data 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
});
}
//已有表单数据,只发布流程
export function onlyPublishFlow(data?:any){
return request({
url: '/systemapi/task_flow/onlyPublishFlow',
method: 'post',
data: data
});
}
//撤回申请
export function retractRunFlow(data?:enableVersionId){
return request({
url: '/systemapi/task_flow/retractRunFlow',
method: 'post',
data: data
});
}
//获取要修改的数据
export function gainEditFormFlowInfo(data?:enableVersionId){
return request({
url: '/systemapi/task_flow/gainEditFormFlowInfo',
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:草稿箱 class?:number; //类型:1、我的请求;2、待办事宜;3、已办事宜;4:草稿箱
state?:number; //状态:状态:1、草稿;2:驳回;3:审批中;4:归档;5:删除 state?:number; //状态:状态:1、草稿;2:驳回;3:审批中;4:归档;5:删除
} }
//编辑表单状态
export interface editFlowFormStatus{
id:string;
status:number;
}

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

@ -34,8 +34,13 @@ const props = withDefaults(
editUrl?: string // url editUrl?: string // url
beforeSubmit?: Function | string // beforeSubmit?: Function | string //
afterSubmit?: Function // return false afterSubmit?: Function // return false
closeAppSubmit?: Function closeAppSubmit?: Function //
changeKeyVal?: Function // changeKeyVal?: Function //
anewSubmit?: Function //
saveDraftPage?: Function //稿
saveEditFormInfo?: Function //稿
sendDraftSubmit?: Function //稿
submitEdit?: Function //
value?: { [key: string]: any } // setValue value?: { [key: string]: any } // setValue
options?: { [key: string]: any } // setOptions options?: { [key: string]: any } // setOptions
dict?: object // dict?: object //
@ -316,8 +321,86 @@ provide(constFormBtnEvent, (obj: any) => {
notReturn = props.closeAppSubmit() notReturn = props.closeAppSubmit()
} }
break break
case 'saveDraft': //稿
saveDraft() // 稿
break
case "saveEditDraft": //稿
saveEditDraft()
break
case 'afreshSubmit': //
afreshSubmit() //
break
case 'draftSubmit': //稿
draftSubmit()
break
case 'submitEdit': //
submitEditButton()
break
default:
break
} }
}) })
//
const getEditData = (params = {}) => {
let requestUrl ="/systemapi/task_flow/gainEditFormFlowInfo"
loading.value = true
const newParams: any = params
// 使propsevents使使
let newParams2
const beforeRequest = props.formData.events?.beforeRequest
if (typeof beforeRequest === 'function') {
newParams2 = beforeRequest(newParams, route)
}
if (typeof props.beforeRequest === 'function') {
newParams2 = props.beforeRequest(newParams, route)
}
if (newParams2 === false) {
//
return
}
currencyFormApiSubmit(requestUrl, newParams2 ?? newParams)
.then((res: any) => {
loading.value = false
const result = res.data.masterDataInfo
result.formKey = newParams.id
result.formId = newParams.version
if (result) {
let formatRes: any = result
//
const afterResponse = props.formData.events?.afterResponse
if (typeof afterResponse === 'string' && afterResponse) {
formatRes = formatResult(result, afterResponse)
} else if (typeof afterResponse === 'function') {
formatRes = afterResponse(result) ?? result
}
// vue
if (typeof props.afterResponse === 'string' && props.afterResponse) {
formatRes = formatResult(result, props.afterResponse)
} else if (typeof props.afterResponse === 'function') {
formatRes = props.afterResponse(result) ?? result
}
if (formatRes === false) {
return
}
console.log("停止数据请求--->",formatRes)
setValue(formatRes.result || formatRes)
nextTick(() => {
// dictoptions
if (formatRes.dict && Object.keys(formatRes.dict).length) {
resultDict.value = formatRes.dict
}
})
}
return res.data
})
.catch(res => {
loading.value = false
return ElMessage.error(res.message)
})
}
// //
const getData = (params = {}) => { const getData = (params = {}) => {
let requestUrl = props.formData.config?.requestUrl || props.requestUrl let requestUrl = props.formData.config?.requestUrl || props.requestUrl
@ -334,7 +417,7 @@ const getData = (params = {}) => {
requestUrl ="/systemapi/task_management/add_form_data" requestUrl ="/systemapi/task_management/add_form_data"
break; break;
case "editFormContent": case "editFormContent":
requestUrl ="/systemapi/task_management/customer_form_editdata" requestUrl ="/systemapi/task_management/newcust_form_editdata"
break; break;
default: default:
} }
@ -357,7 +440,9 @@ const getData = (params = {}) => {
.then((res: any) => { .then((res: any) => {
loading.value = false loading.value = false
const result = res.data const result = res.data
// console.log("--->",res) result.formKey = newParams.id
result.formId = newParams.version
console.log("停止数据请求--->",newParams)
if (result) { if (result) {
let formatRes: any = result let formatRes: any = result
// //
@ -393,6 +478,7 @@ const getData = (params = {}) => {
} }
//
const submit = (params = {}) => { const submit = (params = {}) => {
let addUrl = props.formData.config?.addUrl || props.addUrl let addUrl = props.formData.config?.addUrl || props.addUrl
let editUrl = props.formData.config?.editUrl || props.editUrl let editUrl = props.formData.config?.editUrl || props.editUrl
@ -416,7 +502,7 @@ const submit = (params = {}) => {
apiUrl ="/systemapi/task_management/add_form_newdata" apiUrl ="/systemapi/task_management/add_form_newdata"
break; break;
case "editFormContent": case "editFormContent":
apiUrl ="/systemapi/task_management/customer_form_editdata" apiUrl ="/systemapi/task_management/newcust_form_editdata"
break; break;
default: default:
} }
@ -531,6 +617,7 @@ const resetFields = () => {
// setValue(Object.assign(model.value, obj || {})) // // setValue(Object.assign(model.value, obj || {})) //
} }
onMounted(() => { onMounted(() => {
console.log("数据处理结束--->",props.type)
getInitModel() getInitModel()
nextTick(() => { nextTick(() => {
appendRemoveStyle(true) appendRemoveStyle(true)
@ -543,6 +630,347 @@ onUnmounted(() => {
} }
appendRemoveStyle() 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 || '提交失败!')
}
}
/**
* 申请修改
*/
const submitEditButton = (params = {}) => {
let apiUrl = "/systemapi/task_flow/editFormLogData"
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
}
console.log("提交修改数据",apiUrl,submitParams,formatParams)
//
currencyFormApiSubmit(apiUrl, submitParams ?? formatParams)
.then((res: any) => {
submitEdit('success', res)
})
.catch(res => {
submitEdit('fail', res)
})
}else {
//
submitEdit('validate', fields)
}
})
}
//
const submitEdit = (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
}
}
defineExpose({ defineExpose({
setOptions, setOptions,
setValue, setValue,
@ -550,7 +978,12 @@ defineExpose({
validate, validate,
resetFields, resetFields,
getData, getData,
submit submit,
anewSubmit,
saveDraftPage,
saveEditFormInfo,
getEditData,
submitEdit
}) })
</script> </script>
<template> <template>

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

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

297
src/utils/workflow/const.ts

@ -88,3 +88,300 @@ export let timeEquation = [
"daterange", "daterange",
"monthrange" "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: "textarea",
iconFont: "fa-text-height",
control:{
modelValue: "",
placeholder: "请输入您修改此数据的原因"
},
config:{},
name: "explicate",
item:{
label: "修改说明",
rules: [
{
required: true,
message: "必填项",
trigger: "change"
}
]
}
},
{
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:{}
}
]
}
//查看申请修改
export let editLookFormCont = {
type: "div",
control:{},
config:{
textAlign: "center",
span: ""
},
list: [
{
type: "textarea",
iconFont: "fa-text-height",
control:{
modelValue: "",
placeholder: "请输入您修改此数据的原因"
},
config:{
editDisabled: true
},
name: "explicate",
item:{
label: "修改说明",
rules: []
}
}
]
}

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

@ -8,7 +8,7 @@
import { taskFlowList } from '@/api/DesignForm/requestapi' import { taskFlowList } from '@/api/DesignForm/requestapi'
import { taskflowquery } from '@/api/DesignForm/type' 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>({ const selectInfo = reactive<taskflowquery>({
page: 1, page: 1,
@ -157,7 +157,14 @@ const lookFlowInfo = (val:any,types:number) => {
</el-table-column> </el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="100" > <el-table-column fixed="right" align="center" label="操作" width="100" >
<template #default="scope"> <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> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

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

@ -5,9 +5,11 @@
--> -->
<script lang='ts' setup> <script lang='ts' setup>
import { Delete, Edit, Search, Share, Upload,View } from '@element-plus/icons-vue' 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 { taskflowquery } from '@/api/DesignForm/type'
import LookAndOperateLogInfo from '@/views/taskplatform/taskmanagement/lookFlowInfo.vue'
const selectInfoDr = reactive<taskflowquery>({ const selectInfoDr = reactive<taskflowquery>({
page: 1, page: 1,
pagesize: 20, pagesize: 20,
@ -47,10 +49,61 @@ const initDataDr = () =>{
onMounted(()=>{ onMounted(()=>{
getToDoListDr(); getToDoListDr();
}) })
<<<<<<< HEAD
const editFlow = (val:nay) => {} const editFlow = (val:nay) => {}
=======
/**
* 删除工作流
*/
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 myappbox = ref()
const darwOpenOrClose = ref(false)
const operState = ref<number>(1) // 1234
const drawerMyWith = ref<number>(0); //
const flowLogInfo = ref<any>()
const versionId = ref<string>() //使
const inFoid = ref<string>()
//
const editFlow = (val:any) => {
operState.value = 4
drawerMyWith.value = myappbox.value?.clientWidth
flowLogInfo.value = val
versionId.value = val.version
darwOpenOrClose.value = true
inFoid.value = val.idStr
}
>>>>>>> v3
</script> </script>
<template> <template>
<div class="app_box"> <div ref="myappbox" class="app_box">
<div class="app-container"> <div class="app-container">
<div class="search"> <div class="search">
<el-form ref="searckFormRefdr" :model="selectInfoDr" :inline="true"> <el-form ref="searckFormRefdr" :model="selectInfoDr" :inline="true">
@ -77,7 +130,7 @@ const editFlow = (val:nay) => {}
class="table_box" class="table_box"
> >
<el-table-column fixed label="标题" prop="title" width="500" /> <el-table-column fixed label="标题" prop="title" width="500" />
<el-table-column label="创建人" prop="creater" > <el-table-column label="创建人" prop="creater" width="200" >
<template #default="scope"> <template #default="scope">
{{ scope.row.creatorInfo.name }}<el-text type="info">{{ scope.row.creatorInfo.number }}</el-text> {{ scope.row.creatorInfo.name }}<el-text type="info">{{ scope.row.creatorInfo.number }}</el-text>
</template> </template>
@ -135,8 +188,24 @@ const editFlow = (val:nay) => {}
</el-table-column> </el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="150" > <el-table-column fixed="right" align="center" label="操作" width="150" >
<template #default="scope"> <template #default="scope">
<el-button type="warning" :icon="Edit" @click="editFlow(scope.row)" /> <el-button-group>
<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>
</el-button-group>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -150,7 +219,7 @@ const editFlow = (val:nay) => {}
<LookAndOperateLogInfo v-if="darwOpenOrClose" v-model:isshow="darwOpenOrClose" :flow-log-info="flowLogInfo" :drawer-with="drawerMyWith" :infoid="inFoid" :oper-state="operState" @getmytodolist="getMyToDoList" />
</div> </div>

317
src/views/taskplatform/taskmanagement/editFlowData.vue

@ -0,0 +1,317 @@
<!--
@ 作者: 秦东
@ 时间: 2023-12-01 13:57:39
@ 备注: 流程结束后进行数据修改
-->
<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,onlyPublishFlow,gainEditFormFlowInfo } 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 flowAry = ref<any[]>();
const emits = defineEmits(["update:isshow","getmytodolist"]);
const isOpen = computed({
get: () => props.isshow,
set: (val) => {
emits("update:isshow", val);
},
});
const logistrue = ref(false)
const formLoading = ref(false)
const loadingData = ref(false) //
const flowLoading = ref(false) //
const versiontitle = ref<any>("")
const flowMap = ref<any>()
const nextStep = ref(0)
const nodeKey = ref<string>('');
const currentProgress = ref<number>(1);
const newLogAry = ref<any>("")
const oldLogAry = ref<any>("")
//
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){
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.getEditData({ id: props.flowLogInfo.flowkeys,version: props.flowLogInfo.formVersionId})
// formState.loading = false
})
formLoading.value = false
})
.finally(() => {
gainEditFormFlowInfo({ id: props.flowLogInfo.flowkeys})
.then((data:any)=>{
console.log("res----获得数据回显------->",data)
formEl.value.setValue(data.data.masterDataInfo)
newLogAry.value = data.data.newData
oldLogAry.value = data.data.oldData
logistrue.value = data.data.logistrue
})
})
}
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);
}
//
const closeAppSubmit = () => {
drawerBeforeClose();
}
onMounted(()=>{
versiontitle.value = "修改" + props.flowLogInfo.title + "数据"
flowMap.value = JSON.parse(props.flowLogInfo.flowcont)
gainFormData()
})
</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"
:submit-edit="submitEdit"
:close-app-submit="closeAppSubmit"
/>
<el-divider v-if="logistrue" content-position="left">修改记录{{logistrue}}}</el-divider>
<el-timeline>
<el-timeline-item v-if="newLogAry.length > 0" :timestamp="newLogAry.logTime" placement="top">
<el-card>
<el-descriptions
direction="vertical"
:column="4"
size="24px"
border
>
<div v-for="(item,index) in newLogAry" :key="index">
<el-descriptions-item v-if="!Array.isArray(item)&&index!='logTime'" :label="index">
{{ item }}
</el-descriptions-item>
<el-descriptions-item v-if="Array.isArray(item)&&index!='logTime'" :label="index" span="4">
<el-descriptions
direction="vertical"
:column="4"
size="24px"
border
>
<el-descriptions-item v-for="(items,indexs) in item[0]" :key="indexs" :label="indexs">
{{ items }}
</el-descriptions-item>
</el-descriptions>
</el-descriptions-item>
</div>
</el-descriptions>
</el-card>
</el-timeline-item>
<el-timeline-item v-for="itemss in oldLogAry" :key="itemss.id" :timestamp="itemss.logTime" placement="top">
<el-card>
<el-descriptions
direction="vertical"
:column="4"
size="24px"
border
>
<div v-for="(item,index) in itemss" :key="index">
<el-descriptions-item v-if="!Array.isArray(item)&&index!='logTime'" :label="index">
{{ item }}
</el-descriptions-item>
<el-descriptions-item v-if="Array.isArray(item)&&index!='logTime'" :label="index" span="4">
<el-descriptions
direction="vertical"
:column="4"
size="24px"
border
>
<el-descriptions-item v-for="(items,indexs) in item[0]" :key="indexs" :label="indexs">
{{ items }}
</el-descriptions-item>
</el-descriptions>
</el-descriptions-item>
</div>
</el-descriptions>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
</td>
<td valign="top" width="350">
<RunFlowStep ref="runstep" v-model:flowary="flowAry" :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>

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

@ -78,13 +78,12 @@ const formType = computed(() => {
const formEl = ref() const formEl = ref<any>()
const drawerBeforeClose = () => { const drawerBeforeClose = () => {
console.log("监听打开关闭",false) console.log("监听打开关闭",false)
emits("getmytodolist") emits("getmytodolist")
emits("update:isshow", false); emits("update:isshow", false);
} }
@ -99,7 +98,7 @@ onMounted(()=>{
formState.formData = stringToObj(props.flowLogInfo.mastesform) formState.formData = stringToObj(props.flowLogInfo.mastesform)
nextTick(() => { nextTick(() => {
console.log("res----------->", formEl.value) console.log("res----------->", formEl.value)
formEl.value.getData({ id: props.flowLogInfo.flowkeys}) // formEl.value.getData({ id: props.flowLogInfo.flowkeys})
}) })
}) })
@ -110,14 +109,15 @@ const closeAppSubmit = () => {}
</script> </script>
<template> <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"> <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> <tr>
<td valign="top"> <td valign="top">
<div class="drawerFormBox boxLeft"> <div class="drawerFormBox boxLeft">
<ak-form <ak-form
ref="formEl" ref="formEl"
v-loading="formLoading" element-loading-text="Loading..." v-loading="formLoading" element-loading-text="Loading..."
:form-data="formState.formData"
:form-data="state.formData"
:type="formType" :type="formType"
:dict="formState.dict" :dict="formState.dict"
request-url="getFormContent" request-url="getFormContent"

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

@ -0,0 +1,379 @@
<!--
@ 作者: 秦东
@ 时间: 2023-11-27 15:14:55
@ 备注:
-->
<script lang='ts' setup>
import { submitButton, afreshSubmitButton,editFormCont,draftSubmitButton,editLookFormCont } 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,onlyPublishFlow,gainEditFormFlowInfo } 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 flowAry = ref<any[]>();
const emits = defineEmits(["update:isshow","getmytodolist"]);
const isOpen = computed({
get: () => props.isshow,
set: (val) => {
emits("update:isshow", val);
},
});
const logistrue = ref(false)
const formLoading = ref(false)
const loadingData = ref(false) //
const flowLoading = ref(false) //
const versiontitle = ref<any>("")
const flowMap = ref<any>()
const nextStep = ref(0)
const nodeKey = ref<string>('');
const currentProgress = ref<number>(1);
const newLogAry = ref<any>("")
const oldLogAry = ref<any>("")
//
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
})
.finally(() => {
gainEditFormFlowInfo({ id: props.flowLogInfo.flowkeys})
.then((data:any)=>{
if(data.data.logistrue){
formState.formData.list.push(editLookFormCont)
}
console.log("res----获得数据回显------->",data)
formEl.value.setValue(data.data.masterDataInfo)
newLogAry.value = data.data.newData
oldLogAry.value = data.data.oldData
logistrue.value = data.data.logistrue
})
})
}
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) => {
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"){
let sendInfo ={
id:props.flowLogInfo.flowkeys,
flowList:flowAry.value,
state:3
}
onlyPublishFlow(sendInfo)
.then((data:any) =>{
console.log("草稿提交审批---<",sendInfo,data)
if(data.code == 0){
ElMessage.success(data.msg || '提交成功!')
if(runstep.value){
runstep.value.gainRunFlowTask()
}
drawerBeforeClose();
}
})
//
//
}
}
const changeKeyVal = () =>{}
const beforeSubmit = () =>{}
</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"
/>
<el-divider v-if="logistrue" content-position="left">历史记录</el-divider>
<el-timeline>
<el-timeline-item v-if="newLogAry.length > 0" :timestamp="newLogAry.logTime" placement="top">
<el-card>
<el-descriptions
direction="vertical"
:column="4"
:size="small"
border
>
<div v-for="(item,index) in newLogAry" :key="index">
<el-descriptions-item v-if="!Array.isArray(item)&&index!='logTime'" :label="index">
{{ item }}
</el-descriptions-item>
<el-descriptions-item v-if="Array.isArray(item)&&index!='logTime'" :label="index" :span="4">
<el-descriptions
direction="vertical"
:column="4"
:size="small"
border
>
<el-descriptions-item v-for="(items,indexs) in item[0]" :key="indexs" :label="indexs">
{{ items }}
</el-descriptions-item>
</el-descriptions>
</el-descriptions-item>
</div>
</el-descriptions>
</el-card>
</el-timeline-item>
<el-timeline-item v-for="itemss in oldLogAry" :key="itemss.id" :timestamp="itemss.logTime" placement="top">
<el-card>
<el-descriptions
direction="vertical"
:column="4"
:size="small"
border
>
<div v-for="(item,index) in itemss" :key="index">
<el-descriptions-item v-if="!Array.isArray(item)&&index!='logTime'" :label="index">
{{ item }}
</el-descriptions-item>
<el-descriptions-item v-if="Array.isArray(item)&&index!='logTime'" :label="index" :span="4">
<el-descriptions
direction="vertical"
:column="4"
:size="small"
border
>
<el-descriptions-item v-for="(items,indexs) in item[0]" :key="indexs" :label="indexs">
{{ items }}
</el-descriptions-item>
</el-descriptions>
</el-descriptions-item>
</div>
</el-descriptions>
</el-card>
</el-timeline-item>
</el-timeline>
</div>
</td>
<td valign="top" width="350">
<RunFlowStep ref="runstep" v-model:flowary="flowAry" :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>

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

@ -4,17 +4,25 @@
@ 备注: 我的请求 @ 备注: 我的请求
--> -->
<script lang='ts' setup> <script lang='ts' setup>
import { ElMessage,ElMessageBox } from 'element-plus'
import { Delete, Edit, Search, Share, Upload,View } from '@element-plus/icons-vue' import { Delete, Edit, Search, Share, Upload,View } from '@element-plus/icons-vue'
import { taskFlowList } from '@/api/DesignForm/requestapi' import { taskFlowList,delRunFlow,retractRunFlow } from '@/api/DesignForm/requestapi'
import { taskflowquery } from '@/api/DesignForm/type' 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'
import EditFlowData from '@/views/taskplatform/taskmanagement/editFlowData.vue'
const selectMyInfo = reactive<taskflowquery>({ const selectMyInfo = reactive<taskflowquery>({
page: 1, page: 1,
pagesize: 20, pagesize: 20,
class:1 class:1
}) })
const operState = ref<number>(1) // 1234
const inFoid = ref<string>()
const versionId = ref<string>() //使
const loadingMy = ref(false) const loadingMy = ref(false)
const searckFormReMyf = ref(ElForm); const searckFormReMyf = ref(ElForm);
const totalsMy = ref<number>(0) // const totalsMy = ref<number>(0) //
@ -53,19 +61,119 @@ onMounted(()=>{
}) })
const flowLogInfo = ref<any>() const flowLogInfo = ref<any>()
const darwOpenOrClose = ref(false) const darwOpenOrClose = ref(false)
const editOpenOrClose = ref(false)
/** /**
* 查看流程任务 * 查看流程任务
* val 记录内容 * val 记录内容
* types 记录类型; 1我的请求2待办事宜3已办事宜4草稿箱 * types 记录类型; 1我的请求2待办事宜3已办事宜4草稿箱
*/ */
const lookFlowInfo = (val:any,types:number) => { const lookFlowInfo = (val:any,types:number) => {
operState.value = 1
drawerMyWith.value = myappbox.value?.clientWidth
flowLogInfo.value = val flowLogInfo.value = val
darwOpenOrClose.value = true darwOpenOrClose.value = true
} }
<<<<<<< HEAD
const searchQuery = () =>{ const searchQuery = () =>{
getMyToDoList() getMyToDoList()
} }
=======
/**
* 重新申请
*/
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
editOpenOrClose.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
}
/**
* 撤回申请189778492982824960
*/
const retractFlowInfo = (val:any) => {
ElMessageBox.confirm(
"您确定要撤回此次申请?一经撤回!需要此流程重新提交申请!",
'Warning',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
)
.then(() => {
let sendInfo = {
id: val.flowkeys,
}
retractRunFlow(sendInfo)
.then((data)=>{
getMyToDoList();
ElMessage({
message: '撤回成功!',
type: 'success'
})
})
})
.catch(() => {})
}
const searchQuery = () =>{}
>>>>>>> v3
</script> </script>
<template> <template>
<div ref="myappbox" class="app_box"> <div ref="myappbox" class="app_box">
@ -158,9 +266,65 @@ const searchQuery = () =>{
<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> <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> </template>
</el-table-column> </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"> <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.isRetract"
class="box-item"
effect="dark"
content="撤回"
placement="top-end"
>
<el-button size="small" class="fa fa-reply-all" @click="retractFlowInfo(scope.row)" />
</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> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -172,9 +336,9 @@ const searchQuery = () =>{
/> />
</el-card> </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" />
<EditFlowData v-if="editOpenOrClose" v-model:isshow="editOpenOrClose" :flow-log-info="flowLogInfo" :drawer-with="drawerMyWith" :infoid="inFoid" :oper-state="operState" @getmytodolist="getMyToDoList" />
</div> </div>
@ -194,4 +358,22 @@ const searchQuery = () =>{
width: 100%; width: 100%;
height: calc(100vh - 308px); 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> </style>

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

@ -31,6 +31,9 @@ const props = defineProps({
default:0 default:0
} }
}) })
const emits = defineEmits(["update:flowary","updatelist"]);
const flowLoading = ref(false) const flowLoading = ref(false)
const openOrClose = ref(false) // const openOrClose = ref(false) //
const openclosebox = ref(false) // const openclosebox = ref(false) //
@ -53,6 +56,7 @@ const gainRunFlowTask = () =>{
flowMaps.value = data.data.flowList flowMaps.value = data.data.flowList
flowOpinion.value = data.data.operational flowOpinion.value = data.data.operational
currentStep.value = data.data.current_step currentStep.value = data.data.current_step
emits("update:flowary", data.data.flowList);
}) })
.finally(()=>{ .finally(()=>{
flowLoading.value = false flowLoading.value = false
@ -88,14 +92,21 @@ const addPeople = (val:any) =>{
} }
// //
const updateNode = (val:any) =>{ const updateNode = (val:any) =>{
<<<<<<< HEAD
if(flowMaps.value && flowMaps.value.length > 0){ if(flowMaps.value && flowMaps.value.length > 0){
=======
if(flowMaps.value&& flowMaps.value.length > 0){
>>>>>>> v3
flowMaps.value.forEach((item:any) =>{ flowMaps.value.forEach((item:any) =>{
if(item.step == zhiXingStep){ if(item.step == zhiXingStep){
item.operator = val item.operator = val
} }
}) })
} }
<<<<<<< HEAD
=======
>>>>>>> v3
} }
const sendFlowInfo = ref<string>() // const sendFlowInfo = ref<string>() //
// //
@ -110,14 +121,20 @@ const yesOrNo = (val:string,agreeOrRefuse:number) =>{
submitApprovalResults(sendInfo) submitApprovalResults(sendInfo)
.then((data:any)=>{ .then((data:any)=>{
console.log("提交审批----22222->",data) // console.log("----22222->",data)
ElMessage({
message: '处理完成!',
type: 'success'
})
}) })
.finally(()=>{ .finally(()=>{
gainRunFlowTask() gainRunFlowTask();
emits("updatelist");
}) })
} }
defineExpose({gainRunFlowTask})
</script> </script>
<template> <template>
<div class="drawerFormBox boxRight"> <div class="drawerFormBox boxRight">
@ -129,7 +146,7 @@ const yesOrNo = (val:string,agreeOrRefuse:number) =>{
<el-steps v-loading="flowLoading" element-loading-text="Loading..." direction="vertical" :active="currentStep"> <el-steps v-loading="flowLoading" element-loading-text="Loading..." direction="vertical" :active="currentStep">
<el-step v-for="item in flowMaps" :key="item.step"> <el-step v-for="item in flowMaps" :key="item.step">
<template #title> <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>
<template #description> <template #description>
<table> <table>
@ -155,6 +172,9 @@ const yesOrNo = (val:string,agreeOrRefuse:number) =>{
<el-text v-else-if="logItem.state==3" type="danger"> <el-text v-else-if="logItem.state==3" type="danger">
<span v-if="logItem.cause">{{logItem.cause}}</span><span v-else>已驳回</span> <span v-if="logItem.cause">{{logItem.cause}}</span><span v-else>已驳回</span>
</el-text> </el-text>
<el-text v-else-if="logItem.state==4" type="primary">
<span v-if="logItem.cause">{{logItem.cause}}</span><span v-else>已查看</span>
</el-text>
<el-text v-else> <el-text v-else>
<span v-if="logItem.cause">{{logItem.cause}}</span><span v-else>未操作</span> <span v-if="logItem.cause">{{logItem.cause}}</span><span v-else>未操作</span>
</el-text> · {{ logItem.time }} </el-text> · {{ logItem.time }}

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

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

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

@ -8,7 +8,8 @@
import { taskFlowList } from '@/api/DesignForm/requestapi' import { taskFlowList } from '@/api/DesignForm/requestapi'
import { taskflowquery } from '@/api/DesignForm/type' 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>({ const selectInfoTd = reactive<taskflowquery>({
page: 1, page: 1,
@ -64,8 +65,13 @@ const lookFlowInfo = (val:any,types:number) => {
flowLogInfo.value = val flowLogInfo.value = val
darwOpenOrClose.value = true darwOpenOrClose.value = true
} }
<<<<<<< HEAD
const searchQuery = () => { const searchQuery = () => {
getToDoListTd() getToDoListTd()
=======
const searchQuery = () =>{
>>>>>>> v3
} }
</script> </script>
<template> <template>
@ -160,7 +166,18 @@ const searchQuery = () => {
</el-table-column> </el-table-column>
<el-table-column fixed="right" align="center" label="操作" width="100" > <el-table-column fixed="right" align="center" label="操作" width="100" >
<template #default="scope"> <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> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>

Loading…
Cancel
Save