forked from nsjcy/frontEnd/nsjcy

liuwh
2020-03-31 a0ec2242677dced1e6e098c114460da3d56be157
提交
2 files added
6 files modified
229 ■■■■■ changed files
SunshineIns/src/fetch/_fetch.js 4 ●●●● patch | view | raw | blame | history
SunshineIns/src/fetch/index.js 4 ●●● patch | view | raw | blame | history
SunshineIns/src/fetch/questionFindPersonById.js 9 ●●●●● patch | view | raw | blame | history
SunshineIns/src/index.jsx 3 ●●●●● patch | view | raw | blame | history
SunshineIns/src/page/QuestionDetail.jsx 49 ●●●●● patch | view | raw | blame | history
SunshineIns/src/page/QuestionPersonDetail.jsx 146 ●●●●● patch | view | raw | blame | history
SunshineIns/src/view/QuestionnairAnswer/index.js 1 ●●●● patch | view | raw | blame | history
SunshineIns/src/view/QuestionnairEditor/index.js 13 ●●●●● patch | view | raw | blame | history
SunshineIns/src/fetch/_fetch.js
@@ -2,8 +2,8 @@
// export const base = 'http://xnwj.gznsjc.gov.cn';
// export const base = 'http://1p885086k1.iok.la';
export const base = 'http://nsjcy.hugeinfo.com.cn';
// export const base = 'http://1p885086k1.iok.la';
// export const base = 'http://nsjcy.hugeinfo.com.cn';
export const base = 'http://1p885086k1.iok.la';
//  export const base = 'http://localhost:8080';
SunshineIns/src/fetch/index.js
@@ -99,6 +99,7 @@
import searchLawFind from './searchLawFind';
import searchLawSave from './searchLawSave';
import searchLawDelete from './searchLawDelete';
import questionFindPersonById from './questionFindPersonById';
export default {
  domain,
@@ -201,5 +202,6 @@
  searchLaw,
  searchLawFind,
  searchLawSave,
  searchLawDelete
  searchLawDelete,
  questionFindPersonById
};
SunshineIns/src/fetch/questionFindPersonById.js
New file
@@ -0,0 +1,9 @@
import fetch from './_fetch';
import { message } from 'antd';
export default (id, userId) => fetch(`api/question/find/${id}?${userId || null}`)
    .then(
        json => json.data
    )
    .catch(
        error => message.error('详情加载失败,请联系管理员', 2)
    );
SunshineIns/src/index.jsx
@@ -48,6 +48,7 @@
import Newly from './page/Newly';
import SignIn from './page/SignIn';
import QuestionDetail from './page/QuestionDetail';
import QuestionPersonDetail from './page/QuestionPersonDetail';
import NoInspectionReportList from './page/NoInspectionReportList';
import NoInspectionReportDetail from './page/NoInspectionReportDetail';
@@ -119,6 +120,8 @@
          <Route path='/questionnaire/newly/:id' component={Newly} />
          {/* 问卷详情 */}
          <Route path='/questionnaire/detail/:id' component={QuestionDetail} />
          {/* 小程序提交的任务详情 */}
          <Route path='/questionnaire/persondetail/:id/:userId' component={QuestionPersonDetail} />
          
          {/* 公安审核 */}
SunshineIns/src/page/QuestionDetail.jsx
@@ -2,8 +2,13 @@
import { Input, Button, DatePicker, Divider, message, Popconfirm, Select, Badge, Spin, Breadcrumb } from 'antd';
import Questionnair from '../page/Questionnair'
import Fetch from '../fetch'
import TableView from '../view/TableView';
import HeadView from '../view/HeadView';
import moment from 'moment';
const divStyle = {
  margin: '20px'
}
export default class QuestionDetail extends React.Component {
  constructor(props) {
    super(props);
@@ -11,8 +16,8 @@
      loading: false,
      data: [],
      initData: null,
      btnLoading: false
      btnLoading: false,
      dateSource: []
    };
  }
@@ -26,11 +31,20 @@
    });
    Fetch.questionFindById(id).then(res => {
      console.log('res', res);
      console.log('res.mps', res.submitMaps);
      this.setState({
        loading: false,
        initData: res
        initData: res,
        dateSource: res.submitMaps || [],
      })
    })
  }
  showModal = (userId) => {
    const { id } = this.props.match.params;
    console.log(id)
    this.props.history.push("/questionnaire/persondetail/" + id + '/' + userId);
  }
  submitQuestionTemp = (questionDtos, extraData) => {
@@ -69,7 +83,26 @@
  render() {
    const { data, loading, resetKey, initData, btnLoading } = this.state;
    const { data, loading, resetKey, initData, btnLoading, dateSource } = this.state;
    console.log(dateSource)
    const act2columns = [{
      title: '提交人昵称',
      dataIndex: 'userName',
      key: 'userName'
    },
    {
      title: '提交时间',
      dataIndex: 'createTime',
      key: 'createTime',
      render: text => <span>{text || ''}</span>
    }, {
      title: '操作',
      dataIndex: 'isHit',
      key: 'isHit',
      render: (text, record) => (
        <label className='theme-color' onClick={() => this.showModal(record.userId)} style={{ cursor: 'pointer' }}>查看</label>
      )
    }];
    return (
      <div className="app-page">
        <HeadView history={this.props.history} />
@@ -115,6 +148,14 @@
              {initData && initData.questionDtos.map((item, index) => (
                <Questionnair.Editor editor={item} acitveAnswer={true} key={item.questionId} index={index} />
              ))}
              {
                dateSource.length > 0 ?
                  <div style={divStyle}>
                    <Divider orientation="left" style={{ margin: '20px', width: '97%' }}>问卷提交记录</Divider>
                    <TableView columns={act2columns} data={dateSource} pageSize='6' size='small' />
                  </div> : null
              }
            </React.Fragment>
        }
SunshineIns/src/page/QuestionPersonDetail.jsx
New file
@@ -0,0 +1,146 @@
import React from 'react';
import { Input, Button, DatePicker, Divider, message, Popconfirm, Select, Badge, Spin, Breadcrumb } from 'antd';
import Questionnair from './Questionnair'
import Fetch from '../fetch'
import TableView from '../view/TableView';
import HeadView from '../view/HeadView';
export default class QuestionPersonDetail extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      loading: false,
      data: [],
      initData: null,
      btnLoading: false,
      dateSource: []
    };
  }
  componentDidMount() {
    document.title = '问卷详情';
    const { id } = this.props.match.params;
    const { userId } = this.props.match.params;
    console.log(id)
    console.log(userId)
    this.setState({
      loading: true
    });
    Fetch.questionFindPersonById(id, userId).then(res => {
      console.log('res', res);
      this.setState({
        loading: false,
        initData: res
      })
    })
  }
  showModal = (id) => {
    this.props.history.push("/activeManageEdit/" + id);
  }
  submitQuestionTemp = (questionDtos, extraData) => {
    const { initData } = this.state;
    console.log('questionDtos', questionDtos);
    console.log('initData', initData);
    if (!extraData.questionnairTitle) {
      return message.error('请填写问卷标题');
    }
    questionDtos = questionDtos.map(({ type, title, required, remarkText, options, scores, warnFlag }) => ({
      type, title, required, remarkText, options, scores, warnFlag
    }));
    this.setState({
      btnLoading: true
    })
    Fetch.saveQuestionTemp({
      ...initData,
      title: extraData.questionnairTitle,
      content: extraData.questionnairDescription,
      businessType: extraData.questionnairBusinessType,
      questionDtos
    }).then(res => {
      console.log('res', res);
      this.setState({
        btnLoading: false
      })
      if (res.code == 0) {
        message.success('问卷提交成功');
      }
    })
  }
  getData = () => {
  }
  render() {
    const { data, loading, resetKey, initData, btnLoading, dateSource } = this.state;
    return (
      <div className="app-page">
        <HeadView history={this.props.history} />
        <div style={{
          margin: 10
        }}>
          <Breadcrumb>
            <Breadcrumb.Item>
              <a onClick={() => {
                this.props.history.goBack();
              }}>问卷管理</a>
            </Breadcrumb.Item>
            <Breadcrumb.Item>
              问卷详情
            </Breadcrumb.Item>
          </Breadcrumb>
        </div>
        {
          loading ?
            <div style={{ height: 200, width: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center' }}>
              <Spin spinning={loading} />
            </div> :
            <React.Fragment>
              {/* <Questionnair submitQuestionTemp={this.submitQuestionTemp} btnLoading={btnLoading} /> */}
              {
                initData &&
                <div style={{ background: '#fff', marginTop: 10 }}>
                  <div style={{ width: 700, margin: '0 auto', padding: '20px 0 0 0 ' }}>
                    <h3>
                      问卷标题:{initData.title || '暂无'}
                    </h3>
                    <h4 style={{ marginBottom: 0 }}>
                      问卷描述:{initData.content || '暂无'}
                    </h4>
                    <h4 style={{ marginBottom: 0 }}>
                      业务类型:{typeStatus(initData.businessType) || '暂无'}
                    </h4>
                  </div>
                </div>
              }
              {initData && initData.questionDtos.map((item, index) => (
                <Questionnair.Editor editor={item} acitveAnswer={true} data={initData} key={item.questionId} index={index} />
              ))}
            </React.Fragment>
        }
      </div>
    );
  }
}
function typeStatus(type) {
  switch (type) {
    case 1:
      return "企业体检";
    case 2:
      return "培训活动";
    case 3:
      return "未检调查";
    case 4:
      return "刑执监督";
  }
}
SunshineIns/src/view/QuestionnairAnswer/index.js
@@ -3,6 +3,7 @@
const QuestionnairAnswer = ({
  answer
}) => {
  console.log(answer)
  return (
    <div style={{ minHeight: 60 }}>
      <div style={{ color: '#666' }}>{`${index + 1}.${answer.type === 'input' ? answer.completionForwards : answer.title + ':'}`}</div>
SunshineIns/src/view/QuestionnairEditor/index.js
@@ -19,7 +19,12 @@
    this.temp = '';
    this.otherOptionInput = '';
    this.answer = {};
    this.answer = {
      radio: {
        optionIndex: "0",
        optionValue: "大于10小于50"
      }
    };
  }
  // static defaultProps = {
@@ -416,9 +421,9 @@
      answer,
      warnFlag
    } = editor;
    this.answer = answer ? JSON.parse(JSON.stringify(answer)) : {};
    this.otherOptionValue = answer ? this.answer[type].otherOptionValue : [];
    console.log(this.answer)
    // this.answer = answer ? JSON.parse(JSON.stringify(answer)) : {};
    // this.otherOptionValue = answer ? this.answer[type].otherOptionValue : [];
    /*
     *
     * 以下元素为编辑状态下的元素