| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { is, fromJS } from 'immutable' |
| | | import { Table, message, Affix, Button } from 'antd' |
| | | import { Table, message, Affix, Button, Typography } from 'antd' |
| | | import './index.scss' |
| | | |
| | | const { Paragraph } = Typography |
| | | |
| | | export default class MainTable extends Component { |
| | | static propTpyes = { |
| | |
| | | })} |
| | | </div> |
| | | ) |
| | | } else if (item.type === 'textarea') { |
| | | let content = '' |
| | | let match = false |
| | | if (item.field && record.hasOwnProperty(item.field)) { |
| | | content = `${record[item.field]}` |
| | | } |
| | | |
| | | if (content && item.matchVal && content.indexOf(item.matchVal) > 0) { |
| | | match = true |
| | | } |
| | | |
| | | content = (item.prefix || '') + content + (item.postfix || '') |
| | | |
| | | return ( |
| | | <div className={match ? item.color : ''}> |
| | | <div className="background"></div> |
| | | <div className="content" style={{ minWidth: (item.Width || 120) + 'px' }}> |
| | | <Paragraph copyable ellipsis={{ rows: 3, expandable: true }}>{content}</Paragraph> |
| | | </div> |
| | | </div> |
| | | ) |
| | | } else if (item.type === 'action') { |
| | | return ( |
| | | <div className={item.style} style={{ minWidth: (item.Width || 120) + 'px' }}> |
| | |
| | | import React, {Component} from 'react' |
| | | import PropTypes from 'prop-types' |
| | | import { Table, message, Button } from 'antd' |
| | | import { Table, message, Button, Typography } from 'antd' |
| | | import './index.scss' |
| | | |
| | | const { Paragraph } = Typography |
| | | |
| | | export default class MainTable extends Component { |
| | | static propTpyes = { |
| | |
| | | </div> |
| | | </div> |
| | | ) |
| | | } else if (item.type === 'picture') { |
| | | let photos = '' |
| | | if (item.field && record.hasOwnProperty(item.field)) { |
| | | photos = record[item.field].split(',') |
| | | } else { |
| | | photos = '' |
| | | } |
| | | return ( |
| | | <div className="picture-col" style={{ minWidth: (item.Width || 120) + 'px' }}> |
| | | {photos && photos.map((url, i) => { |
| | | return <img key={`${i}`} src={url} alt=""/> |
| | | })} |
| | | </div> |
| | | ) |
| | | } else if (item.type === 'textarea') { |
| | | let content = '' |
| | | let match = false |
| | | if (item.field && record.hasOwnProperty(item.field)) { |
| | | content = `${record[item.field]}` |
| | | } |
| | | |
| | | if (content && item.matchVal && content.indexOf(item.matchVal) > 0) { |
| | | match = true |
| | | } |
| | | |
| | | content = (item.prefix || '') + content + (item.postfix || '') |
| | | |
| | | return ( |
| | | <div className={match ? item.color : ''}> |
| | | <div className="background"></div> |
| | | <div className="content" style={{ minWidth: (item.Width || 120) + 'px' }}> |
| | | <Paragraph copyable ellipsis={{ rows: 3, expandable: true }}>{content}</Paragraph> |
| | | </div> |
| | | </div> |
| | | ) |
| | | } else if (item.type === 'action') { |
| | | return ( |
| | | <div className={item.style} style={{ minWidth: (item.Width || 120) + 'px' }}> |
| | |
| | | if (btn.innerFunc) { // 使用自定义函数 |
| | | param.func = btn.innerFunc |
| | | } else if (btn.sql) { |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param[setting.primaryKey], data[0])) // 数据源 |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, data[0])) // 数据源 |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } |
| | |
| | | param[setting.primaryKey] = Utils.getguid() |
| | | } |
| | | |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param[setting.primaryKey], data[0])) // 数据源 |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0])) // 数据源 |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } else if (btn.sql) { |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param[setting.primaryKey], data[0])) // 数据源 |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, data[0])) // 数据源 |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } |
| | |
| | | if (btn.innerFunc) { |
| | | param.func = btn.innerFunc |
| | | } else if (btn.sql) { |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param[setting.primaryKey], cell)) // 数据源 |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param, cell)) // 数据源 |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } |
| | |
| | | if (setting.primaryKey) { |
| | | param[setting.primaryKey] = cell[setting.primaryKey] |
| | | } |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param[setting.primaryKey], cell)) // 数据源 |
| | | param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param, cell)) // 数据源 |
| | | param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000' |
| | | param.secretkey = Utils.encrypt(param.LText, param.timestamp) |
| | | } |
| | |
| | | * @return {String} type 执行类型 |
| | | * @return {String} table 表名 |
| | | */ |
| | | static getSysDefaultSql (btn, setting, formdata, primaryId, data) { |
| | | static getSysDefaultSql (btn, setting, formdata, param, data) { |
| | | let primaryId = param[setting.primaryKey] |
| | | let BID = param.BID |
| | | let verify = btn.verify |
| | | let _formFieldValue = {} |
| | | |
| | |
| | | let primaryKey = setting.primaryKey || 'id' // 主键字段 |
| | | // 系统变量声明与设置初始值 |
| | | let _sql = `Declare @tbid nvarchar(50), @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50) |
| | | Select @tbid='', @ErrorCode='',@retmsg='',@BVoucher='',@FIBVoucherDate='',@FiYear='' |
| | | Select @BVoucher='',@FIBVoucherDate='',@FiYear='' |
| | | ` |
| | | |
| | | if (verify && verify.accountdate === 'true') { // 启用账期验证 |
| | |
| | | GOTO aaa |
| | | ` |
| | | } |
| | | if (btn.sqlType !== 'insert' && verify && verify.invalid === 'true') { // 失效验证,添加数据时不用 |
| | | _sql += `Select @tbid=${primaryKey} from ${btn.sql} where ${primaryKey} ='${primaryId}' |
| | | if (btn.sqlType !== 'insert' && verify && verify.invalid === 'true' && setting.dataresource) { // 失效验证,添加数据时不用 |
| | | let datasource = setting.dataresource |
| | | if (/\s/.test(datasource)) { // 拼接别名 |
| | | datasource = '(' + datasource + ') tb' |
| | | } |
| | | |
| | | _sql += `Select @tbid='', @ErrorCode='',@retmsg='' |
| | | Select @tbid=${primaryKey} from ${datasource} where ${primaryKey} ='${primaryId}' |
| | | If @tbid='' |
| | | Begin |
| | | Setect @ErrorCode='E',@retmsg='数据已失效' |
| | | select @ErrorCode='E',@retmsg='数据已失效' |
| | | goto aaa |
| | | end |
| | | ` |
| | | } |
| | | if (formdata && verify && verify.uniques.length > 0) { // 唯一性验证,必须存在表单(表单存在时,主键均为单值) |
| | | if (formdata && verify && verify.uniques.length > 0) { // 唯一性验证,必须存在表单(表单存在时,主键均为单值),必须填写数据源 |
| | | let _primaryId = primaryId |
| | | if (btn.sqlType === 'insert') { |
| | | _primaryId = '' |
| | | } |
| | | |
| | | verify.uniques.forEach(item => { |
| | | let _fieldValue = [] // 表单键值对field=value |
| | | let _value = [] // 表单值,用于错误提示 |
| | |
| | | Select @tbid='X' from ${btn.sql} where ${_fieldValue.join(' and ')} and ${primaryKey} !='${_primaryId}' |
| | | If @tbid!='' |
| | | Begin |
| | | Setect @ErrorCode='${item.errorCode}',@retmsg='${item.fieldlabel || ''}:${_value.join(' ')} 已存在' |
| | | select @ErrorCode='${item.errorCode}',@retmsg='${item.fieldlabel || ''}:${_value.join(' ')} 已存在' |
| | | goto aaa |
| | | end |
| | | ` |
| | |
| | | } |
| | | |
| | | if (verify && verify.customverifys.length > 0) { // 自定义验证 |
| | | let _primaryId = primaryId |
| | | if (btn.sqlType === 'insert') { |
| | | _primaryId = '' |
| | | } |
| | | |
| | | verify.customverifys.forEach(item => { |
| | | let _cuSql = item.sql |
| | | if (data) { |
| | |
| | | keys = keys.sort((a, b) => { |
| | | return b.length - a.length |
| | | }) |
| | | |
| | | keys.forEach(key => { |
| | | _cuSql.replace('@' + key, _formFieldValue[key]) |
| | | let reg = new RegExp('@' + key, 'ig') |
| | | _cuSql = _cuSql.replace(reg, `'${_formFieldValue[key]}'`) |
| | | }) |
| | | let idreg = new RegExp('@ID', 'ig') |
| | | _cuSql = _cuSql.replace(idreg, `'${_primaryId}'`) |
| | | |
| | | let bidreg = new RegExp('@BID', 'ig') |
| | | _cuSql = _cuSql.replace(bidreg, `'${BID}'`) |
| | | |
| | | _sql += `Select @tbid='', @ErrorCode='',@retmsg='' |
| | | Select top 1 @tbid='X' from (${_cuSql}) a |
| | | If @tbid ${item.result === 'true' ? '=' : '!='}'' |
| | | If @tbid ${item.result === 'true' ? '!=' : '='}'' |
| | | Begin |
| | | Setect @ErrorCode='${item.errorCode}',@retmsg='${item.errmsg}' |
| | | select @ErrorCode='${item.errorCode}',@retmsg='${item.errmsg}' |
| | | goto aaa |
| | | end |
| | | ` |
| | |
| | | }) |
| | | } |
| | | |
| | | let _updateconfig = '' |
| | | |
| | | if (verify && verify.voucher && verify.voucher.enabled) { // 凭证-显示列中选取,必须选行 |
| | | let _voucher = verify.voucher |
| | | |
| | | _updateconfig = ',BVoucher=@BVoucher,FIBVoucherDate=@FIBVoucherDate,FiYear=@FiYear' |
| | | |
| | | _sql += `exec s_BVoucher_Create |
| | | @Bill ='${data[_voucher.linkField]}', |
| | |
| | | }) |
| | | keys = keys.join(',') |
| | | values = values.join(',') |
| | | |
| | | _sql += `insert into ${btn.sql} (${keys}, createuserid, BID) select ${values},@BID,@userid` |
| | | _sql += `declare @UserName nvarchar(50),@FullName nvarchar(50) |
| | | select @UserName=UserName,@FullName=FullName from SUsers where UID=@UserID |
| | | ` |
| | | _sql += `insert into ${btn.sql} (${keys},createuserid,CreateUser,CreateStaff,BID) select ${values},@BID,@userid,@username,@fullname` |
| | | } else if (btn.OpenType === 'pop' && btn.sqlType === 'update') { |
| | | let _form = [] |
| | | formdata.forEach(item => { |
| | |
| | | } |
| | | }) |
| | | _form = _form.join(',') |
| | | _sql += `update ${btn.sql} set ${_form},modifydate=getdate(),modifyuserid=@userid,BVoucher=@BVoucher,FIBVoucherDate=@FIBVoucherDate,FiYear=@FiYear where ${primaryKey}=@${primaryKey}` |
| | | _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') { // 逻辑删除 |
| | | _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') { // 物理删除 |
| | | _sql += `insert into snote (remark,createuserid) select '删除表:${btn.sql} 数据: ${primaryKey}='+@${primaryKey},@userid delete ${btn.sql} where ${primaryKey}=@${primaryKey}` |
| | | } |
| | | _sql += ` |
| | | aaa: |
| | | select @ErrorCode= as ErrorCode,@retmsg as ErrorCode |
| | | select @ErrorCode as ErrorCode,@retmsg as retmsg |
| | | ` |
| | | console.log(_sql) |
| | | return _sql |