From 076c2b693da1d42cf3a468c0f3d631c1ed424285 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 08 十一月 2023 18:22:56 +0800 Subject: [PATCH] 2023-11-08 --- src/tabviews/zshare/actionList/normalbutton/index.jsx | 426 +++++++++++++++++++++++++++++++++++------------------ 1 files changed, 280 insertions(+), 146 deletions(-) diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx index 4da4369..9de05d4 100644 --- a/src/tabviews/zshare/actionList/normalbutton/index.jsx +++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx @@ -47,6 +47,7 @@ } moduleParams = null + preCallback = null UNSAFE_componentWillMount () { const { btn, selectedData, BData, disabled } = this.props @@ -180,33 +181,17 @@ } actionSubmit = (res) => { - const { btn, setting, BID } = this.props + const { btn } = this.props const { selines } = this.state if (btn.uuid !== res.menuId) return let data = selines || [] - if (setting.supModule && !BID) { - notification.warning({ - top: 92, - message: '闇�瑕佷笂绾т富閿�硷紒', - duration: 3 - }) - return - } else if (btn.Ot !== 'notRequired' && data.length === 0) { - notification.warning({ - top: 92, - message: '璇烽�夋嫨琛岋紒', - duration: 5 - }) - return - } else if (btn.Ot === 'requiredSgl' && data.length !== 1) { - notification.warning({ - top: 92, - message: '璇烽�夋嫨鍗曡鏁版嵁锛�', - duration: 5 - }) + let valid = this.checkBtnData(data) + + if (!valid) { + this.preCallback && this.preCallback() return } @@ -214,122 +199,36 @@ this.execSubmit(data, () => {}, res.form) } - - /** - * @description 鎸夐挳鐘舵�佹敼鍙� - */ - updateStatus = () => { - this.setState({ - loading: false, - visible: false, - confirmLoading: false - }) - } /** * @description 瑙﹀彂鎸夐挳鎿嶄綔 */ - actionTrigger = (triggerId, record, type) => { - const { BID, btn, selectedData, setting } = this.props + actionTrigger = (triggerId, record, type, callback) => { + const { btn, selectedData } = this.props const { loading, disabled } = this.state + + if (type === 'preButton') { + if (btn.uuid !== triggerId) return + + this.preTrigger(callback) + return + } else { + this.preCallback = null + } if (loading || disabled) return if (triggerId && btn.uuid !== triggerId) return - - if (setting.supModule && !BID) { - notification.warning({ - top: 92, - message: '闇�瑕佷笂绾т富閿�硷紒', - duration: 5 - }) - return - } else if (type === 'linkbtn' && !btn.$toolbtn && !is(fromJS(selectedData || []), fromJS(record))) { - return - } + if (type === 'linkbtn' && !btn.$toolbtn && !is(fromJS(selectedData || []), fromJS(record))) return + if (btn.OpenType === 'form' && btn.formType === 'count_line') return this.setState({autoMatic: type === 'autoMatic'}) let _this = this let data = record || selectedData || [] - if (btn.Ot !== 'notRequired' && data.length === 0) { - // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹� - notification.warning({ - top: 92, - message: '璇烽�夋嫨琛岋紒', - duration: 5 - }) - return - } else if (btn.Ot === 'requiredSgl' && data.length !== 1) { - // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁 - notification.warning({ - top: 92, - message: '璇烽�夋嫨鍗曡鏁版嵁锛�', - duration: 5 - }) - return - } else if (btn.intertype === 'system') { - // 浣跨敤鍐呴儴鎺ュ彛鏃讹紝鎿嶄綔绫诲瀷鍜屾暟鎹簮涓嶅彲涓虹┖ - if (!btn.sql || !btn.sqlType) { - notification.warning({ - top: 92, - message: '鎸夐挳鎿嶄綔绫诲瀷閿欒锛�', - duration: 5 - }) - return - } else if (data.length === 0 && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) { - notification.warning({ - top: 92, - message: '浣跨敤鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒', - duration: 5 - }) - return - } - } else if (btn.intertype === 'inner') { - // 浣跨敤鍐呴儴鎺ュ彛鏃讹紝鍐呴儴鍑芥暟涓嶅彲涓虹┖ - if (!btn.innerFunc) { - notification.warning({ - top: 92, - message: '鎸夐挳鍐呴儴鍑芥暟涓嶅彲涓虹┖锛�', - duration: 5 - }) - return - } - } else if (btn.intertype === 'custom' || btn.intertype === 'outer') { - if (btn.callbackType === 'script' && (!btn.verify || !btn.verify.cbScripts || !btn.verify.cbScripts.filter(item => item.status !== 'false').length === 0)) { - notification.warning({ - top: 92, - message: '浣跨敤鑷畾涔夎剼鏈洖璋冩椂锛屽洖璋冭剼鏈笉鍙负绌猴紒', - duration: 5 - }) - return - } else if (btn.procMode === 'system' && data.length === 0 && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) { - notification.warning({ - top: 92, - message: '浣跨敤鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒', - duration: 5 - }) - return - } else if (btn.intertype === 'custom' && window.GLOB.systemType === 'production' && !btn.proInterface) { - notification.warning({ - top: 92, - message: '灏氭湭璁剧疆姝e紡绯荤粺鎺ュ彛鍦板潃锛�', - duration: 5 - }) - return - } - } else if (!['inner', 'outer', 'system', 'custom'].includes(btn.intertype)) { - if (btn.OpenType === 'form' && btn.formType === 'count_line') { - return - } - // 鎺ュ彛绫诲瀷閿欒 - notification.warning({ - top: 92, - message: '鎸夐挳鎺ュ彛绫诲瀷閿欒锛�', - duration: 5 - }) - return - } + let valid = this.checkBtnData(data) + + if (!valid) return this.setState({ selines: data @@ -339,7 +238,6 @@ this.setState({}, () => { MKEmitter.emit('mkFormSubmit', btn.uuid) }) - return } else if (btn.OpenType === 'prompt') { this.setState({loading: true}) confirm({ @@ -410,10 +308,158 @@ let _change = { prompt: '鎻愮ず妗�', exec: '鐩存帴鎵ц', - pop: '寮圭獥锛堣〃鍗曪級' + pop: '寮圭獥锛堣〃鍗曪級', + formSubmit: '琛ㄥ崟', + form: '琛ㄥ崟', } MKEmitter.emit('queryTrigger', {menuId: btn.uuid, name: _change[btn.OpenType]}) } + } + + preTrigger = (callback) => { + const { btn, selectedData } = this.props + const { loading, disabled } = this.state + + if (loading || disabled) { + callback() + return + } else if (btn.OpenType === 'form') { + callback() + return + } + + let _this = this + let data = selectedData || [] + + let valid = this.checkBtnData(data) + + if (!valid) { + callback() + return + } + + this.preCallback = callback + + this.setState({ + selines: data + }) + + if (btn.OpenType === 'formSubmit') { + this.setState({}, () => { + MKEmitter.emit('mkFormSubmit', btn.uuid, callback) + }) + } else if (btn.OpenType === 'prompt') { + this.setState({loading: true}) + confirm({ + title: btn.tipTitle || '纭畾瑕佹墽琛屽悧?', + onOk() { + return new Promise(resolve => { + _this.execSubmit(data, resolve) + }) + }, + onCancel() { + callback() + _this.setState({loading: false}) + } + }) + } else if (btn.OpenType === 'exec') { + this.setState({loading: true}) + this.execSubmit(data, () => { this.setState({loading: false})}) + } else if (btn.OpenType === 'pop') { + let modal = this.state.btnconfig + if (!modal && btn.modal) { + modal = this.handleModelConfig(btn.modal) + } + + this.setState({ + loading: true, + btnconfig: modal + }) + + if (modal) { + if (modal.setting.display === 'prompt' || modal.setting.display === 'exec') { + this.modelconfirm() + } else { + this.setState({ + visible: true + }) + } + } + } + } + + /** + * @description 鎸夐挳鐘舵�佹敼鍙� + */ + updateStatus = () => { + this.setState({ + loading: false, + visible: false, + confirmLoading: false + }) + } + + checkBtnData = (data) => { + const { BID, btn, setting } = this.props + + if (setting.supModule && !BID) { + notification.warning({ + top: 92, + message: '闇�瑕佷笂绾т富閿�硷紒', + duration: 5 + }) + return false + } else if (btn.Ot !== 'notRequired' && data.length === 0) { + // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹� + notification.warning({ + top: 92, + message: '璇烽�夋嫨琛岋紒', + duration: 5 + }) + return false + } else if (btn.Ot === 'requiredSgl' && data.length !== 1) { + // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁 + notification.warning({ + top: 92, + message: '璇烽�夋嫨鍗曡鏁版嵁锛�', + duration: 5 + }) + return false + } else if (btn.intertype === 'system') { + if (data.length === 0 && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) { + notification.warning({ + top: 92, + message: '浣跨敤鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒', + duration: 5 + }) + return false + } + } else if (btn.intertype === 'custom' || btn.intertype === 'outer') { + if (btn.callbackType === 'script' && (!btn.verify || !btn.verify.cbScripts || !btn.verify.cbScripts.filter(item => item.status !== 'false').length === 0)) { + notification.warning({ + top: 92, + message: '浣跨敤鑷畾涔夎剼鏈洖璋冩椂锛屽洖璋冭剼鏈笉鍙负绌猴紒', + duration: 5 + }) + return false + } else if (btn.procMode === 'system' && data.length === 0 && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) { + notification.warning({ + top: 92, + message: '浣跨敤鍒涘缓鍑瘉鍑芥暟锛岄渶瑕侀�夋嫨琛岋紒', + duration: 5 + }) + return false + } else if (btn.intertype === 'custom' && window.GLOB.systemType === 'production' && !btn.proInterface) { + notification.warning({ + top: 92, + message: '灏氭湭璁剧疆姝e紡绯荤粺鎺ュ彛鍦板潃锛�', + duration: 5 + }) + return false + } + } + + return true } getSystemParam = (data, formdata, retmsg) => { @@ -441,11 +487,11 @@ param.ID = primaryId if (retmsg) { - const { sql, callbacksql } = getSysDefaultSql(btn, setting, '', param, data[0], columns, retmsg, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + const { sql, callbacksql } = getSysDefaultSql(btn, setting, '', param, data[0], columns, retmsg, this.moduleParams) // 鏁版嵁婧� param.LText = sql param.$callbacksql = callbacksql } else { - param.LText = getSysDefaultSql(btn, setting, '', param, data[0], columns, false, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + param.LText = getSysDefaultSql(btn, setting, '', param, data[0], columns, false, this.moduleParams) // 鏁版嵁婧� if (btn.output) { param.key_back_type = 'Y' } @@ -477,11 +523,11 @@ param.ID = primaryId || Utils.getguid() if (retmsg) { - const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, retmsg, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, retmsg, this.moduleParams) // 鏁版嵁婧� param.LText = sql param.$callbacksql = callbacksql } else { - param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, false, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, false, this.moduleParams) // 鏁版嵁婧� if (btn.output) { param.key_back_type = 'Y' } @@ -503,11 +549,11 @@ param.ID = primaryId if (retmsg) { - const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, retmsg, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, retmsg, this.moduleParams) // 鏁版嵁婧� param.LText = sql param.$callbacksql = callbacksql } else { - param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, false, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + param.LText = getSysDefaultSql(btn, setting, formdata, param, data[0], columns, false, this.moduleParams) // 鏁版嵁婧� if (btn.output) { param.key_back_type = 'Y' } @@ -569,11 +615,11 @@ param.ID = primaryId if (retmsg) { - const { sql, callbacksql } = getSysDefaultSql(btn, setting, '', param, cell, columns, retmsg, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + const { sql, callbacksql } = getSysDefaultSql(btn, setting, '', param, cell, columns, retmsg, this.moduleParams) // 鏁版嵁婧� param.LText = sql param.$callbacksql = callbacksql } else { - param.LText = getSysDefaultSql(btn, setting, '', param, cell, columns, false, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + param.LText = getSysDefaultSql(btn, setting, '', param, cell, columns, false, this.moduleParams) // 鏁版嵁婧� if (btn.output) { param.key_back_type = 'Y' } @@ -609,11 +655,11 @@ param.ID = Utils.getguid() if (retmsg) { - const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, cell, columns, retmsg, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, cell, columns, retmsg, this.moduleParams) // 鏁版嵁婧� param.LText = sql param.$callbacksql = callbacksql } else { - param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns, false, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns, false, this.moduleParams) // 鏁版嵁婧� if (btn.output) { param.key_back_type = 'Y' } @@ -635,11 +681,11 @@ param.ID = primaryId if (retmsg) { - const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, cell, columns, retmsg, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + const { sql, callbacksql } = getSysDefaultSql(btn, setting, formdata, param, cell, columns, retmsg, this.moduleParams) // 鏁版嵁婧� param.LText = sql param.$callbacksql = callbacksql } else { - param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns, false, this.moduleParams, Utils.getAllSearchOptions) // 鏁版嵁婧� + param.LText = getSysDefaultSql(btn, setting, formdata, param, cell, columns, false, this.moduleParams) // 鏁版嵁婧� if (btn.output) { param.key_back_type = 'Y' } @@ -971,21 +1017,92 @@ /** * @description 鎸夐挳鎻愪氦鎵ц */ - execSubmit = (data, _resolve, formdata) => { + execSubmit = (data, _resolve, formdata, force) => { const { setting, btn } = this.props this.moduleParams = null - if ( - (btn.intertype === 'system' || (btn.intertype === 'custom' && btn.procMode === 'system')) && - btn.sqlType !== 'insert' && btn.Ot !== 'notRequired' && btn.verify && btn.verify.invalid === 'true' && - setting.dataresource - ) { + if (btn.preButton && !force) { + this.trigger(btn.preButton, data, _resolve, formdata, 0) + } else if (btn.verify && btn.verify.invalid === 'true' && setting.dataresource) { MKEmitter.emit('queryModuleParam', btn.$menuId, (param) => { - this.moduleParams = param + let datasource = setting.dataresource + let customScript = setting.customScript || '' + let allSearch = Utils.getAllSearchOptions(param.search) + + let regoptions = allSearch.map(item => { + return { + reg: new RegExp('@' + item.key + '@', 'ig'), + value: `'${item.value}'` + } + }) + + regoptions.push({ + reg: new RegExp('@userName@', 'ig'), + value: `'${sessionStorage.getItem('User_Name') || ''}'` + }, { + reg: new RegExp('@fullName@', 'ig'), + value: `'${sessionStorage.getItem('Full_Name') || ''}'` + }, { + reg: new RegExp('@orderBy@', 'ig'), + value: setting.order + }, { + reg: new RegExp('@pageSize@', 'ig'), + value: 10 + }, { + reg: new RegExp('@pageIndex@', 'ig'), + value: 1 + }) + + regoptions.forEach(item => { + datasource = datasource.replace(item.reg, item.value) + customScript = customScript.replace(item.reg, item.value) + }) + + this.moduleParams = { + datasource, + customScript + } + this.execRealSubmit(data, _resolve, formdata) }) } else { this.execRealSubmit(data, _resolve, formdata) + } + } + + trigger = (btnId, data, resolve, formdata, times) => { + if (times > 50) { + notification.warning({ + top: 92, + message: '鍓嶇疆鎸夐挳鍔犺浇澶辫触锛�', + duration: 5 + }) + this.setState({loading: false}) + resolve() + return + } + times++ + + let node = document.getElementById('button' + btnId) + + if (node) { + MKEmitter.emit('triggerBtnId', btnId, null, 'preButton', (res) => { + if (!res) { + this.setState({loading: false}) + resolve() + return + } + + if (res.status) { + this.execSubmit(data, resolve, formdata, true) + } else { + this.execError(res) + } + }) + } else { + setTimeout(() => { + this.trigger(btnId, data, resolve, formdata, times) + }, 100) } } @@ -2059,7 +2176,14 @@ const { btn } = this.props const { autoMatic } = this.state - if (autoMatic) { + if (this.preCallback) { + this.setState({ + loading: false, + visible: false + }) + this.preCallback(res) + return + } else if (autoMatic) { this.setState({ loading: false, visible: false @@ -2554,7 +2678,14 @@ const { btn } = this.props const { autoMatic } = this.state - if (autoMatic) { + if (this.preCallback) { + this.setState({ + loading: false, + visible: false + }) + this.preCallback(res) + return + } else if (autoMatic) { notification.error({ top: 92, message: res.message || '鎵ц澶辫触锛�', @@ -2804,6 +2935,8 @@ visible: false, confirmLoading: false }) + + this.preCallback && this.preCallback() } modelconfirm = () => { @@ -2945,6 +3078,7 @@ }) }, onCancel() { + _this.preCallback && _this.preCallback() _this.setState({ loading: false }) } }) -- Gitblit v1.8.0