|
@@ -5,7 +5,12 @@
|
|
<n-breadcrumb-item>任务管理</n-breadcrumb-item>
|
|
<n-breadcrumb-item>任务管理</n-breadcrumb-item>
|
|
<n-breadcrumb-item>实施方案</n-breadcrumb-item>
|
|
<n-breadcrumb-item>实施方案</n-breadcrumb-item>
|
|
</n-breadcrumb>
|
|
</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-space>
|
|
<n-scrollbar style="max-height: 700px">
|
|
<n-scrollbar style="max-height: 700px">
|
|
<n-form
|
|
<n-form
|
|
@@ -39,11 +44,7 @@
|
|
:path="item.T_field"
|
|
:path="item.T_field"
|
|
v-else-if="item.T_label === 2"
|
|
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">
|
|
<n-popover trigger="hover">
|
|
<template #trigger>
|
|
<template #trigger>
|
|
<n-icon size="20" class="ml-3">
|
|
<n-icon size="20" class="ml-3">
|
|
@@ -209,39 +210,73 @@
|
|
</n-scrollbar>
|
|
</n-scrollbar>
|
|
</n-space>
|
|
</n-space>
|
|
<n-modal
|
|
<n-modal
|
|
|
|
+ :style="{ width: modal.width }"
|
|
v-model:show="modal.showModal"
|
|
v-model:show="modal.showModal"
|
|
|
|
+ :show-icon="false"
|
|
preset="dialog"
|
|
preset="dialog"
|
|
- title="生成方案"
|
|
|
|
- content="确定生成报告?"
|
|
|
|
|
|
+ :title="modal.title"
|
|
positive-text="确认"
|
|
positive-text="确认"
|
|
negative-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>
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
import {
|
|
import {
|
|
- getTaskDataClassData,
|
|
|
|
- getVerifyTemplateMapData,
|
|
|
|
- getUpFileTokenData,
|
|
|
|
- putTemplateMapDataData,
|
|
|
|
|
|
+ getTaskDataClassList,
|
|
|
|
+ getVerifyTemplateMapDataList,
|
|
|
|
+ getUpFileToken,
|
|
|
|
+ putVerifyTemplateMapData,
|
|
|
|
+ editTask,
|
|
} from "@/api";
|
|
} from "@/api";
|
|
import { QuestionCircleOutlined } from "@vicons/antd";
|
|
import { QuestionCircleOutlined } from "@vicons/antd";
|
|
import * as qiniu from "qiniu-js";
|
|
import * as qiniu from "qiniu-js";
|
|
|
|
+import { getToken } from "@/utils/storage/sessionToken";
|
|
|
|
+import { useTaskStore } from "@/store/task";
|
|
|
|
|
|
const message = useMessage();
|
|
const message = useMessage();
|
|
|
|
|
|
-const task = window.sessionStorage.getItem("task")
|
|
|
|
- ? JSON.parse(window.sessionStorage.getItem("task"))
|
|
|
|
- : {};
|
|
|
|
|
|
+const taskStore = useTaskStore();
|
|
|
|
|
|
// 查询数据
|
|
// 查询数据
|
|
const queryData = reactive({
|
|
const queryData = reactive({
|
|
T_source: 1,
|
|
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 = () => {
|
|
// const renderLabel = () => {
|
|
// return h(
|
|
// return h(
|
|
// NThing,
|
|
// 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 templateDataList = ref([]);
|
|
|
|
|
|
// 设备列表
|
|
// 设备列表
|
|
const taskDataClassList = ref([]);
|
|
const taskDataClassList = ref([]);
|
|
|
|
|
|
|
|
+// 上传数据
|
|
|
|
+let fileList = [];
|
|
|
|
+
|
|
// 模态框数据源
|
|
// 模态框数据源
|
|
const modal = reactive({
|
|
const modal = reactive({
|
|
title: "",
|
|
title: "",
|
|
|
|
+ width: "",
|
|
showModal: false,
|
|
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
|
|
// 获取七牛云上传文件token
|
|
-const getUpFileToken = async (T_suffix) => {
|
|
|
|
- const { data: res } = await getUpFileTokenData({
|
|
|
|
|
|
+const getFileToken = async (T_suffix) => {
|
|
|
|
+ const { data: res } = await getUpFileToken({
|
|
T_suffix,
|
|
T_suffix,
|
|
});
|
|
});
|
|
return res.Data;
|
|
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_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 () => {
|
|
const showPutModal = async () => {
|
|
|
|
+ modal.title = "生成方案";
|
|
|
|
+ modal.width = "";
|
|
modal.showModal = true;
|
|
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) {
|
|
if (item.T_label === 10 || item.T_label === 11) {
|
|
const token = await getUpFileToken(item.T_value[0].type.split("/")[1]);
|
|
const token = await getUpFileToken(item.T_value[0].type.split("/")[1]);
|
|
const observable = qiniu.upload(
|
|
const observable = qiniu.upload(
|
|
@@ -324,16 +410,43 @@ const showPutModal = async () => {
|
|
message.error("上传图片失败");
|
|
message.error("上传图片失败");
|
|
},
|
|
},
|
|
complete: (res) => {
|
|
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 = res.Data;
|
|
templateDataList.value.forEach((item) => {
|
|
templateDataList.value.forEach((item) => {
|
|
if (item.T_label === 10 || item.T_label === 11 || item.T_label === 3) {
|
|
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,
|
|
T_task_id: queryData.T_task_id,
|
|
});
|
|
});
|
|
taskDataClassList.value = res.Data ? res.Data : [];
|
|
taskDataClassList.value = res.Data ? res.Data : [];
|
|
};
|
|
};
|
|
|
|
|
|
-getTaskDataClassList();
|
|
|
|
-getVerifyTemplateMapDataList();
|
|
|
|
|
|
+getTaskClassList();
|
|
|
|
+getDataList();
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style scoped></style>
|
|
<style scoped></style>
|