layout-search.vue 4.2 KB
<template>
    <div class="search-box">
        <h3>查询条件:</h3>
        <i-form :label-width="60">
            <i-form-item label="uid:">
                <i-input v-model="forms.uid" placeholder="请输入uid"></i-input>
            </i-form-item>
            <i-form-item label="os:">
                <i-input v-model="forms.os" placeholder="请输入(android or iOS)"></i-input>
            </i-form-item>
            <i-form-item label="pt:">
                <i-input v-model="forms.pt" placeholder="请输入pt"></i-input>
            </i-form-item>
            <i-form-item label="pn:">
                <i-input v-model="forms.pn" placeholder="请输入pn"></i-input>
            </i-form-item>
            <i-form-item label="av:">
                <i-input v-model="forms.av" placeholder="请输入av"></i-input>
            </i-form-item>
            <i-form-item label="times:">
                <Date-picker
                        type="datetimerange"
                        v-model="dateRange"
                        placement="bottom-start"
                        format="yyyy-MM-dd HH:mm:ss"
                        class="dt-limit"
                        :options="dtLimitOpt"
                        placeholder="选择开始结束日期"></Date-picker>
            </i-form-item>
            <i-form-item>
                <i-button type="primary" @click="search">查询</i-button>
                <i-button type="warning" @click="reset">清空</i-button>
            </i-form-item>
        </i-form>
    </div>
</template>

<script>
import moment from 'moment';
import {FETCH_FULLTEXT_REQUEST} from 'store/types';
export default {
    name: 'LayoutSearch',
    data() {
        return {
            forms: {
                uid: '',
                os: '',
                pt: '',
                pn: '',
                av: '',
                ts_start: '',
                ts_end: ''
            },
            dateRange: [moment().add(-7, 'days').format('YYYY-MM-DD HH:mm:ss'), moment().format('YYYY-MM-DD HH:mm:ss')],
            dtLimitOpt: {
                shortcuts: [
                    {
                        text: '最近一周',
                        value() {
                            const end = new Date();
                            const start = new Date();

                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
                            return [start, end];
                        }
                    },
                    {
                        text: '最近一个月',
                        value() {
                            const end = new Date();
                            const start = new Date();

                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
                            return [start, end];
                        }
                    },
                    {
                        text: '最近三个月',
                        value() {
                            const end = new Date();
                            const start = new Date();

                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
                            return [start, end];
                        }
                    }
                ]
            }
        };
    },
    methods: {
        search() {
            this.forms.ts_start = this.dateRange[0] ? moment(this.dateRange[0]).unix() : '';
            this.forms.ts_end = this.dateRange[1] ? moment(this.dateRange[1]).unix() : '';

            this.$store.dispatch(FETCH_FULLTEXT_REQUEST, Object.assign(this.forms, {
                page: 1
            }));
        },
        reset() {
            this.forms = {
                uid: '',
                os: '',
                pt: '',
                pn: '',
                av: '',
                ts_start: '',
                ts_end: ''
            };
            this.dateRange = [];
            this.$store.dispatch(FETCH_FULLTEXT_REQUEST, Object.assign(this.forms, {
                page: 1
            }));
        }
    }
};
</script>

<style lang="scss">
.search-box {

    .ivu-form-item {
        margin-bottom: 10px;
    }
    h3 {
        margin-bottom: 10px;
    }
    .dt-limit {
        width: 280px;
    }
}
</style>