|  | @@ -16,13 +16,13 @@ const invalidFields = {
 | 
												
													
														
															|  |      posCalc: ['sgfh_qty', 'sgfh_tp', 'sjcl_qty', 'sjcl_tp', 'qtcl_qty', 'qtcl_tp'],
 |  |      posCalc: ['sgfh_qty', 'sgfh_tp', 'sjcl_qty', 'sjcl_tp', 'qtcl_qty', 'qtcl_tp'],
 | 
												
													
														
															|  |      posXmj: ['code'],
 |  |      posXmj: ['code'],
 | 
												
													
														
															|  |  };
 |  |  };
 | 
												
													
														
															|  | -function getExprInfo (field) {
 |  | 
 | 
												
													
														
															|  | 
 |  | +function getExprInfo (field, converse = false) {
 | 
												
													
														
															|  |      const exprField = [
 |  |      const exprField = [
 | 
												
													
														
															|  |          {qty: 'sgfh_qty', expr: 'sgfh_expr'},
 |  |          {qty: 'sgfh_qty', expr: 'sgfh_expr'},
 | 
												
													
														
															|  |          {qty: 'sjcl_qty', expr: 'sjcl_expr'},
 |  |          {qty: 'sjcl_qty', expr: 'sjcl_expr'},
 | 
												
													
														
															|  |          {qty: 'qtcl_qty', expr: 'qtcl_expr'},
 |  |          {qty: 'qtcl_qty', expr: 'qtcl_expr'},
 | 
												
													
														
															|  |      ];
 |  |      ];
 | 
												
													
														
															|  | -    return _.find(exprField, {qty: field});
 |  | 
 | 
												
													
														
															|  | 
 |  | +    return converse ?  _.find(exprField, {expr: field}) : _.find(exprField, {qty: field});
 | 
												
													
														
															|  |  }
 |  |  }
 | 
												
													
														
															|  |  function transExpr(expr) {
 |  |  function transExpr(expr) {
 | 
												
													
														
															|  |      return $.trim(expr).replace('\t', '').replace('=', '').replace('%', '/100');
 |  |      return $.trim(expr).replace('\t', '').replace('=', '').replace('%', '/100');
 | 
												
											
												
													
														
															|  | @@ -1938,6 +1938,23 @@ $(document).ready(() => {
 | 
												
													
														
															|  |                              return;
 |  |                              return;
 | 
												
													
														
															|  |                          }
 |  |                          }
 | 
												
													
														
															|  |                      }
 |  |                      }
 | 
												
													
														
															|  | 
 |  | +                } else if (col.field.indexOf('_expr') > 0) {
 | 
												
													
														
															|  | 
 |  | +                    const exprInfo = getExprInfo(col.field, true);
 | 
												
													
														
															|  | 
 |  | +                    if (!exprInfo) return;
 | 
												
													
														
															|  | 
 |  | +
 | 
												
													
														
															|  | 
 |  | +                    if (newText) {
 | 
												
													
														
															|  | 
 |  | +                        try {
 | 
												
													
														
															|  | 
 |  | +                            data.postData[exprInfo.qty] = math.evaluate(transExpr(newText));
 | 
												
													
														
															|  | 
 |  | +                            data.postData[exprInfo.expr] = newText;
 | 
												
													
														
															|  | 
 |  | +                        } catch(err) {
 | 
												
													
														
															|  | 
 |  | +                            toastr.error('输入的表达式非法');
 | 
												
													
														
															|  | 
 |  | +                            SpreadJsObj.reLoadRowData(info.sheet, info.row);
 | 
												
													
														
															|  | 
 |  | +                            return;
 | 
												
													
														
															|  | 
 |  | +                        }
 | 
												
													
														
															|  | 
 |  | +                    } else {
 | 
												
													
														
															|  | 
 |  | +                        data.postData[exprInfo.qty] = 0;
 | 
												
													
														
															|  | 
 |  | +                        data.postData[exprInfo.expr] = '';
 | 
												
													
														
															|  | 
 |  | +                    }
 | 
												
													
														
															|  |                  } else {
 |  |                  } else {
 | 
												
													
														
															|  |                      data.postData[col.field] = newText;
 |  |                      data.postData[col.field] = newText;
 | 
												
													
														
															|  |                  }
 |  |                  }
 | 
												
											
												
													
														
															|  | @@ -1981,10 +1998,15 @@ $(document).ready(() => {
 | 
												
													
														
															|  |                          const style = sheet.getStyle(iRow, iCol);
 |  |                          const style = sheet.getStyle(iRow, iCol);
 | 
												
													
														
															|  |                          if (!style.locked) {
 |  |                          if (!style.locked) {
 | 
												
													
														
															|  |                              const colSetting = sheet.zh_setting.cols[iCol];
 |  |                              const colSetting = sheet.zh_setting.cols[iCol];
 | 
												
													
														
															|  | -                            data[colSetting.field] = null;
 |  | 
 | 
												
													
														
															|  | -                            const exprInfo = getExprInfo(colSetting.field);
 |  | 
 | 
												
													
														
															|  | -                            if (exprInfo) {
 |  | 
 | 
												
													
														
															|  | 
 |  | +                            if (colSetting.field.indexOf('_expr') > 0) {
 | 
												
													
														
															|  | 
 |  | +                                const exprInfo = getExprInfo(colSetting.field, true);
 | 
												
													
														
															|  | 
 |  | +                                if (!exprInfo) continue;
 | 
												
													
														
															|  |                                  data[exprInfo.expr] = '';
 |  |                                  data[exprInfo.expr] = '';
 | 
												
													
														
															|  | 
 |  | +                                data[exprInfo.qty] = 0;
 | 
												
													
														
															|  | 
 |  | +                            } else {
 | 
												
													
														
															|  | 
 |  | +                                data[colSetting.field] = null;
 | 
												
													
														
															|  | 
 |  | +                                const exprInfo = getExprInfo(colSetting.field);
 | 
												
													
														
															|  | 
 |  | +                                if (exprInfo) data[exprInfo.expr] = '';
 | 
												
													
														
															|  |                              }
 |  |                              }
 | 
												
													
														
															|  |                              bDel = true;
 |  |                              bDel = true;
 | 
												
													
														
															|  |                          }
 |  |                          }
 | 
												
											
												
													
														
															|  | @@ -2124,6 +2146,19 @@ $(document).ready(() => {
 | 
												
													
														
															|  |                                  bPaste = false;
 |  |                                  bPaste = false;
 | 
												
													
														
															|  |                              }
 |  |                              }
 | 
												
													
														
															|  |                          }
 |  |                          }
 | 
												
													
														
															|  | 
 |  | +                    } else if (colSetting.field.indexOf('_expr') > 0) {
 | 
												
													
														
															|  | 
 |  | +                        try {
 | 
												
													
														
															|  | 
 |  | +                            const exprInfo = getExprInfo(colSetting.field, true);
 | 
												
													
														
															|  | 
 |  | +                            posData[exprInfo.expr] = trimInvalidChar(info.sheet.getText(curRow, curCol));
 | 
												
													
														
															|  | 
 |  | +                            if (posData[exprInfo.expr] || !posData[exprInfo.qty]) {
 | 
												
													
														
															|  | 
 |  | +                                posData[exprInfo.qty] = math.evaluate(transExpr(posData[exprInfo.expr]));
 | 
												
													
														
															|  | 
 |  | +                            }
 | 
												
													
														
															|  | 
 |  | +                            bPaste = true;
 | 
												
													
														
															|  | 
 |  | +                        } catch (err) {
 | 
												
													
														
															|  | 
 |  | +                            toastMessageUniq(hint.expr);
 | 
												
													
														
															|  | 
 |  | +                        }
 | 
												
													
														
															|  | 
 |  | +                    } else {
 | 
												
													
														
															|  | 
 |  | +                        bPaste = true;
 | 
												
													
														
															|  |                      }
 |  |                      }
 | 
												
													
														
															|  |                  }
 |  |                  }
 | 
												
													
														
															|  |                  if (bPaste) {
 |  |                  if (bPaste) {
 |