From e36d04fc335547bc293078a77924c94a31e99cdc Mon Sep 17 00:00:00 2001
From: Mr Ke <kelq@hugeinfo.com.cn>
Date: Fri, 15 May 2020 16:51:54 +0800
Subject: [PATCH] 发布问卷做问卷总分值100的最大限制

---
 SunshineIns/src/page/Newly.jsx |  258 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 234 insertions(+), 24 deletions(-)

diff --git a/SunshineIns/src/page/Newly.jsx b/SunshineIns/src/page/Newly.jsx
index 3c79a9f..a41ee53 100644
--- a/SunshineIns/src/page/Newly.jsx
+++ b/SunshineIns/src/page/Newly.jsx
@@ -1,33 +1,243 @@
 import React from 'react';
-import { Input, Button, DatePicker, Divider, message, Popconfirm, Select, Badge } from 'antd';
+import { Input, Button, DatePicker, Divider, message, Popconfirm, Select, Badge, Spin, Breadcrumb } from 'antd';
+import Questionnair from '../page/Questionnair'
+import Fetch from '../fetch'
 
 export default class Newly extends React.Component {
-    constructor(props) {
-        super(props);
-        this.state = {
-            data: [],
-           
-        };
+  constructor(props) {
+    super(props);
+    this.state = {
+      loading: false,
+      data: [
+        {
+          questionId: 'afaa9e6d672c56418199a8a62a4152c2d74f',
+          type: 'radio',
+          title: '单选题',
+          required: true,
+          remark: true,
+          remarkText: '(此题关于一个很有深度的问题)',
+          options: ['选项1', '选项2'],
+          rows: 1,
+          textareaHeight: 3,
+          maxLength: 50,
+          otherOption: true,
+          otherOptionForwards: '其他',
+          otherOptionBackwards: '22222',
+          completionForwards: '题目:',
+          completionBackwards: '',
+          isEditor: false,
+          isFirst: false,
+          editorShake: ''
+        },
+        {
+          questionId: '347a22645aa32d4f4a5a231fc98027e0b3c5',
+          type: 'dropdown',
+          title: '下拉',
+          required: true,
+          remark: false,
+          remarkText: '',
+          options: ['选项1', '选项2'],
+          rows: 1,
+          textareaHeight: 3,
+          maxLength: 50,
+          otherOption: false,
+          otherOptionForwards: '其他',
+          otherOptionBackwards: '',
+          completionForwards: '题目:',
+          completionBackwards: '',
+          isEditor: false,
+          isFirst: false,
+          editorShake: ''
+        },
+        {
+          questionId: '400eabd41ad9d846eca91abaf0a853670d38',
+          type: 'checkbox',
+          title: '多选题',
+          required: true,
+          remark: false,
+          remarkText: '',
+          options: ['选项1', '选项2'],
+          rows: 1,
+          textareaHeight: 3,
+          maxLength: 50,
+          otherOption: false,
+          otherOptionForwards: '其他',
+          otherOptionBackwards: '',
+          completionForwards: '题目:',
+          completionBackwards: '',
+          isEditor: false,
+          isFirst: false,
+          editorShake: ''
+        },
+        {
+          questionId: 'ea99f8009dc5c841504aaad62aab2ea2a7ee',
+          type: 'text',
+          title: '单行文本',
+          required: true,
+          remark: false,
+          remarkText: '',
+          options: ['选项', '选项'],
+          rows: 1,
+          textareaHeight: 3,
+          maxLength: 50,
+          otherOption: false,
+          otherOptionForwards: '其他',
+          otherOptionBackwards: '',
+          completionForwards: '题目:',
+          completionBackwards: '',
+          isEditor: false,
+          isFirst: false,
+          editorShake: ''
+        },
+        {
+          questionId: 'f0ca471ce2918043d5bad6f5b13b991bc5a6',
+          type: 'textarea',
+          title: '多行文本',
+          required: true,
+          remark: false,
+          remarkText: '',
+          options: ['选项', '选项'],
+          rows: 1,
+          textareaHeight: 3,
+          maxLength: 50,
+          otherOption: false,
+          otherOptionForwards: '其他',
+          otherOptionBackwards: '',
+          completionForwards: '题目:',
+          completionBackwards: '',
+          isEditor: false,
+          isFirst: false,
+          editorShake: ''
+        },
+        {
+          questionId: '0d0529163a79e749587888375a95a5045a0d',
+          type: 'input',
+          title: '',
+          required: true,
+          remark: false,
+          remarkText: '',
+          options: ['选项', '选项'],
+          rows: 1,
+          textareaHeight: 3,
+          maxLength: 50,
+          otherOption: false,
+          otherOptionForwards: '其他',
+          otherOptionBackwards: '',
+          completionForwards: '题目:',
+          completionBackwards: '下个路口见',
+          isEditor: false,
+          isFirst: false,
+          editorShake: ''
+        }
+      ],
+      initData: null,
+      btnLoading: false
+
+    };
+  }
+
+  componentDidMount() {
+    const { id } = this.props.match.params;
+    document.title = id == 'new' ? '新建问卷' : '编辑问卷';
+    this.setState({
+      loading: true
+    });
+    Fetch.questionFindById(id).then(res => {
+      res.questionDtos = res.questionDtos && res.questionDtos.length ? res.questionDtos.map((item) => ({
+        ...item,
+        remark: true
+      })) : [];
+      this.setState({
+        loading: false,
+        initData: res
+      })
+    })
+  }
+
+  submitQuestionTemp = (questionDtos, extraData) => {
+    const { initData } = this.state;
+    console.log('questionDtos', questionDtos);
+    console.log('initData', initData);
+    if (!extraData.questionnairTitle) {
+      return message.error('请填写问卷标题');
+    }
+    if (!extraData.questionnairBusinessType) {
+      return message.error('请选择业务类型');
+    }
+    let sum = questionDtos.reduce((p, n) => {
+      if (n.type == 'radio') {
+        return p.concat(Math.max.apply(null, n.scores))
+      } else {
+        return p.concat(n.scores)
+      }
+    }, []).reduce(function (prev, curr, idx, arr) {
+      return Number(prev) + Number(curr);
+    });
+    console.log('总分值', sum);
+    if (sum > 100) {
+      return message.error('分值超过最大值,请重新设定分值');
     }
 
-    componentDidMount() {
+    questionDtos = questionDtos.map(({ type, title, required, remarkText, options, scores, warnFlag }) => ({
+      type, title, required, remarkText, options, scores, warnFlag
+    }));
 
-        document.title = '新建问卷';
-        // this.getData();
-    }
+    this.setState({
+      btnLoading: true
+    })
+    console.log('questionDtos', questionDtos);
 
-    getData = () => {
-        
-    }
-   
-    render() {
-        
-        const { data, loading, resetKey } = this.state;
-        return (
-            <div className="app-page">
-                qwe
-            </div>
-        );
-    }
+    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('问卷提交成功');
+        this.props.history.push('/questionnaire/newlyList');
+      }
+    })
+  }
+
+  getData = () => {
+
+  }
+
+  render() {
+
+    const { data, loading, resetKey, initData, btnLoading } = this.state;
+    const { id } = this.props.match.params;
+    return (
+      <div className="app-page" >
+        <div style={{
+          margin: '10px 0 0 10px'
+        }}>
+          <Breadcrumb>
+            <Breadcrumb.Item>
+              <a onClick={() => {
+                this.props.history.goBack();
+              }}>问卷管理</a>
+            </Breadcrumb.Item>
+            <Breadcrumb.Item>
+              {id == 'new' ? '新建问卷' : '编辑问卷'}
+            </Breadcrumb.Item>
+          </Breadcrumb>
+        </div>
+        {
+          loading ?
+            <div style={{ height: 200, width: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center' }} >
+              <Spin spinning={loading} />
+            </div > :
+            initData && <Questionnair submitQuestionTemp={this.submitQuestionTemp} btnLoading={btnLoading} initData={initData} editors={initData.questionDtos || []} />
+        }
+      </div>
+    );
+  }
 
 }

--
Gitblit v1.8.0