1.2.0 • Published 7 years ago

shareui-xzqh v1.2.0

Weekly downloads
4
License
ISC
Repository
github
Last release
7 years ago

shareui-xzqh

公司内部使用:基于react以及EOS的行政区划组件,包括:区、街道、社区、网格、路名、门牌、室号。其他情况自己编写。

sf

安装

npm install --save shareui-xzqh

依赖js

  • eos3.js

  • zeus.auth.js(内置获取登录用户所在行政区划)

  • auth/xzqhService

  • building/addressService

使用

为了方便,该组件注入了初始化时的行政区划:_initQu(代表登录用户所在的区),_initJd(代表登录用户所在的街道),_initSq(代表登录用户所在的社区), 所以在操作如“重置”时不要把他们也置空,见如下在redux中的示例,react下同理。


在React下使用

import React, { Component } from 'react';

import './static/sslib/eos3/eos3.min';
import './static/sslib/zeus.auth';
import './static/sslib/auth/xzqhService';
import './static/sslib/building/addressService';
import { Qu, Jd, Sq, Wg, Lm, Mp, Sh } from 'path/to/shareui-xzqh';

class Demo extends Component{
    constructor(){
        super(...arguments);

        this.state = {
        };
    }
    componentDidMount(){
        ajaxloading('eos3');
    }
    changeXzqh(type, val, isInit){
        this.setState({
            [type]: val
        }, () => {
            //todo 改变行政区划后的逻辑
            if(isInit){
                //todo 初始化完成
            }
        });
    }
    render(){
        return (
            <div>
                <div>
                    行政区划:<Qu {...this.state} onChange={this.changeXzqh.bind(this)}/>
                    <Jd {...this.state} onChange={this.changeXzqh.bind(this)}/>
                    <Sq {...this.state} onChange={this.changeXzqh.bind(this)}/>
                    网格:<Wg {...this.state} onChange={this.changeXzqh.bind(this)}/>
                    <div style={{marginTop: 25}}>
                        路名:<Lm {...this.state} onChange={this.changeXzqh.bind(this)}/>
                        门牌:<Mp {...this.state} onChange={this.changeXzqh.bind(this)}/>
                        室号:<Sh {...this.state} onChange={this.changeXzqh.bind(this)} requestType="getAddrOrBuildOrUnitList"/>
                    </div>
                </div>
            </div>
        );
    }
}

export default Demo;

包括:区(Qu)、街道(Jd)、社区(Sq)、网格(Wg)、路名(Lm)、门牌(Mp)、室号(Sh),根据需要引入;

注意:一定要传{...state}把所有的状态传入;和onChange={this.changeXzqh.bind(this)}改变行政区划时的回调函数

在Redux下使用

经常我们要在表单中操作,要实现:初始化后读取列表;重置时不能重置登录用户所在的行政区划;

class Home extends Component{
    //监听改变行政区划,设置state
    changeXzqh(type, value, isInit){
        let { dispatch } = this.props;
        dispatch(homeAction.changeForm(type, value));
        //监听初始化完成
        if(isInit){
            this.refs.submitBtn.click();
        }
    }
    componentDidMount(){
        ajaxloading('eos3');
    }
    handleSubmit(e){
        e.preventDefault();
        let { home } = this.props;
        console.info(home);
    }
    //监听重置事件
    handleReset(e){
        e.preventDefault();
        let { home, dispatch } = this.props;
        
        //首先清空除_initQu,_initJd,_initSq外实有state字段为空
        for(let [key, val] of Object.entries(home)){
            if(key !== '_initQu' && key !== '_initJd' && key !== '_initSq'){
                dispatch(homeAction.changeForm(key, ''));
            }
        }
        //设置初始化行政区划
        if(home._initQu){
            dispatch(homeAction.changeForm('qu', home._initQu));
        }
        if(home._initJd){
            dispatch(homeAction.changeForm('jd', home._initJd));
        }
        if(home._initSq){
            dispatch(homeAction.changeForm('sq', home._initSq));
        }
    }
    changeField(fieldName, value){
        let { dispatch } = this.props;
        dispatch(homeAction.changeForm(fieldName, value));
    }
    render(){
        let { home } = this.props;
        return (
            <div className="ui-content">
                <div className="ui-title">
                    <ol className="breadcrumb">
                        <li>采集核实</li>
                    </ol>
                    <div className="title-btns">
                        <button type="button" className="btn btn-danger noCheckList">已排查未关联地址列表</button>
                        {' '}
                        <button type="button" className="btn btn-info faq">常见问题</button>
                    </div>
                </div>
                <div className="ui-page-main">
                    <div className="ui-page-main-wrap">
                        <div className="page-main-item-inset">
                            <form className="form-search-list getAddressList clearfix"
                                  onReset={this.handleReset.bind(this)}
                                  onSubmit={this.handleSubmit.bind(this)}>
                                <div className="clearfix">
                                    <div className="item g-14">
                                        <label>行政区划:</label>
                                        <div className="sub-item clearfix g-12">
                                            <Qu className="g-3" {...home} onChange={this.changeXzqh.bind(this)}/>
                                            <Jd className="g-4" {...home} onChange={this.changeXzqh.bind(this)}/>
                                            <Sq className="g-4" {...home} onChange={this.changeXzqh.bind(this)}/>
                                        </div>
                                    </div>
                                    <div className="item">
                                        <label>是否关联:</label>
                                        <div className="sub-item clearfix">
                                            <select value={home.glqk || ''} name="glqk" className="form-control"
                                                    onChange={e => this.changeField('glqk', e.target.value)}>
                                                <option value="">全部</option>
                                                <option value="1">已关联</option>
                                                <option value="0">未关联</option>
                                            </select>
                                        </div>
                                    </div>
                                </div>
                                <div className="clearfix">
                                    <div className="item">
                                        <label>路名:</label>
                                        <div className="sub-item clearfix">
                                            <select value={home.jlx || ''} className="form-control" name="jlx"
                                                    onChange={e => this.changeField('jlx', e.target.value)}>
                                                <option value="">全部</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div className="item">
                                        <label>门牌:</label>
                                        <div className="sub-item clearfix">
                                            <select value={home.mphm || ''} className="form-control g-4 mphm" name="mphm"
                                                    onChange={e => this.changeField('mphm', e.target.value)}>
                                                <option value="">全部</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div className="item">
                                        <label className="g-4">是否完成排查:</label>
                                        <div className="sub-item clearfix">
                                            <select value={home.cjqk || ''} name="cjqk" className="g-4 form-control"
                                                    onChange={e => this.changeField('cjqk', e.target.value)}>
                                                <option value=""></option>
                                                <option value="0">未完成</option>
                                                <option value="1">部分完成</option>
                                                <option value="2">全部完成</option>
                                            </select>
                                        </div>
                                    </div>
                                    <div className="item btn-item clearfix">
                                        <button ref="submitBtn" type="submit" className="btn btn-primary">查询</button>
                                        <button type="reset" className="btn btn-default">重置</button>
                                    </div>
                                </div>
                            </form>
                        </div>
                        <div className="page-part-split"></div>
                        <div className="table-toolbox clearfix">
                            <div className="pull-left toolbox-left">
                                <span>(注:红色字表示该地址存在未核实人员)</span>
                            </div>
                        </div>
                        <div className="has-data">
                            <div id="verificatTab"></div>
                            <div id="verificatPagebar"></div>
                        </div>
                    </div>
                </div>
            </div>
        );
    }
}

API

  • onChange:改变行政区划时的回调函数,参数为:

    • type: 状态名;

    • val:值;

    • isInit: (布尔值)是否初始化完成,可以通过这个参数监听初始化完成;

  • stateName: 配置将要注入的状态名,未配置时值如下:

{
    qu: 'qu',
    jd: 'jd',
    sq: 'sq',
    wg: 'wg',
    lm: 'lm',
    mp: 'mp',
    sh: 'sh'
}

这个字段在如有多个行政区划时很有用,可以配置多个stateName防止重名,见下面多个行政区划的情况。

  • requestType: 获取室号方法,Sh组件特有,默认getBuildingOrUnitList,还可以配置成getAddrOrBuildOrUnitList

  • className: 字符串,默认:form-control,可以通过配置改选项增加类名,如:<Qu className="qu qu2" .../>,则Qu组件的类名为:form-control qu qu2

  • style: 样式,对象类型,默认无,用于配置组件的样式,如隐藏:style={{display: 'none'}}

多个行政区划

详见example下的示例。。。。。。

TODO

  • 更改样式为社区4.0的shareui风格;

  • 根据需要开放更多配置;

1.2.0

7 years ago

1.1.9

7 years ago

1.1.8

7 years ago

1.1.7

7 years ago

1.1.6

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.9

7 years ago

1.0.8

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago