You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

314 lines
10 KiB

2 years ago
<template>
1 year ago
<div style="height: 100%">
<w-grid
ref="gridRef"
1 year ago
:title="$t('re.parameter.grid.title')"
1 year ago
dnd-mode="server"
1 year ago
dense-body
class="px-1"
hide-bottom
:config-button="false"
selection="multiple"
1 year ago
db-click-operation="edit"
1 year ago
:checkbox-selection="true"
1 year ago
:tree="false"
1 year ago
:fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/findParametersByModelId?modelId=' + model.id)"
1 year ago
:data-url="Environment.apiContextPath('/api/re/model/parameter')"
:pageable="false"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="[
'refresh',
'separator',
[
{
extend: 'add',
click: undefined,
1 year ago
enableIf: (args) => {
1 year ago
return !readOnly;
},
2 years ago
},
1 year ago
{
extend: 'add',
name: 'constant',
1 year ago
label: $t('re.parameter.grid.toolbar.add.constant'),
1 year ago
icon: 'bi-tag',
1 year ago
afterClick: (args) => {
args.grid.getEditorForm().setFieldValue('type', 'CONSTANT');
1 year ago
},
2 years ago
},
1 year ago
'separator',
{
extend: 'add',
name: 'in',
1 year ago
label: $t('re.parameter.grid.toolbar.add.in'),
1 year ago
icon: 'bi-terminal',
1 year ago
afterClick: (args) => {
args.grid.getEditorForm().setFieldValue('type', 'IN');
1 year ago
},
2 years ago
},
1 year ago
{
extend: 'add',
name: 'inOption',
1 year ago
label: $t('re.parameter.grid.toolbar.add.inOption'),
1 year ago
icon: 'bi-list-check',
1 year ago
afterClick: (args) => {
args.grid.getEditorForm().setFieldValue('type', 'IN_OPTION');
1 year ago
args.grid.getEditorForm().setFieldValue('valueTypeSelect', 'java.lang.String');
1 year ago
},
2 years ago
},
1 year ago
{
name: 'indicator',
1 year ago
label: $t('re.parameter.grid.toolbar.add.indicator'),
1 year ago
icon: 'bi-link',
1 year ago
click: (args) => {
1 year ago
selectIndicatorDialogRef.open();
1 year ago
},
2 years ago
},
1 year ago
'separator',
{
extend: 'add',
name: 'intermediate',
1 year ago
label: $t('re.parameter.grid.toolbar.add.intermediate'),
1 year ago
icon: 'bi-superscript',
1 year ago
afterClick: (args) => {
args.grid.getEditorForm().setFieldValue('type', 'INTERMEDIATE');
1 year ago
},
2 years ago
},
1 year ago
{
extend: 'add',
name: 'out',
1 year ago
label: $t('re.parameter.grid.toolbar.add.out'),
1 year ago
icon: 'bi-shuffle',
1 year ago
afterClick: (args) => {
args.grid.getEditorForm().setFieldValue('type', 'OUT');
1 year ago
},
},
'separator',
{
extend: 'add',
name: 'ruleResult',
1 year ago
label: $t('re.parameter.grid.toolbar.add.ruleResult'),
1 year ago
icon: 'bi-sliders',
1 year ago
afterClick: (args) => {
args.grid.getEditorForm().setFieldValue('type', 'RULE_RESULT');
1 year ago
},
},
{
extend: 'add',
name: 'singleRuleResult',
1 year ago
label: $t('re.parameter.grid.toolbar.add.singleRuleResult'),
1 year ago
icon: 'bi-lightning',
1 year ago
afterClick: (args) => {
args.grid.getEditorForm().setFieldValue('type', 'SINGLE_RULE_RESULT');
1 year ago
},
},
'separator',
{
name: 'importPmml',
1 year ago
label: $t('re.parameter.grid.toolbar.add.importPmml'),
1 year ago
icon: 'bi-file-earmark-text',
},
],
2 years ago
'separator',
1 year ago
[
{
extend: 'clone',
enableIf: (args: any) => {
return args.selected;
},
click: undefined,
2 years ago
},
1 year ago
{
extend: 'clone',
enableIf: (args) => {
return !readOnly && args.selected && args.selected.type !== 'INDICATOR';
},
1 year ago
},
1 year ago
{
extend: 'clone',
name: 'deepClone',
label: $t('deepClone'),
icon: 'bi-copy',
enableIf: (args) => {
return !readOnly && args.selected && args.selected.type !== 'INDICATOR';
},
click: (args) => {
DialogManager.confirm($t('re.parameter.grid.toolbar.deepClone.tip'), () => {
axios.post(Environment.apiContextPath('/api/re/model/parameter/deepClone/' + args.selected.id)).then(() => {
gridRef.refresh();
});
1 year ago
});
1 year ago
},
1 year ago
},
1 year ago
],
1 year ago
{
extend: 'edit',
1 year ago
enableIf: (args) => {
1 year ago
return !readOnly && args.selected && args.selected.type !== 'INDICATOR';
},
click: (args: any) => {
const row = args.selected;
if (row.type === 'INDICATOR') {
NotifyManager.warn($t('re.parameter.tip.indicatorParameterCanNotEditable'));
return;
}
args._click(args);
1 year ago
},
},
{
extend: 'remove',
1 year ago
enableIf: (args) => {
return !readOnly && args.selected;
1 year ago
},
},
'separator',
{
name: 'move',
1 year ago
label: $t('re.parameter.grid.toolbar.move'),
1 year ago
icon: 'bi-share-fill',
1 year ago
enableIf: (args) => {
return !readOnly && args.selected;
1 year ago
},
1 year ago
click: (args) => {
1 year ago
moveParameterDialogRef.open();
2 years ago
},
},
1 year ago
'separator',
1 year ago
...templateImportAndExportManager.getToolbarAction(),
'separator',
1 year ago
'view',
2 years ago
'separator',
1 year ago
'export',
]"
:columns="[
1 year ago
{ width: '100%', name: 'name', label: $t('name') },
{ width: 130, name: 'code', label: $t('code'), showIf: false },
{ width: 100, name: 'type', label: $t('type'), format: EngineEnums.ParameterType.formater },
1 year ago
{
1 year ago
width: 200,
name: 'indicatorInfo',
label: $t('re.lib.grid.title'),
format: LibManager.getFormater(),
2 years ago
},
1 year ago
...valueTypeManager.getColumns(),
1 year ago
]"
:editor="{
dialog: {
width: '600px',
2 years ago
},
1 year ago
form: {
colsNum: 1,
fields: [
1 year ago
{ name: 'model', label: $t('modelId'), type: 'w-text', defaultValue: model.id, showIf: false },
1 year ago
{
1 year ago
name: 'type',
label: $t('type'),
1 year ago
type: 'w-select',
1 year ago
showIf: false,
options: EngineEnums.ParameterType.options,
'onUpdate:modelValue': (value) => {},
2 years ago
},
1 year ago
{ name: 'code', label: $t('code'), type: 'w-text' },
{ name: 'name', label: $t('name'), type: 'w-text', requiredIf: true },
{ name: 'description', label: $t('description'), type: 'w-text' },
...valueTypeManager.getEditorFields(),
1 year ago
{ name: 'order', label: $t('order'), type: 'w-number' },
1 year ago
],
},
}"
:viewer="{
panel: {
columnNum: 1,
fields: [
1 year ago
{ name: 'model', label: $t('re.parameter.grid.entity.model') },
{ name: 'type', label: $t('type'), format: Formater.none() },
1 year ago
{ name: 'id', label: $t('id') },
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('name') },
{ name: 'description', label: $t('description') },
1 year ago
{ name: 'libCode', label: $t('re.parameter.grid.entity.libCode') },
{ name: 'libVersion', label: $t('re.parameter.grid.entity.libVersion') },
{ name: 'indicatorCode', label: $t('re.parameter.grid.entity.indicatorCode') },
...valueTypeManager.getViewerFields(),
{ name: 'order', label: $t('order') },
...CorporationAuditorEntityManager.getViewerFields(),
1 year ago
],
},
}"
@row-click="
1 year ago
(args) => {
emit('rowClick', args);
1 year ago
}
"
@before-request-data="
1 year ago
(args) => {
1 year ago
emit('beforeRequestData');
}
"
1 year ago
@after-editor-open="
1 year ago
(args: any) => {
valueTypeManager.afterEditorOpen(args);
1 year ago
}
"
1 year ago
></w-grid>
1 year ago
<SelectIndicatorDialog ref="selectIndicatorDialogRef" :parameter-grid="gridRef" :model-id="model.id"></SelectIndicatorDialog>
<MoveParameterDialog ref="moveParameterDialogRef" :parameter-grid="gridRef" :resource="resource"></MoveParameterDialog>
1 year ago
<TemplateImportAndExportDialog
ref="templateImportAndExportDialogRef"
:download-url="Environment.apiContextPath('/api/re/template/downloadParameterTemplate/' + props.model?.id)"
:upload-url="Environment.apiContextPath('/api/re/template/uploadParameterTemplate/' + props.model?.id)"
@after-imported="
() => {
gridRef.refresh();
}
"
></TemplateImportAndExportDialog>
1 year ago
</div>
2 years ago
</template>
<script setup lang="ts">
import 'tailwindcss/utilities.css';
2 years ago
import { onMounted, ref } from 'vue';
1 year ago
import { axios, Environment, DialogManager, NotifyManager, Formater, CorporationAuditorEntityManager } from 'platform-core';
1 year ago
import SelectIndicatorDialog from '@/views/shared/SelectIndicatorDialog.vue';
import MoveParameterDialog from '@/views/shared/MoveParameterDialog.vue';
1 year ago
import TemplateImportAndExportDialog from '@/views/shared/TemplateImportAndExportDialog.vue';
import { ValueTypeManager } from '@/views/shared/ValueTypeManager';
import { LibManager } from '@/views/shared/LibManager';
import { TemplateImportAndExportManager } from '@/views/shared/TemplateImportAndExportManager';
import { EngineEnums } from '@/views/shared/enums/EngineEnums';
2 years ago
const props = defineProps({
1 year ago
resource: { type: Object, default: undefined },
2 years ago
model: { type: Object, default: undefined },
1 year ago
readOnly: { type: Boolean, default: false },
2 years ago
});
const emit = defineEmits<{
1 year ago
(e: 'rowClick', args): void;
2 years ago
(e: 'beforeRequestData', requestParams: URLSearchParams | any, callback: any): void;
}>();
const gridRef = ref();
1 year ago
const selectIndicatorDialogRef = ref();
const moveParameterDialogRef = ref();
1 year ago
const templateImportAndExportDialogRef = ref();
const valueTypeManager = new ValueTypeManager();
const templateImportAndExportManager = new TemplateImportAndExportManager(templateImportAndExportDialogRef);
onMounted(() => {
gridRef.value.refresh();
});
2 years ago
const refresh = () => {
gridRef.value.refresh();
};
defineExpose({
refresh,
});
1 year ago
await EngineEnums.init();
await valueTypeManager.init();
await LibManager.load();
2 years ago
</script>