|
@@ -163,6 +163,7 @@ module.exports = app => {
|
|
|
}
|
|
|
}
|
|
|
async move(templateId, data) {
|
|
|
+ console.log(data);
|
|
|
const filing = await this.getDataById(data.id);
|
|
|
if (!filing) throw '移动的分类不存在,请刷新页面后重试';
|
|
|
const parent = await this.getDataById(data.tree_pid);
|
|
@@ -171,45 +172,47 @@ module.exports = app => {
|
|
|
const posterity = await this.getPosterityData(templateId, filing.id);
|
|
|
|
|
|
const result = [];
|
|
|
- const conn = await this.db.beginTransaction();
|
|
|
- try {
|
|
|
- const updateData = { id: filing.id, tree_order: data.tree_order, tree_pid: data.tree_pid, tree_level: parent ? parent.tree_level + 1 : 1, filing_type };
|
|
|
- conn.update(this.tableName, updateData);
|
|
|
- result.push(updateData);
|
|
|
- if (posterity.length > 0) {
|
|
|
- const posterityUpdateData = posterity.map(x => { return { id: x.id, filing_type, tree_level: parent.tree_level + 1 - filing.tree_level + x.tree_level }});
|
|
|
- conn.updateRows(this.tableName, posterityUpdateData);
|
|
|
- }
|
|
|
- const siblingUpdateData = [];
|
|
|
- if (data.tree_pid === filing.tree_pid) {
|
|
|
- if (data.tree_order < filing.tree_order) {
|
|
|
- sibling.forEach(x => {
|
|
|
- if (x.id === filing.id) return;
|
|
|
- if (x.tree_order < data.tree_order) return;
|
|
|
- if (x.tree_order > filing.tree_order) return;
|
|
|
- siblingUpdateData.push({id: x.id, tree_order: x.tree_order + 1});
|
|
|
- });
|
|
|
- } else {
|
|
|
- sibling.forEach(x => {
|
|
|
- if (x.id === filing.id) return;
|
|
|
- if (x.tree_order < filing.tree_order) return;
|
|
|
- if (x.tree_order > data.tree_order) return;
|
|
|
- siblingUpdateData.push({id: x.id, tree_order: x.tree_order - 1});
|
|
|
- });
|
|
|
- }
|
|
|
+ const updateData = { id: filing.id, tree_order: data.tree_order, tree_pid: data.tree_pid, tree_level: parent ? parent.tree_level + 1 : 1, filing_type };
|
|
|
+ result.push(updateData);
|
|
|
+ const posterityUpdateData = posterity.map(x => { return { id: x.id, filing_type, tree_level: parent.tree_level + 1 - filing.tree_level + x.tree_level }});
|
|
|
+ result.push(posterityUpdateData);
|
|
|
+ const siblingUpdateData = [];
|
|
|
+ if (data.tree_pid === filing.tree_pid) {
|
|
|
+ if (data.tree_order < filing.tree_order) {
|
|
|
+ sibling.forEach(x => {
|
|
|
+ if (x.id === filing.id) return;
|
|
|
+ if (x.tree_order < data.tree_order) return;
|
|
|
+ if (x.tree_order > filing.tree_order) return;
|
|
|
+ siblingUpdateData.push({id: x.id, tree_order: x.tree_order + 1});
|
|
|
+ });
|
|
|
} else {
|
|
|
- const orgSibling = await this.getAllDataByCondition({ where: { temp_id: templateId, tree_pid: filing.tree_pid } });
|
|
|
- orgSibling.forEach(x => {
|
|
|
+ sibling.forEach(x => {
|
|
|
+ if (x.id === filing.id) return;
|
|
|
if (x.tree_order < filing.tree_order) return;
|
|
|
+ if (x.tree_order > data.tree_order) return;
|
|
|
siblingUpdateData.push({id: x.id, tree_order: x.tree_order - 1});
|
|
|
});
|
|
|
- sibling.forEach(x => {
|
|
|
- if (x.tree_order < data.tree_order) return;
|
|
|
- siblingUpdateData.push({id: x.id, tree_order: x.tree_order + 1});
|
|
|
- })
|
|
|
}
|
|
|
- await conn.updateRows(this.tableName, siblingUpdateData);
|
|
|
- result.push(...siblingUpdateData);
|
|
|
+ } else {
|
|
|
+ const orgSibling = await this.getAllDataByCondition({ where: { temp_id: templateId, tree_pid: filing.tree_pid } });
|
|
|
+ orgSibling.forEach(x => {
|
|
|
+ if (x.id === filing.id) return;
|
|
|
+ if (x.tree_order < filing.tree_order) return;
|
|
|
+ siblingUpdateData.push({id: x.id, tree_order: x.tree_order - 1});
|
|
|
+ });
|
|
|
+ sibling.forEach(x => {
|
|
|
+ if (x.id === filing.id) return;
|
|
|
+ if (x.tree_order < data.tree_order) return;
|
|
|
+ siblingUpdateData.push({id: x.id, tree_order: x.tree_order + 1});
|
|
|
+ })
|
|
|
+ }
|
|
|
+ result.push(...siblingUpdateData);
|
|
|
+
|
|
|
+ const conn = await this.db.beginTransaction();
|
|
|
+ try {
|
|
|
+ await conn.update(this.tableName, updateData);
|
|
|
+ if (posterityUpdateData.length > 0) await conn.updateRows(this.tableName, posterityUpdateData);
|
|
|
+ if (siblingUpdateData.length > 0) await conn.updateRows(this.tableName, siblingUpdateData);
|
|
|
await conn.commit();
|
|
|
return { update: result };
|
|
|
} catch(err) {
|