licailing 4 лет назад
Родитель
Сommit
9dd10dd27c

+ 6 - 0
src/main/java/com/izouma/nineth/utils/JpaUtils.java

@@ -96,6 +96,9 @@ public class JpaUtils {
                                 .toLocalDateTime((String) list.get(0), "yyyy-MM-dd HH:mm:ss");
                         and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
                     } else if (list.size() == 2) {
+                        LocalDateTime start = DateTimeUtils
+                                .toLocalDateTime((String) list.get(0), "yyyy-MM-dd HH:mm:ss");
+                        and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
                         LocalDateTime end = DateTimeUtils
                                 .toLocalDateTime((String) list.get(1), "yyyy-MM-dd HH:mm:ss");
                         and.add(criteriaBuilder.lessThanOrEqualTo(root.get(property), end));
@@ -119,6 +122,9 @@ public class JpaUtils {
                                 .toLocalDate((String) list.get(0), "yyyy-MM-dd");
                         and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
                     } else if (list.size() == 2) {
+                        LocalDate start = DateTimeUtils
+                                .toLocalDate((String) list.get(0), "yyyy-MM-dd");
+                        and.add(criteriaBuilder.greaterThanOrEqualTo(root.get(property), start));
                         LocalDate end = DateTimeUtils
                                 .toLocalDate((String) list.get(1), "yyyy-MM-dd");
                         and.add(criteriaBuilder.lessThanOrEqualTo(root.get(property), end));

+ 71 - 0
src/main/vue/src/components/CreatedAtPicker.vue

@@ -0,0 +1,71 @@
+<template>
+    <el-date-picker
+        v-model="date"
+        type="datetimerange"
+        :picker-options="pickerOptions"
+        range-separator="至"
+        start-placeholder="创建开始时间"
+        end-placeholder="创建结束时间"
+        align="right"
+        value-format="yyyy-MM-dd HH:mm:ss"
+        :default-time="['00:00:00', '23:59:59']"
+        @change="changeSelect"
+    >
+    </el-date-picker>
+</template>
+
+<script>
+export default {
+    props: ['value'],
+    data() {
+        return {
+            date: '',
+            pickerOptions: {
+                shortcuts: [
+                    {
+                        text: '最近一周',
+                        onClick(picker) {
+                            const end = new Date();
+                            const start = new Date();
+                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
+                            picker.$emit('pick', [start, end]);
+                        }
+                    },
+                    {
+                        text: '最近一个月',
+                        onClick(picker) {
+                            const end = new Date();
+                            const start = new Date();
+                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
+                            picker.$emit('pick', [start, end]);
+                        }
+                    },
+                    {
+                        text: '最近三个月',
+                        onClick(picker) {
+                            const end = new Date();
+                            const start = new Date();
+                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
+                            picker.$emit('pick', [start, end]);
+                        }
+                    }
+                ]
+            }
+        };
+    },
+    methods: {
+        changeSelect(val) {
+            this.$emit('input', val);
+        }
+    },
+    watch: {
+        value() {
+            if (this.value) {
+                this.date = this.value;
+            }
+        }
+    }
+};
+</script>
+
+<style lang="less" scoped></style>

+ 2 - 0
src/main/vue/src/main.js

@@ -18,6 +18,7 @@ import PageTitle from '@/components/PageTitle';
 import MinterSelect from '@/components/MinterSelect';
 import ObjectUpload from '@/components/ObjectUpload';
 import CollectionSearch from '@/components/CollectionSearch';
+import CreatedAtPicker from '@/components/CreatedAtPicker';
 
 import 'normalize.css/normalize.css';
 import './styles/element_theme/index.css';
@@ -60,6 +61,7 @@ Vue.component('page-title', PageTitle);
 Vue.component('minter-select', MinterSelect);
 Vue.component('object-upload', ObjectUpload);
 Vue.component('collection-search', CollectionSearch);
+Vue.component('created-at-picker', CreatedAtPicker);
 Vue.mixin(Formatters);
 Vue.prototype.$theme = theme;
 console.log(theme);

+ 4 - 2
src/main/vue/src/views/AirDropList.vue

@@ -15,6 +15,7 @@
             </el-button> -->
         </page-title>
         <div class="filters-container">
+            <created-at-picker v-model="createdAt" @input="getData"></created-at-picker>
             <el-input
                 placeholder="搜索..."
                 v-model="search"
@@ -90,7 +91,8 @@ export default {
             typeOptions: [
                 { label: '藏品', value: 'asset' },
                 { label: '兑换券', value: 'coupon' }
-            ]
+            ],
+            createdAt: ''
         };
     },
     computed: {
@@ -107,7 +109,7 @@ export default {
             return '';
         },
         beforeGetData() {
-            return { search: this.search, query: { del: false } };
+            return { search: this.search, query: { del: false, createdAt: this.createdAt } };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;

+ 4 - 2
src/main/vue/src/views/BlindBoxList.vue

@@ -21,6 +21,7 @@
             </el-button> -->
         </page-title>
         <div class="filters-container">
+            <created-at-picker v-model="createdAt" @input="getData"></created-at-picker>
             <el-input
                 placeholder="搜索..."
                 v-model="search"
@@ -119,7 +120,8 @@ export default {
                 { label: '官方', value: 'OFFICIAL' },
                 { label: '用户铸造', value: 'USER' },
                 { label: '转让', value: 'TRANSFER' }
-            ]
+            ],
+            createdAt: ''
         };
     },
     computed: {
@@ -143,7 +145,7 @@ export default {
             return '';
         },
         beforeGetData() {
-            return { search: this.search, query: { del: false, type: 'BLIND_BOX' } };
+            return { search: this.search, query: { del: false, type: 'BLIND_BOX', createdAt: this.createdAt } };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;

+ 4 - 2
src/main/vue/src/views/CollectionList.vue

@@ -21,6 +21,7 @@
             </el-button> -->
         </page-title>
         <div class="filters-container">
+            <created-at-picker v-model="createdAt" @input="getData"></created-at-picker>
             <el-input
                 placeholder="搜索..."
                 v-model="search"
@@ -148,7 +149,8 @@ export default {
                 { label: '转让', value: 'TRANSFER' }
             ],
             sort: { sort: 'desc' },
-            sortStr: 'sort,desc'
+            sortStr: 'sort,desc',
+            createdAt: ''
         };
     },
     computed: {
@@ -172,7 +174,7 @@ export default {
             return '';
         },
         beforeGetData() {
-            return { search: this.search, query: { del: false, source: 'OFFICIAL' } };
+            return { search: this.search, query: { del: false, source: 'OFFICIAL', createdAt: this.createdAt } };
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;

+ 26 - 3
src/main/vue/src/views/OrderList.vue

@@ -21,7 +21,7 @@
             </el-button>
         </page-title>
         <div class="filters-container">
-            <el-select v-model="status" placeholder="筛选状态" clearable @change="getData">
+            <el-select v-model="status" placeholder="筛选状态" clearable @change="getData" style="margin-right: 10px">
                 <el-option
                     v-for="item in statusOptions"
                     :key="item.value"
@@ -29,6 +29,7 @@
                     :label="item.label"
                 ></el-option>
             </el-select>
+            <created-at-picker v-model="createdAt" @input="getData"></created-at-picker>
             <el-input
                 placeholder="搜索..."
                 v-model="search"
@@ -109,8 +110,10 @@
 <script>
 import { mapState } from 'vuex';
 import pageableTable from '@/mixins/pageableTable';
+import CreatedAtPicker from '../components/CreatedAtPicker.vue';
 
 export default {
+    components: { CreatedAtPicker },
     name: 'OrderList',
     mixins: [pageableTable],
     data() {
@@ -129,7 +132,8 @@ export default {
                 { label: '微信', value: 'WEIXIN' },
                 { label: '支付宝', value: 'ALIPAY' }
             ],
-            status: null
+            status: null,
+            createdAt: []
         };
     },
     computed: {
@@ -152,8 +156,27 @@ export default {
             }
             return '';
         },
+        getParams() {
+            let data = {
+                sort: 'createdAt,desc',
+                query: {
+                    del: false
+                }
+            };
+            if (this.search) {
+                data.search = this.search;
+            }
+            if (this.createdAt) {
+                data.query.createdAt = this.createdAt;
+            }
+            if (this.status) {
+                data.query.status = this.status;
+            }
+            return data;
+        },
         beforeGetData() {
-            return { search: this.search, query: { del: false, status: this.status } };
+            // return { search: this.search, query: { del: false, status: this.status } };
+            return this.getParams();
         },
         toggleMultipleMode(multipleMode) {
             this.multipleMode = multipleMode;

+ 5 - 3
src/main/vue/src/views/UserList.vue

@@ -9,6 +9,7 @@
             </el-button>
         </page-title>
         <div class="filters-container" @keyup.enter="getData">
+            <created-at-picker v-model="createdAt" @input="getData"></created-at-picker>
             <el-input placeholder="搜索..." v-model="search" clearable class="filter-item search">
                 <el-button @click="getData" slot="append" icon="el-icon-search"> </el-button>
             </el-input>
@@ -82,7 +83,8 @@ export default {
             multipleMode: false,
             search: '',
             url: '/user/all',
-            downloading: false
+            downloading: false,
+            createdAt: ''
         };
     },
     computed: {
@@ -93,7 +95,7 @@ export default {
     },
     methods: {
         beforeGetData() {
-            return { search: this.search, query: {} };
+            return { search: this.search, query: { createdAt: this.createdAt } };
         },
         afterGetData(res) {
             // let i = this.tableData.findIndex(i => i.username === 'root');
@@ -171,7 +173,7 @@ export default {
                     .then(res => {
                         let el = document.createElement('div');
                         new ClipboardJS(el, {
-                            text: function(trigger) {
+                            text: function (trigger) {
                                 return res;
                             }
                         });