src/components/header/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/tabviews/tableshare/actionList/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/templates/tableshare/verifycard/index.jsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/utils/utils.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/components/header/index.jsx
@@ -157,6 +157,10 @@ } let result = await Api.getSystemConfig(_param) // 登录超时 if (!result) return if (result.status) { if (result.debug === 'true') { // 是否为debug模式,即可复制菜单参数 this.props.resetDebug() @@ -201,6 +205,10 @@ async getRolesMenu () { // 获取角色权限 let result = await Api.getSystemConfig({func: 'sPC_Get_RolesMenu'}) // 登录超时 if (!result) return if (result.status) { let _permAction = {} let _permFuncField = [] src/tabviews/tableshare/actionList/index.jsx
@@ -226,7 +226,6 @@ } } Api.genericInterface(param).then((res) => { if (res.status) { this.execSuccess(btn, res) @@ -236,7 +235,7 @@ _resolve() }) } else if (btn.Ot === 'required' || (btn.Ot === 'requiredOnce' && btn.OpenType === 'pop')) { let deffers = data.map(cell => { let _params = data.map(cell => { let param = { func: 'sPC_TableData_InUpDe', BID: this.props.BID @@ -260,14 +259,13 @@ if (btn.innerFunc) { param.func = btn.innerFunc if (setting.primaryKey) { param[setting.primaryKey] = primaryId } formdata.forEach(_data => { param[_data.key] = _data.value }) if (setting.primaryKey) { param[setting.primaryKey] = primaryId } } else if (btn.sql) { param.ID = primaryId param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell, logcolumns)) // 数据源 @@ -276,6 +274,11 @@ } } return param }) if (_params.length <= 20) { let deffers = _params.map(param => { return new Promise(resolve => { Api.genericInterface(param).then(res => { resolve(res) @@ -300,6 +303,9 @@ } _resolve() }) } else { // 超出20个请求时循环执行 this.innerLoopRequest(_params, btn, _resolve) } } else { this.actionSettingError() _resolve() @@ -307,9 +313,6 @@ } } else if (btn.intertype === 'outer') { /** *********************调用外部接口************************* */ let param = { BID: this.props.BID } if (!btn.interface) { // 接口地址不存在时报错 this.actionSettingError() @@ -317,7 +320,19 @@ return } let _params = [] // 请求参数数组 if (btn.Ot === 'notRequired' || btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') { let param = { BID: this.props.BID } if (btn.OpenType === 'pop' && formdata) { // 表单 formdata.forEach(_data => { param[_data.key] = _data.value }) } // 获取id if (btn.Ot === 'notRequired') { @@ -328,12 +343,75 @@ param[setting.primaryKey] = ids.join(',') } _params.push(param) } else if (btn.Ot === 'required') { // 选择多行,循环调用 let _formparam = {} if (btn.OpenType === 'pop' && formdata) { // 表单 formdata.forEach(_data => { param[_data.key] = _data.value _formparam[_data.key] = _data.value }) } _params = data.map(cell => { let _cell = { BID: this.props.BID, } if (setting.primaryKey) { _cell[setting.primaryKey] = cell[setting.primaryKey] } _cell = {..._formparam, ..._cell} return _cell }) } else { this.actionSettingError() _resolve() return } // 循环调用外部接口(包括内部及回调函数) this.outerLoopRequest(_params, btn, _resolve) } else { this.actionSettingError() _resolve() return } } /** * @description 内部请求循环执行 */ innerLoopRequest = (params, btn, _resolve) => { if (!params && params.length === 0) return let param = params.shift() Api.genericInterface(param).then(res => { if (res.status) { if (params.length === 0) { this.execSuccess(btn, res) _resolve() } else { this.innerLoopRequest(params, btn, _resolve) } } else { this.execError(res, btn) _resolve() } }) } /** * @description 外部请求循环执行 */ outerLoopRequest = (params, btn, _resolve) => { if (!params && params.length === 0) return let param = params.shift() let _outParam = null new Promise(resolve => { @@ -348,6 +426,22 @@ delete res.message delete res.status // 使用处理后的数据调用外部接口 resolve(res) } else { this.execError(res, btn) resolve(false) _resolve() } }) } else { resolve(param) } }).then(res => { if (!res) return // 外部请求 _outParam = JSON.parse(JSON.stringify(res)) if (btn.sysInterface === 'true') { res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi } else { @@ -357,30 +451,6 @@ if (btn.outerFunc) { res.func = btn.outerFunc } // 使用处理后的数据调用外部接口 resolve(res) } else { this.execError(res, btn) _resolve() } }) } else { // 不存在内部函数时,生成外部请求参数 if (btn.sysInterface === 'true') { param.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi } else { param.rduri = btn.interface } // param.method = btn.method if (btn.outerFunc) { param.func = btn.outerFunc } resolve(param) } }).then(res => { if (!res) return // 外部请求 _outParam = JSON.parse(JSON.stringify(res)) res.appkey = window.GLOB.appkey || '' // 外部请求时,统一添加appkey @@ -390,11 +460,8 @@ // 回调请求 if (btn.callbackFunc) { // 存在回调函数时,调用 delete response.ErrMesg delete response.message delete response.status delete _outParam.rduri response.func = btn.callbackFunc @@ -402,8 +469,14 @@ return Api.genericInterface(_callbackparam) } else { if (response.status) { // 一次请求成功,进行下一项请求 if (params.length === 0) { this.execSuccess(btn, response) _resolve() } else { this.outerLoopRequest(params, btn, _resolve) } } else { this.execError(response, btn) _resolve() @@ -413,165 +486,17 @@ if (!res) return if (res.status) { if (params.length === 0) { this.execSuccess(btn, res) _resolve() } else { this.outerLoopRequest(params, btn, _resolve) } } else { this.execError(res, btn) } _resolve() }) } else if (btn.Ot === 'required') { // 选择多行,循环调用 new Promise(resolve => { // 内部请求 if (btn.innerFunc) { let deffers = data.map(cell => { let _param = { BID: this.props.BID, func: btn.innerFunc } if (setting.primaryKey) { _param[setting.primaryKey] = cell[setting.primaryKey] } return new Promise(resolve => { Api.genericInterface(_param).then(res => { resolve(res) }) }) }) Promise.all(deffers).then(result => { let iserror = false let errorMsg = '' result.forEach(res => { if (!res.status) { iserror = true errorMsg = res.message } }) if (!iserror) { resolve(result) } else { notification.error({ top: 92, message: errorMsg, duration: 15 }) this.refreshdata(btn, 'error') _resolve() } }) } else { let params = data.map(cell => { let _cell = { BID: this.props.BID, } if (setting.primaryKey) { _cell[setting.primaryKey] = cell[setting.primaryKey] } return _cell }) resolve(params) } }).then(result => { // 外部请求 if (!result) return let deffers = result.map(res => { delete res.ErrCode delete res.ErrMesg delete res.message delete res.status if (btn.sysInterface === 'true') { res.rduri = window.GLOB.mainSystemApi || window.GLOB.subSystemApi } else { res.rduri = btn.interface } // res.method = btn.method if (btn.outerFunc) { res.func = btn.outerFunc } return new Promise(resolve => { Api.genericInterface(res).then(response => { resolve(response) }) }) }) return Promise.all(deffers) }).then(result => { // 回调请求 let iserror = false let errorMsg = '' result.forEach(res => { if (!res.status) { iserror = true errorMsg = res } else { errorMsg = res } }) if (iserror) { this.execError(errorMsg, btn) _resolve() return } if (btn.callbackFunc) { // 存在回调函数时,调用 let deffers = result.map(res => { delete res.ErrCode delete res.ErrMesg delete res.message delete res.status res.func = btn.callbackFunc return new Promise(resolve => { Api.genericInterface(res).then(response => { resolve(response) }) }) }) return Promise.all(deffers) } else { _resolve() this.execSuccess(btn, errorMsg) } }).then(result => { if (!result) return let iserror = false let errorMsg = '' result.forEach(res => { if (!res.status) { iserror = true errorMsg = res } else { errorMsg = res } }) if (iserror) { this.execError(errorMsg, btn) return } else { this.execSuccess(btn, errorMsg) } _resolve() }) } else { this.actionSettingError() _resolve() return } } else { this.actionSettingError() _resolve() return } } /** src/templates/tableshare/verifycard/index.jsx
@@ -1,6 +1,6 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { Form, Tabs, Row, Col, Radio, Button, Table, Popconfirm, Icon, notification, Modal, message, InputNumber } from 'antd' import { Form, Tabs, Row, Col, Radio, Button, Table, Popconfirm, Icon, notification, Modal, message, InputNumber, Tooltip } from 'antd' import moment from 'moment' import Api from '@/api' @@ -361,6 +361,7 @@ this.setState({ verify: { default: _verify.default || 'true', invalid: _verify.invalid || 'false', uniques: _verify.uniques || [], contrasts: _verify.contrasts || [], @@ -923,6 +924,19 @@ <Form {...formItemLayout}> <Row gutter={24}> <Col span={12}> <Form.Item label={ <Tooltip placement="bottomLeft" title={'默认sql执行顺序为自定义脚本之前'}> <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}} /> 默认sql </Tooltip> }> <Radio.Group value={verify.default} onChange={(e) => {this.onOptionChange(e, 'default')}}> <Radio value="true">执行</Radio> <Radio value="false">不执行</Radio> </Radio.Group> </Form.Item> </Col> <Col span={12}> <Form.Item label={'账期验证'}> <Radio.Group value={verify.accountdate} onChange={(e) => {this.onOptionChange(e, 'accountdate')}}> <Radio value="true">开启</Radio> src/utils/utils.js
@@ -448,7 +448,7 @@ static getSysDefaultSql (btn, setting, formdata, param, data, logcolumns) { let primaryId = param.ID let BID = param.BID let verify = btn.verify let verify = btn.verify || {} let _formFieldValue = {} // 需要声明的变量集 let _vars = ['tbid', 'ErrorCode', 'retmsg', 'BillCode', 'BVoucher', 'FIBVoucherDate', 'FiYear', 'UserName', 'FullName', 'ID', 'BID'] @@ -507,7 +507,6 @@ } // 去除禁用的验证 if (verify) { if (verify.contrasts) { verify.contrasts = verify.contrasts.filter(item => item.status !== 'false') } @@ -523,14 +522,13 @@ if (verify.scripts) { verify.scripts = verify.scripts.filter(item => item.status !== 'false') } } // 初始化凭证字段 _sql += `select @BVoucher='',@FIBVoucherDate='',@FiYear='' ` // 启用账期验证 if (verify && verify.accountdate === 'true') { if (verify.accountdate === 'true') { _sql += `exec s_FIBVoucherDateCheck @ErrorCode=@ErrorCode OUTPUT,@retmsg=@retmsg OUTPUT if @ErrorCode!='' GOTO aaa @@ -538,7 +536,7 @@ } // 失效验证,添加数据时不用 if (btn.sqlType !== 'insert' && verify && verify.invalid === 'true' && setting.dataresource) { if (btn.sqlType !== 'insert' && verify.invalid === 'true' && setting.dataresource) { let datasource = setting.dataresource if (/\s/.test(datasource)) { // 拼接别名 datasource = '(' + datasource + ') tb' @@ -555,7 +553,7 @@ } // 比较验证 if (verify && verify.contrasts && verify.contrasts.length > 0) { if (verify.contrasts && verify.contrasts.length > 0) { verify.contrasts.forEach(item => { _sql += `If ${item.frontfield} ${item.operator} ${item.backfield} Begin @@ -567,7 +565,7 @@ } // 唯一性验证,必须存在表单(表单存在时,主键均为单值),必须填写数据源 if (formdata && verify && verify.uniques.length > 0) { if (formdata && verify.uniques && verify.uniques.length > 0) { verify.uniques.forEach(item => { let _fieldValue = [] // 表单键值对field=value let _value = [] // 表单值,用于错误提示 @@ -595,7 +593,7 @@ } // 自定义验证 if (verify && verify.customverifys.length > 0) { if (verify.customverifys && verify.customverifys.length > 0) { verify.customverifys.forEach(item => { _sql += `select @tbid='', @ErrorCode='',@retmsg='' select top 1 @tbid='X' from (${item.sql}) a @@ -609,7 +607,7 @@ } // 单号生成,使用上级id(BID)或列表数据,声明变量(检验) if (verify && verify.billcodes.length > 0) { if (verify.billcodes && verify.billcodes.length > 0) { verify.billcodes.forEach(item => { let _ModularDetailCode = '' if (item.TypeCharOne === 'Lp' || item.TypeCharOne === 'BN') { @@ -650,7 +648,7 @@ let _updateconfig = '' // 凭证-显示列中选取,必须选行 if (verify && verify.voucher && verify.voucher.enabled && data) { if (verify.voucher && verify.voucher.enabled && data) { let _voucher = verify.voucher _updateconfig = ',BVoucher=@BVoucher,FIBVoucherDate=@FIBVoucherDate,FiYear=@FiYear' @@ -676,7 +674,7 @@ ` // 添加、修改、逻辑删除、物理删除 if (btn.OpenType === 'pop' && btn.sqlType === 'insert') { if (btn.OpenType === 'pop' && btn.sqlType === 'insert' && verify.default !== 'false') { let keys = [] let values = [] formdata.forEach(item => { @@ -696,7 +694,7 @@ values = values.join(',') _sql += _user _sql += `insert into ${btn.sql} (${keys},createuserid,CreateUser,CreateStaff,BID) select ${values},@userid,@username,@fullname,@BID;` } else if (btn.OpenType === 'pop' && btn.sqlType === 'update') { } else if (btn.OpenType === 'pop' && btn.sqlType === 'update' && verify.default !== 'false') { let _form = [] formdata.forEach(item => { if (item.type === 'funcvar') { @@ -709,9 +707,9 @@ }) _form = _form.join(',') _sql += `update ${btn.sql} set ${_form},modifydate=getdate(),modifyuserid=@userid${_updateconfig} where ${primaryKey}=@${primaryKey};` } else if ((btn.OpenType === 'prompt' || btn.OpenType === 'exec') && btn.sqlType === 'LogicDelete') { // 逻辑删除 } else if ((btn.OpenType === 'prompt' || btn.OpenType === 'exec') && btn.sqlType === 'LogicDelete' && verify.default !== 'false') { // 逻辑删除 _sql += `update ${btn.sql} set deleted=1,modifydate=getdate(),modifyuserid=@userid where ${primaryKey}=@${primaryKey};` } else if ((btn.OpenType === 'prompt' || btn.OpenType === 'exec') && btn.sqlType === 'delete') { // 物理删除 } else if ((btn.OpenType === 'prompt' || btn.OpenType === 'exec') && btn.sqlType === 'delete' && verify.default !== 'false') { // 物理删除 let _msg = '' if (data && logcolumns && logcolumns.length > 0) { logcolumns.forEach(col => { @@ -723,7 +721,7 @@ } // 拼接自定义脚本 if (verify && verify.scripts && verify.scripts.length > 0) { if (verify.scripts && verify.scripts.length > 0) { let _scripts = '' verify.scripts.forEach(item => { _scripts += `