|  | @@ -145,7 +145,7 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              SpreadJsObj.loadSheetData(xmjSpreadSheet, SpreadJsObj.DataType.Data, xmjs);
 | 
	
		
			
				|  |  | -            checkSelectAll();
 | 
	
		
			
				|  |  | +            checkSelectAll(data);
 | 
	
		
			
				|  |  |          },
 | 
	
		
			
				|  |  |          selectionChanged: function (e, info) {
 | 
	
		
			
				|  |  |              const data = SpreadJsObj.getSelectObject(info.sheet);
 | 
	
	
		
			
				|  | @@ -202,6 +202,8 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |              if (info.sheet.zh_setting) {
 | 
	
		
			
				|  |  |                  const select = SpreadJsObj.getSelectObject(info.sheet);
 | 
	
		
			
				|  |  |                  const col = info.sheet.zh_setting.cols[info.col];
 | 
	
		
			
				|  |  | +                const gclInfo = SpreadJsObj.getSelectObject(gclSpreadSheet);
 | 
	
		
			
				|  |  | +                const gclIndex = changeListData.indexOf(gclInfo);
 | 
	
		
			
				|  |  |                  if (col.field === 'is_change') {
 | 
	
		
			
				|  |  |                      if (xmjCol.readOnly.isChangeList(select)) {
 | 
	
		
			
				|  |  |                          info.sheet.setValue(info.row, info.col, !select || !select.is_change ? 0 : 1);
 | 
	
	
		
			
				|  | @@ -211,24 +213,6 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |                          info.sheet.endEdit(true);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                      const is_change = info.sheet.getValue(info.row, info.col) ? 1 : 0;
 | 
	
		
			
				|  |  | -                    let gclIndex = -1;
 | 
	
		
			
				|  |  | -                    let gclInfo = null;
 | 
	
		
			
				|  |  | -                    if (select.deal_id) {
 | 
	
		
			
				|  |  | -                        gclInfo = _.find(changeListData, function (item) {
 | 
	
		
			
				|  |  | -                            return item.id && item.id === select.deal_id; });
 | 
	
		
			
				|  |  | -                        gclIndex =_.findIndex(changeListData, function (item) {
 | 
	
		
			
				|  |  | -                            return item.id && item.id === select.deal_id; });
 | 
	
		
			
				|  |  | -                    } else {
 | 
	
		
			
				|  |  | -                        gclInfo = _.find(changeListData, function (item) {
 | 
	
		
			
				|  |  | -                            return item.leafXmjs && _.find(item.leafXmjs, function (item2) {
 | 
	
		
			
				|  |  | -                                return item2.gcl_id === select.gcl_id && (item2.mx_id === undefined || item2.mx_id === select.mx_id) });
 | 
	
		
			
				|  |  | -                        });
 | 
	
		
			
				|  |  | -                        gclIndex = _.findIndex(changeListData, function (item) {
 | 
	
		
			
				|  |  | -                            return item.leafXmjs && _.find(item.leafXmjs, function (item2) {
 | 
	
		
			
				|  |  | -                                return item2.gcl_id === select.gcl_id && (item2.mx_id === undefined || item2.mx_id === select.mx_id) });
 | 
	
		
			
				|  |  | -                        });
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    console.log(gclIndex);
 | 
	
		
			
				|  |  |                      if (!gclInfo) {
 | 
	
		
			
				|  |  |                          info.sheet.setValue(info.row, info.col, 0);
 | 
	
		
			
				|  |  |                          return;
 | 
	
	
		
			
				|  | @@ -262,7 +246,7 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |                                  mx_id: '',
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                              _.assign(data, newData);
 | 
	
		
			
				|  |  | -                        } else {
 | 
	
		
			
				|  |  | +                        } else if (gclInfo.leafXmjs) {
 | 
	
		
			
				|  |  |                              const xmjInfo = _.find(gclInfo.leafXmjs, function (item) {
 | 
	
		
			
				|  |  |                                  return item.gcl_id === select.gcl_id && (item.mx_id === undefined || item.mx_id === select.mx_id);
 | 
	
		
			
				|  |  |                              });
 | 
	
	
		
			
				|  | @@ -295,6 +279,7 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |                              select.is_change = 1;
 | 
	
		
			
				|  |  |                              changeListData[gclIndex].is_change = 1;
 | 
	
		
			
				|  |  |                              SpreadJsObj.reLoadRowData(gclSpreadSheet, gclIndex);
 | 
	
		
			
				|  |  | +                            checkSelectAll(gclInfo);
 | 
	
		
			
				|  |  |                          }, function () {
 | 
	
		
			
				|  |  |                              info.sheet.setValue(info.row, info.col, 0);
 | 
	
		
			
				|  |  |                          });
 | 
	
	
		
			
				|  | @@ -316,6 +301,7 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |                              }, function (result) {
 | 
	
		
			
				|  |  |                                  changeList = result.changeList;
 | 
	
		
			
				|  |  |                                  select.is_change = 0;
 | 
	
		
			
				|  |  | +                                checkSelectAll(gclInfo);
 | 
	
		
			
				|  |  |                                  if (select.deal_id) {
 | 
	
		
			
				|  |  |                                      changeListData[gclIndex].is_change = 0;
 | 
	
		
			
				|  |  |                                      SpreadJsObj.reLoadRowData(gclSpreadSheet, gclIndex);
 | 
	
	
		
			
				|  | @@ -372,7 +358,7 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |                  const changePos = _.find(result.changePosList, { id: xmj.mx_id, lid: xmj.gcl_id });
 | 
	
		
			
				|  |  |                  if (changeLedger || changePos) {
 | 
	
		
			
				|  |  |                      xmj.cid = 1;
 | 
	
		
			
				|  |  | -                    xmj.ccid = changeLedger ? changeLedger.ccid : changePos.ccid;
 | 
	
		
			
				|  |  | +                    xmj.ccid = changePos ? changePos.ccid : changeLedger ? changeLedger.ccid : 0;
 | 
	
		
			
				|  |  |                      hadcid = 1;
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -519,22 +505,185 @@ $(document).ready(() => {
 | 
	
		
			
				|  |  |          gclSpread.refresh();
 | 
	
		
			
				|  |  |          xmjSpread.refresh();
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | -function checkSelectAll() {
 | 
	
		
			
				|  |  | -    let check = $('#code-list tr').length > 0 ? true : false;
 | 
	
		
			
				|  |  | -    const codeNum = $('#code-list tr').length;
 | 
	
		
			
				|  |  | -    let i = 0;
 | 
	
		
			
				|  |  | -    $('#code-list tr').each(function () {
 | 
	
		
			
				|  |  | -        if ($(this).css('display') !== 'none' && !$(this).find('input').is(':checked')) {
 | 
	
		
			
				|  |  | -            check = false;
 | 
	
		
			
				|  |  | -            return;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 全选及取消
 | 
	
		
			
				|  |  | +    $('#code-select-all').click(function () {
 | 
	
		
			
				|  |  | +        // 全选checkbox
 | 
	
		
			
				|  |  | +        const data = SpreadJsObj.getSelectObject(gclSpreadSheet);
 | 
	
		
			
				|  |  | +        if ($(this).is(':checked')){
 | 
	
		
			
				|  |  | +            const addDatas = [];
 | 
	
		
			
				|  |  | +            if (data && data.id) {
 | 
	
		
			
				|  |  | +                if (_.findIndex(changeList, function (item) {
 | 
	
		
			
				|  |  | +                    return item.id && item.id === data.id;
 | 
	
		
			
				|  |  | +                }) === -1) {
 | 
	
		
			
				|  |  | +                    addDatas.push({
 | 
	
		
			
				|  |  | +                        lid: data.id,
 | 
	
		
			
				|  |  | +                        code: data.code,
 | 
	
		
			
				|  |  | +                        name: data.name || '',
 | 
	
		
			
				|  |  | +                        unit: data.unit || '',
 | 
	
		
			
				|  |  | +                        unit_price: data.unit_price,
 | 
	
		
			
				|  |  | +                        oamount: data.quantity ? parseFloat(data.quantity) : 0,
 | 
	
		
			
				|  |  | +                        oamount2: data.quantity ? parseFloat(data.quantity) : 0,
 | 
	
		
			
				|  |  | +                        bwmx: '',
 | 
	
		
			
				|  |  | +                        xmj_code: '',
 | 
	
		
			
				|  |  | +                        xmj_jldy: '',
 | 
	
		
			
				|  |  | +                        xmj_dwgc: '',
 | 
	
		
			
				|  |  | +                        xmj_fbgc: '',
 | 
	
		
			
				|  |  | +                        xmj_fxgc: '',
 | 
	
		
			
				|  |  | +                        gcl_id: '',
 | 
	
		
			
				|  |  | +                        mx_id: '',
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            } else if (data && data.leafXmjs) {
 | 
	
		
			
				|  |  | +                for (const leaf of data.leafXmjs) {
 | 
	
		
			
				|  |  | +                    if (_.findIndex(changeList, function (item) {
 | 
	
		
			
				|  |  | +                        return item.gcl_id === leaf.gcl_id && item.mx_id === (leaf.mx_id || '');
 | 
	
		
			
				|  |  | +                    }) === -1) {
 | 
	
		
			
				|  |  | +                        addDatas.push({
 | 
	
		
			
				|  |  | +                            lid: leaf.gcl_id,
 | 
	
		
			
				|  |  | +                            code: data.code,
 | 
	
		
			
				|  |  | +                            name: data.name || '',
 | 
	
		
			
				|  |  | +                            unit: data.unit || '',
 | 
	
		
			
				|  |  | +                            unit_price: data.unit_price,
 | 
	
		
			
				|  |  | +                            oamount: leaf.quantity,
 | 
	
		
			
				|  |  | +                            oamount2: leaf.quantity,
 | 
	
		
			
				|  |  | +                            bwmx: leaf.bwmx || leaf.jldy || '',
 | 
	
		
			
				|  |  | +                            xmj_code: leaf.code || '',
 | 
	
		
			
				|  |  | +                            xmj_jldy: leaf.jldy || '',
 | 
	
		
			
				|  |  | +                            xmj_dwgc: leaf.dwgc || '',
 | 
	
		
			
				|  |  | +                            xmj_fbgc: leaf.fbgc || '',
 | 
	
		
			
				|  |  | +                            xmj_fxgc: leaf.fxgc || '',
 | 
	
		
			
				|  |  | +                            gcl_id: leaf.gcl_id,
 | 
	
		
			
				|  |  | +                            mx_id: leaf.mx_id,
 | 
	
		
			
				|  |  | +                        });
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            console.log(addDatas);
 | 
	
		
			
				|  |  | +            if (addDatas.length > 0) {
 | 
	
		
			
				|  |  | +                // 更新至服务器
 | 
	
		
			
				|  |  | +                postData('/tender/' + window.location.pathname.split('/')[2] + '/change/' + window.location.pathname.split('/')[4] + '/information/save', {
 | 
	
		
			
				|  |  | +                    type: 'add-change-list',
 | 
	
		
			
				|  |  | +                    postData: addDatas,
 | 
	
		
			
				|  |  | +                }, function (result) {
 | 
	
		
			
				|  |  | +                    changeList = result.changeList;
 | 
	
		
			
				|  |  | +                    const gclIndex = changeListData.indexOf(data);
 | 
	
		
			
				|  |  | +                    console.log(gclIndex, data);
 | 
	
		
			
				|  |  | +                    data.is_change = 1;
 | 
	
		
			
				|  |  | +                    changeListData[gclIndex].is_change = 1;
 | 
	
		
			
				|  |  | +                    SpreadJsObj.reLoadRowData(gclSpreadSheet, gclIndex);
 | 
	
		
			
				|  |  | +                    gclSpreadObj.resetXmjSpread(data);
 | 
	
		
			
				|  |  | +                }, function () {
 | 
	
		
			
				|  |  | +                    $('#code-select-all').prop('checked', false);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            const cList = xmjSpreadSheet.zh_data;
 | 
	
		
			
				|  |  | +            const removeDatas = [];
 | 
	
		
			
				|  |  | +            let hadContinue = false;
 | 
	
		
			
				|  |  | +            for (const c of cList) {
 | 
	
		
			
				|  |  | +                const cInfo = c.deal_id ? _.find(changeList, { lid: c.deal_id }) : _.find(changeList, function (item) {
 | 
	
		
			
				|  |  | +                   return item.gcl_id === c.gcl_id && item.mx_id === c.mx_id;
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +                if (_.find(changeUsedData, {cbid: cInfo.id})) {
 | 
	
		
			
				|  |  | +                    hadContinue = true;
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                } else if (checkIsSettle(cInfo)) {
 | 
	
		
			
				|  |  | +                    hadContinue = true;
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                removeDatas.push(cInfo);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            console.log(removeDatas);
 | 
	
		
			
				|  |  | +            if (removeDatas.length > 0) {
 | 
	
		
			
				|  |  | +                postData('/tender/' + window.location.pathname.split('/')[2] + '/change/' + window.location.pathname.split('/')[4] + '/information/save', {
 | 
	
		
			
				|  |  | +                    type: 'del-change-list',
 | 
	
		
			
				|  |  | +                    ids: _.map(removeDatas, 'id'),
 | 
	
		
			
				|  |  | +                    postData: null
 | 
	
		
			
				|  |  | +                }, function (result) {
 | 
	
		
			
				|  |  | +                    changeList = result.changeList;
 | 
	
		
			
				|  |  | +                    if (!hadContinue) {
 | 
	
		
			
				|  |  | +                        const gclIndex = changeListData.indexOf(data);
 | 
	
		
			
				|  |  | +                        data.is_change = 0;
 | 
	
		
			
				|  |  | +                        changeListData[gclIndex].is_change = 0;
 | 
	
		
			
				|  |  | +                        SpreadJsObj.reLoadRowData(gclSpreadSheet, gclIndex);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    gclSpreadObj.resetXmjSpread(data);
 | 
	
		
			
				|  |  | +                }, function () {
 | 
	
		
			
				|  |  | +                    $('#code-select-all').prop('checked', true);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    // 选中所有新增部位/清单
 | 
	
		
			
				|  |  | +    $('#add-all-revise').click(function() {
 | 
	
		
			
				|  |  | +        const this_cid = window.location.pathname.split('/')[4];
 | 
	
		
			
				|  |  | +        const addDatas = [];
 | 
	
		
			
				|  |  | +        const refreshIndexs = [];
 | 
	
		
			
				|  |  | +        for (const gclInfo of _.filter(changeListData, { cid: 1 })) {
 | 
	
		
			
				|  |  | +            const leafXmjs = _.filter(gclInfo.leafXmjs, { ccid: this_cid });
 | 
	
		
			
				|  |  | +            if (leafXmjs.length > 0) {
 | 
	
		
			
				|  |  | +                gclInfo.is_change = 1;
 | 
	
		
			
				|  |  | +                refreshIndexs.push(changeListData.indexOf(gclInfo));
 | 
	
		
			
				|  |  | +                for (const xmj of leafXmjs) {
 | 
	
		
			
				|  |  | +                    if (_.findIndex(changeList, function (item) {
 | 
	
		
			
				|  |  | +                        return item.gcl_id === xmj.gcl_id && item.mx_id === (xmj.mx_id || '');
 | 
	
		
			
				|  |  | +                    }) === -1) {
 | 
	
		
			
				|  |  | +                        addDatas.push({
 | 
	
		
			
				|  |  | +                            lid: xmj.gcl_id,
 | 
	
		
			
				|  |  | +                            code: gclInfo.code,
 | 
	
		
			
				|  |  | +                            name: gclInfo.name || '',
 | 
	
		
			
				|  |  | +                            unit: gclInfo.unit || '',
 | 
	
		
			
				|  |  | +                            unit_price: gclInfo.unit_price,
 | 
	
		
			
				|  |  | +                            oamount: xmj.quantity,
 | 
	
		
			
				|  |  | +                            oamount2: xmj.quantity,
 | 
	
		
			
				|  |  | +                            bwmx: xmj.bwmx || xmj.jldy || '',
 | 
	
		
			
				|  |  | +                            xmj_code: xmj.code || '',
 | 
	
		
			
				|  |  | +                            xmj_jldy: xmj.jldy || '',
 | 
	
		
			
				|  |  | +                            xmj_dwgc: xmj.dwgc || '',
 | 
	
		
			
				|  |  | +                            xmj_fbgc: xmj.fbgc || '',
 | 
	
		
			
				|  |  | +                            xmj_fxgc: xmj.fxgc || '',
 | 
	
		
			
				|  |  | +                            gcl_id: xmj.gcl_id,
 | 
	
		
			
				|  |  | +                            mx_id: xmj.mx_id || '',
 | 
	
		
			
				|  |  | +                        });
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        else if ($(this).css('display') === 'none') {
 | 
	
		
			
				|  |  | -            i++;
 | 
	
		
			
				|  |  | +        console.log(addDatas);
 | 
	
		
			
				|  |  | +        if (addDatas.length > 0) {
 | 
	
		
			
				|  |  | +            // 更新至服务器
 | 
	
		
			
				|  |  | +            postData('/tender/' + window.location.pathname.split('/')[2] + '/change/' + window.location.pathname.split('/')[4] + '/information/save', {
 | 
	
		
			
				|  |  | +                type: 'add-change-list',
 | 
	
		
			
				|  |  | +                postData: addDatas,
 | 
	
		
			
				|  |  | +            }, function (result) {
 | 
	
		
			
				|  |  | +                toastr.success('已新增当前变更令新增的所有部位/清单');
 | 
	
		
			
				|  |  | +                changeList = result.changeList;
 | 
	
		
			
				|  |  | +                refreshIndexs.forEach(function (index) {
 | 
	
		
			
				|  |  | +                    changeListData[index].is_change = 1;
 | 
	
		
			
				|  |  | +                    SpreadJsObj.reLoadRowData(gclSpreadSheet, index);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +                const data = SpreadJsObj.getSelectObject(gclSpreadSheet);
 | 
	
		
			
				|  |  | +                gclSpreadObj.resetXmjSpread(data);
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            toastr.warning('未存在当前变更令新增的部位/清单');
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      });
 | 
	
		
			
				|  |  | -    if (check && i === codeNum) {
 | 
	
		
			
				|  |  | -        check = false;
 | 
	
		
			
				|  |  | +});
 | 
	
		
			
				|  |  | +function checkSelectAll(data) {
 | 
	
		
			
				|  |  | +    let check = false;
 | 
	
		
			
				|  |  | +    if (data && data.id && data.is_change) {
 | 
	
		
			
				|  |  | +        check = true;
 | 
	
		
			
				|  |  | +    } else if(data && data.leafXmjs) {
 | 
	
		
			
				|  |  | +        check = data.leafXmjs.length > 0 ? true : false;
 | 
	
		
			
				|  |  | +        data.leafXmjs.forEach(function (item) {
 | 
	
		
			
				|  |  | +            const is_change = _.findIndex(changeList, { gcl_id: item.gcl_id, mx_id: item.mx_id || '' }) !== -1
 | 
	
		
			
				|  |  | +            if (!is_change) {
 | 
	
		
			
				|  |  | +                check = false;
 | 
	
		
			
				|  |  | +                return;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      $('#code-select-all').prop('checked', check);
 | 
	
		
			
				|  |  |  }
 |