123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- /**
- * 组成物相关数据
- *
- * @author CaiAoLin
- * @date 2017/10/27
- * @version
- */
- function Composition() {
- this.datas = null;
- this.isLoading = false;
- }
- /**
- * 加载数据
- *
- * @param {function} callback
- * @return {boolean}
- */
- Composition.prototype.loadData = function (callback = null) {
- let self = this;
- if (self.isLoading) {
- return false;
- }
- /* // 加载组成物数据
- $.ajax({
- url: '/glj/get-composition',
- type: 'post',
- dataType: 'json',
- data: {project_id: scUrlUtil.GetQueryString('project')},
- error: function() {
- // alert('数据传输错误');
- },
- beforeSend: function() {
- self.isLoading = true;
- },
- success: function(response) {
- self.isLoading = false;
- if (response.err === 1) {
- let msg = response.msg !== undefined && response.msg !== '' ? response.msg : '读取组成物数据失败!';
- alert(msg);
- return false;
- }
- self.datas = response.data;
- // 回调函数
- if (callback !== null) {
- callback(response.data);
- }
- // 存入缓存
- projectObj.project.composition = self;
- }
- });*/
- };
- /**
- * 获取对应code的组成物数据
- *
- * @param {String} code
- * @param {Number} gljType
- * @return {Array}
- */
- Composition.prototype.getCompositionByCode = function(code, gljType = 0) {
- let result = [];
- if (code === '') {
- return result;
- }
- if (gljType === 0) {
- return this.datas[code] !== undefined ? this.datas[code] : result;
- }
- for(let composition of this.datas[code]) {
- if (composition.glj_type === gljType) {
- result.push(composition);
- }
- }
- return result;
- };
- Composition.prototype.getCompositionByGLJ = function (glj) {
- let mixRatioMap = projectObj.project.projectGLJ.datas.mixRatioMap;
- let projectGljs = projectObj.project.projectGLJ.datas.gljList;
- let connect_index = gljOprObj.getIndex(glj,gljKeyArray);
- let gljList=[];
- if(mixRatioMap[connect_index]){ //说明是有组成物的类型
- gljList = gljOprObj.getMixRationShowDatas(mixRatioMap[connect_index], projectGljs);
- }
- return gljList;
- };
- Composition.prototype.deleteComposition = function (updateData,recode,pid,callback) {
- let me = this;
- $.bootstrapLoading.start();
- CommonAjax.specialPost( '/glj/delete-ratio',{id: updateData.id},function (result){
- me.updateConsumptionInCache(pid,recode,updateData,"delete");
- if(callback){
- callback();
- }
- $.bootstrapLoading.end();
- })
- };
- Composition.prototype.updateConsumptionInCache = function (pid,recode,updateData,operation='modify') {
- let decimal = getDecimal("glj.quantity");
- let parentGlj = projectObj.project.projectGLJ.getByID(pid);//得到父工料机的数据
- let ratioData = recode;
- let con_key = gljOprObj.getIndex(ratioData,gljKeyArray);
- let mglj = projectObj.project.projectGLJ.getByConKey(con_key);//取组成物对应的工料机;
- if(mglj && parentGlj){
- let newValue = scMathUtil.roundForObj(updateData.value,decimal);
- let oldValue = scMathUtil.roundForObj(ratioData.consumption,decimal);
- let changValue = scMathUtil.roundForObj(newValue-oldValue,decimal);
- //乘以父工料机的消耗量得到该组成物总消耗量的改变量
- changValue = operationWithRound(parentGlj.quantity,changValue,"glj.quantity","*");
- let oldQuantity = scMathUtil.roundForObj(mglj.quantity,decimal);
- mglj.quantity = scMathUtil.roundForObj(oldQuantity+changValue,decimal);
- recode.consumption = newValue;
- projectObj.project.projectGLJ.quantityChangeMap[mglj.id] = mglj.quantity;
- let p_key = gljOprObj.getIndex(parentGlj,gljKeyArray);
- let m_list = projectObj.project.projectGLJ.datas.mixRatioMap[p_key];
- if(operation == 'delete'){//如果是删除
- _.remove(parentGlj.ratio_data,{"id":updateData.id});
- _.remove(m_list,{"id":updateData.id});
- }else {
- let subData = _.find(parentGlj.ratio_data,{"id":updateData.id});
- if(subData){
- subData.consumption = updateData.value;
- }
- //更新组成物map里的数据
- let m_ratioData = _.find(m_list,{"id":updateData.id});
- if(m_ratioData){
- m_ratioData.consumption = updateData.value;
- }
- }
- // 设置父级3个价格
- parentGlj.unit_price.market_price = updateData.market_price;
- parentGlj.unit_price.base_price = updateData.base_price;
- return mglj.id;
- }
- }
- Composition.prototype.updateConsumption = function (updateData,recode,pid,callback){
- let me = this;
- $.bootstrapLoading.start();
- CommonAjax.specialPost( '/glj/update',updateData,function (result) {
- //更新缓存
- let sid = me.updateConsumptionInCache(pid,recode,updateData);
- if(callback){
- callback(sid);
- }
- $.bootstrapLoading.end();
- })
- };
|