whychdw
5 天以前 aa995b8564c6864d5c9f43273c0b303af8f9bd4d
标准参数内容丰富
3个文件已修改
2个文件已添加
262 ■■■■ 已修改文件
src/api/standardParams.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/downloadFile.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/getBaseUrl.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dcPowerStatus/dialog/addEdit.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/dcPowerStatus/standardParams.vue 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/standardParams.js
@@ -1,4 +1,5 @@
import request from '@/utils/request';
import axios from "axios";
/**
 * 根据标准参数类型查询标准参数
@@ -27,3 +28,36 @@
    data
  });
}
/**
 * 根据文件名称(模糊)和数据类型查询标准文件
 * @param fileName 文件名称
 * @param powerType 类型
 * @returns {*}
 */
export function getStandFileApi(fileName, powerType) {
  return request({
    url: '/stand/getStandFile',
    method: 'GET',
    params: {
      fileName,
      powerType
    }
  });
}
/**
 * 上传标准参数文件
 * @param data
 * @returns {Promise<axios.AxiosResponse<any>>}
 */
export function uploadStandFileApi(data) {
  return request({
    method: "POST",
    url: "/stand/uploadStandFile",
    headers: {
      "Content-Type": "multipart/form-data"
    },
    data
  });
}
src/utils/downloadFile.js
New file
@@ -0,0 +1,12 @@
import getBaseUrl from "./getBaseUrl.js";
function downloadFile(url, fileName) {
  const baseUrl = getBaseUrl();
  const link = document.createElement('a');
  link.href = baseUrl+url;
  link.download = fileName;
  document.body.appendChild(link); // 添加到 DOM
  link.click();
  window.URL.revokeObjectURL(url);
}
export default downloadFile;
src/utils/getBaseUrl.js
New file
@@ -0,0 +1,12 @@
function getBaseUrl() {
  let url = "";
  if (process.env.NODE_ENV == 'development') {
    // 跨域请求
    url = 'http://localhost:8108/pis/';
  } else {
    url = location.protocol + '//' + location.host + '/pis/';
  }
  return url;
}
export default getBaseUrl;
src/views/dcPowerStatus/dialog/addEdit.vue
@@ -3,7 +3,7 @@
import {ElLoading, ElMessageBox, ElMessage} from "element-plus";
import {setPwrStandParamApi} from "@/api/standardParams.js";
import useElement from "@/hooks/useElement.js";
const { $loading, $message, $confirm } = useElement();
const { $loading, $message } = useElement();
const formRef = ref();
const props = defineProps({
  info: {
@@ -16,7 +16,7 @@
        paramType: 1,
        basisVal: 0,
        alarmLimith: 0,
        alarmLimithUpeper: 0,
        alarmLimithUpper: 0,
        alarmLimitl: 0,
        alarmLimitlLower: 0,
        fileName: "",
@@ -33,7 +33,7 @@
  paramType: 1,
  basisVal: 0,
  alarmLimith: 0,
  alarmLimithUpeper: 0,
  alarmLimithUpper: 0,
  alarmLimitl: 0,
  alarmLimitlLower: 0,
  fileName: "",
@@ -47,7 +47,7 @@
      trigger: ["blur", "change"],
    },
  ],
  alarmLimithUpeper: [
  alarmLimithUpper: [
    {
      required: true,
      message: "不能为空",
@@ -122,11 +122,8 @@
}
async function setParams() {
  const info = JSON.parse(JSON.stringify(params));
  console.log(info);
  const loading = ElLoading.service({
    lock: true,
    text: '数据加载中...',
    background: 'rgba(0, 0, 0, 0.7)',
  const loading = $loading({
    text: "数据加载中..."
  });
  try {
@@ -158,7 +155,7 @@
}
function validatorH(rule, value, callback) {
  if(value<params.alarmLimithUpeper) {
  if(value<params.alarmLimithUpper) {
    callback();
  }else {
    callback(new Error('上限值需小于上上限值'));
@@ -191,7 +188,7 @@
        <el-row :gutter="layout.gutter">
          <el-col :span="layout.span">
            <el-form-item label="参数名称:">
              <el-input v-model="params.paramType"></el-input>
              <el-input v-model="params.standName" :disabled="true"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="layout.span">
@@ -200,8 +197,8 @@
            </el-form-item>
          </el-col>
          <el-col :span="layout.span">
            <el-form-item label="上上限:" prop="alarmLimithUpeper">
              <el-input v-model="params.alarmLimithUpeper"></el-input>
            <el-form-item label="上上限:" prop="alarmLimithUpper">
              <el-input v-model="params.alarmLimithUpper"></el-input>
            </el-form-item>
          </el-col>
          <el-col :span="layout.span">
src/views/dcPowerStatus/standardParams.vue
@@ -1,13 +1,16 @@
<script setup name="StandardParams">
import {ref, onMounted, computed} from "vue";
import {ElLoading} from "element-plus";
import ycCard from "@/components/ycCard/index.vue";
import TabButton from "@/components/TabButton/index.vue";
import HdwButton from "@/components/HdwButton/index.vue";
import NoData from "@/components/noData.vue";
import {getPwrStandParamApi} from "@/api/standardParams.js";
import {getPwrStandParamApi, getStandFileApi, uploadStandFileApi} from "@/api/standardParams.js";
import addEdit from "./dialog/addEdit.vue";
import useElement from "@/hooks/useElement.js";
import downloadFile from "@/utils/downloadFile.js";
import {ExportFile} from "@/utils/exportFile.js";
const {$loading, $message} = useElement();
const headers = [
  {
    prop: "standName",
@@ -30,7 +33,7 @@
    width: "80",
  },
  {
    prop: "alarmLimithUpeper",
    prop: "alarmLimithUpper",
    label: "上上限",
    width: "80",
  },
@@ -57,15 +60,9 @@
  searchData();
}
const searchText = ref("");
const downloadText =ref("");
const fileList = ref([]);
async function searchData() {
  const loading = ElLoading.service({
    lock: true,
    text: '数据加载中...',
    background: 'rgba(0, 0, 0, 0.7)',
  const loading = $loading({
    text: "数据加载中..."
  });
  try {
@@ -91,6 +88,97 @@
  selectInfo.value = info;
  addEditVisible.value = true;
}
const searchText = ref("");
const downloadText =ref("");
const fileList = ref([]);
const selectFile = ref({
  fileName: "",
  standFilePath: "",
});
async function searchFileList() {
  if(!searchText.value) {
    $message.warning("请输入文件名称");
    return;
  }
  const loading = $loading({
    text: "数据加载中..."
  });
  try {
    const rs = await getStandFileApi(searchText.value, acButton.value);
    loading.close();
    if(rs.code === 1 && rs.data) {
      fileList.value = rs.data2;
    }else {
      fileList.value = [];
    }
  }catch (e) {
    console.log(e);
    loading.close();
  }
}
function handleSelectFile(info) {
  console.log(info);
  selectFile.value = info;
}
function handleDownloadFile() {
  if(selectFile.value.standFilePath) {
    downloadFile(selectFile.value.standFilePath, "");
  }else {
    $message.warning("请选择下载的文件");
  }
}
function handleUploadFile(options) {
  console.log(selectInfo.value);
  const formData = new FormData();
  formData.append('multipartFile', options.file); // 添加文件到FormData中
  formData.append('num', selectInfo.value.num); // 添加额外参数
  const loading = $loading();
  uploadStandFileApi(formData).then(res=>{
    loading.close();
    if(res.code === 1 && res.data) {
      $message.success("上传成功!!!");
    }else {
      $message.warning("上传失败!!!");
    }
    searchData();
  }).catch(error=>{
    loading.close();
    console.log(error);
    $message.warning("上传失败,请联系管理员!!!");
  });
}
function changeSelectRow(info) {
  selectInfo.value = info;
}
/**
 * 导出表格数据
 */
function exportExcel() {
  if(!listRef.value.length) {
    $message.warning("无数据,不用导出");
    return;
  }
  let _headers = headers.map(v => {
    let prop = v.prop;
    let label = v.label;
    return {
      prop,
      label
    };
  });
  ExportFile(_headers, listRef.value, "标准参数管理");
}
onMounted(()=>{
  changeAcButton(acButton.value);
});
@@ -107,7 +195,7 @@
              <tab-button style="margin-left: 24px;" :active="acButton === 2" @click="changeAcButton(2)">通信电源</tab-button>
            </div>
            <div class="tools-right">
              <hdw-button>导出</hdw-button>
              <hdw-button @click="exportExcel">导出</hdw-button>
            </div>
          </div>
          <div class="page-content-table-wrapper">
@@ -121,7 +209,18 @@
                    <el-table-column label="操作" fixed="right" width="180" align="center">
                      <template #default="scope">
                        <el-button type="primary" size="small" @click="setParams(scope.row)">参数设定</el-button>
                        <el-button type="success" size="small">上传</el-button>
                        <div class="upload-file">
                          <el-upload
                            ref="uploadRef"
                            class="upload-demo"
                            action=""
                            :show-file-list="false"
                            :http-request="handleUploadFile">
                            <template #trigger>
                              <el-button type="success" size="small" @click="changeSelectRow(scope.row)">上传</el-button>
                            </template>
                          </el-upload>
                        </div>
                      </template>
                    </el-table-column>
                  </el-table>
@@ -132,17 +231,40 @@
              <div class="file-tools">
                <div class="file-tools-item">
                  <input class="file-tools-input" type="text" v-model="searchText" />
                  <hdw-button icon-class="search-data">查 询</hdw-button>
                  <hdw-button icon-class="search-data" @click="searchFileList">查 询</hdw-button>
                </div>
                <div class="file-tools-item bottom">
                  <input disabled class="file-tools-input" type="text" v-model="downloadText" />
                  <hdw-button type="warning" icon-class="download">下 载</hdw-button>
                  <input v-if="!selectFile.fileName" disabled class="file-tools-input" type="text" v-model="selectFile.fileName" />
                  <el-tooltip
                    v-else
                    class="box-item"
                    effect="dark"
                    :content="selectFile.fileName"
                    placement="top">
                    <input disabled class="file-tools-input" type="text" v-model="selectFile.fileName" />
                  </el-tooltip>
                  <hdw-button type="warning" icon-class="download" @click="handleDownloadFile">下 载</hdw-button>
                </div>
              </div>
              <div class="file-list-content">
                <div class="pos-rel">
                  <div class="pos-abs">
                    <el-scrollbar v-if="fileList.length !== 0"></el-scrollbar>
                    <el-scrollbar v-if="fileList.length !== 0">
                      <div class="file-list">
                        <div
                          class="file-item-wrapper"
                          v-for="(item, key) in fileList" :key="'key'+key"
                          @click="handleSelectFile(item)">
                          <el-tooltip
                            class="box-item"
                            effect="dark"
                            :content="item.fileName"
                            placement="left-start">
                            <div class="file-item">{{ item.fileName }}</div>
                          </el-tooltip>
                        </div>
                      </div>
                    </el-scrollbar>
                    <no-data v-else text="暂无规范文件"></no-data>
                  </div>
                </div>
@@ -165,6 +287,9 @@
      <add-edit
        v-model:close="addEditVisible"
        :info="selectInfo" @success="changeAcButton(acButton)"></add-edit>
    </el-dialog>
    <el-dialog title="文件上传">
    </el-dialog>
  </div>
</template>
@@ -267,4 +392,26 @@
    }
  }
}
.file-list {
  padding: 8px 0;
  user-select: none;
  .file-item-wrapper {
    padding: 8px;
    background-color: #1B4C79;
    cursor: pointer;
    margin-top: 4px;
    &:hover {
      font-weight: 700;
    }
    .file-item {
      font-size: 14px;
      white-space: nowrap;
    }
  }
}
.upload-file {
  display: inline-block;
  margin-left: 8px;
}
</style>