|
@@ -15,7 +15,8 @@
|
|
|
<div class="content">
|
|
|
<ul>
|
|
|
<li v-for="(item, i) in data.option_list" :key="i" class="content-item">
|
|
|
- <span class="question-number" title="双击切换序号类型" @dblclick="changeOptionType(data)">
|
|
|
+ <el-input v-if="isEnable(isEnableManualModify)" v-model="item.custom_number" class="manual-modify" />
|
|
|
+ <span v-else class="question-number" title="双击切换序号类型" @dblclick="changeOptionType(data)">
|
|
|
{{ computedQuestionNumber(i, data.option_number_show_mode) }}
|
|
|
</span>
|
|
|
<div v-if="isEnable(data.property.is_option_subdivision)" class="option-list">
|
|
@@ -178,6 +179,12 @@ import {
|
|
|
export default {
|
|
|
name: 'SelectQuestion',
|
|
|
mixins: [QuestionMixin],
|
|
|
+ props: {
|
|
|
+ isEnableManualModify: {
|
|
|
+ type: String,
|
|
|
+ default: 'false',
|
|
|
+ },
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
selectTypeList,
|
|
@@ -192,6 +199,14 @@ export default {
|
|
|
},
|
|
|
immediate: true,
|
|
|
},
|
|
|
+ isEnableManualModify: {
|
|
|
+ handler(val) {
|
|
|
+ if (val === 'false') return;
|
|
|
+ this.data.option_list = this.data.option_list.map((item, i) => {
|
|
|
+ return { ...item, custom_number: `${i + 1}` };
|
|
|
+ });
|
|
|
+ },
|
|
|
+ },
|
|
|
},
|
|
|
methods: {
|
|
|
/**
|
|
@@ -277,12 +292,12 @@ export default {
|
|
|
if (isEnable(val)) {
|
|
|
// 创建与当前 option_list 相同数量的选项,选项内的细分数量与 property.option_number 数量一样
|
|
|
this.data.answer.answer_list = [];
|
|
|
- this.data.option_list = Array.from({ length: this.data.option_list.length }, () => {
|
|
|
- return getSubdivisionOption(this.data.property.option_number);
|
|
|
+ this.data.option_list = Array.from({ length: this.data.option_list.length }, (el, i) => {
|
|
|
+ return getSubdivisionOption(this.data.property.option_number, i);
|
|
|
});
|
|
|
} else {
|
|
|
this.data.answer.answer_list = [];
|
|
|
- this.data.option_list = Array.from({ length: this.data.option_list.length }, getOption);
|
|
|
+ this.data.option_list = Array.from({ length: this.data.option_list.length }, (el, i) => getOption('', true, i));
|
|
|
}
|
|
|
},
|
|
|
/**
|
|
@@ -291,11 +306,15 @@ export default {
|
|
|
*/
|
|
|
changeOptionNumber(val) {
|
|
|
this.data.answer.answer_list = [];
|
|
|
- this.data.option_list = this.data.option_list.map(({ data_list, mark }) => {
|
|
|
+ this.data.option_list = this.data.option_list.map(({ data_list, mark, ...item }) => {
|
|
|
if (data_list.length < val) {
|
|
|
- return { mark, data_list: [...data_list, ...Array.from({ length: val - data_list.length }, getOption)] };
|
|
|
+ return {
|
|
|
+ mark,
|
|
|
+ data_list: [...data_list, ...Array.from({ length: val - data_list.length }, getOption)],
|
|
|
+ ...item,
|
|
|
+ };
|
|
|
}
|
|
|
- return { mark, data_list: data_list.slice(0, val) };
|
|
|
+ return { mark, data_list: data_list.slice(0, val), ...item };
|
|
|
});
|
|
|
},
|
|
|
},
|
|
@@ -304,6 +323,16 @@ export default {
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
.content {
|
|
|
+ &-item {
|
|
|
+ .manual-modify {
|
|
|
+ width: 55px;
|
|
|
+
|
|
|
+ :deep .el-input__inner {
|
|
|
+ height: 36px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
.option-list {
|
|
|
display: flex;
|
|
|
flex: 1;
|