|
@@ -51,12 +51,15 @@ const mutations = {
|
|
|
};
|
|
|
|
|
|
const fetchElementPositionInfos = (element, pages) => {
|
|
|
+ // 当为解答题时,element传入的值是EXPLAIN_PROP
|
|
|
let postionInfos = [];
|
|
|
for (let i = 0, ilen = pages.length; i < ilen; i++) {
|
|
|
for (let j = 0, jlen = pages[i].columns.length; j < jlen; j++) {
|
|
|
pages[i].columns[j].elements.forEach((item, eindex) => {
|
|
|
const itemId =
|
|
|
- item.type === "EXPLAIN" ? item.parent && item.parent.id : item.id;
|
|
|
+ item.type === "EXPLAIN_CHILDREN"
|
|
|
+ ? item.parent && item.parent.id
|
|
|
+ : item.id;
|
|
|
|
|
|
if (itemId === element.id) {
|
|
|
postionInfos.push({ _pageNo: i, _columnNo: j, _elementNo: eindex });
|
|
@@ -64,8 +67,8 @@ const fetchElementPositionInfos = (element, pages) => {
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- return postionInfos;
|
|
|
+ // 反序获得的位置数组,方便批量删除操作。
|
|
|
+ return postionInfos.reverse();
|
|
|
};
|
|
|
|
|
|
const fetchFirstSubjectiveTopicPositionInfo = pages => {
|
|
@@ -122,10 +125,10 @@ const actions = {
|
|
|
});
|
|
|
// 创建新的解答题元素
|
|
|
const newElements = getExplainChildren(element);
|
|
|
- const pos = positionInfos[0];
|
|
|
- newElements.forEach(newElement => {
|
|
|
+ const pos = positionInfos.pop();
|
|
|
+ newElements.forEach((newElement, index) => {
|
|
|
state.pages[pos._pageNo].columns[pos._columnNo].elements.splice(
|
|
|
- pos._elementNo,
|
|
|
+ pos._elementNo + index,
|
|
|
0,
|
|
|
newElement
|
|
|
);
|
|
@@ -136,7 +139,7 @@ const actions = {
|
|
|
} else {
|
|
|
const positionInfos = fetchElementPositionInfos(element, state.pages);
|
|
|
if (positionInfos.length) {
|
|
|
- const pos = positionInfos[0];
|
|
|
+ const pos = positionInfos.pop();
|
|
|
const elements =
|
|
|
state.pages[pos._pageNo].columns[pos._columnNo].elements;
|
|
|
elements.splice(pos._elementNo, 1, element);
|
|
@@ -170,12 +173,28 @@ const actions = {
|
|
|
state.pages[0].columns[0].elements.splice(0, 1, element);
|
|
|
},
|
|
|
removeElement({ state, commit }, element) {
|
|
|
- const positionInfos = fetchElementPositionInfos(element, state.pages);
|
|
|
- if (!positionInfos.length) return;
|
|
|
- positionInfos.forEach(pos => {
|
|
|
- const elements = state.pages[pos._pageNo].columns[pos._columnNo].elements;
|
|
|
- elements.splice(pos._elementNo, 1);
|
|
|
- });
|
|
|
+ // 解答题时,删除所有小题。
|
|
|
+ if (element.type === "EXPLAIN_CHILDREN") {
|
|
|
+ const positionInfos = fetchElementPositionInfos(
|
|
|
+ element.parent,
|
|
|
+ state.pages
|
|
|
+ );
|
|
|
+ if (positionInfos.length) {
|
|
|
+ positionInfos.forEach(pos => {
|
|
|
+ const elems =
|
|
|
+ state.pages[pos._pageNo].columns[pos._columnNo].elements;
|
|
|
+ elems.splice(pos._elementNo, 1);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const positionInfos = fetchElementPositionInfos(element, state.pages);
|
|
|
+ if (!positionInfos.length) return;
|
|
|
+ positionInfos.forEach(pos => {
|
|
|
+ const elements =
|
|
|
+ state.pages[pos._pageNo].columns[pos._columnNo].elements;
|
|
|
+ elements.splice(pos._elementNo, 1);
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
commit("setCurElement", {});
|
|
|
},
|