|
|
@@ -0,0 +1,494 @@
|
|
|
+<!--
|
|
|
+ * @Author: your name
|
|
|
+ * @Date: 2024-12-16 11:30:03
|
|
|
+ * @LastEditTime: 2024-12-17 09:25:42
|
|
|
+ * @LastEditors: bogon
|
|
|
+ * @Description: In User Settings Edit
|
|
|
+ * @FilePath: /performance-test/src/views/dataAdministration/laser/index.vue
|
|
|
+-->
|
|
|
+
|
|
|
+<template>
|
|
|
+ <div class="global-variable" v-loading="loading">
|
|
|
+ <!-- 激光测距仪转换操作页面 -->
|
|
|
+ <div class="condition">
|
|
|
+ <el-form
|
|
|
+ :inline="true"
|
|
|
+ ref="ruleForm"
|
|
|
+ :model="formInline"
|
|
|
+ class="demo-form-inline"
|
|
|
+ >
|
|
|
+ <el-form-item label="风场名称:" prop="fieldName">
|
|
|
+ <el-input
|
|
|
+ size="small"
|
|
|
+ v-model="formInline.fieldName"
|
|
|
+ placeholder="请输入风场名称"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="状态:">
|
|
|
+ <el-select
|
|
|
+ size="small"
|
|
|
+ v-model="formInline.transferStatus"
|
|
|
+ placeholder="请选择状态"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ :label="item.label"
|
|
|
+ v-for="item in StateCodeList"
|
|
|
+ :value="item.value"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button type="primary" @click="onSubmit" size="small"
|
|
|
+ >查询</el-button
|
|
|
+ >
|
|
|
+ <el-button @click="reset('ruleForm')" size="small">重置</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <div class="list-page">
|
|
|
+ <div class="newly">
|
|
|
+ <el-button
|
|
|
+ v-hasPermi="['performance:batchMag:add']"
|
|
|
+ type="primary"
|
|
|
+ @click="newnuedialog"
|
|
|
+ size="small"
|
|
|
+ >新增</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <el-table
|
|
|
+ v-loading="loading"
|
|
|
+ class="center-align-table"
|
|
|
+ :data="tableData"
|
|
|
+ border
|
|
|
+ :cell-style="rowStyle"
|
|
|
+ >
|
|
|
+ <el-table-column
|
|
|
+ prop="fieldName"
|
|
|
+ align="center"
|
|
|
+ min-width="100"
|
|
|
+ label="风场名称"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ min-width="100"
|
|
|
+ label="转换路径"
|
|
|
+ prop="transferAddr"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ min-width="100"
|
|
|
+ label="进度"
|
|
|
+ prop="transferProgress"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="transferStatus"
|
|
|
+ align="center"
|
|
|
+ label="状态"
|
|
|
+ min-width="100"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <span>
|
|
|
+ {{
|
|
|
+ scope.row.transferStatus == 0
|
|
|
+ ? "转换中"
|
|
|
+ : scope.row.transferStatus == 1
|
|
|
+ ? "转换完成"
|
|
|
+ : scope.row.transferStatus == 2
|
|
|
+ ? "转换异常"
|
|
|
+ : scope.row.transferStatus == -1
|
|
|
+ ? "未转换"
|
|
|
+ : "/"
|
|
|
+ }}</span
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ <el-table-column
|
|
|
+ align="center"
|
|
|
+ min-width="100"
|
|
|
+ label="异常信息"
|
|
|
+ prop="errInfo"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="transferStartTime"
|
|
|
+ align="center"
|
|
|
+ min-width="150"
|
|
|
+ label="开始时间"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="transferEndTime"
|
|
|
+ align="center"
|
|
|
+ min-width="150"
|
|
|
+ label="结束时间"
|
|
|
+ >
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column
|
|
|
+ prop="transition"
|
|
|
+ align="center"
|
|
|
+ fixed="right"
|
|
|
+ label="操作"
|
|
|
+ min-width="200"
|
|
|
+ >
|
|
|
+ <!-- 需要配置按钮权限再加这个自定义指令 -->
|
|
|
+ <!-- v-hasPermi="['dataAdministration:vibration:conversion']" -->
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.transferStatus === -1"
|
|
|
+ @click="conversion(scope.row, 0)"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ >转换</el-button
|
|
|
+ >
|
|
|
+ <!-- v-hasPermi="['dataAdministration:vibration:reconversion']" -->
|
|
|
+ <el-button
|
|
|
+ v-if="
|
|
|
+ scope.row.transferStatus === 0 ||
|
|
|
+ scope.row.transferStatus === 1 ||
|
|
|
+ scope.row.transferStatus === 2
|
|
|
+ "
|
|
|
+ @click="conversion(scope.row, 1)"
|
|
|
+ type="text"
|
|
|
+ size="small"
|
|
|
+ :disabled="scope.row.transferStatus == 0"
|
|
|
+ >重新转换</el-button
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div class="pagination-container">
|
|
|
+ <el-pagination
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
+ :current-page.sync="formInline.pageNum"
|
|
|
+ layout="total, prev, pager, next"
|
|
|
+ :page-size="formInline.pageSize"
|
|
|
+ :total="formInline.totalSize"
|
|
|
+ >
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 弹出层 -->
|
|
|
+ <!-- 新增 /编辑-->
|
|
|
+ <el-dialog
|
|
|
+ :title="title"
|
|
|
+ :visible.sync="nuedialog"
|
|
|
+ width="500px"
|
|
|
+ :before-close="handleCloses"
|
|
|
+ >
|
|
|
+ <div v-loading="loadingView" class="views">
|
|
|
+ <el-form
|
|
|
+ :model="ruleForm"
|
|
|
+ :rules="addUserRules"
|
|
|
+ ref="addUserForm"
|
|
|
+ label-width="100px"
|
|
|
+ class="demo-ruleForm"
|
|
|
+ >
|
|
|
+ <el-form-item label="风场:" prop="fieldCode">
|
|
|
+ <el-select
|
|
|
+ v-model="ruleForm.fieldCode"
|
|
|
+ placeholder="请选择风场"
|
|
|
+ :disabled="title !== '新增'"
|
|
|
+ style="width: 100%"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ :label="item.fieldName"
|
|
|
+ v-for="item in fieldCodeList"
|
|
|
+ :value="item.codeNumber"
|
|
|
+ ></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="转换路径" prop="transferAddr">
|
|
|
+ <el-input
|
|
|
+ v-model="ruleForm.transferAddr"
|
|
|
+ placeholder="请输入转换路径"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="cancel('addUserForm')" size="small"
|
|
|
+ >取 消
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ @click="submitForm('addUserForm')"
|
|
|
+ size="small"
|
|
|
+ >
|
|
|
+ 确 定
|
|
|
+ </el-button>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { updateFieldBatch, queryCodeNum } from "@/api/performance.js";
|
|
|
+import {
|
|
|
+ getDataTransfer,
|
|
|
+ addDataTransfer,
|
|
|
+ DataTransfer,
|
|
|
+} from "@/api/dataManage.js";
|
|
|
+
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ loadingView: false,
|
|
|
+ loading: false, //数据加载中
|
|
|
+ fieldCodeList: [],
|
|
|
+ StateCodeList: [
|
|
|
+ {
|
|
|
+ label: "未转换",
|
|
|
+ value: -1,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "转换中",
|
|
|
+ value: 0,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "转换完成",
|
|
|
+ value: 1,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "转换异常",
|
|
|
+ value: 2,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ formInline: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ transferType: 2,
|
|
|
+ fieldName: "",
|
|
|
+ transferStatus: "",
|
|
|
+ },
|
|
|
+ tableData: [],
|
|
|
+ // 新增编辑表单
|
|
|
+ ruleForm: {
|
|
|
+ fieldCode: null,
|
|
|
+ transferAddr: null,
|
|
|
+ },
|
|
|
+ addUserRules: {
|
|
|
+ fieldCode: {
|
|
|
+ required: true,
|
|
|
+ message: "请选择风场",
|
|
|
+ trigger: "change",
|
|
|
+ },
|
|
|
+ transferAddr: [
|
|
|
+ { required: true, message: "请输入转换路径", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ nuedialog: false,
|
|
|
+ title: "",
|
|
|
+ id: "",
|
|
|
+ };
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getTableList();
|
|
|
+ this.getQueryCodeNumList();
|
|
|
+ },
|
|
|
+
|
|
|
+ methods: {
|
|
|
+ //转换重新转换
|
|
|
+ conversion(row, retransfer) {
|
|
|
+ try {
|
|
|
+ // 直接替换整个对象,以确保 Vue 的响应式系统能够检测到变化
|
|
|
+ this.ruleForm = {
|
|
|
+ fieldCode: row.fieldCode,
|
|
|
+ transferAddr: row.transferAddr,
|
|
|
+ };
|
|
|
+ this.id = row.id;
|
|
|
+ this.nuedialog = true;
|
|
|
+ this.title = retransfer === 0 ? "转换" : "重新转换";
|
|
|
+ } catch (error) {
|
|
|
+ this.$message.error("获取用户信息失败");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleCloses(done) {
|
|
|
+ this.$confirm("确认关闭?")
|
|
|
+ .then((_) => {
|
|
|
+ done();
|
|
|
+ })
|
|
|
+ .catch((_) => {});
|
|
|
+ },
|
|
|
+
|
|
|
+ //获取风场列表
|
|
|
+ async getQueryCodeNumList() {
|
|
|
+ this.loading = true;
|
|
|
+ try {
|
|
|
+ const result = await queryCodeNum();
|
|
|
+ this.fieldCodeList = result.data.fieldCodeList;
|
|
|
+ this.loading = false;
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ this.loading = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ //分页数据切换
|
|
|
+ handleCurrentChange(val) {
|
|
|
+ this.formInline.pageNum = val;
|
|
|
+ this.getTableList();
|
|
|
+ },
|
|
|
+
|
|
|
+ async getTableList() {
|
|
|
+ try {
|
|
|
+ this.loading = true;
|
|
|
+ const result = await getDataTransfer({
|
|
|
+ ...this.formInline,
|
|
|
+ transferStatus:
|
|
|
+ this.formInline.transferStatus === ""
|
|
|
+ ? undefined
|
|
|
+ : this.formInline.transferStatus,
|
|
|
+ fieldName:
|
|
|
+ this.formInline.fieldName === ""
|
|
|
+ ? undefined
|
|
|
+ : this.formInline.fieldName,
|
|
|
+ });
|
|
|
+ this.tableData = result.data.list;
|
|
|
+ this.formInline.totalSize = result.data.totalSize;
|
|
|
+ this.loading = false;
|
|
|
+ } catch (error) {
|
|
|
+ this.$message({
|
|
|
+ type: "error",
|
|
|
+ message: "请检查是否连接网络",
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ rowStyle() {
|
|
|
+ return "text-align:center";
|
|
|
+ },
|
|
|
+ // 查询
|
|
|
+ onSubmit() {
|
|
|
+ this.getTableList();
|
|
|
+ },
|
|
|
+
|
|
|
+ // 新增,编辑确定
|
|
|
+ submitForm(formName) {
|
|
|
+ this.$refs[formName].validate(async (valid) => {
|
|
|
+ if (!valid) return false;
|
|
|
+ this.loadingView = true;
|
|
|
+ // 定义处理逻辑的映射
|
|
|
+ const actionMap = {
|
|
|
+ 新增: () => addDataTransfer({ transferType: 2, ...this.ruleForm }),
|
|
|
+ 转换: () =>
|
|
|
+ DataTransfer({
|
|
|
+ id: this.id,
|
|
|
+ retransfer: 0,
|
|
|
+ transferAddr: this.ruleForm.transferAddr,
|
|
|
+ }),
|
|
|
+ 重新转换: () =>
|
|
|
+ DataTransfer({
|
|
|
+ id: this.id,
|
|
|
+ retransfer: 1,
|
|
|
+ transferAddr: this.ruleForm.transferAddr,
|
|
|
+ }),
|
|
|
+ };
|
|
|
+ try {
|
|
|
+ // 执行对应的操作
|
|
|
+ const response = await actionMap[this.title]?.();
|
|
|
+ if (response) {
|
|
|
+ this.$message({
|
|
|
+ type: "success",
|
|
|
+ message: response.msg,
|
|
|
+ });
|
|
|
+ this.getTableList();
|
|
|
+ this.nuedialog = false;
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error("操作失败:", error);
|
|
|
+ this.$message.error(error?.msg || "操作失败,请稍后重试。");
|
|
|
+ } finally {
|
|
|
+ this.loadingView = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ //点击取消
|
|
|
+ cancel(formName) {
|
|
|
+ this.$refs[formName] && this.$refs[formName].resetFields();
|
|
|
+ this.ruleForm = {
|
|
|
+ fieldCode: null,
|
|
|
+ transferAddr: null,
|
|
|
+ };
|
|
|
+ this.nuedialog = false;
|
|
|
+ this.loadingView = false;
|
|
|
+ },
|
|
|
+ reset() {
|
|
|
+ this.formInline = {
|
|
|
+ fieldName: "",
|
|
|
+ transferStatus: "",
|
|
|
+ };
|
|
|
+ this.getTableList();
|
|
|
+ },
|
|
|
+ // 新增
|
|
|
+ newnuedialog() {
|
|
|
+ this.cancel("addUserForm");
|
|
|
+ this.ruleForm = {
|
|
|
+ transferAddr: "",
|
|
|
+ fieldCode: "",
|
|
|
+ };
|
|
|
+ this.nuedialog = true;
|
|
|
+ this.title = "新增";
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.general {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+
|
|
|
+ .condition {
|
|
|
+ width: 50%;
|
|
|
+ display: flex;
|
|
|
+
|
|
|
+ p {
|
|
|
+ width: 100px;
|
|
|
+ text-align: right;
|
|
|
+ line-height: 40px;
|
|
|
+ }
|
|
|
+
|
|
|
+ span {
|
|
|
+ line-height: 40px;
|
|
|
+
|
|
|
+ padding-left: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-select {
|
|
|
+ width: 100%;
|
|
|
+ margin-bottom: 20px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-input {
|
|
|
+ margin-bottom: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.attachment {
|
|
|
+ display: flex;
|
|
|
+ padding-top: 10px;
|
|
|
+
|
|
|
+ p {
|
|
|
+ margin-right: 20px;
|
|
|
+ color: #409eff;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.addition {
|
|
|
+ display: flex;
|
|
|
+ justify-content: flex-end;
|
|
|
+ margin-bottom: 10px;
|
|
|
+}
|
|
|
+.demo-ruleForm {
|
|
|
+ .el-form-item {
|
|
|
+ margin-bottom: 25px;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|