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.

198 lines
5.3 KiB

<template>
1 year ago
<w-grid
1 year ago
ref="treeGridRef"
1 year ago
:title="$t('system.parameter.grid.title')"
1 year ago
:config-button="true"
1 year ago
selection="multiple"
:checkbox-selection="false"
1 year ago
:tree="true"
:tree-icon="
(row) => {
return { name: 'folder', color: 'amber' };
}
"
1 year ago
default-expand-all
10 months ago
db-click-operation="edit"
1 year ago
:data-url="Environment.apiContextPath('/api/system/parameter')"
:pageable="false"
1 year ago
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="[
'refresh',
'separator',
'expand',
{
extend: 'edit',
1 year ago
enableIf: (arg) => {
if (arg.selected) {
return !Tools.isUndefinedOrNull(arg.selected.value);
1 year ago
}
return false;
},
},
'separator',
1 year ago
{
extend: 'view',
1 year ago
enableIf: (arg) => {
if (arg.selected) {
return !Tools.isUndefinedOrNull(arg.selected.value);
1 year ago
}
return false;
},
},
'separator',
1 year ago
'export',
]"
:columns="[
{
width: 300,
1 year ago
name: 'name',
label: $t('name'),
1 year ago
sortable: false,
1 year ago
format: (value, row) => {
return $t(row.code);
1 year ago
},
},
1 year ago
{ width: 300, name: 'code', label: $t('code') },
{ width: '100%', name: 'value', label: $t('value') },
1 year ago
]"
:editor="{
dialog: {
width: '600px',
1 year ago
buttons: [
{
1 year ago
name: 'resetDefaultValues',
label: $t('resetDefaultValues'),
noCaps: true,
click: () => {
const row = treeGridRef.getSelectedRow();
if (row) {
if (isExistsOptions()) {
treeGridRef.getEditorForm().setFieldValue('valueSelect', row.defaultValue);
} else {
treeGridRef.getEditorForm().setFieldValue('valueInput', row.defaultValue);
}
}
},
1 year ago
},
],
1 year ago
},
form: {
colsNum: 1,
fields: [
1 year ago
{
name: 'title',
label: $t('name'),
8 months ago
type: 'w-text',
1 year ago
readOnlyIf: () => {
return true;
},
},
1 year ago
{
name: 'code',
label: $t('code'),
8 months ago
type: 'w-text',
1 year ago
readOnlyIf: () => {
return true;
},
},
1 year ago
{
name: 'valueInput',
label: $t('value'),
8 months ago
type: 'w-text',
1 year ago
showIf: (arg) => {
return !isExistsOptions();
},
},
{
name: 'valueSelect',
label: $t('value'),
8 months ago
type: 'w-select',
1 year ago
showIf: (arg) => {
return isExistsOptions();
},
options: optionsRef,
1 year ago
useInput: true,
fillInput: true,
hideSelected: true,
inputDebounce: 0,
onInputValue: (value) => {
treeGridRef.getEditorForm().setFieldValue('valueSelect', value);
},
1 year ago
},
1 year ago
],
},
}"
:viewer="{
panel: {
columnNum: 1,
fields: [
{ name: 'id', label: $t('id') },
1 year ago
{ name: 'code', label: $t('code') },
{ name: 'value', label: $t('value') },
1 year ago
{ name: 'order', label: $t('order') },
{ name: 'parent', label: $t('parent') },
1 year ago
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
1 year ago
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
1 year ago
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
}"
1 year ago
@row-click="
8 months ago
(args) => {
1 year ago
changeOptions();
}
"
@after-editor-open="
8 months ago
(args) => {
treeGridRef.getEditorForm().setFieldValue('title', t(args.data.code));
1 year ago
if (isExistsOptions()) {
8 months ago
treeGridRef.getEditorForm().setFieldValue('valueSelect', args.data.value);
1 year ago
} else {
8 months ago
treeGridRef.getEditorForm().setFieldValue('valueInput', args.data.value);
1 year ago
}
}
"
@before-editor-data-submit="
8 months ago
(args) => {
1 year ago
if (isExistsOptions()) {
8 months ago
args.data.value = treeGridRef.getEditorForm().getFieldValue('valueSelect');
1 year ago
} else {
8 months ago
args.data.value = treeGridRef.getEditorForm().getFieldValue('valueInput');
1 year ago
}
8 months ago
args.callback(args.data);
1 year ago
}
"
1 year ago
></w-grid>
</template>
<script setup lang="ts">
import 'tailwindcss/utilities.css';
1 year ago
import { ref } from 'vue';
import { useI18n } from 'vue-i18n';
1 year ago
import { Environment, Tools, Formater } from 'platform-core';
1 year ago
const { t } = useI18n();
const treeGridRef = ref();
const optionsRef = ref([]);
const changeOptions = () => {
optionsRef.value.splice(0, optionsRef.value.length);
1 year ago
const row = treeGridRef.value.getSelectedRow();
if (row) {
1 year ago
for (const key in row.options) {
optionsRef.value.push({ label: t(row.options[key]), value: key });
}
}
};
const isExistsOptions = () => {
1 year ago
const row = treeGridRef.value.getSelectedRow();
if (row) {
1 year ago
return row.options && Object.keys(row.options).length > 0;
}
return false;
};
</script>