YangJian0701 1 tahun lalu
induk
melakukan
ce42a34e78

TEMPAT SAMPAH
dist.rar


+ 3 - 1
src/utils/axios.js

@@ -12,7 +12,9 @@ const showError = (res) => {
     message.error('登录过期,请重新登录');
     window.sessionStorage.clear();
     router.replace('/login');
-  } else if (res.Code !== 200 && res.Code !== 600 && res.Code !== 601) {
+  }else if(res.Code === 502){
+    message.error('服务器资源耗尽,请等待2-10分钟')
+  } else if (res.Code !== 200 && res.Code !== 600 && res.Code !== 601 && res.Code !== 501) {
     message.error(res.Msg);
   }
 };

+ 37 - 6
src/views/data/edit/editCopy.vue

@@ -2,16 +2,20 @@
   <!-- 复制到 -->
   <n-button @click="showImportModal">复制到</n-button>
   <n-modal style="width: 40%" v-model:show="showModal" title="复制到:" :mask-closable="false" :show-icon="false" preset="dialog">
-    <n-form ref="formRef" :model="model" :rules="rules" label-placement="left" label-width="80">
+    <n-form ref="formRef" :model="model" :rules="rules" label-placement="left" label-width="100">
       <n-form-item label="开始时间">
         <n-date-picker v-model:value="model.StartTime" format="yyyy-MM-dd HH:mm" disabled type="datetime" style="width: 100%;" />
       </n-form-item>
       <n-form-item label="结束时间">
         <n-date-picker v-model:value="model.EndTime" format="yyyy-MM-dd HH:mm" disabled type="datetime" style="width: 100%;" />
       </n-form-item>
-      <n-form-item label="复制到" path="CopyTime">
+      <n-form-item label="复制到时间" path="CopyTime">
         <n-date-picker v-model:value="model.CopyTime" format="yyyy-MM-dd HH:mm" type="datetime" style="width: 100%;" />
       </n-form-item>
+      <n-form-item label="复制到设备" path="selectSn">
+        <n-select v-model:value="T_sn_list" label-field="T_id" value-field="T_snid" :options="options" clearable>
+        </n-select>
+      </n-form-item>
       <div style="display: flex; justify-content: flex-end">
         <n-button @click="showModal = false" style="margin-right: 10px;">取消</n-button>
         <n-button type="primary" @click="handleValidateButtonClick">立即提交</n-button>
@@ -36,21 +40,36 @@ const props = defineProps({
   checkData:{
     type:Array,
     default: () => ([])
+  },
+  classList:{
+    type:Array,
+    default: () => ([])
   }
 })
-
+const options = computed(() => {
+  
+  let arr = [...props.classList]
+  arr.forEach(item=>{
+    item.T_snid = item.T_sn + ',' + item.T_id
+  })
+  return arr;
+});
 
 const data = reactive({
+  CopySN:'',
+    CopyID:'',
   T_saveT: 60,
   T_task_id: '',
   SN_List: ''
 })
+const T_sn_list = ref(null)
 const model = reactive({
     StartTime:null,
     EndTime:null,
-    CopyTime: null,  
+    CopyTime: null, 
+    
+    
 })
-
 // watch(()=>,(newValue)=>{
 //   console.log('时间变化',)
 // })
@@ -62,6 +81,12 @@ const rules = reactive({
     trigger: ["blur", "change"],
     message: "请选择结束时间"
   },
+  selectSn:{
+    required: true,
+    trigger: "blur",
+    message: "请选择复制设备"
+
+  }
 })
 
 const showModal = ref(false)
@@ -73,6 +98,9 @@ const showImportModal = () => {
   if(props.checkData==null){
     message.error('请选择需要复制的设备')
     return
+  }else if(props.checkData.length!=1){
+    message.error('复制只能选择一项哦')
+    return
   }else if(props.queryObj.Time_start=='' && props.queryObj.Time_end==''){
     message.error('请选择复制时间')
     return
@@ -106,8 +134,11 @@ const TaskCopyApi = async()=>{
     }
   })
 }
-const dataFun = ()=>{  
+const dataFun = ()=>{
+  
   return new Promise(resolve=>{
+    data.CopySN = T_sn_list.value.split(',')[0]
+    data.CopyID = T_sn_list.value.split(',')[1]
     let models = {...model}
     let snList = [...props.checkData]
     //处理时间戳转时间格式

+ 10 - 3
src/views/data/edit/editMath.vue

@@ -99,10 +99,10 @@ const showImportModal = () => {
 
 
 //提交
-const handleValidateButtonClick = ()=>{
-  
+const handleValidateButtonClick = ()=>{  
   TaskCopyApi()
 }
+
 const TaskCopyApi = async()=>{
   let resIt = await dataFun()  
   TaskUpdateRand(resIt).then(res=>{
@@ -116,6 +116,7 @@ const dataFun = ()=>{
   return new Promise(resolve=>{
     let models = {...model}
     let snList = [...props.checkData]
+    let datas = {...data}
     //处理时间戳转时间格式补零
     Object.keys(models).forEach(item=>{
       models[item] = TimeDate(models[item])+':00'
@@ -124,8 +125,14 @@ const dataFun = ()=>{
     //处理sn List
     const arr1 = snList.map(item => item.T_sn + ',' +item.T_id)
     data.SN_List = arr1.join('|')+'|'
+
+
+    datas.TemperatureMin = datas.TemperatureMin*100
+    datas.TemperatureMax = datas.TemperatureMax*100
+    datas.HumidityMin = datas.HumidityMin*100
+    datas.HumidityMax = datas.HumidityMax*100
     resolve({
-      ...data,...models
+      ...datas,...models
     })
   })
 }

+ 2 - 2
src/views/data/edit/index.vue

@@ -61,13 +61,13 @@
                 " type="datetimerange" />
               <!-- <n-button type="primary" @click="renderFun">搜索</n-button> -->
             </n-input-group>
-            <n-space>
+            <n-space> 
               <ExportVue :queryObj="queryData" :checkData="checkValues"/>
               <ImportVue :task="task" />
               <ImportPlatform :task="task" />
               <AddVue :class-list="classList" :task="task" />
               <SetVue/>
-              <editCopy :queryObj="queryData" :checkData="checkValues"/>
+              <editCopy :queryObj="queryData" :checkData="checkValues" :classList="classList"/>
               <editLeak :queryObj="queryData" :checkData="checkValues"/>
               <editTendency :queryObj="queryData" :checkData="checkValues"/>
 

+ 127 - 132
src/views/report/create/index.vue

@@ -21,51 +21,35 @@
       <!-- <n-button @click="handleClick">button</n-button> -->
     </n-scrollbar>
   </div>
-  <n-modal
-    style="width: 40%"
-    v-model:show="modal.showModal"
-    :show-icon="false"
-    preset="dialog"
-    :mask-closable="false"
-    :title="modal.title"
-    @close="onCloseModal"
-  >
-    <n-upload
-      class="w-full"
-      list-type="image-card"
-      :default-upload="false"
-      :max="1"
-      @change="handleChange"
-      v-if="modal.title === '上传验证'"
-    >
+  <n-modal style="width: 60%" v-model:show="modal.showModal" :show-icon="false" preset="dialog" :mask-closable="false"
+    :title="modal.title" @close="onCloseModal">
+    <n-upload class="w-full" list-type="image-card" :default-upload="false" :max="1" @change="handleChange"
+      v-if="modal.title === '上传验证'">
       上传文件
     </n-upload>
     <template v-else>
       <n-card embedded :bordered="false">
         <template #header>
           <div class="flex justify-center">
-            <n-progress
-              :indicator-placement="'inside'"
-              :status="
-                keyInfo.Code === 600
-                  ? 'default'
-                  : keyInfo.Code === 601
+            <n-progress :indicator-placement="'inside'" :status="keyInfo.Code === 600
+                ? 'default'
+                : keyInfo.Code === 601
                   ? 'success'
                   : 'error'
-              "
-              type="line"
-              gap-position="bottom"
-              :percentage="keyInfo.Schedule"
-            />
+              " type="line" gap-position="bottom" :percentage="keyInfo.Schedule" />
           </div>
         </template>
-        <div  class=" pis" style="overflow:auto;height:200px;" ref="scrollbarRef"
-        >
-         <div class="flex" v-for="(item, index) of items" :key="index"> <!-- items -->
+        <div class="pis" v-show="!loadingFun" style="overflow:auto;height:400px;" ref="scrollbarRef">
+          <div class="flex" v-for="(item, index) of items" :key="index"> <!-- items -->
             <n-badge class="mr-5" type="info" :value="index + 1" />
             <span>{{ item }}</span>
           </div>
         </div>
+        <n-spin v-show="loadingFun" :show="true">
+          <n-alert title="请等待..." type="success">
+            服务器正在处理中,请等待...
+          </n-alert>
+        </n-spin>
       </n-card>
     </template>
     <template #action>
@@ -73,13 +57,7 @@
         <n-button @click="modal.showModal = false">取消</n-button>
         <n-button type="primary" @click="editTaskInfo">确认</n-button>
       </n-space>
-      <n-button
-        v-else
-        type="primary"
-        :disabled="keyInfo.Code !== 601"
-        @click="handleDownload"
-        >下载文件</n-button
-      >
+      <n-button v-else type="primary" :disabled="keyInfo.Code !== 601" @click="handleDownload">下载文件</n-button>
     </template>
   </n-modal>
 </template>
@@ -91,21 +69,21 @@ import {
   getTaskDataClassList,
   getVerifyTemplateMapDataList,
   generateReport,
-  generateKey,TempCopy
+  generateKey, TempCopy
 } from '@/api';
 import * as qiniu from 'qiniu-js';
 import { getToken } from '@/utils/storage/sessionToken';
 import { getFileToken } from '@/common';
 import { useWindowSize } from '@vueuse/core';
 import { NButton } from 'naive-ui';
-import { nextTick, onBeforeUnmount, onUpdated } from 'vue';
+import { nextTick, onBeforeUnmount, onUpdated, reactive, ref } from 'vue';
 import FormList from '@/components/FormList.vue';
 import { useStore } from 'vuex';
 const { height } = useWindowSize();
 const message = useMessage();
 
 const scrollbarRef = ref(null);
-
+const loadingFun = ref(false)
 const task = window.sessionStorage.getItem('task')
   ? JSON.parse(window.sessionStorage.getItem('task'))
   : {};
@@ -131,25 +109,25 @@ const queryData = reactive({
 const classList = ref([]);
 const store = useStore()
 //复制
-const setCopy = ()=>{
+const setCopy = () => {
   message.success("复制成功")
-  store.commit('setTaskId',queryData.T_task_id)  
- 
+  store.commit('setTaskId', queryData.T_task_id)
+
 }
 //粘贴
-const setPaste = async ()=>{
-  console.log('粘贴',store.state.TaskId,queryData.T_task_id)
-  if(store.state.TaskId==''){
+const setPaste = async () => {
+  console.log('粘贴', store.state.TaskId, queryData.T_task_id)
+  if (store.state.TaskId == '') {
     message.error('请先复制模板,在进行粘贴哦')
     return
   }
   const resIt = await TempCopy({
     T_copy_task_id: store.state.TaskId,
     T_paste_task_id: queryData.T_task_id,
-    T_source:2
+    T_source: 2
   })
-  if(resIt.data.Code==200){
-    message.success('粘贴成功') 
+  if (resIt.data.Code == 200) {
+    message.success('粘贴成功')
     getTemplateList()
   }
 }
@@ -207,39 +185,53 @@ const editTaskInfo = async () => {
   }
 };
 
+const obsData = reactive({
+  obj: {}
+})
 // 验证报告生成 报告
 const generateReportInfo = async (obj) => {
-  console.log('提交',obj)
+  obsData.obj = obj
+  console.log(obj)
+  var times = null
   const { data: res } = await generateReport({
     T_task_id: task.T_task_id,
     T_VerifyTemplate_id: task.T_VerifyTemplate_id,
     ...obj,
-  });
+  })
   if (res.Code === 200) {
+    loadingFun.value = false
     generateKeyInfo(res.Data);
+  } else if (res.Code == '501') {
+    loadingFun.value = true
+    times = setTimeout(() => {
+      generateReportInfo(obsData.obj);
+    }, 1000);
+  } else {
+    loadingFun.value = true
+    clearTimeout(times);
   }
 };
 
 let timer = 0;
 const keyInfo = ref({});
 const items = computed(() => {
-  if(keyInfo.value.Item){
-    nextTick(()=>{
+  if (keyInfo.value.Item) {
+    nextTick(() => {
       scrollbarRef.value.scrollTop = scrollbarRef.value.scrollHeight
     })
-    return keyInfo.value.Item.split('\n').filter((item) => item) 
-  }else{
+    return keyInfo.value.Item.split('\n').filter((item) => item)
+  } else {
     return [];
   }
- 
 
- 
+
+
 });
 
 
 // 验证报告生成 获取生成结果
 const generateKeyInfo = async (key) => {
-  
+
   const { data: res } = await generateKey({
     key,
   });
@@ -251,7 +243,7 @@ const generateKeyInfo = async (key) => {
     clearTimeout(timer);
   }
   keyInfo.value = res;
-  
+
 };
 
 // 关闭对话框时触发
@@ -269,32 +261,31 @@ const handleDownload = () => {
 const putTemplateData = async () => {
   try {
     const arr = toRaw(formValue.formList);
-  //  return
-    const VerifyTemplateMapData = arr.map((item,i) => {
-      
+    //  return
+    const VerifyTemplateMapData = arr.map((item, i) => {
       if (item.T_label === 3) {
-        console.log('等于3',item.T_value,item.T_label,i)
+        // console.log('等于3',item.T_value,item.T_label,i)
         return {
           T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
-          T_value: item.T_value.length!=0?item.T_value.join('|'):'',
+          T_value: item.T_value.length != 0 ? item.T_value.join('|') : '',
           T_source: item.T_source,
           T_flow_sort: item.T_flow_sort,
           T_max_time: item.T_max_time,
           T_min_time: item.T_min_time,
         };
       } else if (item.T_label === 9) {
-        console.log('等于9',item.T_value,item.T_label,i)
+        // console.log('等于9',item.T_value,item.T_label,i)
         return {
           T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
-          T_value: item.T_value!=null?item.T_value.join('|'):'',
+          T_value: item.T_value != null ? item.T_value.join('|') : '',
           T_source: item.T_source,
           T_flow_sort: item.T_flow_sort,
           T_max_time: item.T_max_time,
           T_min_time: item.T_min_time,
         };
       } else if (item.T_label === 12) {
-        console.log('等于12',item.T_value,item.T_label,i)
-        if(item.T_value[0]==null && item.T_value[1]==null){
+        // console.log('等于12',item.T_value,item.T_label,i)
+        if (item.T_value[0] == null && item.T_value[1] == null) {
           return {
             T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
             T_value: '',
@@ -303,8 +294,8 @@ const putTemplateData = async () => {
             T_max_time: item.T_max_time,
             T_min_time: item.T_min_time,
           };
-        }else{
-          if(item.T_value[0]!=null){
+        } else {
+          if (item.T_value[0] != null) {
             return {
               T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
               T_value: `${item.T_value[0]}/${item.T_value[1]}`,
@@ -313,7 +304,7 @@ const putTemplateData = async () => {
               T_max_time: item.T_max_time,
               T_min_time: item.T_min_time,
             };
-          }else{
+          } else {
             return {
               T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
               T_value: `/${item.T_value[1]}`,
@@ -323,11 +314,11 @@ const putTemplateData = async () => {
               T_min_time: item.T_min_time,
             };
           }
-         
+
         }
       } else if (item.T_label === 13) {
-        console.log('等于13',item.T_value,item.T_label,i)
-        if(item.T_value[0]==null && item.T_value[1]==null){
+        // console.log('等于13',item.T_value,item.T_label,i)
+        if (item.T_value[0] == null && item.T_value[1] == null) {
           return {
             T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
             T_value: '',
@@ -336,8 +327,8 @@ const putTemplateData = async () => {
             T_max_time: item.T_max_time,
             T_min_time: item.T_min_time,
           };
-        }else{
-          if(item.T_value[0]!=null){
+        } else {
+          if (item.T_value[0] != null) {
             return {
               T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
               T_value: `${item.T_value[0].join('|')}/${item.T_value[1]}`,
@@ -346,7 +337,7 @@ const putTemplateData = async () => {
               T_max_time: item.T_max_time,
               T_min_time: item.T_min_time,
             }
-          }else{
+          } else {
             return {
               T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
               T_value: `/${item.T_value[1]}`,
@@ -356,13 +347,13 @@ const putTemplateData = async () => {
               T_min_time: item.T_min_time,
             }
           }
-          
+
         }
       } else {
-        console.log('等于其他',item.T_value,item.T_label,i)
+        // console.log('等于其他',item.T_value,item.T_label,i)
         return {
           T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
-          T_value: item.T_value!=null?item.T_value + '':'',
+          T_value: item.T_value != null ? item.T_value + '' : '',
           T_source: item.T_source,
           T_flow_sort: item.T_flow_sort,
           T_max_time: item.T_max_time,
@@ -370,7 +361,7 @@ const putTemplateData = async () => {
         };
       }
     });
-    console.log('提交参数',VerifyTemplateMapData)
+    // console.log('提交参数',VerifyTemplateMapData)
     // return
     const token = getToken();
     const { data: res } = await putVerifyTemplateMapData({
@@ -380,47 +371,52 @@ const putTemplateData = async () => {
       T_VerifyTemplate_id: queryData.T_VerifyTemplate_id,
       VerifyTemplateMapData,
     });
-    
-    if (res.Code === 200) {
-      const obj = {};
-      
+    console.log('sdsd', res.Code)
+    const obj = {};
+
+    if (res.Code == 200) {
+
       for (let i of arr) {
-        console.log('打印arr',i)
-        if (i.T_label === 3 || i.T_label === 9) {          
-          obj[i.T_name] = i.T_value!=null?i.T_value.join('|'):'';
-        } else if (i.T_label === 12 ) {
-          console.log('打印12',i.T_value)
-          if(i.T_value[0]== null && i.T_value[1]==''){
-            console.log('12',i.T_value)
+        // console.log('打印arr',i)
+        if (i.T_label === 3 || i.T_label === 9) {
+          obj[i.T_name] = i.T_value != null ? i.T_value.join('|') : '';
+        } else if (i.T_label === 12) {
+          console.log('打印12', i.T_value)
+          if (i.T_value[0] == null && i.T_value[1] == '') {
+            console.log('12', i.T_value)
             obj[i.T_name] = ''
-          }else{
-            if(i.T_value[0]==null && i.T_value[1]!=null){
-              obj[i.T_name] = ''+ '/' + i.T_value[1]
-            }else if(i.T_value[0]!=null && i.T_value[1]==null){
+          } else {
+            if (i.T_value[0] == null && i.T_value[1] != null) {
+              obj[i.T_name] = '' + '/' + i.T_value[1]
+            } else if (i.T_value[0] != null && i.T_value[1] == null) {
               obj[i.T_name] = i.T_value[0] + '/' + ''
-            }else{
+            } else {
               obj[i.T_name] = i.T_value[0] + '/' + i.T_value[1]
             }
-            console.log('打印arr22222',obj[i.T_name])
+            console.log('打印arr22222', obj[i.T_name])
           }
-        } else if (i.T_label === 13) {    
-          console.log('等于时间',i.T_value[0]!=null , i.T_value[1]!=null)
-          if(i.T_value[0]!=null && i.T_value[1]!=null){//两个都有值
-            obj[i.T_name] = `${i.T_value[0].join('|')+'/'+i.T_value[1]}`;
-          }else if(i.T_value[0]!=null && i.T_value[1]==null){//选择了时间-没文本
-            obj[i.T_name] = `${i.T_value[0].join('|')+'/'}`;
-          }else if(i.T_value[0]==null && i.T_value[1]!=null){
-            obj[i.T_name] = `${'/'+i.T_value[1]}`;
-          }else{//都没选
+        } else if (i.T_label === 13) {
+          console.log('等于时间', i.T_value[0] != null, i.T_value[1] != null)
+          if (i.T_value[0] != null && i.T_value[1] != null) {//两个都有值
+            obj[i.T_name] = `${i.T_value[0].join('|') + '/' + i.T_value[1]}`;
+          } else if (i.T_value[0] != null && i.T_value[1] == null) {//选择了时间-没文本
+            obj[i.T_name] = `${i.T_value[0].join('|') + '/'}`;
+          } else if (i.T_value[0] == null && i.T_value[1] != null) {
+            obj[i.T_name] = `${'/' + i.T_value[1]}`;
+          } else {//都没选
             obj[i.T_name] = ''
           }
         } else {
           obj[i.T_name] = i.T_value;
         }
       }
-      
+
       modal.title = '生成报告';
-      modal.showModal = true;     
+      modal.showModal = true;
+      // obsData = obj
+      // setInterval(() => {
+      //   generateReportInfo(obj);
+      // }, 1000);
       generateReportInfo(obj);
     }
   } catch (e) {
@@ -443,41 +439,41 @@ const getClassList = async () => {
 const getTemplateList = async () => {
   try {
     const { data: res } = await getVerifyTemplateMapDataList(queryData);
-    console.log('999999999999999',res)
+    console.log('999999999999999', res)
     formValue.formList = res.Data;
 
     formValue.formList.forEach(item => {
-      if (item.T_label === 3){
-        if(item.T_value=='' || item.T_value==null){
+      if (item.T_label === 3) {
+        if (item.T_value == '' || item.T_value == null) {
           item.T_value = []
-        }else{
+        } else {
           item.T_value = item.T_value.split('|')
         }
-      }else if(item.T_label == 9){
-        if(item.T_value=='' || item.T_value==null){
+      } else if (item.T_label == 9) {
+        if (item.T_value == '' || item.T_value == null) {
           item.T_value = null
-        }else{
+        } else {
           item.T_value = item.T_value.split('|')
         }
-      }else if (item.T_label === 12) {
-        if(item.T_value=='' || item.T_value==null){
-          item.T_value = [null,null]
-        }else{
-          if(item.T_value.split('/')[0]==""){
+      } else if (item.T_label === 12) {
+        if (item.T_value == '' || item.T_value == null) {
+          item.T_value = [null, null]
+        } else {
+          if (item.T_value.split('/')[0] == "") {
             item.T_value = [null, item.T_value.split('/')[1]]
-          }else{
+          } else {
             item.T_value = [item.T_value.split('/')[0], item.T_value.split('/')[1]]
           }
-         
+
         }
       } else if (item.T_label === 13) {
-        console.log('=================================等于13',item)
-        if(item.T_value=='' || item.T_value==null){
-          item.T_value = [null,null]
-        }else{
-          if(item.T_value.split('/')[0]==""){//前面时间区间没选
+        console.log('=================================等于13', item)
+        if (item.T_value == '' || item.T_value == null) {
+          item.T_value = [null, null]
+        } else {
+          if (item.T_value.split('/')[0] == "") {//前面时间区间没选
             item.T_value = [null, item.T_value.split('/')[1]]
-          }else{//前面时间区间已经选
+          } else {//前面时间区间已经选
             item.T_value = [item.T_value.split('/')[0].split('|'), item.T_value.split('/')[1]]
           }
         }
@@ -499,5 +495,4 @@ onBeforeUnmount(() => {
 getTemplateList();
 </script>
 
-<style scoped>
-</style>
+<style scoped></style>