Browse Source

表格优化提交

main
likunming 10 months ago
parent
commit
d796950ffc
  1. 2
      io.sc.platform.core.frontend/package.json
  2. 79
      io.sc.platform.core.frontend/src/platform/components/form/WForm.vue
  3. 4
      io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue

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

@ -1,6 +1,6 @@
{ {
"name": "platform-core", "name": "platform-core",
"version": "8.1.237", "version": "8.1.238",
"description": "前端核心包,用于快速构建前端的脚手架", "description": "前端核心包,用于快速构建前端的脚手架",
"//main": "库的主文件", "//main": "库的主文件",
"main": "dist/platform-core.js", "main": "dist/platform-core.js",

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

@ -3,37 +3,41 @@
<q-form ref="formRef" :autofocus="false" :greedy="true" v-bind="attrs"> <q-form ref="formRef" :autofocus="false" :greedy="true" v-bind="attrs">
<div v-if="fieldsComputed.length > 0" class="grid" :class="formLayoutComputed"> <div v-if="fieldsComputed.length > 0" class="grid" :class="formLayoutComputed">
<template v-for="(field, index) in fieldsComputed as any" :key="String(index)"> <template v-for="(field, index) in fieldsComputed as any" :key="String(index)">
<component <template v-if="field.name">
:is="fiedType[field.type] || field.type" <component
v-if="field.name" :is="fiedType[field.type] || field.type"
v-model="formData[field.name]" :ref="(el) => setComponentRef(el, field.name)"
v-bind="field" v-model="formData[field.name]"
:form="instance" v-bind="field"
:class=" :form="instance"
(field.colsFirst ? 'col-start-1 ' : ' ') + :class="
(field.colSpan === 'full' (field.colsFirst ? 'col-start-1 ' : ' ') +
? ' col-span-' + screenColsNumComputed (field.colSpan === 'full'
: field.colSpan && screenColsNumComputed >= field.colSpan ? ' col-span-' + screenColsNumComputed
? ' col-span-' + field.colSpan : field.colSpan && screenColsNumComputed >= field.colSpan
: ' col-span-1') ? ' col-span-' + field.colSpan
" : ' col-span-1')
@update:model-value="updateModelValue(field.name, formData[field.name])" "
></component> @update:model-value="updateModelValue(field.name, formData[field.name])"
<component ></component>
:is="fiedType[field.type] || field.type" </template>
v-else <template v-else>
:form-ref="formRef" <component
v-bind="field" :is="fiedType[field.type] || field.type"
:form="instance" :ref="(el) => setComponentRef(el, field.name)"
:class=" :form-ref="formRef"
(field.colsFirst ? 'col-start-1 ' : ' ') + v-bind="field"
(field.colSpan === 'full' :form="instance"
? ' col-span-' + screenColsNumComputed :class="
: field.colSpan && screenColsNumComputed >= field.colSpan (field.colsFirst ? 'col-start-1 ' : ' ') +
? ' col-span-' + field.colSpan (field.colSpan === 'full'
: ' col-span-1') ? ' col-span-' + screenColsNumComputed
" : field.colSpan && screenColsNumComputed >= field.colSpan
></component> ? ' col-span-' + field.colSpan
: ' col-span-1')
"
></component>
</template>
</template> </template>
</div> </div>
<slot></slot> <slot></slot>
@ -49,6 +53,8 @@ import { PageStatusEnum } from '@/platform/components/utils';
const $q = useQuasar(); const $q = useQuasar();
const attrs = useAttrs(); const attrs = useAttrs();
const componentRef = ref({});
const props = defineProps({ const props = defineProps({
modelValue: { modelValue: {
type: Object, type: Object,
@ -207,6 +213,12 @@ const updateModelValue = (name, value) => {
} }
}; };
const setComponentRef = (el, fieldName) => {
if (el) {
componentRef.value[fieldName] = el;
}
};
/** /**
* 对外暴露方法-获取form所有数据 * 对外暴露方法-获取form所有数据
*/ */
@ -323,6 +335,10 @@ const getFields = () => {
return formFields; return formFields;
}; };
const getFieldComponent = (name) => {
return componentRef.value[name];
};
defineExpose({ defineExpose({
getFields, getFields,
getData, getData,
@ -335,6 +351,7 @@ defineExpose({
getStatus, getStatus,
getColsNum, getColsNum,
setValidationErrors, setValidationErrors,
getFieldComponent,
}); });
const instance = getCurrentInstance(); const instance = getCurrentInstance();

4
io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue

@ -1743,6 +1743,9 @@ const wrapCsvValue = (val, formatFn, row) => {
return `"${formatted}"`; return `"${formatted}"`;
}; };
const getLocalData = () => {
return toRaw(table.rows);
};
// //
const setLocalData = (rows: any) => { const setLocalData = (rows: any) => {
if (props.tree && props.treeRelationship === 'parent') { if (props.tree && props.treeRelationship === 'parent') {
@ -2596,6 +2599,7 @@ defineExpose({
getTickedRows, getTickedRows,
getRows, getRows,
refresh, refresh,
getLocalData,
setLocalData, setLocalData,
replaceRow, replaceRow,
removeRows, removeRows,

Loading…
Cancel
Save