|
@@ -14,7 +14,14 @@
|
|
|
size="small"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="状态:" prop="transferState">
|
|
|
+ <el-form-item label="风场名称:" prop="fieldName">
|
|
|
+ <el-input
|
|
|
+ v-model="formInline.fieldName"
|
|
|
+ placeholder="请输入风场名称"
|
|
|
+ size="small"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="状态:" prop="transferState">
|
|
|
<el-select
|
|
|
v-model="formInline.transferState"
|
|
|
placeholder="请选择状态"
|
|
@@ -27,7 +34,7 @@
|
|
|
:value="item.value"
|
|
|
></el-option>
|
|
|
</el-select>
|
|
|
- </el-form-item>
|
|
|
+ </el-form-item> -->
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" @click="onSubmit" size="small"
|
|
|
>查询</el-button
|
|
@@ -50,20 +57,17 @@
|
|
|
class="center-align-table"
|
|
|
:data="tableData"
|
|
|
border
|
|
|
- :cell-style="rowStyle"
|
|
|
stripe
|
|
|
style="width: 100%"
|
|
|
+ :row-key="(row) => row.uniqueCode"
|
|
|
+ lazy
|
|
|
+ :load="load"
|
|
|
+ :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
|
|
|
>
|
|
|
<!-- Table Columns -->
|
|
|
- <el-table-column
|
|
|
- prop="fieldName"
|
|
|
- align="center"
|
|
|
- label="风场名称"
|
|
|
- min-width="200"
|
|
|
- >
|
|
|
+ <el-table-column prop="fieldName" label="风场名称" min-width="200">
|
|
|
</el-table-column>
|
|
|
<el-table-column
|
|
|
- fixed
|
|
|
prop="batchName"
|
|
|
align="center"
|
|
|
label="批次名称"
|
|
@@ -161,45 +165,48 @@
|
|
|
min-width="150"
|
|
|
>
|
|
|
<template slot-scope="scope">
|
|
|
- <el-button
|
|
|
- v-if="
|
|
|
- scope.row.transferState !== -1 &&
|
|
|
- (scope.row.transferAddr !== null ||
|
|
|
- scope.row.transferAddr !== '')
|
|
|
- "
|
|
|
- v-hasPermi="['dataManage:dataAdministration:edit']"
|
|
|
- @click="handleEdit(scope.row)"
|
|
|
- type="text"
|
|
|
- size="small"
|
|
|
- >编辑</el-button
|
|
|
- >
|
|
|
- <el-button
|
|
|
- @click="handleClick(scope.row.downloadUrl)"
|
|
|
- type="text"
|
|
|
- size="small"
|
|
|
- >下载</el-button
|
|
|
- >
|
|
|
- <el-button
|
|
|
- v-if="
|
|
|
- scope.row.transferState == -1 &&
|
|
|
- (scope.row.transferAddr === null ||
|
|
|
- scope.row.transferAddr === '')
|
|
|
- "
|
|
|
- v-hasPermi="['dataManage:dataAdministration:editState']"
|
|
|
- @click="editTransferState(scope.row, '转换')"
|
|
|
- type="text"
|
|
|
- size="small"
|
|
|
- >转换</el-button
|
|
|
- >
|
|
|
- <el-button
|
|
|
- v-else
|
|
|
- @click="editTransferState(scope.row, '重新转换')"
|
|
|
- type="text"
|
|
|
- size="small"
|
|
|
- v-hasPermi="['dataManage:dataAdministration:editState']"
|
|
|
- :disabled="scope.row.transferState == 0"
|
|
|
- >重新转换</el-button
|
|
|
- >
|
|
|
+ <div v-if="scope.row.transferType">
|
|
|
+ <el-button
|
|
|
+ v-if="
|
|
|
+ scope.row.transferState !== -1 &&
|
|
|
+ (scope.row.transferAddr !== null ||
|
|
|
+ scope.row.transferAddr !== '')
|
|
|
+ "
|
|
|
+ v-hasPermi="['dataManage:dataAdministration:edit']"
|
|
|
+ @click="handleEdit(scope.row)"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ >编辑</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ @click="handleClick(scope.row.downloadUrl)"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ >下载</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ v-if="
|
|
|
+ scope.row.transferState == -1 &&
|
|
|
+ (scope.row.transferAddr === null ||
|
|
|
+ scope.row.transferAddr === '')
|
|
|
+ "
|
|
|
+ v-hasPermi="['dataManage:dataAdministration:editState']"
|
|
|
+ @click="editTransferState(scope.row, '转换')"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ >转换</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ v-else
|
|
|
+ @click="editTransferState(scope.row, '重新转换')"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ v-hasPermi="['dataManage:dataAdministration:editState']"
|
|
|
+ :disabled="scope.row.transferState == 0"
|
|
|
+ >重新转换</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <div v-else>/</div>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -262,7 +269,7 @@
|
|
|
>
|
|
|
<i class="el-icon-question"></i>
|
|
|
</el-tooltip>
|
|
|
- {{ item.transferTypeName + ":" }}
|
|
|
+ {{ item.transferTypeName + "路径" + ":" }}
|
|
|
</span>
|
|
|
<el-input
|
|
|
:min="1"
|
|
@@ -275,7 +282,7 @@
|
|
|
</el-col>
|
|
|
<el-col :span="13">
|
|
|
<el-form-item
|
|
|
- :label="item.timeGranularityName + ':'"
|
|
|
+ :label="item.transferTypeName + '时间粒度' + ':'"
|
|
|
:prop="'timeGranularity_' + index"
|
|
|
:rules="getTimeGranularityRules(index)"
|
|
|
>
|
|
@@ -283,7 +290,7 @@
|
|
|
type="number"
|
|
|
:min="1"
|
|
|
v-model="item.timeGranularity"
|
|
|
- :placeholder="'请输入' + item.timeGranularityName"
|
|
|
+ :placeholder="'请输入' + item.transferTypeName"
|
|
|
size="small"
|
|
|
@input="ensureMinValue(item, 'timeGranularity')"
|
|
|
>
|
|
@@ -345,7 +352,9 @@
|
|
|
</el-tooltip>
|
|
|
{{
|
|
|
newEditForm.dataTransferTypePathDtoList[0]
|
|
|
- .transferTypeName + ":"
|
|
|
+ .transferTypeName +
|
|
|
+ "路径" +
|
|
|
+ ":"
|
|
|
}}
|
|
|
</span>
|
|
|
<!-- :rules="{
|
|
@@ -372,16 +381,16 @@
|
|
|
<el-col :span="13">
|
|
|
<el-form-item
|
|
|
:label="
|
|
|
- newEditForm.dataTransferTypePathDtoList[0]
|
|
|
- .timeGranularityName + ':'
|
|
|
+ newEditForm.dataTransferTypePathDtoList[0].transferTypeName +
|
|
|
+ '时间粒度' +
|
|
|
+ ':'
|
|
|
"
|
|
|
prop="dataTransferTypePathDtoList.0.timeGranularity"
|
|
|
:rules="{
|
|
|
required: true,
|
|
|
message:
|
|
|
'请输入' +
|
|
|
- newEditForm.dataTransferTypePathDtoList[0]
|
|
|
- .timeGranularityName,
|
|
|
+ newEditForm.dataTransferTypePathDtoList[0].transferTypeName,
|
|
|
trigger: 'blur',
|
|
|
}"
|
|
|
>
|
|
@@ -393,8 +402,7 @@
|
|
|
"
|
|
|
:placeholder="
|
|
|
'请输入' +
|
|
|
- newEditForm.dataTransferTypePathDtoList[0]
|
|
|
- .timeGranularityName
|
|
|
+ newEditForm.dataTransferTypePathDtoList[0].transferTypeName
|
|
|
"
|
|
|
size="small"
|
|
|
>
|
|
@@ -430,12 +438,13 @@
|
|
|
:visible.sync="editTransferStateLoading"
|
|
|
width="900px"
|
|
|
:before-close="handleCloses"
|
|
|
+ class="TransferState"
|
|
|
>
|
|
|
<div v-loading="loadingViewEdit" class="views">
|
|
|
<el-form
|
|
|
ref="editStateForm"
|
|
|
:model="editTransferStateForm"
|
|
|
- label-width="160px"
|
|
|
+ label-width="170px"
|
|
|
>
|
|
|
<el-row>
|
|
|
<el-form-item label="批次名称:" prop="batchCode">
|
|
@@ -471,7 +480,7 @@
|
|
|
>
|
|
|
<i class="el-icon-question"></i>
|
|
|
</el-tooltip>
|
|
|
- {{ editTransferStateForm.transferTypeName + ":" }}
|
|
|
+ {{ editTransferStateForm.transferTypeName + "路径" + ":" }}
|
|
|
</span>
|
|
|
<el-input
|
|
|
v-model="editTransferStateForm.dataTransferTypePath"
|
|
@@ -505,6 +514,8 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
+ <el-divider>映射点表配置</el-divider>
|
|
|
+ <WindCodeAndTypeForPlt ref="forPltRef"></WindCodeAndTypeForPlt>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
<el-button @click="editstateCancel('editStateForm')" size="small"
|
|
|
>取 消</el-button
|
|
@@ -523,19 +534,26 @@
|
|
|
<script>
|
|
|
import {
|
|
|
queryDataTransferList,
|
|
|
+ queryDataTransferGroup,
|
|
|
+ queryDataTransferByBatchCode,
|
|
|
fieldBatchListForDataTransfer,
|
|
|
addDataTransferList,
|
|
|
editTimeGranularityQuery,
|
|
|
dataTransfer,
|
|
|
} from "@/api/dataManage";
|
|
|
import axios from "axios";
|
|
|
+import WindCodeAndTypeForPlt from "./components/WindCodeAndTypeForPlt.vue";
|
|
|
export default {
|
|
|
+ components: {
|
|
|
+ WindCodeAndTypeForPlt,
|
|
|
+ },
|
|
|
data() {
|
|
|
return {
|
|
|
intervalId: null,
|
|
|
startTime: null,
|
|
|
maxPollingTime: 5 * 60 * 1000, //轮询最大时间
|
|
|
loading: false,
|
|
|
+ forPltFrom: {},
|
|
|
editTransferStateForm: {
|
|
|
transferAddr: "",
|
|
|
dataTransferTypePath: "",
|
|
@@ -547,8 +565,9 @@ export default {
|
|
|
editTransferStateLoading: false,
|
|
|
loadingView: false,
|
|
|
formInline: {
|
|
|
+ fieldName: "",
|
|
|
batchName: "",
|
|
|
- transferState: "",
|
|
|
+ // transferState: "",
|
|
|
pageNum: 1,
|
|
|
pageSize: 10,
|
|
|
totalSize: 0,
|
|
@@ -615,6 +634,20 @@ export default {
|
|
|
this.getBatchCodeList();
|
|
|
},
|
|
|
methods: {
|
|
|
+ load(tree, treeNode, resolve) {
|
|
|
+ console.log(tree, "tree");
|
|
|
+ const { batchCode } = tree; // 假设每行都有唯一的 id
|
|
|
+ // 调用接口获取子级数据
|
|
|
+ queryDataTransferByBatchCode({ batchCode })
|
|
|
+ .then((data) => {
|
|
|
+ console.log(data, "data");
|
|
|
+ resolve(data.data);
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ console.error("Failed to load child nodes", error);
|
|
|
+ resolve([]); // 确保 resolve 被调用
|
|
|
+ });
|
|
|
+ },
|
|
|
handleCloses(done) {
|
|
|
this.$confirm("确认关闭?")
|
|
|
.then((_) => {
|
|
@@ -650,20 +683,51 @@ export default {
|
|
|
this.loadingViewEdit = true;
|
|
|
this.$confirm("请检查平台内的风机名称和转换数据的风机名称是否一致!")
|
|
|
.then((_) => {
|
|
|
- dataTransfer({
|
|
|
- dataTransferAddr:
|
|
|
- this.editTransferStateForm.dataTransferTypePath,
|
|
|
- dataTransferType: this.editTransferStateForm.transferType,
|
|
|
- batchCode: this.editTransferStateForm.batchCode,
|
|
|
- timeGranularity: this.editTransferStateForm.timeGranularity,
|
|
|
- })
|
|
|
- .then((res) => {
|
|
|
- this.$message({
|
|
|
- message: "操作成功",
|
|
|
- type: "success",
|
|
|
- });
|
|
|
- this.getTableList();
|
|
|
- this.editstateCancel();
|
|
|
+ const token = JSON.parse(sessionStorage.getItem("vuex"))?.auth
|
|
|
+ ?.userInfo?.token;
|
|
|
+ axios
|
|
|
+ .post(
|
|
|
+ "/transDataWeb/transConf/insertOrUpdate",
|
|
|
+ {
|
|
|
+ type: this.forPltFrom.transferType,
|
|
|
+ windCode: this.forPltFrom.fieldCode,
|
|
|
+ windName: this.forPltFrom.fieldName,
|
|
|
+ ...this.$refs.forPltRef.formData,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ headers: {
|
|
|
+ token,
|
|
|
+ },
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .then((pltRes) => {
|
|
|
+ if (pltRes.data.code === 200) {
|
|
|
+ dataTransfer({
|
|
|
+ dataTransferAddr:
|
|
|
+ this.editTransferStateForm.dataTransferTypePath,
|
|
|
+ dataTransferType: this.editTransferStateForm.transferType,
|
|
|
+ batchCode: this.editTransferStateForm.batchCode,
|
|
|
+ timeGranularity:
|
|
|
+ this.editTransferStateForm.timeGranularity,
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.$message({
|
|
|
+ message: "操作成功",
|
|
|
+ type: "success",
|
|
|
+ });
|
|
|
+ this.$refs.forPltRef.reset("fromPlt");
|
|
|
+ this.getTableList();
|
|
|
+ this.editstateCancel();
|
|
|
+ })
|
|
|
+ .catch((error) => {
|
|
|
+ this.loadingViewEdit = false;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.$message({
|
|
|
+ message: pltRes.message,
|
|
|
+ type: "error",
|
|
|
+ });
|
|
|
+ }
|
|
|
})
|
|
|
.catch((error) => {
|
|
|
this.loadingViewEdit = false;
|
|
@@ -679,6 +743,7 @@ export default {
|
|
|
},
|
|
|
//转换\重新转换
|
|
|
editTransferState(row, title) {
|
|
|
+ this.forPltFrom = { ...row };
|
|
|
this.editTransferStateForm.timeGranularity = row.timeGranularity;
|
|
|
this.editTransferStateForm.dataTransferTypePath = row.transferAddr
|
|
|
? row.transferAddr
|
|
@@ -690,6 +755,18 @@ export default {
|
|
|
this.editTransferStateForm.timeGranularityName = row.timeGranularityName;
|
|
|
this.editTransferStateTitle = title;
|
|
|
this.editTransferStateLoading = true;
|
|
|
+ if (title === "重新转换") {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.forPltRef.reSetByWindCodeAndTypeForPlt({
|
|
|
+ type: this.forPltFrom.transferType,
|
|
|
+ windCode: this.forPltFrom.fieldCode,
|
|
|
+ });
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.$refs.forPltRef.reset("fromPlt");
|
|
|
+ });
|
|
|
+ }
|
|
|
},
|
|
|
handleEdit(row) {
|
|
|
this.editNuedialog = true;
|
|
@@ -829,46 +906,20 @@ export default {
|
|
|
alert("弹出窗口已被阻止!请允许弹出式窗口访问本网站。");
|
|
|
}
|
|
|
},
|
|
|
- // async handleClick() {
|
|
|
- // try {
|
|
|
- // // 获取 HTML 内容
|
|
|
- // const response = await axios.get("/downLoadApi", {
|
|
|
- // responseType: "blob",
|
|
|
- // }); // 确保响应类型为 Blob
|
|
|
- // const reader = new FileReader();
|
|
|
- // reader.onload = function (event) {
|
|
|
- // const htmlContent = event.target.result; // 读取的 HTML 内容
|
|
|
- // const newWindow = window.open("", "_blank");
|
|
|
- // newWindow.document.open();
|
|
|
- // newWindow.document.write(htmlContent);
|
|
|
- // newWindow.document.close();
|
|
|
- // // 获取当前页面的 URL
|
|
|
- // const currentUrl = window.location.href;
|
|
|
- // const proxyUrl = currentUrl.substring(0, currentUrl.indexOf("/", 8)); // 从第8个字符开始搜索,找到第一个 "/" 为止
|
|
|
- // // 拼接代理地址和接口路径
|
|
|
- // const apiEndpoint = proxyUrl + "/downLoadApi";
|
|
|
-
|
|
|
- // // 拼接新的路径
|
|
|
- // const newUrl = apiEndpoint + "/downLoadApi";
|
|
|
- // // 设置 base 元素
|
|
|
- // const baseElement = newWindow.document.createElement("base");
|
|
|
- // baseElement.href = newUrl; // 使用代理地址和接口路径
|
|
|
- // newWindow.document.head.appendChild(baseElement);
|
|
|
- // };
|
|
|
- // reader.readAsText(response.data, "utf-8"); // 以 UTF-8 编码读取 Blob
|
|
|
- // } catch (error) {
|
|
|
- // console.error("Failed to fetch data:", error);
|
|
|
- // this.$message.error("无法打开新链接");
|
|
|
- // }
|
|
|
- // },
|
|
|
async getTableList() {
|
|
|
try {
|
|
|
this.loading = true;
|
|
|
- const result = await queryDataTransferList({
|
|
|
+ const result = await queryDataTransferGroup({
|
|
|
...this.formInline,
|
|
|
totalSize: undefined,
|
|
|
});
|
|
|
- this.tableData = result.data.list;
|
|
|
+ this.tableData = result.data.list.map((item) => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ hasChildren: true,
|
|
|
+ children: [],
|
|
|
+ };
|
|
|
+ });
|
|
|
this.formInline.totalSize = result.data.totalSize;
|
|
|
this.loading = false;
|
|
|
} catch (error) {
|
|
@@ -928,11 +979,17 @@ export default {
|
|
|
|
|
|
async fetchData() {
|
|
|
try {
|
|
|
- const result = await queryDataTransferList({
|
|
|
+ const result = await queryDataTransferGroup({
|
|
|
...this.formInline,
|
|
|
totalSize: undefined,
|
|
|
});
|
|
|
- this.tableData = result.data.list;
|
|
|
+ this.tableData = result.data.list.map((item) => {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ hasChildren: true,
|
|
|
+ children: [],
|
|
|
+ };
|
|
|
+ });
|
|
|
this.formInline.totalSize = result.data.totalSize;
|
|
|
} catch (error) {
|
|
|
this.$message({
|
|
@@ -992,7 +1049,7 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
::v-deep .animated-progress .el-progress-bar__outer {
|
|
|
- height: 20px; /* Adjust height as needed */
|
|
|
+ height: 15px; /* Adjust height as needed */
|
|
|
background-color: rgb(235, 238, 245);
|
|
|
background-image: linear-gradient(
|
|
|
45deg,
|
|
@@ -1007,4 +1064,7 @@ export default {
|
|
|
background-size: 1.25em 1.25em;
|
|
|
animation: striped-flow 3s linear infinite;
|
|
|
}
|
|
|
+.TransferState .el-form-item {
|
|
|
+ width: 343px;
|
|
|
+}
|
|
|
</style>
|