Browse Source

表单元素优化

main
likunming 6 months ago
parent
commit
bdce211ffc
  1. 18
      io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckbox.vue
  2. 18
      io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckboxGroup.vue
  3. 12
      io.sc.platform.core.frontend/src/platform/components/code-mirror/WCodeMirror.vue
  4. 10
      io.sc.platform.core.frontend/src/platform/components/color/WColorInput.vue
  5. 10
      io.sc.platform.core.frontend/src/platform/components/color/WColorInputPalette.vue
  6. 10
      io.sc.platform.core.frontend/src/platform/components/cron/WCron.vue
  7. 12
      io.sc.platform.core.frontend/src/platform/components/date/WDate.vue
  8. 12
      io.sc.platform.core.frontend/src/platform/components/date/WDateRange.vue
  9. 12
      io.sc.platform.core.frontend/src/platform/components/file/WFile.vue
  10. 25
      io.sc.platform.core.frontend/src/platform/components/form/FormField.ts
  11. 5
      io.sc.platform.core.frontend/src/platform/components/form/WForm.vue
  12. 14
      io.sc.platform.core.frontend/src/platform/components/grid/TreeGridRow.vue
  13. 10
      io.sc.platform.core.frontend/src/platform/components/icon/WIcon.vue
  14. 10
      io.sc.platform.core.frontend/src/platform/components/number/WNumber.vue
  15. 10
      io.sc.platform.core.frontend/src/platform/components/password/WPassword.vue
  16. 10
      io.sc.platform.core.frontend/src/platform/components/position/WPosition.vue
  17. 44
      io.sc.platform.core.frontend/src/platform/components/radio/WRadio.vue
  18. 10
      io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue
  19. 10
      io.sc.platform.core.frontend/src/platform/components/select/WInputSelect.vue
  20. 10
      io.sc.platform.core.frontend/src/platform/components/select/WOrgSelect.vue
  21. 10
      io.sc.platform.core.frontend/src/platform/components/select/WSelect.vue
  22. 24
      io.sc.platform.core.frontend/src/platform/components/select/WUserSelect.vue
  23. 6
      io.sc.platform.core.frontend/src/platform/components/text-editor/WTextEditor.vue
  24. 20
      io.sc.platform.core.frontend/src/platform/components/text/WText.vue
  25. 10
      io.sc.platform.core.frontend/src/platform/components/textarea/WTextarea.vue
  26. 42
      io.sc.platform.core.frontend/src/views/likm/Dialog.vue
  27. 112
      io.sc.platform.core.frontend/src/views/likm/Drawer.vue
  28. 71
      io.sc.platform.core.frontend/src/views/likm/Form.vue
  29. 13
      io.sc.platform.core.frontend/src/views/likm/Grid.vue
  30. 2
      io.sc.platform.core.frontend/src/views/likm/InfoPanel.vue
  31. 22
      io.sc.platform.core.frontend/src/views/likm/Toolbar.vue

18
io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckbox.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)" :class="props.outlined ? 'w-checkbox' : ''"> <div v-show="fieldMethodsClass.getShow(props, modelValue)" :class="props.outlined ? 'w-checkbox' : ''">
<template v-if="props.outlined"> <template v-if="props.outlined">
<q-field <q-field
ref="checkboxRef" ref="checkboxRef"
@ -11,17 +11,17 @@
:borderless="!props.outlined" :borderless="!props.outlined"
:stack-label="true" :stack-label="true"
:dense="true" :dense="true"
:rules="FieldMethods.getRules(props, modelValue, checkboxRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, checkboxRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template #append> <template #append>
<q-checkbox <q-checkbox
v-model="modelValue" v-model="modelValue"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
></q-checkbox> ></q-checkbox>
</template> </template>
@ -32,8 +32,8 @@
ref="checkboxRef" ref="checkboxRef"
v-model="modelValue" v-model="modelValue"
v-bind="attrs" v-bind="attrs"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
></q-checkbox> ></q-checkbox>
</template> </template>

18
io.sc.platform.core.frontend/src/platform/components/checkbox/WCheckboxGroup.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)" :class="props.simple ? 'w-checkbox-group' : ''"> <div v-show="fieldMethodsClass.getShow(props, modelValue)" :class="props.simple ? 'w-checkbox-group' : ''">
<q-field <q-field
ref="checkboxGroupRef" ref="checkboxGroupRef"
v-model="modelValue" v-model="modelValue"
@ -10,12 +10,12 @@
:borderless="!props.outlined" :borderless="!props.outlined"
:stack-label="true" :stack-label="true"
:dense="true" :dense="true"
:rules="FieldMethods.getRules(props, modelValue, checkboxGroupRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, checkboxGroupRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props.simple" #control> <template v-if="!props.simple" #control>
<div class="pt-[5px]"> <div class="pt-[5px]">
<q-option-group <q-option-group
@ -24,8 +24,8 @@
:dense="props.dense" :dense="props.dense"
:options="props.options" :options="props.options"
:inline="props.inline" :inline="props.inline"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
/> />
</div> </div>
</template> </template>
@ -36,8 +36,8 @@
:dense="props.dense" :dense="props.dense"
:options="props.options" :options="props.options"
:inline="props.inline" :inline="props.inline"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
/> />
</template> </template>
</q-field> </q-field>

12
io.sc.platform.core.frontend/src/platform/components/code-mirror/WCodeMirror.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-field <q-field
ref="fieldRef" ref="fieldRef"
v-model="modelValue" v-model="modelValue"
@ -9,13 +9,13 @@
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
style="position: relative" style="position: relative"
:rules="FieldMethods.getRules(props, modelValue, fieldRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, fieldRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@focus.stop.prevent="focus" @focus.stop.prevent="focus"
@blur.stop.prevent="blur" @blur.stop.prevent="blur"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template #control> <template #control>
<div v-if="editable && toolbar" class="w-full pt-2 border-b border-b-gray-200"> <div v-if="editable && toolbar" class="w-full pt-2 border-b border-b-gray-200">
<Toolbar :source-code-editor="editorView" :user-defined-functions="userDefinedFunctions"></Toolbar> <Toolbar :source-code-editor="editorView" :user-defined-functions="userDefinedFunctions"></Toolbar>
@ -235,7 +235,7 @@ onMounted(() => {
basicSetup, basicSetup,
language.of(getLanguage(props.lang)), language.of(getLanguage(props.lang)),
tabSize.of(EditorState.tabSize.of(props.tabSize)), tabSize.of(EditorState.tabSize.of(props.tabSize)),
EditorState.readOnly.of(FieldMethods.getReadOnly(props, modelValue.value)), EditorState.readOnly.of(fieldMethodsClass.getReadOnly(props, modelValue.value)),
EditorView.theme({ EditorView.theme({
'&': { '&': {
outline: 'none !important', outline: 'none !important',

10
io.sc.platform.core.frontend/src/platform/components/color/WColorInput.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="colorRef" ref="colorRef"
v-model="modelValue" v-model="modelValue"
@ -8,12 +8,12 @@
:outlined="true" :outlined="true"
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
:rules="FieldMethods.getRules(props, modelValue, colorRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, colorRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append> <template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append>
<!-- 选择颜色按钮 --> <!-- 选择颜色按钮 -->
<q-btn <q-btn

10
io.sc.platform.core.frontend/src/platform/components/color/WColorInputPalette.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="colorRef" ref="colorRef"
v-model="modelValue" v-model="modelValue"
@ -8,12 +8,12 @@
:outlined="true" :outlined="true"
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
:rules="FieldMethods.getRules(props, modelValue, colorRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, colorRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append> <template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append>
<!-- 选择颜色按钮 --> <!-- 选择颜色按钮 -->
<q-btn <q-btn

10
io.sc.platform.core.frontend/src/platform/components/cron/WCron.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="cronRef" ref="cronRef"
v-model="modelValue" v-model="modelValue"
@ -8,13 +8,13 @@
:outlined="true" :outlined="true"
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
:rules="FieldMethods.getRules(props, modelValue, cronRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, cronRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
:v-bind="attrs" :v-bind="attrs"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append> <template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append>
<!-- 选择颜色按钮 --> <!-- 选择颜色按钮 -->
<q-btn icon="bi-pencil-square" padding="2px" flat square unelevated :title="$t('select')"> <q-btn icon="bi-pencil-square" padding="2px" flat square unelevated :title="$t('select')">

12
io.sc.platform.core.frontend/src/platform/components/date/WDate.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="dateRef" ref="dateRef"
v-model="modelValue" v-model="modelValue"
@ -8,9 +8,9 @@
:outlined="true" :outlined="true"
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
:rules="FieldMethods.getRules(props, modelValue, dateRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, dateRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
@focus=" @focus="
() => { () => {
@ -19,9 +19,9 @@
" "
> >
<template #label> <template #label>
<w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label> <w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label>
</template> </template>
<template v-if="!FieldMethods.getReadOnly(props, modelValue)" #append> <template v-if="!fieldMethodsClass.getReadOnly(props, modelValue)" #append>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy cover transition-show="scale" transition-hide="scale"> <q-popup-proxy cover transition-show="scale" transition-hide="scale">
<q-date v-model="modelValue" today-btn mask="YYYY-MM-DD" @update:model-value="fieldMethodsClass.updateValue"> </q-date> <q-date v-model="modelValue" today-btn mask="YYYY-MM-DD" @update:model-value="fieldMethodsClass.updateValue"> </q-date>

12
io.sc.platform.core.frontend/src/platform/components/date/WDateRange.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="dateRangeRef" ref="dateRangeRef"
v-model="displayValueComputed" v-model="displayValueComputed"
@ -9,9 +9,9 @@
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
:clearable="false" :clearable="false"
:rules="FieldMethods.getRules(props, modelValue, dateRangeRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, dateRangeRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
@focus=" @focus="
() => { () => {
@ -20,9 +20,9 @@
" "
> >
<template #label> <template #label>
<w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label> <w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label>
</template> </template>
<template v-if="!FieldMethods.getReadOnly(props, modelValue)" #append> <template v-if="!fieldMethodsClass.getReadOnly(props, modelValue)" #append>
<q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn> <q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn>
<q-icon name="event" class="cursor-pointer"> <q-icon name="event" class="cursor-pointer">
<q-popup-proxy cover transition-show="scale" transition-hide="scale"> <q-popup-proxy cover transition-show="scale" transition-hide="scale">

12
io.sc.platform.core.frontend/src/platform/components/file/WFile.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-file <q-file
ref="fileRef" ref="fileRef"
v-model="modelValue" v-model="modelValue"
@ -9,15 +9,15 @@
:dense="true" :dense="true"
:clearable="true" :clearable="true"
v-bind="attrs" v-bind="attrs"
:rules="FieldMethods.getRules(props, modelValue, fileRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, fileRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label> <template #label>
<w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label> <w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label>
</template> </template>
<template v-if="!FieldMethods.getReadOnly(props, modelValue)" #append> <template v-if="!fieldMethodsClass.getReadOnly(props, modelValue)" #append>
<q-icon name="attachment" /> <q-icon name="attachment" />
</template> </template>
</q-file> </q-file>

25
io.sc.platform.core.frontend/src/platform/components/form/FormField.ts

@ -25,13 +25,13 @@ export abstract class FormFieldMethods {
abstract clearValue(): void; abstract clearValue(): void;
// 获取验证规则集结果 // 获取验证规则集结果
static getRules = (props_, value_, componentRef_, defaultValue_) => { getRules(props_, value_, componentRef_, defaultValue_) {
let result = props_.rules || <any>[]; let result = props_.rules || <any>[];
if (!Tools.isEmpty(defaultValue_)) { if (!Tools.isEmpty(defaultValue_)) {
result.push(...defaultValue_); result.push(...defaultValue_);
} }
const showResult = FormFieldMethods.getShow(props_, value_); const showResult = this.getShow(props_, value_);
const requiredResult = FormFieldMethods.getRequired(props_, value_); const requiredResult = this.getRequired(props_, value_);
if (showResult && requiredResult) { if (showResult && requiredResult) {
result.push(FormValidators.required()); result.push(FormValidators.required());
} else if (!showResult) { } else if (!showResult) {
@ -41,9 +41,10 @@ export abstract class FormFieldMethods {
componentRef_.value.resetValidation(); componentRef_.value.resetValidation();
} }
return result; return result;
}; }
// 获取是否必填结果 // 获取是否必填结果
static getRequired = (props_, value_) => { getRequired(props_, value_) {
if (!Tools.isEmpty(props_.requiredIf)) { if (!Tools.isEmpty(props_.requiredIf)) {
if (typeof props_.requiredIf === 'boolean') { if (typeof props_.requiredIf === 'boolean') {
return props_.requiredIf; return props_.requiredIf;
@ -52,9 +53,9 @@ export abstract class FormFieldMethods {
} }
} }
return false; return false;
}; }
// 获取是否显示结果 // 获取是否显示结果
static getShow = (props_, value_) => { getShow(props_, value_) {
if (!Tools.isEmpty(props_.showIf)) { if (!Tools.isEmpty(props_.showIf)) {
if (typeof props_.showIf === 'boolean') { if (typeof props_.showIf === 'boolean') {
return props_.showIf; return props_.showIf;
@ -63,9 +64,9 @@ export abstract class FormFieldMethods {
} }
} }
return true; return true;
}; }
// 获取是否只读结果 // 获取是否只读结果
static getReadOnly = (props_, value_) => { getReadOnly(props_, value_) {
if (props_.form && props_.form.getStatus() === 'view') { if (props_.form && props_.form.getStatus() === 'view') {
return true; return true;
} }
@ -77,9 +78,9 @@ export abstract class FormFieldMethods {
} }
} }
return false; return false;
}; }
// 获取是否禁用结果 // 获取是否禁用结果
static getDisable = (props_, value_) => { getDisable(props_, value_) {
if (!Tools.isEmpty(props_.disableIf)) { if (!Tools.isEmpty(props_.disableIf)) {
if (typeof props_.disableIf === 'boolean') { if (typeof props_.disableIf === 'boolean') {
return props_.disableIf; return props_.disableIf;
@ -88,5 +89,5 @@ export abstract class FormFieldMethods {
} }
} }
return false; return false;
}; }
} }

5
io.sc.platform.core.frontend/src/platform/components/form/WForm.vue

@ -11,7 +11,7 @@
v-bind="field" v-bind="field"
:form="instance" :form="instance"
:class=" :class="
(field.colsFirst ? 'col-start-1 ' : ' ') + (field.colFirst ? 'col-start-1 ' : ' ') +
(field.colSpan === 'full' (field.colSpan === 'full'
? ' col-span-' + screenColsNumComputed ? ' col-span-' + screenColsNumComputed
: field.colSpan && screenColsNumComputed >= field.colSpan : field.colSpan && screenColsNumComputed >= field.colSpan
@ -25,11 +25,10 @@
<component <component
:is="field.type" :is="field.type"
:ref="(el) => setComponentRef(el, field.name)" :ref="(el) => setComponentRef(el, field.name)"
:form-ref="formRef"
v-bind="field" v-bind="field"
:form="instance" :form="instance"
:class=" :class="
(field.colsFirst ? 'col-start-1 ' : ' ') + (field.colFirst ? 'col-start-1 ' : ' ') +
(field.colSpan === 'full' (field.colSpan === 'full'
? ' col-span-' + screenColsNumComputed ? ' col-span-' + screenColsNumComputed
: field.colSpan && screenColsNumComputed >= field.colSpan : field.colSpan && screenColsNumComputed >= field.colSpan

14
io.sc.platform.core.frontend/src/platform/components/grid/TreeGridRow.vue

@ -684,12 +684,22 @@ const click = (evt, row, rowIndex) => {
} }
row[table.selectedField] = true; row[table.selectedField] = true;
if (props.grid.props.onRowClick) { if (props.grid.props.onRowClick) {
props.grid.props.onRowClick(evt, row, rowIndex); props.grid.props.onRowClick({
grid: props.grid,
evt: evt,
row: row,
index: rowIndex,
});
} }
} }
}; };
const dbClick = (evt, row, rowIndex) => { const dbClick = (evt, row, rowIndex) => {
props.gridRowDbClick(evt, row, rowIndex); props.gridRowDbClick({
grid: props.grid,
evt: evt,
row: row,
index: rowIndex,
});
}; };
const setComponentRef = (el, row, col) => { const setComponentRef = (el, row, col) => {

10
io.sc.platform.core.frontend/src/platform/components/icon/WIcon.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="iconRef" ref="iconRef"
v-model="modelValue" v-model="modelValue"
@ -8,12 +8,12 @@
:outlined="true" :outlined="true"
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
:rules="FieldMethods.getRules(props, modelValue, iconRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, iconRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template #prepend> <template #prepend>
<q-icon v-if="modelValue" :name="modelValue"> </q-icon> <q-icon v-if="modelValue" :name="modelValue"> </q-icon>
<w-icon-empty v-else></w-icon-empty> <w-icon-empty v-else></w-icon-empty>

10
io.sc.platform.core.frontend/src/platform/components/number/WNumber.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="numberRef" ref="numberRef"
v-model="modelValue" v-model="modelValue"
@ -10,12 +10,12 @@
v-bind="attrs" v-bind="attrs"
type="number" type="number"
title="" title=""
:rules="FieldMethods.getRules(props, modelValue, numberRef, [FormValidators.maxPrecision(props.precision)])" :rules="fieldMethodsClass.getRules(props, modelValue, numberRef, [FormValidators.maxPrecision(props.precision)])"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
</q-input> </q-input>
</div> </div>
</template> </template>

10
io.sc.platform.core.frontend/src/platform/components/password/WPassword.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="pwdRef" ref="pwdRef"
v-model="modelValue" v-model="modelValue"
@ -10,12 +10,12 @@
v-bind="attrs" v-bind="attrs"
type="password" type="password"
autocomplete="off" autocomplete="off"
:rules="FieldMethods.getRules(props, modelValue, pwdRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, pwdRef, undefined)"
::readonly="FieldMethods.getReadOnly(props, modelValue)" ::readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
</q-input> </q-input>
</div> </div>
</template> </template>

10
io.sc.platform.core.frontend/src/platform/components/position/WPosition.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="positionRef" ref="positionRef"
v-model="modelValue" v-model="modelValue"
@ -8,12 +8,12 @@
:outlined="true" :outlined="true"
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
:rules="FieldMethods.getRules(props, modelValue, positionRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, positionRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append> <template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append>
<!-- 选择位置按钮 --> <!-- 选择位置按钮 -->
<q-btn <q-btn

44
io.sc.platform.core.frontend/src/platform/components/radio/WRadio.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)" :class="props.simple ? 'w-radio' : ''"> <div v-show="fieldMethodsClass.getShow(props, modelValue)" :class="props.simple ? 'w-radio' : ''">
<q-field <q-field
ref="radioRef" ref="radioRef"
v-model="modelValue" v-model="modelValue"
@ -11,37 +11,53 @@
:stack-label="true" :stack-label="true"
:dense="true" :dense="true"
:clearable="false" :clearable="false"
:rules="FieldMethods.getRules(props, modelValue, radioRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, radioRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props.simple && !Tools.isEmpty(modelValue) && props.clearable" #append> <template v-if="!props.simple" #control>
<q-btn flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn>
</template>
<template v-else-if="!props.simple" #control>
<div class="pt-[5px]"> <div class="pt-[5px]">
<q-option-group <q-option-group
v-model="modelValue" v-model="modelValue"
:dense="props.dense" :dense="props.dense"
:options="props.options" :options="props.options"
:inline="props.inline" :inline="props.inline"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
/> />
</div> </div>
</template> </template>
<template v-if="!props.simple" #append>
<q-btn
v-if="!Tools.isEmpty(modelValue) && props.clearable"
flat
square
unelevated
dense
icon="cancel"
@click.stop.prevent="fieldMethodsClass.clearValue"
></q-btn>
</template>
<template v-else #append> <template v-else #append>
<q-option-group <q-option-group
v-model="modelValue" v-model="modelValue"
:dense="props.dense" :dense="props.dense"
:options="props.options" :options="props.options"
:inline="props.inline" :inline="props.inline"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
/> />
<q-btn v-if="!Tools.isEmpty(modelValue) && props.clearable" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn> <q-btn
v-if="!Tools.isEmpty(modelValue) && props.clearable"
flat
square
unelevated
dense
icon="cancel"
@click.stop.prevent="fieldMethodsClass.clearValue"
></q-btn>
</template> </template>
</q-field> </q-field>
</div> </div>

10
io.sc.platform.core.frontend/src/platform/components/select/WGridSelect.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="textSelectRef" ref="textSelectRef"
v-model="displayValueComputed" v-model="displayValueComputed"
@ -11,9 +11,9 @@
v-bind="attrs" v-bind="attrs"
:bottom-slots="counter" :bottom-slots="counter"
type="text" type="text"
:rules="FieldMethods.getRules(props, { value: modelValue, displayValue: displayValueComputed }, textSelectRef, undefined)" :rules="fieldMethodsClass.getRules(props, { value: modelValue, displayValue: displayValueComputed }, textSelectRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, { value: modelValue, displayValue: displayValueComputed })" :readonly="fieldMethodsClass.getReadOnly(props, { value: modelValue, displayValue: displayValueComputed })"
:disable="FieldMethods.getDisable(props, { value: modelValue, displayValue: displayValueComputed })" :disable="fieldMethodsClass.getDisable(props, { value: modelValue, displayValue: displayValueComputed })"
:clearable="false" :clearable="false"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
@focus=" @focus="
@ -23,7 +23,7 @@
" "
> >
<!-- label --> <!-- label -->
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append> <template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append>
<q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn> <q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn>

10
io.sc.platform.core.frontend/src/platform/components/select/WInputSelect.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="textSelectRef" ref="textSelectRef"
v-model="modelDisplayValue" v-model="modelDisplayValue"
@ -11,13 +11,13 @@
v-bind="attrs" v-bind="attrs"
:bottom-slots="counter" :bottom-slots="counter"
type="text" type="text"
:rules="FieldMethods.getRules(props, { value: modelValue, displayValue: modelDisplayValue }, textSelectRef, undefined)" :rules="fieldMethodsClass.getRules(props, { value: modelValue, displayValue: modelDisplayValue }, textSelectRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, { value: modelValue, displayValue: modelDisplayValue })" :readonly="fieldMethodsClass.getReadOnly(props, { value: modelValue, displayValue: modelDisplayValue })"
:disable="FieldMethods.getDisable(props, { value: modelValue, displayValue: modelDisplayValue })" :disable="fieldMethodsClass.getDisable(props, { value: modelValue, displayValue: modelDisplayValue })"
:clearable="false" :clearable="false"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append> <template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append>
<q-btn v-if="!Tools.isEmpty(modelValue)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn> <q-btn v-if="!Tools.isEmpty(modelValue)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn>
<q-btn flat square unelevated dense :icon="isShow ? 'arrow_drop_up' : 'arrow_drop_down'" @click="() => (isShow = !isShow)"> <q-btn flat square unelevated dense :icon="isShow ? 'arrow_drop_up' : 'arrow_drop_down'" @click="() => (isShow = !isShow)">

10
io.sc.platform.core.frontend/src/platform/components/select/WOrgSelect.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="textSelectRef" ref="textSelectRef"
v-model="displayValueComputed" v-model="displayValueComputed"
@ -11,9 +11,9 @@
v-bind="attrs" v-bind="attrs"
:bottom-slots="counter" :bottom-slots="counter"
type="text" type="text"
:rules="FieldMethods.getRules(props, { value: modelValue, displayValue: displayValueComputed }, textSelectRef, undefined)" :rules="fieldMethodsClass.getRules(props, { value: modelValue, displayValue: displayValueComputed }, textSelectRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, { value: modelValue, displayValue: displayValueComputed })" :readonly="fieldMethodsClass.getReadOnly(props, { value: modelValue, displayValue: displayValueComputed })"
:disable="FieldMethods.getDisable(props, { value: modelValue, displayValue: displayValueComputed })" :disable="fieldMethodsClass.getDisable(props, { value: modelValue, displayValue: displayValueComputed })"
:clearable="false" :clearable="false"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
@focus=" @focus="
@ -22,7 +22,7 @@
} }
" "
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append> <template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append>
<q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn> <q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn>
<q-btn flat square unelevated dense icon="saved_search"> <q-btn flat square unelevated dense icon="saved_search">

10
io.sc.platform.core.frontend/src/platform/components/select/WSelect.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-select <q-select
ref="selectRef" ref="selectRef"
v-model="modelValue" v-model="modelValue"
@ -10,12 +10,12 @@
:outlined="true" :outlined="true"
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
:rules="FieldMethods.getRules(props, modelValue, selectRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, selectRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
</q-select> </q-select>
</div> </div>
</template> </template>

24
io.sc.platform.core.frontend/src/platform/components/select/WUserSelect.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="textSelectRef" ref="textSelectRef"
v-model="displayValueComputed" v-model="displayValueComputed"
@ -11,9 +11,9 @@
v-bind="attrs" v-bind="attrs"
:bottom-slots="counter" :bottom-slots="counter"
type="text" type="text"
:rules="FieldMethods.getRules(props, { value: modelValue, displayValue: displayValueComputed }, textSelectRef, undefined)" :rules="fieldMethodsClass.getRules(props, { value: modelValue, displayValue: displayValueComputed }, textSelectRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, { value: modelValue, displayValue: displayValueComputed })" :readonly="fieldMethodsClass.getReadOnly(props, { value: modelValue, displayValue: displayValueComputed })"
:disable="FieldMethods.getDisable(props, { value: modelValue, displayValue: displayValueComputed })" :disable="fieldMethodsClass.getDisable(props, { value: modelValue, displayValue: displayValueComputed })"
:clearable="false" :clearable="false"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
@focus=" @focus="
@ -22,7 +22,7 @@
} }
" "
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
<template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append> <template v-if="!props['form'] || (props['form'] && props['form'].getStatus() !== 'view')" #append>
<q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn> <q-btn v-if="!Tools.isEmpty(displayValueComputed)" flat square unelevated dense icon="cancel" @click="fieldMethodsClass.clearValue"></q-btn>
<q-btn flat square unelevated dense icon="person_search"> <q-btn flat square unelevated dense icon="person_search">
@ -118,16 +118,16 @@ const props = withDefaults(defineProps<FieldProps>(), {
valueUseId: false, valueUseId: false,
/** /**
* 显示值配置可使用选项 * 显示值配置可使用选项
* account用户登陆账号 * code用户登陆账号
* name用户名 * name用户名
* nameAppendAccount用户名追加登陆账号示例张三(zhangsan)组件默认使用该选项 * nameAppendCode用户名追加登陆账号示例张三(zhangsan)组件默认使用该选项
* accountAppendName账号追加用户名示例zhangsan(张三) * codeAppendName账号追加用户名示例zhangsan(张三)
* 自定义函数自己定义显示的内容组件会将用户数据传到函数中函数必须返回一个字符串示例 * 自定义函数自己定义显示的内容组件会将用户数据传到函数中函数必须返回一个字符串示例
* displayValue: (args) => { * displayValue: (args) => {
* return args['data']['loginName'] + '_' + args['data']['userName']; * return args['data']['loginName'] + '_' + args['data']['userName'];
* } * }
*/ */
displayValue: 'nameAppendAccount', displayValue: 'nameAppendCode',
}); });
class FieldMethods extends FormFieldMethods { class FieldMethods extends FormFieldMethods {
updateValue = (value_) => { updateValue = (value_) => {
@ -197,13 +197,13 @@ const getActualDisplayValue = (row) => {
userGrid: userGridRef.value, userGrid: userGridRef.value,
}); });
} else if (!Tools.isEmpty(props.displayValue) && typeof props.displayValue === 'string') { } else if (!Tools.isEmpty(props.displayValue) && typeof props.displayValue === 'string') {
if (props.displayValue === 'account') { if (props.displayValue === 'code') {
return row['loginName']; return row['loginName'];
} else if (props.displayValue === 'name') { } else if (props.displayValue === 'name') {
return row['userName']; return row['userName'];
} else if (props.displayValue === 'accountAppendName') { } else if (props.displayValue === 'codeAppendName') {
return row['loginName'] + '(' + row['userName'] + ')'; return row['loginName'] + '(' + row['userName'] + ')';
} else if (props.displayValue === 'nameAppendAccount') { } else if (props.displayValue === 'nameAppendCode') {
return row['userName'] + '(' + row['loginName'] + ')'; return row['userName'] + '(' + row['loginName'] + ')';
} }
} }

6
io.sc.platform.core.frontend/src/platform/components/text-editor/WTextEditor.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-editor <q-editor
ref="textEditorRef" ref="textEditorRef"
v-model="modelValue" v-model="modelValue"
@ -29,8 +29,8 @@
['print', 'fullscreen'], ['print', 'fullscreen'],
]" ]"
v-bind="attrs" v-bind="attrs"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label> <template #label>

20
io.sc.platform.core.frontend/src/platform/components/text/WText.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="textRef" ref="textRef"
v-model="modelValue" v-model="modelValue"
@ -9,12 +9,12 @@
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
type="text" type="text"
:rules="FieldMethods.getRules(props, modelValue, textRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, textRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
</q-input> </q-input>
</div> </div>
</template> </template>
@ -56,19 +56,19 @@ class FieldMethods extends FormFieldMethods {
const fieldMethodsClass = new FieldMethods(); const fieldMethodsClass = new FieldMethods();
// const showComputed = computed(() => { // const showComputed = computed(() => {
// return FieldMethods.getShow(props, modelValue.value); // return fieldMethodsClass.getShow(props, modelValue.value);
// }); // });
// const rulesComputed = computed(() => { // const rulesComputed = computed(() => {
// return FieldMethods.getRules(props, modelValue.value, textRef, undefined); // return fieldMethodsClass.getRules(props, modelValue.value, textRef, undefined);
// }); // });
// const readOnlyComputed = computed(() => { // const readOnlyComputed = computed(() => {
// return FieldMethods.getReadOnly(props, modelValue.value); // return fieldMethodsClass.getReadOnly(props, modelValue.value);
// }); // });
// const disableComputed = computed(() => { // const disableComputed = computed(() => {
// return FieldMethods.getDisable(props, modelValue.value); // return fieldMethodsClass.getDisable(props, modelValue.value);
// }); // });
// const requiredComputed = computed(() => { // const requiredComputed = computed(() => {
// return FieldMethods.getRequired(props, modelValue.value); // return fieldMethodsClass.getRequired(props, modelValue.value);
// }); // });
defineExpose({ defineExpose({

10
io.sc.platform.core.frontend/src/platform/components/textarea/WTextarea.vue

@ -1,5 +1,5 @@
<template> <template>
<div v-show="FieldMethods.getShow(props, modelValue)"> <div v-show="fieldMethodsClass.getShow(props, modelValue)">
<q-input <q-input
ref="textareaRef" ref="textareaRef"
v-model="modelValue" v-model="modelValue"
@ -9,12 +9,12 @@
:dense="true" :dense="true"
v-bind="attrs" v-bind="attrs"
type="textarea" type="textarea"
:rules="FieldMethods.getRules(props, modelValue, textareaRef, undefined)" :rules="fieldMethodsClass.getRules(props, modelValue, textareaRef, undefined)"
:readonly="FieldMethods.getReadOnly(props, modelValue)" :readonly="fieldMethodsClass.getReadOnly(props, modelValue)"
:disable="FieldMethods.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
@update:model-value="fieldMethodsClass.updateValue" @update:model-value="fieldMethodsClass.updateValue"
> >
<template #label><w-label :required="FieldMethods.getRequired(props, modelValue)" :label="attrs.label"></w-label></template> <template #label><w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label"></w-label></template>
</q-input> </q-input>
</div> </div>
</template> </template>

42
io.sc.platform.core.frontend/src/views/likm/Dialog.vue

@ -2,37 +2,33 @@
<div> <div>
<w-dialog <w-dialog
ref="dialogRef" ref="dialogRef"
title="标题"
width="60%"
height="60%"
:buttons="[ :buttons="[
{ {
label: '测试', icon: 'beenhere',
click: aaaaa, label: '保存',
loading: false,
click: () => {},
}, },
]" ]"
@hide="aaaaa"
> >
<q-splitter v-model="aa" style="height: 100%"> 我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />
<template #before> 我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />我是窗口内容 <br />
<q-input></q-input><q-input></q-input><q-input></q-input><q-input></q-input><q-input></q-input><q-input></q-input><q-input></q-input </w-dialog>
><q-input></q-input><q-input></q-input><q-input></q-input><q-input></q-input> <q-btn
</template> label="弹出窗口"
<template #after> 22222 </template> @click="
</q-splitter> () => {
<template #buttons> <q-btn label="xxx"></q-btn> </template dialogRef.show();
></w-dialog> }
"
></q-btn>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, onMounted } from 'vue'; import { ref } from 'vue';
const dialogRef = ref(); const dialogRef = ref();
const aa = ref(50);
const aaaaa = (e) => {
console.info('dddddddddddddd', e);
};
onMounted(() => {
console.info('dialogRef====', dialogRef);
dialogRef.value.show();
});
</script> </script>

112
io.sc.platform.core.frontend/src/views/likm/Drawer.vue

@ -1,34 +1,88 @@
<template> <template>
<div> <div class="w-[500px] h-[300px]">
<q-btn label="弹出" @click="click"></q-btn> <w-echarts
<w-drawer :option="{
ref="drawerRef" title: {
title="xxx" left: 'center',
:maximized="false" text: '资产余额',
:buttons="[
{
label: '测试',
}, },
]" tooltip: {
> trigger: 'axis',
1111 axisPointer: {
<template #buttons> <q-btn label="xxx"></q-btn> </template> type: 'shadow',
</w-drawer> },
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#2563eb', //
showDetail: false, // detail
startValue: 0, //
endValue: 10, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
xAxis: [
{
type: 'category',
data: [
'黄浦支行',
'徐汇支行',
'长宁支行',
'静安支行',
'普陀支行',
'虹口支行',
'杨浦支行',
'浦东支行',
'闵行支行',
'宝山支行',
'嘉定支行',
'金山支行',
'松江支行',
'青浦支行',
'奉贤支行',
'崇明支行',
],
axisTick: {
alignWithLabel: true,
},
},
],
yAxis: [
{
type: 'value',
name: '单位:万元',
},
],
series: [
{
type: 'bar',
barWidth: '10%',
data: [1700, 1600, 1500, 1400, 1300, 1200, 1100, 1000, 900, 800, 600, 500, 400, 300, 200, 100],
},
],
}"
></w-echarts>
</div> </div>
</template> </template>
<script setup lang="ts">
import { ref, reactive, onMounted } from 'vue';
import { IconEnum } from '@/platform/enums';
const drawerRef = ref();
const aa = ref(50);
const aaaaa = (e) => {
console.info('dddddddddddddd', e);
};
const click = () => {
drawerRef.value.show();
};
onMounted(() => {}); <script setup lang="ts"></script>
</script>

71
io.sc.platform.core.frontend/src/views/likm/Form.vue

@ -1,5 +1,41 @@
<template> <template>
<div> <div>
<br />
<br />
<br />
<br />
<br />
<div class="flex justify-center">
<div class="w-[800px]">
<w-text-editor label="富文本组件" :required-if="true"></w-text-editor>
<br />
</div>
<!-- <div class="pl-[20px]">自定义表格选择值: {{ arr1ModelValue }} <br /><br /><br /></div> -->
</div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<w-form <w-form
ref="formRef" ref="formRef"
:fields="[ :fields="[
@ -8,6 +44,12 @@
label: '文本框', label: '文本框',
type: 'w-text', type: 'w-text',
requiredIf: true, requiredIf: true,
rules: [
(value) => {
console.info('value====', value);
return true;
},
],
}, },
{ {
name: 'test2', name: 'test2',
@ -19,9 +61,7 @@
{ label: '男', value: 1 }, { label: '男', value: 1 },
{ label: '女', value: 0 }, { label: '女', value: 0 },
], ],
onUpdateValue: (args) => { onUpdateValue: (args) => {},
console.info('value========', args);
},
}, },
{ {
name: 'test2.5', name: 'test2.5',
@ -122,6 +162,7 @@
label: '单选按钮', label: '单选按钮',
type: 'w-radio', type: 'w-radio',
requiredIf: true, requiredIf: true,
simple: false,
options: [ options: [
{ label: '已婚', value: 1 }, { label: '已婚', value: 1 },
{ label: '单身', value: 2 }, { label: '单身', value: 2 },
@ -189,6 +230,9 @@
colsFirst: true, colsFirst: true,
colSpan: '2', colSpan: '2',
rows: 3, rows: 3,
onUpdateValue: (args) => {
console.info('args====', args);
},
}, },
{ {
name: 'test99', name: 'test99',
@ -208,6 +252,11 @@
}, },
]" ]"
:cols-x-gap="8" :cols-x-gap="8"
@update-value="
(args) => {
console.info('form.updateValue=====', args);
}
"
> >
</w-form> </w-form>
<q-btn label="提交" @click="submit"></q-btn>&nbsp; <q-btn label="重置" @click="reset"></q-btn>&nbsp; <q-btn label="提交" @click="submit"></q-btn>&nbsp; <q-btn label="重置" @click="reset"></q-btn>&nbsp;
@ -215,12 +264,18 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive } from 'vue'; import { ref } from 'vue';
import { EnumTools, Options, Environment, Formater } from '@/platform'; import { Environment, Formater } from '@/platform';
import { FormValidators } from '@/platform/components';
import { useI18n } from 'vue-i18n'; const booleanModelValue = ref(false);
const string1ModelValue = ref('');
const string2ModelValue = ref('');
const numberModelValue = ref(1);
const objectModelValue = ref(undefined);
const arr1ModelValue = ref([]);
const arr2ModelValue = ref([]);
const arr3ModelValue = ref([]);
const { t } = useI18n();
const formRef = ref(); const formRef = ref();
const submit = async () => { const submit = async () => {

13
io.sc.platform.core.frontend/src/views/likm/Grid.vue

@ -16,6 +16,19 @@
{ name: 'lastModifier', label: '最后修改人', align: 'center' }, { name: 'lastModifier', label: '最后修改人', align: 'center' },
{ name: 'lastModifyDate', label: '最后修改日期', align: 'center' }, { name: 'lastModifyDate', label: '最后修改日期', align: 'center' },
]" ]"
:editor="{
dialog: {
width: '80%',
height: '80%',
},
form: {
colsNum: 2,
fields: [
{ name: 'code', label: '编码', type: 'w-text' },
{ name: 'name', label: '名称', type: 'w-text' },
],
},
}"
@row-click="rowClick" @row-click="rowClick"
> >
</w-grid> </w-grid>

2
io.sc.platform.core.frontend/src/views/likm/InfoPanel.vue

@ -4,8 +4,6 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive } from 'vue';
const infoArray = [ const infoArray = [
{ label: '姓名', value: '张三' }, { label: '姓名', value: '张三' },
{ label: '年龄', value: 18 }, { label: '年龄', value: 18 },

22
io.sc.platform.core.frontend/src/views/likm/Toolbar.vue

@ -9,8 +9,6 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue';
const toolbar = { const toolbar = {
xGap: 8, xGap: 8,
noIcon: false, noIcon: false,
@ -132,22 +130,10 @@ const toolbar = {
console.info('删除'); console.info('删除');
}, },
}, },
// { icon: 'home', label: '1' }, { name: 'home1', icon: 'home', label: '测试1' },
// { separator: true }, { name: 'home2', icon: 'home', label: '测试2' },
// { icon: 'home', label: '2' }, { name: 'home3', icon: 'home', label: '测试3' },
// { icon: 'home', label: '3' }, { name: 'home4', icon: 'home', label: '测试4' },
// { icon: 'home', label: '4' },
// { separator: true },
// { separator: true },
// { icon: 'home', label: '5' },
// { icon: 'home', label: '6' },
// { icon: 'home', label: '7' },
// { icon: 'home', label: '8' },
// { icon: 'home', label: '9' },
// { icon: 'home', label: '10' },
// { icon: 'home', label: '11' },
// { icon: 'home', label: '12' },
// { icon: 'home', label: '13' },
], ],
}; };
</script> </script>

Loading…
Cancel
Save