|
|
@@ -2,7 +2,7 @@
|
|
|
<div class="setChoiceQuestion">
|
|
|
<div class="testItem" v-for="(item, index) in jsonData.testJson" :key="item.id">
|
|
|
<div class="ti_header">
|
|
|
- <span>{{ lang.ssTopic }}{{ index + 1 }} <span v-if="item.answer.length==0">{{lang.ssNoSettingAnswer}}</span></span>
|
|
|
+ <span>{{ lang.ssTopic }}{{ index + 1 }} <span v-if="item.answer.length==0 || item.checkList.some(opt=>opt=='')">{{lang.ssOptionEmpty}}</span></span>
|
|
|
<div class="ti_h_edit">
|
|
|
<span @click="copyTest(item.id)">
|
|
|
<svg viewBox="0 0 1024 1024" version="1.1" p-id="4608" width="200" height="200">
|
|
|
@@ -13,7 +13,7 @@
|
|
|
</span>
|
|
|
|
|
|
<!-- 上 -->
|
|
|
- <span @click="changeIndex(item, index, 'up')">
|
|
|
+ <span :class="{'disabled': index === 0}" @click="changeIndex(item, index, 'up')">
|
|
|
<svg viewBox="0 0 1024 1024" width="200" height="200" fill="#6B7280">
|
|
|
<path
|
|
|
d="M959.804421 511.603981l-84.009346 84.023672L576.143391 293.406446l0 665.582911L448.20351 958.989357 448.20351 293.406446 147.619594 595.628676l-84.024695-84.023672L512.213359 63.546292 959.804421 511.603981z">
|
|
|
@@ -21,7 +21,7 @@
|
|
|
</svg>
|
|
|
</span>
|
|
|
<!-- 下 -->
|
|
|
- <span @click="changeIndex(item, index, 'down')">
|
|
|
+ <span :class="{'disabled': index === jsonData.testJson.length - 1}" @click="changeIndex(item, index, 'down')">
|
|
|
<svg style="transform: rotate(180deg);" viewBox="0 0 1024 1024" width="200" height="200" fill="#6B7280">
|
|
|
<path
|
|
|
d="M959.804421 511.603981l-84.009346 84.023672L576.143391 293.406446l0 665.582911L448.20351 958.989357 448.20351 293.406446 147.619594 595.628676l-84.024695-84.023672L512.213359 63.546292 959.804421 511.603981z">
|
|
|
@@ -41,8 +41,7 @@
|
|
|
</div>
|
|
|
|
|
|
<div class="ti_title">
|
|
|
- <div class="ti_t_input" contenteditable="true" v-text="item.teststitle"
|
|
|
- @blur="setTestTitle(item.id, $event.target.innerText)"></div>
|
|
|
+ <el-input class="ti_t_input" type="textarea" v-model="item.teststitle" :rows="3" :autosize="{ minRows: 3, maxRows: 6 }" resize="none" :placeholder="lang.ssEnterTextTitle" @blur="setTestTitle(item.id)"></el-input>
|
|
|
<div class="uploadImage" @click="uploadImage(item.id)">
|
|
|
<svg viewBox="0 0 1024 1024" version="1.1" p-id="15953" width="200" height="200">
|
|
|
<path
|
|
|
@@ -175,7 +174,8 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
jsonData: {},
|
|
|
- dragItem: null
|
|
|
+ dragItem: null,
|
|
|
+ delJson:null,
|
|
|
}
|
|
|
},
|
|
|
watch: {
|
|
|
@@ -222,12 +222,12 @@ export default {
|
|
|
this.setTestJson();
|
|
|
},
|
|
|
//修改标题
|
|
|
- setTestTitle(id, title) {
|
|
|
- console.log('修改标题', id, title)
|
|
|
- let test = this.jsonData.testJson.find(item => item.id == id);
|
|
|
- if (test) {
|
|
|
- test.teststitle = title;
|
|
|
- }
|
|
|
+ setTestTitle(id, target) {
|
|
|
+ // let title = target.innerText;
|
|
|
+ // let test = this.jsonData.testJson.find(item => item.id == id);
|
|
|
+ // if (test) {
|
|
|
+ // test.teststitle = title;
|
|
|
+ // }
|
|
|
this.setTestJson();
|
|
|
},
|
|
|
// 点击复选框
|
|
|
@@ -244,6 +244,7 @@ export default {
|
|
|
},
|
|
|
// 删除题目
|
|
|
deleteTest(id) {
|
|
|
+ this.delJson = JSON.stringify(this.jsonData.testJson);
|
|
|
let index = this.jsonData.testJson.findIndex(item => item.id == id);
|
|
|
this.jsonData.testJson.splice(index, 1);
|
|
|
this.setTestJson();
|
|
|
@@ -312,14 +313,14 @@ export default {
|
|
|
if (test) {
|
|
|
if (direction == 'up') {
|
|
|
if (index == 0) {
|
|
|
- this.$message.info("已到顶部");
|
|
|
+ //this.$message.info("已到顶部");
|
|
|
return;
|
|
|
}
|
|
|
this.jsonData.testJson.splice(index, 1);
|
|
|
this.jsonData.testJson.splice(index - 1, 0, JSON.parse(JSON.stringify(test)));
|
|
|
} else if (direction == 'down') {
|
|
|
if (index == this.jsonData.testJson.length - 1) {
|
|
|
- this.$message.info("已到底部");
|
|
|
+ //this.$message.info("已到底部");
|
|
|
return;
|
|
|
}
|
|
|
this.jsonData.testJson.splice(index, 1);
|
|
|
@@ -409,6 +410,21 @@ export default {
|
|
|
});
|
|
|
this.dragItem = null;
|
|
|
},
|
|
|
+ // ctrl+z 撤销删除
|
|
|
+ undoDelete() {
|
|
|
+ if (this.delJson) {
|
|
|
+ this.jsonData.testJson = JSON.parse(this.delJson);
|
|
|
+ this.setTestJson();
|
|
|
+ this.delJson = null;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ window.addEventListener('keydown', (e)=>{
|
|
|
+ if (e.ctrlKey && e.key === 'z') {
|
|
|
+ this.undoDelete();
|
|
|
+ }
|
|
|
+ });
|
|
|
},
|
|
|
}
|
|
|
</script>
|
|
|
@@ -503,6 +519,13 @@ export default {
|
|
|
fill: #6B7280;
|
|
|
}
|
|
|
|
|
|
+.ti_h_edit>.disabled {
|
|
|
+ cursor: not-allowed;
|
|
|
+ opacity: 0.5;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
.ti_title {
|
|
|
width: 100%;
|
|
|
height: fit-content;
|
|
|
@@ -524,11 +547,25 @@ export default {
|
|
|
background: none;
|
|
|
font-size: 1.2rem;
|
|
|
resize: none;
|
|
|
- max-height: 10rem;
|
|
|
+ /* max-height: 10rem; */
|
|
|
overflow: auto;
|
|
|
/* padding-right: 2rem; */
|
|
|
}
|
|
|
|
|
|
+.ti_t_input /deep/ .el-textarea__inner {
|
|
|
+ padding: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
+ border: none;
|
|
|
+ outline: none;
|
|
|
+ background: none;
|
|
|
+ font-size: 1.2rem;
|
|
|
+ resize: none;
|
|
|
+ /* max-height: 10rem; */
|
|
|
+ overflow: auto;
|
|
|
+}
|
|
|
+
|
|
|
.uploadImage {
|
|
|
position: absolute;
|
|
|
bottom: 0.5rem;
|