|
|
@@ -234,6 +234,34 @@ module.exports = app => {
|
|
|
return insertData;
|
|
|
}
|
|
|
|
|
|
+ async _insertDatas(data, result) {
|
|
|
+ const select = await this.getDataById(data.select_id);
|
|
|
+ if (!select) throw '选择的签约清单不存在,请刷新页面后重试';
|
|
|
+
|
|
|
+ const insertData = [];
|
|
|
+ for (let i = 0; i < data.count; i++) {
|
|
|
+ insertData.push({
|
|
|
+ id: this.uuid.v4(),
|
|
|
+ tender_id: this.ctx.tender.id,
|
|
|
+ order: select.order + i,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ const transaction = await this.db.beginTransaction();
|
|
|
+ try {
|
|
|
+ await transaction.query('Update ?? SET `order` = `order` + ? WHERE tender_id = ? and `order` >= ?', [this.tableName, data.count, this.ctx.tender.id, select.order]);
|
|
|
+ await transaction.insert(this.tableName, insertData);
|
|
|
+ await transaction.commit();
|
|
|
+ } catch(err) {
|
|
|
+ this.ctx.log(err);
|
|
|
+ await transaction.rollback();
|
|
|
+ throw '插入数据错误';
|
|
|
+ }
|
|
|
+
|
|
|
+ result.add = insertData;
|
|
|
+ result.update = await this.db.query('SELECT * FROM ?? where tender_id = ? and `order` >= ?', [this.tableName, this.ctx.tender.id, select.order + data.count]);
|
|
|
+ }
|
|
|
+
|
|
|
async _delDatas (data) {
|
|
|
await this.db.delete(this.tableName, {id: data});
|
|
|
return data;
|
|
|
@@ -278,15 +306,10 @@ module.exports = app => {
|
|
|
async updateDatas(data) {
|
|
|
const result = {add: [], del: [], update: []};
|
|
|
try {
|
|
|
- if (data.add) {
|
|
|
- result.add = await this._addDatas(data.add);
|
|
|
- }
|
|
|
- if (data.update) {
|
|
|
- result.update = await this._updateDatas(data.update);
|
|
|
- }
|
|
|
- if (data.del) {
|
|
|
- result.del = await this._delDatas(data.del);
|
|
|
- }
|
|
|
+ if (data.add) result.add = await this._addDatas(data.add);
|
|
|
+ if (data.update) result.update = await this._updateDatas(data.update);
|
|
|
+ if (data.del) result.del = await this._delDatas(data.del);
|
|
|
+ if (data.insert) await this._insertDatas(data.insert, result);
|
|
|
return result;
|
|
|
} catch (err) {
|
|
|
if (err) result.err = err;
|