From 7c099c852bd307382a49d2c26b97d71ee90388ad Mon Sep 17 00:00:00 2001 From: liukang Date: Wed, 21 Aug 2024 18:07:06 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=92=8C=E4=BD=BF=E7=94=A8=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/my_business/workflow.js | 188 +++++ src/api/tool/tool.js | 23 +- src/api/tool/userApply.js | 51 ++ src/api/tool/userApplyItem.js | 44 + src/components/DealDrawer/index.vue | 107 +++ src/components/MonitorDrawer/index.vue | 34 + src/components/mainComponent/index.vue | 36 + src/main.js | 4 + src/router/index.js | 6 + src/store/getters.js | 1 + src/store/modules/user.js | 6 + src/views/interchange/index.vue | 1 - src/views/system/dept/index.vue | 1 - src/views/system/menu/index.vue | 1 - src/views/system/tool/gen/genInfoForm.vue | 1 - src/views/system/user/index.vue | 1 - src/views/tool/index.vue | 56 +- .../workflowList/addWorkflow/tool_release.vue | 738 +++++++++++++++++ .../workflowList/addWorkflow/use_apply.vue | 607 ++++++++++++++ src/views/workflowList/processcode/index.vue | 508 ++++++++++++ src/views/workflowList/workflowLogs/index.vue | 60 ++ src/views/workflowList/workflowRouter.vue | 51 ++ src/views/workstuff/dispose/index.vue | 763 ++++++------------ 23 files changed, 2750 insertions(+), 538 deletions(-) create mode 100644 src/api/my_business/workflow.js create mode 100644 src/api/tool/userApply.js create mode 100644 src/api/tool/userApplyItem.js create mode 100644 src/components/DealDrawer/index.vue create mode 100644 src/components/MonitorDrawer/index.vue create mode 100644 src/components/mainComponent/index.vue create mode 100644 src/views/workflowList/addWorkflow/tool_release.vue create mode 100644 src/views/workflowList/addWorkflow/use_apply.vue create mode 100644 src/views/workflowList/processcode/index.vue create mode 100644 src/views/workflowList/workflowLogs/index.vue create mode 100644 src/views/workflowList/workflowRouter.vue diff --git a/src/api/my_business/workflow.js b/src/api/my_business/workflow.js new file mode 100644 index 0000000..23f4a1f --- /dev/null +++ b/src/api/my_business/workflow.js @@ -0,0 +1,188 @@ +import request from '@/utils/request' + + +// 审批记录 +export function workflowGetLog(data) { + return request({ + url: '/workflow/getLog', + method: 'post', + data: data + }) +} +//流程实例撤回到拟稿人环节 +export function workflowbacktostart(data) { + return request({ + url: '/workflow/backtostart', + method: 'post', + data: data, + timeout: 30*60*1000 + }) +} +// 获取流程环节定义信息 +export function activitydefinition(procDefId, actDefId) { + return request({ + url: '/workflow/activitydefinition/' + procDefId + '/' + actDefId, + method: 'get', + + }) +} +// 查询列表 +export function workflowToDoList(data) { + return request({ + url: '/workflow/toDoList', + method: 'post', + data: data + }) +} + +// 新建流程,获取下一环节流程定义信息 +export function workflowNextactsNew(data) { + return request({ + url: '/workflow/nextacts/new', + method: 'post', + data: data + }) +} + +// 新建流程,获取下一环节流程定义信息 +// 获取下一环节集合,并可以标识已办和自动将未办理环节优先排序 +export function workflowNextactsNew2(data) { + return request({ + url: '/workflow/nextacts/new2', + method: 'post', + data: data + }) +} + +// 查询流程审批记录列表 +export function processWorkflowGetList(businessId) { + return request({ + url: '/process/workflowLog/list' + '?pageNum=1&pageSize=100&businessId=' + businessId, + method: 'get', + + }) +} + +export function getNextactuserByPending(query) { + return request({ + url: '/workflow/nextactuser/pending', + method: 'get', + params: query + }) +} + +export function getNextActUsersByNew(query) { + return request({ + url: '/workflow/nextactuser/new', + method: 'get', + params: query + }) +} + +export function workflowSubmit(data) { + return request({ + url: '/workflow/submit', + method: 'post', + data: data + }) +} +export function workflowCancel(data) { + return request({ + url: '/workflow/cancel', + method: 'post', + data: data + }) +} +export function workflowReject(data) { + return request({ + url: '/workflow/reject', + method: 'post', + data: data + }) +} + +export function workflowBacktoprev(data) { + return request({ + url: '/workflow/backtoprev', + method: 'post', + data: data + }) +} + +export function getHistAskLogUrl(procInstId) { + return request({ + url: '/workflow/histasklogurl/' + procInstId, + method: 'get', + }) +} + +export function getExtAttributeModel(procDefId, actDefId) { + return request({ + url: '/workflow/getExtAttributeModel/?procDefId=' + procDefId + "&actDefId=" + actDefId, + method: 'get', + }) +} +export function selectLogByBusinessId(query) { + return request({ + url: '/process/workflowLog/selectLogByBusinessId?businessId' + query, + method: 'get', + + }) +} +export function workflowprocesskey(query) { + return request({ + url: '/workflow/process/key/' + query, + method: 'get', + + }) +} + +export function getStartActdef(procDefId) { + return request({ + url: '/workflow/startactdef/' + procDefId, + method: 'get', + }) +} + +// 根据流程实例id获取流程实例信息和流程状态 +export function procInstInfoAndStatus(procInstId) { + return request({ + url: '/workflow/procInstInfoAndStatus/' + procInstId, + method: 'get', + }) +} + +// 根据流程实例id获取流程实例信息 +export function getProcInstInfo(procInstId) { + return request({ + url: '/workflow/procInstInfo/' + procInstId, + method: 'get', + }) +} + +export function selectLogByProcInstId(query) { + return request({ + url: '/web/log/list', + method: 'get', + params: query + }) +} + +// 获取流程待选人员展示方式 +export function selectUserStyle() { + return request({ + url: '/workflow/selectUserStyle', + method: 'get', + }) +} + +// 根据流程实例id获取流程实例信息 +export function getRecordbyPorcInstId(procInstId) { + return request({ + url: '/workflow/getRecord/' + procInstId, + method: 'get', + }) +} + + + diff --git a/src/api/tool/tool.js b/src/api/tool/tool.js index c6c0e47..1c5304e 100644 --- a/src/api/tool/tool.js +++ b/src/api/tool/tool.js @@ -17,20 +17,29 @@ export function getTool(toolId) { }) } + +export function getInfoByBpmcId(bpmcId) { + return request({ + url: '/tool/bpmc/' + bpmcId, + method: 'get' + }) +} + // 新增工具信息 export function addTool(data) { return request({ url: '/tool', method: 'post', - data: data + data: data, + timeout: 30*60*1000 }) } // 修改工具信息 export function updateTool(data) { return request({ - url: '/tool', - method: 'put', + url: '/tool/edit', + method: 'post', data: data }) } @@ -42,3 +51,11 @@ export function delTool(toolId) { method: 'delete' }) } + +export function checkToolExist(params) { + return request({ + url: '/tool/checkToolExist', + method: 'get', + params: params + }) +} diff --git a/src/api/tool/userApply.js b/src/api/tool/userApply.js new file mode 100644 index 0000000..339e730 --- /dev/null +++ b/src/api/tool/userApply.js @@ -0,0 +1,51 @@ +import request from '@/utils/request' + +// 查询使用申请列表 +export function listApply(query) { + return request({ + url: '/use/apply/list', + method: 'get', + params: query + }) +} + +// 查询使用申请详细 +export function getApply(id) { + return request({ + url: '/use/apply/' + id, + method: 'get' + }) +} + +export function getInfoByBpmcId(bpmcId) { + return request({ + url: '/use/apply/bpmc/' + bpmcId, + method: 'get' + }) +} + +// 新增使用申请 +export function addApply(data) { + return request({ + url: '/use/apply', + method: 'post', + data: data + }) +} + +// 修改使用申请 +export function updateApply(data) { + return request({ + url: '/use/apply/edit', + method: 'post', + data: data + }) +} + +// 删除使用申请 +export function delApply(id) { + return request({ + url: '/use/apply/' + id, + method: 'delete' + }) +} diff --git a/src/api/tool/userApplyItem.js b/src/api/tool/userApplyItem.js new file mode 100644 index 0000000..950a8ba --- /dev/null +++ b/src/api/tool/userApplyItem.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询使用申请详情列表 +export function listItem(query) { + return request({ + url: '/use/apply/item/list', + method: 'get', + params: query + }) +} + +// 查询使用申请详情详细 +export function getItem(id) { + return request({ + url: '/use/apply/item/' + id, + method: 'get' + }) +} + +// 新增使用申请详情 +export function addItem(data) { + return request({ + url: '/use/apply/item', + method: 'post', + data: data + }) +} + +// 修改使用申请详情 +export function updateItem(data) { + return request({ + url: '/use/apply/item', + method: 'put', + data: data + }) +} + +// 删除使用申请详情 +export function delItem(id) { + return request({ + url: '/use/apply/item/' + id, + method: 'delete' + }) +} diff --git a/src/components/DealDrawer/index.vue b/src/components/DealDrawer/index.vue new file mode 100644 index 0000000..cb6d027 --- /dev/null +++ b/src/components/DealDrawer/index.vue @@ -0,0 +1,107 @@ + + + diff --git a/src/components/MonitorDrawer/index.vue b/src/components/MonitorDrawer/index.vue new file mode 100644 index 0000000..fb17495 --- /dev/null +++ b/src/components/MonitorDrawer/index.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/components/mainComponent/index.vue b/src/components/mainComponent/index.vue new file mode 100644 index 0000000..53cd8ba --- /dev/null +++ b/src/components/mainComponent/index.vue @@ -0,0 +1,36 @@ + + diff --git a/src/main.js b/src/main.js index 50df872..4a5b32b 100644 --- a/src/main.js +++ b/src/main.js @@ -8,6 +8,7 @@ import '../public/css/poctstyle.css' import '../public/css/tool.css' import '@/assets/styles/index.scss' // global css import '@/assets/styles/ruoyi.scss' // ruoyi css +import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import App from './App' import store from './store' import router from './router' @@ -38,6 +39,8 @@ import DictTag from '@/components/DictTag' import VueMeta from 'vue-meta' // 字典数据组件 import DictData from '@/components/DictData' +// 图形监控组件 +import MonitorDrawer from "@/components/MonitorDrawer" // 全局方法挂载 Vue.prototype.getDicts = getDicts @@ -58,6 +61,7 @@ Vue.component('Editor', Editor) Vue.component('FileUpload', FileUpload) Vue.component('ImageUpload', ImageUpload) Vue.component('ImagePreview', ImagePreview) +Vue.component('MonitorDrawer', MonitorDrawer) Vue.use(directive) Vue.use(plugins) diff --git a/src/router/index.js b/src/router/index.js index 91c00b1..ff03511 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -41,6 +41,12 @@ export const constantRoutes = [ } ] }, + { + // 统一流程处理前端页面(涉及待办、已办、办结) + path: '/workflowRouter', + component: (resolve) => require(['@/views/workflowList/workflowRouter.vue'], resolve), + hidden: true + }, { path: '/login', component: () => import('@/views/login'), diff --git a/src/store/getters.js b/src/store/getters.js index 25475ce..f7f6256 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -7,6 +7,7 @@ const getters = { cachedViews: state => state.tagsView.cachedViews, token: state => state.user.token, avatar: state => state.user.avatar, + userInfo: state => state.user.info, name: state => state.user.name, nickName: state => state.user.nickName, introduction: state => state.user.introduction, diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 0d1af8f..cced906 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -7,6 +7,7 @@ const user = { id: '', name: '', nickName: '', + info: {}, avatar: '', roles: [], permissions: [] @@ -33,6 +34,9 @@ const user = { }, SET_PERMISSIONS: (state, permissions) => { state.permissions = permissions + }, + SET_INFO:(state, info) => { + state.info = info } }, @@ -70,6 +74,8 @@ const user = { commit('SET_NAME', user.userName) commit('SET_NICK_NAME', user.nickName) commit('SET_AVATAR', avatar) + commit('SET_INFO', user) + resolve(res) }).catch(error => { reject(error) diff --git a/src/views/interchange/index.vue b/src/views/interchange/index.vue index 121c88a..ba76e9d 100644 --- a/src/views/interchange/index.vue +++ b/src/views/interchange/index.vue @@ -155,7 +155,6 @@ import { getToken } from "@/utils/auth"; import { Base64 } from 'js-base64' import Treeselect from "@riophae/vue-treeselect"; import blUserSelector from "@/components/user-selector/src/user-selector"; -import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import toolDetail from "./toolDetail"; export default { diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue index 3896dcb..13aa906 100644 --- a/src/views/system/dept/index.vue +++ b/src/views/system/dept/index.vue @@ -159,7 +159,6 @@ diff --git a/src/views/workflowList/addWorkflow/use_apply.vue b/src/views/workflowList/addWorkflow/use_apply.vue new file mode 100644 index 0000000..da13551 --- /dev/null +++ b/src/views/workflowList/addWorkflow/use_apply.vue @@ -0,0 +1,607 @@ + + diff --git a/src/views/workflowList/processcode/index.vue b/src/views/workflowList/processcode/index.vue new file mode 100644 index 0000000..548714c --- /dev/null +++ b/src/views/workflowList/processcode/index.vue @@ -0,0 +1,508 @@ + + + + diff --git a/src/views/workflowList/workflowLogs/index.vue b/src/views/workflowList/workflowLogs/index.vue new file mode 100644 index 0000000..a61ee69 --- /dev/null +++ b/src/views/workflowList/workflowLogs/index.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/views/workflowList/workflowRouter.vue b/src/views/workflowList/workflowRouter.vue new file mode 100644 index 0000000..3a94cca --- /dev/null +++ b/src/views/workflowList/workflowRouter.vue @@ -0,0 +1,51 @@ + + + diff --git a/src/views/workstuff/dispose/index.vue b/src/views/workstuff/dispose/index.vue index e246a98..9443586 100644 --- a/src/views/workstuff/dispose/index.vue +++ b/src/views/workstuff/dispose/index.vue @@ -1,542 +1,277 @@ - - From 12caaecf88c7149fd492faa4ac5cdf0c0c03ec1d Mon Sep 17 00:00:00 2001 From: liukang Date: Tue, 27 Aug 2024 18:18:10 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=B7=A5=E5=85=B7=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=92=8C=E4=BD=BF=E7=94=A8=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=BB=86=E8=8A=82=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 8 +- .../user-selector/src/user-selector.vue | 19 +- src/store/getters.js | 1 + src/views/tool/index.vue | 337 +++--------------- .../workflowList/addWorkflow/tool_release.vue | 108 +++--- .../workflowList/addWorkflow/use_apply.vue | 62 ++-- 6 files changed, 159 insertions(+), 376 deletions(-) diff --git a/.env.development b/.env.development index a145863..d511e49 100644 --- a/.env.development +++ b/.env.development @@ -7,14 +7,14 @@ ENV = 'development' VUE_APP_CONTEXT_PATH = '/tool-tech' # 工具与技术交流管理系统/开发环境 -VUE_APP_BASE_API = 'http://192.168.2.85:8080/tool-tech-admin' -VUE_APP_WS_URL = 'ws://192.168.2.85:8080/tool-tech-admin/websocket' +VUE_APP_BASE_API = 'http://localhost:8080/tool-tech-admin' +VUE_APP_WS_URL = 'ws://localhost:8080/tool-tech-admin/websocket' # 文档在线预览服务 -VUE_APP_TOOL_TECH_FILE_VIEW_API = 'http://192.168.1.2:8012/tool-tech-file-view' +VUE_APP_TOOL_TECH_FILE_VIEW_API = 'http://localhost:8012/tool-tech-file-view' # 流程管理服务地址 -VUE_APP_WORKFLOW_MANAGE_URL = 'http://192.168.1.2:8080/ebpm-process-manage' +VUE_APP_WORKFLOW_MANAGE_URL = 'http://192.168.2.20:8085/ebpm-process-manage' # 路由懒加载 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/src/components/user-selector/src/user-selector.vue b/src/components/user-selector/src/user-selector.vue index fb33469..4e45aa7 100644 --- a/src/components/user-selector/src/user-selector.vue +++ b/src/components/user-selector/src/user-selector.vue @@ -276,15 +276,16 @@ return result; }, submitForm() { - let checkedUserArr = [] - let checkedUser = {} - this.checkedUsers.forEach(userName => { - checkedUser['userName'] = userName - checkedUser['userId'] = this.getUserIdByUserName(userName) - checkedUser['nickName'] = this.getNickNameByUserName(userName) - checkedUserArr.push(checkedUser) - }) - this.$emit("submit", checkedUserArr); //返回username和nickname + // let checkedUserArr = [] + // let checkedUser = {} + // this.checkedUsers.forEach(userName => { + // checkedUser['userName'] = userName + // checkedUser['userId'] = this.getUserIdByUserName(userName) + // checkedUser['nickName'] = this.getNickNameByUserName(userName) + // checkedUserArr.push(checkedUser) + // }) + // this.$emit("submit", checkedUserArr); //返回username和nickname + this.$emit("submit", JSON.parse(JSON.stringify(this.selectedUserList))); }, cancel() { this.$emit('cancel'); diff --git a/src/store/getters.js b/src/store/getters.js index f7f6256..667e425 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -7,6 +7,7 @@ const getters = { cachedViews: state => state.tagsView.cachedViews, token: state => state.user.token, avatar: state => state.user.avatar, + userId: state => state.user.id, userInfo: state => state.user.info, name: state => state.user.name, nickName: state => state.user.nickName, diff --git a/src/views/tool/index.vue b/src/views/tool/index.vue index cb2899f..a0ffacb 100644 --- a/src/views/tool/index.vue +++ b/src/views/tool/index.vue @@ -89,13 +89,11 @@ @click="handleAdd" v-hasPermi="['system:user:add']" >工具发布 - - - 批量删除 + 批量删除 导出 - + @@ -125,16 +123,14 @@ class-name="small-padding fixed-width" > @@ -150,164 +146,6 @@ - - - -
- -
-
- 基本信息 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {{dict.label}} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- 关联附件 -
-
- 上传 - 删除 -
- - - - - - - - - - - - - - -
-
- - -
-
- diff --git a/src/views/workflowList/addWorkflow/use_apply.vue b/src/views/workflowList/addWorkflow/use_apply.vue index da13551..0a66fa7 100644 --- a/src/views/workflowList/addWorkflow/use_apply.vue +++ b/src/views/workflowList/addWorkflow/use_apply.vue @@ -3,7 +3,7 @@
-

新增工具

+

申请使用

@@ -19,24 +19,23 @@
- +
基本信息
- - - {{form.userName}} + + + {{form.nickName}} - - {{form.deptId}} + {{form.deptName}} @@ -129,6 +128,7 @@ v-if="monitorDrawerVisible" ref="monitorDrawer" > +
diff --git a/src/views/tool/toolDetail.vue b/src/views/tool/toolDetail.vue index 0a7b881..a246f14 100644 --- a/src/views/tool/toolDetail.vue +++ b/src/views/tool/toolDetail.vue @@ -18,6 +18,11 @@ {{toolDetail.applyCondition}} {{toolDetail.operateExplain}} {{toolDetail.remark}} + + + {{tag.toolName}} + +
diff --git a/src/views/workflowList/addWorkflow/tool_release.vue b/src/views/workflowList/addWorkflow/tool_release.vue index 636e104..a880b09 100644 --- a/src/views/workflowList/addWorkflow/tool_release.vue +++ b/src/views/workflowList/addWorkflow/tool_release.vue @@ -128,6 +128,29 @@ + + + + + + + + + +
@@ -235,7 +258,7 @@ v-if="monitorDrawerVisible" ref="monitorDrawer" > - +
@@ -254,10 +277,12 @@ import Treeselect from '@riophae/vue-treeselect' import { deptTreeSelect } from "@/api/system/user"; import { addTool, checkToolExist, getInfoByBpmcId, updateTool } from '@/api/tool/tool' import blUserSelector from '@/components/user-selector/src/user-selector.vue' +import ToolSelector from '@/components/tool-selector/index.vue' // PDF本地文件预览 export default { dicts: ['sys_normal_disable','tool_type'], components: { + ToolSelector, blUserSelector, Treeselect, AddDoc, WorkflowLogs, @@ -420,6 +445,7 @@ export default { getInfoByBpmcId(procInstId).then(async (res) => { let formData = res.data; formData.type = _this.form.type + formData.association = JSON.parse(res.data.association) _this.form = formData _this.getDocumentList(res.data.toolId) }).finally(()=>{ @@ -519,6 +545,7 @@ export default { let formData = JSON.parse(JSON.stringify(_this.form)) formData.recordStatus = "draft"; formData.editStatus = _this.editStatus + formData.association = JSON.stringify(_this.form.association) if (formData.toolId) { updateTool(formData).then((res) => { if (res.code===200) { @@ -632,6 +659,7 @@ export default { handleWorkflowSubmit() { let _this = this let formData = JSON.parse(JSON.stringify(_this.form)) + formData.association = JSON.stringify(_this.form.association) let wf_receivers = []; if (_this.$refs.prochild.receiveUserList.length < 1 &&_this.$refs.prochild.nextData.actDefType!=='endEvent') { _this.$message.warning("请选择人员!"); @@ -747,8 +775,21 @@ export default { handleSelectNode(node){ this.$set(this.form,'toolRespDeptName',node.label) }, - handleFileAdd(fileList){ - console.log(fileList) + toolSelect(){ + this.$refs.selectHeadTool.blur(); + this.$nextTick(()=>{ + this.$refs.toolSelect.init(null,null,true) + }) + }, + selectHandle(source,index,data){ + let list = this.form.association + if (!list) { + list = [] + } + data.forEach(itme=>{ + list.push({toolId:itme.toolId,toolName:itme.toolName}) + }) + this.form.association = list } }, };