Browse Source

部门基础组件优化

main
likunming 7 days ago
parent
commit
22e325245e
  1. 12
      io.sc.platform.core.frontend/src/platform/components/grid/css/separator.css
  2. 7
      io.sc.platform.core.frontend/src/platform/components/grid/ts/computed/ComputedManager.ts
  3. 1
      io.sc.platform.core.frontend/src/platform/components/label/WLabel.vue
  4. 15
      io.sc.platform.core.frontend/src/platform/components/radio/WExtRadio.vue
  5. 20
      io.sc.platform.core.frontend/src/platform/components/splitter/WSplitter.vue

12
io.sc.platform.core.frontend/src/platform/components/grid/css/separator.css

@ -53,6 +53,12 @@
.w-grid .q-table--vertical-separator th.no-right-border { .w-grid .q-table--vertical-separator th.no-right-border {
border-right: 0; border-right: 0;
} }
.w-grid .q-table--vertical-separator.y-scroll tbody tr td:last-child {
border-right: 1px solid rgba(0, 0, 0, 0.12);
}
.w-grid .q-table--vertical-separator.y-scroll th.no-right-border {
border-right: 1px solid rgba(0, 0, 0, 0.12);
}
/* /*
* vertical * vertical
* 数据最后一行底部边框 * 数据最后一行底部边框
@ -87,6 +93,12 @@
.w-grid .q-table--cell-separator th.no-right-border { .w-grid .q-table--cell-separator th.no-right-border {
border-right: 0; border-right: 0;
} }
.w-grid .q-table--cell-separator.y-scroll tbody tr td:last-child {
border-right: 1px solid rgba(0, 0, 0, 0.12);
}
.w-grid .q-table--cell-separator.y-scroll th.no-right-border {
border-right: 1px solid rgba(0, 0, 0, 0.12);
}
/* /*
* cell * cell
* 数据最后一行底部边框 * 数据最后一行底部边框

7
io.sc.platform.core.frontend/src/platform/components/grid/ts/computed/ComputedManager.ts

@ -206,6 +206,13 @@ export class ComputedManager extends Base {
} }
} }
} }
const tableElement = this.instance?.getHtmlElement();
if (tableElement) {
const tableHeight = tableElement.getElementsByClassName('q-table')[0]?.clientHeight;
if (tableHeight > this.table.store.location.middleHeight) {
classArr.push('y-scroll');
}
}
return classArr; return classArr;
}); });

1
io.sc.platform.core.frontend/src/platform/components/label/WLabel.vue

@ -1,6 +1,7 @@
<template> <template>
<span :style="styleComputed"> <span :style="styleComputed">
<span v-if="props.required" style="color: red">*</span> {{ props.label }} <span v-if="props.required" style="color: red">*</span> {{ props.label }}
<slot name="addtion"></slot>
<slot name="after"></slot> <slot name="after"></slot>
</span> </span>
</template> </template>

15
io.sc.platform.core.frontend/src/platform/components/radio/WExtRadio.vue

@ -1,12 +1,16 @@
<template> <template>
<div v-show="fieldMethodsClass.getShow(props, modelValue)" class="w-ext-radio"> <div v-show="fieldMethodsClass.getShow(props, modelValue)" class="w-ext-radio">
<w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label" :size="16" :light="lightLabelComputed"> <w-label :required="fieldMethodsClass.getRequired(props, modelValue)" :label="attrs.label" :size="16" :light="lightLabelComputed">
<template v-if="fieldMethodsClass.slotNames.length > 0" #addtion>
<slot v-if="fieldMethodsClass.isTemplateSlot" name="addtion"></slot>
<FormElementSlot v-else slot-name="addtion" :slot-content="props['slot']['addtion']"></FormElementSlot>
</template>
<template v-if="props.hideOptions" #after> <template v-if="props.hideOptions" #after>
<q-btn <q-btn
flat flat
round round
color="primary" color="primary"
:icon="expandOptionsModelValue ? 'vertical_align_center' : 'expand'" :icon="expandOptionsModelValue ? 'remove' : 'add'"
size="xs" size="xs"
@click="expandOptionsModelValue = !expandOptionsModelValue" @click="expandOptionsModelValue = !expandOptionsModelValue"
/> />
@ -21,6 +25,7 @@
:dense="props.dense" :dense="props.dense"
:disable="fieldMethodsClass.getDisable(props, modelValue)" :disable="fieldMethodsClass.getDisable(props, modelValue)"
:color="modelValue === opt['value'] ? selectedColor : undefined" :color="modelValue === opt['value'] ? selectedColor : undefined"
:style="fieldMethodsClass.getReadOnly(props, modelValue) ? 'pointer-events: none;' : ''"
> >
<template #default> <template #default>
<span v-if="modelValue === opt['value'] && selectedLabelColor" :style="'color:' + selectedLabelColor">{{ opt['label'] }}</span> <span v-if="modelValue === opt['value'] && selectedLabelColor" :style="'color:' + selectedLabelColor">{{ opt['label'] }}</span>
@ -34,7 +39,7 @@
class="desc" class="desc"
:rows="3" :rows="3"
:required-if="opt['desc']['requiredIf']" :required-if="opt['desc']['requiredIf']"
:read-only-if="fieldMethodsClass.getDisable(props, modelValue)" :read-only-if="fieldMethodsClass.getReadOnly(props, modelValue)"
> >
</w-textarea> </w-textarea>
</template> </template>
@ -42,12 +47,14 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, useAttrs, computed, onMounted } from 'vue'; import { ref, useAttrs, computed, useSlots } from 'vue';
import { FormFieldProps } from '@/platform/components/form/FormField.ts'; import { FormFieldProps } from '@/platform/components/form/FormField.ts';
import { FormFieldMethods } from '../form/FormField'; import { FormFieldMethods } from '../form/FormField';
import FormElementSlot from '../form/FormElementSlot.vue';
const radioRef = ref(); const radioRef = ref();
const attrs = useAttrs(); const attrs = useAttrs();
const slots = useSlots();
const modelValue = defineModel<string | boolean | number>(); const modelValue = defineModel<string | boolean | number>();
const descModelValue = ref(''); const descModelValue = ref('');
const expandOptionsModelValue = ref(false); const expandOptionsModelValue = ref(false);
@ -72,6 +79,8 @@ const props = withDefaults(defineProps<FieldProps>(), {
lightNotHideOptionsLabel: false, lightNotHideOptionsLabel: false,
}); });
class FieldMethods extends FormFieldMethods { class FieldMethods extends FormFieldMethods {
isTemplateSlot = this.getSlotType(slots);
slotNames = this.getSlotNames(slots, props);
updateValue = (value_) => { updateValue = (value_) => {
if (props['onUpdateValue']) { if (props['onUpdateValue']) {
props['onUpdateValue']({ props['onUpdateValue']({

20
io.sc.platform.core.frontend/src/platform/components/splitter/WSplitter.vue

@ -1,6 +1,6 @@
<template> <template>
<q-splitter <q-splitter
v-model="splitterModel" v-model="modelValue"
v-bind="attrs" v-bind="attrs"
:horizontal="horizontal" :horizontal="horizontal"
:disable="disable" :disable="disable"
@ -25,14 +25,8 @@ import { ref, useAttrs, watch } from 'vue';
import { getCssVar } from 'quasar'; import { getCssVar } from 'quasar';
const attrs = useAttrs(); const attrs = useAttrs();
const modelValue = defineModel<number>();
const props = defineProps({ const props = defineProps({
/**
* 切分大小
*/
size: {
type: Number,
default: 50,
},
/** /**
* 上下切分默认为左右切分 * 上下切分默认为左右切分
*/ */
@ -83,14 +77,8 @@ const props = defineProps({
default: true, default: true,
}, },
}); });
const splitterModel = ref(props.size); // const lineColor = props.separatorColor || getCssVar('primary');
const lineColor = props.separatorColor || getCssVar('primary'); const lineColor = props.separatorColor || 'rgba(0, 0, 0, 0.12)';
watch(
() => props.size,
(newVal, oldVal) => {
splitterModel.value = newVal;
},
);
</script> </script>
<style lang="css"> <style lang="css">

Loading…
Cancel
Save