From d0aa0912e8b70ae7fa3c9045e2085c8a8bd4db40 Mon Sep 17 00:00:00 2001 From: jinlong12 Date: Wed, 28 Nov 2018 13:59:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=AB=98=E7=BA=A7=E6=90=9C=E7=B4=A2=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/htmls/search.html | 43 +++++++++++++++++++++ server/app.js | 2 + server/devApp.js | 5 +++ server/routes/search.js | 53 +++++++++++++++++++++++++ src/components/sider/sider.t.html | 5 +++ src/pages/search/container.js | 64 +++++++++++++++++++++++++++++++ src/pages/search/search.m.less | 28 ++++++++++++++ src/pages/search/search.t.html | 7 ++++ src/stores/SearchStore.js | 37 ++++++++++++++++++ 9 files changed, 244 insertions(+) create mode 100644 resources/htmls/search.html create mode 100644 server/routes/search.js create mode 100644 src/pages/search/container.js create mode 100644 src/pages/search/search.m.less create mode 100644 src/pages/search/search.t.html create mode 100644 src/stores/SearchStore.js diff --git a/resources/htmls/search.html b/resources/htmls/search.html new file mode 100644 index 00000000..ea9d2bb8 --- /dev/null +++ b/resources/htmls/search.html @@ -0,0 +1,43 @@ + + +<% if (web) { %> +@@include('./common/headElements.html') +<% } else { %> +<$include src="./common/headElements.html" /> +<% } %> + +<% if (web) { %> +@@include('./common/resourceElements.html') +<% } else { %> +<$include src="./common/resourceElements.html" /> +<% } %> + + +
+ +<% if (web) { %> +@@include('./common/bottomElements.html') +<% } else { %> +<$include src="./common/bottomElements.html" /> +<% } %> + + + \ No newline at end of file diff --git a/server/app.js b/server/app.js index 83af5d46..68153437 100644 --- a/server/app.js +++ b/server/app.js @@ -73,6 +73,8 @@ app.use('/*/txs/additional-count', overview); app.use('/*/users/*', user); app.use('/*/contracts/*', contract); +const search = require('./routes/search'); +app.use('/search', search); //{pages}// app.post('/common/getLoginInfo', function(req, res) { diff --git a/server/devApp.js b/server/devApp.js index a049136f..3b1288b6 100644 --- a/server/devApp.js +++ b/server/devApp.js @@ -105,6 +105,11 @@ app.get('/pages/ledgers.html', function(req, res) { res.render('ledgers', { page: 'ledgers/', title: 'Ledgers' }); }); +app.get('/pages/search.html', function(req, res) { + res.type('html'); + res.render('search', { page: 'search/', title: 'Search' }); +}); + //{pages}// app.get('/checkUser', function(req, res) { diff --git a/server/routes/search.js b/server/routes/search.js new file mode 100644 index 00000000..40bd98c0 --- /dev/null +++ b/server/routes/search.js @@ -0,0 +1,53 @@ +'use strict'; + +const express = require('express'); +const _ = require('lodash'); +const router = express.Router(); +const { resultData } = require('../common/utils'); + +router.post('/getTableData', function(req, res) { + res.type('json'); + let params = req.body, + ret = {}; + + const datas = _.times(100, function(i) { + let num = i + 1; + + return { + test1: num + 100000, + test2: '测试' + num, + test4: _.random(10, 90) + '%', + test5: _.random(10, 90) + '%', + test6: _.random(10, 90) + '%', + test8: _.random(1, 10), + test9: _.random(1, 10), + test10: _.random(1, 10), + test11: _.random(1, 10), + test12: _.random(1, 10), + test14: _.random(10, 90) + '%', + test15: _.random(10, 90) + '%', + test16: _.random(1, 24), + test17: _.random(10, 90) + '%', + test18: _.random(1, 100000) + }; + }); + + const pageIndex = params.currentPage, + pageSize = params.pageSize, + start = (pageIndex - 1) * pageSize, + end = pageIndex * pageSize, + data = datas.filter((obj, i) => { + if (i >= start && i < end) { + return true; + } + }); + + Object.assign(ret, resultData, { + data, + totalCount: 100 + }); + + res.send(ret); +}); + +module.exports = router; \ No newline at end of file diff --git a/src/components/sider/sider.t.html b/src/components/sider/sider.t.html index 81150a87..7634507e 100644 --- a/src/components/sider/sider.t.html +++ b/src/components/sider/sider.t.html @@ -1,6 +1,11 @@
+ + + 区块搜索 + + 账本摘要 diff --git a/src/pages/search/container.js b/src/pages/search/container.js new file mode 100644 index 00000000..a5b63ed8 --- /dev/null +++ b/src/pages/search/container.js @@ -0,0 +1,64 @@ +import React, { Component } from 'react'; +import { observer, inject } from 'mobx-react'; +import nj from 'nornj'; +import { registerTmpl } from 'nornj-react'; +import '../../common/containerConfig'; +import 'flarej/lib/components/antd/button'; +import 'flarej/lib/components/antd/input'; +import 'flarej/lib/components/antd/breadcrumb'; +import 'flarej/lib/components/antd/table'; +import { autobind } from 'core-decorators'; +import '../../components/header'; +import '../../components/sider'; +import { Input, Select, Icon, Message } from 'antd'; +import ContainerHoc from '../../components/higherOrders/container'; +import styles from './search.m.less'; +import tmpls from './search.t.html'; +import SearchStore from '../../stores/SearchStore'; +const searchStore = new SearchStore(); +const Option = Select.Option; + +//页面容器组件 +@inject('store') +@observer +class Container extends Component { + componentDidMount() { + const closeLoading = Message.loading('正在加载数据...', 0); + this.props.store.getTableData(1, this.props.store.pageSize).then(() => closeLoading()); + } + + render() { + return this.props.tmpls[0](this, { + styles + }); + } +} +ContainerHoc('Container', Container, searchStore); + +@registerTmpl('DataTable') +@inject('store') +@observer +class DataTable extends Component { + searchItem = () => ( + + ) + + selectBefore = () => ( + + ) + + render() { + return tmpls.dataTable(this.state, this.props, this, { + styles + }); + } +} + +if (module.hot) { + module.hot.accept(); + njr.renderTmplTag({ target: '#container' }); +} \ No newline at end of file diff --git a/src/pages/search/search.m.less b/src/pages/search/search.m.less new file mode 100644 index 00000000..f84371ec --- /dev/null +++ b/src/pages/search/search.m.less @@ -0,0 +1,28 @@ +.content { + .inputTable { + min-width: 200px; + width: 248px; + margin-right: 10px; + border-color: #d9d9d9; + } + + .bgPageInviting { + padding: 10px; + .pageSubTitle{ + font-size: 18px; + font-weight: normal; + position: relative; + line-height: 16px; + padding-left: 10px; + border-bottom: 1.6px solid #eee; + &:before{ + content: ''; + position: absolute; + left: 0; + height: 16px; + width: 3px; + background: #e13a25; + } + }; + } +} \ No newline at end of file diff --git a/src/pages/search/search.t.html b/src/pages/search/search.t.html new file mode 100644 index 00000000..bd05d65c --- /dev/null +++ b/src/pages/search/search.t.html @@ -0,0 +1,7 @@ + \ No newline at end of file diff --git a/src/stores/SearchStore.js b/src/stores/SearchStore.js new file mode 100644 index 00000000..8d52c1ee --- /dev/null +++ b/src/stores/SearchStore.js @@ -0,0 +1,37 @@ +import { observable, computed, action, transaction } from 'mobx'; +import { fetchData } from 'flarej/lib/utils/fetchConfig'; +import { autobind } from 'core-decorators'; +import { Notification } from 'flarej/lib/components/antd/notification'; + +export default class SearchStore { + @observable pageIndex = 1; + @observable pageSize = 10; + @observable count = 0; + @observable tableData = []; + + @autobind + @action + getTableData(currentPage = this.pageIndex, pageSize = this.pageSize) { + return fetchData(`${G_WEB_DOMAIN}/search/getTableData`, result => { + transaction(() => { + if (result.success) { + this.pageIndex = currentPage; + this.pageSize = pageSize; + this.count = result.totalCount; + this.tableData = result.data; + } else { + this.pageIndex = 1; + this.pageSize = 10; + this.count = 0; + this.tableData = []; + Notification.error({ description: '获取表格数据出错,异常是:' + result.msg, duration: null }); + } + }); + }, { + currentPage, + pageSize, + }, { method: 'post' }).catch((ex) => { + Notification.error({ description: '获取表格数据出错,错误是:' + ex, duration: null }); + }); + } +} \ No newline at end of file -- GitLab