12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import React, { Component } from 'react';
- import './index.less';
- import { formatPercent } from '../../../../src/services/Tools';
- function getKey(type, index, selected, answer) {
- return `${(selected[type] || [])[index] ? 'selected' : ''} ${(answer[type] || [])[index] ? 'true' : 'false'}`;
- }
- function getDoubleKey(type, index, selected, answer, position) {
- return `${((selected[type] || [])[index] || [])[position] ? 'selected' : ''} ${((answer[type] || [])[index] || [])[position] ? 'true' : 'false'}`;
- }
- export default class AnswerList extends Component {
- render() {
- return <div className="answer-list">{this.renderDetail()}</div>;
- }
- renderDetail() {
- const { type } = this.props;
- switch (type) {
- case 'single':
- return this.renderList();
- case 'double':
- return this.renderTable();
- default:
- return <div />;
- }
- }
- renderList() {
- const { selected = {}, answer = {}, show, list = [], distributed = [], type } = this.props;
- const count = distributed.reduce((x, y) => x + y, 0);
- return (
- <div className="list">
- {list.map((item, index) => {
- return (
- <div className={`item ${getKey(type, index, selected, answer)} ${show ? 'show' : ''}`}>
- <div className="icon" />
- <div className="text">{item}</div>
- {show && <div className="total">{formatPercent(distributed[index], count, false)}用户选择该选项</div>}
- </div>
- );
- })}
- </div>
- );
- }
- renderTable() {
- const { selected = {}, answer = {}, show, list = [], type, first, second } = this.props;
- return (
- <table border="1" bordercolor="#d8d8d8">
- <thead>
- <tr className="bg">
- <th align="center" width="100" className="t-c">
- {first}
- </th>
- <th align="center" width="100" className="t-c">
- {second}
- </th>
- <th />
- </tr>
- </thead>
- <tbody>
- {list.map((item, index) => {
- return (
- <tr>
- <td align="center" className="bg">
- <div className={`item ${getDoubleKey(type, index, selected, answer, 0)} ${show ? 'show' : ''}`}><div className="icon" /></div>
- </td>
- <td align="center" className="bg">
- <div className={`item ${getDoubleKey(type, index, selected, answer, 1)} ${show ? 'show' : ''}`}><div className="icon" /></div>
- </td>
- <td>{item}</td>
- </tr>);
- })}
- </tbody>
- </table>
- );
- }
- }
|