import md5 from 'md5'
|
import moment from 'moment'
|
import options from '@/store/options.js'
|
import Utils from './utils.js'
|
|
export default class DataUtils {
|
/**
|
* @description 数据源名称,用于统一查询
|
* @param {Object} setting 数据源设置
|
* @param {String} arrFields 查询字段
|
* @param {Array} search 搜索条件
|
* @param {String} orderBy 排序方式
|
* @param {Number} pageIndex 页码
|
* @param {Number} pageSize 每页数量
|
* @param {String} BID 上级ID
|
* @return {Object} param
|
*/
|
static getQueryDataParams (setting, arrFields, search = [], orderBy = '', pageIndex = 1, pageSize = 10, BID, id) {
|
let param = null
|
|
if (setting.interType === 'system' || (setting.interType === 'custom' && setting.requestMode === 'system')) {
|
param = this.getDefaultQueryParam(setting, arrFields, search, orderBy, pageIndex, pageSize, id, BID)
|
} else {
|
param = this.getCustomQueryParam(setting, search, orderBy, pageIndex, pageSize, id)
|
}
|
|
if (BID) {
|
param.BID = BID
|
}
|
// 数据管理权限
|
if (sessionStorage.getItem('dataM') === 'true') {
|
param.dataM = 'Y'
|
}
|
|
return param
|
}
|
|
/**
|
* @description 获取用户自定义存储过程传参
|
*/
|
static getCustomQueryParam (setting, search, orderBy, pageIndex, pageSize, id) {
|
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
|
}
|
|
if (setting.interType === 'inner' || (setting.interType === 'custom' && setting.requestMode === 'inner')) {
|
param.func = setting.innerFunc
|
} else {
|
if (window.GLOB.mkHS) {
|
if (setting.sysInterface === 'true' && options.cloudServiceApi) {
|
param.rduri = options.cloudServiceApi
|
} else if (setting.sysInterface !== 'true') {
|
param.rduri = setting.interface
|
}
|
} else {
|
if (setting.sysInterface === 'true' && window.GLOB.mainSystemApi) {
|
param.rduri = window.GLOB.mainSystemApi
|
} else if (setting.sysInterface !== 'true') {
|
param.rduri = window.GLOB.systemType === 'production' ? (setting.proInterface || setting.interface) : setting.interface
|
}
|
}
|
|
if (setting.outerFunc) {
|
param.func = setting.outerFunc
|
}
|
}
|
|
return param
|
}
|
|
/**
|
* @description 获取系统存储过程的参数
|
*/
|
static getDefaultQueryParam (setting, arrFields, search, orderBy, pageIndex, pageSize, id, BID) {
|
let param = {
|
func: 'sPC_Get_TableData',
|
obj_name: 'data',
|
exec_type: 'y',
|
arr_field: arrFields,
|
default_sql: setting.execute ? 'true' : 'false'
|
}
|
|
if (setting.transaction === 'true') {
|
param.func = 'sPC_Get_TableData_try'
|
}
|
|
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 (sessionStorage.getItem('isEditState') === 'true') {
|
userName = sessionStorage.getItem('CloudUserName') || ''
|
fullName = sessionStorage.getItem('CloudFullName') || ''
|
}
|
|
let _dataresource = setting.dataresource
|
let _customScript = ''
|
|
if (setting.customScript) {
|
_customScript = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@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}
|
`
|
}
|
|
_dataresource = _dataresource.replace(/@select\$|\$select@/ig, '')
|
_customScript = _customScript.replace(/@select\$|\$select@/ig, '')
|
_dataresource = _dataresource.replace(/\$sum@/ig, '/*')
|
_dataresource = _dataresource.replace(/@sum\$/ig, '*/')
|
_customScript = _customScript.replace(/\$sum@/ig, '/*')
|
_customScript = _customScript.replace(/@sum\$/ig, '*/')
|
|
_dataresource = _dataresource.replace(/@ID@/ig, `''`)
|
_customScript = _customScript.replace(/@ID@/ig, `''`)
|
_dataresource = _dataresource.replace(/@BID@/ig, `'${BID || ''}'`)
|
_customScript = _customScript.replace(/@BID@/ig, `'${BID || ''}'`)
|
_dataresource = _dataresource.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`)
|
_customScript = _customScript.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`)
|
_dataresource = _dataresource.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
|
_customScript = _customScript.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
|
_dataresource = _dataresource.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
|
_customScript = _customScript.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
|
_dataresource = _dataresource.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
|
_customScript = _customScript.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
|
|
let regoptions = null
|
if (setting.queryType === 'statistics' || _customScript) {
|
let allSearch = Utils.getAllSearchOptions(search)
|
regoptions = allSearch.map(item => {
|
return {
|
reg: new RegExp('@' + item.key + '@', 'ig'),
|
value: `'${item.value}'`
|
}
|
})
|
regoptions.push({
|
reg: new RegExp('@orderBy@', 'ig'),
|
value: orderBy
|
}, {
|
reg: new RegExp('@pageSize@', 'ig'),
|
value: setting.laypage ? pageSize : '9999'
|
}, {
|
reg: new RegExp('@pageIndex@', 'ig'),
|
value: pageIndex
|
})
|
}
|
|
let _search = ''
|
|
if (_dataresource) {
|
if (setting.queryType === 'statistics') { // 统计数据源,内容替换
|
regoptions.forEach(item => {
|
_dataresource = _dataresource.replace(item.reg, item.value)
|
})
|
if (id) {
|
_dataresource = _dataresource + ` where ${setting.primaryKey || 'ID'}='${id}'`
|
}
|
} else if (!id) {
|
_search = Utils.joinMainSearchkey(search)
|
if (_search) {
|
_search = 'where ' + _search
|
}
|
} else if (id) {
|
_search = Utils.joinMainSearchkey(search)
|
_search = `where ${_search ? _search + ' AND ' : ''} ${setting.primaryKey || 'ID'}='${id}'`
|
}
|
}
|
|
if (_customScript) {
|
regoptions.forEach(item => {
|
_customScript = _customScript.replace(item.reg, item.value)
|
})
|
}
|
|
let LText = ''
|
let DateCount = ''
|
|
if (_dataresource && setting.laypage && orderBy && !id) {
|
LText = ` select top ${pageSize} ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable where rows > ${pageSize * (pageIndex - 1)} order by tmptable.rows `
|
DateCount = `select count(1) as total from ${_dataresource} ${_search}`
|
} else if (_dataresource && orderBy) {
|
LText = ` select ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows `
|
} else if (_dataresource) {
|
LText = ` select ${arrFields} from ${_dataresource} ${_search} `
|
}
|
|
if (_customScript) {
|
if (LText) {
|
LText = `${LText}
|
aaa:
|
if @ErrorCode!=''
|
insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@
|
`
|
} else {
|
_customScript = `${_customScript}
|
aaa:
|
if @ErrorCode!=''
|
insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@
|
`
|
}
|
} else {
|
LText = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@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 || (window.debugger === true && options.sysType !== 'cloud')) {
|
_customScript && console.info(`${setting.$name ? `/*${setting.$name} 自定义脚本*/\n` : ''}${LText ? '' : '/*不执行默认sql*/\n'}${_customScript}`)
|
LText && console.info(`${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.LText = Utils.formatOptions(LText)
|
param.DateCount = Utils.formatOptions(DateCount)
|
|
// 多层结构数据
|
// LText = `SELECT a.id as bid,a.ID,a.workerCode,a.workerName,a.jobName,a.Initials,case when isnull(m.friend_id ,'') ='' then ''
|
// when isnull(m.status,0)=10 then '已添加' else '待通过' end as friend_text
|
// ,case when images='' then 'http://epc.mk9h.cn/Content/images/upload/img/kane.jpg' else images end as icon FROM
|
// (select friend_id,status from oa_mail_list where userid='sso202004100959326131C0805998B6745F886F9' and Initials=case when right('0',1)='0' then Initials else '0' end
|
// and status=10 and deleted=0) m
|
// inner join (select * from BD_workers where
|
// Initials=case when right('0',1)='0' then Initials else '0' end and deleted=0 ) a
|
// on a.id=m.friend_id `
|
// param.custom_script = ''
|
// param.LText = Utils.formatOptions(LText)
|
// param.DateCount = ''
|
// param.prm_field = 'workerCode'
|
// param.arr_field = 'workerName,jobName'
|
// param.tabid = 'ID'
|
// param.parid = 'BID'
|
// param.sub_name = 'sub_data'
|
// param.sub_field = 'BID,friend_text,icon,Initials'
|
|
// exec_type: 'y' 解码字段:LText、LText1、LText2、custom_script、DateCount
|
|
param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
|
param.secretkey = Utils.encrypt('', param.timestamp)
|
|
if (window.GLOB.mkHS) { // 云端数据验证
|
param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
|
}
|
|
return param
|
}
|
|
/**
|
* @description 获取系统存储过程合计值的参数
|
*/
|
static getStatQueryDataParams (setting, statFields, search, orderBy, BID) {
|
let param = {
|
func: 'sPC_Get_TableData',
|
obj_name: 'data',
|
exec_type: 'y',
|
arr_field: statFields.map(col => col.field).join(','),
|
default_sql: setting.execute ? 'true' : 'false'
|
}
|
|
if (setting.transaction === 'true') {
|
param.func = 'sPC_Get_TableData_try'
|
}
|
|
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 (sessionStorage.getItem('isEditState') === 'true') {
|
userName = sessionStorage.getItem('CloudUserName') || ''
|
fullName = sessionStorage.getItem('CloudFullName') || ''
|
}
|
|
if (setting.customScript) {
|
_customScript = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@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}
|
`
|
}
|
|
_dataresource = _dataresource.replace(/@sum\$|\$sum@/ig, '')
|
_customScript = _customScript.replace(/@sum\$|\$sum@/ig, '')
|
_dataresource = _dataresource.replace(/\$select@/ig, '/*')
|
_dataresource = _dataresource.replace(/@select\$/ig, '*/')
|
_customScript = _customScript.replace(/\$select@/ig, '/*')
|
_customScript = _customScript.replace(/@select\$/ig, '*/')
|
|
_dataresource = _dataresource.replace(/@ID@/ig, `''`)
|
_customScript = _customScript.replace(/@ID@/ig, `''`)
|
_dataresource = _dataresource.replace(/@BID@/ig, `'${BID || ''}'`)
|
_customScript = _customScript.replace(/@BID@/ig, `'${BID || ''}'`)
|
_dataresource = _dataresource.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`)
|
_customScript = _customScript.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`)
|
_dataresource = _dataresource.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
|
_customScript = _customScript.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
|
_dataresource = _dataresource.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
|
_customScript = _customScript.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
|
_dataresource = _dataresource.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
|
_customScript = _customScript.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
|
|
let regoptions = null
|
if (setting.queryType === 'statistics' || _customScript) {
|
let allSearch = Utils.getAllSearchOptions(search)
|
|
regoptions = allSearch.map(item => {
|
return {
|
reg: new RegExp('@' + item.key + '@', 'ig'),
|
value: `'${item.value}'`
|
}
|
})
|
regoptions.push({
|
reg: new RegExp('@orderBy@', 'ig'),
|
value: orderBy
|
}, {
|
reg: new RegExp('@pageSize@', 'ig'),
|
value: 999999
|
}, {
|
reg: new RegExp('@pageIndex@', 'ig'),
|
value: 1
|
})
|
}
|
|
let _search = Utils.joinMainSearchkey(search)
|
if (_search) {
|
_search = 'where ' + _search
|
}
|
|
if (setting.queryType === 'statistics') { // 统计数据源,内容替换
|
regoptions.forEach(item => {
|
_dataresource = _dataresource.replace(item.reg, item.value)
|
})
|
_search = ''
|
}
|
|
if (_customScript) {
|
regoptions.forEach(item => {
|
_customScript = _customScript.replace(item.reg, item.value)
|
})
|
}
|
|
let LText = ` 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,@UserID@
|
`
|
} else {
|
LText = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@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 || (window.debugger === true && options.sysType !== 'cloud')) {
|
_customScript && console.info(`${setting.$name ? `/*${setting.$name} 自定义脚本 统计查询*/\n` : ''}${LText ? '' : '/*不执行默认sql*/\n'}${_customScript}`)
|
LText && console.info(`${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.LText = Utils.formatOptions(LText)
|
param.DateCount = ''
|
|
param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
|
param.secretkey = Utils.encrypt('', param.timestamp)
|
|
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 数据源名称,用于统一查询
|
* @param {Object} setting 数据源设置
|
* @param {String} arrFields 查询字段
|
* @param {Array} search 搜索条件
|
* @param {String} orderBy 排序方式
|
* @param {Number} pageIndex 页码
|
* @param {Number} pageSize 每页数量
|
* @param {String} BID 上级ID
|
* @return {Object} param
|
*/
|
static getPrevQueryParams (setting, search = [], BID) {
|
let param = null
|
|
if (setting.procMode !== 'inner') {
|
param = this.getDefaultPrevQueryParam(setting, search, BID)
|
} else {
|
param = Utils.formatCustomMainSearch(search)
|
param.func = setting.prevFunc || ''
|
}
|
|
if (BID) {
|
param.BID = BID
|
}
|
|
return param
|
}
|
|
/**
|
* @description 获取系统前置脚本
|
*/
|
static getDefaultPrevQueryParam (setting, search, BID) {
|
let param = {
|
func: 'sPC_TableData_InUpDe',
|
exec_type: 'y',
|
script_type: 'Y'
|
}
|
|
let sql = ''
|
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 (sessionStorage.getItem('isEditState') === 'true') {
|
userName = sessionStorage.getItem('CloudUserName') || ''
|
fullName = sessionStorage.getItem('CloudFullName') || ''
|
}
|
|
setting.preScripts.forEach(item => {
|
if (item.status === 'false') return
|
sql += `${item.sql}
|
`
|
})
|
|
if (sql) {
|
sql = `/*前置脚本*/
|
declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@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}'
|
${sql}
|
aaa:
|
if @ErrorCode!=''
|
insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,@UserID@
|
`
|
|
let allSearch = Utils.getAllSearchOptions(search)
|
allSearch.forEach(item => {
|
sql = sql.replace(new RegExp('@' + item.key + '@', 'ig'), `'${item.value}'`)
|
})
|
|
if (sessionStorage.getItem('dataM') === 'true') { // 数据权限
|
sql = sql.replace(/\$@/ig, '/*')
|
sql = sql.replace(/@\$/ig, '*/')
|
} else {
|
sql = sql.replace(/@\$|\$@/ig, '')
|
}
|
|
sql = sql.replace(/@userName@/ig, `'${userName}'`)
|
sql = sql.replace(/@fullName@/ig, `'${fullName}'`)
|
|
sql = sql.replace(/@ID@/ig, `''`)
|
sql = sql.replace(/@BID@/ig, `'${BID || ''}'`)
|
sql = sql.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`)
|
sql = sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
|
sql = sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
|
sql = sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
|
|
// 测试系统打印查询语句
|
if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
|
console.info(sql.replace(/\n\s{8}/ig, '\n'))
|
}
|
}
|
|
param.LText = Utils.formatOptions(sql)
|
param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
|
param.secretkey = Utils.encrypt('', param.timestamp)
|
|
if (window.GLOB.mkHS) { // 函数 sPC_TableData_InUpDe 云端验证
|
param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
|
}
|
|
param.menuname = setting.MenuName || ''
|
|
return param
|
}
|
|
/**
|
* @description 获取系统回调脚本
|
*/
|
static getCallBackQueryParams (setting, sql, errSql, BID) {
|
let param = {
|
func: 'sPC_TableData_InUpDe',
|
exec_type: 'y',
|
}
|
|
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 (sessionStorage.getItem('isEditState') === 'true') {
|
userName = sessionStorage.getItem('CloudUserName') || ''
|
fullName = sessionStorage.getItem('CloudFullName') || ''
|
}
|
|
let _prevCustomScript = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@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}'
|
${errSql}
|
`
|
let _backCustomScript = `
|
`
|
|
setting.cbScripts.forEach(script => {
|
if (script.status === 'false') return
|
|
if (script.position === 'front') {
|
_prevCustomScript += `
|
/* 自定义脚本 */
|
${script.sql}
|
`
|
} else {
|
_backCustomScript += `
|
/* 自定义脚本 */
|
${script.sql}
|
`
|
}
|
})
|
|
_backCustomScript += `
|
aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
|
|
sql = _prevCustomScript + sql
|
sql = sql + _backCustomScript
|
|
if (sessionStorage.getItem('dataM') === 'true') { // 数据权限
|
sql = sql.replace(/\$@/ig, '/*')
|
sql = sql.replace(/@\$/ig, '*/')
|
} else {
|
sql = sql.replace(/@\$|\$@/ig, '')
|
}
|
|
sql = sql.replace(/@ID@/ig, `''`)
|
sql = sql.replace(/@BID@/ig, `'${BID || ''}'`)
|
sql = sql.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`)
|
sql = sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`)
|
sql = sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`)
|
sql = sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
|
|
if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
|
console.info(sql.replace(/\n\s{8}/ig, '\n'))
|
}
|
|
param.LText = sql
|
|
param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
|
param.secretkey = Utils.encrypt('', param.timestamp)
|
param.LText = Utils.formatOptions(param.LText)
|
param.menuname = setting.MenuName || ''
|
|
if (BID) {
|
param.BID = BID
|
}
|
|
if (window.GLOB.mkHS) { // 系统函数云端验证
|
param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp)
|
}
|
|
return param
|
}
|
|
/**
|
* @description 获取回调sql
|
*/
|
static getCallBackSql (setting, result) {
|
let lines = []
|
let pre = setting.callbackType === 'script' ? '@' : ''
|
|
let getDefaultSql = (obj, tb, bid, level) => {
|
let keys = []
|
let vals = []
|
let subObjs = []
|
let id = Utils.getuuid()
|
|
delete obj.$$key
|
|
Object.keys(obj).forEach(key => {
|
let val = obj[key]
|
if (val === null || val === undefined) return
|
if (typeof(val) === 'object') {
|
if (Array.isArray(val)) {
|
val.forEach(item => {
|
if (typeof(item) !== 'object' || Array.isArray(item)) return
|
if (Object.keys(item).length > 0) {
|
item.$$key = tb + '_' + key
|
subObjs.push(item)
|
}
|
})
|
} else if (Object.keys(val).length > 0) {
|
val.$$key = tb + '_' + key
|
subObjs.push(val)
|
}
|
} else {
|
if (typeof(val) === 'string') {
|
val = val.replace(/'/ig, '"')
|
}
|
keys.push(key)
|
vals.push(`'${val}'`)
|
}
|
})
|
|
lines.push({
|
table: tb,
|
insert: `Insert into ${pre}${tb} (${keys.join(',')},mk_level,mk_id,mk_bid)`,
|
select: `Select ${vals.join(',')},'${level}','${id}','${bid}'`
|
})
|
|
subObjs.forEach(item => {
|
getDefaultSql(item, item.$$key, id, level + 1)
|
})
|
}
|
|
getDefaultSql(result, setting.cbTable, '', 1)
|
|
let lineMap = new Map()
|
lines.forEach(line => {
|
if (lineMap.has(line.table)) {
|
let _line = lineMap.get(line.table)
|
_line.selects.push(line.select)
|
lineMap.set(line.table, _line)
|
} else {
|
lineMap.set(line.table, {
|
table: line.table,
|
insert: line.insert,
|
selects: [line.select]
|
})
|
}
|
})
|
|
return [...lineMap.values()]
|
}
|
}
|
|
/**
|
* @description 生成单个组件sPC_Get_structured_data请求参数
|
*/
|
export function getStructDefaultParam (component, searchlist, first) {
|
const { columns, setting, dataName, format } = component
|
|
let arr_field = columns.map(col => col.field)
|
let _dataresource = setting.dataresource
|
let _customScript = setting.customScript
|
|
if (setting.queryType === 'statistics' || _customScript) {
|
let allSearch = Utils.getAllSearchOptions(searchlist)
|
let regoptions = allSearch.map(item => {
|
return {
|
reg: new RegExp('@' + item.key + '@', 'ig'),
|
value: `'${item.value}'`
|
}
|
})
|
|
regoptions.forEach(item => {
|
if (_dataresource && setting.queryType === 'statistics') {
|
_dataresource = _dataresource.replace(item.reg, item.value)
|
}
|
_customScript = _customScript.replace(item.reg, item.value)
|
})
|
}
|
|
_dataresource = _dataresource.replace(/@select\$|\$select@/ig, '')
|
_customScript = _customScript.replace(/@select\$|\$select@/ig, '')
|
_dataresource = _dataresource.replace(/\$sum@/ig, '/*')
|
_dataresource = _dataresource.replace(/@sum\$/ig, '*/')
|
_customScript = _customScript.replace(/\$sum@/ig, '/*')
|
_customScript = _customScript.replace(/@sum\$/ig, '*/')
|
|
let _search = ''
|
if (setting.queryType !== 'statistics' && _dataresource) {
|
_search = Utils.joinMainSearchkey(searchlist)
|
_search = _search ? 'where ' + _search : ''
|
}
|
|
if (setting.order && _dataresource) {
|
_dataresource = `select top 1000 ${arr_field.join(',')} from (select ${arr_field.join(',')} ,ROW_NUMBER() over(order by ${setting.order}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows `
|
} else if (_dataresource) {
|
_dataresource = `select top 1000 ${arr_field.join(',')} 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') || ''
|
|
if (sessionStorage.getItem('isEditState') === 'true') {
|
userName = sessionStorage.getItem('CloudUserName') || ''
|
fullName = sessionStorage.getItem('CloudFullName') || ''
|
}
|
_customScript = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@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 {
|
name: dataName,
|
$name: setting.$name,
|
columns: columns,
|
par_tablename: '',
|
type: format === 'array' ? format : '',
|
primaryKey: setting.primaryKey || '',
|
foreign_key: '',
|
sql: _dataresource,
|
script: _customScript,
|
transaction: setting.transaction === 'true'
|
}
|
}
|
|
/**
|
* @description 生成sPC_Get_structured_data请求参数
|
* 1、把大接口sPC_Get_structured_data的ltext拆成三份,第一段:@LText1,第二段@LText,第三段@LText2
|
*/
|
export function getStructuredParams (params, config, BID) {
|
let LText_field = []
|
let diffUser = false
|
let transaction = false
|
let loginId = `'${sessionStorage.getItem('LoginUID') || ''}'`
|
let sessionId = `'${localStorage.getItem('SessionUid') || ''}'`
|
let userId = `'${sessionStorage.getItem('UserID') || ''}'`
|
|
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
|
}
|
if (item.transaction) {
|
transaction = true
|
}
|
|
_sql = _sql.replace(/@ID@/ig, `''`)
|
_script = _script.replace(/@ID@/ig, `''`)
|
_sql = _sql.replace(/@BID@/ig, `'${BID || ''}'`)
|
_script = _script.replace(/@BID@/ig, `'${BID || ''}'`)
|
_sql = _sql.replace(/@LoginUID@/ig, loginId)
|
_script = _script.replace(/@LoginUID@/ig, loginId)
|
_sql = _sql.replace(/@SessionUid@/ig, sessionId)
|
_script = _script.replace(/@SessionUid@/ig, sessionId)
|
_sql = _sql.replace(/@UserID@/ig, userId)
|
_script = _script.replace(/@UserID@/ig, userId)
|
_sql = _sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
|
_script = _script.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`)
|
|
// 测试系统打印查询语句
|
if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
|
_script && console.info(`${item.$name ? `/*${item.$name} 自定义脚本(同步查询)*/\n` : ''}${_sql ? '' : '/*不执行默认sql*/\n'}${_script}`)
|
_sql && console.info(`${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',
|
LText: _LText.join(' union all '),
|
LText_field: LText_field.join(' union all '),
|
BID: BID
|
}
|
|
if (transaction) {
|
param.func = 'sPC_Get_structured_data_try'
|
}
|
|
let { LText, LText1, LText2 } = Utils.sPCInUpDeFormatOptions(param.LText)
|
|
param.LText1 = LText1
|
param.LText = LText
|
param.LText2 = LText2
|
param.LText_field = Utils.formatOptions(param.LText_field)
|
|
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.LText, param.timestamp)
|
|
return param
|
}
|