fangmingyue 2 년 전
부모
커밋
1eca185ef5
2개의 변경된 파일178개의 추가작업 그리고 0개의 파일을 삭제
  1. 167
    0
      src/pages/question/list/index.jsx
  2. 11
    0
      src/routes/routes.jsx

+ 167
- 0
src/pages/question/list/index.jsx 파일 보기

@@ -0,0 +1,167 @@
1
+import React from 'react';
2
+import { Button, Form, Row, Col, Card, List } from 'antd';
3
+import {
4
+  ProForm,
5
+  ProFormText,
6
+  ProFormSelect,
7
+  ProFormList
8
+} from '@ant-design/pro-components';
9
+import { postTaCheckItemQu, getTaCheckItemQu } from '@/service/tdlocquestion';
10
+
11
+const QuItem = (props) => {
12
+  const { qu, onEdit } = props;
13
+
14
+  const quTitle = `${qu?.sortNo}. [${qu?.quType == 'fill' ? '填空' : '选择'}] ${qu?.title}`
15
+
16
+  return (
17
+    <Card title={quTitle} extra={<Button type='link' onClick={onEdit}>修改</Button>} style={{ marginTop: '24px' }}>
18
+      <Card.Meta
19
+        title={
20
+          qu?.quType != 'fill' ?
21
+            (
22
+              <Row gutter={24}>
23
+                {
24
+                  (qu || []).map((item) => {
25
+                    const anStr = `${item.answerCode} ${item.answer}`;
26
+
27
+                    return (
28
+                      <Col span={12} key={item.answerId} style={{ height: '32px', lineHeight: '32px', fontWeight: 400 }}>
29
+                        {anStr}
30
+                      </Col>
31
+                    );
32
+                  })
33
+                }
34
+              </Row>
35
+            ) : null
36
+        }
37
+        description={(
38
+          <>
39
+            <h3>验收标准</h3>
40
+            <div dangerouslySetInnerHTML={{ __html: qu?.stand }} />
41
+          </>
42
+        )}
43
+      />
44
+    </Card>
45
+  );
46
+}
47
+
48
+export default React.forwardRef((props, ref) => {
49
+
50
+  const { itemId, onChange } = props;
51
+
52
+  const [open, setOpen] = React.useState(false);
53
+  const [quInfo, setQuInfo] = React.useState(false);
54
+  const [list, setList] = React.useState([]);
55
+  // const [anList, setAnList] = React.useState([]);
56
+  const [form] = Form.useForm();
57
+
58
+  const onFinish = async (values) => {
59
+    const data = { ...(quInfo || {}), ...values, itemId }
60
+    const res = await postTaCheckItemQu(data);
61
+
62
+    console.log('方方data', data);
63
+    console.log('方方res', res);
64
+    let found = false;
65
+    const newList = list.map(item => {
66
+      if (item.quId === res.quId) {
67
+        found = true;
68
+        return res;
69
+      } else {
70
+        return item
71
+      }
72
+    });
73
+
74
+    if (!found) {
75
+      newList.push(res);
76
+    }
77
+
78
+    setList(list);
79
+    onChange(res);
80
+
81
+    return true;
82
+  }
83
+
84
+  const onEditQu = (qu) => {
85
+    setQuInfo(qu);
86
+    setOpen(true);
87
+  }
88
+
89
+  React.useEffect(() => {
90
+    if (quInfo) {
91
+      form.setFieldsValue(quInfo);
92
+    }
93
+  }, [quInfo]);
94
+
95
+  React.useEffect(() => {
96
+    if (itemId) {
97
+      getTaCheckItemQu({ pageSize: 500, itemId }).then((res) => {
98
+        setList(res.records);
99
+      });
100
+    }
101
+  }, [itemId]);
102
+
103
+  React.useImperativeHandle(ref, () => ({
104
+    add: () => setOpen(true),
105
+  }), []);
106
+
107
+  return (
108
+    <div>
109
+      <ProForm title="问题维护" style={{ width: '800px' }} form={form} onFinish={onFinish}>
110
+        <ProFormText
111
+          name="title"
112
+          label="问题描述"
113
+          placeholder="请填写"
114
+          rules={[
115
+            {
116
+              required: true,
117
+              message: '请填写题干',
118
+            },
119
+          ]}
120
+        />
121
+        <ProFormSelect
122
+          name="quType"
123
+          label="问题类型"
124
+          fieldProps={{
125
+            style: { width: '100%' }
126
+          }}
127
+          valueEnum={{
128
+            radio: '单选',
129
+            fill: '填空'
130
+          }}
131
+          rules={[
132
+            {
133
+              required: true,
134
+              message: '请选择问题类型',
135
+            },
136
+          ]}
137
+        />
138
+        <ProFormList
139
+          label="选项列表"
140
+          copyIconProps={false}
141
+        >
142
+          <Row gutter={24} style={{ width: '730px' }}>
143
+            <Col span={6}>
144
+              <ProFormText
145
+                name="answerCode"
146
+                label="选项"
147
+                help="类似 A, B, C, D"
148
+              />
149
+            </Col>
150
+            <Col span={6}>
151
+              <ProFormText
152
+                name="answer"
153
+                label="答案"
154
+                placeholder="具体选项内容"
155
+              />
156
+            </Col>
157
+          </Row>
158
+        </ProFormList>
159
+      </ProForm>
160
+      <List
161
+        itemLayout="horizontal"
162
+        dataSource={list}
163
+        renderItem={(item) => <QuItem qu={item} onEdit={() => onEditQu(item)} />}
164
+      />
165
+    </div>
166
+  )
167
+});

+ 11
- 0
src/routes/routes.jsx 파일 보기

@@ -30,6 +30,7 @@ import LocTypeList from "@/pages/locType/list";
30 30
 import LocTypeEdit from "@/pages/locType/edit";
31 31
 import IssueTypeList from "@/pages/issueType/list";
32 32
 import IssueTypeEdit from "@/pages/issueType/edit";
33
+import QuestionList from "@/pages/question/list";
33 34
 
34 35
 /**
35 36
  * meta 用来扩展自定义数据数据
@@ -163,6 +164,16 @@ export const authRoutes = [
163 164
           // permission: 'form',
164 165
         },
165 166
       },
167
+      {
168
+        path: "question/list",
169
+        element: <QuestionList />,
170
+        meta: {
171
+          title: '点位问题',
172
+          // icon: <AppstoreOutlined />,
173
+          // permission: 'form',
174
+        },
175
+      },
176
+
166 177
     ]
167 178
   },
168 179
   {