Browse Source

试题管理web 保存

wushaodong 3 years ago
parent
commit
ec55ebd78d

+ 1 - 0
apps/examination/examquestion/serializers.py

@@ -3,6 +3,7 @@ from rest_framework import serializers
 from .models import *
 
 class ExamQuestionSerializer(serializers.ModelSerializer):
+    subject = serializers.CharField(source='chapter.subject.id', read_only=True)
     create_user_text = serializers.CharField(source='create_user.username', read_only=True)
     type_text = serializers.CharField(source='get_type_display', read_only=True)
     difficulty_text = serializers.CharField(source='get_difficulty_display', read_only=True)

+ 1 - 1
apps/foundation/serializers.py

@@ -52,4 +52,4 @@ class ChapterSimpleSerializer(serializers.ModelSerializer):
 
     class Meta:
         model = Chapter
-        fields = ['id', 'name', ]
+        fields = ['id', 'name', 'subject_id' ]

+ 45 - 12
uis/admin/examquestion/edit.html

@@ -20,18 +20,16 @@
                     <div class="layui-inline">
                         <label class="layui-form-label"><font color='red' size="4">*</font>科目:</label>
                         <div class="layui-input-inline">
-                            <select name="subject" id="id_subject" lay-verify="required" >
+                            <select name="subject" id="id_subject" lay-verify="required" lay-filter="subjectChange">
                                 <option value="">请选择科目</option>
-                                <option value="1">科目1</option>
                             </select>
                         </div>
                     </div>
                     <div class="layui-inline">
                         <label class="layui-form-label"><font color='red' size="4">*</font>章节:</label>
                         <div class="layui-input-inline">
-                            <select name="chapter" id="id_chapter" lay-verify="required">
+                            <select name="chapter" id="id_chapter" lay-verify="required" >
                                 <option value="">请选择章节</option>
-                                <option value="1">章节1</option>
                             </select>
                         </div>
                     </div>
@@ -105,8 +103,49 @@
             , form = layui.form;
 
         var id = layui.view.getParameterByName('id');
-
-        var oldContent = '';
+        var chapters = [], chapter_id = ''
+        admin.req({
+            url: '/admin/subject/dict/',
+            done: function (res) {
+                chapters = res.data.chapter;
+                var subject = res.data.subject;
+                var subject_node = $('#id_subject');
+                for (var i in subject) {
+                    var pid = subject[i].id;
+                    var subject_value = subject[i].name;
+                    subject_node.append("<option value='" + pid + "'>" + subject_value + "</option>");
+                }
+                form.render();
+                loadData()
+            }
+        });
+        var loadData = function () {
+            if (id) {
+                var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
+                form.val("component-form-element", editdata);
+                layedit.setContent(editIndex, editdata.title, false);
+                chapter_id = editdata.chapter;
+                subjectChange(editdata.subject)
+            }
+        };
+        var subjectChange = function (value) {
+            var chapter_option = '';
+            for (var i = 0; i < chapters.length; i++) {
+                if (chapters[i].subject_id == parseInt(value)) {
+                    if (chapters[i].id == chapter_id)
+                        chapter_option += "<option value=" + chapters[i].id + " selected>" + chapters[i].name + "</option>";
+                    else
+                        chapter_option += "<option value=" + chapters[i].id + ">" + chapters[i].name + "</option>";
+                }
+            }
+            $("#id_chapter").append(chapter_option);
+            form.render();
+        };
+        form.on('select(subjectChange)', function (data) {
+            $("#id_chapter").html('');
+            if (!data.value) return;
+            subjectChange(data.value)
+        });
 
         var editIndex = layedit.build('content_demo', {
             height: 180,
@@ -149,12 +188,6 @@
 
         form.render(null, 'component-form-element');
 
-        if (id) {
-            var editdata = JSON.parse(JSON.stringify(parent.layui.table.editdata)); // 框架有Bug所以这么转换
-            // oldContent = editdata.content;
-            form.val("component-form-element", editdata);
-            layedit.setContent(editIndex, editdata.title, false);
-        }
         var url = id ? '/admin/examquestion/' + id + "/" : '/admin/examquestion/',
             method = id ? 'put' : 'post'