import md5 from 'md5' import moment from 'moment' import { notification, Modal } from 'antd' import MKEmitter from '@/utils/events.js' import Utils from './utils.js' export default class DataUtils { /** * @description 数据源统一查询 */ static getQueryDataParams (setting, search = [], orderBy = '', pageIndex = 1, pageSize = 10, BID, id, year) { let param = null if (setting.interType === 'system') { if (window.backend && window.GLOB.CacheData.has('sql_' + setting.uuid) && !window.GLOB.mkHS) { param = this.getDefaultQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year) this.getBackendQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year) } else { param = this.getDefaultQueryParam(setting, search, orderBy, pageIndex, pageSize, id, BID, year) } } else { param = this.getCustomQueryParam(setting, search, orderBy, pageIndex, pageSize, id, year) } if (BID) { param.BID = BID } // 数据管理权限 if (sessionStorage.getItem('dataM') === 'true') { param.dataM = 'Y' } return param } /** * @description 获取用户自定义存储过程传参 */ static getCustomQueryParam (setting, search, orderBy, pageIndex, pageSize, id, year) { let param = Utils.formatCustomMainSearch(search) if (orderBy) { param.OrderCol = orderBy } if (id) { param.ID = id } else if (setting.laypage) { param.PageIndex = pageIndex param.PageSize = pageSize } else if (setting.$re_year) { param.mk_year = year } if (setting.hasExtend) { param.mk_time = setting.extendTime } if (setting.interType === 'inner') { param.func = setting.innerFunc if (setting.recordUser === 'true') { param.username = sessionStorage.getItem('User_Name') || '' param.fullname = sessionStorage.getItem('Full_Name') || '' } } else { if (setting.sysInterface === 'true') { if (window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi } } else if (setting.sysInterface === 'external') { if (window.GLOB.systemType === 'production') { param.$token = setting.exProInterface || '' } else { param.$token = setting.exInterface || '' } } else if (setting.sysInterface === 'custom') { if (window.GLOB.systemType === 'production') { param.rduri = setting.proInterface } else { param.rduri = setting.interface } } else { if (window.GLOB.systemType === 'production' && setting.proInterface) { param.rduri = setting.proInterface } else { param.rduri = setting.interface } let host = window.GLOB.baseurl.replace(/http(s):\/\//, '') if (param.rduri.indexOf(host) === -1 && /\/dostars/.test(param.rduri)) { param.$login = true } } if (setting.outerFunc) { param.func = setting.outerFunc } } return param } /** * @description 获取系统存储过程的参数 */ static getDefaultQueryParam (setting, search, orderBy, pageIndex, pageSize, id, BID, year) { let param = { func: 'sPC_Get_TableData', obj_name: 'data', exec_type: window.GLOB.execType || 'y', arr_field: setting.arr_field, default_sql: setting.execute ? 'true' : 'false' } let userName = sessionStorage.getItem('User_Name') || '' let fullName = sessionStorage.getItem('Full_Name') || '' let RoleID = sessionStorage.getItem('role_id') || '' let departmentcode = sessionStorage.getItem('departmentcode') || '' let organization = sessionStorage.getItem('organization') || '' let mk_user_type = sessionStorage.getItem('mk_user_type') || '' let nation = sessionStorage.getItem('nation') || '' let province = sessionStorage.getItem('province') || '' let city = sessionStorage.getItem('city') || '' let district = sessionStorage.getItem('district') || '' let address = sessionStorage.getItem('address') || '' let _dataresource = setting.dataresource let _customScript = '' let _tailScript = setting.tailScript || '' if (setting.customScript) { _customScript = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) Select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' ${setting.customScript} ` } let allSearch = Utils.getAllSearchOptions(search) let regoptions = allSearch.map(item => { return { reg: new RegExp('@' + item.key + '@', 'ig'), value: `'${item.value}'` } }) regoptions.push( { reg: /@orderBy@/ig, value: orderBy }, { reg: /@pageSize@/ig, value: setting.laypage ? pageSize : '9999' }, { reg: /@pageIndex@/ig, value: pageIndex}, // { reg: /@select\$|\$select@/ig, value: ''}, // { reg: /\$sum@/ig, value: '/*'}, // { reg: /@sum\$/ig, value: '*/'}, { reg: /@ID@/ig, value: `'${id || ''}'`}, { reg: /@BID@/ig, value: `'${BID || ''}'`}, { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`}, { reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, { reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, { reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, { reg: /@lang@/ig, value: `'${sessionStorage.getItem('lang')}'`}, { reg: /@typename@/ig, value: `'admin'`}, ) if (setting.hasExtend) { regoptions.push({ reg: /@mk_time@/ig, value: `'${setting.extendTime}'` }) } if (setting.$re_year) { regoptions.push({ reg: /@mk_year@/ig, value: `'${year}'` }) } regoptions.forEach(item => { _dataresource = _dataresource.replace(item.reg, item.value) _customScript = _customScript.replace(item.reg, item.value) _tailScript = _tailScript.replace(item.reg, item.value) }) let _search = '' if (_dataresource) { let id_search = '' if (id) { if (/^excel:/.test(id)) { id_search = `${setting.primaryKey} in (select ID from dbo.SplitComma('${id.replace(/^excel:/, '')}'))` } else { id_search = `${setting.primaryKey || 'ID'}='${id}'` orderBy = '' } } if (setting.queryType === 'statistics') { // 统计数据源,内容替换 if (id) { _dataresource = _dataresource + ` where ${id_search}` } } else if (id) { _search = Utils.joinMainSearchkey(search) _search = `where ${_search ? _search + ' AND ' : ''} ${id_search}` } else { _search = Utils.joinMainSearchkey(search) _search = _search ? 'where ' + _search : '' } } if (_customScript) { if (window.GLOB.breakpoint) { _customScript = _customScript.replace(/\$breakpoint_proc@/ig, window.GLOB.breakpoint) param.func = 'sPC_Get_TableData_debug' } } let LText = '' let DateCount = '' let arr_field = setting.all_field || setting.arr_field if (_dataresource) { if (setting.custompage) { LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` } else if (setting.laypage && orderBy) { 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 ` if (setting.sub_field) { DateCount = `/*system_query*/select count(1) as total from (select distinct ${setting.primaryKey} from ${_dataresource} ${_search})a` } else { DateCount = `/*system_query*/select count(1) as total from ${_dataresource} ${_search}` } } else if (setting.$top) { if (orderBy) { LText = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} order by ${orderBy} ` } else { LText = `/*system_query*/select top 1 ${arr_field} from ${_dataresource} ${_search} ` } } else if (orderBy) { LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} order by ${orderBy} ` } else { LText = `/*system_query*/select ${arr_field} from ${_dataresource} ${_search} ` } } if (_customScript) { if (DateCount) { DateCount = `${DateCount} ${_tailScript} aaa: if @ErrorCode!='' insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' ` } else if (LText) { LText = `${LText} ${_tailScript} aaa: if @ErrorCode!='' insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' ` } else { _customScript = `${_customScript} ${_tailScript} aaa: if @ErrorCode!='' insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' ` } } else if (_tailScript && DateCount) { LText = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) Select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' ${LText} ` DateCount = `${DateCount} ${_tailScript} aaa: if @ErrorCode!='' insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' ` } else if (_tailScript) { LText = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) Select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' ${LText} ${_tailScript} aaa: if @ErrorCode!='' insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' ` } else { LText = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) Select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' ${LText} ` } // 测试系统打印查询语句 if (window.GLOB.debugger === true) { _customScript && window.mkInfo(`${setting.$name ? `/*${setting.$name} 自定义脚本*/\n` : ''}${LText ? '' : '/*不执行默认sql*/\n'}${_customScript}`) LText && window.mkInfo(`${setting.$name ? `/*${setting.$name} 数据源*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n')) DateCount && window.mkInfo(`${setting.$name ? `/*${setting.$name} 总数查询*/\n` : ''}` + DateCount.replace(/\n\s{8}/ig, '\n')) } if (setting.$name) { param.menuname = setting.$name } param.custom_script = Utils.formatOptions(_customScript, param.exec_type) param.LText = Utils.formatOptions(LText, param.exec_type) param.DateCount = Utils.formatOptions(DateCount, param.exec_type) if (setting.sub_field) { param.sub_name = setting.subdata param.tabid = setting.primaryKey || '' param.parid = setting.subBID || '' param.sub_field = setting.sub_field } // exec_type 解码字段:LText、LText1、LText2、custom_script、DateCount param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss.SSS') param.secretkey = Utils.encrypt('', param.timestamp) param.username = userName param.fullname = fullName if (window.GLOB.probation) { param.s_debug_type = 'Y' } if (window.GLOB.mkHS) { // 云端数据验证 param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) // special HS自定义函数查询 if (setting.tableName === 's_custom_script' && window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi } } else if (window.GLOB.forcedUpdate) { param.s_version_up = 'true' } if (setting.database === 'sso' && window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi } return param } /** * @description 获取系统存储过程的参数 */ static getBackendQueryParam (setting, search, orderBy, pageIndex, pageSize, id, BID, year) { let item = window.GLOB.CacheData.get('sql_' + setting.uuid) let param = {} let searchKeys = null if (setting.dataresource) { searchKeys = [] if (search.length) { searchKeys = Utils.getSearchkeys(search) } if (id) { if (/^excel:/.test(id)) { id = id.replace(/^excel:/, '') searchKeys.push({ key: setting.primaryKey || 'ID', match: 'in', type: 'text_in', value: id }) } else { searchKeys.push({ key: setting.primaryKey || 'ID', match: '=', type: 'text', value: id }) } } } let values = { userid: sessionStorage.getItem('UserID') || '', time_id: Utils.getguid(), username: sessionStorage.getItem('User_Name') || '', fullname: sessionStorage.getItem('Full_Name') || '', roleid: sessionStorage.getItem('role_id') || '', mk_departmentcode: sessionStorage.getItem('departmentcode') || '', mk_organization: sessionStorage.getItem('organization') || '', mk_user_type: sessionStorage.getItem('mk_user_type') || '', mk_nation: sessionStorage.getItem('nation') || '', mk_province: sessionStorage.getItem('province') || '', mk_city: sessionStorage.getItem('city') || '', mk_district: sessionStorage.getItem('district') || '', mk_address: sessionStorage.getItem('address') || '', orderby: orderBy, pagesize: setting.laypage ? pageSize : '9999', pageindex: pageIndex, id: id || '', bid: BID || '', loginuid: sessionStorage.getItem('LoginUID') || '', sessionuid: localStorage.getItem('SessionUid') || '', appkey: window.GLOB.appkey || '', lang: sessionStorage.getItem('lang'), typename: 'admin', datam: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', datam_begin: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', datam_end: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', // datam_begin: sessionStorage.getItem('dataM') === 'true' ? '/*' : '', // datam_end: sessionStorage.getItem('dataM') === 'true' ? '*/' : '', mk_obj_name: 'data' } if (setting.hasExtend) { values.mk_time = setting.extendTime } if (setting.$re_year) { values.mk_year = year } if (window.GLOB.externalDatabase !== null) { values.db = window.GLOB.externalDatabase } if (item.works_flow_code) { values.works_flow_code = item.works_flow_code } item.urlkeys.forEach(key => { values[key] = item.urlparam[key] }) let allSearch = Utils.getAllSearchOptions(search) allSearch.forEach(cell => { values[cell.key.toLowerCase()] = cell.value }) let list = [] if (searchKeys) { list.push({ key: 'mk_search', value: searchKeys }) } let sql = item.sql item.reps.forEach(n => { let key = n.toLowerCase() if (values.hasOwnProperty(key)) { list.push({ key: n, value: values[key] }) } }) // let list = [ // { // key: "mk_search", // value: [ // { key: "nvarchar1,nvarchar3", match: "like", type: "text_or", value: "www" }, // { key: "int2", match: ">=", type: "number", value: "0" }, // { key: "int2", match: "<=", type: "number", value: "50" } // ] // }, // { key: "mk_obj_name", value: "data" }, // { key: "pageSize", value: 10 }, // { key: "orderBy", value: "ID desc" }, // { key: "pageIndex", value: 1 }, // { // key: 'mk_excel_data', // value: [[`'1'`, `'2'`, `'3'`, `'4'`, `'5'`], [`'6'`, `'7'`, `'8'`, `'9'`, `'10'`]] // }, // { // key: 'mk_outer_params', // value: [ // { // tb: '#tb1', // keys: ['[nvarchar1]', '[nvarchar2]', '[nvarchar3]', '[mk_level]','[mk_id]','[mk_bid]'], // values: [[`'1'`, `'2'`, `'3'`, `'4'`, `'5'`, `'6'`], [`'7'`, `'8'`, `'9'`, `'10'`, `'11'`, `'12'`]] // }, // { // tb: '@tb2', // keys: ['[field1]', '[field2]', '[field3]', '[mk_level]','[mk_id]','[mk_bid]'], // values: [[`'1'`, `'2'`, `'3'`, `'4'`, `'5'`, `'6'`], [`'7'`, `'8'`, `'9'`, `'10'`, `'11'`, `'12'`]] // } // ] // }, // ] list.forEach(cell => { if (cell.key === 'mk_outer_params') { let mk_outer_params = [] cell.value.forEach(n => { mk_outer_params.push(` Insert into ${n.tb} (${n.keys.join(',')}) `) let vals = [] n.values.forEach(m => { vals.push(` Select ${m.join(',')} `) }) mk_outer_params.push(vals.join(' Union all ')) }) mk_outer_params = mk_outer_params.join('') sql = sql.replace(/@mk_outer_params@/ig, mk_outer_params) } else if (cell.key === 'mk_excel_data') { let mk_excel_data = [] cell.value.forEach(n => { mk_excel_data.push(`Select ${n.join(',')}`) }) mk_excel_data = mk_excel_data.join(' Union all ') sql = sql.replace(/@mk_excel_data@/ig, mk_excel_data) } else if (cell.key === 'datam_begin' || cell.key === 'mk_check_begin') { if (cell.value === 'Y') { sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), '/*') } else { sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), '') } } else if (cell.key === 'datam_end' || cell.key === 'mk_check_end') { if (cell.value === 'Y') { sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), '*/') } else { sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), '') } } else if (cell.key === 'mk_search') { let mk_search = [] cell.value.forEach(n => { let str = n.match === 'like' || n.match === 'not like' ? '%' : '' if (n.type === 'text_or') { let vals = n.key.split(',').map(key => { return `${key} ${n.match} '${str}${n.value}${str}'` }) mk_search.push(`(${vals.join(' OR ')})`) } else if (n.type === 'text_multi') { mk_search.push(`'${n.value}' ${n.match} '%'+${n.key}+'%'`) } else if (n.type === 'number') { mk_search.push(`${n.key} ${n.match} ${n.value}`) } else if (n.type === 'text_in') { mk_search.push(`${n.key} in (select ID from dbo.SplitComma('${n.value}'))`) } else { mk_search.push(`${n.key} ${n.match} '${str}${n.value}${str}'`) } }) if (mk_search.length === 0) { mk_search = '' } else { mk_search = 'where ' + mk_search.join(' AND ') } sql = sql.replace(/@mk_search@/ig, mk_search) } else { sql = sql.replace(new RegExp('@' + cell.key + '@', 'ig'), cell.value) } }) param.list = [ { id: item.v_id, regExps: list, menuname: setting.$name || '', s_debug_type: window.GLOB.probation ? 'Y' : '', // md5_id: window.GLOB.probation ? md5(JSON.stringify(list)) : '', } ] if (setting.database === 'sso' && window.GLOB.mainSystemApi) { param.rduri = window.GLOB.mainSystemApi } return param } /** * @description 获取系统存储过程合计值的参数 */ static getStatQueryDataParams (setting, statFields, search, orderBy, BID) { let param = { func: 'sPC_Get_TableData', obj_name: 'data', exec_type: window.GLOB.execType || 'y', arr_field: statFields.map(col => col.field).join(','), default_sql: setting.execute ? 'true' : 'false' } let _dataresource = setting.dataresource let _customScript = '' let userName = sessionStorage.getItem('User_Name') || '' let fullName = sessionStorage.getItem('Full_Name') || '' let RoleID = sessionStorage.getItem('role_id') || '' let departmentcode = sessionStorage.getItem('departmentcode') || '' let organization = sessionStorage.getItem('organization') || '' let mk_user_type = sessionStorage.getItem('mk_user_type') || '' let nation = sessionStorage.getItem('nation') || '' let province = sessionStorage.getItem('province') || '' let city = sessionStorage.getItem('city') || '' let district = sessionStorage.getItem('district') || '' let address = sessionStorage.getItem('address') || '' if (setting.customScript) { _customScript = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) Select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' ${setting.customScript} ` } let allSearch = Utils.getAllSearchOptions(search) let regoptions = allSearch.map(item => { return { reg: new RegExp('@' + item.key + '@', 'ig'), value: `'${item.value}'` } }) regoptions.push( { reg: /@orderBy@/ig, value: orderBy }, { reg: /@pageSize@/ig, value: 999999 }, { reg: /@pageIndex@/ig, value: 1}, // { reg: /\$select@/ig, value: '/*'}, // { reg: /@select\$/ig, value: '*/'}, // { reg: /@sum\$|\$sum@/ig, value: ''}, { reg: /@ID@/ig, value: `''`}, { reg: /@BID@/ig, value: `'${BID || ''}'`}, { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`}, { reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, { reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, { reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, { reg: /@lang@/ig, value: `'${sessionStorage.getItem('lang')}'`}, { reg: /@typename@/ig, value: `'admin'`}, ) regoptions.forEach(item => { _dataresource = _dataresource.replace(item.reg, item.value) _customScript = _customScript.replace(item.reg, item.value) }) let _search = '' if (setting.queryType !== 'statistics') { // 统计数据源,内容替换 _search = Utils.joinMainSearchkey(search) if (_search) { _search = 'where ' + _search } } let LText = ` /*system_query*/select ${statFields.map(col => `isnull(sum(${col.field}),0) as ${col.field}`).join(',')} from ${_dataresource} ${_search} ` if (_customScript) { LText = `${LText} aaa: if @ErrorCode!='' insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' ` } else { LText = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) Select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' ${LText} ` } // 测试系统打印查询语句 if (window.GLOB.debugger === true) { _customScript && window.mkInfo(`${setting.$name ? `/*${setting.$name} 自定义脚本 统计查询*/\n` : ''}${LText ? '' : '/*不执行默认sql*/\n'}${_customScript}`) LText && window.mkInfo(`${setting.$name ? `/*${setting.$name} 数据源 统计查询*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n')) } if (setting.$name) { param.menuname = setting.$name } param.custom_script = Utils.formatOptions(_customScript, param.exec_type) param.LText = Utils.formatOptions(LText, param.exec_type) param.DateCount = '' param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') param.secretkey = Utils.encrypt('', param.timestamp) param.username = userName param.fullname = fullName if (window.GLOB.mkHS) { // 云端数据验证 param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) } if (BID) { param.BID = BID } // 数据管理权限 if (sessionStorage.getItem('dataM') === 'true') { param.dataM = 'Y' } return param } /** * @description 数据获取成功 */ static querySuccess (result) { if (!result.message) return if (result.ErrCode === 'Y') { Modal.success({ title: result.message }) } else if (result.ErrCode === 'S') { notification.success({ top: 92, message: result.message, duration: 2 }) } } /** * @description 数据获取失败 */ static queryFail (result) { if (!result.message && result.ErrCode !== 'version_up') return if (result.ErrCode === 'N') { Modal.error({ title: result.message, }) } else if (result.ErrCode === 'version_up') { MKEmitter.emit('reloadTabs') } else if (result.ErrCode !== '-2') { notification.error({ top: 92, message: result.message, duration: 10 }) } } } /** * @description 生成单个组件sPC_Get_structured_data请求参数 */ export function getStructDefaultParam (component, searchlist, first) { const { columns, setting, dataName, format, uuid } = component let _dataresource = setting.dataresource let _customScript = setting.customScript let allSearch = Utils.getAllSearchOptions(searchlist) let regoptions = allSearch.map(item => { return { reg: new RegExp('@' + item.key + '@', 'ig'), value: `'${item.value}'` } }) regoptions.forEach(item => { _dataresource = _dataresource.replace(item.reg, item.value) _customScript = _customScript.replace(item.reg, item.value) }) let _search = '' if (setting.queryType !== 'statistics' && _dataresource) { _search = Utils.joinMainSearchkey(searchlist) _search = _search ? 'where ' + _search : '' } if (setting.$top) { if (setting.order && _dataresource) { _dataresource = `select top 1 ${setting.arr_field} from ${_dataresource} ${_search} order by ${setting.order} ` } else if (_dataresource) { _dataresource = `select top 1 ${setting.arr_field} from ${_dataresource} ${_search} ` } } else if (setting.order && _dataresource) { _dataresource = `select top 1000 ${setting.arr_field} from ${_dataresource} ${_search} order by ${setting.order} ` } else if (_dataresource) { _dataresource = `select top 1000 ${setting.arr_field} from ${_dataresource} ${_search} ` } if (first) { let userName = sessionStorage.getItem('User_Name') || '' let fullName = sessionStorage.getItem('Full_Name') || '' let RoleID = sessionStorage.getItem('role_id') || '' let departmentcode = sessionStorage.getItem('departmentcode') || '' let organization = sessionStorage.getItem('organization') || '' let mk_user_type = sessionStorage.getItem('mk_user_type') || '' let nation = sessionStorage.getItem('nation') || '' let province = sessionStorage.getItem('province') || '' let city = sessionStorage.getItem('city') || '' let district = sessionStorage.getItem('district') || '' let address = sessionStorage.getItem('address') || '' _customScript = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}' ${_customScript} ` } return { uuid: uuid, name: dataName, $name: setting.$name, columns: columns, par_tablename: '', order: setting.order || '', type: format === 'array' ? format : '', primaryKey: setting.primaryKey || '', foreign_key: '', sql: _dataresource, script: _customScript } } /** * @description 生成sPC_Get_structured_data请求参数 */ export function getStructuredParams (params, config, BID) { let LText_field = [] let diffUser = false let regoptions = [ { reg: /@pageSize@/ig, value: 9999 }, { reg: /@pageIndex@/ig, value: 1}, { reg: /@ID@/ig, value: `''`}, { reg: /@BID@/ig, value: `'${BID || ''}'`}, { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`}, { reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, { reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, { reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, { reg: /@lang@/ig, value: `'${sessionStorage.getItem('lang')}'`}, { reg: /@typename@/ig, value: `'admin'`}, ] let _LText = params.map((item, index) => { let _script = item.script let _sql = item.sql if (!diffUser && (/@userid@/ig.test(item.sql) || /@userid@/ig.test(_script))) { diffUser = true } _sql = _sql.replace(/@orderBy@/ig, item.order) _script = _script.replace(/@orderBy@/ig, item.order) regoptions.forEach(cell => { _sql = _sql.replace(cell.reg, cell.value) _script = _script.replace(cell.reg, cell.value) }) // 测试系统打印查询语句 if (window.GLOB.debugger === true) { _script && window.mkInfo(`${item.$name ? `/*${item.$name} 自定义脚本(同步查询)*/\n` : ''}${_sql ? '' : '/*不执行默认sql*/\n'}${_script}`) _sql && window.mkInfo(`${item.$name ? `/*${item.$name} 数据源(同步查询)*/\n` : ''}` + _sql) } item.columns.forEach(cell => { LText_field.push(`Select '${item.name}' as tablename,'${cell.field}' as fieldname,'${cell.datatype}' as field_type`) }) return `Select '${item.name}' as tablename,'${window.btoa(window.encodeURIComponent(_sql))}' as LText,'${window.btoa(window.encodeURIComponent(_script))}' as Lcustomize,'${item.type}' as table_type,'${item.primaryKey}' as primary_key,'${item.par_tablename}' as par_tablename,'${item.foreign_key}' as foreign_key,'${index}' as Sort` }) let param = { func: 'sPC_Get_structured_data', BID: BID, username: sessionStorage.getItem('User_Name') || '', fullName: sessionStorage.getItem('Full_Name') || '' } param.menuname = config.MenuName || config.$menuname || '' param.exec_type = window.GLOB.execType || 'y' param.LText = Utils.formatOptions(_LText.join(' union all '), param.exec_type) param.custom_script = Utils.formatOptions(LText_field.join(' union all '), param.exec_type) if (config.cacheUseful === 'true') { param.time_type = config.timeUnit param.time_limit = config.cacheTime if (diffUser) { param.userid = sessionStorage.getItem('UserID') } param.data_md5 = md5(JSON.stringify(param)) } param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') param.secretkey = Utils.encrypt('', param.timestamp) return param }