| 
					
				 | 
			
			
				@@ -0,0 +1,349 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  <div v-loading="loading"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ref="form" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :model="form" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :rules="rules" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      label-width="80px" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :disabled="dlgType === 3" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="问题分类" prop="categoryId"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <SelectRemote 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          url="/question/category/list" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          field="name" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="form.categoryId" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :selectObj="selectObj" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :searchParams="searchParams" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="问题类型" prop="type"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-radio-group v-model="form.type" @input="changeType"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-radio label="1">单选</el-radio> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-radio label="2">多选</el-radio> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-radio-group> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="问题描述" prop="descripiton"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type="textarea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :rows="4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="form.descripiton" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder="请输入问题描述" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="选项列表" prop="itemList"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type="primary" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          @click="addOption" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          style="margin-bottom: 6px" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-if="dlgType !== 3" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          >添加选项</el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-table :data="form.itemList" style="width: 100%"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-table-column prop="code" label="选项" width="80" align="center" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-table-column prop="optVal" label="值" align="center" /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-table-column 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            label="操作" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            width="120" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            align="center" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-if="dlgType !== 3" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            <template #default="{ row }"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-button type="text" size="small" @click="editOption(row)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                >修改</el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              <el-button type="text" size="small" @click="deleteOption(row)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                >删除</el-button 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          </el-table-column> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-table> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="正确选项" prop="correctItem"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <!--  value-key="code" --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-select 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ref="selectRef" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :multiple="form.type === '2'" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="form.correctItem" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder="请选择正确选项" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          style="width: 100%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <!-- :label="`${item.code} - ${item.value}`" --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-option 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-for="item in form.itemList" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :key="item.code" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :label="item.code" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :value="item.code" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          ></el-option> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-select> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="问题解析" prop="analysis"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type="textarea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :rows="4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="form.analysis" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder="请输入问题解析" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form-item label="备注" prop="remark"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          type="textarea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :rows="4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          v-model="form.remark" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          placeholder="请输入备注" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div style="text-align: right" v-if="dlgType !== 3"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-button type="primary" @click="handleConfirm">确 定</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-button @click="handleCancel">取 消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <div style="text-align: right" v-else> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-button @click="handleCancel">关 闭</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- 新增/编辑选项框 --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <el-dialog 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :title="dlgTitle" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      :visible.sync="optionVisible" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      width="30%" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      append-to-body 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <el-form 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ref="optionForm" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :model="optionForm" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        :rules="optionRules" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        label-width="80px" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="选项"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input v-model="optionForm.code" disabled /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-form-item label="值" prop="optVal"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <el-input 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type="textarea" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            :rows="4" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            v-model="optionForm.optVal" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            placeholder="请输入选项值" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </el-form-item> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </el-form> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      <span slot="footer" class="dialog-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button type="primary" @click="confirmOption">确 定</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <el-button @click="optionVisible = false">取 消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </span> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    </el-dialog> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import SelectRemote from "@/components/SelectRemote"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  components: { SelectRemote }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  props: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: Object, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      default: () => {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    loading: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: Boolean, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      default: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    dlgType: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 弹窗类型  1 - 新增   2 - 修改   3 - 查看 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      type: Number, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      default: 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  data() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 选中的问题分类 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      selectObj: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 远程搜索框的查询条件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      searchParams: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 选项弹窗相关参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dlgTitle: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      optionVisible: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      optionForm: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      optionRules: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        optVal: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { required: true, trigger: "blur", message: "选项值不能为空" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      form: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        categoryId: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type: "1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        descripiton: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        itemList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        correctItem: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        analysis: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        remark: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      rules: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        categoryId: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { required: true, trigger: "change", message: "请选择问题分类" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        descripiton: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { required: true, trigger: "blur", message: "请输入问题描述" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        itemList: [{ required: true, trigger: "blur", message: "请添加选项" }], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        correctItem: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { required: true, trigger: "change", message: "请选择正确选项" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        analysis: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          { required: true, trigger: "blur", message: "请输入问题解析" }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  watch: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      handler(newVal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (newVal) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.form = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id: newVal.id || "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            categoryId: newVal.categoryId || "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type: newVal.type || "1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            descripiton: newVal.descripiton || "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            itemList: newVal.itemList ? JSON.parse(newVal.itemList) : [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            correctItem: newVal.correctItem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ? newVal.type === "1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ? newVal.correctItem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                : newVal.correctItem.split(",") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              : "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            analysis: newVal.analysis || "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            remark: newVal.remark || "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.selectObj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            id: newVal.categoryId || "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            selectLabel: newVal.categoryName || "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$refs.form && this.$refs.form.clearValidate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  methods: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 切换单选多选 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    changeType(val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log(this.form.correctItem); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // console.log(val, this.form.correctItem, this.$refs.selectRef); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (val === "2") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.form.correctItem = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$refs.selectRef.selectedLabel = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.form.correctItem = undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$refs.form && this.$refs.form.clearValidate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 确认添加选项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    confirmOption() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.optionForm.validate((valid) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (this.dlgTitle === "编辑选项") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let targetIndex = this.form.itemList.findIndex( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              (item) => item.code === this.optionForm.code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.$set(this.form.itemList, targetIndex, this.optionForm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.form.itemList.push(this.optionForm); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.optionVisible = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 删除选项(需要更新一下code值) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    deleteOption(row) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log("删除的当前行数据", row); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let targetIndex = this.form.itemList.findIndex( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        (item) => item.code === row.code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 先判断一下删除的选项是否被选中为正确选项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 是的话 需要确认是否删除 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.form.correctItem.includes(row.code)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$modal 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .confirm("当前选项已被选中为正确选项,是否确认删除?") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .then(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.form.itemList.splice(targetIndex, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 清除正确选项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.form.correctItem = this.form.type === "1" ? "" : []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 更新选项列表的code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.form.itemList.forEach((item, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              item.code = String.fromCharCode(index + 65); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          .catch(() => {}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.form.itemList.splice(targetIndex, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 更新选项列表的code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.form.itemList.forEach((item, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          item.code = String.fromCharCode(index + 65); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 编辑选项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    editOption(row) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log("编辑的当前行数据", row); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.dlgTitle = "编辑选项"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.optionVisible = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.optionForm = { ...row }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 添加选项 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addOption() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 首先拿到选项列表的最后一项的code,然后根据这个code生成下一项的code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 也可以拿到选项列表的长度,根据长度判断下一个的code, A ----  65 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let index = this.form.itemList.length; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      let nextCode = String.fromCharCode(index + 65); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log("下一项的code", nextCode); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.dlgTitle = "新增选项"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.optionVisible = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.optionForm = { code: nextCode, optVal: "" }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 清除一下校验 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.optionForm && this.$refs.optionForm.clearValidate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 确定 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleConfirm() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$refs.form.validate((valid) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (valid) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          let obj = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ...this.form, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            itemList: JSON.stringify(this.form.itemList), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            correctItem: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              this.form.type === "1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ? this.form.correctItem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                : this.sortEn(this.form.correctItem).join(","), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          console.log(obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          this.$emit("confirm", obj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 数组的值按照英文字母排序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    sortEn(arr) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      arr.sort(function (a, b) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return a.charCodeAt(0).toString(16) - b.charCodeAt(0).toString(16); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return arr; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 取消 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    handleCancel() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.form = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        categoryId: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type: "1", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        descripiton: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        itemList: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        correctItem: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        analysis: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        remark: "", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$nextTick(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.$refs.form && this.$refs.form.clearValidate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.$emit("cancel"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+</script> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+<style lang="scss" scoped></style> 
			 |