|
@@ -300,7 +300,7 @@ module.exports = app => {
|
|
* @param {Array} block - 复制节点Id
|
|
* @param {Array} block - 复制节点Id
|
|
* @return {Object} - 提价后的数据(其中新增粘贴数据,只返回第一层)
|
|
* @return {Object} - 提价后的数据(其中新增粘贴数据,只返回第一层)
|
|
*/
|
|
*/
|
|
- async pasteBlock(tenderId, selectId, block) {
|
|
|
|
|
|
+ async pasteBlock(tenderId, selectId, paste) {
|
|
if ((tenderId <= 0) || (selectId <= 0)) {
|
|
if ((tenderId <= 0) || (selectId <= 0)) {
|
|
return [];
|
|
return [];
|
|
}
|
|
}
|
|
@@ -310,7 +310,7 @@ module.exports = app => {
|
|
}
|
|
}
|
|
const newParentPath = selectData.full_path.replace(selectData.ledger_id, '');
|
|
const newParentPath = selectData.full_path.replace(selectData.ledger_id, '');
|
|
|
|
|
|
- const copyNodes = await this.getDataByNodeIds(tenderId, block);
|
|
|
|
|
|
+ const copyNodes = await this.getDataByNodeIds(paste.tid, paste.block);
|
|
if (!copyNodes || copyNodes.length <= 0) {
|
|
if (!copyNodes || copyNodes.length <= 0) {
|
|
throw '复制数据错误';
|
|
throw '复制数据错误';
|
|
}
|
|
}
|
|
@@ -330,17 +330,25 @@ module.exports = app => {
|
|
this.transaction = await this.db.beginTransaction();
|
|
this.transaction = await this.db.beginTransaction();
|
|
try {
|
|
try {
|
|
// 选中节点的所有后兄弟节点,order+粘贴节点个数
|
|
// 选中节点的所有后兄弟节点,order+粘贴节点个数
|
|
- await this._updateChildrenOrder(tenderId, selectData.ledger_pid, selectData.order + 1);
|
|
|
|
|
|
+ await this._updateChildrenOrder(tenderId, selectData.ledger_pid, selectData.order + 1, copyNodes.length);
|
|
// 数据库创建新增节点数据
|
|
// 数据库创建新增节点数据
|
|
for (let iNode = 0; iNode < copyNodes.length; iNode++) {
|
|
for (let iNode = 0; iNode < copyNodes.length; iNode++) {
|
|
const node = copyNodes[iNode];
|
|
const node = copyNodes[iNode];
|
|
- let datas = await this.getDataByFullPath(tenderId, node.full_path + '%');
|
|
|
|
|
|
+ let datas = await this.getDataByFullPath(paste.tid, node.full_path + '%');
|
|
datas = this._.sortBy(datas, 'level');
|
|
datas = this._.sortBy(datas, 'level');
|
|
|
|
|
|
const maxId = await this._getMaxLid(this.ctx.tender.id);
|
|
const maxId = await this._getMaxLid(this.ctx.tender.id);
|
|
|
|
|
|
const leafBillsId = [];
|
|
const leafBillsId = [];
|
|
// 计算粘贴数据中需更新部分
|
|
// 计算粘贴数据中需更新部分
|
|
|
|
+ datas.sort(function (x, y) {
|
|
|
|
+ return x.level - y.level;
|
|
|
|
+ });
|
|
|
|
+ for (const data of datas) {
|
|
|
|
+ data.children = datas.filter(function (x) {
|
|
|
|
+ return x.ledger_pid === data.ledger_id;
|
|
|
|
+ })
|
|
|
|
+ }
|
|
for (let index = 0; index < datas.length; index++) {
|
|
for (let index = 0; index < datas.length; index++) {
|
|
const data = datas[index];
|
|
const data = datas[index];
|
|
const newId = maxId + index + 1;
|
|
const newId = maxId + index + 1;
|
|
@@ -350,18 +358,12 @@ module.exports = app => {
|
|
data.id = this.uuid.v4();
|
|
data.id = this.uuid.v4();
|
|
idChange.new = data.id;
|
|
idChange.new = data.id;
|
|
data.tender_id = this.ctx.tender.id;
|
|
data.tender_id = this.ctx.tender.id;
|
|
- if (!data.is_leaf) {
|
|
|
|
- for (const children of datas) {
|
|
|
|
- children.full_path = children.full_path.replace('-' + data.ledger_id, '-' + newId);
|
|
|
|
- if (children.ledger_pid === data.ledger_id) {
|
|
|
|
- children.ledger_pid = newId;
|
|
|
|
- }
|
|
|
|
|
|
+ if (data.children && data.children.length > 0) {
|
|
|
|
+ for (const child of data.children) {
|
|
|
|
+ child.ledger_pid = newId;
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- data.full_path = data.full_path.replace('-' + data.ledger_id, '-' + newId);
|
|
|
|
}
|
|
}
|
|
data.ledger_id = newId;
|
|
data.ledger_id = newId;
|
|
- data.full_path = data.full_path.replace(orgParentPath, newParentPath);
|
|
|
|
if (data.ledger_pid === node.ledger_pid) {
|
|
if (data.ledger_pid === node.ledger_pid) {
|
|
data.ledger_pid = selectData.ledger_pid;
|
|
data.ledger_pid = selectData.ledger_pid;
|
|
data.order = selectData.order + iNode + 1;
|
|
data.order = selectData.order + iNode + 1;
|
|
@@ -372,6 +374,17 @@ module.exports = app => {
|
|
}
|
|
}
|
|
newIds.push(data.id);
|
|
newIds.push(data.id);
|
|
}
|
|
}
|
|
|
|
+ for (const data of datas) {
|
|
|
|
+ delete data.children;
|
|
|
|
+ const p = datas.find(function (x) {
|
|
|
|
+ return x.ledger_id === data.ledger_pid;
|
|
|
|
+ });
|
|
|
|
+ if (p) {
|
|
|
|
+ data.full_path = p.full_path + '-' + data.ledger_id;
|
|
|
|
+ } else {
|
|
|
|
+ data.full_path = newParentPath + '' + data.ledger_id;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
const newData = await this.transaction.insert(this.tableName, datas);
|
|
const newData = await this.transaction.insert(this.tableName, datas);
|
|
for (const id of leafBillsId) {
|
|
for (const id of leafBillsId) {
|
|
await this.ctx.service.pos.copyBillsPosData(id.org, id.new, this.transaction);
|
|
await this.ctx.service.pos.copyBillsPosData(id.org, id.new, this.transaction);
|
|
@@ -384,7 +397,6 @@ module.exports = app => {
|
|
throw err;
|
|
throw err;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
// 查询应返回的结果
|
|
// 查询应返回的结果
|
|
const order = [];
|
|
const order = [];
|
|
for (let i = 1; i <= copyNodes.length; i++) {
|
|
for (let i = 1; i <= copyNodes.length; i++) {
|