diff --git a/src/main/java/com/vxnet/pms/repository/BaseRepository.java b/src/main/java/com/vxnet/pms/repository/BaseRepository.java index 771e6c2..4f3cb69 100644 --- a/src/main/java/com/vxnet/pms/repository/BaseRepository.java +++ b/src/main/java/com/vxnet/pms/repository/BaseRepository.java @@ -101,7 +101,7 @@ public abstract class BaseRepository { public Flux> getRows(String organization, String table, Map params, Pageable pageable) { params = preprocessParams(params); String orderBy = pageable.getSort().isEmpty() - ? "1" + ? "" : pageable.getSort().stream().map(order -> order.getProperty() + " " + order.getDirection()).collect(Collectors.joining(", ")); long page = pageable.getPageNumber(); long size = pageable.getPageSize(); @@ -157,7 +157,8 @@ public abstract class BaseRepository { sql.append(fields.isEmpty() ? " * " : fields.toString()); sql.append(String.format(" FROM %s ", table)); sql.append(wheres.toString()); - sql.append(String.format(" ORDER BY %s", orderBy)); + // 使用与RegionRepository和DictRepository一致的排序处理方式 + if (!orderBy.isEmpty()) sql.append(" ORDER BY ").append(orderBy); if (size > 0) sql.append(String.format(" LIMIT %d OFFSET %d", size, page * size)); DatabaseClient.GenericExecuteSpec executeSpec = db.sql(sql.toString()).bind("organization", organization); diff --git a/src/main/webapp/app/entities/stock/stock.component.ts b/src/main/webapp/app/entities/stock/stock.component.ts index 4fbf129..c1c9795 100644 --- a/src/main/webapp/app/entities/stock/stock.component.ts +++ b/src/main/webapp/app/entities/stock/stock.component.ts @@ -37,9 +37,9 @@ export default defineComponent({ // 过滤参数 const filterParams = ref({ - number: null, - name: null, - property: null, + number: { op: '=', value: null }, + name: { op: '=', value: null }, + property: { op: '=', value: null }, }); const handleFilter = () => { @@ -50,6 +50,9 @@ export default defineComponent({ const sort = () => { const result = [`${propOrder.value},${reverse.value ? 'desc' : 'asc'}`]; + if (propOrder.value !== 'id') { + result.push('id'); + } return result; }; @@ -57,9 +60,10 @@ export default defineComponent({ isFetching.value = true; try { const processedParams = showFilter.value - ? Object.entries(filterParams.value).reduce((acc, [key, value]) => { - // 将空字符串转换为null,确保查询条件不生效 - acc[key] = value === '' ? null : value; + ? Object.entries(filterParams.value).reduce((acc, [key, { op, value }]) => { + if (value !== null && value !== '') { + acc[key] = { op, value }; + } return acc; }, {}) : {}; @@ -110,6 +114,11 @@ export default defineComponent({ handleSyncList(); }; + const handlePageSizeChange = () => { + page.value = 1; // 重置页码 + handleSyncList(); + }; + handleSyncList(); return { @@ -126,6 +135,7 @@ export default defineComponent({ handleSyncList, handleFilter, handlePageChange, + handlePageSizeChange, prepareDelete, deleteStock, changeOrder, diff --git a/src/main/webapp/app/entities/stock/stock.vue b/src/main/webapp/app/entities/stock/stock.vue index 9fe1c14..dc4c557 100644 --- a/src/main/webapp/app/entities/stock/stock.vue +++ b/src/main/webapp/app/entities/stock/stock.vue @@ -28,15 +28,39 @@
- +
+ + +
- +
+ + +
- +
+ + +
@@ -98,18 +122,26 @@
-
+
+ +
+
{{ $t('global.item-count', { first: (page - 1) * itemsPerPage + 1, - second: page * itemsPerPage < totalItems ? page * itemsPerPage : totalItems, + second: itemsPerPage > 0 && page * itemsPerPage < totalItems ? page * itemsPerPage : totalItems, total: totalItems, }) }}
-
+
(date ? i18n.d(Date.parse(date), format) : null); + const formatDateI18N = (date, format = 'short') => (date ? i18n.d(dayjs(date).toDate(), format) : null); const i18nUtils = { formatDateI18N, formatDateLong: date => formatDateI18N(date, 'long'), diff --git a/src/main/webapp/i18n/zh-cn/global.json b/src/main/webapp/i18n/zh-cn/global.json index 18f6ffb..6590828 100644 --- a/src/main/webapp/i18n/zh-cn/global.json +++ b/src/main/webapp/i18n/zh-cn/global.json @@ -118,10 +118,11 @@ "ribbon": { "dev": "开发环境" }, - "item-count": "显示第 { first } - { second } 条,共 { total } 条" + "item-count": "显示第 { first } - { second } 行,共 { total } 行" }, "entity": { "action": { + "all": "全部", "actions": "操作", "addblob": "增加 BLOB", "addimage": "增加图片", @@ -150,6 +151,7 @@ "upload": "上传", "view": "查看", "tree": "树形", + "perpage": "每页{ itemsPerPage }行", "page": "分页", "show": "显示 { otherEntity }", "select": "(选择)", diff --git a/vite.config.mts b/vite.config.mts index 75832a2..f248ea8 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -44,6 +44,7 @@ const config = defineConfig({ '@': fileURLToPath(new URL('./src/main/webapp/app/', import.meta.url)), '@content': fileURLToPath(new URL('./src/main/webapp/content/', import.meta.url)), }, + extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'], }, define: { I18N_HASH: '"generated_hash"',