|
@@ -7,6 +7,13 @@
|
|
|
:key="modalForm.id"
|
|
|
label-width="120px"
|
|
|
>
|
|
|
+ <el-form-item prop="topicType" label="题型:">
|
|
|
+ <el-radio-group v-model="topicType" @change="topicTypeChange">
|
|
|
+ <el-radio-button label="single">单选</el-radio-button>
|
|
|
+ <el-radio-button label="multiply">多选</el-radio-button>
|
|
|
+ <el-radio-button label="boolean">判断</el-radio-button>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item prop="endNumber" label="起止题号:">
|
|
|
<el-input-number
|
|
|
style="width: 40px"
|
|
@@ -40,8 +47,8 @@
|
|
|
:disabled="modalForm.isBoolean"
|
|
|
></el-input-number>
|
|
|
</el-form-item>
|
|
|
- <!-- <el-form-item label="小题排列方向:" required>
|
|
|
- <el-radio-group v-model="modalForm.questionDirection" size="small">
|
|
|
+ <el-form-item label="选项排列方向:" required>
|
|
|
+ <el-radio-group v-model="modalForm.optionDirection" size="small">
|
|
|
<el-radio-button
|
|
|
v-for="(val, key) in DIRECTION_TYPE"
|
|
|
:key="key"
|
|
@@ -49,56 +56,6 @@
|
|
|
>{{ val }}</el-radio-button
|
|
|
>
|
|
|
</el-radio-group>
|
|
|
- </el-form-item> -->
|
|
|
- <el-form-item>
|
|
|
- <el-checkbox
|
|
|
- v-model="modalForm.isMultiply"
|
|
|
- :disabled="modalForm.isBoolean"
|
|
|
- >多选</el-checkbox
|
|
|
- >
|
|
|
- </el-form-item>
|
|
|
- <el-form-item>
|
|
|
- <el-checkbox
|
|
|
- v-model="modalForm.isBoolean"
|
|
|
- @change="selectTypeChange"
|
|
|
- :disabled="modalForm.isMultiply"
|
|
|
- >判断题</el-checkbox
|
|
|
- >
|
|
|
- <el-select
|
|
|
- v-if="modalForm.isBoolean"
|
|
|
- v-model="modalForm.booleanType"
|
|
|
- style="margin-left: 20px; width: 125px"
|
|
|
- placeholder="请选择"
|
|
|
- @change="booleanTypeChange"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in BOOLEAN_TYPE"
|
|
|
- :key="item"
|
|
|
- :label="item"
|
|
|
- :value="item"
|
|
|
- ></el-option>
|
|
|
- </el-select>
|
|
|
- <span v-if="modalForm.isBoolean">(备选是否配置)</span>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item
|
|
|
- v-if="modalForm.isBoolean"
|
|
|
- prop="booleanType"
|
|
|
- label="是否配置:"
|
|
|
- >
|
|
|
- <span>是:</span>
|
|
|
- <el-input
|
|
|
- v-model.trim="booleanTypes.yes"
|
|
|
- :maxlength="1"
|
|
|
- placeholder="是"
|
|
|
- style="margin-right: 20px; width: 60px"
|
|
|
- ></el-input>
|
|
|
- <span>否:</span>
|
|
|
- <el-input
|
|
|
- v-model.trim="booleanTypes.no"
|
|
|
- :maxlength="1"
|
|
|
- placeholder="否"
|
|
|
- style="margin-right: 20px; width: 60px"
|
|
|
- ></el-input>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
@@ -131,6 +88,13 @@ export default {
|
|
|
},
|
|
|
},
|
|
|
data() {
|
|
|
+ const topicTypeValidater = (rule, value, callback) => {
|
|
|
+ if (!this.topicType) {
|
|
|
+ callback(new Error("请选择题型"));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ };
|
|
|
const numberRangeValidater = (rule, value, callback) => {
|
|
|
if (!this.modalForm.startNumber || !this.modalForm.endNumber) {
|
|
|
return callback(new Error("请输入起止题号"));
|
|
@@ -142,32 +106,19 @@ export default {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- const booleanTypeValidater = (rule, value, callback) => {
|
|
|
- if (this.modalForm.isBoolean) {
|
|
|
- if (
|
|
|
- this.booleanTypes.yes &&
|
|
|
- this.booleanTypes.no &&
|
|
|
- this.booleanTypes.yes.length <= 2 &&
|
|
|
- this.booleanTypes.no.length <= 2
|
|
|
- ) {
|
|
|
- callback();
|
|
|
- } else {
|
|
|
- callback(new Error("请设置是否配置,单个设置最多两个字符。"));
|
|
|
- }
|
|
|
- } else {
|
|
|
- callback();
|
|
|
- }
|
|
|
- };
|
|
|
-
|
|
|
return {
|
|
|
modalForm: { ...initModalForm },
|
|
|
BOOLEAN_TYPE,
|
|
|
DIRECTION_TYPE,
|
|
|
- booleanTypes: {
|
|
|
- yes: "",
|
|
|
- no: "",
|
|
|
- },
|
|
|
+ topicType: null,
|
|
|
rules: {
|
|
|
+ topicType: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ validator: topicTypeValidater,
|
|
|
+ trigger: "change",
|
|
|
+ },
|
|
|
+ ],
|
|
|
endNumber: [
|
|
|
{
|
|
|
required: true,
|
|
@@ -188,13 +139,6 @@ export default {
|
|
|
trigger: "change",
|
|
|
},
|
|
|
],
|
|
|
- booleanType: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- validator: booleanTypeValidater,
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
},
|
|
|
};
|
|
|
},
|
|
@@ -204,23 +148,30 @@ export default {
|
|
|
methods: {
|
|
|
initData(val) {
|
|
|
const valInfo = val.parent || val;
|
|
|
+ this.topicType = this.getTopicType(valInfo);
|
|
|
this.modalForm = Object.assign({}, this.initModalForm, valInfo);
|
|
|
this.modalForm.endNumber =
|
|
|
this.modalForm.startNumber + this.modalForm.questionsCount - 1;
|
|
|
- this.booleanTypeChange();
|
|
|
},
|
|
|
- selectTypeChange(val) {
|
|
|
- if (val) {
|
|
|
- this.modalForm.optionCount = 2;
|
|
|
+ topicTypeChange() {
|
|
|
+ if (this.topicType === "single") {
|
|
|
this.modalForm.isMultiply = false;
|
|
|
- this.modalForm.booleanType = BOOLEAN_TYPE[0];
|
|
|
- this.booleanTypeChange();
|
|
|
+ this.modalForm.isBoolean = false;
|
|
|
+ this.modalForm.optionCount = 4;
|
|
|
+ } else if (this.topicType === "multiply") {
|
|
|
+ this.modalForm.isMultiply = true;
|
|
|
+ this.modalForm.isBoolean = false;
|
|
|
+ this.modalForm.optionCount = 4;
|
|
|
+ } else {
|
|
|
+ this.modalForm.isMultiply = false;
|
|
|
+ this.modalForm.isBoolean = true;
|
|
|
+ this.modalForm.optionCount = 2;
|
|
|
}
|
|
|
},
|
|
|
- booleanTypeChange() {
|
|
|
- const [yes, no] = this.modalForm.booleanType.split(",");
|
|
|
- this.booleanTypes.yes = yes;
|
|
|
- this.booleanTypes.no = no;
|
|
|
+ getTopicType(info) {
|
|
|
+ if (info.isMultiply) return "multiply";
|
|
|
+ if (info.isBoolean) return "boolean";
|
|
|
+ return "single";
|
|
|
},
|
|
|
async submit() {
|
|
|
const valid = await this.$refs.modalFormComp.validate().catch(() => {});
|
|
@@ -228,10 +179,6 @@ export default {
|
|
|
|
|
|
this.modalForm.questionsCount =
|
|
|
this.modalForm.endNumber - this.modalForm.startNumber + 1;
|
|
|
- this.modalForm.booleanType = [
|
|
|
- this.booleanTypes.yes,
|
|
|
- this.booleanTypes.no,
|
|
|
- ].join();
|
|
|
this.$emit("modified", this.modalForm);
|
|
|
},
|
|
|
},
|