From 88b0440af932ef1a3964303631c375d542aec12f Mon Sep 17 00:00:00 2001 From: xy <271556543@qq.com> Date: Tue, 24 Dec 2024 16:26:05 +0800 Subject: [PATCH] 1 --- src/api/flow/index.js | 10 +++ src/layout/components/AppMain.vue | 2 +- src/utils/formBuilder.js | 104 ++++++++++++++++++++------ src/utils/validate.js | 12 +-- src/views/attendance/WorkOvertime.vue | 34 +++++---- src/views/flow/DesktopForm.vue | 2 + 6 files changed, 120 insertions(+), 44 deletions(-) diff --git a/src/api/flow/index.js b/src/api/flow/index.js index f26bc4b..129699d 100644 --- a/src/api/flow/index.js +++ b/src/api/flow/index.js @@ -220,3 +220,13 @@ export function updateFlowTime(params,isLoading=true) { isLoading }) } + + +export function getOvertimeHoliday(params,isLoading=false) { + return request({ + method: 'get', + url: '/api/oa/flow/get-overtime-holiday', + params, + isLoading + }) +} diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue index d9f57c4..21cf618 100644 --- a/src/layout/components/AppMain.vue +++ b/src/layout/components/AppMain.vue @@ -13,7 +13,7 @@ export default { name: 'AppMain', computed: { key() { - return this.$route.path + return this.$route.fullPath } } } diff --git a/src/utils/formBuilder.js b/src/utils/formBuilder.js index d5a50d4..b32d1e5 100644 --- a/src/utils/formBuilder.js +++ b/src/utils/formBuilder.js @@ -305,7 +305,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab "application/msword,image/jpeg,application/pdf,image/png,application/vnd.ms-powerpoint,text/plain,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document", multiple: !!info.multiple, limit: info.multiple ? 20 : 1, - fileList: this.form[info.name].map(i => { + fileList: this.form[info.name]?.map(i => { if (i.hasOwnProperty('original_name')) { i.name = i.original_name } @@ -569,7 +569,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab "min-height": "200px", border: true, stripe: true, - data: this.form[info.name], + data: (this.form[info.name] && typeof this.form[info.name] !== 'string') ? this.form[info.name] : [], "keep-source": true, "column-config": { resizable: true }, "show-overflow": true, @@ -800,11 +800,42 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab color: "#333", }, }, - this.form[info.name]?.toString()?.split(',').map(j => { - return this.flows[info.name]?.find((i) => + this.form[info.name]?.toString()?.split(',')?.map(j => { + let flow = this.flows[info.name]?.find((i) => i.id == j - )?.title; - })?.toString() + ) + return flow ? h('el-link', { + props: { + type: 'primary' + }, + style: { + 'line-height': '1.5' + }, + on: { + click: _ => { + let target = this.$router.resolve({ + path: '/flow/detail', + query: { + module_id: flow.custom_model_id, + flow_id: flow.id, + isSinglePage: 1 + } + }); + this.modalRender = h => h('iframe',{ + attrs: { + src: target.href, + }, + style: { + border: 'none', + width: '100%', + height: '100%' + } + }) + this.isShowModal = true + } + } + },flow.title) : '' + }) ); break; case "file": @@ -836,7 +867,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab accept: "application/msword,image/jpeg,application/pdf,image/png,application/vnd.ms-powerpoint,text/plain,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document", multiple: true, - fileList: (this.form[info.name] instanceof Array) ? this.form[info.name].map(i => { + fileList: (this.form[info.name] instanceof Array) ? this.form[info.name]?.map(i => { if (i.hasOwnProperty('original_name')) { i.name = i.original_name } @@ -1215,12 +1246,12 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab accept: "application/msword,image/jpeg,application/pdf,image/png,application/vnd.ms-powerpoint,text/plain,application/x-zip-compressed,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document", multiple: !!info.multiple, - fileList: row ? row[info.name].map(i => { + fileList: row ? row[info.name]?.map(i => { if (i.hasOwnProperty('original_name')) { i.name = i.original_name } return i - }) : this.form[info.name].map(i => { + }) : this.form[info.name]?.map(i => { if (i.hasOwnProperty('original_name')) { i.name = i.original_name } @@ -1408,7 +1439,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab ]), h( "div", - this.form[info.name].map((sForm, sIndex) => + this.form[info.name] instanceof Array ? this.form[info.name]?.map((sForm, sIndex) => h( "van-cell-group", { @@ -1463,7 +1494,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab ), ] ) - ) + ) : '' ), ]); break; @@ -1579,7 +1610,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab }), h( "div", - this.form[info.name]?.map((sForm, sIndex) => + this.form[info.name] instanceof Array ? this.form[info.name]?.map((sForm, sIndex) => h( "van-cell-group", { @@ -1620,7 +1651,7 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab ), ] ) - ) + ) : '' ), ]); break; @@ -1642,18 +1673,45 @@ export default function formBuilder(device, info, h, row, pWrite = false,pReadab for: info.name }, props: { - title: info.label, - value: row ? row[info.name]?.toString()?.split(',').map(j => { - return this.flows[info.name]?.find((i) => - i.id == j - )?.title; - })?.toString() : this.form[info.name]?.toString()?.split(',').map(j => { - return this.flows[info.name]?.find((i) => - i.id == j - )?.title; - })?.toString() + title: info.label } }, + this.form[info.name]?.toString()?.split(',')?.map(j => { + let flow = this.flows[info.name]?.find((i) => + i.id == j + ) + return flow ? h('el-link', { + props: { + type: 'primary' + }, + style: { + 'line-height': '1.5' + }, + on: { + click: _ => { + let target = this.$router.resolve({ + path: '/flow/detail', + query: { + module_id: flow.custom_model_id, + flow_id: flow.id, + isSinglePage: 1 + } + }); + this.modalRender = h => h('iframe',{ + attrs: { + src: target.href, + }, + style: { + border: 'none', + width: '100%', + height: '100%' + } + }) + this.isShowModal = true + } + } + },flow.title) : '' + }) ); break; default: diff --git a/src/utils/validate.js b/src/utils/validate.js index 157603f..ebbe3d7 100644 --- a/src/utils/validate.js +++ b/src/utils/validate.js @@ -20,12 +20,12 @@ export function validUsername(str) { } export const validation = new Map([ - ['integer',/^-?\d+$/],//整数 - ['date',/(^\d{10})|(^\d{13})|(^((\d\d\d\d(.+)|\d\d(.+))?(0?[1-9](.+)|1[012](.+))?((0?[1-9]|[12]\d|3[01])(.+))?\s?)((0?[0-9]|1[0-9]|2[0-3])(.+))?((0?[0-9]|[1-5][0-9])(.+))?((0?[0-9]|[1-5][0-9])(.+))?)$/], - ['email',/^[^\s@]+@[^\s@]+\.[^\s@]+$/], - ['isIdCard',/(^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3})|(^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])$/], - ['isMobile',/(^1[3456789]\d{9})|(^(0\d{2,3}(-)*)?\d{7})$/], - ['numeric',/^-?\d+(.\d+)?$/], + ['integer',/(^$)|^-?\d+$/],//整数 + ['date',/(^$)|(^\d{10})|(^\d{13})|(^((\d\d\d\d(.+)|\d\d(.+))?(0?[1-9](.+)|1[012](.+))?((0?[1-9]|[12]\d|3[01])(.+))?\s?)((0?[0-9]|1[0-9]|2[0-3])(.+))?((0?[0-9]|[1-5][0-9])(.+))?((0?[0-9]|[1-5][0-9])(.+))?)$/], + ['email',/(^$)|^[^\s@]+@[^\s@]+\.[^\s@]+$/], + ['isIdCard',/(^$)|(^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3})|(^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])$/], + ['isMobile',/(^$)|(^1[3456789]\d{9})|(^(0\d{2,3}(-)*)?\d{7})$/], + ['numeric',/(^$)|^-?\d+(.\d+)?$/], ]) export const validationName = new Map([ ['integer','整数'],//整数 diff --git a/src/views/attendance/WorkOvertime.vue b/src/views/attendance/WorkOvertime.vue index 0f5a793..09ad687 100644 --- a/src/views/attendance/WorkOvertime.vue +++ b/src/views/attendance/WorkOvertime.vue @@ -3,7 +3,18 @@