소스 검색

feat: 增加出入水单位

whh 9 달 전
부모
커밋
24f0d3b33a
4개의 변경된 파일54개의 추가작업 그리고 28개의 파일을 삭제
  1. 1 1
      src/components/RecodeSquareCardItem/index.vue
  2. 3 1
      src/views/analyse/WaterView.vue
  3. 31 20
      src/views/analyse/WorkOrder.vue
  4. 19 6
      src/views/analyse/config/echartOptions.js

+ 1 - 1
src/components/RecodeSquareCardItem/index.vue

@@ -78,7 +78,7 @@ const dataSources = computed(() => {
   }
   if (item.type == 2) {
     return [
-      { label: '预警时间', value: item.time },
+      { label: '预警时间', value: item.createTime },
       { label: '超标时间', value: item.time },
       { label: '现在值', value: Number(item?.warningVal?.toFixed(2)) ?? '', unit: 'mg/L' },
       { label: '预测值', value: Number(item?.forecastVal?.toFixed(2)) ?? '', type: 'wraning', unit: 'mg/L' },

+ 3 - 1
src/views/analyse/WaterView.vue

@@ -296,6 +296,8 @@ const handleSendSimulate = ({ simulate, table }) => {
     isDisable: false
   })
 
+  scrollToBottom();
+
   onRegenerate();
 }
 
@@ -436,7 +438,7 @@ const handleWelcomeRecommend = question => {
                 </table>
               </div>
               <strong class="block mb-[16px]">预测推演结果:</strong>
-              <span>以上指标达成后,预计三小时内总氮可以达到:{{ item.content }}</span>
+              <span>以上指标达成后,预计三小时内{{flowParams.category}}可以达到:{{ item.content }}</span>
             </div>
           </ChatAnswer>
           <button class="

+ 31 - 20
src/views/analyse/WorkOrder.vue

@@ -90,16 +90,18 @@ const handleChatDetail = async ({ sessionId }) => {
   const { data } = await chatApi.getAnswerHistoryDetail({ sessionId });
 
   let echartData = [];
-
+  let whichWay = null;
   chatDataSource.value = data.map(item => {
     if ( item.remark ) {
-      echartData = item.echartWithTableData = formatData(JSON.parse(item.remark));
+      const remark = JSON.parse(item.remark);
+      whichWay = remark.whichWay;
+      echartData = item.echartWithTableData = formatData(remark);
     }
 
     return { ...item, loading: false };
   })
  
-  echartData.length && createEchart(echartData);
+  echartData.length && createEchart(echartData, whichWay);
 
   currenSessionId.value = sessionId;
 
@@ -138,8 +140,6 @@ const onRegenerate = async (question, options) => {
         innerLoading: false
       })
 
-      console.log( "chatDataSource", chatDataSource.value );
-
       scrollToBottomIfAtBottom();
     }
   }
@@ -192,7 +192,7 @@ const handleSubmit = async (question, params) => {
 
   if (isChart.value) {
     const { data } = await orderApi.postOrderChart(params);
-    const reuslt = formatData(data);
+    const reuslt = formatData({...data, whichWay: workOrderParams.value.whichWay});
 
     option.echartWithTableData = reuslt;
   }
@@ -210,11 +210,11 @@ const handleSubmit = async (question, params) => {
       innerLoading: false,
     })
 
-    createEchart(option.echartWithTableData);
+    createEchart(option.echartWithTableData, workOrderParams.value.whichWay);
       
     scrollToBottom();
 
-    onRegenerate(question, params)
+    onRegenerate(question, params);
     
   }, 2 * 1000);
 }
@@ -256,14 +256,13 @@ const handleCreateOrder = async () => {
 }
 
 // 创建echart图形
-const createEchart = (echartData) => {
-
+const createEchart = (echartData, whichWay) => {
   setTimeout(() => {
-    echartData.forEach(({ key, xAxisData, yAxisData }) => {
+    echartData.forEach(({ key, xAxisData, yAxisData,  }) => {
       const dom = document.getElementById(key);
       chartInstance[key] = echarts.init(dom, null, { width: 680, height: 300 });
     
-      const option = getOrderAreaOptions({ xAxisData, yAxisData });
+      const option = getOrderAreaOptions({ xAxisData, yAxisData, whichWay });
     
       chartInstance[key].setOption(option);
     })
@@ -277,16 +276,28 @@ const formatData = (data) => {
     csGroup: '出水指标',
     hyGroup: '化验指标'
   }
-  return Object.entries(data).map(([key, value]) => {
+  const { whichWay, jsGroup, csGroup, hyGroup } = data;
+  return Object.entries({jsGroup, csGroup, hyGroup}).map(([key, value]) => {
     if ( value.length ) {
       const [ xAxisData, yAxisData ] = formatEchart(value);
       const [ item ] = value; 
-      const columns = Object.keys(item).map(k => ({
-        title: ORDER_OPTION_ENUM[k],
-        key: k,
-        width: '150px',
-        align: 'center',
-      }))
+      const columns = Object.keys(item).map(k => {
+        const wihteKeyList = ['jsSlq', 'csSlqc'];
+        let unit = '';
+
+        if(wihteKeyList.includes(k)) {
+          unit = whichWay === 1? '(m³/h)' : '(m³/d)';
+        } else if (k !== 'time') {
+          unit= '(mg/L)';
+        }
+
+        return {
+          title: ORDER_OPTION_ENUM[k] + unit,
+          key: k,
+          width: '150px',
+          align: 'center'
+        }
+      })
       const data = value.map(item => {
         Object.entries(item).forEach(([k, v]) => {
           !v && v!=0 && (item[k] = '-');
@@ -401,7 +412,7 @@ onUnmounted(() => {
                   <NDataTable
                     bordered
                     size="small"
-                    :scroll-x="item.columns.length > 5 ? 1200: 670"
+                    :scroll-x="item.columns.length > 4 ? 1200: 670"
                     :max-height="250"
                     :single-line="false"
                     :columns="item.columns"

+ 19 - 6
src/views/analyse/config/echartOptions.js

@@ -139,7 +139,7 @@ export const getAreaOptions = ({ xAxisData, seriesList }) => {
   }
 }
 
-export const getOrderAreaOptions = ({ xAxisData, yAxisData }) => {
+export const getOrderAreaOptions = ({ xAxisData, yAxisData, whichWay }) => {
 
   const color = [
     '#0FFEFF',
@@ -187,12 +187,12 @@ export const getOrderAreaOptions = ({ xAxisData, yAxisData }) => {
   const series = [];
 
   const arrKey = yAxisData.map(item => item.key);
-  const isIncludeAssignKey = arrKey.includes('csSlq') || arrKey.includes('jsSlq');
+  const isIncludeAssignKey = arrKey.includes('csSlqc') || arrKey.includes('jsSlq');
   const isOneSelfKey = isIncludeAssignKey && arrKey.length === 1;
 
   yAxisData.map((item, index) => {
     const itemColor = color[index];
-    let yAxisIndex = Number(item.key === 'csSlq' || item.key === 'jsSlq')
+    let yAxisIndex = Number(item.key === 'csSlqc' || item.key === 'jsSlq')
 
     if ( isOneSelfKey ) yAxisIndex = 0;
 
@@ -216,7 +216,16 @@ export const getOrderAreaOptions = ({ xAxisData, yAxisData }) => {
       },
       tooltip: {
         valueFormatter: function (value) {
-          return value + 'mg/L';
+          const wihteKeyList = ['jsSlq', 'csSlqc'];
+          let unit = '';
+
+          if(wihteKeyList.includes(item.key)) {
+            unit = whichWay === 1 ? ' m³/h' : ' m³/d';
+          } else if (item.key !== 'time') {
+            unit = ' mg/L';
+          }
+
+          return value + unit;
         },
       },
       data: item.list,
@@ -239,9 +248,13 @@ export const getOrderAreaOptions = ({ xAxisData, yAxisData }) => {
       orient: 'horizontal',
       fontSize: '20px',
       icon: 'rect',
-      itemWidth: 10,
+      itemWidth: 6,
       itemHeight: 2,
-      formatter: ['{a|{name}}'].join('\n'),
+      // formatter: ['{a|{name}}'].join('\n'),
+      formatter: function (name) {
+        const isNeedUnit  = name === '进水水量' || name === '出水水量';
+        return isNeedUnit ? `{a|${name}(次)}` : `{a|${name}}`
+      },
       textStyle: {
         rich: {
           a: {