浏览代码

平衡表

jwyu 11 月之前
父节点
当前提交
ccce731f80

+ 50 - 2
src/views/datasheet_manage/components/BalanceAddChart.vue

@@ -225,6 +225,7 @@
                 :placeholder="$t('CustomAnalysisPage.select_date_numerical')"
                 style="width: 180px"
                 @focus="handleChooseInput(item.tag+'_valueSerial')"
+                @change="handleValInputChange"
               ></el-input>
             </el-form-item>
             <el-form-item :label="$t('Table.edb_name')">
@@ -369,7 +370,7 @@
           <!-- 添加指标按钮 -->
           <div
             class="add-edb-btn"
-            style="color: #0052d9; cursor: pointer"
+            style="color: #0052d9; cursor: pointer;display:inline-block"
             @click="handleAddEdb"
             v-if="formData.chartType !== 2"
           >
@@ -537,8 +538,55 @@ export default {
       this.updateLimit()
     },
 
+    // 手动输入数值序列改变
+    handleValInputChange(str){
+      console.log('数值序列改变',str);
+      // 正则表达式模式,确保格式正确且感叹号后面有两个$,冒号前后各两个$
+      const formatPattern = /^.*!\$[A-Z0-9]+\$[A-Z0-9]+:\$[A-Z0-9]+\$[A-Z0-9]/;
+      // 检查字符串是否符合格式要求
+      if (formatPattern.test(str)) {
+          // 正则表达式模式,用于提取美元符号后的值
+          let extractPattern = /\$([A-Z0-9]+)/g;
+
+          // 存储匹配结果的数组
+          let matches = [];
+          let match;
+
+          // 使用正则表达式的exec方法来找到所有匹配
+          while ((match = extractPattern.exec(str)) !== null) {
+              // 将匹配的字符数字转换为数字类型并存储
+              let value = match[1];
+              if (!isNaN(value)) {
+                  matches.push(Number(value));
+              } else {
+                  matches.push(value); // 保留非数字值(如字母)
+              }
+          }
+
+          // 获取出开始和结束单元格序号
+          let start={
+            col:0,
+            row:0
+          },
+          end={
+            col:0,
+            row:0
+          };
+          start.col=this.$parent.columnHeader.findIndex(_e=>_e===matches[0])
+          start.row=matches[1]-1
+          end.col=this.$parent.columnHeader.findIndex(_e=>_e===matches[2])
+          end.row=matches[3]-1
+          this.tableSelect(start,end,str)
+
+      } else {
+          console.log("字符串格式不符合要求");
+          this.$message.warning('格式不合法')
+      }
+    },
+
     // 选中的序列
     tableSelect(start,end,str){
+      console.log(start,end,str);
       if(this.selectInput){
         // 如果选择的不是同行或者同列 
         if(!(start.col==end.col||start.row==end.row)){
@@ -594,7 +642,7 @@ export default {
       let numArr=[]
       // 判断是选择的同行还是同列
       if(start.col===end.col&&start.row!=end.row){//同列
-        for (let index = start.row; index < data.length; index++) {
+        for (let index = start.row; index < end.row; index++) {
          numArr.push(data[index][start.col].ShowValue)
         }
       }

+ 4 - 0
src/views/datasheet_manage/components/BalanceTable.vue

@@ -694,6 +694,10 @@ export default {
 
     // 点击切换子表
     async clickChangeSheet(item){
+      if(this.isShowAddChart){
+        this.$message.warning('添加图表时禁止切换')
+        return
+      }
       clearTimeout(dblclickInterval)//清除双击事件的定时器
       dblclickInterval=setTimeout(async () => {
         if(item.ExcelInfoId===this.activeSheetId) return