529 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			529 lines
		
	
	
		
			27 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { message } from "antd/lib/index";
 | 
						|
import { Button, Popconfirm, Row, Col, Checkbox, Radio, Form, Input, Select, Table, Upload, Icon, PageHeader, Modal, Spin } from 'antd';
 | 
						|
import React from 'react';
 | 
						|
import { initFilter, extendRule, extendInclude, setDataFieldValue, guid, initQueryFilter } from "../../../utils/common";
 | 
						|
import ReactToPrint from "react-to-print";
 | 
						|
import styles from '../../CustomPages/HI/StepForm.css';
 | 
						|
import SEstyles from './SE.css';
 | 
						|
import XLSX from 'xlsx';
 | 
						|
import { connect } from 'dva';
 | 
						|
import moment from 'moment';
 | 
						|
 | 
						|
const Option = Select.Option;
 | 
						|
const answer = {
 | 
						|
    color: 'blue',
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
class SE018PaperPage extends React.Component {
 | 
						|
    constructor(props) {
 | 
						|
        super(props);
 | 
						|
        let viewAll = false;
 | 
						|
        if ((this.props.formParam && this.props.formParam.viewAll) || this.props.data.tableKey == undefined) {
 | 
						|
            viewAll = true;
 | 
						|
        }
 | 
						|
        this.state = {
 | 
						|
            papers: [],
 | 
						|
            viewAll,
 | 
						|
            record: null,
 | 
						|
            notify: null,
 | 
						|
            UserList: [],
 | 
						|
            SelUsrID: null,
 | 
						|
            config: null,
 | 
						|
            score: 0,
 | 
						|
            NAME: '',
 | 
						|
            END_TIME: null,
 | 
						|
            readonly: true,
 | 
						|
            loading: false,
 | 
						|
        };
 | 
						|
    };
 | 
						|
    componentDidMount() {
 | 
						|
        if (window.navigator.userAgent.indexOf("Windows") < 1) {
 | 
						|
            this.setState({ isMobile: true })
 | 
						|
        }
 | 
						|
        if (this.props.data?.id)
 | 
						|
            this.loadData(this.props.data?.id);
 | 
						|
    }
 | 
						|
 | 
						|
    componentWillReceiveProps(NextProps) {
 | 
						|
        if (NextProps.data?.id && this.props.data?.id != NextProps.data?.id) {
 | 
						|
            this.loadData(NextProps.data?.id);
 | 
						|
        }
 | 
						|
    }
 | 
						|
    BtnClose = () => {
 | 
						|
        if (typeof this.props.data.onCancel != "undefined" && typeof this.props.data.onCancel == 'function')
 | 
						|
            this.props.data.onCancel();
 | 
						|
    }
 | 
						|
    getUsers = () => {
 | 
						|
        let json = initFilter(this.props.login.OrgId);
 | 
						|
        json.OrgType = 2;
 | 
						|
        extendRule(json, 'RECORD_ID', 1, this.props.data.id);
 | 
						|
        extendInclude(json, 'Nav_User');
 | 
						|
        this.state.loading = true;
 | 
						|
        this.props.dispatch({
 | 
						|
            type: 'app/getDataByPost',
 | 
						|
            payload: json,
 | 
						|
            url: 'SE/SETrainRecord/GetUsers',
 | 
						|
            onComplete: (ret) => {
 | 
						|
                this.state.loading = false;
 | 
						|
                if (ret && ret.length > 0) {
 | 
						|
                    this.setState({
 | 
						|
                        UserList: ret
 | 
						|
                    })
 | 
						|
                    if (this.state.viewAll) {
 | 
						|
                        this.setState({
 | 
						|
                            SelUsrID: ret[0].ID
 | 
						|
                        }, () => {
 | 
						|
                            this.getPapers();
 | 
						|
                        });
 | 
						|
                    } else {
 | 
						|
                        let usr = ret.find(it => it.ID === this.props.login.user.ID);
 | 
						|
                        if (usr) {
 | 
						|
                            this.setState({
 | 
						|
                                SelUsrID: usr.ID
 | 
						|
                            }, () => {
 | 
						|
                                this.getPapers();
 | 
						|
                            });
 | 
						|
                        } else {
 | 
						|
                            message.warn("当前用户没有问卷");
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
    getPapers = () => {
 | 
						|
        let SelUsrID = this.state.SelUsrID;
 | 
						|
        this.setState({ papers: [] });
 | 
						|
        if (!SelUsrID) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
 | 
						|
        let json = initFilter(this.props.login.OrgId, '', 'Nav_Test.TYPE', 1);
 | 
						|
        json.OrgType = 2;
 | 
						|
        extendRule(json, 'RECORD_ID', 1, this.props.data.id);
 | 
						|
        extendRule(json, 'USER_ID', 1, SelUsrID);
 | 
						|
        extendInclude(json, 'Nav_Record');
 | 
						|
        extendInclude(json, 'Nav_Record.Nav_Notify');
 | 
						|
        extendInclude(json, 'Nav_Record.Nav_Notify.Nav_LaunchDepartment');
 | 
						|
        extendInclude(json, 'Nav_Record.Nav_Notify.Nav_LaunchUser');
 | 
						|
        extendInclude(json, 'Nav_Record.Nav_Notify.Nav_TrainContentList');
 | 
						|
        extendInclude(json, 'Nav_Record.Nav_Notify.Nav_TrainType');
 | 
						|
        extendInclude(json, 'Nav_Record.Nav_Notify.Nav_TrainCheckType');
 | 
						|
        extendInclude(json, 'Nav_Record.Nav_Notify.Nav_TrainContentList.Nav_Point');
 | 
						|
 | 
						|
 | 
						|
        extendInclude(json, 'Nav_Test');
 | 
						|
        extendInclude(json, 'Nav_User');
 | 
						|
        this.state.loading = true;
 | 
						|
        this.props.dispatch({
 | 
						|
            type: 'app/getDataByPost',
 | 
						|
            payload: json,
 | 
						|
            url: 'SE/SETrainRecord/GetUserPapers',
 | 
						|
            onComplete: (ret) => {
 | 
						|
                this.state.loading = false;
 | 
						|
                if (ret && ret.Nav_Papers && ret.Nav_Papers.length > 0) {
 | 
						|
                    let papers = ret.Nav_Papers.sort((a, b) => { return a.Nav_Test.TYPE - b.Nav_Test.TYPE });
 | 
						|
                    let config = ret.Nav_Config;
 | 
						|
                    let record = ret.Nav_Papers[0].Nav_Record;
 | 
						|
                    let notify = record ? record.Nav_Notify : null;
 | 
						|
                    let NAME = record.Nav_Notify.NAME;
 | 
						|
                    let hasAnswered = false;
 | 
						|
                    for (let i = 0; i < ret.Nav_Papers.length; i++) {
 | 
						|
                        if (ret.Nav_Papers[i].ANSWER !== 0) {
 | 
						|
                            hasAnswered = true;
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    this.setState({
 | 
						|
                        papers,
 | 
						|
                        config,
 | 
						|
                        record,
 | 
						|
                        notify,
 | 
						|
                        readonly: hasAnswered,
 | 
						|
                        NAME: NAME,
 | 
						|
                    })
 | 
						|
                } else {
 | 
						|
                    message.error('未能成功获取此用户的在线试卷,请稍后重试');
 | 
						|
                }
 | 
						|
 | 
						|
            }
 | 
						|
        });
 | 
						|
    }
 | 
						|
    loadData = () => {
 | 
						|
        if (this.props.data.id == "")
 | 
						|
            return;
 | 
						|
        this.getUsers();
 | 
						|
    }
 | 
						|
    onSave = () => {
 | 
						|
        if (this.state.readonly) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
        let data = JSON.parse(JSON.stringify(this.state.papers));
 | 
						|
        for (let i = 0; i < data.length; i++) {
 | 
						|
            if (data[i].ANSWER == 0) {
 | 
						|
                message.error(`第${i + 1}题尚未选择答题,请完成所有答题后再进行提交`);
 | 
						|
                return;
 | 
						|
            }
 | 
						|
            if (data[i].Nav_Test.TYPE === 2 && ([0, 1, 2, 4, 8].indexOf(data[i].ANSWER) !== -1)) {
 | 
						|
                message.error(`第${i + 1}题为多选题,请选择至少两个选项`);
 | 
						|
                return;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        let saveData = () => {
 | 
						|
            let data = {
 | 
						|
                Nav_Config: JSON.parse(JSON.stringify(this.state.config)),
 | 
						|
                Nav_Papers: JSON.parse(JSON.stringify(this.state.papers)),
 | 
						|
                TaskID: this.props.data.TaskID
 | 
						|
            }
 | 
						|
            this.props.dispatch({
 | 
						|
                type: 'app/getDataByPost',
 | 
						|
                payload: data,
 | 
						|
                url: 'SE/SETrainRecord/SavePapers',
 | 
						|
                onComplete: (ret) => {
 | 
						|
                    if (ret) {
 | 
						|
                        message.success('提交成功');
 | 
						|
                        this.BtnClose();
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            });
 | 
						|
        }
 | 
						|
        Modal.confirm({
 | 
						|
            title: '提示',
 | 
						|
            content: '确定要提交当前问卷么?提交之后不可再次更改',
 | 
						|
            onOk: () => {
 | 
						|
                saveData();
 | 
						|
            },
 | 
						|
            onCancel() {
 | 
						|
            },
 | 
						|
        })
 | 
						|
    }
 | 
						|
    fmtEnum(name, value) {
 | 
						|
        const enums = this.props.app.enums;
 | 
						|
        if (!enums || !enums[name]) return '';
 | 
						|
        return enums[name].enums[value] || '';
 | 
						|
    }
 | 
						|
    onTableBtnExport() {
 | 
						|
        let TableWrap = document.getElementById('tableId' + this.props.data.id);
 | 
						|
        let Table = TableWrap.getElementsByTagName('table')[0];
 | 
						|
        const wb = XLSX.utils.table_to_book(Table);
 | 
						|
        let name = '培训在线答题';
 | 
						|
        if (this.state.papers && this.state.papers.length > 0) {
 | 
						|
            let user = this.state.papers[0].Nav_User;
 | 
						|
            name += `-${user.CODE}-${user.NAME}`;
 | 
						|
        }
 | 
						|
        name += '.xlsx';
 | 
						|
        XLSX.writeFile(wb, name)
 | 
						|
    }
 | 
						|
    getJoinDepartment() {
 | 
						|
        let arr = [];
 | 
						|
        if (this.state.safe && this.state.safe.Nav_JoinDepartment) {
 | 
						|
            for (let it of this.state.safe.Nav_JoinDepartment) {
 | 
						|
                if (it.Nav_Department.NAME == "宁化行洛坑钨矿有限公司") {
 | 
						|
                    arr.push({
 | 
						|
                        id: it.Nav_Department.ID,
 | 
						|
                        name: "公司领导"
 | 
						|
                    })
 | 
						|
                } else {
 | 
						|
                    arr.push({
 | 
						|
                        id: it.Nav_Department.ID,
 | 
						|
                        name: it.Nav_Department.NAME
 | 
						|
                    })
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return arr;
 | 
						|
    }
 | 
						|
    doOptionChange = (it, index, mask, evt) => {
 | 
						|
        let papers = this.state.papers;
 | 
						|
        if (evt.target.checked) {
 | 
						|
            if (it.Nav_Test.TYPE === 2) {
 | 
						|
                papers[index].ANSWER |= mask;
 | 
						|
            } else {
 | 
						|
                papers[index].ANSWER = mask;
 | 
						|
            }
 | 
						|
        } else {
 | 
						|
            papers[index].ANSWER = papers[index].ANSWER & (~mask);
 | 
						|
        }
 | 
						|
        this.setState({
 | 
						|
            papers,
 | 
						|
        })
 | 
						|
    }
 | 
						|
    returnModel(level) {
 | 
						|
        let str = '';
 | 
						|
        if (level == undefined) {
 | 
						|
            return str;
 | 
						|
        }
 | 
						|
        if (level.indexOf('1') >= 0) {
 | 
						|
            str += '讲授法 ';
 | 
						|
        }
 | 
						|
        if (level.indexOf('2') >= 0) {
 | 
						|
            str += '视听法 ';
 | 
						|
        }
 | 
						|
        if (level.indexOf('3') >= 0) {
 | 
						|
            str += '研讨法 ';
 | 
						|
        }
 | 
						|
        if (level.indexOf('4') >= 0) {
 | 
						|
            str += '演示法 ';
 | 
						|
        }
 | 
						|
        return str;
 | 
						|
    }
 | 
						|
    CalcScore = () => {
 | 
						|
        if (!this.state.readonly) {
 | 
						|
            return "";
 | 
						|
        }
 | 
						|
        let score = 0;
 | 
						|
        let sscore = 1;
 | 
						|
        let mscore = 1;
 | 
						|
        let cscore = 1;
 | 
						|
        if (this.state.config) {
 | 
						|
            if (this.state.config.S_TEST_SCORE > 0) {
 | 
						|
                sscore = this.state.config.S_TEST_SCORE;
 | 
						|
            }
 | 
						|
            if (this.state.config.M_TEST_SCORE > 0) {
 | 
						|
                mscore = this.state.config.M_TEST_SCORE;
 | 
						|
            }
 | 
						|
            if (this.state.config.C_TEST_SCORE > 0) {
 | 
						|
                cscore = this.state.config.C_TEST_SCORE;
 | 
						|
            }
 | 
						|
        }
 | 
						|
        this.state.papers.map((it, idx) => {
 | 
						|
            if (it.ANSWER !== 0 && it.ANSWER == it.Nav_Test.ANSWER) {
 | 
						|
                switch (it.Nav_Test.TYPE) {
 | 
						|
                    case 0: {
 | 
						|
                        score += cscore;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                    case 1: {
 | 
						|
                        score += sscore;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                    case 2: {
 | 
						|
                        score += mscore;
 | 
						|
                        break;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        })
 | 
						|
        return score;
 | 
						|
    }
 | 
						|
    getType(type) {
 | 
						|
        let ret = '';
 | 
						|
        const { config } = this.state
 | 
						|
        switch (type) {
 | 
						|
            case 0: ret = `【是非题】(${config && config.C_TEST_SCORE || 1}分)`; break;
 | 
						|
            case 1: ret = `【单选题】(${config && config.S_TEST_SCORE || 1}分)`; break;
 | 
						|
            case 2: ret = `【多选题】(${config && config.M_TEST_SCORE || 1}分)`; break;
 | 
						|
        }
 | 
						|
        return ret;
 | 
						|
    }
 | 
						|
    render() {
 | 
						|
        const { record, papers, SelUsrID, UserList, notify } = this.state;
 | 
						|
        const SelUsr = SelUsrID && UserList.find(it => it.ID === SelUsrID);
 | 
						|
        return <div>
 | 
						|
            <div style={{ padding: '10px' }}>
 | 
						|
                {
 | 
						|
                    this.state.viewAll &&
 | 
						|
                    <Select style={{ fontSize: 14, width: "100px" }}
 | 
						|
                        showSearch
 | 
						|
                        value={this.state.SelUsrID}
 | 
						|
                        onChange={val => {
 | 
						|
                            this.setState({
 | 
						|
                                SelUsrID: val
 | 
						|
                            }, () => {
 | 
						|
                                this.getPapers();
 | 
						|
                            })
 | 
						|
 | 
						|
                        }}
 | 
						|
                        filterOption={(input, option) =>
 | 
						|
                            option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
 | 
						|
                        }
 | 
						|
                    >
 | 
						|
                        {
 | 
						|
                            this.state.UserList.map(usr =>
 | 
						|
                                <Option key={usr.ID} value={usr.ID}>{usr.NAME}</Option>
 | 
						|
                            )
 | 
						|
                        }
 | 
						|
                    </Select>
 | 
						|
                }
 | 
						|
                <span />
 | 
						|
                <ReactToPrint
 | 
						|
                    trigger={() => <Button type={'primary'} icon={'printer'} >打印</Button>}
 | 
						|
                    content={() => this.componentRef}
 | 
						|
                />
 | 
						|
                <Button style={{ marginLeft: '8px' }} onClick={() => this.onTableBtnExport()} icon="export" >导出</Button>
 | 
						|
                {
 | 
						|
                    !this.state.readonly && (
 | 
						|
                        <Button type="primary" style={{ marginLeft: '8px' }} onClick={() => { this.onSave(); }}>
 | 
						|
                            提交问卷
 | 
						|
                        </Button>
 | 
						|
                    )
 | 
						|
                }
 | 
						|
            </div>
 | 
						|
            <div ref={el => (this.componentRef = el)} id={'tableId' + this.props.data.id}>
 | 
						|
                <h1 style={{ textAlign: 'center' }}>培训在线答题</h1>
 | 
						|
                <Spin spinning={this.state.loading}>
 | 
						|
                <table style={{ width: '100%', textAlign: 'center', borderTop: '1px solid #333', borderLeft: '1px solid #333' }} className={styles.PrintForm}>
 | 
						|
                    <tbody>
 | 
						|
                        <tr>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>培训名称</td>
 | 
						|
                            <td colSpan={20} rowSpan={1} className={styles.fontBold}>{notify ? notify.NAME : null}</td>
 | 
						|
                        </tr>
 | 
						|
                        <tr>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>编号</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} >{notify ? notify.CODE : null}</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>培训时间</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} >{notify ? `${moment(notify.TRAIN_START_TIME).format('YYYY-MM-DD')}  -  ${moment(notify.TRAIN_END_TIME).format('YYYY-MM-DD')}` : null}</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>培训地点</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} >{notify ? notify.TRAIN_ADDR : null}</td>
 | 
						|
                        </tr>
 | 
						|
                        <tr>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>组织部门</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} >{notify && notify.Nav_LaunchDepartment ? notify.Nav_LaunchDepartment.NAME : null}</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>记录/考核人</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} >{notify && notify.Nav_LaunchUser ? notify.Nav_LaunchUser.NAME : null}</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>培训老师</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} >{notify ? notify.TRAIN_TEACHER : null}</td>
 | 
						|
                        </tr>
 | 
						|
                        <tr>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>培训学时</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} >{notify ? notify.HOURS : null}</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>培训形式</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} >{notify ? this.returnModel(notify.TRAIN_MODEL) : null}</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>考核方式</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} >{notify && notify.Nav_TrainCheckType ? notify.Nav_TrainCheckType.NAME : null}</td>
 | 
						|
                        </tr>
 | 
						|
                        <tr>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>培训内容</td>
 | 
						|
                            <td colSpan={20} rowSpan={1} >{
 | 
						|
                                notify && notify.Nav_TrainContentList && notify.Nav_TrainContentList.map(it => {
 | 
						|
                                    return it.Nav_Point.NAME
 | 
						|
                                }).join('、')
 | 
						|
                            }</td>
 | 
						|
                        </tr>
 | 
						|
                        <tr>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>工号</td>
 | 
						|
                            <td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.CODE}</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>答卷人</td>
 | 
						|
                            <td colSpan={4} rowSpan={1}>{SelUsr && SelUsr.NAME}</td>
 | 
						|
                            <td colSpan={4} rowSpan={1} className={styles.fontBold}>成绩</td>
 | 
						|
                            <td colSpan={4} rowSpan={1}>{this.CalcScore()}</td>
 | 
						|
                        </tr>
 | 
						|
                        <tr>
 | 
						|
                            <td colSpan={24} rowSpan={1} className={styles.fontBold}>问卷</td>
 | 
						|
                        </tr>
 | 
						|
                        {
 | 
						|
                            papers.map((it, idx) => {
 | 
						|
                                return (
 | 
						|
                                    <tr key={it.ID}>
 | 
						|
                                        <td colSpan={24} rowSpan={1}>
 | 
						|
                                            <table border={0} className={SEstyles.TestPaperItem}>
 | 
						|
                                                <tbody>
 | 
						|
                                                    <tr>
 | 
						|
                                                        <td colSpan={24} rowSpan={1} className={SEstyles.TestTiltle}>
 | 
						|
                                                            <span>{idx + 1}.</span>
 | 
						|
                                                            <span>{it.Nav_Test.NAME}</span>
 | 
						|
                                                            <span>{this.getType(it.Nav_Test.TYPE)}</span>
 | 
						|
                                                        </td>
 | 
						|
                                                    </tr>
 | 
						|
                                                    <tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? answer : null}>
 | 
						|
                                                        {
 | 
						|
                                                            it.Nav_Test.TYPE === 0 ?
 | 
						|
                                                                <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? styles.answer : null}>
 | 
						|
                                                                    <Radio disabled={this.state.readonly} checked={(it.ANSWER & 1) != 0} onChange={evt => this.doOptionChange(it, idx, 1, evt)} />
 | 
						|
                                                                    <span>正确</span>
 | 
						|
                                                                </td>
 | 
						|
                                                                :
 | 
						|
                                                                <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 1) != 0) ? styles.answer : null}>
 | 
						|
                                                                    {
 | 
						|
                                                                        it.Nav_Test.TYPE === 1 ?
 | 
						|
                                                                            <Radio disabled={this.state.readonly} checked={(it.ANSWER & 1) != 0} onChange={evt => this.doOptionChange(it, idx, 1, evt)} />
 | 
						|
                                                                            :
 | 
						|
                                                                            <Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 1) != 0} onChange={evt => this.doOptionChange(it, idx, 1, evt)} />
 | 
						|
                                                                    }
 | 
						|
                                                                    <span>A.</span>
 | 
						|
                                                                    <span>{it.Nav_Test.OPTION_A}</span>
 | 
						|
                                                                </td>
 | 
						|
                                                        }
 | 
						|
                                                    </tr>
 | 
						|
                                                    <tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 2) != 0) ? answer : null}>
 | 
						|
                                                        {
 | 
						|
                                                            it.Nav_Test.TYPE === 0 ?
 | 
						|
                                                                <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 2) != 0) ? styles.answer : null}>
 | 
						|
                                                                    <Radio disabled={this.state.readonly} checked={(it.ANSWER & 2) != 0} onChange={evt => this.doOptionChange(it, idx, 2, evt)} />
 | 
						|
                                                                    <span>错误</span>
 | 
						|
                                                                </td>
 | 
						|
                                                                :
 | 
						|
                                                                <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 2) != 0) ? styles.answer : null}>
 | 
						|
                                                                    {
 | 
						|
                                                                        it.Nav_Test.TYPE === 1 ?
 | 
						|
                                                                            <Radio disabled={this.state.readonly} checked={(it.ANSWER & 2) != 0} onChange={evt => this.doOptionChange(it, idx, 2, evt)} />
 | 
						|
                                                                            :
 | 
						|
                                                                            <Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 2) != 0} onChange={evt => this.doOptionChange(it, idx, 2, evt)} />
 | 
						|
                                                                    }
 | 
						|
                                                                    <span>B.</span>
 | 
						|
                                                                    <span>{it.Nav_Test.OPTION_B}</span>
 | 
						|
                                                                </td>
 | 
						|
                                                        }
 | 
						|
                                                    </tr>
 | 
						|
                                                    {
 | 
						|
                                                        it.Nav_Test.TYPE !== 0 &&
 | 
						|
                                                        <tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 4) != 0) ? answer : null}>
 | 
						|
                                                            <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 4) != 0) ? styles.answer : null}>
 | 
						|
                                                                {
 | 
						|
                                                                    it.Nav_Test.TYPE === 1 ?
 | 
						|
                                                                        <Radio disabled={this.state.readonly} checked={(it.ANSWER & 4) != 0} onChange={evt => this.doOptionChange(it, idx, 4, evt)} />
 | 
						|
                                                                        :
 | 
						|
                                                                        <Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 4) != 0} onChange={evt => this.doOptionChange(it, idx, 4, evt)} />
 | 
						|
                                                                }
 | 
						|
                                                                <span>C.</span>
 | 
						|
                                                                <span>{it.Nav_Test.OPTION_C}</span>
 | 
						|
                                                            </td>
 | 
						|
                                                        </tr>
 | 
						|
                                                    }
 | 
						|
                                                    {
 | 
						|
                                                        it.Nav_Test.TYPE !== 0 && it.Nav_Test.OPTION_D != "" && it.Nav_Test.OPTION_D != undefined &&
 | 
						|
                                                        <tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 8) != 0) ? answer : null}>
 | 
						|
                                                            <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 8) != 0) ? styles.answer : null}>
 | 
						|
                                                                {
 | 
						|
                                                                    it.Nav_Test.TYPE === 1 ?
 | 
						|
                                                                        <Radio disabled={this.state.readonly} checked={(it.ANSWER & 8) != 0} onChange={evt => this.doOptionChange(it, idx, 8, evt)} />
 | 
						|
                                                                        :
 | 
						|
                                                                        <Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 8) != 0} onChange={evt => this.doOptionChange(it, idx, 8, evt)} />
 | 
						|
                                                                }
 | 
						|
                                                                <span>D.</span>
 | 
						|
                                                                <span>{it.Nav_Test.OPTION_D}</span>
 | 
						|
                                                            </td>
 | 
						|
                                                        </tr>
 | 
						|
                                                    }
 | 
						|
                                                    {
 | 
						|
                                                        it.Nav_Test.TYPE !== 0 && it.Nav_Test.OPTION_E != "" && it.Nav_Test.OPTION_E != undefined &&
 | 
						|
                                                        <tr style={this.state.readonly && ((it.Nav_Test.ANSWER & 16) != 0) ? answer : null}>
 | 
						|
                                                            <td colSpan={24} rowSpan={1} className={this.state.readonly && ((it.Nav_Test.ANSWER & 16) != 0) ? styles.answer : null}>
 | 
						|
                                                                {
 | 
						|
                                                                    it.Nav_Test.TYPE === 1 ?
 | 
						|
                                                                        <Radio disabled={this.state.readonly} checked={(it.ANSWER & 16) != 0} onChange={evt => this.doOptionChange(it, idx, 16, evt)} />
 | 
						|
                                                                        :
 | 
						|
                                                                        <Checkbox disabled={this.state.readonly} checked={(it.ANSWER & 16) != 0} onChange={evt => this.doOptionChange(it, idx, 16, evt)} />
 | 
						|
                                                                }
 | 
						|
                                                                <span>E.</span>
 | 
						|
                                                                <span>{it.Nav_Test.OPTION_E}</span>
 | 
						|
                                                            </td>
 | 
						|
                                                        </tr>
 | 
						|
                                                    }
 | 
						|
                                                </tbody>
 | 
						|
                                            </table>
 | 
						|
                                        </td>
 | 
						|
                                    </tr>
 | 
						|
                                )
 | 
						|
                            })
 | 
						|
                        }
 | 
						|
                    </tbody>
 | 
						|
                </table>
 | 
						|
                </Spin>
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
export default connect(({ login, app }) => ({ login, app }))(SE018PaperPage) 
 |