From 138882aff4069c6d97500b4997f2a25ded36d5b7 Mon Sep 17 00:00:00 2001 From: xy <271556543@qq.com> Date: Fri, 10 Jan 2025 18:05:21 +0800 Subject: [PATCH] 1 --- .env.development | 4 +- src/api/flow/index.js | 9 + src/utils/formBuilder.js | 78 +++-- src/views/flow/DesktopForm.vue | 30 +- src/views/flow/MobileForm.vue | 14 + src/views/flow/components/MultiDeal.vue | 373 +++++++++++++++++++++++- src/views/flow/components/assign.vue | 23 +- src/views/flow/list.vue | 102 ++++++- 8 files changed, 561 insertions(+), 72 deletions(-) diff --git a/.env.development b/.env.development index ba3a98f..74eb4a1 100644 --- a/.env.development +++ b/.env.development @@ -3,7 +3,7 @@ ENV = 'development' # base api #VUE_APP_BASE_API='http://192.167.20.118:8080/' -VUE_APP_BASE_API='http://cz-hjjc-test.115.langye.net' -VUE_APP_UPLOAD_API='http://cz-hjjc-test.115.langye.net/api/upload-file' +VUE_APP_BASE_API='https://cz-hjjc-test.115.langye.net' +VUE_APP_UPLOAD_API='https://cz-hjjc-test.115.langye.net/api/upload-file' VUE_APP_PREVIEW=//view.langye.net/preview/onlinePreview VUE_APP_MODULE_NAME=oa diff --git a/src/api/flow/index.js b/src/api/flow/index.js index e88c972..72f67d2 100644 --- a/src/api/flow/index.js +++ b/src/api/flow/index.js @@ -96,6 +96,15 @@ export function flowList(type,params,isLoading = false) { }) } +// 统计 +export function todoTotal() { + return request({ + method: 'get', + url: '/api/oa/flow/todo-total', + isLoading: false + }) +} + //流转 export function assign(flow_id, data) { return request({ diff --git a/src/utils/formBuilder.js b/src/utils/formBuilder.js index 797f56b..45d267d 100644 --- a/src/utils/formBuilder.js +++ b/src/utils/formBuilder.js @@ -196,6 +196,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab 'collapse-tags': true, filterable: true, 'value-key': 'id', + 'reserve-keyword': true, 'allow-create': !!info.is_select2_tag, 'default-first-option': true }, @@ -668,9 +669,9 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab const getDetailSelectValue = () => { let res = '' if (!!info.multiple) { - res = target[info.name] ? target[info.name].toString()?.split(/,|\|/).map(i => isNaN(Number(i)) ? i : Number(i)) : [] + res = target[info.name] ? target[info.name].toString()?.split(/,|\|/).map(i => (isNaN(Number(i)) || !i) ? i : Number(i)) : [] } else { - res = isNaN(Number(target[info.name]) || !target[info.name]) ? target[info.name] : Number(target[info.name]) + res = (isNaN(Number(target[info.name]))|| !target[info.name]) ? target[info.name] : Number(target[info.name]) } if (res instanceof Array) { if (typeof options[0] === 'object') { @@ -857,30 +858,32 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab const data = JSON.parse(log.data) Object.entries(data)?.forEach(([key, value]) => { if (value.hasOwnProperty('custom_field_id') && (value['custom_field_id'] === info.id)) { - isJointly = log.is_jointly_sign - jointlySignContent.push(h('div',[ - h('span', value.value), - h('br'), - info.is_sign ? ( - (log.user.sign_file && log.user.sign_file.url) ? h('el-image',{ - style: { - 'max-height': '80px', - 'max-width': '120px' - }, - props: { - src: log.user?.sign_file?.url, - fit: 'contain', - alt: log.user?.name - }, - attrs: { - src: log.user?.sign_file?.url, - alt: log.user?.name - } - }) : h('span', log.user?.name) - ) : '', - info.is_sign ? h('br') : '', - h('span', log.updated_at ? this.$moment(log.updated_at).format('YYYY年MM月DD') : '') - ])) + isJointly = !!log.is_jointly_sign + if (log.status) { + jointlySignContent.push(h('div',[ + h('span', value.value), + h('br'), + (info.is_sign) ? ( + (log.user.sign_file && log.user.sign_file.url) ? h('el-image',{ + style: { + 'max-height': '80px', + 'max-width': '120px' + }, + props: { + src: log.user?.sign_file?.url, + fit: 'contain', + alt: log.user?.name + }, + attrs: { + src: log.user?.sign_file?.url, + alt: log.user?.name + } + }) : h('span', log.user?.name) + ) : '', + info.is_sign ? h('br') : '', + h('span', log.updated_at ? this.$moment(log.updated_at).format('YYYY年MM月DD') : '') + ])) + } } }) }) @@ -895,16 +898,29 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab 'label-width': !info.label_show ? '0': '', }, style: { + // +1为了工作标题往下顺延 "grid-column-start": info.gs_x + 1, "grid-column-end": info.gs_x + 1 + info.gs_width, "grid-row-start": info.gs_y + 1 + (info.name === 'flow_title' ? 0 : 1), "grid-row-end": info.gs_y + 1 + (info.name === 'flow_title' ? 0 : 1) + info.gs_height, }, }, - isJointly ? [(/\/detail/.test(this.$route.path) && this.$route.query.flow_id && jointlySignContent.length > 0) ? '' : formItem,jointlySignContent] : [formItem,(() => { + isJointly ? [(info._writeable) ? formItem : '',jointlySignContent] : [(() => { + if (info.name === 'flow_title') { + return formItem + } + if (info._writeable) { + return formItem + } else { + let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field_id === info.id && field.type === 'write') !== -1 && (target[info.name])) + if (log && log.status) { + return formItem + } + } + })(),(() => { if (info.is_sign) { - let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name && field.type === 'write') !== -1 && (target[info.name])) - if (log && log.user) { + let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field_id === info.id && field.type === 'write') !== -1 && (target[info.name])) + if (log && log.status && log.user) { return h('div',[ (log.user.sign_file && log.user.sign_file.url) ? h('el-image',{ style: { @@ -1639,7 +1655,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab jointlySignContent.push(h('div',[ h('span', value.value), h('br'), - info.is_sign ? ( + (info.is_sign && log.status) ? ( (log.user.sign_file && log.user.sign_file.url) ? h('el-image',{ style: { 'max-height': '80px', @@ -1665,7 +1681,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab return isJointly ? [(/\/detail/.test(this.$route.path) && this.$route.query.flow_id && jointlySignContent.length > 0) ? '' : formItem,jointlySignContent] : [formItem,(() => { if (info.is_sign) { let log = this.logs.find(log => log.node?.fields?.findIndex(field => field?.field?.name === info.name && field.type === 'write') !== -1 && (target[info.name])) - if (log && log.user) { + if (log && log.status && log.user) { return h('van-cell',[ (log.user.sign_file && log.user.sign_file.url) ? h('el-image',{ style: { diff --git a/src/views/flow/DesktopForm.vue b/src/views/flow/DesktopForm.vue index c021e52..af7bf0e 100644 --- a/src/views/flow/DesktopForm.vue +++ b/src/views/flow/DesktopForm.vue @@ -15,6 +15,10 @@ export default { type: Boolean, default: true, }, + needFlowTitle: { + type: Boolean, + default: true + }, readable: { type: Array, default: () => [], @@ -246,18 +250,20 @@ export default { this.readable.indexOf(field.id) !== -1 || field.type === "label", _writeable: this.writeable.indexOf(field.id) !== -1, })); - authFields.unshift({ - name: "flow_title", - label: "工作名称", - type: "text", - gs_x: 0, - gs_y: 0, - gs_width: 12, - gs_height: 1, - label_show: 1, - _readable: !this.isFirstNode, - _writeable: this.isFirstNode, - }); + if (this.needFlowTitle) { + authFields.unshift({ + name: "flow_title", + label: "工作名称", + type: "text", + gs_x: 0, + gs_y: 0, + gs_width: 12, + gs_height: 1, + label_show: 1, + _readable: !this.isFirstNode, + _writeable: this.isFirstNode, + }); + } return h("div", [ h( "el-form", diff --git a/src/views/flow/MobileForm.vue b/src/views/flow/MobileForm.vue index 104e091..f5dc5ab 100644 --- a/src/views/flow/MobileForm.vue +++ b/src/views/flow/MobileForm.vue @@ -18,6 +18,10 @@ export default { type: Boolean, default: true }, + needFlowTitle: { + type: Boolean, + default: true + }, readable: { type: Array, default: () => [], @@ -170,6 +174,16 @@ export default { _writeable: this.writeable.indexOf(field.id) !== -1 })) const subFields = Array.from(this.subForm).map(i => i[1]?.customModel?.fields).filter(i => i).flat() + if (this.needFlowTitle) { + authFields.unshift({ + name: "flow_title", + label: "工作名称", + type: "text", + label_show: 1, + _readable: !this.isFirstNode, + _writeable: this.isFirstNode, + }); + } return h('div',[ h('van-form',{ ref: 'vanForm', diff --git a/src/views/flow/components/MultiDeal.vue b/src/views/flow/components/MultiDeal.vue index af87c25..14d34f1 100644 --- a/src/views/flow/components/MultiDeal.vue +++ b/src/views/flow/components/MultiDeal.vue @@ -25,7 +25,7 @@ :export-config="{}" :row-config="{ keyField: 'id' }" :custom-config="{ mode: 'popup' }" - :data="flows" + :data="dealFlows" > - + + + +