| | |
| | | let _quot = sql.match(/'{1}/g) |
| | | let _lparen = sql.match(/\({1}/g) |
| | | let _rparen = sql.match(/\){1}/g) |
| | | let _ch_b = sql.match(/\$check@/ig) |
| | | let _ch_d = sql.match(/@check\$/ig) |
| | | let _m_b = sql.match(/\$@/ig) |
| | | let _m_d = sql.match(/@\$/ig) |
| | | |
| | | _quot = _quot ? _quot.length : 0 |
| | | _lparen = _lparen ? _lparen.length : 0 |
| | | _rparen = _rparen ? _rparen.length : 0 |
| | | _ch_b = _ch_b ? _ch_b.length : 0 |
| | | _ch_d = _ch_d ? _ch_d.length : 0 |
| | | _m_b = _m_b ? _m_b.length : 0 |
| | | _m_d = _m_d ? _m_d.length : 0 |
| | | |
| | | if (_quot % 2 !== 0) { |
| | | notification.warning({ |
| | |
| | | notification.warning({ |
| | | top: 92, |
| | | message: 'sql中()必须成对出现', |
| | | duration: 5 |
| | | }) |
| | | return false |
| | | } else if (_ch_b !== _ch_d) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: 'sql中 $check@ 与 @check$ 必须成对出现', |
| | | duration: 5 |
| | | }) |
| | | return false |
| | | } else if (_m_b !== _m_d) { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: 'sql中 $@ 与 @$ 必须成对出现', |
| | | duration: 5 |
| | | }) |
| | | return false |
| | |
| | | |
| | | let filterComponent = (components, mainSearch) => { |
| | | components.forEach(item => { |
| | | item.$menuname = (config.MenuName || '') + '-' + (item.name || '') |
| | | |
| | | if (item.type === 'tabs') { |
| | | item.subtabs.forEach(tab => { |
| | | let _mainSearch = mainSearch || [] |
| | |
| | | |
| | | let getSearches = (searches) => { |
| | | let sFields = [] |
| | | let query = false |
| | | searches.forEach(item => { |
| | | if (!item.field) return |
| | | |
| | |
| | | } else { |
| | | sFields.push(item.field) |
| | | } |
| | | |
| | | if (query) return |
| | | |
| | | query = item.query !== 'false' |
| | | }) |
| | | |
| | | return { sFields, query } |
| | | return sFields |
| | | } |
| | | |
| | | let getSysDefaultSql = (btn, component) => { |
| | |
| | | searches = [...searches, ...mainSearch] |
| | | } |
| | | item.$searches = fromJS(searches).toJS() |
| | | let { sFields, query } = getSearches(searches) |
| | | let sFields = getSearches(searches) |
| | | |
| | | let _columns = [] |
| | | if (item.subtype === 'dualdatacard') { |
| | |
| | | } |
| | | }) |
| | | |
| | | if (_customScript || _tailScript) { |
| | | _tailScript += `${_tailScript} |
| | | aaa: |
| | | if @ErrorCode!='' |
| | | insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@ |
| | | ` |
| | | } |
| | | |
| | | let _search = '' |
| | | if (item.setting.execute !== 'false') { |
| | | _dataresource = item.setting.dataresource || '' |
| | | _search = '@mk_search@' |
| | | } |
| | | |
| | | if (/\s/.test(_dataresource)) { |
| | |
| | | |
| | | item.setting.dataresource = _dataresource |
| | | item.setting.customScript = _customScript |
| | | |
| | | let _search = '@search@' |
| | | if (item.setting.queryType === 'statistics' || !query) { |
| | | _search = '' |
| | | } |
| | | |
| | | let testSql = _dataresource + _customScript + _tailScript |
| | | |
| | |
| | | let secSql = [`@ErrorCode='',@retmsg =''`] |
| | | |
| | | let reps = [] |
| | | if (_customScript || _tailScript) { |
| | | reps.push('UserID', 'time_id') |
| | | } |
| | | |
| | | let syses = ['UserName', 'FullName', 'RoleID', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address'] |
| | | syses.forEach(s => { |
| | |
| | | let LText = '' |
| | | let DateCount = '' |
| | | if (_dataresource) { |
| | | /*system_query*/ |
| | | if (/@pageSize@|@orderBy@|@mk_total/i.test(testSql)) { |
| | | LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` |
| | | LText = `select ${arr_field} from ${_dataresource} ${_search} ` |
| | | } else if (item.setting.laypage === 'true' && item.setting.order) { |
| | | LText = `/*system_query*/select top @pageSize@ ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${_dataresource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows ` |
| | | LText = `select top @pageSize@ ${arr_field} from (select ${arr_field} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${_dataresource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows ` |
| | | reps.push('pageSize', 'orderBy', 'pageIndex') |
| | | if (item.subtype === 'dualdatacard') { |
| | | DateCount = `/*system_query*/select count(1) as total from (select distinct ${item.setting.primaryKey || 'ID'} from ${_dataresource} ${_search})a` |
| | | DateCount = `select count(1) as total from (select distinct ${item.setting.primaryKey || 'ID'} from ${_dataresource} ${_search})a` |
| | | } else { |
| | | DateCount = `/*system_query*/select count(1) as total from ${_dataresource} ${_search}` |
| | | DateCount = `select count(1) as total from ${_dataresource} ${_search}` |
| | | } |
| | | } else if (item.setting.$top) { |
| | | if (item.setting.order) { |
| | | LText = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} order by @orderBy@ ` |
| | | LText = `select top 1 ${arr_field} from ${_dataresource} ${_search} order by @orderBy@ ` |
| | | reps.push('orderBy') |
| | | } else { |
| | | LText = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} ` |
| | | LText = `select top 1 ${arr_field} from ${_dataresource} ${_search} ` |
| | | } |
| | | } else if (item.setting.order) { |
| | | LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} order by @orderBy@ ` |
| | | LText = `select ${arr_field} from ${_dataresource} ${_search} order by @orderBy@ ` |
| | | reps.push('orderBy') |
| | | } else { |
| | | LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` |
| | | LText = `select ${arr_field} from ${_dataresource} ${_search} ` |
| | | } |
| | | } |
| | | |
| | | if (_customScript) { |
| | | _customScript = `${decSql} |
| | | ${_customScript} |
| | | ` |
| | | if (DateCount) { |
| | | DateCount = `${DateCount} |
| | | ${_tailScript} |
| | | aaa: |
| | | if @ErrorCode!='' |
| | | insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode,@retmsg,@UserID@ |
| | | ` |
| | | } else if (LText) { |
| | | LText = `${LText} |
| | | ${_tailScript} |
| | | aaa: |
| | | if @ErrorCode!='' |
| | | insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode,@retmsg,@UserID@ |
| | | ` |
| | | } else { |
| | | _customScript = `${_customScript} |
| | | ${_tailScript} |
| | | aaa: |
| | | if @ErrorCode!='' |
| | | insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@ |
| | | ` |
| | | } |
| | | } else if (_tailScript && DateCount) { |
| | | LText = `${decSql} |
| | | ${LText} |
| | | ` |
| | | DateCount = `${DateCount} |
| | | ${_tailScript} |
| | | aaa: |
| | | if @ErrorCode!='' |
| | | insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@ |
| | | ` |
| | | } else if (_tailScript) { |
| | | LText = `${decSql} |
| | | ${LText} |
| | | ${_tailScript} |
| | | aaa: |
| | | if @ErrorCode!='' |
| | | insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@ |
| | | ` |
| | | } else { |
| | | LText = `${decSql} |
| | | ${LText} |
| | | ` |
| | | } |
| | | |
| | | reps = Array.from(new Set(reps)) |
| | | |
| | | // LText = LText.replace(/\n\s{6,8}/g, '\n') |
| | | // DateCount = DateCount.replace(/\n\s{6,8}/g, '\n') |
| | | // _customScript = _customScript.replace(/\n\s{6,8}/g, '\n') |
| | | // LText = LText.replace(/\n\s+\/\*/g, `\n/*`) |
| | | // DateCount = DateCount.replace(/\n\s+\/\*/g, `\n/*`) |
| | | // _customScript = _customScript.replace(/\n\s+\/\*/g, `\n/*`) |
| | | let sub_name = '' |
| | | let tabid = '' |
| | | let parid = '' |
| | | let sub_field = '' |
| | | |
| | | if (item.subtype === 'dualdatacard') { |
| | | arr_field = item.columns.map(col => col.field).join(',') |
| | | sub_name = item.setting.subdata |
| | | tabid = item.setting.primaryKey || '' |
| | | parid = item.setting.subBID || '' |
| | | sub_field = item.subColumns.map(col => col.field).join(',') |
| | | } |
| | | |
| | | let sql = `SELECT obj_name='@mk_obj_name@',prm_field='',str_field='', |
| | | arr_field='${arr_field}',tabid='${tabid}',parid='${parid}',sub_name='${sub_name}',sub_field='${sub_field}' |
| | | ` |
| | | |
| | | if (DateCount) { |
| | | sql += `UNION ALL |
| | | SELECT obj_name='DateCount',prm_field='total',str_field='', |
| | | arr_field='',tabid='',parid='',sub_name='',sub_field='' |
| | | ` |
| | | } |
| | | |
| | | sql += ` |
| | | ${decSql} |
| | | ${_customScript} |
| | | ${LText} |
| | | ${DateCount} |
| | | ${_tailScript} |
| | | ` |
| | | |
| | | reps.forEach(n => { |
| | | if (['orderBy', 'pageSize', 'pageIndex'].includes(n)) return |
| | | |
| | | LText = LText.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) |
| | | DateCount = DateCount.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) |
| | | _customScript = _customScript.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) |
| | | sql = sql.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) |
| | | }) |
| | | if (/\$@/ig.test(testSql)) { |
| | | LText = LText.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') |
| | | DateCount = DateCount.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') |
| | | _customScript = _customScript.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') |
| | | if (/\$@/ig.test(sql)) { |
| | | sql = sql.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') |
| | | reps.push('datam_begin', 'datam_end') |
| | | } |
| | | if (/@db@/ig.test(testSql)) { |
| | | if (/@db@/ig.test(sql)) { |
| | | reps.push('db') |
| | | } |
| | | reps.push('mk_obj_name') |
| | | |
| | | // let sql = '' |
| | | // let sub_name = '' |
| | | // let tabid = '' |
| | | // let parid = '' |
| | | // let sub_field = '' |
| | | sql = sql.replace(/\n\x20{6,8}/g, '\n').replace(/\n{3,}/g, '\n\n').replace(/^\s+|\s+$/g, '') |
| | | |
| | | // if (item.subtype === 'dualdatacard') { |
| | | // arr_field = item.columns.map(col => col.field).join(',') |
| | | // sub_name = item.setting.subdata |
| | | // tabid = item.setting.primaryKey || '' |
| | | // parid = item.setting.subBID || '' |
| | | // sub_field = item.subColumns.map(col => col.field).join(',') |
| | | // } |
| | | |
| | | // sql += ` |
| | | // SELECT obj_name='data',prm_field='',str_field='', |
| | | // arr_field='${arr_field}',tabid='${tabid}',parid='${parid}',sub_name='${sub_name}',sub_field='${sub_field}' |
| | | // ` |
| | | |
| | | // if (DateCount) { |
| | | // sql += `UNION ALL |
| | | // SELECT obj_name='DateCount',prm_field='total',str_field='', |
| | | // arr_field='',tabid='',parid='',sub_name='',sub_field='' |
| | | // ` |
| | | // } |
| | | |
| | | return {LText, DateCount, customScript: _customScript, reps} |
| | | return {LText: sql, reps} |
| | | } |
| | | |
| | | let getExcelInSql = (item) => { |
| | |
| | | item.dataSource = '(' + item.dataSource + ') tb' |
| | | } |
| | | |
| | | let sql = '' |
| | | let LText = '' |
| | | let DateCount = '' |
| | | let _search = '' |
| | | let reps = [] |
| | | let sFields = [] |
| | | |
| | | if (item.searchKey) { |
| | | _search = '@search@' |
| | | _search = '@mk_search@' |
| | | sFields = item.searchKey.split(',') |
| | | } |
| | | |
| | |
| | | } |
| | | }) |
| | | |
| | | if (item.laypage === 'true') { |
| | | sql = `/*system_query*/select top @pageSize@ ${arrfield} from (select ${arrfield} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${item.dataSource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows ` |
| | | DateCount = `/*system_query*/select count(1) as total from ${item.dataSource} ${_search}` |
| | | |
| | | reps.push('pageSize', 'orderBy', 'pageIndex') |
| | | } else { |
| | | sql = `/*system_query*/select ${arrfield} from ${item.dataSource} ${_search} order by @orderBy@ ` |
| | | reps.push('orderBy') |
| | | } |
| | | |
| | | let decSql = [] |
| | | let secSql = [] |
| | | |
| | | let syses = ['mk_departmentcode', 'mk_organization', 'mk_user_type'] |
| | | syses.forEach(s => { |
| | | if (new RegExp('@' + s + '[^0-9a-z_]', 'ig').test(sql)) { |
| | | if (new RegExp('@' + s + '[^0-9a-z_]', 'ig').test(item.dataSource)) { |
| | | if (['mk_departmentcode', 'mk_organization'].includes(s)) { |
| | | decSql.push(`@${s} nvarchar(512)`) |
| | | } else { |
| | |
| | | secSql = secSql.join(',') |
| | | |
| | | if (decSql) { |
| | | sql = `Declare ${decSql} select ${secSql} |
| | | ${sql} |
| | | decSql = `Declare ${decSql} select ${secSql}` |
| | | } |
| | | |
| | | if (item.laypage === 'true') { |
| | | /*system_query*/ |
| | | LText = `select top @pageSize@ ${arrfield} from (select ${arrfield} ,ROW_NUMBER() over(order by @orderBy@) as rows from ${item.dataSource} ${_search}) tmptable where rows > @pageSize@ * (@pageIndex@ - 1) order by tmptable.rows ` |
| | | DateCount = `select count(1) as total from ${item.dataSource} ${_search}` |
| | | |
| | | reps.push('pageSize', 'orderBy', 'pageIndex') |
| | | } else { |
| | | LText = `select ${arrfield} from ${item.dataSource} ${_search} order by @orderBy@ ` |
| | | reps.push('orderBy') |
| | | } |
| | | |
| | | let sql = `SELECT obj_name='data',prm_field='',str_field='', |
| | | arr_field='${arrfield}',tabid='',parid='',sub_name='',sub_field='' |
| | | ` |
| | | |
| | | if (DateCount) { |
| | | sql += `UNION ALL |
| | | SELECT obj_name='DateCount',prm_field='total',str_field='', |
| | | arr_field='',tabid='',parid='',sub_name='',sub_field='' |
| | | ` |
| | | } |
| | | |
| | | sql += ` |
| | | ${decSql} |
| | | ${LText} |
| | | ${DateCount} |
| | | ` |
| | | |
| | | reps.forEach(n => { |
| | | if (['orderBy', 'pageSize', 'pageIndex'].includes(n)) return |
| | | |
| | | sql = sql.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) |
| | | DateCount = DateCount.replace(new RegExp('@' + n + '@', 'ig'), `'@${n}@'`) |
| | | }) |
| | | if (/\$@/ig.test(sql)) { |
| | | sql = sql.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') |
| | | DateCount = DateCount.replace(/\$@/ig, '@datam_begin@').replace(/@\$/ig, '@datam_end@') |
| | | reps.push('datam_begin', 'datam_end') |
| | | } |
| | | if (/@db@/ig.test(sql)) { |
| | | reps.push('db') |
| | | } |
| | | |
| | | return {LText: sql, DateCount, reps} |
| | | |
| | | sql = sql.replace(/\n\x20{6,8}/g, '\n').replace(/\n{3,}/g, '\n\n').replace(/^\s+|\s+$/g, '') |
| | | |
| | | return {LText: sql, reps} |
| | | } |
| | | |
| | | let _mainSearch = [] |