| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- const ruleToFuncString = (rule) => {
- const condition = rule.options?.isCondition ? ` if (${rule.options.condition || 'false'}) ` : ''
- if (rule.action == 'hide') {
- return `${condition} this.hide(${JSON.stringify(rule.options.fields)});`
- }
- if (rule.action == 'display') {
- return `${condition} this.display(${JSON.stringify(rule.options.fields)});`
- }
- if (rule.action == 'disabled') {
- return `${condition} this.disabled(${JSON.stringify(rule.options.fields)}, ${rule.options.disabled});`
- }
- if (rule.action == 'refresh') {
- return `${condition} await this.refresh();`
- }
- if (rule.action == 'reset') {
- return `${condition} this.reset();`
- }
- if (rule.action == 'setData') {
- const setField = rule.options.fields.map(item => {
- if (rule.options.valueTypes[item] == 'fx') {
- return `'${item}' : ${rule.options.values[item]}`
- } else {
- return `'${item}' : ${typeof rule.options.values[item] == 'string' ? JSON.stringify(rule.options.values[item]) : rule.options.values[item]}`
- }
- })
- return `${condition} await this.setData({${setField.join(',')}});`
- }
- if (rule.action == 'validate') {
- if (rule.options.failSuspend) {
- return `${condition} await this.validate(${JSON.stringify(rule.options.fields)});`
- } else {
- return `${condition} this.validate(${JSON.stringify(rule.options.fields)});`
- }
- }
- if (rule.action == 'sendRequest') {
- if (!rule.options.dataSource) return ''
- let argsArray = Object.keys(rule.options.dataSource.args).map(argKey => {
- if (rule.options.valueTypes[argKey] == 'fx') {
- return `'${argKey}': ${rule.options.dataSource.args[argKey]}`
- } else {
- return `'${argKey}': ${typeof rule.options.dataSource.args[argKey] == 'string' ? JSON.stringify(rule.options.dataSource.args[argKey]) : rule.options.dataSource.args[argKey]}`
- }
- })
- if (rule.options.responseVariable) {
- let responseStatement = ` let ${rule.options.responseVariable} = undefined;`
- return `${responseStatement} ${condition} ${rule.options.responseVariable} = await this.sendRequest('${rule.options.dataSource.label}', {${argsArray.join(',')}});`
- } else {
- return `${condition} await this.sendRequest('${rule.options.dataSource.label}', {${argsArray.join(',')}});`
- }
- }
- if (rule.action == 'refreshFieldDataSource') {
- if (!rule.options.field) return ''
- let argsArray = Object.keys(rule.options.dataSource.args).map(argKey => {
- if (rule.options.valueTypes[argKey] == 'fx') {
- return `'${argKey}': ${rule.options.dataSource.args[argKey]}`
- } else {
- return `'${argKey}': ${typeof rule.options.dataSource.args[argKey] == 'string' ? JSON.stringify(rule.options.dataSource.args[argKey]) : rule.options.dataSource.args[argKey]}`
- }
- })
- return `${condition} await this.refreshFieldDataSource('${rule.options.field}', {${argsArray.join(',')}});`
- }
- if (rule.action == 'getFieldDataSource') {
- if (rule.options.localVariable) {
- let localStatement = ` let ${rule.options.localVariable} = undefined;`
- return `${localStatement} ${condition} ${rule.options.localVariable} = this.getFieldDataSource('${rule.options.field}');`
- }
- }
- if (rule.action == 'getOptionData') {
- if (rule.options.localVariable) {
- let localStatement = ` let ${rule.options.localVariable} = undefined;`
- return `${localStatement} ${condition} ${rule.options.localVariable} = this.getOptionData('${rule.options.field}');`
- }
- }
- if (rule.action == 'refreshDynamicValueAll') {
- return `${condition} this.refreshDynamicValueAll()`
- }
- if (rule.action == 'refreshDynamicValue') {
- if (!rule.options.field) return ''
- let argsArray = []
- if (rule.options.isArgs) {
- argsArray = Object.keys(rule.options.dataSource.args).map(argKey => {
- if (rule.options.valueTypes[argKey] == 'fx') {
- return `'${argKey}': ${rule.options.dataSource.args[argKey]}`
- } else {
- return `'${argKey}': ${typeof rule.options.dataSource.args[argKey] == 'string' ? JSON.stringify(rule.options.dataSource.args[argKey]) : rule.options.dataSource.args[argKey]}`
- }
- })
- }
- return `${condition} this.refreshDynamicValue('${rule.options.field}', {${argsArray.join(',')}});`
- }
- if (rule.action == 'refreshFieldOptionData') {
- if (!rule.options.field) return ''
- let argsArray = []
- if (rule.options.isArgs) {
- argsArray = Object.keys(rule.options.dataSource.args).map(argKey => {
- if (rule.options.valueTypes[argKey] == 'fx') {
- return `'${argKey}': ${rule.options.dataSource.args[argKey]}`
- } else {
- return `'${argKey}': ${typeof rule.options.dataSource.args[argKey] == 'string' ? JSON.stringify(rule.options.dataSource.args[argKey]) : rule.options.dataSource.args[argKey]}`
- }
- })
- }
- return `${condition} this.refreshFieldOptionData('${rule.options.field}', {${argsArray.join(',')}});`
- }
- if (rule.action == 'openDialog') {
- if (!rule.options.field) return ''
- return `${condition} this.openDialog('${rule.options.field}');`
- }
- if (rule.action == 'closeDialog') {
- if (!rule.options.field) return ''
- return `${condition} this.closeDialog('${rule.options.field}');`
- }
- if (rule.action == 'triggerEvent') {
- if (!rule.options.functionName) return ''
- let params = rule.options.functionParams.trim()
- if (params) {
- try{
- params = new Function('return ' + params)()
- } catch (error) {
- return `${condition} this.triggerEvent('${rule.options.functionName}', "${params}");`
- }
- return `${condition} this.triggerEvent('${rule.options.functionName}', ${JSON.stringify(params)});`
- } else {
- return `${condition} this.triggerEvent('${rule.options.functionName}');`
- }
- }
- if (rule.action == 'js') {
- return rule.options.func
- }
- }
- const ruleToFunction = (rules) => {
- if (!rules) return ''
- if (typeof rules == 'string') {
- rules = JSON.parse(rules)
- }
- let funcs = []
- rules.forEach(item => {
- funcs.push(ruleToFuncString(item))
- })
- return funcs.join('\n')
- }
- export {
- ruleToFunction
- }
|