|  | @@ -0,0 +1,75 @@
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * Created by Mai on 2017/4/14.
 | 
	
		
			
				|  |  | + * 清单模板,新建项目使用
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +import BaseModel from "../../../common/base/base_model";
 | 
	
		
			
				|  |  | +import BillsTemplateSchema from "./schemas/bills_template";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class BillsTemplateModel extends BaseModel {
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 构造函数
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @return {void}
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    constructor() {
 | 
	
		
			
				|  |  | +        let parent = super();
 | 
	
		
			
				|  |  | +        parent.model = BillsTemplateSchema;
 | 
	
		
			
				|  |  | +        parent.init();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 获取计价类别对应的清单模板
 | 
	
		
			
				|  |  | +     * @param valuationId
 | 
	
		
			
				|  |  | +     * @returns {*}
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    async getTemplateData (valuationId) {
 | 
	
		
			
				|  |  | +        // 筛选字段
 | 
	
		
			
				|  |  | +        let field = {_id: 1, valuationId: 1, ID: 1, ParentID: 1, NextSiblingID: 1, code: 1, name: 1, unit: 1, flags: 1};
 | 
	
		
			
				|  |  | +        let data = await this.findDataByCondition({valuationId: valuationId}, field, false);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return data === null ? [] : data;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 新建项目时,获取计价类别对应的清单模板
 | 
	
		
			
				|  |  | +     * @param valuationId
 | 
	
		
			
				|  |  | +     * @returns {*}
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    async getTemplateDataForNewProj (valuationId) {
 | 
	
		
			
				|  |  | +        // 筛选字段
 | 
	
		
			
				|  |  | +        let field = {_id: 0, ID: 1, ParentID: 1, NextSiblingID: 1, code: 1, name: 1, unit: 1, flags: 1};
 | 
	
		
			
				|  |  | +        let data = await this.findDataByCondition({valuationId: valuationId}, field, false);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return data === null ? [] : data;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    async updateTemplate (valuationId, datas) {
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            for (let data of datas) {
 | 
	
		
			
				|  |  | +                data.data.valuationId = valuationId;
 | 
	
		
			
				|  |  | +                let condition = {valuationId: valuationId, ID: data.data.ID}, result;
 | 
	
		
			
				|  |  | +                if (data.type === 'update') {
 | 
	
		
			
				|  |  | +                    result = await this.db.update(condition, data.data);
 | 
	
		
			
				|  |  | +                    if (result === undefined || result.ok ===undefined || !result.ok) {
 | 
	
		
			
				|  |  | +                        throw '更新数据错误';
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                } else if (data.type === 'new') {
 | 
	
		
			
				|  |  | +                    result = await this.db.create(data.data);
 | 
	
		
			
				|  |  | +                    if (!result) {
 | 
	
		
			
				|  |  | +                        throw '新增数据错误';
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                } else if (data.type === 'delete') {
 | 
	
		
			
				|  |  | +                    result = await this.db.delete(condition);
 | 
	
		
			
				|  |  | +                    if (result === undefined || result.ok ===undefined || !result.ok) {
 | 
	
		
			
				|  |  | +                        throw '删除数据错误';
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return true;
 | 
	
		
			
				|  |  | +        } catch (error) {
 | 
	
		
			
				|  |  | +            console.log(error);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default BillsTemplateModel;
 |