|
@@ -1230,11 +1230,12 @@ func handleMixCellShowStyle(showStyleList []string, calculateCellMap map[string]
|
|
|
|
|
|
cell := config[cellPosition.Column][cellPosition.Row]
|
|
cell := config[cellPosition.Column][cellPosition.Row]
|
|
val := cell.ShowValue
|
|
val := cell.ShowValue
|
|
- isPercent := false
|
|
|
|
- if strings.Contains(val, "%") {
|
|
|
|
- isPercent = true
|
|
|
|
- val = strings.Trim(val, "%")
|
|
|
|
- }
|
|
|
|
|
|
+ // 前端不支持手动输入的%数
|
|
|
|
+ // isPercent := false
|
|
|
|
+ // if strings.Contains(val, "%") {
|
|
|
|
+ // isPercent = true
|
|
|
|
+ // val = strings.Trim(val, "%")
|
|
|
|
+ // }
|
|
_, e := strconv.ParseFloat(val, 64) // 将字符串转换成float类型
|
|
_, e := strconv.ParseFloat(val, 64) // 将字符串转换成float类型
|
|
if e != nil { // 如果没有错误发生则返回true,说明该字符串是一个合法的数字
|
|
if e != nil { // 如果没有错误发生则返回true,说明该字符串是一个合法的数字
|
|
var styleConf request.MixCellShowStyle
|
|
var styleConf request.MixCellShowStyle
|
|
@@ -1261,19 +1262,45 @@ func handleMixCellShowStyle(showStyleList []string, calculateCellMap map[string]
|
|
err = fmt.Errorf("日期计算配置json解析失败失败: %s, Err:%s", config, err.Error())
|
|
err = fmt.Errorf("日期计算配置json解析失败失败: %s, Err:%s", config, err.Error())
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ hasPercent := false
|
|
|
|
+ if styleConf.Nt == "percent" {
|
|
|
|
+ hasPercent = true
|
|
|
|
+ }
|
|
if styleConf.Pn != 0 || styleConf.Nt != "" {
|
|
if styleConf.Pn != 0 || styleConf.Nt != "" {
|
|
- val = changePointDecimalPlaces(val, styleConf.Pn, styleConf.Nt, isPercent)
|
|
|
|
- cell.ShowFormatValue = val
|
|
|
|
|
|
+ // val = changePointDecimalPlaces(val, styleConf.Pn, styleConf.Nt, hasPercent)
|
|
|
|
+ // cell.ShowFormatValue = val
|
|
|
|
+ // 修复历史数据,没有保存小数位数,重置小数位数
|
|
|
|
+ if styleConf.Pn != 0 {
|
|
|
|
+ if styleConf.Decimal == nil {
|
|
|
|
+ styleConf.Decimal = new(int)
|
|
|
|
+ }
|
|
|
|
+ *styleConf.Decimal += styleConf.Pn
|
|
|
|
+ if *styleConf.Decimal < 0 {
|
|
|
|
+ *styleConf.Decimal = 0
|
|
|
|
+ }
|
|
|
|
+ cell.ShowFormatValue = utils.RoundNumber(cell.ShowValue, *styleConf.Decimal, hasPercent)
|
|
|
|
+ styleConf.Pn = 0
|
|
|
|
+ } else if styleConf.Decimal != nil {
|
|
|
|
+ cell.ShowFormatValue = utils.RoundNumber(cell.ShowValue, *styleConf.Decimal, hasPercent)
|
|
|
|
+ } else {
|
|
|
|
+ if hasPercent {
|
|
|
|
+ numDecimal, _ := decimal.NewFromString(cell.ShowValue)
|
|
|
|
+ tmpStr := numDecimal.Mul(decimal.NewFromInt(100)).String()
|
|
|
|
+ cell.ShowFormatValue = tmpStr + "%"
|
|
|
|
+ } else {
|
|
|
|
+ cell.ShowFormatValue = cell.ShowValue
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if styleConf.Decimal != nil {
|
|
|
|
+ cell.ShowFormatValue = utils.RoundNumber(cell.ShowValue, *styleConf.Decimal, hasPercent)
|
|
} else {
|
|
} else {
|
|
cell.ShowFormatValue = cell.ShowValue
|
|
cell.ShowFormatValue = cell.ShowValue
|
|
}
|
|
}
|
|
// 前端传过来的json中有可能有glObj,需要去掉
|
|
// 前端传过来的json中有可能有glObj,需要去掉
|
|
- if styleConf.GlObj != nil {
|
|
|
|
- styleConf.GlObj = nil
|
|
|
|
- tmpStyleConf, err := json.Marshal(styleConf)
|
|
|
|
- if err == nil {
|
|
|
|
- cell.ShowStyle = string(tmpStyleConf)
|
|
|
|
- }
|
|
|
|
|
|
+ styleConf.GlObj = nil
|
|
|
|
+ tmpStyleConf, err := json.Marshal(styleConf)
|
|
|
|
+ if err == nil {
|
|
|
|
+ cell.ShowStyle = string(tmpStyleConf)
|
|
}
|
|
}
|
|
config[cellPosition.Column][cellPosition.Row] = cell
|
|
config[cellPosition.Column][cellPosition.Row] = cell
|
|
}
|
|
}
|
|
@@ -1281,6 +1308,19 @@ func handleMixCellShowStyle(showStyleList []string, calculateCellMap map[string]
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+func getDecimalLen(str string, isPercent bool) (decimalPlaces int) {
|
|
|
|
+ dotIndex := strings.Index(str, ".") // 查找小数点的位置
|
|
|
|
+ if dotIndex == -1 {
|
|
|
|
+ decimalPlaces = 0
|
|
|
|
+ } else {
|
|
|
|
+ decimalPlaces = len(str) - dotIndex - 1
|
|
|
|
+ }
|
|
|
|
+ if isPercent && decimalPlaces >= 1 {
|
|
|
|
+ decimalPlaces -= 1
|
|
|
|
+ }
|
|
|
|
+ return
|
|
|
|
+}
|
|
|
|
+
|
|
// changePointDecimalPlaces 小数点位数加减和百分比格式
|
|
// changePointDecimalPlaces 小数点位数加减和百分比格式
|
|
func changePointDecimalPlaces(str string, changeNum int, numberType string, isPercent bool) (newStr string) {
|
|
func changePointDecimalPlaces(str string, changeNum int, numberType string, isPercent bool) (newStr string) {
|
|
newStr = str
|
|
newStr = str
|