Hu Cheng 2 gadi atpakaļ
vecāks
revīzija
ce1bd7fd2c

+ 2 - 2
.env.development

@@ -1,2 +1,2 @@
-VITE_API_BASE_URL = "https://coldverify.coldbaozhida.com/api"
-VITE_API_LOCAL_BASE_URL = "http://192.168.1.23:6400"
+VITE_API_BASE_URL="https://coldverify.coldbaozhida.com/api"
+VITE_API_LOCAL_BASE_URL="http://192.168.1.23:6400"

+ 2 - 2
.env.production

@@ -1,2 +1,2 @@
-VITE_API_BASE_URL = "https://coldverify.coldbaozhida.com/api"
-VITE_API_LOCAL_BASE_URL = "http://coldverifylocal.coldbaozhida.com/api"
+VITE_API_BASE_URL="https://coldverify.coldbaozhida.com/api"
+VITE_API_LOCAL_BASE_URL="http://coldverifylocal.coldbaozhida.com/api"

+ 6 - 6
src/api/index.js

@@ -1,7 +1,7 @@
 export * from "./modules/base";
-export * from "./modules/task";
-export * from "./modules/certificate";
-export * from "./modules/scheme";
-export * from "./modules/equipment";
-export * from "./modules/data";
-export * from "./modules/report";
+export * from "./modules/Device";
+export * from "./modules/DeviceClass";
+export * from "./modules/DeviceClassList";
+export * from "./modules/Task";
+export * from "./modules/TaskData";
+export * from "./modules/VerifyTemplateMapData";

+ 3 - 3
src/api/modules/certificate.js → src/api/modules/Device.js

@@ -1,10 +1,10 @@
 import service from "@/utils/axios";
 
-// 任务(编辑
-export const editTaskData = (data) => {
+// 设备管理(列表
+export const getDeviceList = (data) => {
   return service.request({
     method: "POST",
-    url: "/Task/Up",
+    url: "/Device/List",
     data,
   });
 };

+ 19 - 0
src/api/modules/DeviceClass.js

@@ -0,0 +1,19 @@
+import service from "@/utils/axios";
+
+// 设备分类(获取)
+export const getDeviceClass = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/DeviceClass/Get",
+    data,
+  });
+};
+
+// 设备分类(编辑)
+export const editDeviceClass = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/DeviceClass/Up",
+    data,
+  });
+};

+ 37 - 0
src/api/modules/DeviceClassList.js

@@ -0,0 +1,37 @@
+import service from "@/utils/axios";
+
+// 设备分类-设备列表(列表)
+export const getDeviceClassListList = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/DeviceClassList/List",
+    data,
+  });
+};
+
+// 设备分类-设备列表(添加)
+export const addDeviceClassList = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/DeviceClassList/Add",
+    data,
+  });
+};
+
+// 设备分类-设备列表(编辑)
+export const editDeviceClassList = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/DeviceClassList/Up",
+    data,
+  });
+};
+
+// 设备分类-设备列表(删除)
+export const deleteDeviceClassList = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/DeviceClassList/Del",
+    data,
+  });
+};

+ 28 - 0
src/api/modules/Task.js

@@ -0,0 +1,28 @@
+import service from "@/utils/axios";
+
+// 任务(获取)
+export const getTask = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/Task/Get",
+    data,
+  });
+};
+
+// 任务(列表)
+export const getTaskList = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/Task/List",
+    data,
+  });
+};
+
+// 任务(编辑)
+export const editTask = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/Task/Up",
+    data,
+  });
+};

+ 47 - 0
src/api/modules/TaskData.js

@@ -0,0 +1,47 @@
+import service from "@/utils/axios";
+import { localBaseUrl } from "@/constant";
+
+// 任务数据 设备列表
+export const getTaskDataClassList = (data) => {
+  return service.request({
+    method: "POST",
+    url: `${localBaseUrl}/TaskData/TaskDataClass_List`,
+    data,
+  });
+};
+
+// 任务数据(列表)
+export const checkTaskData = (data) => {
+  return service.request({
+    method: "POST",
+    url: `${localBaseUrl}/TaskData/Check`,
+    data,
+  });
+};
+
+// 任务数据(提取数据)
+export const extractTaskData = (data) => {
+  return service.request({
+    method: "POST",
+    url: `${localBaseUrl}/TaskData/Extract_TaskData`,
+    data,
+  });
+};
+
+// 设备分类-设备列表(列表)
+export const getTaskDataList = (data) => {
+  return service.request({
+    method: "POST",
+    url: `${localBaseUrl}/TaskData/List`,
+    data,
+  });
+};
+
+// 打包本地数据
+export const importTaskData = (data) => {
+  return service.request({
+    method: "POST",
+    url: `${localBaseUrl}/TaskData/Import_TaskData`,
+    data,
+  });
+};

+ 19 - 0
src/api/modules/VerifyTemplateMapData.js

@@ -0,0 +1,19 @@
+import service from "@/utils/axios";
+
+// 验证模板-模板标签数据(列表)
+export const getVerifyTemplateMapDataList = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/VerifyTemplateMapData/List",
+    data,
+  });
+};
+
+// 验证模板-模板标签数据(添加或更新)
+export const putVerifyTemplateMapData = (data) => {
+  return service.request({
+    method: "POST",
+    url: "/VerifyTemplateMapData/Pu",
+    data,
+  });
+};

+ 1 - 1
src/api/modules/base.js

@@ -11,7 +11,7 @@ export const login = (data, role) => {
 };
 
 // 获取上传token
-export const getUpFileTokenData = (data) => {
+export const getUpFileToken = (data) => {
   return service.request({
     method: "POST",
     url: "/UpFileToken",

+ 0 - 29
src/api/modules/data.js

@@ -1,29 +0,0 @@
-import service from "@/utils/axios";
-import { localBaseUrl } from "@/constant";
-
-// 设备分类-设备列表(列表)
-export const getTaskDataData = (data) => {
-  return service.request({
-    method: "POST",
-    url: `${localBaseUrl}/TaskData/List`,
-    data,
-  });
-};
-
-// 提取数据
-export const extractTaskDataData = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/TaskData/Extract_TaskData",
-    data,
-  });
-};
-
-// 打包本地数据
-export const importTaskDataData = (data) => {
-  return service.request({
-    method: "POST",
-    url: `${localBaseUrl}/TaskData/Import_TaskData`,
-    data,
-  });
-};

+ 0 - 64
src/api/modules/equipment.js

@@ -1,64 +0,0 @@
-import service from "@/utils/axios";
-
-// 设备分类-设备列表(列表)
-export const getDeviceClassListData = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/DeviceClassList/List",
-    data,
-  });
-};
-
-// 设备分类-设备列表(添加)
-export const addDeviceClassListData = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/DeviceClassList/Add",
-    data,
-  });
-};
-
-// 设备分类-设备列表(编辑)
-export const editDeviceClassListData = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/DeviceClassList/Up",
-    data,
-  });
-};
-
-// 设备分类-设备列表(删除)
-export const deleteDeviceClassListData = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/DeviceClassList/Del",
-    data,
-  });
-};
-
-// 设备管理(列表)
-export const getDeviceData = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/Device/List",
-    data,
-  });
-};
-
-// 设备分类(获取)
-export const getDeviceClass = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/DeviceClass/Get",
-    data,
-  });
-};
-
-// 设备分类(编辑)
-export const editDeviceClass = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/DeviceClass/Up",
-    data,
-  });
-};

+ 0 - 10
src/api/modules/report.js

@@ -1,10 +0,0 @@
-import service from "@/utils/axios";
-
-// 任务(获取)
-export const getTask = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/Task/Get",
-    data,
-  });
-};

+ 0 - 29
src/api/modules/scheme.js

@@ -1,29 +0,0 @@
-import service from "@/utils/axios";
-import { localBaseUrl } from "@/constant";
-
-// 模板标签数据(列表)
-export const getVerifyTemplateMapData = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/VerifyTemplateMapData/List",
-    data,
-  });
-};
-
-// 设备列表
-export const getTaskDataClassData = (data) => {
-  return service.request({
-    method: "POST",
-    url: `${localBaseUrl}/TaskData/TaskDataClass_List`,
-    data,
-  });
-};
-
-// 模板标签数据添加或更新
-export const putTemplateMapDataData = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/VerifyTemplateMapData/Pu",
-    data,
-  });
-};

+ 0 - 10
src/api/modules/task.js

@@ -1,10 +0,0 @@
-import service from "@/utils/axios";
-
-// 任务管理(列表)
-export const getTaskData = (data) => {
-  return service.request({
-    method: "POST",
-    url: "/Task/List",
-    data,
-  });
-};

+ 1 - 1
src/router/index.js

@@ -17,7 +17,7 @@ const router = createRouter({
           component: () => import("@/views/project/index.vue"),
         },
         {
-          path: "/certificate/:taskId",
+          path: "/certificate",
           props: true,
           component: () => import("@/views/project/certificate/index.vue"),
         },

+ 13 - 0
src/store/task.js

@@ -0,0 +1,13 @@
+import { defineStore } from "pinia";
+// import { computed } from "vue";
+
+export const useTaskStore = defineStore("task", () => {
+  const task = computed(() => {
+    return window.sessionStorage.getItem("task")
+      ? JSON.parse(window.sessionStorage.getItem("task"))
+      : {};
+  });
+  return {
+    task,
+  };
+});

+ 3 - 1
src/utils/axios.js

@@ -20,19 +20,21 @@ service.interceptors.request.use(
   function (config) {
     // 在发送请求之前做些什么
     loadingBar.start();
+    const token = getToken();
     if (config.url !== "/VerifyTemplateMapData/Pu") {
       const formData = new FormData();
       if (
         config.url !== "/Login_Admin_verification" &&
         config.url !== "/Login_verification"
       ) {
-        const token = getToken();
         formData.append(TOKEN, token);
       }
       Object.entries(config.data).forEach(([key, value]) => {
         formData.append(key, value);
       });
       config.data = formData;
+    } else {
+      // config.headers[TOKEN] = token;
     }
     return config;
   },

+ 29 - 35
src/views/project/certificate/index.vue

@@ -5,7 +5,7 @@
         <n-breadcrumb-item>任务管理</n-breadcrumb-item>
         <n-breadcrumb-item>校准证书</n-breadcrumb-item>
       </n-breadcrumb>
-      <n-button type="primary" @click="showAddModal">添加</n-button>
+      <n-button type="primary" @click="showEditModal">编辑</n-button>
     </n-space>
     <n-descriptions bordered>
       <n-descriptions-item label="报告名称">
@@ -26,10 +26,7 @@
       </n-button>
     </n-space>
     <n-scrollbar style="max-height: 550px" trigger="none">
-      <vue-pdf-embed
-        ref="pdfRef"
-        source="https://pure-admin.github.io/pure-admin-doc/pdf/Cookie%E5%92%8CSession%E5%8C%BA%E5%88%AB%E7%94%A8%E6%B3%95.pdf"
-      />
+      <vue-pdf-embed ref="pdfRef" :source="taskInfo.T_pdf3" />
     </n-scrollbar>
   </n-space>
   <n-modal
@@ -39,9 +36,9 @@
     :title="modal.title"
     positive-text="提交"
     negative-text="取消"
-    @positive-click="submitCallback"
+    @positive-click="editTaskInfo"
   >
-    <n-upload :default-upload="false" :max="1" @change="onChange">
+    <n-upload :default-upload="false" :max="1" @change="handleChange">
       <n-button>选择文件</n-button>
     </n-upload>
   </n-modal>
@@ -50,19 +47,16 @@
 <script setup>
 import VuePdfEmbed from "vue-pdf-embed";
 import { PrinterOutlined as PrinterIcon } from "@vicons/antd";
-import { editTaskData, getTask, getUpFileTokenData } from "@/api";
+import { editTask, getTask, getUpFileToken } from "@/api";
 import * as qiniu from "qiniu-js";
+import { useTaskStore } from "@/store/task";
+
+const taskStore = useTaskStore();
 
 const message = useMessage();
 
 const pdfRef = ref(null);
 
-const task = window.sessionStorage.getItem("task");
-
-const props = defineProps({
-  taskId: String,
-});
-
 // 任务信息
 const taskInfo = ref({});
 
@@ -72,23 +66,19 @@ const modal = reactive({
   showModal: false,
 });
 
+// 表单数据
+const formValue = reactive({
+  T_pdf3: null,
+});
+
 // 打印pdf
 const onPrint = () => {
   pdfRef.value.print();
 };
 
-// 执行 positive 时执行的回调函数
-const submitCallback = () => {
-  if (modal.title === "添加") {
-    console.log("add");
-  } else {
-    console.log("edit");
-  }
-};
-
-const onChange = async ({ file }) => {
+const handleChange = async ({ file }) => {
   const type = file.type.split("/")[1];
-  const token = await getUpFileToken(type);
+  const token = await getFileToken(type);
   const observable = qiniu.upload(
     file.file,
     file.name,
@@ -107,35 +97,39 @@ const onChange = async ({ file }) => {
       message.error("上传失败");
     },
     complete: (res) => {
-      console.log(res);
+      formValue.T_pdf3 = res.key;
     },
   });
 };
 
 // 显示添加
-const showAddModal = () => {
+const showEditModal = () => {
+  modal.title = "编辑";
   modal.showModal = true;
-  modal.title = "添加";
 };
 
 // 编辑
-const editTask = async () => {
-  const { data: res } = await editTaskData();
-  console.log(res);
+const editTaskInfo = async () => {
+  const { data: res } = await editTask({
+    T_task_id: taskStore.task.T_task_id,
+    T_pdf3: formValue.T_pdf3,
+  });
+  message.success(res.Msg);
+  getTaskInfo();
 };
 
 // 任务(获取)
 const getTaskInfo = async () => {
   const { data: res } = await getTask({
-    T_task_id: props.taskId,
+    T_task_id: taskStore.task.T_task_id,
   });
   taskInfo.value = res.Data;
 };
 
 // 获取上传token
-const getUpFileToken = async () => {
-  const { data: res } = await getUpFileTokenData({
-    T_suffix: "pdf",
+const getFileToken = async (T_suffix) => {
+  const { data: res } = await getUpFileToken({
+    T_suffix,
   });
   return res.Data;
 };

+ 47 - 12
src/views/project/data/checkout/index.vue

@@ -5,19 +5,38 @@
       <n-breadcrumb-item>数据校验</n-breadcrumb-item>
     </n-breadcrumb>
     <n-data-table
-      :key="(row) => row.Id"
+      remote
       :columns="columns"
-      :data="data"
-      :pagination="pagination"
+      :data="dataList"
       :bordered="false"
+      :row-key="(row) => row.T_id"
+      :max-height="650"
     />
   </n-space>
 </template>
 
 <script setup>
+import { h } from "vue";
+import { checkTaskData } from "@/api";
+import { NTag } from "naive-ui";
+
+const task = window.sessionStorage.getItem("task")
+  ? JSON.parse(window.sessionStorage.getItem("task"))
+  : {};
+
+// 查询数据
+const queryData = reactive({
+  T_task_id: task.T_task_id,
+});
+
 // 需要展示的列
 const columns = [
   {
+    type: "expand",
+    expandable: (row) => row.Result !== 200,
+    renderExpand: (row) => row.Result_str,
+  },
+  {
     title: "编号",
     key: "T_id",
   },
@@ -27,31 +46,47 @@ const columns = [
   },
   {
     title: "数据量",
-    key: "T_id",
+    key: "T_unm",
   },
   {
     title: "时间间隔",
-    key: "T_sn",
+    key: "T_time_interval",
   },
   {
     title: "开始时间",
-    key: "T_id",
+    key: "Time_start",
   },
   {
     title: "结束时间",
-    key: "T_sn",
+    key: "Time_end",
   },
   {
     title: "结果",
-    key: "T_sn",
+    key: "Result",
+    render(row) {
+      return h(
+        NTag,
+        {
+          type: row.Result === 200 ? "success" : "error",
+          bordered: false,
+          size: "large",
+        },
+        { default: () => (row.Result === 200 ? "OK" : "错误") }
+      );
+    },
   },
 ];
 
-// 设备分类-设备列表
-const data = ref([
-]);
+// 列表
+const dataList = ref([]);
+
+// 获取列表
+const getDataList = async () => {
+  const { data: res } = await checkTaskData(queryData);
+  dataList.value = res.Data;
+};
 
-const pagination = ref(false);
+getDataList();
 </script>
 
 <style scoped></style>

+ 6 - 6
src/views/project/data/edit/index.vue

@@ -253,12 +253,12 @@ const rules = {
 };
 
 function getData(n) {
-  let arr = [],
-    i,
-    a,
-    b,
-    c,
-    spike;
+  let arr = [];
+  let i = "";
+  let a = "";
+  let b = "";
+  let c = "";
+  let spike = "";
   for (let i = 0; i < n; i = i + 1) {
     if (i % 100 === 0) {
       a = 2 * Math.random();

+ 13 - 17
src/views/project/data/source/index.vue

@@ -31,7 +31,7 @@
             clearable
           />
         </n-form-item>
-        <n-button type="primary" @click="getTaskList">搜索</n-button>
+        <n-button type="primary" @click="getDataList">搜索</n-button>
         <n-popconfirm @positive-click="extractTaskData">
           <template #trigger>
             <n-button type="primary">重置数据</n-button>
@@ -87,11 +87,7 @@
 
 <script setup>
 import { NSpace } from "naive-ui";
-import {
-  extractTaskDataData,
-  getTaskDataData,
-  importTaskDataData,
-} from "@/api";
+import { extractTaskData, getTaskDataList, importTaskData } from "@/api";
 
 const notification = useNotification();
 
@@ -145,7 +141,7 @@ const pagination = reactive({
   onChange: (page) => {
     pagination.page = page;
     queryData.page = page;
-    getTaskList();
+    getDataList();
   },
 });
 
@@ -156,14 +152,14 @@ const modal = reactive({
 
 const handleSearch = () => {
   modal.showModal = false;
-  extractTaskData();
+  extractTaskInfo();
 };
 
 // 获取列表
-const importTaskData = async () => {
+const importTaskInfo = async () => {
   pinShow.value = true;
   pinText.value = "正在打包数据";
-  const { data: res } = await importTaskDataData({
+  const { data: res } = await importTaskData({
     T_task_id: queryData.T_task_id,
   });
   if (res.Code === 200) {
@@ -173,15 +169,15 @@ const importTaskData = async () => {
       duration: 2500,
       keepAliveOnHover: true,
     });
-    getTaskList();
+    getDataList();
   }
 };
 
 // 获取列表
-const extractTaskData = async () => {
+const extractTaskInfo = async () => {
   pinShow.value = true;
   pinText.value = "正在汇总数据";
-  const { data: res } = await extractTaskDataData({
+  const { data: res } = await extractTaskData({
     T_task_id: queryData.T_task_id,
     Time_start: queryData.Time_start,
     Time_end: queryData.Time_end,
@@ -193,19 +189,19 @@ const extractTaskData = async () => {
       duration: 2500,
       keepAliveOnHover: true,
     });
-    importTaskData();
+    importTaskInfo();
   }
 };
 
 // 获取列表
-const getTaskList = async () => {
-  const { data: res } = await getTaskDataData(queryData);
+const getDataList = async () => {
+  const { data: res } = await getTaskDataList(queryData);
   pagination.itemCount = res.Data.Num;
   taskList.value = res.Data.List ? res.Data.List : [];
   modal.showModal = taskList.value.length <= 0;
 };
 
-getTaskList();
+getDataList();
 </script>
 
 <style scoped></style>

+ 29 - 32
src/views/project/equipment/index.vue

@@ -12,9 +12,7 @@
           @clear="handleClear"
           clearable
         />
-        <n-button type="primary" @click="getDeviceClassListDataList">
-          搜索
-        </n-button>
+        <n-button type="primary" @click="getDeviceClassList"> 搜索 </n-button>
       </n-input-group>
       <n-button type="primary" @click="showAddModal">批量导入</n-button>
     </n-space>
@@ -63,16 +61,15 @@
 import { h } from "vue";
 import { NButton, NSpace, NPopconfirm, NInput } from "naive-ui";
 import {
-  getDeviceClassListData,
-  addDeviceClassListData,
-  getDeviceData,
-  editDeviceClassListData,
-  deleteDeviceClassListData,
+  getDeviceClassListList,
+  addDeviceClassList,
+  getDeviceList,
+  editDeviceClassList,
+  deleteDeviceClassList,
 } from "@/api";
+import { useTaskStore } from "@/store/task";
 
-const task = window.sessionStorage.getItem("task")
-  ? JSON.parse(window.sessionStorage.getItem("task"))
-  : {};
+const taskStore = useTaskStore();
 
 const message = useMessage();
 
@@ -96,7 +93,7 @@ const rules = {
 // 查询参数
 const queryData = reactive({
   T_sn: "",
-  T_class: task.T_class,
+  T_class: taskStore.task.T_class,
 });
 
 // 需要展示的列
@@ -133,7 +130,7 @@ const columns = [
                 return h(
                   NPopconfirm,
                   {
-                    onPositiveClick: () => deleteDeviceClassList(row),
+                    onPositiveClick: () => deleteDeviceClass(row),
                   },
                   {
                     default: () => "是否确认删除?",
@@ -171,7 +168,7 @@ const pagination = reactive({
   onChange: (page) => {
     pagination.page = page;
     queryData.page = page;
-    getDeviceClassListDataList();
+    getDeviceClassList();
   },
 });
 
@@ -189,7 +186,7 @@ const formValue = reactive({
 // 输入框点击清空按钮时触发
 const handleClear = () => {
   queryData.T_sn = "";
-  getDeviceClassListDataList();
+  getDeviceClassList();
 };
 
 const submitCallback = () => {
@@ -198,7 +195,7 @@ const submitCallback = () => {
       if (!errors) {
         formValue.T_sn.forEach((T_sn) => {
           const T_id = deviceList.value.find((item) => item.T_sn === T_sn).T_id;
-          addDeviceClassList(T_sn, T_id);
+          addDeviceClass(T_sn, T_id);
         });
       } else {
         modal.showModal = true;
@@ -206,7 +203,7 @@ const submitCallback = () => {
       }
     });
   } else {
-    editDeviceClassList();
+    editDeviceClass();
   }
 };
 
@@ -225,25 +222,25 @@ const showAddModal = () => {
 };
 
 // 删除
-const deleteDeviceClassList = async (row) => {
-  const { data: res } = await deleteDeviceClassListData({
+const deleteDeviceClass = async (row) => {
+  const { data: res } = await deleteDeviceClassList({
     Id: row.Id,
   });
   message.success(res.Msg);
-  getDeviceClassListDataList();
+  getDeviceClassList();
 };
 
 // 编辑编号
-const editDeviceClassList = () => {
+const editDeviceClass = () => {
   formRef.value.validate(async (errors) => {
     if (!errors) {
       try {
-        const { data: res } = await editDeviceClassListData({
+        const { data: res } = await editDeviceClassList({
           Id: formValue.Id,
           T_id: formValue.T_id,
         });
         message.success(res.Msg);
-        getDeviceClassListDataList();
+        getDeviceClassList();
       } finally {
         formRef.value.restoreValidation();
         Object.keys(formValue).forEach((key) => (formValue[key] = ""));
@@ -256,15 +253,15 @@ const editDeviceClassList = () => {
 };
 
 // 批量导入
-const addDeviceClassList = async (T_sn, T_id) => {
+const addDeviceClass = async (T_sn, T_id) => {
   try {
-    const { data: res } = await addDeviceClassListData({
+    const { data: res } = await addDeviceClassList({
       T_class: queryData.T_class,
       T_sn,
       T_id,
     });
     message.success(res.Msg);
-    getDeviceClassListDataList();
+    getDeviceClassList();
   } finally {
     formRef.value.restoreValidation();
     Object.keys(formValue).forEach((key) => (formValue[key] = ""));
@@ -272,15 +269,15 @@ const addDeviceClassList = async (T_sn, T_id) => {
 };
 
 // 设备分类-设备列表(列表)
-const getDeviceClassListDataList = async () => {
-  const { data: res } = await getDeviceClassListData(queryData);
+const getDeviceClassList = async () => {
+  const { data: res } = await getDeviceClassListList(queryData);
   pagination.itemCount = res.Data.Num;
   data.value = res.Data.List;
 };
 
 // 设备管理(列表)
-const getDeviceList = async () => {
-  const { data: res } = await getDeviceData({
+const getDataList = async () => {
+  const { data: res } = await getDeviceList({
     T_MSISDN: "",
     T_sn: "",
     page: "",
@@ -293,8 +290,8 @@ const getDeviceList = async () => {
   deviceList.value = res.Data.List;
 };
 
-getDeviceList();
-getDeviceClassListDataList();
+getDataList();
+getDeviceClassList();
 </script>
 
 <style scoped></style>

+ 3 - 3
src/views/project/index.vue

@@ -18,7 +18,7 @@ import {
   NGrid,
   NIcon,
 } from "naive-ui";
-import { getTaskData } from "@/api";
+import { getTaskList } from "@/api";
 import { ArrowRightOutlined as ArrowRightIcon } from "@vicons/antd";
 
 const router = useRouter();
@@ -216,7 +216,7 @@ const columns = [
                           if (item === "实施方案") {
                             router.push("/scheme");
                           } else if (item === "校准证书") {
-                            router.push(`/certificate/${row.T_task_id}`);
+                            router.push("/certificate");
                           } else if (item === "设备管理") {
                             router.push("/equipment");
                           } else if (item === "数据来源") {
@@ -257,7 +257,7 @@ const pagination = reactive({
 
 // 任务管理(列表)
 const getDataList = async () => {
-  const { data: res } = await getTaskData(queryData);
+  const { data: res } = await getTaskList(queryData);
   pagination.itemCount = res.Data.Num;
   data.value = res.Data.List;
 };

+ 33 - 20
src/views/project/report/audit/index.vue

@@ -35,25 +35,37 @@
         </n-scrollbar>
       </n-tab-pane>
       <n-tab-pane name="2" tab="验证报告">
-        “威尔!着火了!快来帮忙!”我听到女朋友大喊。现在一个难题在我面前——是恢复一个重要的
-        Amazon 服务,还是救公寓的火。<br /><br />
-        我的脑海中忽然出现了 Amazon
-        著名的领导力准则”客户至上“,有很多的客户还依赖我们的服务,我不能让他们失望!所以着火也不管了,女朋友喊我也无所谓,我开始
-        debug 这个线上问题。
+        <n-space justify="end">
+          <n-button text style="font-size: 24px" @click="onPrint">
+            <n-icon>
+              <printer-icon />
+            </n-icon>
+          </n-button>
+        </n-space>
+        <n-scrollbar style="max-height: 450px" trigger="none">
+          <vue-pdf-embed
+            ref="pdfRef"
+            source="https://pure-admin.github.io/pure-admin-doc/pdf/Cookie%E5%92%8CSession%E5%8C%BA%E5%88%AB%E7%94%A8%E6%B3%95.pdf"
+          />
+        </n-scrollbar>
       </n-tab-pane>
       <n-tab-pane name="3" tab="校准证书">
-        “威尔!着火了!快来帮忙!”我听到女朋友大喊。现在一个难题在我面前——是恢复一个重要的
-        Amazon 服务,还是救公寓的火。<br /><br />
-        我的脑海中忽然出现了 Amazon
-        著名的领导力准则”客户至上“,有很多的客户还依赖我们的服务,我不能让他们失望!所以着火也不管了,女朋友喊我也无所谓,我开始
-        debug 这个线上问题。
+        <n-space justify="end">
+          <n-button text style="font-size: 24px" @click="onPrint">
+            <n-icon>
+              <printer-icon />
+            </n-icon>
+          </n-button>
+        </n-space>
+        <n-scrollbar style="max-height: 450px" trigger="none">
+          <vue-pdf-embed
+            ref="pdfRef"
+            source="https://pure-admin.github.io/pure-admin-doc/pdf/Cookie%E5%92%8CSession%E5%8C%BA%E5%88%AB%E7%94%A8%E6%B3%95.pdf"
+          />
+        </n-scrollbar>
       </n-tab-pane>
       <n-tab-pane name="4" tab="验证数据">
-        “威尔!着火了!快来帮忙!”我听到女朋友大喊。现在一个难题在我面前——是恢复一个重要的
-        Amazon 服务,还是救公寓的火。<br /><br />
-        我的脑海中忽然出现了 Amazon
-        著名的领导力准则”客户至上“,有很多的客户还依赖我们的服务,我不能让他们失望!所以着火也不管了,女朋友喊我也无所谓,我开始
-        debug 这个线上问题。
+        <TabFour />
       </n-tab-pane>
     </n-tabs>
   </n-space>
@@ -98,9 +110,10 @@
 
 <script setup>
 import VuePdfEmbed from "vue-pdf-embed";
-import { getTask, getUpFileTokenData } from "@/api";
+import { getTask, getUpFileToken } from "@/api";
 import * as qiniu from "qiniu-js";
 import { PrinterOutlined as PrinterIcon } from "@vicons/antd";
+import TabFour from "./tab-four/index.vue";
 
 const message = useMessage();
 
@@ -172,9 +185,9 @@ const submitCallback = () => {
 // const showUploadModal = () => {};
 
 // 获取上传token
-const getUpFileToken = async () => {
-  const { data: res } = await getUpFileTokenData({
-    T_suffix: "pdf",
+const getFileToken = async (T_suffix) => {
+  const { data: res } = await getUpFileToken({
+    T_suffix,
   });
   return res.Data;
 };
@@ -187,7 +200,7 @@ const getTaskInfo = async () => {
   taskInfo.value = res.Data;
 };
 
-getUpFileToken();
+getFileToken("pdf");
 getTaskInfo();
 </script>
 

+ 121 - 0
src/views/project/report/audit/tab-four/index.vue

@@ -0,0 +1,121 @@
+<template>
+  <n-space vertical>
+    <n-space>
+      <n-input
+        v-model:value="queryData.T_sn"
+        type="text"
+        placeholder="请输入SN"
+      />
+      <n-input
+        v-model:value="queryData.T_Class_id"
+        type="text"
+        placeholder="请输入设备编号"
+      />
+      <n-date-picker
+        value-format="yyyy.MM.dd HH:mm:ss"
+        type="daterange"
+        clearable
+      />
+      <n-button type="primary">搜索</n-button>
+    </n-space>
+    <n-data-table
+      remote
+      :columns="columns"
+      :data="dataList"
+      :pagination="pagination"
+      :bordered="false"
+    />
+  </n-space>
+</template>
+
+<script setup>
+import { h } from "vue";
+import { NTag } from "naive-ui";
+import { extractTaskData } from "@/api";
+
+const task = window.sessionStorage.getItem("task")
+  ? JSON.parse(window.sessionStorage.getItem("task"))
+  : {};
+
+// 查询参数
+const queryData = reactive({
+  T_task_id: task.T_task_id,
+  T_Class_id: task.T_class,
+  Time_start: "",
+  Time_end: "",
+  T_sn: "",
+});
+
+// 需要展示的列
+const columns = [
+  {
+    type: "expand",
+    expandable: (row) => row.Result !== 200,
+    renderExpand: (row) => row.Result_str,
+  },
+  {
+    title: "编号",
+    key: "T_id",
+  },
+  {
+    title: "SN",
+    key: "T_sn",
+  },
+  {
+    title: "数据量",
+    key: "T_unm",
+  },
+  {
+    title: "时间间隔",
+    key: "T_time_interval",
+  },
+  {
+    title: "开始时间",
+    key: "Time_start",
+  },
+  {
+    title: "结束时间",
+    key: "Time_end",
+  },
+  {
+    title: "结果",
+    key: "Result",
+    render(row) {
+      return h(
+        NTag,
+        {
+          type: row.Result === 200 ? "success" : "error",
+          bordered: false,
+          size: "large",
+        },
+        { default: () => (row.Result === 200 ? "OK" : "错误") }
+      );
+    },
+  },
+];
+
+// 分页数据源
+const pagination = reactive({
+  page: queryData.page,
+  pageSize: queryData.page_z,
+  itemCount: 0,
+  onChange: (page) => {
+    pagination.page = page;
+    queryData.page = page;
+    getDataList();
+  },
+});
+
+// 列表
+const dataList = ref([]);
+
+// 获取列表
+const getDataList = async () => {
+  const { data: res } = await extractTaskData(queryData);
+  console.log(res);
+};
+
+getDataList();
+</script>
+
+<style scoped></style>

+ 4 - 4
src/views/project/report/create/index.vue

@@ -167,7 +167,7 @@
 </template>
 
 <script setup>
-import { getVerifyTemplateMapData } from "@/api";
+import { getVerifyTemplateMapDataList } from "@/api";
 import { QuestionCircleOutlined as QuestionIcon } from "@vicons/antd";
 
 const props = defineProps({
@@ -224,8 +224,8 @@ const submitCallback = () => {
 };
 
 // 模板标签数据(列表)
-const getVerifyTemplateMapDataList = async () => {
-  const { data: res } = await getVerifyTemplateMapData({
+const getDataList = async () => {
+  const { data: res } = await getVerifyTemplateMapDataList({
     T_source: 1,
     T_task_id: props.taskId,
     T_VerifyTemplate_id: "rtxF",
@@ -233,7 +233,7 @@ const getVerifyTemplateMapDataList = async () => {
   templateDataList.value = res.Data;
 };
 
-getVerifyTemplateMapDataList();
+getDataList();
 </script>
 
 <style scoped></style>

+ 0 - 197
src/views/project/report/edit/index.vue

@@ -1,197 +0,0 @@
-<template>
-  <n-space vertical>
-    <n-page-header @back="() => $router.back()">
-      <template #title> 返回上一级 </template>
-      <template #header>
-        <n-breadcrumb>
-          <n-breadcrumb-item>任务管理</n-breadcrumb-item>
-          <n-breadcrumb-item>报告编辑</n-breadcrumb-item>
-        </n-breadcrumb>
-      </template>
-      <template #extra>
-        <n-space>
-          <n-button
-            type="primary"
-            @click="showUploadModal"
-            :color="taskInfo.T_pdf2 ? '#888' : ''"
-          >上传验证报告内容</n-button
-          >
-          <n-button
-            type="primary"
-            @click="showUploadModal"
-            :color="taskInfo.T_pdf3 ? '#888' : ''"
-          >上传验证设备证书</n-button
-          >
-        </n-space>
-      </template>
-      <n-descriptions bordered>
-        <n-descriptions-item label="报告名称">
-          {{ taskInfo.T_name }}
-        </n-descriptions-item>
-        <n-descriptions-item label="创建时间">
-          {{ taskInfo.CreateTime }}
-        </n-descriptions-item>
-        <n-descriptions-item label="修改时间">
-          {{ taskInfo.UpdateTime }}
-        </n-descriptions-item>
-      </n-descriptions>
-    </n-page-header>
-    <n-tabs type="segment">
-      <n-tab-pane name="chap1" tab="验证报告内容">
-        <n-space justify="end">
-          <n-button text style="font-size: 24px" @click="onPrint">
-            <n-icon>
-              <printer-icon />
-            </n-icon>
-          </n-button>
-        </n-space>
-        <n-scrollbar style="max-height: 400px" trigger="none">
-          <vue-pdf-embed
-            ref="pdfRef"
-            source="https://pure-admin.github.io/pure-admin-doc/pdf/Cookie%E5%92%8CSession%E5%8C%BA%E5%88%AB%E7%94%A8%E6%B3%95.pdf"
-          />
-        </n-scrollbar>
-      </n-tab-pane>
-      <n-tab-pane name="chap2" tab="验证设备证书">
-        “威尔!着火了!快来帮忙!”我听到女朋友大喊。现在一个难题在我面前——是恢复一个重要的
-        Amazon 服务,还是救公寓的火。<br /><br />
-        我的脑海中忽然出现了 Amazon
-        著名的领导力准则”客户至上“,有很多的客户还依赖我们的服务,我不能让他们失望!所以着火也不管了,女朋友喊我也无所谓,我开始
-        debug 这个线上问题。
-      </n-tab-pane>
-    </n-tabs>
-  </n-space>
-  <n-modal
-    :show-icon="false"
-    v-model:show="modal.showModal"
-    preset="dialog"
-    :title="modal.title"
-    positive-text="提交"
-    negative-text="取消"
-    @positive-click="submitCallback"
-  >
-    <n-form
-      ref="formRef"
-      :model="formValue"
-      label-placement="left"
-      label-width="auto"
-      :rules="rules"
-    >
-      <n-form-item label="名称" path="T_name">
-        <n-input v-model:value="formValue.T_name" />
-      </n-form-item>
-      <n-form-item label="预览" path="T_img" required>
-        <n-space>
-          <template v-if="modal.title === '编辑'">
-            <n-image width="100" :src="formValue.T_img" />
-          </template>
-          <n-upload
-            :default-upload="false"
-            list-type="image-card"
-            :max="1"
-            @change="handleChange"
-          >
-            <template v-if="modal.title === '添加'"> 点击上传 </template>
-            <template v-else> 重新上传 </template>
-          </n-upload>
-        </n-space>
-      </n-form-item>
-    </n-form>
-  </n-modal>
-</template>
-
-<script setup>
-import VuePdfEmbed from "vue-pdf-embed";
-import { getTask, getUpFileTokenData } from "@/api";
-import * as qiniu from "qiniu-js";
-import { PrinterOutlined as PrinterIcon } from "@vicons/antd";
-
-const message = useMessage();
-
-const props = defineProps({
-  taskId: String,
-});
-
-const pdfRef = ref(null);
-
-// 任务信息
-const taskInfo = ref({});
-
-// 表单信息
-const formValue = reactive({});
-
-// 模态框数据源
-const modal = reactive({
-  title: "",
-  showModal: false,
-});
-
-// 验证表项的规则
-const rules = {
-  T_name: { required: true, message: "不能为空", trigger: "blur" },
-};
-
-// 打印pdf
-const onPrint = () => {
-  pdfRef.value.print();
-};
-
-// 组件状态变化的回调
-const handleChange = async (options) => {
-  const token = await getUpFileToken(options.file.type.split("/")[1]);
-  const observable = qiniu.upload(
-    options.file.file,
-    options.file.name,
-    token,
-    {},
-    {
-      useCdnDomain: true,
-    }
-  );
-  observable.subscribe({
-    next: (result) => {
-      // 主要用来展示进度
-      console.warn(result);
-    },
-    error: () => {
-      message.error("上传图片失败");
-    },
-    complete: (res) => {
-      formValue.T_img = res.key;
-    },
-  });
-};
-
-// 执行 positive 时执行的回调函数
-const submitCallback = () => {
-  if (modal.title === "添加") {
-    console.log("add");
-  } else {
-    console.log("edit");
-  }
-};
-
-// 显示上传
-const showUploadModal = () => {};
-
-// 获取上传token
-const getUpFileToken = async () => {
-  const { data: res } = await getUpFileTokenData({
-    T_suffix: "pdf",
-  });
-  return res.Data;
-};
-
-// 任务(获取)
-const getTaskInfo = async () => {
-  const { data: res } = await getTask({
-    T_task_id: props.taskId,
-  });
-  taskInfo.value = res.Data;
-};
-
-getUpFileToken();
-getTaskInfo();
-</script>
-
-<style scoped></style>

+ 165 - 52
src/views/project/scheme/index.vue

@@ -5,7 +5,12 @@
         <n-breadcrumb-item>任务管理</n-breadcrumb-item>
         <n-breadcrumb-item>实施方案</n-breadcrumb-item>
       </n-breadcrumb>
-      <n-button type="primary" @click="showPutModal">生成方案</n-button>
+      <n-space>
+        <n-button type="primary" @click="showPutModal">生成方案</n-button>
+        <n-button type="primary" @click="showUploadModal"
+          >上传验证实施方案</n-button
+        >
+      </n-space>
     </n-space>
     <n-scrollbar style="max-height: 700px">
       <n-form
@@ -39,11 +44,7 @@
             :path="item.T_field"
             v-else-if="item.T_label === 2"
           >
-            <n-input-number
-              class="w-full"
-              :min="1"
-              v-model:value="item.T_value"
-            />
+            <n-input v-model:value="item.T_value" />
             <n-popover trigger="hover">
               <template #trigger>
                 <n-icon size="20" class="ml-3">
@@ -209,39 +210,73 @@
     </n-scrollbar>
   </n-space>
   <n-modal
+    :style="{ width: modal.width }"
     v-model:show="modal.showModal"
+    :show-icon="false"
     preset="dialog"
-    title="生成方案"
-    content="确定生成报告?"
+    :title="modal.title"
     positive-text="确认"
     negative-text="取消"
-    @positive-click="putTemplateMapData"
-  />
+    @positive-click="submitCallback"
+  >
+    <template v-if="modal.title === '生成方案'">
+      <n-alert :bordered="false" type="info"> 确定生成报告? </n-alert>
+    </template>
+    <template v-else>
+      <n-form
+        ref="formRef"
+        :model="formValue"
+        :rules="rules"
+        label-placement="top"
+      >
+        <n-grid :cols="12">
+          <n-form-item-gi :span="12" label="是否公开" path="T_Show">
+            <n-select
+              v-model:value="formValue.T_Show"
+              :options="generalOptions"
+            />
+          </n-form-item-gi>
+          <n-form-item-gi :span="12" label="实施方案" path="T_pdf1" required>
+            <n-upload :default-upload="false" :max="1" @change="handleChange">
+              <n-button>上传文件</n-button>
+            </n-upload>
+          </n-form-item-gi>
+        </n-grid>
+      </n-form>
+    </template>
+  </n-modal>
 </template>
 
 <script setup>
 import {
-  getTaskDataClassData,
-  getVerifyTemplateMapData,
-  getUpFileTokenData,
-  putTemplateMapDataData,
+  getTaskDataClassList,
+  getVerifyTemplateMapDataList,
+  getUpFileToken,
+  putVerifyTemplateMapData,
+  editTask,
 } from "@/api";
 import { QuestionCircleOutlined } from "@vicons/antd";
 import * as qiniu from "qiniu-js";
+import { getToken } from "@/utils/storage/sessionToken";
+import { useTaskStore } from "@/store/task";
 
 const message = useMessage();
 
-const task = window.sessionStorage.getItem("task")
-  ? JSON.parse(window.sessionStorage.getItem("task"))
-  : {};
+const taskStore = useTaskStore();
 
 // 查询数据
 const queryData = reactive({
   T_source: 1,
-  T_task_id: task.T_task_id,
-  T_VerifyTemplate_id: task.T_VerifyTemplate_id,
+  T_task_id: taskStore.task.T_task_id,
+  T_VerifyTemplate_id: taskStore.task.T_VerifyTemplate_id,
 });
 
+// 是否公开选项
+const generalOptions = ["隐藏", "公开"].map((v, i) => ({
+  label: v,
+  value: i,
+}));
+
 // const renderLabel = () => {
 //   return h(
 //     NThing,
@@ -254,56 +289,107 @@ const queryData = reactive({
 //   );
 // };
 
+// 获取表项中收集到的值的对象
+const formValue = reactive({
+  T_Show: null,
+  T_pdf1: null,
+});
+
+// 验证表项的规则
+const rules = {
+  inputValue: {
+    required: true,
+    trigger: ["blur", "input"],
+    message: "请输入 inputValue",
+  },
+};
+
 // 模板标签数据列表
 const templateDataList = ref([]);
 
 // 设备列表
 const taskDataClassList = ref([]);
 
+// 上传数据
+let fileList = [];
+
 // 模态框数据源
 const modal = reactive({
   title: "",
+  width: "",
   showModal: false,
 });
 
+// 组件状态变化的回调
+const handleChange = async (options) => {
+  const token = await getFileToken(options.file.type.split("/")[1]);
+  const observable = qiniu.upload(
+    options.file.file,
+    options.file.name,
+    token,
+    {},
+    {
+      useCdnDomain: true,
+    }
+  );
+  observable.subscribe({
+    next: (result) => {
+      // 主要用来展示进度
+      console.warn(result);
+    },
+    error: () => {
+      message.error("上传图片失败");
+    },
+    complete: (res) => {
+      formValue.T_pdf1 = res.key;
+    },
+  });
+};
+
+// 执行 positive 时执行的回调函数
+const submitCallback = () => {
+  if (modal.title === "生成方案") {
+    putTemplateData();
+  } else {
+    editTaskInfo();
+  }
+};
+
 // 获取七牛云上传文件token
-const getUpFileToken = async (T_suffix) => {
-  const { data: res } = await getUpFileTokenData({
+const getFileToken = async (T_suffix) => {
+  const { data: res } = await getUpFileToken({
     T_suffix,
   });
   return res.Data;
 };
 
-// 模板标签数据添加或更新
-const putTemplateMapData = async () => {
-  const arr = templateDataList.value.filter((item) => item.T_label !== 5);
-  const VerifyTemplateMapData = arr.map((item) => {
-    if (item.T_label === 3 || item.T_label === 9) {
-      return {
-        T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
-        T_value: item.T_value.join("|"),
-      };
-    } else {
-      return {
-        T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
-        T_value: item.T_value,
-      };
-    }
-  });
-  const { data: res } = await putTemplateMapDataData({
-    T_source: queryData.T_source,
+// 显示上传验证实施方案
+const showUploadModal = () => {
+  modal.title = "上传验证实施方案";
+  modal.showModal = true;
+  modal.width = "30%";
+};
+
+// 任务(编辑)
+const editTaskInfo = async () => {
+  const { data: res } = await editTask({
     T_task_id: queryData.T_task_id,
-    T_VerifyTemplate_id: queryData.T_VerifyTemplate_id,
-    VerifyTemplateMapData,
+    T_pdf1: formValue.T_pdf1,
   });
-  console.log(res);
+  if (res.Code === 200) {
+    message.success(res.Msg);
+  }
 };
 
+// 显示生成方案
 const showPutModal = async () => {
+  modal.title = "生成方案";
+  modal.width = "";
   modal.showModal = true;
-  const arr = templateDataList.value;
-  for (const item of arr) {
-    const index = arr.indexOf(item);
+  fileList = toRaw(templateDataList.value);
+  fileList = fileList.filter((item) => item.T_label !== 5);
+  for (const item of fileList) {
+    const index = fileList.indexOf(item);
     if (item.T_label === 10 || item.T_label === 11) {
       const token = await getUpFileToken(item.T_value[0].type.split("/")[1]);
       const observable = qiniu.upload(
@@ -324,16 +410,43 @@ const showPutModal = async () => {
           message.error("上传图片失败");
         },
         complete: (res) => {
-          arr[index].T_value = res.key;
+          fileList[index].T_value = res.key;
         },
       });
     }
   }
 };
 
+// 模板标签数据添加或更新
+const putTemplateData = async () => {
+  const VerifyTemplateMapData = fileList.map((item) => {
+    if (item.T_label === 3 || item.T_label === 9) {
+      return {
+        T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
+        T_value: item.T_value.join("|"),
+      };
+    } else {
+      return {
+        T_VerifyTemplateMap_id: item.T_VerifyTemplateMap_id,
+        T_value: item.T_value + "",
+      };
+    }
+  });
+  const token = getToken();
+  const { data: res } = await putVerifyTemplateMapData({
+    User_tokey: token,
+    T_source: queryData.T_source,
+    T_task_id: queryData.T_task_id,
+    T_VerifyTemplate_id: queryData.T_VerifyTemplate_id,
+
+    VerifyTemplateMapData,
+  });
+  console.log(res);
+};
+
 // 模板标签数据(列表)
-const getVerifyTemplateMapDataList = async () => {
-  const { data: res } = await getVerifyTemplateMapData(queryData);
+const getDataList = async () => {
+  const { data: res } = await getVerifyTemplateMapDataList(queryData);
   templateDataList.value = res.Data;
   templateDataList.value.forEach((item) => {
     if (item.T_label === 10 || item.T_label === 11 || item.T_label === 3) {
@@ -345,15 +458,15 @@ const getVerifyTemplateMapDataList = async () => {
 };
 
 // 获取设备列表
-const getTaskDataClassList = async () => {
-  const { data: res } = await getTaskDataClassData({
+const getTaskClassList = async () => {
+  const { data: res } = await getTaskDataClassList({
     T_task_id: queryData.T_task_id,
   });
   taskDataClassList.value = res.Data ? res.Data : [];
 };
 
-getTaskDataClassList();
-getVerifyTemplateMapDataList();
+getTaskClassList();
+getDataList();
 </script>
 
 <style scoped></style>