Browse Source

修复部分问题

main
likunming 1 year ago
parent
commit
21c86e6fcb
  1. 23
      io.sc.platform.core.frontend/src/platform/components/grid/TreeGridRow.vue
  2. 63
      io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue
  3. 4
      io.sc.platform.core.frontend/src/platform/components/toolbar/ChildrenBtn.vue
  4. 4
      io.sc.platform.core.frontend/src/platform/components/toolbar/WToolbar.vue

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

@ -1,30 +1,30 @@
<template> <template>
<q-tr> <q-tr :props="scope">
<q-td :style="{ 'padding-left': '2px' }"> <q-td :style="{ 'padding-left': '2px' }">
<div class="flex flex-nowrap items-center"> <div class="flex flex-nowrap items-center">
<!--层级占位符--> <!--层级占位符-->
<span :style="`width:${27 * props.level}px;`"></span> <span :style="`width:${27 * props.level}px;`"></span>
<!--展开按钮--> <!--展开按钮-->
<q-btn <q-btn
v-if="props_.row.children && props_.row.children.length > 0" v-if="scope.row.children && scope.row.children.length > 0"
flat flat
size="16px" size="16px"
dense dense
padding="0px 0px" padding="0px 0px"
:icon="props_.row.expand ? 'bi-dash' : 'bi-plus'" :icon="scope.row.expand ? 'bi-dash' : 'bi-plus'"
@click="props_.row.expand = !props_.row.expand" @click="scope.row.expand = !scope.row.expand"
/> />
<!--展开按钮占位符--> <!--展开按钮占位符-->
<span v-else style="width: 27px"></span> <span v-else style="width: 27px"></span>
<!--选择框--> <!--选择框-->
<q-checkbox v-model="props_.row.selected" flat size="40px" dense /> <q-checkbox v-model="scope.row.selected" flat size="40px" dense />
<!--文件夹图标--> <!--文件夹图标-->
<q-icon v-if="props_.row.children && props_.row.children.length > 0" :name="'folder'" color="amber" size="20px" class="px-1"></q-icon> <q-icon v-if="scope.row.children && scope.row.children.length > 0" :name="'folder'" color="amber" size="20px" class="px-1"></q-icon>
<!--文件图标--> <!--文件图标-->
<q-icon v-else name="note" size="20px" class="px-1"></q-icon> <q-icon v-else name="note" size="20px" class="px-1"></q-icon>
</div> </div>
</q-td> </q-td>
<q-td v-for="(col, index) in props_.cols" :key="col.name" :style="{ 'padding-left': '7px' }"> <q-td v-for="(col, index) in scope.cols" :key="col.name" :style="{ 'padding-left': '7px' }">
<div class="flex flex-nowrap items-center"> <div class="flex flex-nowrap items-center">
<template v-if="col.name === '_sortNo_'"> <template v-if="col.name === '_sortNo_'">
{{ index + 1 }} {{ index + 1 }}
@ -38,8 +38,8 @@
</div> </div>
</q-td> </q-td>
</q-tr> </q-tr>
<template v-for="child in props_.row.children" :key="child.id"> <template v-for="child in scope.row.children" :key="child.id">
<TreeGridRow v-if="props_.row.expand" :props="propsHandler(child)" :columns-map="columnsMap" :level="props.level + 1"></TreeGridRow> <TreeGridRow v-if="scope.row.expand" :props="propsHandler(child)" :columns-map="columnsMap" :level="props.level + 1"></TreeGridRow>
</template> </template>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
@ -58,11 +58,10 @@ const props = defineProps({
}, },
}, },
}); });
const scope = { ...props.props };
const props_ = { ...props.props };
const propsHandler = (child) => { const propsHandler = (child) => {
const cols = <any>[]; const cols = <any>[];
props_.cols.forEach((col) => { scope.cols.forEach((col) => {
if (props.columnsMap.get(col.name) && props.columnsMap.get(col.name).format) { if (props.columnsMap.get(col.name) && props.columnsMap.get(col.name).format) {
cols.push({ ...col, value: props.columnsMap.get(col.name).format(child[col.name]) }); cols.push({ ...col, value: props.columnsMap.get(col.name).format(child[col.name]) });
} else { } else {

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

@ -88,7 +88,7 @@
</template> </template>
<template #body="scope"> <template #body="scope">
<template v-if="tree"> <template v-if="tree">
<TreeGridRow :props="scope" :columns-map="tableColumnsMap"></TreeGridRow> <TreeGridRow :props="scope" :columns-map="tableColumnsMap" @row-click="rowClick($el, scope.row, scope.rowIndex)"></TreeGridRow>
</template> </template>
<q-tr v-else :props="scope" @click="rowClick($el, scope.row, scope.rowIndex)" @dblclick="rowDbClick($el, scope.row, scope.rowIndex)"> <q-tr v-else :props="scope" @click="rowClick($el, scope.row, scope.rowIndex)" @dblclick="rowDbClick($el, scope.row, scope.rowIndex)">
<q-td v-if="!attrs.selection || attrs.selection !== 'none'" class="text-center" style="padding: 0; width: 50px"> <q-td v-if="!attrs.selection || attrs.selection !== 'none'" class="text-center" style="padding: 0; width: 50px">
@ -139,7 +139,7 @@
</q-inner-loading> </q-inner-loading>
</template> </template>
<template #pagination="scope"> <template #pagination="scope">
<template v-if="props.pagination.rowsPerPage"> <template v-if="props.pagination.rowsPerPage || props.pagination.rowsPerPage > 0">
<template v-if="table.refHeightWidth.middleWidth > 600"> <template v-if="table.refHeightWidth.middleWidth > 600">
<q-pagination <q-pagination
v-model="table.pagination.page" v-model="table.pagination.page"
@ -205,10 +205,6 @@ const tableHeadBgColor = gc.theme.dark ? darkBgColor : gc.theme?.grid?.headBgCol
const tableBorderColor = gc.theme?.grid?.borderColor || 'rgba(0, 0, 0, 0.12)'; const tableBorderColor = gc.theme?.grid?.borderColor || 'rgba(0, 0, 0, 0.12)';
const stickyBgColor = gc.theme.dark ? darkBgColor : gc.theme?.grid?.stickyBgColor || '#ffffff'; const stickyBgColor = gc.theme.dark ? darkBgColor : gc.theme?.grid?.stickyBgColor || '#ffffff';
const aaa = (a) => {
console.info('a============', a);
return '111';
};
const props = defineProps({ const props = defineProps({
height: { type: Number, default: 0 }, // height: { type: Number, default: 0 }, //
title: { type: String, default: '' }, // title: { type: String, default: '' }, //
@ -544,35 +540,7 @@ const buttonObj = {
return false; return false;
}, },
click: (selected, context) => { click: (selected, context) => {
if (!table.selected || table.selected.length <= 0) { onView();
NotifyManager.warn('请选择要查看的记录');
} else {
viewInfo.infoArray = <any>[];
if (props.viewer.panel.fields && props.viewer.panel.fields.length > 0) {
for (let item of props.viewer.panel.fields) {
if (item.format) {
viewInfo.infoArray.push({ label: item.label, value: item.format(table.selected[0][item.name]) });
} else {
let value = null;
if (tableColumnsMap.get(item.name) && tableColumnsMap.get(item.name).format) {
value = tableColumnsMap.get(item.name).format(table.selected[0][item.name]);
} else {
value = table.selected[0][item.name];
}
viewInfo.infoArray.push({ label: item.label, value: value });
}
}
} else {
for (let item of tableColumnsMap) {
if (item[1].format) {
viewInfo.infoArray.push({ label: item[1].label, value: item[1].format(table.selected[0][item[0]]) });
} else {
viewInfo.infoArray.push({ label: item[1].label, value: table.selected[0][item[0]] });
}
}
}
drawerRef.value.show();
}
}, },
}, },
export: { export: {
@ -671,7 +639,7 @@ const table = reactive({
descending: props.pagination.descending ? props.pagination.descending : false, descending: props.pagination.descending ? props.pagination.descending : false,
reqPageStart: Object.hasOwnProperty.call(props.pagination, 'reqPageStart') ? props.pagination.reqPageStart : 1, reqPageStart: Object.hasOwnProperty.call(props.pagination, 'reqPageStart') ? props.pagination.reqPageStart : 1,
page: 1, page: 1,
rowsPerPage: props.pagination.rowsPerPage ? props.pagination.rowsPerPage : 0, rowsPerPage: props.pagination.rowsPerPage,
rowsNumber: 10, rowsNumber: 10,
rowsPerPageOptions: [5, 10, 20, 50, 100], rowsPerPageOptions: [5, 10, 20, 50, 100],
}, },
@ -939,6 +907,7 @@ const rowClickFun = (row: any) => {
table.selected = []; table.selected = [];
table.selected.push(row); table.selected.push(row);
} else if (attrs.selection && attrs.selection === 'multiple') { } else if (attrs.selection && attrs.selection === 'multiple') {
table.selected = [];
table.selected.push(row); table.selected.push(row);
} }
}; };
@ -1158,10 +1127,24 @@ const save = async () => {
}; };
const onView = () => { const onView = () => {
if (!table.selected || table.selected.length <= 0) { if (!table.selected || table.selected.length <= 0) {
NotifyManager.warn('请选择要查看的数据'); NotifyManager.warn('请选择要查看的记录');
} else { } else {
if (drawerRef.value) { viewInfo.infoArray = <any>[];
viewInfo.infoArray = <any>[]; if (props.viewer.panel.fields && props.viewer.panel.fields.length > 0) {
for (let item of props.viewer.panel.fields) {
if (item.format) {
viewInfo.infoArray.push({ label: item.label, value: item.format(table.selected[0][item.name]) });
} else {
let value = null;
if (tableColumnsMap.get(item.name) && tableColumnsMap.get(item.name).format) {
value = tableColumnsMap.get(item.name).format(table.selected[0][item.name]);
} else {
value = table.selected[0][item.name];
}
viewInfo.infoArray.push({ label: item.label, value: value });
}
}
} else {
for (let item of tableColumnsMap) { for (let item of tableColumnsMap) {
if (item[1].format) { if (item[1].format) {
viewInfo.infoArray.push({ label: item[1].label, value: item[1].format(table.selected[0][item[0]]) }); viewInfo.infoArray.push({ label: item[1].label, value: item[1].format(table.selected[0][item[0]]) });
@ -1169,8 +1152,8 @@ const onView = () => {
viewInfo.infoArray.push({ label: item[1].label, value: table.selected[0][item[0]] }); viewInfo.infoArray.push({ label: item[1].label, value: table.selected[0][item[0]] });
} }
} }
drawerRef.value.show();
} }
drawerRef.value.show();
} }
}; };

4
io.sc.platform.core.frontend/src/platform/components/toolbar/ChildrenBtn.vue

@ -1,7 +1,7 @@
<template> <template>
<q-item clickable :disable="button[0].enableIf ? !button[0].enableIf(gridProp.gridSelected) : false"> <q-item clickable :disable="button[0].enableIf ? !button[0].enableIf(gridProp.gridSelected) : false">
<q-item-section> <q-item-section>
<q-item-label><q-icon v-if="button[0].icon" :name="button[0].icon" size="20px"></q-icon> {{ button[0].label }}</q-item-label> <q-item-label><q-icon v-if="button[0].icon" :name="button[0].icon" left size="20px"></q-icon> {{ button[0].label }}</q-item-label>
</q-item-section> </q-item-section>
<q-item-section side> <q-item-section side>
<q-icon name="keyboard_arrow_right" /> <q-icon name="keyboard_arrow_right" />
@ -21,7 +21,7 @@
@click="buttonClick(childrenBtn)" @click="buttonClick(childrenBtn)"
> >
<q-item-section> <q-item-section>
<q-item-label><q-icon v-if="childrenBtn.icon" :name="childrenBtn.icon" size="20px"></q-icon> {{ childrenBtn.label }}</q-item-label> <q-item-label><q-icon v-if="childrenBtn.icon" :name="childrenBtn.icon" left size="20px"></q-icon> {{ childrenBtn.label }}</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
</template> </template>

4
io.sc.platform.core.frontend/src/platform/components/toolbar/WToolbar.vue

@ -36,7 +36,7 @@
@click="buttonClick(childrenBtn)" @click="buttonClick(childrenBtn)"
> >
<q-item-section> <q-item-section>
<q-item-label><q-icon v-if="childrenBtn.icon" :name="childrenBtn.icon" size="20px"></q-icon> {{ childrenBtn.label }}</q-item-label> <q-item-label><q-icon v-if="childrenBtn.icon" :name="childrenBtn.icon" left size="20px"></q-icon> {{ childrenBtn.label }}</q-item-label>
</q-item-section> </q-item-section>
</q-item> </q-item>
</template> </template>
@ -74,7 +74,7 @@
> >
<q-item-section> <q-item-section>
<q-item-label <q-item-label
><q-icon v-if="childrenBtn.data.icon" :name="childrenBtn.data.icon" size="20px"></q-icon> {{ childrenBtn.data.label }}</q-item-label ><q-icon v-if="childrenBtn.data.icon" :name="childrenBtn.data.icon" left size="20px"></q-icon> {{ childrenBtn.data.label }}</q-item-label
> >
</q-item-section> </q-item-section>
</q-item> </q-item>

Loading…
Cancel
Save