diff --git a/src/api/displayboardapi/indexapi.ts b/src/api/displayboardapi/indexapi.ts index 8f1e10268..03e567a33 100644 --- a/src/api/displayboardapi/indexapi.ts +++ b/src/api/displayboardapi/indexapi.ts @@ -86,3 +86,28 @@ export const getRoles = (data?: any) => { data: data }) } + +//搜索角色(新版) +export const SearchPositionUnify = (data?: any) => { + return request({ + url: '/kpiapi/powerpc/search_position_unify', + method: 'post', + data: data + }) +} +//获取统一岗位 +export const GetPositionUnify = (data?: any) => { + return request({ + url: '/kpiapi/powerpc/get_position_unify', + method: 'post', + data: data + }) +} +//获取审批节点或条件节点 +export const gainNodeFactor = (data?: any) => { + return request({ + url: '/systemapi/task_flow/gain_node_factor', + method: 'post', + data: data + }) +} diff --git a/src/api/workflowapi/index.ts b/src/api/workflowapi/index.ts index bd2cf580d..d74739faa 100644 --- a/src/api/workflowapi/index.ts +++ b/src/api/workflowapi/index.ts @@ -2,7 +2,9 @@ import request from '@/utils/request'; import { AxiosPromise } from 'axios'; import { - formTableName + formTableName, + flowversion, + publicid } from '@/api/workflowapi/types' //初始化工作流 @@ -45,3 +47,11 @@ export function judgeOptionalNode(data: any) { data: data }); } +//获取工作流版本列表 +export function gainFlowVersionList(data: publicid): AxiosPromise { + return request({ + url: '/systemapi/task_flow/gain_flow_version_list', + method: 'post', + data: data + }); +} diff --git a/src/api/workflowapi/types.ts b/src/api/workflowapi/types.ts index 859dfd0a0..8e5df9839 100644 --- a/src/api/workflowapi/types.ts +++ b/src/api/workflowapi/types.ts @@ -1,9 +1,26 @@ +export interface publicid{ + id?: string; +} //表单名称 export interface formTableName{ name?: string; } //错误提示 -export interface tipListStrucr{ - +export interface flowversion{ + id:string; + version:string; + state:number; + key:string; +} + +//工作流判断条件 +export interface flowFactorCont{ + id:number; + factorid:string; + options:optionsInfo[] +} +export interface optionsInfo{ + label:string; + value:string; } diff --git a/src/components/workflow/addNode.vue b/src/components/workflow/addNode.vue index b51875303..84d4e026e 100644 --- a/src/components/workflow/addNode.vue +++ b/src/components/workflow/addNode.vue @@ -66,7 +66,8 @@ const addType = (type:any)=> { "nodeUserList": [], "fromNode": fromNodeNumber, "gotoNode":[gotoNodeNumber], - "sendBackNode":"beginnode" + "sendBackNode":"beginnode", + "attribute":1 } // console.log("p4",data) } else if (type == 2) { @@ -98,7 +99,8 @@ const addType = (type:any)=> { "nodeUserList": [], "fromNode": fromNodeNumber, "gotoNode":[gotoNodeNumber], - "sendBackNode":"beginnode" + "sendBackNode":"beginnode", + "attribute":1 } // console.log("p6",data) } diff --git a/src/components/workflow/dialog/common.ts b/src/components/workflow/dialog/common.ts index e0dea4391..0c0e620eb 100644 --- a/src/components/workflow/dialog/common.ts +++ b/src/components/workflow/dialog/common.ts @@ -1,12 +1,14 @@ import $func from '@/utils/workflow/index' import { outputOrgAndUser } from '@/api/displayboardapi/types' -import { getBasisOrgChiled,getEmployees,getRoles } from '@/api/displayboardapi/indexapi' +import { getBasisOrgChiled,getEmployees,getRoles,SearchPositionUnify,GetPositionUnify,gainNodeFactor } from '@/api/displayboardapi/indexapi' export let searchVal = ref('') export let departments = ref() export let roles = ref({}) +export let positionList = ref() +export let formWordList = ref() //获取行政组织及人员 export let getDepartmentList = async (parentId:any = 0) => { @@ -39,8 +41,37 @@ export let getDebounceData = (event:any, type = 1) => { } })() } +export let searchPostName =async (event:any, type = 1) => { + + + let sendData ={ + name:event.target.value + } + console.log("searchPostName",sendData) + let { data } = await SearchPositionUnify(sendData); + positionList.value = data; + +} //角色列表 export let getRoleList = async () => { let { data: { list } } = await getRoles() roles.value = list; } + +export let getPostList = async () => { + let { data } = await GetPositionUnify() + console.log("getPostList",data); + positionList.value = data; +} + +//获取表单字段 +export let gainFormTableWorde = async (id:string,types:number) => { + let sendData ={ + id:id, + types:types + } + console.log("gainFormTableWorde--->",sendData); + let { data } = await gainNodeFactor(sendData) + console.log("gainFormTableWorde",data); + formWordList.value = data; +} diff --git a/src/components/workflow/dialog/formWord.vue b/src/components/workflow/dialog/formWord.vue new file mode 100644 index 000000000..080e9e9d3 --- /dev/null +++ b/src/components/workflow/dialog/formWord.vue @@ -0,0 +1,135 @@ + + + + diff --git a/src/components/workflow/dialog/positionDialog.vue b/src/components/workflow/dialog/positionDialog.vue new file mode 100644 index 000000000..24d91a375 --- /dev/null +++ b/src/components/workflow/dialog/positionDialog.vue @@ -0,0 +1,104 @@ + + + + diff --git a/src/components/workflow/drwer/approverDrawer.vue b/src/components/workflow/drwer/approverDrawer.vue index 646bb47a7..05b251bc5 100644 --- a/src/components/workflow/drwer/approverDrawer.vue +++ b/src/components/workflow/drwer/approverDrawer.vue @@ -9,6 +9,9 @@ import { setTypes, selectModes, selectRanges } from '@/utils/workflow/const' import { useStore } from '@/store/workflow/index' import { getAllParentNode,judgeOptionalNode } from '@/api/workflowapi/index' +import PositionDialog from '@/components/workflow/dialog/positionDialog.vue' +import FormWord from '@/components/workflow/dialog/formWord.vue' + let props = defineProps({ nodeConfig:{ type: Object, @@ -17,15 +20,28 @@ let props = defineProps({ directormaxlevel: { type: Number, default: 4 - } + }, + isFormFlow:{ + type:Boolean, + default:true + }, + customerFormKey:{ + type:String, + default:"" + }, }); +const isExecutor = ref(false) const nodeTitle = ref("审批人设置") const nodeOptional = ref() //审批线已经存在得节点 const nodeAllVerify = ref() let approverConfig = ref({}) let approverVisible = ref(false) let approverRoleVisible = ref(false) -let checkedRoleList = ref([]) +let appPosistonVisible = ref(false) +let appFormTableVisible = ref(false) +let checkedRoleList = ref([]) //角色列表 +let checkedPostList = ref([]) //岗位列表 +let checkedFormList = ref([]) //字段列表 let checkedList = ref([]) let store = useStore() let { setApproverConfig, setApprover } = store @@ -40,30 +56,46 @@ let visible = computed({ } }) +watch(visible,(val:any)=>{ + // if(val) +}) + watch(approverConfig1, (val:any)=>{ - // console.log("directormaxlevel",props.directormaxlevel) + console.log("directormaxlevel",visible.value) approverConfig.value = val.value if(val.type == 3){ nodeTitle.value = "执行人设置" }else{ nodeTitle.value = "审批人设置" } - - judgeOptionalNode(props.nodeConfig) - .then((data)=>{ + isExecutor.value = false + + if(visible.value){ + judgeOptionalNode(props.nodeConfig) + .then((data:any)=>{ if(data.code == 0){ let sendData = { id:val.value.fromNode, allcont:data.data.allcont } getAllParentNode(sendData) - .then((data)=>{ + .then((data:any)=>{ if(data.code == 0){ nodeOptional.value = data.data.allcont + if(data.data.allcont && data.data.allcont.length > 0){ + data.data.allcont.forEach(item => { + if(item.type == 3){ + isExecutor.value = true + return + } + }); + } } }) } }) + } + }) @@ -91,6 +123,14 @@ const addRoleApprover = ()=> { approverRoleVisible.value = true; checkedRoleList.value = approverConfig.value.nodeUserList } +const addApproverPost = ()=> { + appPosistonVisible.value = true; + checkedPostList.value = approverConfig.value.nodeUserList +} +const surePostApprover = (data:any)=> { + appPosistonVisible.value = false; + approverConfig.value.nodeUserList = data; +} const sureApprover = (data:any)=> { approverConfig.value.nodeUserList = data; approverVisible.value = false; @@ -110,16 +150,39 @@ const saveApprover = ()=> { } const closeDrawer = ()=> { setApprover(false) + isExecutor.value = false +} +//判断审批设置是否显示 +const isShowRatify = (id:number)=>{ + if(id == 8){ + return props.isFormFlow + }else{ + return true + } +} + +//字段 +const formTableField = ()=> { + appFormTableVisible.value = true; + checkedFormList.value = approverConfig.value.nodeUserList +} +const sureFormTableApprover = (data:any)=> { + approverConfig.value.nodeUserList = data; + appFormTableVisible.value = false; } diff --git a/src/components/workflow/selectResult.vue b/src/components/workflow/selectResult.vue index 2ab29afac..3d5613bb1 100644 --- a/src/components/workflow/selectResult.vue +++ b/src/components/workflow/selectResult.vue @@ -11,7 +11,7 @@ let props = defineProps({ }, list: { type: Array, - default: () => [{ type: 'role', data, cancel }] + default: () => [{ type: 'role', data:[], cancel:()=>{} }] } }) let emits = defineEmits(['del']) @@ -49,6 +49,20 @@ let emits = defineEmits(['del']) + + diff --git a/src/styles/workflowcss/workflow.scss b/src/styles/workflowcss/workflow.scss index f78c92e71..e4858ea6d 100644 --- a/src/styles/workflowcss/workflow.scss +++ b/src/styles/workflowcss/workflow.scss @@ -1063,7 +1063,8 @@ html { .fd-nav-content-new { position: relative; width: initial; - height: 100%; + // height: 100%; + height: calc(100% - 60px); overflow-x: hidden; overflow-y: auto; padding-bottom: 30px diff --git a/src/utils/workflow/const.ts b/src/utils/workflow/const.ts index b3e4b4f0e..de720b7c3 100644 --- a/src/utils/workflow/const.ts +++ b/src/utils/workflow/const.ts @@ -39,3 +39,8 @@ export let opt1s = [ {value: '<', label: '<'}, {value: '≤', label: '≤'}, ] +//工作流判断条件(类型:1、申请人;2、自定义字段;3、单选;4、多选;5、开关) +export let flowFactor = [ + {id:1,name:"申请人",keyid:"applicant",type:1,isok:false,isCheckbox:true,options:[]}, + {id:2,name:"自定义字段",keyid:"customFields",type:2,isok:false,isCheckbox:false,options:[]} +] diff --git a/src/utils/workflow/index.ts b/src/utils/workflow/index.ts index 8547d03b1..f9c0f58fa 100644 --- a/src/utils/workflow/index.ts +++ b/src/utils/workflow/index.ts @@ -71,15 +71,26 @@ All.prototype = { }else if (nodeConfig.examineMode == 3) { return nodeConfig.nodeUserList.length + "人非会签" } - } + }else{ + // return "指定成员" + } } else if (nodeConfig.settype == 2) { let level = nodeConfig.directorLevel == 1 ? '直接主管' : '第' + nodeConfig.directorLevel + '级主管' if (nodeConfig.examineMode == 1) { return level } else if (nodeConfig.examineMode == 2) { return level + "会签" - } - } else if (nodeConfig.settype == 4) { + }else if (nodeConfig.examineMode == 3) { + return level + + "非会签" + } + } else if (nodeConfig.settype == 3) { + console.log("nodeConfig==会签==>",nodeConfig) + if (nodeConfig.nodeUserList.length == 1) { + return nodeConfig.nodeUserList[0].name + }else{ + return "指定行政岗位" + } + } else if (nodeConfig.settype == 4) { console.log("nodeConfig.selectRange",nodeConfig.selectRange,nodeConfig.nodeUserList); if (nodeConfig.selectRange == 1) { return "发起人自选" @@ -100,6 +111,18 @@ All.prototype = { return '从直接主管到通讯录中级别最高的第' + nodeConfig.examineEndDirectorLevel + '个层级主管' }else if (nodeConfig.settype == 7){ return "指定前置审批为本节点设置审批人" + }else if (nodeConfig.settype == 8){ + console.log("checkedFormList--1111->",nodeConfig) + if(nodeConfig.nodeUserList.length > 0){ + if (nodeConfig.examineMode == 1) { + return nodeConfig.nodeUserList[0].name + "依次审批" + } else if (nodeConfig.examineMode == 2) { + return nodeConfig.nodeUserList[0].name + "会签" + }else if (nodeConfig.examineMode == 3) { + return nodeConfig.nodeUserList[0].name + "非会签" + } + } + } }, dealStr(str:any, obj:any) { diff --git a/src/views/sysworkflow/codepage/index.vue b/src/views/sysworkflow/codepage/index.vue index 19c5ff14d..54d448e24 100644 --- a/src/views/sysworkflow/codepage/index.vue +++ b/src/views/sysworkflow/codepage/index.vue @@ -11,6 +11,8 @@ import CreateForm from '@/views/sysworkflow/codepage/createform.vue' import SetupConfig from '@/views/sysworkflow/codepage/setupconfig.vue' import DataTableStructure from '@/views/sysworkflow/codepage/datatablestructure.vue' +import FlowDrawingBoard from '@/views/sysworkflow/flow/flowDrawingBoard.vue' + const contbody = ref() const queryParams = reactive({ page: 1, @@ -143,121 +145,150 @@ const openDataTableStructure = (cont:customerFormCont) =>{ dataTableIsShow.value = true; // console.log("打开数据表结构图",cont) } +//设置工作流 +const drawer = ref(false) +const drawerWidht = ref() +const isFormFlow = ref(false) +const customerFormKey = ref() +const customerFormName = ref() +const flowKey = ref() +const setupWorkFlow = (cont:customerFormCont) => { + drawerWidht.value = contbody.value?.clientWidth + // console.log("clientHeight--->",drawerWidht.value) + drawer.value = true + isFormFlow.value = true; + customerFormName.value = cont.name + customerFormKey.value = cont.id.toString() + flowKey.value = cont.flowkey.toString() +} +