Browse Source

update

main
wangshaoping 6 months ago
parent
commit
e66f058414
  1. 6
      io.sc.engine.rule.frontend/package.json
  2. 4
      io.sc.engine.rule.frontend/src/views/authorization/Authorization.vue
  3. 1
      io.sc.engine.rule.frontend/src/views/dictionary/ImportSampleDialog.vue
  4. 71
      io.sc.engine.rule.frontend/src/views/dictionary/dictionary.vue
  5. 4
      io.sc.engine.rule.frontend/src/views/function/Function.vue
  6. 1
      io.sc.engine.rule.frontend/src/views/lib/ImportSampleDialog.vue
  7. 10
      io.sc.engine.rule.frontend/src/views/lib/IndicatorGrid.vue
  8. 18
      io.sc.engine.rule.frontend/src/views/lib/Lib.vue
  9. 10
      io.sc.engine.rule.frontend/src/views/lib/LibGrid.vue
  10. 4
      io.sc.engine.rule.frontend/src/views/lib/ObjectPropertiesMatcherDialog.vue
  11. 94
      io.sc.engine.rule.frontend/src/views/lib/ProcessorGrid.vue
  12. 18
      io.sc.engine.rule.frontend/src/views/lib/TestCase.vue
  13. 16
      io.sc.engine.rule.frontend/src/views/lib/TestCaseParameter.vue
  14. 6
      io.sc.engine.rule.frontend/src/views/lib/ValidatorGrid.vue
  15. 2
      io.sc.engine.rule.frontend/src/views/resources/AttachmentDialog.vue
  16. 4
      io.sc.engine.rule.frontend/src/views/resources/Resources.vue
  17. 2
      io.sc.engine.rule.frontend/src/views/resources/StartDeployWorkflowDialog.vue
  18. 2
      io.sc.engine.rule.frontend/src/views/resources/designer/Model.vue
  19. 4
      io.sc.engine.rule.frontend/src/views/resources/designer/ObjectPropertiesMatcherDialog.vue
  20. 4
      io.sc.engine.rule.frontend/src/views/resources/designer/Option.vue
  21. 16
      io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue
  22. 105
      io.sc.engine.rule.frontend/src/views/resources/designer/Processor.vue
  23. 16
      io.sc.engine.rule.frontend/src/views/resources/designer/TestCaseParameter.vue
  24. 18
      io.sc.engine.rule.frontend/src/views/resources/designer/Testcase.vue
  25. 5
      io.sc.engine.rule.frontend/src/views/resources/designer/Validator.vue
  26. 4
      io.sc.engine.rule.frontend/src/views/shared/AutoCompletionManager.ts
  27. 4
      io.sc.engine.rule.frontend/src/views/shared/MoveParameterDialog.vue
  28. 5
      io.sc.engine.rule.frontend/src/views/shared/SelectIndicatorDialog.vue
  29. 30
      io.sc.engine.rule.frontend/src/views/testcase/Testcase.vue
  30. 2
      io.sc.engine.rule.frontend/src/views/workflow/CompleteTaskDialog.vue
  31. 8
      io.sc.engine.rule.frontend/src/views/workflow/Workflow.vue
  32. 4
      io.sc.platform.core.frontend/package.json

6
io.sc.engine.rule.frontend/package.json

@ -34,7 +34,7 @@
"@types/node": "22.5.4", "@types/node": "22.5.4",
"@typescript-eslint/eslint-plugin": "8.5.0", "@typescript-eslint/eslint-plugin": "8.5.0",
"@typescript-eslint/parser": "8.5.0", "@typescript-eslint/parser": "8.5.0",
"@vue/compiler-sfc": "3.5.3", "@vue/compiler-sfc": "3.5.4",
"@webpack-cli/serve": "2.0.5", "@webpack-cli/serve": "2.0.5",
"autoprefixer": "10.4.20", "autoprefixer": "10.4.20",
"babel-loader": "9.1.3", "babel-loader": "9.1.3",
@ -65,7 +65,7 @@
"webpack-cli": "5.1.4", "webpack-cli": "5.1.4",
"webpack-dev-server": "5.1.0", "webpack-dev-server": "5.1.0",
"webpack-merge": "6.0.1", "webpack-merge": "6.0.1",
"@vue/babel-plugin-jsx": "1.2.4" "@vue/babel-plugin-jsx": "1.2.2"
}, },
"dependencies": { "dependencies": {
"@codemirror/autocomplete": "6.18.0", "@codemirror/autocomplete": "6.18.0",
@ -95,7 +95,7 @@
"platform-core": "8.1.323", "platform-core": "8.1.323",
"quasar": "2.16.11", "quasar": "2.16.11",
"tailwindcss": "3.4.10", "tailwindcss": "3.4.10",
"vue": "3.4.38", "vue": "3.5.4",
"vue-dompurify-html": "5.1.0", "vue-dompurify-html": "5.1.0",
"vue-i18n": "10.0.0", "vue-i18n": "10.0.0",
"vue-router": "4.4.3", "vue-router": "4.4.3",

4
io.sc.engine.rule.frontend/src/views/authorization/Authorization.vue

@ -45,8 +45,8 @@
}, },
}" }"
@row-click=" @row-click="
(evt, row, index) => { (args) => {
roleIdRef = row.id; roleIdRef = args.row.id;
resourceTreeGridRef?.refresh(); resourceTreeGridRef?.refresh();
} }
" "

1
io.sc.engine.rule.frontend/src/views/dictionary/ImportSampleDialog.vue

@ -25,7 +25,6 @@
click: (arg) => { click: (arg) => {
if (arg.tickeds && arg.tickeds.length > 0) { if (arg.tickeds && arg.tickeds.length > 0) {
const ids = Tools.extractProperties(arg.tickeds, 'id'); const ids = Tools.extractProperties(arg.tickeds, 'id');
console.log(ids);
DialogManager.confirm($t('re.dictionary.importSample.grid.toolbar.import.tip'), () => { DialogManager.confirm($t('re.dictionary.importSample.grid.toolbar.import.tip'), () => {
axios.post(Environment.apiContextPath('/api/re/dictionary/createExample'), ids).then(() => { axios.post(Environment.apiContextPath('/api/re/dictionary/createExample'), ids).then(() => {
close(); close();

71
io.sc.engine.rule.frontend/src/views/dictionary/dictionary.vue

@ -255,8 +255,8 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'parent', label: $t('parent'), type: 'w-text', hidden: true }, { name: 'parent', label: $t('parent'), type: 'w-text', showIf: false },
{ name: 'type', label: $t('type'), type: 'w-text', hidden: true }, { name: 'type', label: $t('type'), type: 'w-text', showIf: false },
{ {
name: 'code', name: 'code',
label: $t('code'), label: $t('code'),
@ -266,7 +266,7 @@
return type !== 'FOLDER'; return type !== 'FOLDER';
}, },
}, },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
{ {
name: 'javaClassName', name: 'javaClassName',
@ -301,14 +301,13 @@
}, },
}" }"
@row-click=" @row-click="
(evt, row, index) => { (args) => {
currentSelectedDictionaryIdRef = row.id; currentSelectedDictionaryIdRef = args.row.id;
console.log(currentSelectedDictionaryIdRef); if (args.row.type === 'UD_JAVA_CLASS') {
if (row.type === 'UD_JAVA_CLASS') {
divStatus.isShowFieldGrid = true; divStatus.isShowFieldGrid = true;
divStatus.isShowEnumGrid = false; divStatus.isShowEnumGrid = false;
fieldGridRef?.refresh(); fieldGridRef?.refresh();
} else if (row.type === 'ENUM') { } else if (args.row.type === 'ENUM') {
divStatus.isShowFieldGrid = false; divStatus.isShowFieldGrid = false;
divStatus.isShowEnumGrid = true; divStatus.isShowEnumGrid = true;
enumGridRef?.refresh(); enumGridRef?.refresh();
@ -353,7 +352,7 @@
:fetch-data-url="Environment.apiContextPath('/api/re/dictionary/userDefinedJavaClassField?dictionary=' + currentSelectedDictionaryIdRef)" :fetch-data-url="Environment.apiContextPath('/api/re/dictionary/userDefinedJavaClassField?dictionary=' + currentSelectedDictionaryIdRef)"
:data-url="Environment.apiContextPath('/api/re/dictionary/userDefinedJavaClassField')" :data-url="Environment.apiContextPath('/api/re/dictionary/userDefinedJavaClassField')"
:pageable="false" :pageable="false"
sort-by="order" :sort-by="['order']"
:query-form-cols-num="3" :query-form-cols-num="3"
:query-form-fields="[ :query-form-fields="[
{ name: 'code', label: $t('code'), type: 'w-text', clearable: true }, { name: 'code', label: $t('code'), type: 'w-text', clearable: true },
@ -400,14 +399,14 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'dictionary', label: $t('dictionary'), type: 'w-text', hidden: true, defaultValue: currentSelectedDictionaryIdRef }, { name: 'dictionary', label: $t('dictionary'), type: 'w-text', showIf: false, defaultValue: currentSelectedDictionaryIdRef },
{ name: 'code', label: $t('code'), type: 'w-text' }, { name: 'code', label: $t('code'), type: 'w-text' },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
{ {
name: 'valueType', name: 'valueType',
label: $t('re.dictionary.field.grid.entity.valueType'), label: $t('re.dictionary.field.grid.entity.valueType'),
required: true, requiredIf: true,
type: 'w-select', type: 'w-select',
options: ValueTypeList, options: ValueTypeList,
'onUpdate:modelValue': (value) => { 'onUpdate:modelValue': (value) => {
@ -415,9 +414,9 @@
axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => { axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => {
const versions = response.data; const versions = response.data;
const options = []; const options = [];
for (const version of versions) { versions.forEach((version) => {
options.push({ label: version.key, value: version.value }); options.push({ label: version.key, value: version.value });
} });
valueTypeVersionOptionsRef = options; valueTypeVersionOptionsRef = options;
}); });
}, },
@ -455,9 +454,8 @@
lang: 'java', lang: 'java',
rows: 3, rows: 3,
placeholder: true, placeholder: true,
autoCompletion: true, autoCompletion: autoCompletion,
autoCompletionOptions: autoCompletionOptionsRef, userDefinedFunctions: userDefinedFunctionsRef,
extAutoCompletionOptions: GroovyFunctions,
}, },
{ name: 'order', label: $t('order'), type: 'w-number' }, { name: 'order', label: $t('order'), type: 'w-number' },
], ],
@ -493,14 +491,14 @@
.then((response) => { .then((response) => {
const names = []; const names = [];
if (response.data?.parentParameterNames && response.data?.parentParameterNames.length > 0) { if (response.data?.parentParameterNames && response.data?.parentParameterNames.length > 0) {
for (const item of response.data?.parentParameterNames) { response.data.parentParameterNames.forEach((item) => {
names.push({ label: item, type: 'variable', apply: '${' + item + '}' }); names.push({ label: item, type: 'variable', apply: '${' + item + '}' });
} });
} }
if (response.data?.parameterNames && response.data?.parameterNames.length > 0) { if (response.data?.parameterNames && response.data?.parameterNames.length > 0) {
for (const item of response.data?.parameterNames) { response.data.parameterNames.forEach((item) => {
names.push({ label: item, type: 'variable', apply: '${' + item + '}' }); names.push({ label: item, type: 'variable', apply: '${' + item + '}' });
} });
} }
autoCompletionOptionsRef = names; autoCompletionOptionsRef = names;
}); });
@ -525,9 +523,9 @@
axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => { axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => {
const versions = response.data; const versions = response.data;
const options = []; const options = [];
for (const version of versions) { versions.forEach((version) => {
options.push({ label: version.key, value: version.value }); options.push({ label: version.key, value: version.value });
} });
valueTypeVersionOptionsRef = options; valueTypeVersionOptionsRef = options;
}); });
} }
@ -613,9 +611,9 @@ import { axios, Environment, Formater, EnumTools, DialogManager, Downloader } fr
import UserDefinedJavaClassDictionaryJsonDialog from './UserDefinedJavaClassDictionaryJsonDialog.vue'; import UserDefinedJavaClassDictionaryJsonDialog from './UserDefinedJavaClassDictionaryJsonDialog.vue';
import ImportDialog from './ImportDialog.vue'; import ImportDialog from './ImportDialog.vue';
import ImportSampleDialog from './ImportSampleDialog.vue'; import ImportSampleDialog from './ImportSampleDialog.vue';
import GroovyFunctions from '@/views/resources/designer/GroovyFunctions';
import { PlaceHolder } from '@/utils/PlaceHolder'; import { PlaceHolder } from '@/utils/PlaceHolder';
import ResourceDeployStatusTag from '@/views/shared/ResourceDeployStatusTag.vue'; import ResourceDeployStatusTag from '@/views/shared/ResourceDeployStatusTag.vue';
import { AutoCompletionManager } from '@/views/shared/AutoCompletionManager';
const treeGridRef = ref(); const treeGridRef = ref();
const fieldGridRef = ref(); const fieldGridRef = ref();
@ -625,7 +623,13 @@ const importDialogRef = ref();
const importSampleDialogRef = ref(); const importSampleDialogRef = ref();
const currentSelectedDictionaryIdRef = ref(''); const currentSelectedDictionaryIdRef = ref('');
const valueTypeVersionOptionsRef = ref(); const valueTypeVersionOptionsRef = ref();
const autoCompletionOptionsRef = ref(); const autoCompletionManager = new AutoCompletionManager();
const userDefinedFunctionsRef = ref();
const autoCompletion = (context) => {
return autoCompletionManager.autoCompletion(context);
};
const divStatus = reactive({ const divStatus = reactive({
isShowFieldGrid: false, isShowFieldGrid: false,
isShowEnumGrid: false, isShowEnumGrid: false,
@ -638,9 +642,22 @@ const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
ValueTypeList = []; ValueTypeList = [];
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
ValueTypeList.push({ value: item.key, label: item.value }); ValueTypeList.push({ value: item.key, label: item.value });
} });
} }
axios.get(Environment.apiContextPath('/api/re/function?pageable=false')).then((response) => {
const options = [];
const items = response.data?.content;
if (items && items.length > 0) {
items.forEach((item) => {
if (item.enable) {
options.push(item);
}
});
}
userDefinedFunctionsRef.value = options;
});
</script> </script>

4
io.sc.engine.rule.frontend/src/views/function/Function.vue

@ -80,8 +80,8 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'signature', label: $t('re.function.grid.entity.signature'), type: 'w-text', required: true }, { name: 'signature', label: $t('re.function.grid.entity.signature'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
{ {
name: 'mathXml', name: 'mathXml',

1
io.sc.engine.rule.frontend/src/views/lib/ImportSampleDialog.vue

@ -25,7 +25,6 @@
click: (arg) => { click: (arg) => {
if (arg.tickeds && arg.tickeds.length > 0) { if (arg.tickeds && arg.tickeds.length > 0) {
const ids = Tools.extractProperties(arg.tickeds, 'id'); const ids = Tools.extractProperties(arg.tickeds, 'id');
console.log(ids);
DialogManager.confirm($t('re.dictionary.importSample.grid.toolbar.import.tip'), () => { DialogManager.confirm($t('re.dictionary.importSample.grid.toolbar.import.tip'), () => {
axios.post(Environment.apiContextPath('/api/re/dictionary/createExample'), ids).then(() => { axios.post(Environment.apiContextPath('/api/re/dictionary/createExample'), ids).then(() => {
close(); close();

10
io.sc.engine.rule.frontend/src/views/lib/IndicatorGrid.vue

@ -135,7 +135,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'lib', label: $t('lib'), type: 'w-text', defaultValue: lib.id, hidden: true }, { name: 'lib', label: $t('lib'), type: 'w-text', defaultValue: lib.id, showIf: false },
{ name: 'name', label: $t('name'), type: 'w-text' }, { name: 'name', label: $t('name'), type: 'w-text' },
{ name: 'type', label: $t('type'), type: 'w-select', options: Options.enum(Enums.IndicatorType) }, { name: 'type', label: $t('type'), type: 'w-select', options: Options.enum(Enums.IndicatorType) },
{ {
@ -147,9 +147,9 @@
axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + value)).then((response) => { axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + value)).then((response) => {
const data = response.data; const data = response.data;
const options = []; const options = [];
for (const item of data) { data.forEach((item) => {
options.push({ label: item.key, value: item.value }); options.push({ label: item.key, value: item.value });
} });
valueTypeVersionRef = options; valueTypeVersionRef = options;
}); });
}, },
@ -301,9 +301,9 @@ const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
ValueTypeList = []; ValueTypeList = [];
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
ValueTypeList.push({ value: item.key, label: item.value }); ValueTypeList.push({ value: item.key, label: item.value });
} });
} }
</script> </script>

18
io.sc.engine.rule.frontend/src/views/lib/Lib.vue

@ -4,9 +4,9 @@
<LibGrid <LibGrid
ref="libTreeGridRef" ref="libTreeGridRef"
@row-click=" @row-click="
(evt, row, index) => { (args) => {
if (row.type === 'INDICATOR') { if (args.row.type === 'INDICATOR') {
currentSelectedLibRef = row; currentSelectedLibRef = args.row;
readOnlyRef = currentSelectedLibRef.status !== 'SKETCH'; readOnlyRef = currentSelectedLibRef.status !== 'SKETCH';
showStatus.detail = true; showStatus.detail = true;
indicatorGridRef?.refresh(); indicatorGridRef?.refresh();
@ -39,13 +39,13 @@
:lib="currentSelectedLibRef" :lib="currentSelectedLibRef"
:read-only="readOnlyRef" :read-only="readOnlyRef"
@row-click=" @row-click="
(evt, row, index) => { (args) => {
currentSelectedIndicatorRef = row; currentSelectedIndicatorRef = args.row;
if (row.type === 'INTERFACE') { if (args.row.type === 'INTERFACE') {
showStatus.validator = true; showStatus.validator = true;
showStatus.processor = false; showStatus.processor = false;
validatorGridRef?.refresh(); validatorGridRef?.refresh();
} else if (row.type === 'INDICATOR') { } else if (args.row.type === 'INDICATOR') {
showStatus.validator = false; showStatus.validator = false;
showStatus.processor = true; showStatus.processor = true;
processorGridRef?.refresh(); processorGridRef?.refresh();
@ -86,8 +86,8 @@
ref="testcaseGridRef" ref="testcaseGridRef"
:lib="currentSelectedLibRef" :lib="currentSelectedLibRef"
@row-click=" @row-click="
(evt, row, index) => { (args) => {
currentSelectedTestCaseRef = row; currentSelectedTestCaseRef = args.row;
testcaseParameterGridRef?.refresh(); testcaseParameterGridRef?.refresh();
} }
" "

10
io.sc.engine.rule.frontend/src/views/lib/LibGrid.vue

@ -224,8 +224,8 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'parent', label: $t('parent'), type: 'w-text', hidden: true }, { name: 'parent', label: $t('parent'), type: 'w-text', showIf: false },
{ name: 'type', label: $t('type'), type: 'w-text', hidden: true }, { name: 'type', label: $t('type'), type: 'w-text', showIf: false },
{ {
name: 'code', name: 'code',
label: $t('code'), label: $t('code'),
@ -235,7 +235,7 @@
return type !== 'FOLDER'; return type !== 'FOLDER';
}, },
}, },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
], ],
}, },
@ -296,9 +296,9 @@ const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
ValueTypeList.splice(0, ValueTypeList.length); ValueTypeList.splice(0, ValueTypeList.length);
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
ValueTypeList.push({ value: item.key, label: item.value }); ValueTypeList.push({ value: item.key, label: item.value });
} });
} }
</script> </script>

4
io.sc.engine.rule.frontend/src/views/lib/ObjectPropertiesMatcherDialog.vue

@ -51,7 +51,7 @@ const open = (objectProperties) => {
dialogRef.value.show(); dialogRef.value.show();
axios.get(Environment.apiContextPath('/api/re/indicator/findIndicatorsByIndicatorId?indicatorId=' + props.indicator.id)).then((response) => { axios.get(Environment.apiContextPath('/api/re/indicator/findIndicatorsByIndicatorId?indicatorId=' + props.indicator.id)).then((response) => {
const options = []; const options = [];
for (const item of response.data) { response.data.forEach((item) => {
const valueType = item.valueType; const valueType = item.valueType;
if ( if (
valueType !== 'java.lang.Boolean' && valueType !== 'java.lang.Boolean' &&
@ -69,7 +69,7 @@ const open = (objectProperties) => {
) { ) {
options.push({ value: item.id, label: item.name }); options.push({ value: item.id, label: item.name });
} }
} });
indicatorOptionsRef.value = options; indicatorOptionsRef.value = options;
}); });
}; };

94
io.sc.engine.rule.frontend/src/views/lib/ProcessorGrid.vue

@ -192,13 +192,12 @@
if (objs) { if (objs) {
str += `<div class='border border-b-0 overflow-auto' style='max-height:100px'>`; str += `<div class='border border-b-0 overflow-auto' style='max-height:100px'>`;
str += `<table width='100%' height='100%'>`; str += `<table width='100%' height='100%'>`;
for (let i = 0; i < objs.length; i++) { objs.forEach((obj) => {
const obj = objs[i];
str += '<tr>'; str += '<tr>';
str += ` <td width='30%'>` + obj.name + `</td>`; str += ` <td width='30%'>` + obj.name + `</td>`;
str += ` <td width='70%'><span>` + ('' + PlaceHolder.replace(obj.expression)) + '</span></td>'; str += ` <td width='70%'><span>` + ('' + PlaceHolder.replace(obj.expression)) + '</span></td>';
str += '</tr>'; str += '</tr>';
} });
str += '</table>'; str += '</table>';
str += `</div>`; str += `</div>`;
} }
@ -247,8 +246,7 @@
if (objs) { if (objs) {
let str = `<div class='border border-b-0'>`; let str = `<div class='border border-b-0'>`;
str += `<table width='100%'>`; str += `<table width='100%'>`;
for (let i = 0; i < objs.length; i++) { objs.forEach((obj) => {
const obj = objs[i];
str += '<tr>'; str += '<tr>';
if (i == 0) { if (i == 0) {
str += ' <td rowspan=' + objs.length + '>' + PlaceHolder.replace(row.numberRangeVar) + '</td>'; str += ' <td rowspan=' + objs.length + '>' + PlaceHolder.replace(row.numberRangeVar) + '</td>';
@ -256,7 +254,7 @@
str += ' <td>' + Tools.generateIntervalRange(obj.minIncluded, obj.min, obj.max, obj.maxIncluded) + '</td>'; str += ' <td>' + Tools.generateIntervalRange(obj.minIncluded, obj.min, obj.max, obj.maxIncluded) + '</td>';
str += ' <td>' + ('' + PlaceHolder.replace('' + obj.value)) + '</td>'; str += ' <td>' + ('' + PlaceHolder.replace('' + obj.value)) + '</td>';
str += '</tr>'; str += '</tr>';
} });
str += '</table>'; str += '</table>';
str += '</div>'; str += '</div>';
return str; return str;
@ -267,13 +265,12 @@
if (objs) { if (objs) {
let str = `<div class='border border-b-0'>`; let str = `<div class='border border-b-0'>`;
str += `<table width='100%'>`; str += `<table width='100%'>`;
for (let i = 0; i < objs.length; i++) { objs.forEach((obj) => {
const obj = objs[i];
str += '<tr>'; str += '<tr>';
str += ' <td>' + PlaceHolder.replace(obj.condition) + '</td>'; str += ' <td>' + PlaceHolder.replace(obj.condition) + '</td>';
str += ' <td><span>' + ('' + PlaceHolder.replace(obj.value)) + '</span></td>'; str += ' <td><span>' + ('' + PlaceHolder.replace(obj.value)) + '</span></td>';
str += '</tr>'; str += '</tr>';
} });
str += '</table>'; str += '</table>';
str += `</div>`; str += `</div>`;
return str; return str;
@ -303,10 +300,10 @@
form: { form: {
colsNum: 5, colsNum: 5,
fields: [ fields: [
{ colSpan: 5, name: 'indicator', label: 'indicator', type: 'w-text', defaultValue: indicator.id, hidden: true }, { colSpan: 5, name: 'indicator', label: 'indicator', type: 'w-text', defaultValue: indicator.id, showIf: false },
{ colSpan: 5, name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { colSpan: 5, name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ colSpan: 5, name: 'order', label: $t('order'), type: 'w-number', hidden: true }, { colSpan: 5, name: 'order', label: $t('order'), type: 'w-number', showIf: false },
{ colSpan: 5, name: 'type', label: $t('type'), type: 'w-text', hidden: true }, { colSpan: 5, name: 'type', label: $t('type'), type: 'w-text', showIf: false },
{ {
colSpan: 5, colSpan: 5,
name: 'objectCondition', name: 'objectCondition',
@ -350,13 +347,13 @@
const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); const grid = gridRef.getEditorForm().getFieldComponent('objectProperties');
const localData = grid.getLocalData(); const localData = grid.getLocalData();
const objectProperties = []; const objectProperties = [];
for (const item of localData) { localData.forEach((item) => {
objectProperties.push({ objectProperties.push({
code: item.code, code: item.code,
name: item.name, name: item.name,
expression: item.expression, expression: item.expression,
}); });
} });
objectPropertiesMatcherDialogRef.open(objectProperties); objectPropertiesMatcherDialogRef.open(objectProperties);
}, },
}, },
@ -367,10 +364,10 @@
click: (arg) => { click: (arg) => {
const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); const grid = gridRef.getEditorForm().getFieldComponent('objectProperties');
const selecteds = arg.selecteds; const selecteds = arg.selecteds;
for (const selected of selecteds) { selecteds.forEach((selected) => {
selected.expression = ''; selected.expression = '';
grid.replaceRow(selected); grid.replaceRow(selected);
} });
}, },
}, },
'separator', 'separator',
@ -385,16 +382,16 @@
click: (arg) => { click: (arg) => {
const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); const grid = gridRef.getEditorForm().getFieldComponent('objectProperties');
const rows = grid.getLocalData(); const rows = grid.getLocalData();
for (const row of rows) { rows.forEach((row) => {
row.expression = ''; row.expression = '';
} });
grid.setLocalData(rows); grid.setLocalData(rows);
}, },
}, },
], ],
primaryKey: 'code', primaryKey: 'code',
columns: [ columns: [
{ name: 'code', label: 'code', hidden: true }, { name: 'code', label: 'code', showIf: false },
{ {
width: 300, width: 300,
name: 'name', name: 'name',
@ -428,7 +425,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'code', label: 'code', hidden: true }, { name: 'code', label: 'code', showIf: false },
{ {
name: 'expression', name: 'expression',
label: $t('expression'), label: $t('expression'),
@ -631,7 +628,7 @@
], ],
primaryKey: 'uuid', primaryKey: 'uuid',
columns: [ columns: [
{ width: 200, name: 'uuid', label: 'uuid', hidden: true }, { width: 200, name: 'uuid', label: 'uuid', showIf: false },
{ {
width: 60, width: 60,
name: 'minIncluded', name: 'minIncluded',
@ -671,7 +668,7 @@
form: { form: {
colsNum: 4, colsNum: 4,
fields: [ fields: [
{ name: 'uuid', label: 'uuid', hidden: true, colSpan: 4 }, { name: 'uuid', label: 'uuid', showIf: false, colSpan: 4 },
{ name: 'min', label: $t('minValue'), type: 'w-text', colSpan: 3 }, { name: 'min', label: $t('minValue'), type: 'w-text', colSpan: 3 },
{ name: 'minIncluded', label: $t('include'), type: 'w-checkbox' }, { name: 'minIncluded', label: $t('include'), type: 'w-checkbox' },
{ name: 'max', label: $t('maxValue'), type: 'w-text', colSpan: 3 }, { name: 'max', label: $t('maxValue'), type: 'w-text', colSpan: 3 },
@ -738,7 +735,7 @@
], ],
primaryKey: 'uuid', primaryKey: 'uuid',
columns: [ columns: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
name: 'condition', name: 'condition',
label: $t('condition'), label: $t('condition'),
@ -764,7 +761,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
name: 'condition', name: 'condition',
label: $t('condition'), label: $t('condition'),
@ -874,9 +871,9 @@
const regex = /\$\{[\u0000-\uFFFF]+?\}/g; const regex = /\$\{[\u0000-\uFFFF]+?\}/g;
const array = sql.match(regex); const array = sql.match(regex);
const rows = []; const rows = [];
for (const item of array) { array.forEach((item) => {
rows.push({ uuid: Tools.uuid(), name: item, value: '' }); rows.push({ uuid: Tools.uuid(), name: item, value: '' });
} });
const grid = gridRef.getEditorForm().getFieldComponent('sqlParameterValues'); const grid = gridRef.getEditorForm().getFieldComponent('sqlParameterValues');
grid.setLocalData(rows); grid.setLocalData(rows);
}, },
@ -905,7 +902,7 @@
], ],
primaryKey: 'uuid', primaryKey: 'uuid',
columns: [ columns: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
width: '50%', width: '50%',
name: 'name', name: 'name',
@ -930,7 +927,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
name: 'name', name: 'name',
label: $t('name'), label: $t('name'),
@ -995,9 +992,9 @@
}) })
.then((response) => { .then((response) => {
const fieldMetaDatas = response.data.fieldMetaDatas; const fieldMetaDatas = response.data.fieldMetaDatas;
for (const field of fieldMetaDatas) { fieldMetaDatas.forEach((field) => {
field.value = field.name; field.value = field.name;
} });
const data = response.data.data; const data = response.data.data;
const grid = gridRef.getEditorForm().getFieldComponent('sqlQueryResult'); const grid = gridRef.getEditorForm().getFieldComponent('sqlQueryResult');
sqlQueryResultFieldsRef = fieldMetaDatas; sqlQueryResultFieldsRef = fieldMetaDatas;
@ -1052,7 +1049,7 @@
], ],
primaryKey: 'uuid', primaryKey: 'uuid',
columns: [ columns: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
width: '50%', width: '50%',
name: 'field', name: 'field',
@ -1077,7 +1074,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
name: 'field', name: 'field',
label: $t('fieldName'), label: $t('fieldName'),
@ -1155,19 +1152,19 @@
const grid = form.getFieldComponent('objectProperties'); const grid = form.getFieldComponent('objectProperties');
const localData = grid.getLocalData(); const localData = grid.getLocalData();
const objectProperties = []; const objectProperties = [];
for (const item of localData) { localData.forEach((item) => {
objectProperties.push({ objectProperties.push({
code: item.code, code: item.code,
name: item.name, name: item.name,
expression: item.expression, expression: item.expression,
}); });
} });
data.objectProperties = Tools.object2Json(objectProperties); data.objectProperties = Tools.object2Json(objectProperties);
} else if ('NUMBER_RANGE' === data.type) { } else if ('NUMBER_RANGE' === data.type) {
const grid = form.getFieldComponent('numberRange'); const grid = form.getFieldComponent('numberRange');
const localData = grid.getLocalData(); const localData = grid.getLocalData();
const ranges = []; const ranges = [];
for (const item of localData) { localData.forEach((item) => {
ranges.push({ ranges.push({
uuid: item.uuid, uuid: item.uuid,
minIncluded: item.minIncluded, minIncluded: item.minIncluded,
@ -1176,49 +1173,50 @@
maxIncluded: item.maxIncluded, maxIncluded: item.maxIncluded,
value: item.value, value: item.value,
}); });
} });
data.numberRange = Tools.object2Json(ranges); data.numberRange = Tools.object2Json(ranges);
} else if ('CONDITION_RANGE' === data.type) { } else if ('CONDITION_RANGE' === data.type) {
const grid = form.getFieldComponent('conditionRange'); const grid = form.getFieldComponent('conditionRange');
const localData = grid.getLocalData(); const localData = grid.getLocalData();
const ranges = []; const ranges = [];
for (const item of localData) { localData.forEach((item) => {
ranges.push({ ranges.push({
uuid: item.uuid, uuid: item.uuid,
condition: item.condition, condition: item.condition,
value: item.value, value: item.value,
}); });
} });
data.conditionRange = Tools.object2Json(ranges); data.conditionRange = Tools.object2Json(ranges);
} else if ('SQL' === data.type) { } else if ('SQL' === data.type) {
const sqlParameterValuesGrid = form.getFieldComponent('sqlParameterValues'); const sqlParameterValuesGrid = form.getFieldComponent('sqlParameterValues');
const sqlParameterValuesLocalData = sqlParameterValuesGrid.getLocalData(); const sqlParameterValuesLocalData = sqlParameterValuesGrid.getLocalData();
const sqlParameterValues = []; const sqlParameterValues = [];
for (const item of sqlParameterValuesLocalData) { sqlParameterValuesLocalData.forEach((item) => {
sqlParameterValues.push({ sqlParameterValues.push({
uuid: item.uuid, uuid: item.uuid,
name: item.name, name: item.name,
value: item.value, value: item.value,
}); });
} });
data.sqlParameterValues = Tools.object2Json(sqlParameterValues); data.sqlParameterValues = Tools.object2Json(sqlParameterValues);
const sqlFieldMappingGrid = form.getFieldComponent('sqlFieldMapping'); const sqlFieldMappingGrid = form.getFieldComponent('sqlFieldMapping');
const sqlFieldMappingLocalData = sqlFieldMappingGrid.getLocalData(); const sqlFieldMappingLocalData = sqlFieldMappingGrid.getLocalData();
const sqlFieldMapping = []; const sqlFieldMapping = [];
for (const item of sqlFieldMappingLocalData) { sqlFieldMappingLocalData.forEach((item) => {
sqlFieldMapping.push({ sqlFieldMapping.push({
uuid: item.uuid, uuid: item.uuid,
field: item.field, field: item.field,
parameter: item.parameter, parameter: item.parameter,
}); });
} });
data.sqlFieldMapping = Tools.object2Json(sqlFieldMapping); data.sqlFieldMapping = Tools.object2Json(sqlFieldMapping);
} }
} }
" "
@after-editor-open=" @after-editor-open="
(row) => { (args) => {
const row = args.data;
// //
axios.get(Environment.apiContextPath('/api/re/common/listParameterAndValueTypeByIndicatorId/' + indicator.id)).then((response) => { axios.get(Environment.apiContextPath('/api/re/common/listParameterAndValueTypeByIndicatorId/' + indicator.id)).then((response) => {
autoCompletionManager.setParameters(response.data.parameters); autoCompletionManager.setParameters(response.data.parameters);
@ -1242,9 +1240,9 @@
// //
axios.get(Environment.apiContextPath('api/re/indicator/findIndicatorsByIndicatorId?indicatorId=' + indicator.id)).then((response) => { axios.get(Environment.apiContextPath('api/re/indicator/findIndicatorsByIndicatorId?indicatorId=' + indicator.id)).then((response) => {
const options = []; const options = [];
for (const indicator of response.data) { response.data.forEach((indicator) => {
options.push({ label: indicator.name, value: '${' + indicator.name + '}' }); options.push({ label: indicator.name, value: '${' + indicator.name + '}' });
} });
indicatorOptionsRef = options; indicatorOptionsRef = options;
}); });
@ -1331,11 +1329,11 @@ axios.get(Environment.apiContextPath('/api/re/function?pageable=false')).then((r
const options = []; const options = [];
const items = response.data?.content; const items = response.data?.content;
if (items && items.length > 0) { if (items && items.length > 0) {
for (const item of items) { items.forEach((item) => {
if (item.enable) { if (item.enable) {
options.push(item); options.push(item);
} }
} });
} }
userDefinedFunctionsRef.value = options; userDefinedFunctionsRef.value = options;
}); });

18
io.sc.engine.rule.frontend/src/views/lib/TestCase.vue

@ -58,8 +58,8 @@
'export', 'export',
]" ]"
:columns="[ :columns="[
{ width: 50, name: 'order', label: $t('order'), hidden: true }, { width: 50, name: 'order', label: $t('order'), showIf: false },
{ width: 100, name: 'id', label: $t('id'), hidden: true }, { width: 100, name: 'id', label: $t('id'), showIf: false },
{ {
width: 80, width: 80,
name: 'testResult', name: 'testResult',
@ -80,11 +80,11 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'order', label: $t('order'), type: 'w-text', hidden: true }, { name: 'order', label: $t('order'), type: 'w-text', showIf: false },
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ name: 'ownerType', label: $t('ownerType'), type: 'w-text', defaultValue: 'LIB', hidden: true }, { name: 'ownerType', label: $t('ownerType'), type: 'w-text', defaultValue: 'LIB', showIf: false },
{ name: 'owner', label: $t('owner'), type: 'w-text', defaultValue: lib.id, hidden: true }, { name: 'owner', label: $t('owner'), type: 'w-text', defaultValue: lib.id, showIf: false },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
], ],
}, },
@ -146,9 +146,9 @@ const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
ValueTypeList = []; ValueTypeList = [];
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
ValueTypeList.push({ value: item.key, label: item.value }); ValueTypeList.push({ value: item.key, label: item.value });
} });
} }
</script> </script>

16
io.sc.engine.rule.frontend/src/views/lib/TestCaseParameter.vue

@ -87,12 +87,12 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'testCase', label: $t('testCase'), type: 'w-text', defaultValue: testCase.id, hidden: true }, { name: 'testCase', label: $t('testCase'), type: 'w-text', defaultValue: testCase.id, showIf: false },
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ name: 'source', label: $t('source'), type: 'w-text', hidden: true }, { name: 'source', label: $t('source'), type: 'w-text', showIf: false },
{ name: 'parameterType', label: $t('parameterType'), type: 'w-text', hidden: true }, { name: 'parameterType', label: $t('parameterType'), type: 'w-text', showIf: false },
{ name: 'scoreCardVarType', label: $t('scoreCardVarType'), type: 'w-text', hidden: true }, { name: 'scoreCardVarType', label: $t('scoreCardVarType'), type: 'w-text', showIf: false },
{ name: 'indicatorType', label: $t('indicatorType'), type: 'w-text', hidden: true }, { name: 'indicatorType', label: $t('indicatorType'), type: 'w-text', showIf: false },
{ {
name: 'inputValue', name: 'inputValue',
label: $t('re.resources.designer.testCaseParameter.grid.entity.inputValue'), label: $t('re.resources.designer.testCaseParameter.grid.entity.inputValue'),
@ -202,8 +202,8 @@ let ValueTypeMap = {};
const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/getAllDictionaryMap')); const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/getAllDictionaryMap'));
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
} });
} }
</script> </script>

6
io.sc.engine.rule.frontend/src/views/lib/ValidatorGrid.vue

@ -43,8 +43,8 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'indicator', label: 'indicator', type: 'w-text', defaultValue: indicator.id, hidden: true }, { name: 'indicator', label: 'indicator', type: 'w-text', defaultValue: indicator.id, showIf: false },
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ {
name: 'description', name: 'description',
label: $t('description'), label: $t('description'),
@ -54,7 +54,7 @@
name: 'type', name: 'type',
label: $t('type'), label: $t('type'),
type: 'w-select', type: 'w-select',
required: true, requiredIf: true,
options: options:
ValueTypeAndValidatorTypeMapping[ValueTypeAndValidatorTypeMapping[indicator.valueType] == null ? 'java.lang.Object' : indicator.valueType], ValueTypeAndValidatorTypeMapping[ValueTypeAndValidatorTypeMapping[indicator.valueType] == null ? 'java.lang.Object' : indicator.valueType],
}, },

2
io.sc.engine.rule.frontend/src/views/resources/AttachmentDialog.vue

@ -37,7 +37,7 @@
:fetch-data-url="fetchDataUrl + '?' + foreignKey + '=' + foreignValue" :fetch-data-url="fetchDataUrl + '?' + foreignKey + '=' + foreignValue"
:data-url="dataUrl" :data-url="dataUrl"
:columns="[ :columns="[
{ width: 120, name: 'id', label: $t('id'), hidden: true }, { width: 120, name: 'id', label: $t('id'), showIf: false },
{ {
width: '100%', width: '100%',
name: 'name', name: 'name',

4
io.sc.engine.rule.frontend/src/views/resources/Resources.vue

@ -290,7 +290,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'type', label: $t('type'), type: 'w-text', hidden: true }, { name: 'type', label: $t('type'), type: 'w-text', showIf: false },
{ {
name: 'code', name: 'code',
label: $t('code'), label: $t('code'),
@ -300,7 +300,7 @@
return type === 'MODEL' || type === 'SCORE_CARD'; return type === 'MODEL' || type === 'SCORE_CARD';
}, },
}, },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
{ {
name: 'imports', name: 'imports',

2
io.sc.engine.rule.frontend/src/views/resources/StartDeployWorkflowDialog.vue

@ -18,7 +18,7 @@
<w-form <w-form
ref="formRef" ref="formRef"
:cols-num="1" :cols-num="1"
:fields="[{ name: 'treatment', label: $t('re.workflow.dialog.entity.treatment'), type: 'w-textarea', rows: 5, required: true }]" :fields="[{ name: 'treatment', label: $t('re.workflow.dialog.entity.treatment'), type: 'w-textarea', rows: 5, requiredIf: true }]"
class="p-2" class="p-2"
></w-form> ></w-form>
<w-select-assignee-dialog ref="selectAssigneeDialogRef" @assignee-selected="assigneeSelected"></w-select-assignee-dialog> <w-select-assignee-dialog ref="selectAssigneeDialogRef" @assignee-selected="assigneeSelected"></w-select-assignee-dialog>

2
io.sc.engine.rule.frontend/src/views/resources/designer/Model.vue

@ -135,7 +135,7 @@
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'code', label: $t('code'), type: 'w-text' }, { name: 'code', label: $t('code'), type: 'w-text' },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ {
name: 'category', name: 'category',
label: $t('category'), label: $t('category'),

4
io.sc.engine.rule.frontend/src/views/resources/designer/ObjectPropertiesMatcherDialog.vue

@ -51,7 +51,7 @@ const open = (objectProperties) => {
dialogRef.value.show(); dialogRef.value.show();
axios.get(Environment.apiContextPath('/api/re/model/parameter/findParametersByParameterId?parameterId=' + props.parameter.id)).then((response) => { axios.get(Environment.apiContextPath('/api/re/model/parameter/findParametersByParameterId?parameterId=' + props.parameter.id)).then((response) => {
const options = []; const options = [];
for (const item of response.data) { response.data.forEach((item) => {
const valueType = item.valueType; const valueType = item.valueType;
if ( if (
valueType !== 'java.lang.Boolean' && valueType !== 'java.lang.Boolean' &&
@ -69,7 +69,7 @@ const open = (objectProperties) => {
) { ) {
options.push({ value: item.id, label: item.name }); options.push({ value: item.id, label: item.name });
} }
} });
parameterOptionsRef.value = options; parameterOptionsRef.value = options;
}); });
}; };

4
io.sc.engine.rule.frontend/src/views/resources/designer/Option.vue

@ -60,8 +60,8 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'parameter', label: 'parameter', type: 'w-text', defaultValue: parameter.id, hidden: true }, { name: 'parameter', label: 'parameter', type: 'w-text', defaultValue: parameter.id, showIf: false },
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ {
name: 'inputValue', name: 'inputValue',
label: $t('re.resources.designer.option.grid.entity.inputValue'), label: $t('re.resources.designer.option.grid.entity.inputValue'),

16
io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue

@ -208,9 +208,9 @@
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'type', label: $t('type'), type: 'w-select', options: Options.enum(Enums.ParameterType), 'onUpdate:modelValue': (value) => {} }, { name: 'type', label: $t('type'), type: 'w-select', options: Options.enum(Enums.ParameterType), 'onUpdate:modelValue': (value) => {} },
{ name: 'model', label: $t('modelId'), type: 'w-text', defaultValue: model.id, hidden: true }, { name: 'model', label: $t('modelId'), type: 'w-text', defaultValue: model.id, showIf: false },
{ name: 'code', label: $t('code'), type: 'w-text' }, { name: 'code', label: $t('code'), type: 'w-text' },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
{ {
name: 'libCode', name: 'libCode',
@ -267,9 +267,9 @@
axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => { axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => {
const versions = response.data; const versions = response.data;
const options = []; const options = [];
for (const version of versions) { versions.forEach((version) => {
options.push({ label: version.key, value: version.value }); options.push({ label: version.key, value: version.value });
} });
valueTypeVersionOptionsRef = options; valueTypeVersionOptionsRef = options;
}); });
}, },
@ -454,9 +454,9 @@
axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => { axios.get(Environment.apiContextPath('/api/re/dictionary/getVersionsByCode?code=' + valueType)).then((response) => {
const versions = response.data; const versions = response.data;
const options = []; const options = [];
for (const version of versions) { versions.forEach((version) => {
options.push({ label: version.key, value: version.value }); options.push({ label: version.key, value: version.value });
} });
valueTypeVersionOptionsRef = options; valueTypeVersionOptionsRef = options;
}); });
} }
@ -514,10 +514,10 @@ const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
ValueTypeList.splice(0, ValueTypeList.length); ValueTypeList.splice(0, ValueTypeList.length);
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
ValueTypeList.push({ value: item.key, label: item.value }); ValueTypeList.push({ value: item.key, label: item.value });
} });
} }
onMounted(() => { onMounted(() => {

105
io.sc.engine.rule.frontend/src/views/resources/designer/Processor.vue

@ -319,13 +319,12 @@
if (objs) { if (objs) {
str += `<div class='border border-b-0 overflow-auto' style='max-height:100px'>`; str += `<div class='border border-b-0 overflow-auto' style='max-height:100px'>`;
str += `<table width='100%' height='100%'>`; str += `<table width='100%' height='100%'>`;
for (let i = 0; i < objs.length; i++) { objs.forEach((obj) => {
const obj = objs[i];
str += '<tr>'; str += '<tr>';
str += ` <td width='30%'>` + obj.name + `</td>`; str += ` <td width='30%'>` + obj.name + `</td>`;
str += ` <td width='70%'><span>` + ('' + PlaceHolder.replace(obj.expression)) + '</span></td>'; str += ` <td width='70%'><span>` + ('' + PlaceHolder.replace(obj.expression)) + '</span></td>';
str += '</tr>'; str += '</tr>';
} });
str += '</table>'; str += '</table>';
str += `</div>`; str += `</div>`;
} }
@ -372,16 +371,15 @@
if (objs) { if (objs) {
let str = `<div class='border border-b-0 overflow-auto' style='max-height:100px'>`; let str = `<div class='border border-b-0 overflow-auto' style='max-height:100px'>`;
str += `<table width='100%' height='100%'>`; str += `<table width='100%' height='100%'>`;
for (let i = 0; i < objs.length; i++) { objs.forEach((obj, index) => {
const obj = objs[i];
str += '<tr>'; str += '<tr>';
if (i == 0) { if (index == 0) {
str += ' <td rowspan=' + objs.length + '>' + PlaceHolder.replace(row.numberRangeVar) + '</td>'; str += ' <td rowspan=' + objs.length + '>' + PlaceHolder.replace(row.numberRangeVar) + '</td>';
} }
str += ' <td>' + Tools.generateIntervalRange(obj.minIncluded, obj.min, obj.max, obj.maxIncluded) + '</td>'; str += ' <td>' + Tools.generateIntervalRange(obj.minIncluded, obj.min, obj.max, obj.maxIncluded) + '</td>';
str += ' <td>' + ('' + PlaceHolder.replace('' + obj.value)) + '</td>'; str += ' <td>' + ('' + PlaceHolder.replace('' + obj.value)) + '</td>';
str += '</tr>'; str += '</tr>';
} });
str += '</table>'; str += '</table>';
str += '</div>'; str += '</div>';
return str; return str;
@ -392,13 +390,12 @@
if (objs) { if (objs) {
let str = `<div class='border border-b-0 overflow-auto' style='max-height:100px'>`; let str = `<div class='border border-b-0 overflow-auto' style='max-height:100px'>`;
str += `<table width='100%' height='100%'>`; str += `<table width='100%' height='100%'>`;
for (let i = 0; i < objs.length; i++) { objs.forEach((obj) => {
const obj = objs[i];
str += '<tr>'; str += '<tr>';
str += ' <td>' + PlaceHolder.replace(obj.condition) + '</td>'; str += ' <td>' + PlaceHolder.replace(obj.condition) + '</td>';
str += ' <td><span>' + ('' + PlaceHolder.replace(obj.value)) + '</span></td>'; str += ' <td><span>' + ('' + PlaceHolder.replace(obj.value)) + '</span></td>';
str += '</tr>'; str += '</tr>';
} });
str += '</table>'; str += '</table>';
str += `</div>`; str += `</div>`;
return str; return str;
@ -434,12 +431,12 @@
form: { form: {
colsNum: 5, colsNum: 5,
fields: [ fields: [
{ colSpan: 5, name: 'parameter', label: 'parameter', type: 'w-text', defaultValue: parameter.id, hidden: true }, { colSpan: 5, name: 'parameter', label: 'parameter', type: 'w-text', defaultValue: parameter.id, showIf: false },
{ colSpan: 5, name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { colSpan: 5, name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ colSpan: 5, name: 'order', label: $t('order'), type: 'w-number', hidden: true }, { colSpan: 5, name: 'order', label: $t('order'), type: 'w-number', showIf: false },
{ colSpan: 5, name: 'type', label: $t('type'), type: 'w-text', hidden: true }, { colSpan: 5, name: 'type', label: $t('type'), type: 'w-text', showIf: false },
{ colSpan: 5, name: 'description', label: $t('description'), type: 'w-text', hidden: true }, { colSpan: 5, name: 'description', label: $t('description'), type: 'w-text', showIf: false },
{ colSpan: 5, name: 'enable', label: $t('enable'), type: 'w-checkbox', defaultValue: true, hidden: true }, { colSpan: 5, name: 'enable', label: $t('enable'), type: 'w-checkbox', defaultValue: true, showIf: false },
{ {
colSpan: 5, colSpan: 5,
name: 'objectCondition', name: 'objectCondition',
@ -482,13 +479,13 @@
const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); const grid = gridRef.getEditorForm().getFieldComponent('objectProperties');
const localData = grid.getLocalData(); const localData = grid.getLocalData();
const objectProperties = []; const objectProperties = [];
for (const item of localData) { localData.forEach((item) => {
objectProperties.push({ objectProperties.push({
code: item.code, code: item.code,
name: item.name, name: item.name,
expression: item.expression, expression: item.expression,
}); });
} });
objectPropertiesMatcherDialogRef.open(objectProperties); objectPropertiesMatcherDialogRef.open(objectProperties);
}, },
}, },
@ -498,10 +495,10 @@
click: (arg) => { click: (arg) => {
const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); const grid = gridRef.getEditorForm().getFieldComponent('objectProperties');
const selecteds = arg.selecteds; const selecteds = arg.selecteds;
for (const selected of selecteds) { selecteds.forEach((selected) => {
selected.expression = ''; selected.expression = '';
grid.replaceRow(selected); grid.replaceRow(selected);
} });
}, },
}, },
'separator', 'separator',
@ -516,16 +513,16 @@
click: (arg) => { click: (arg) => {
const grid = gridRef.getEditorForm().getFieldComponent('objectProperties'); const grid = gridRef.getEditorForm().getFieldComponent('objectProperties');
const rows = grid.getLocalData(); const rows = grid.getLocalData();
for (const row of rows) { rows.forEach((row) => {
row.expression = ''; row.expression = '';
} });
grid.setLocalData(rows); grid.setLocalData(rows);
}, },
}, },
], ],
primaryKey: 'code', primaryKey: 'code',
columns: [ columns: [
{ name: 'code', label: 'code', hidden: true }, { name: 'code', label: 'code', showIf: false },
{ {
width: 300, width: 300,
name: 'name', name: 'name',
@ -559,7 +556,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'code', label: 'code', hidden: true }, { name: 'code', label: 'code', showIf: false },
{ {
name: 'expression', name: 'expression',
label: $t('expression'), label: $t('expression'),
@ -773,7 +770,7 @@
], ],
primaryKey: 'uuid', primaryKey: 'uuid',
columns: [ columns: [
{ width: 200, name: 'uuid', label: 'uuid', hidden: true }, { width: 200, name: 'uuid', label: 'uuid', showIf: false },
{ {
width: 60, width: 60,
name: 'minIncluded', name: 'minIncluded',
@ -813,7 +810,7 @@
form: { form: {
colsNum: 4, colsNum: 4,
fields: [ fields: [
{ name: 'uuid', label: 'uuid', hidden: true, colSpan: 4 }, { name: 'uuid', label: 'uuid', showIf: false, colSpan: 4 },
{ name: 'min', label: $t('minValue'), type: 'w-text', colSpan: 3 }, { name: 'min', label: $t('minValue'), type: 'w-text', colSpan: 3 },
{ name: 'minIncluded', label: $t('include'), type: 'w-checkbox' }, { name: 'minIncluded', label: $t('include'), type: 'w-checkbox' },
{ name: 'max', label: $t('maxValue'), type: 'w-text', colSpan: 3 }, { name: 'max', label: $t('maxValue'), type: 'w-text', colSpan: 3 },
@ -882,7 +879,7 @@
], ],
primaryKey: 'uuid', primaryKey: 'uuid',
columns: [ columns: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
name: 'condition', name: 'condition',
label: $t('condition'), label: $t('condition'),
@ -908,7 +905,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
name: 'condition', name: 'condition',
label: $t('condition'), label: $t('condition'),
@ -1076,9 +1073,9 @@
const regex = /\$\{[\u0000-\uFFFF]+?\}/g; const regex = /\$\{[\u0000-\uFFFF]+?\}/g;
const array = sql.match(regex); const array = sql.match(regex);
const rows = []; const rows = [];
for (const item of array) { array.forEach((item) => {
rows.push({ uuid: Tools.uuid(), name: item, value: '' }); rows.push({ uuid: Tools.uuid(), name: item, value: '' });
} });
const grid = gridRef.getEditorForm().getFieldComponent('sqlParameterValues'); const grid = gridRef.getEditorForm().getFieldComponent('sqlParameterValues');
grid.setLocalData(rows); grid.setLocalData(rows);
}, },
@ -1107,7 +1104,7 @@
], ],
primaryKey: 'uuid', primaryKey: 'uuid',
columns: [ columns: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
width: '50%', width: '50%',
name: 'name', name: 'name',
@ -1132,7 +1129,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
name: 'name', name: 'name',
label: $t('name'), label: $t('name'),
@ -1196,9 +1193,9 @@
}) })
.then((response) => { .then((response) => {
const fieldMetaDatas = response.data.fieldMetaDatas; const fieldMetaDatas = response.data.fieldMetaDatas;
for (const field of fieldMetaDatas) { fieldMetaDatas.forEach((field) => {
field.value = field.name; field.value = field.name;
} });
const data = response.data.data; const data = response.data.data;
const grid = gridRef.getEditorForm().getFieldComponent('sqlQueryResult'); const grid = gridRef.getEditorForm().getFieldComponent('sqlQueryResult');
sqlQueryResultFieldsRef = fieldMetaDatas; sqlQueryResultFieldsRef = fieldMetaDatas;
@ -1253,7 +1250,7 @@
], ],
primaryKey: 'uuid', primaryKey: 'uuid',
columns: [ columns: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
width: '50%', width: '50%',
name: 'field', name: 'field',
@ -1278,7 +1275,7 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'uuid', label: 'uuid', hidden: true }, { name: 'uuid', label: 'uuid', showIf: false },
{ {
name: 'field', name: 'field',
label: $t('fieldName'), label: $t('fieldName'),
@ -1356,19 +1353,19 @@
const grid = form.getFieldComponent('objectProperties'); const grid = form.getFieldComponent('objectProperties');
const localData = grid.getLocalData(); const localData = grid.getLocalData();
const objectProperties = []; const objectProperties = [];
for (const item of localData) { localData.forEach((item) => {
objectProperties.push({ objectProperties.push({
code: item.code, code: item.code,
name: item.name, name: item.name,
expression: item.expression, expression: item.expression,
}); });
} });
data.objectProperties = Tools.object2Json(objectProperties); data.objectProperties = Tools.object2Json(objectProperties);
} else if ('NUMBER_RANGE' === data.type) { } else if ('NUMBER_RANGE' === data.type) {
const grid = form.getFieldComponent('numberRange'); const grid = form.getFieldComponent('numberRange');
const localData = grid.getLocalData(); const localData = grid.getLocalData();
const ranges = []; const ranges = [];
for (const item of localData) { localData.forEach((item) => {
ranges.push({ ranges.push({
uuid: item.uuid, uuid: item.uuid,
minIncluded: item.minIncluded, minIncluded: item.minIncluded,
@ -1377,43 +1374,43 @@
maxIncluded: item.maxIncluded, maxIncluded: item.maxIncluded,
value: item.value, value: item.value,
}); });
} });
data.numberRange = Tools.object2Json(ranges); data.numberRange = Tools.object2Json(ranges);
} else if ('CONDITION_RANGE' === data.type) { } else if ('CONDITION_RANGE' === data.type) {
const grid = form.getFieldComponent('conditionRange'); const grid = form.getFieldComponent('conditionRange');
const localData = grid.getLocalData(); const localData = grid.getLocalData();
const ranges = []; const ranges = [];
for (const item of localData) { localData.forEach((item) => {
ranges.push({ ranges.push({
uuid: item.uuid, uuid: item.uuid,
condition: item.condition, condition: item.condition,
value: item.value, value: item.value,
}); });
} });
data.conditionRange = Tools.object2Json(ranges); data.conditionRange = Tools.object2Json(ranges);
} else if ('SQL' === data.type) { } else if ('SQL' === data.type) {
const sqlParameterValuesGrid = form.getFieldComponent('sqlParameterValues'); const sqlParameterValuesGrid = form.getFieldComponent('sqlParameterValues');
const sqlParameterValuesLocalData = sqlParameterValuesGrid.getLocalData(); const sqlParameterValuesLocalData = sqlParameterValuesGrid.getLocalData();
const sqlParameterValues = []; const sqlParameterValues = [];
for (const item of sqlParameterValuesLocalData) { sqlParameterValuesLocalData.forEach((item) => {
sqlParameterValues.push({ sqlParameterValues.push({
uuid: item.uuid, uuid: item.uuid,
name: item.name, name: item.name,
value: item.value, value: item.value,
}); });
} });
data.sqlParameterValues = Tools.object2Json(sqlParameterValues); data.sqlParameterValues = Tools.object2Json(sqlParameterValues);
const sqlFieldMappingGrid = form.getFieldComponent('sqlFieldMapping'); const sqlFieldMappingGrid = form.getFieldComponent('sqlFieldMapping');
const sqlFieldMappingLocalData = sqlFieldMappingGrid.getLocalData(); const sqlFieldMappingLocalData = sqlFieldMappingGrid.getLocalData();
const sqlFieldMapping = []; const sqlFieldMapping = [];
for (const item of sqlFieldMappingLocalData) { sqlFieldMappingLocalData.forEach((item) => {
sqlFieldMapping.push({ sqlFieldMapping.push({
uuid: item.uuid, uuid: item.uuid,
field: item.field, field: item.field,
parameter: item.parameter, parameter: item.parameter,
}); });
} });
data.sqlFieldMapping = Tools.object2Json(sqlFieldMapping); data.sqlFieldMapping = Tools.object2Json(sqlFieldMapping);
} }
} }
@ -1431,11 +1428,11 @@
axios.get(Environment.apiContextPath('/api/re/model/parameter/listParemtersByParameterId/' + parameter.id)).then((response) => { axios.get(Environment.apiContextPath('/api/re/model/parameter/listParemtersByParameterId/' + parameter.id)).then((response) => {
const parameters = response.data; const parameters = response.data;
const options = []; const options = [];
for (const item of parameters) { parameters.forEach((item) => {
if (item.type === 'IN_OPTION') { if (item.type === 'IN_OPTION') {
options.push({ label: item.name, value: item.code }); options.push({ label: item.name, value: item.code });
} }
} });
optionOptionsRef = options; optionOptionsRef = options;
}); });
@ -1458,9 +1455,9 @@
// //
axios.get(Environment.apiContextPath('api/re/model/parameter/findParametersByParameterId?parameterId=' + parameter.id)).then((response) => { axios.get(Environment.apiContextPath('api/re/model/parameter/findParametersByParameterId?parameterId=' + parameter.id)).then((response) => {
const options = []; const options = [];
for (const indicator of response.data) { response.data.forEach((indicator) => {
options.push({ label: indicator.name, value: '${' + indicator.name + '}' }); options.push({ label: indicator.name, value: '${' + indicator.name + '}' });
} });
parameterOptionsRef = options; parameterOptionsRef = options;
}); });
@ -1582,9 +1579,9 @@ axios.get(Environment.apiContextPath('/api/system/datasource')).then((response)
const items = response.data?.content; const items = response.data?.content;
if (items) { if (items) {
const options = []; const options = [];
for (const item of items) { items.forEach((item) => {
options.push({ label: item.name, value: item.name }); options.push({ label: item.name, value: item.name });
} });
dsOptionsRef.value = options; dsOptionsRef.value = options;
} }
}); });
@ -1593,11 +1590,11 @@ axios.get(Environment.apiContextPath('/api/re/function?pageable=false')).then((r
const options = []; const options = [];
const items = response.data?.content; const items = response.data?.content;
if (items && items.length > 0) { if (items && items.length > 0) {
for (const item of items) { items.forEach((item) => {
if (item.enable) { if (item.enable) {
options.push(item); options.push(item);
} }
} });
} }
userDefinedFunctionsRef.value = options; userDefinedFunctionsRef.value = options;
}); });

16
io.sc.engine.rule.frontend/src/views/resources/designer/TestCaseParameter.vue

@ -83,12 +83,12 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'testCase', label: $t('testCase'), type: 'w-text', defaultValue: testCase.id, hidden: true }, { name: 'testCase', label: $t('testCase'), type: 'w-text', defaultValue: testCase.id, showIf: false },
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ name: 'source', label: $t('source'), type: 'w-text', hidden: true }, { name: 'source', label: $t('source'), type: 'w-text', showIf: false },
{ name: 'parameterType', label: $t('parameterType'), type: 'w-text', hidden: true }, { name: 'parameterType', label: $t('parameterType'), type: 'w-text', showIf: false },
{ name: 'scoreCardVarType', label: $t('scoreCardVarType'), type: 'w-text', hidden: true }, { name: 'scoreCardVarType', label: $t('scoreCardVarType'), type: 'w-text', showIf: false },
{ name: 'indicatorType', label: $t('indicatorType'), type: 'w-text', hidden: true }, { name: 'indicatorType', label: $t('indicatorType'), type: 'w-text', showIf: false },
{ {
name: 'inputValue', name: 'inputValue',
label: $t('re.resources.designer.testCaseParameter.grid.entity.inputValue'), label: $t('re.resources.designer.testCaseParameter.grid.entity.inputValue'),
@ -193,8 +193,8 @@ let ValueTypeMap = {};
const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/getAllDictionaryMap')); const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/getAllDictionaryMap'));
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
} });
} }
</script> </script>

18
io.sc.engine.rule.frontend/src/views/resources/designer/Testcase.vue

@ -82,8 +82,8 @@
'export', 'export',
]" ]"
:columns="[ :columns="[
{ width: 60, name: 'order', label: $t('order'), align: 'right', hidden: true }, { width: 60, name: 'order', label: $t('order'), align: 'right', showIf: false },
{ width: 100, name: 'id', label: $t('id'), hidden: true }, { width: 100, name: 'id', label: $t('id'), showIf: false },
{ {
width: 60, width: 60,
name: 'testResult', name: 'testResult',
@ -104,11 +104,11 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ name: 'ownerType', label: $t('ownerType'), type: 'w-text', defaultValue: 'MODEL', hidden: true }, { name: 'ownerType', label: $t('ownerType'), type: 'w-text', defaultValue: 'MODEL', showIf: false },
{ name: 'owner', label: $t('owner'), type: 'w-text', defaultValue: model.resource, hidden: true }, { name: 'owner', label: $t('owner'), type: 'w-text', defaultValue: model.resource, showIf: false },
{ name: 'ownerId', label: $t('ownerId'), type: 'w-text', defaultValue: model.resource, hidden: true }, { name: 'ownerId', label: $t('ownerId'), type: 'w-text', defaultValue: model.resource, showIf: false },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
{ name: 'order', label: $t('order'), type: 'w-number' }, { name: 'order', label: $t('order'), type: 'w-number' },
], ],
@ -188,10 +188,10 @@ const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
ValueTypeList = []; ValueTypeList = [];
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
ValueTypeList.push({ value: item.key, label: item.value }); ValueTypeList.push({ value: item.key, label: item.value });
} });
} }
onMounted(() => { onMounted(() => {

5
io.sc.engine.rule.frontend/src/views/resources/designer/Validator.vue

@ -65,13 +65,12 @@
:editor="{ :editor="{
dialog: { dialog: {
width: '600px', width: '600px',
height: '550px',
}, },
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'parameter', label: 'parameter', type: 'w-text', defaultValue: parameter.id, hidden: true }, { name: 'parameter', label: 'parameter', type: 'w-text', defaultValue: parameter.id, showIf: false },
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ {
name: 'description', name: 'description',
label: $t('description'), label: $t('description'),

4
io.sc.engine.rule.frontend/src/views/shared/AutoCompletionManager.ts

@ -111,9 +111,9 @@ class AutoCompletionManager {
if (parameterType.properties && parameterType.properties.length > 0) { if (parameterType.properties && parameterType.properties.length > 0) {
const options = []; const options = [];
for (const property of parameterType.properties) { parameterType.properties.forEach((property) => {
options.push({ label: property.name, type: 'property', apply: '${' + property.name + '}', detail: this.findValueTypeInfo(property.valueType) }); options.push({ label: property.name, type: 'property', apply: '${' + property.name + '}', detail: this.findValueTypeInfo(property.valueType) });
} });
return options; return options;
} }
} }

4
io.sc.engine.rule.frontend/src/views/shared/MoveParameterDialog.vue

@ -11,9 +11,9 @@
click: () => { click: () => {
const tickeds = parameterGrid.getTickedRows(); const tickeds = parameterGrid.getTickedRows();
const parameterIds = []; const parameterIds = [];
for (const ticked of tickeds) { tickeds.forEach((ticked) => {
parameterIds.push(ticked.id); parameterIds.push(ticked.id);
} });
axios axios
.post(Environment.apiContextPath('/api/re/model/parameter/move'), { .post(Environment.apiContextPath('/api/re/model/parameter/move'), {
one: modelGridRef.getSelectedRows()[0].id, one: modelGridRef.getSelectedRows()[0].id,

5
io.sc.engine.rule.frontend/src/views/shared/SelectIndicatorDialog.vue

@ -81,7 +81,6 @@
]" ]"
@row-click=" @row-click="
(evt, row, index) => { (evt, row, index) => {
console.log(row);
if (row.type === 'INDICATOR') { if (row.type === 'INDICATOR') {
currentSelectedLibIdRef = row.id; currentSelectedLibIdRef = row.id;
} else { } else {
@ -177,9 +176,9 @@ const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
ValueTypeList = []; ValueTypeList = [];
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
ValueTypeList.push({ value: item.key, label: item.value }); ValueTypeList.push({ value: item.key, label: item.value });
} });
} }
</script> </script>

30
io.sc.engine.rule.frontend/src/views/testcase/Testcase.vue

@ -62,8 +62,8 @@
'export', 'export',
]" ]"
:columns="[ :columns="[
{ width: 50, name: 'order', label: $t('order'), hidden: true }, { width: 50, name: 'order', label: $t('order'), showIf: false },
{ width: 100, name: 'id', label: $t('id'), hidden: true }, { width: 100, name: 'id', label: $t('id'), showIf: false },
{ {
width: 60, width: 60,
name: 'testResult', name: 'testResult',
@ -100,9 +100,9 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'order', label: $t('order'), type: 'w-text', hidden: true }, { name: 'order', label: $t('order'), type: 'w-text', showIf: false },
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
], ],
}, },
@ -126,8 +126,8 @@
}, },
}" }"
@row-click=" @row-click="
(evt, row, index) => { (args) => {
currentSelectedTestCaseRef = row; currentSelectedTestCaseRef = args.row;
testcaseParameterGridRef?.refresh(); testcaseParameterGridRef?.refresh();
} }
" "
@ -228,12 +228,12 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'testCase', label: $t('testCase'), type: 'w-text', defaultValue: currentSelectedTestCaseRef.id, hidden: true }, { name: 'testCase', label: $t('testCase'), type: 'w-text', defaultValue: currentSelectedTestCaseRef.id, showIf: false },
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ name: 'source', label: $t('source'), type: 'w-text', hidden: true }, { name: 'source', label: $t('source'), type: 'w-text', showIf: false },
{ name: 'parameterType', label: $t('parameterType'), type: 'w-text', hidden: true }, { name: 'parameterType', label: $t('parameterType'), type: 'w-text', showIf: false },
{ name: 'scoreCardVarType', label: $t('scoreCardVarType'), type: 'w-text', hidden: true }, { name: 'scoreCardVarType', label: $t('scoreCardVarType'), type: 'w-text', showIf: false },
{ name: 'indicatorType', label: $t('indicatorType'), type: 'w-text', hidden: true }, { name: 'indicatorType', label: $t('indicatorType'), type: 'w-text', showIf: false },
{ {
name: 'inputValue', name: 'inputValue',
label: $t('re.resources.designer.testCaseParameter.grid.entity.inputValue'), label: $t('re.resources.designer.testCaseParameter.grid.entity.inputValue'),
@ -334,9 +334,9 @@ const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/
if (response && response.data) { if (response && response.data) {
ValueTypeMap = {}; ValueTypeMap = {};
ValueTypeList = []; ValueTypeList = [];
for (const item of response.data) { response.data.forEach((item) => {
ValueTypeMap[item.key] = item.value; ValueTypeMap[item.key] = item.value;
ValueTypeList.push({ value: item.key, label: item.value }); ValueTypeList.push({ value: item.key, label: item.value });
} });
} }
</script> </script>

2
io.sc.engine.rule.frontend/src/views/workflow/CompleteTaskDialog.vue

@ -14,7 +14,7 @@
<w-form <w-form
v-model="formModelValue" v-model="formModelValue"
:cols-num="1" :cols-num="1"
:fields="[{ name: 'treatment', label: $t('re.workflow.dialog.entity.treatment'), type: 'w-textarea', rows: 5, required: true }]" :fields="[{ name: 'treatment', label: $t('re.workflow.dialog.entity.treatment'), type: 'w-textarea', rows: 5, requiredIf: true }]"
> >
</w-form> </w-form>
</w-dialog> </w-dialog>

8
io.sc.engine.rule.frontend/src/views/workflow/Workflow.vue

@ -129,7 +129,7 @@
'export', 'export',
]" ]"
:columns="[ :columns="[
{ width: 150, name: 'resourceCode', label: $t('code'), hidden: true }, { width: 150, name: 'resourceCode', label: $t('code'), showIf: false },
{ width: '100%', name: 'resourceName', label: $t('name') }, { width: '100%', name: 'resourceName', label: $t('name') },
{ width: 100, name: 'resourceType', label: $t('type'), format: Formater.enum(Enums.ResourceType) }, { width: 100, name: 'resourceType', label: $t('type'), format: Formater.enum(Enums.ResourceType) },
{ width: 100, name: 'resourceVersion', label: $t('version') }, { width: 100, name: 'resourceVersion', label: $t('version') },
@ -156,9 +156,9 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'order', label: $t('order'), type: 'w-text', hidden: true }, { name: 'order', label: $t('order'), type: 'w-text', showIf: false },
{ name: 'id', label: $t('id'), type: 'w-text', hidden: true }, { name: 'id', label: $t('id'), type: 'w-text', showIf: false },
{ name: 'name', label: $t('name'), type: 'w-text', required: true }, { name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' }, { name: 'description', label: $t('description'), type: 'w-text' },
], ],
}, },

4
io.sc.platform.core.frontend/package.json

@ -64,7 +64,7 @@
"@typescript-eslint/eslint-plugin": "8.5.0", "@typescript-eslint/eslint-plugin": "8.5.0",
"@typescript-eslint/parser": "8.5.0", "@typescript-eslint/parser": "8.5.0",
"@vue/babel-plugin-jsx": "1.2.4", "@vue/babel-plugin-jsx": "1.2.4",
"@vue/compiler-sfc": "3.5.3", "@vue/compiler-sfc": "3.5.4",
"@webpack-cli/serve": "2.0.5", "@webpack-cli/serve": "2.0.5",
"autoprefixer": "10.4.20", "autoprefixer": "10.4.20",
"babel-loader": "9.1.3", "babel-loader": "9.1.3",
@ -136,7 +136,7 @@
"quasar": "2.16.11", "quasar": "2.16.11",
"svg-path-commander": "2.0.10", "svg-path-commander": "2.0.10",
"tailwindcss": "3.4.10", "tailwindcss": "3.4.10",
"vue": "3.4.38", "vue": "3.5.4",
"vue-dompurify-html": "5.1.0", "vue-dompurify-html": "5.1.0",
"vue-i18n": "10.0.0", "vue-i18n": "10.0.0",
"vue-router": "4.4.3", "vue-router": "4.4.3",

Loading…
Cancel
Save