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"
>
-
+
+
+
+
+
+
- 确认
+ 暂存不流转
+ 保存并流转
+
+