|
@@ -1,9 +1,16 @@
|
|
|
<template>
|
|
|
<n-space vertical>
|
|
|
- <n-breadcrumb>
|
|
|
- <n-breadcrumb-item>任务管理</n-breadcrumb-item>
|
|
|
- <n-breadcrumb-item>数据编辑</n-breadcrumb-item>
|
|
|
- </n-breadcrumb>
|
|
|
+ <n-space>
|
|
|
+ <n-button text style="font-size: 24px" @click="$router.back">
|
|
|
+ <n-icon>
|
|
|
+ <ArrowLeftOutlined />
|
|
|
+ </n-icon>
|
|
|
+ </n-button>
|
|
|
+ <n-breadcrumb>
|
|
|
+ <n-breadcrumb-item>任务管理</n-breadcrumb-item>
|
|
|
+ <n-breadcrumb-item>数据编辑</n-breadcrumb-item>
|
|
|
+ </n-breadcrumb>
|
|
|
+ </n-space>
|
|
|
<n-grid x-gap="12" :cols="4">
|
|
|
<n-gi>
|
|
|
<n-card>
|
|
@@ -61,8 +68,8 @@
|
|
|
clearable
|
|
|
/>
|
|
|
</n-space>
|
|
|
- <n-button type="primary">搜索</n-button>
|
|
|
- <n-button type="primary">导出数据</n-button>
|
|
|
+ <n-button type="primary" @click="getDataList">搜索</n-button>
|
|
|
+ <ExportVue :task="task" :classList="classList" />
|
|
|
<ImportVue :task="task" />
|
|
|
<AddVue :task="task" />
|
|
|
<SetVue />
|
|
@@ -85,28 +92,49 @@
|
|
|
</n-gi>
|
|
|
</n-grid>
|
|
|
</n-space>
|
|
|
- <n-modal v-model:show="showModal" :show-icon="false" preset="dialog">
|
|
|
- <n-form-item>
|
|
|
- <n-input v-model:value="formValue.value" />
|
|
|
- </n-form-item>
|
|
|
+ <n-modal
|
|
|
+ v-model:show="modal.showModal"
|
|
|
+ :title="modal.title"
|
|
|
+ :show-icon="false"
|
|
|
+ preset="dialog"
|
|
|
+ >
|
|
|
+ <template v-if="modal.title === '温度'">
|
|
|
+ <n-form-item :rule="rule">
|
|
|
+ <n-input v-model:value="formValue.T_t" />
|
|
|
+ </n-form-item>
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ <n-form-item :rule="rule">
|
|
|
+ <n-input v-model:value="formValue.T_rh" />
|
|
|
+ </n-form-item>
|
|
|
+ </template>
|
|
|
<n-space justify="end">
|
|
|
- <n-popconfirm @positive-click="handleDelete">
|
|
|
+ <n-popconfirm @positive-click="deleteTask">
|
|
|
<template #trigger>
|
|
|
<n-button type="error">删除该点</n-button>
|
|
|
</template>
|
|
|
是否确认删除?
|
|
|
</n-popconfirm>
|
|
|
- <n-button type="primary">确定</n-button>
|
|
|
+ <n-button type="primary" @click="editTask">确定</n-button>
|
|
|
</n-space>
|
|
|
</n-modal>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
import { Chart } from "highcharts-vue";
|
|
|
-import { getTaskDataClassList, getTaskDataList } from "@/api";
|
|
|
+import {
|
|
|
+ deleteTaskData,
|
|
|
+ editTaskData,
|
|
|
+ getTaskDataClassList,
|
|
|
+ getTaskDataList,
|
|
|
+} from "@/api";
|
|
|
import AddVue from "./AddVue.vue";
|
|
|
import ImportVue from "./ImportVue.vue";
|
|
|
import SetVue from "./SetVue.vue";
|
|
|
+import ExportVue from "./ExportVue.vue";
|
|
|
+import { ArrowLeftOutlined } from "@vicons/antd";
|
|
|
+
|
|
|
+const message = useMessage();
|
|
|
|
|
|
const task = window.sessionStorage.getItem("task")
|
|
|
? JSON.parse(window.sessionStorage.getItem("task"))
|
|
@@ -115,6 +143,20 @@ const task = window.sessionStorage.getItem("task")
|
|
|
const chart1 = ref(null);
|
|
|
const chart2 = ref(null);
|
|
|
|
|
|
+// Modal 数据源
|
|
|
+const modal = reactive({
|
|
|
+ showModal: false,
|
|
|
+ title: "",
|
|
|
+});
|
|
|
+
|
|
|
+const rule = {
|
|
|
+ T_t: {
|
|
|
+ required: true,
|
|
|
+ trigger: "blur",
|
|
|
+ message: "不能为空",
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
// 查询数据
|
|
|
const queryData = reactive({
|
|
|
T_task_id: task.T_task_id,
|
|
@@ -128,26 +170,19 @@ const queryData = reactive({
|
|
|
|
|
|
// 表单数据
|
|
|
const formValue = reactive({
|
|
|
- value: null,
|
|
|
- datetimeValue: null,
|
|
|
- selectValue: null,
|
|
|
+ T_t: null,
|
|
|
+ T_rh: null,
|
|
|
});
|
|
|
|
|
|
-// 表单规则
|
|
|
-const rules = {
|
|
|
- datetimeValue: {
|
|
|
- required: true,
|
|
|
- trigger: "blur",
|
|
|
- message: "不能为空",
|
|
|
- },
|
|
|
-};
|
|
|
-
|
|
|
// 设备列表
|
|
|
const classList = ref([]);
|
|
|
|
|
|
// 列表
|
|
|
const dataList = ref([]);
|
|
|
|
|
|
+//
|
|
|
+const dataInfo = ref({});
|
|
|
+
|
|
|
// 选项组受控模式下的值
|
|
|
const checkValues = ref([]);
|
|
|
|
|
@@ -165,7 +200,60 @@ const onScroll = (e) => {
|
|
|
const handleCheckAll = (checked) => {
|
|
|
if (checked) {
|
|
|
checkValues.value = classList.value.map((item) => item.T_id);
|
|
|
+ checkValues.value.forEach(async (item) => {
|
|
|
+ queryData.T_id = item;
|
|
|
+ await getDataList();
|
|
|
+ const data1 = dataList.value.map((item) => [
|
|
|
+ new Date(item.T_time).getTime(),
|
|
|
+ item.T_t,
|
|
|
+ ]);
|
|
|
+ const data2 = dataList.value.map((item) => [
|
|
|
+ new Date(item.T_time).getTime(),
|
|
|
+ item.T_rh,
|
|
|
+ ]);
|
|
|
+ chart1.value.chart.addSeries({
|
|
|
+ id: item,
|
|
|
+ name: item,
|
|
|
+ data: data1,
|
|
|
+ lineWidth: 1,
|
|
|
+ cursor: "pointer",
|
|
|
+ events: {
|
|
|
+ click(e) {
|
|
|
+ modal.title = "温度";
|
|
|
+ modal.showModal = true;
|
|
|
+ formValue.T_t = e.point.y;
|
|
|
+ queryData.T_id = e.point.series.name;
|
|
|
+ getDataList();
|
|
|
+ dataInfo.value = dataList.value[e.point.index];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+ chart2.value.chart.addSeries({
|
|
|
+ id: item,
|
|
|
+ name: item,
|
|
|
+ data: data2,
|
|
|
+ lineWidth: 1,
|
|
|
+ cursor: "pointer",
|
|
|
+ events: {
|
|
|
+ click(e) {
|
|
|
+ modal.title = "湿度";
|
|
|
+ modal.showModal = true;
|
|
|
+ formValue.T_rh = e.point.y;
|
|
|
+ queryData.T_id = e.point.series.name;
|
|
|
+ getDataList();
|
|
|
+ dataInfo.value = dataList.value[e.point.index];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ });
|
|
|
+ });
|
|
|
} else {
|
|
|
+ const arr = checkValues.value;
|
|
|
+ arr.forEach(async (item) => {
|
|
|
+ chart1.value.chart.get(item).remove();
|
|
|
+ });
|
|
|
+ arr.forEach(async (item) => {
|
|
|
+ chart2.value.chart.get(item).remove();
|
|
|
+ });
|
|
|
checkValues.value = [];
|
|
|
}
|
|
|
};
|
|
@@ -180,10 +268,8 @@ const onUpdateValues = async (values, meta) => {
|
|
|
new Date(item.T_time).getTime(),
|
|
|
item.T_t,
|
|
|
]);
|
|
|
- const data2 = dataList.value.map((item) => [
|
|
|
- new Date(item.T_time).getTime(),
|
|
|
- item.T_rh,
|
|
|
- ]);
|
|
|
+ const data2 = dataList.value.map((item) => [new Date(item.T_time).getTime(), item.T_rh]);
|
|
|
+ console.log(data2);
|
|
|
if (meta.actionType === "check") {
|
|
|
chart1.value.chart.addSeries({
|
|
|
id: meta.value,
|
|
@@ -192,8 +278,13 @@ const onUpdateValues = async (values, meta) => {
|
|
|
lineWidth: 1,
|
|
|
cursor: "pointer",
|
|
|
events: {
|
|
|
- click() {
|
|
|
- showModal.value = true;
|
|
|
+ click(e) {
|
|
|
+ modal.title = "温度";
|
|
|
+ modal.showModal = true;
|
|
|
+ formValue.T_t = e.point.y;
|
|
|
+ queryData.T_id = e.point.series.name;
|
|
|
+ getDataList();
|
|
|
+ dataInfo.value = dataList.value[e.point.index];
|
|
|
},
|
|
|
},
|
|
|
});
|
|
@@ -205,8 +296,12 @@ const onUpdateValues = async (values, meta) => {
|
|
|
cursor: "pointer",
|
|
|
events: {
|
|
|
click(e) {
|
|
|
- showModal.value = true;
|
|
|
- console.log(e);
|
|
|
+ modal.title = "湿度";
|
|
|
+ modal.showModal = true;
|
|
|
+ formValue.T_rh = e.point.y;
|
|
|
+ queryData.T_id = e.point.series.name;
|
|
|
+ getDataList();
|
|
|
+ dataInfo.value = dataList.value[e.point.index];
|
|
|
},
|
|
|
},
|
|
|
});
|
|
@@ -216,11 +311,6 @@ const onUpdateValues = async (values, meta) => {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-// 删除
|
|
|
-const handleDelete = () => {
|
|
|
- console.log("delete");
|
|
|
-};
|
|
|
-
|
|
|
// 图表配置
|
|
|
const chartOptions1 = {
|
|
|
xAxis: {
|
|
@@ -313,13 +403,37 @@ const chartOptions2 = {
|
|
|
series: [],
|
|
|
};
|
|
|
|
|
|
-// 是否展示 Modal
|
|
|
-const showModal = ref(false);
|
|
|
+// 删除
|
|
|
+const deleteTask = async () => {
|
|
|
+ const { data: res } = await deleteTaskData({
|
|
|
+ T_task_id: queryData.T_task_id,
|
|
|
+ Id: dataInfo.value.ID,
|
|
|
+ });
|
|
|
+ if (res.Code === 200) {
|
|
|
+ modal.showModal = false;
|
|
|
+ message.success(res.Msg);
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
+// 编辑
|
|
|
+const editTask = async () => {
|
|
|
+ const { data: res } = await editTaskData({
|
|
|
+ T_task_id: queryData.T_task_id,
|
|
|
+ Id: dataInfo.value.ID,
|
|
|
+ T_t: formValue.T_t ? formValue.T_t : dataInfo.value.T_t,
|
|
|
+ T_rh: formValue.T_rh ? formValue.T_rh : dataInfo.value.T_rh,
|
|
|
+ T_time: dataInfo.value.T_time,
|
|
|
+ });
|
|
|
+ if (res.Code === 200) {
|
|
|
+ modal.showModal = false;
|
|
|
+ message.success(res.Msg);
|
|
|
+ }
|
|
|
+};
|
|
|
|
|
|
// 获取设备列表
|
|
|
const getClassList = async () => {
|
|
|
const { data: res } = await getTaskDataClassList({
|
|
|
- T_task_id: task.T_task_id,
|
|
|
+ T_task_id: queryData.T_task_id,
|
|
|
});
|
|
|
classList.value = res.Data ? res.Data : [];
|
|
|
};
|