web
2025-07-03 a02a7acbcebc5ed668114087ea4256a44361a0c0
fix:修改准东取水后台配置,界面
已添加6个文件
已修改6个文件
677 ■■■■ 文件已修改
.env.development 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.staging 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/facility/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/financial/record.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/user/userArchive.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/customer/archives/index.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/customer/payRecord/index.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/customer/rechargeRecord/index.vue 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/customer/userCapitalChange/index.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/facility/facilityList/index.vue 177 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -1,12 +1,11 @@
# 页面标题
VITE_APP_TITLE = 后台管理系统
VITE_APP_TITLE = 取水管理系统
# 开发环境配置
VITE_APP_ENV = 'development'
# 图片地址
VITE_APP_IMG_BASEURL='http://113.250.189.120:8036/upload'
VITE_APP_IMG_BASEURL='http://192.168.0.67:8041/upload'
#后端本地
  VITE_APP_PUBLIC_REQUEST_API = 'http://113.250.189.120:8036'
  VITE_APP_PUBLIC_REQUEST_API = 'http://192.168.0.67:8041'
.env.production
@@ -1,14 +1,5 @@
###
 # @Author: web candymxq888@outlook.com
 # @Date: 2025-03-18 11:34:56
 # @LastEditors: web candymxq888@outlook.com
 # @LastEditTime: 2025-06-19 14:53:44
 # @FilePath: \temp\.env.production
 # @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
###
# 页面标题
    VITE_APP_TITLE = 后台管理系统
    VITE_APP_TITLE = 取水管理系统
# 开发环境配置
    VITE_APP_ENV = 'production'
.env.staging
@@ -1,6 +1,6 @@
# 页面标题
VITE_APP_TITLE = 后台管理系统
VITE_APP_TITLE = 取水管理系统
# 开发环境配置
VITE_APP_ENV = 'staging'
src/api/facility/index.js
@@ -1,11 +1,3 @@
/*
 * @Author: elkers
 * @Date: 2024-08-09 14:29:49
 * @LastEditors: hqs elkers@163.com
 * @LastEditTime: 2024-08-14 09:04:16
 * @FilePath: \water-qinghe-web\src\api\facility\index.js
 * @Description: 设备api
 */
import { publicRequest } from '@/utils/request'
export default function facilityApi() {
    return {
src/api/financial/record.js
对比新文件
@@ -0,0 +1,37 @@
/*
 * @Author: Liuyi candymxq888@outlook.com
 * @Date: 2024-10-16 11:13:48
 * @LastEditors: Liuyi candymxq888@outlook.com
 * @LastEditTime: 2024-10-17 09:38:23
 * @FilePath: \water-drinking-web\src\api\financial\payRecord.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import { publicRequest } from '@/utils/request'
export default function record(){
    return {
        //充值记录
        rechargeSearch: (data) => {
            return publicRequest({
                url: '/rechargeRecords/search',
                method: 'post',
                data,
            });
        },
        //缴费记录
        paySearch: (data) => {
            return publicRequest({
                url: '/paymentRecords/search',
                method: 'post',
                data,
            });
        },
        //资金明细记录
        capitalSearch: (data) => {
            return publicRequest({
                url: '/userCapitalChange/search',
                method: 'post',
                data,
            });
        },
    };
}
src/api/user/userArchive.js
对比新文件
@@ -0,0 +1,37 @@
/*
 * @Author: Liuyi candymxq888@outlook.com
 * @Date: 2024-10-17 15:32:00
 * @LastEditors: web candymxq888@outlook.com
 * @LastEditTime: 2025-07-03 15:24:51
 * @FilePath: \water-drinking-web\src\api\user\userArchive.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A
 */
import { publicRequest } from '@/utils/request'
export default function userArchive(){
    return {
        //查询用户档案
        search: (data) => {
            return publicRequest({
                url: '/user/search',
                method: 'post',
                data,
            });
        },
        //查询用户水卡信息
        cardSearch: (data) => {
            return publicRequest({
                url: '/userCard/search',
                method: 'post',
                data,
            });
        },
        //查询用户水卡信息
        userAddressSearch: (data) => {
            return publicRequest({
                url: '/userAddress/search',
                method: 'post',
                data,
            });
        },
    };
}
src/router/index.js
@@ -2,7 +2,7 @@
 * @Author: Liuyi candymxq888@outlook.com
 * @Date: 2024-08-06 14:47:41
 * @LastEditors: web candymxq888@outlook.com
 * @LastEditTime: 2025-07-02 16:23:08
 * @LastEditTime: 2025-07-03 16:28:10
 * @FilePath: \water-qinghe-web\src\router\index.js
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
@@ -33,7 +33,6 @@
  {
    path: '/',
    hidden: true,
    redirect: '/userCenter',
  },
  {
    path: '/login',
src/views/customer/archives/index.vue
对比新文件
@@ -0,0 +1,108 @@
 <script setup>
 import  userArchive from "@/api/user/userArchive.js";
 import setPostParams from "../../../utils/searchParams.js";
 const { proxy } = getCurrentInstance();
/**
 * 搜索相关
 */
 /** 搜索按钮操作 */
 function handleQuery() {
   getList({keywords:searchParams.value.keywords})
 }
 /** 重置按钮操作 */
 function resetQuery() {
   proxy.resetForm("queryRef");
   handleQuery();
 }
 /**
  *  Table表格权限数据列表相关
  */
const pageParam = ref({
    total:0,
    limit:0,
    page:1,
})
const tableData = ref([]);
let  tableHeader = ref({
      userCode: '用户编号',
      nickName: '用户名称',
      phone: '电话',
      headImg: '头像',
      comment: '备注',
      createTimeView: '创建时间',
})
 /** 获取列表 */
 const loading = ref(false)
 async function getList(val) {
      loading.value = true;
 let postParam = setPostParams(val)
      await userArchive().search(postParam).then((res) =>{
         res.data.list.forEach((item) =>{
            item.userTypeLabel = item.userType == 1 ? '会员' : (item.userType == 0 ? '游客' : '')
         })
        tableData.value = res.data.list
        pageParam.value.total = res.data.total
        pageParam.value.limit = res.data.limit
        pageParam.value.page = res.data.page
    })
    loading.value = false;
 }
const searchParams = ref({
    keywords: '',
});
 getList();
 </script>
 <template>
    <div class="app-container">
       <el-form :model="searchParams" ref="queryRef" :inline="true">
          <el-form-item label="" prop="">
             <el-input
                v-model="searchParams.keywords"
                placeholder="请输入搜索信息"
                clearable
                style="width: 200px"
                @keyup.enter="handleQuery"
             />
          </el-form-item>
          <el-form-item>
             <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
             <el-button icon="Refresh" @click="resetQuery">重置</el-button>
          </el-form-item>
       </el-form>
       <!--表格及分页-->
       <el-table v-loading="loading" :data="tableData">
          <el-table-column
            v-for="(item, key, index) of tableHeader"
            :prop="key.toString()"
            :label="item"
            :key="index"
            align="center"
          >
          <template #default="scope">
                <div v-if="key.toString() == 'headImg'" style="width: 50px;height: 50px;margin: 0 auto">
                    <img :src="scope.row.headImg" class="table-headImg"/>
                </div>
            </template>
        </el-table-column>
        </el-table>
        <pagination
          :total="pageParam.total"
          v-model:page="pageParam.page"
          v-model:limit="pageParam.limit"
          :page-sizes="[10,20,30]"
          @pagination="getList"
        />
    </div>
 </template>
 <style lang="scss" scoped>
</style>
src/views/customer/payRecord/index.vue
对比新文件
@@ -0,0 +1,99 @@
<script setup >
import  record from "@/api/financial/record.js";
import setPostParams from "../../../utils/searchParams.js";
const { proxy } = getCurrentInstance();
/**
* 搜索相关
*/
const queryParams =ref({
   name: undefined,
},)
/** 搜索按钮操作 */
function handleQuery() {
  getList({keywords:queryParams.value.name})
}
/** 重置按钮操作 */
function resetQuery() {
  proxy.resetForm("queryRef");
  handleQuery();
}
/**
 *  Table表格权限数据列表相关
 */
const pageParam = ref({
   total:0,
   limit:0,
   page:0,
})
const tableData = ref([]);
let  tableHeader = ref({
        userName: '用户名称',
        paymentAmount:'消费金额',
        payStatusLabel: '缴费状态',//payStatus
        waterAmount: '本次出水量',
        waterSeconds: '本次出水秒数',
        balance: '剩余水量',
        payTime: '支付时间',
        facilityCode: '设备编号',
        comment: '备注',
  })
/** 获取列表 */
const loading = ref(false);
async function getList(val) {
     loading.value = true;
let postParam = setPostParams(val)
     await record().paySearch(postParam).then((res) =>{
       res.data.list.forEach(item => {
         item.payStatusLabel = item.payStatus == 200 ? '缴费成功' : (item.payStatus == 102 ? '缴费中' : (item.payStatus == 100 ) ? '待缴费' : '')
       });
       tableData.value = res.data.list
       pageParam.value.total = res.data.total
       pageParam.value.limit = res.data.limit
       pageParam.value.page = res.data.page
   })
   loading.value = false;
}
getList();
</script>
<template>
  <div class="app-container">
     <el-form :model="queryParams" ref="queryRef" :inline="true">
        <el-form-item prop="name">
           <el-input
              v-model="queryParams.name"
              placeholder="请输入内容"
              clearable
              style="width: 200px"
              @keyup.enter="handleQuery"
           />
        </el-form-item>
        <el-form-item>
           <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
           <el-button icon="Refresh" @click="resetQuery">重置</el-button>
        </el-form-item>
     </el-form>
     <!--表格及分页-->
     <el-table v-loading="loading" :data="tableData">
        <el-table-column
          v-for="(item, key, index) of tableHeader"
          :prop="key.toString()"
          :label="item"
          :key="index"
          align="center"
        ></el-table-column>
      </el-table>
      <pagination
        :total="pageParam.total"
        v-model:page="pageParam.page"
        v-model:limit="pageParam.limit"
        :page-sizes="[10,20,30]"
        @pagination="getList"
      />
  </div>
</template>
src/views/customer/rechargeRecord/index.vue
对比新文件
@@ -0,0 +1,98 @@
 <script setup >
 import  record from "@/api/financial/record.js";
 import setPostParams from "../../../utils/searchParams.js";
 const { proxy } = getCurrentInstance();
/**
 * 搜索相关
 */
 const queryParams =ref({
    name: undefined,
},)
 /** 搜索按钮操作 */
 function handleQuery() {
   getList({keywords:queryParams.value.name})
 }
 /** 重置按钮操作 */
 function resetQuery() {
   proxy.resetForm("queryRef");
   handleQuery();
 }
 /**
  *  Table表格权限数据列表相关
  */
const pageParam = ref({
    total:0,
    limit:0,
    page:0,
})
const tableData = ref([]);
let  tableHeader = ref({
      rechargeOrder: '充值订单号',
      rechargeType: '充值类型',
      paymentMethod: '支付方式',
      rechargeAmount: '充值金额',
      rechargeStatusLabel: '状态',//rechargeStatus
      comment: '备注',
      createTimeView: '创建时间',
   })
 /** 获取列表 */
const loading = ref(false);
 async function getList(val) {
      loading.value = true;
 let postParam = setPostParams(val)
      await record().rechargeSearch(postParam).then((res) =>{
        res.data.list.forEach(item => {
          item.rechargeStatusLabel = item.rechargeStatus == 1 ? '已充值' : '未充值'
        });
        tableData.value = res.data.list
        pageParam.value.total = res.data.total
        pageParam.value.limit = res.data.limit
        pageParam.value.page = res.data.page
    })
    loading.value = false;
 }
 getList();
 </script>
 <template>
   <div class="app-container">
      <el-form :model="queryParams" ref="queryRef" :inline="true">
         <el-form-item prop="name">
            <el-input
               v-model="queryParams.name"
               placeholder="请输入内容"
               clearable
               style="width: 200px"
               @keyup.enter="handleQuery"
            />
         </el-form-item>
         <el-form-item>
            <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
            <el-button icon="Refresh" @click="resetQuery">重置</el-button>
         </el-form-item>
      </el-form>
      <!--表格及分页-->
      <el-table v-loading="loading" :data="tableData">
         <el-table-column
           v-for="(item, key, index) of tableHeader"
           :prop="key.toString()"
           :label="item"
           :key="index"
           align="center"
         ></el-table-column>
       </el-table>
       <pagination
         :total="pageParam.total"
         v-model:page="pageParam.page"
         v-model:limit="pageParam.limit"
         :page-sizes="[10,20,30]"
         @pagination="getList"
       />
   </div>
</template>
src/views/customer/userCapitalChange/index.vue
对比新文件
@@ -0,0 +1,90 @@
 <script setup >
 import  record from "@/api/financial/record.js";
 import setPostParams from "../../../utils/searchParams.js";
 const { proxy } = getCurrentInstance();
/**
 * 搜索相关
 */
 const queryParams =ref({
    name: undefined,
},)
 /** 搜索按钮操作 */
 function handleQuery() {
   getList({keywords:queryParams.value.name})
 }
 /** 重置按钮操作 */
 function resetQuery() {
   proxy.resetForm("queryRef");
   handleQuery();
 }
 /**
  *  Table表格权限数据列表相关
  */
const pageParam = ref({
    total:0,
    limit:0,
    page:0,
})
const tableData = ref([]);
let  tableHeader = ref({
        businessCode: '户号',
        changeMoney: '变动金额',
        afterMoney: '余额',
        description: '描述',
        createTimeView: '创建时间',
})
 /** 获取列表 */
const loading = ref(false);
 async function getList(val) {
      loading.value = true;
     let postParam = setPostParams(val)
      await record().capitalSearch(postParam).then((res) =>{
        tableData.value = res.data.list
        pageParam.value.total = res.data.total
        pageParam.value.limit = res.data.limit
        pageParam.value.page = res.data.page
    })
    loading.value = false;
 }
 getList();
 </script>
 <template>
   <div class="app-container">
      <el-form :model="queryParams" ref="queryRef" :inline="true">
         <el-form-item  prop="name">
            <el-input
               v-model="queryParams.name"
               placeholder="请输入内容"
               clearable
               style="width: 200px"
               @keyup.enter="handleQuery"
            />
         </el-form-item>
         <el-form-item>
            <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
            <el-button icon="Refresh" @click="resetQuery">重置</el-button>
         </el-form-item>
      </el-form>
      <!--表格及分页-->
      <el-table v-loading="loading" :data="tableData">
         <el-table-column
           v-for="(item, key, index) of tableHeader"
           :prop="key.toString()"
           :label="item"
           :key="index"
           align="center"
         ></el-table-column>
       </el-table>
       <pagination
         :total="pageParam.total"
         v-model:page="pageParam.page"
         v-model:limit="pageParam.limit"
         :page-sizes="[10,20,30]"
         @pagination="getList"
       />
   </div>
</template>
src/views/facility/facilityList/index.vue
@@ -1,9 +1,5 @@
<script setup>
import facilityApi from "@/api/facility/index";
import pointApi from "@/api/facility/point";
import facilityTypeApi from "@/api/facility/facilityType.js";
import commonParameters from "@/api/configuration/commonParameters/index.js";
import waterFacilityParameter from "@/api/facility/parameter.js";
import setPostParams from "@/utils/searchParams.js";
import {onMounted} from "vue";
@@ -38,9 +34,10 @@
let tableHeader = ref({
    facilityCode: '设备编号',
    facilityName: '设备名称',
    facilityTypeName: '设备类型',
    pointName: '设备监控点',
    longitude: '经度',
    latitude: '纬度',
    facilityUrl: '设备图片',
    address: '设备地址',
    installDate: '安装日期',
})
@@ -61,71 +58,23 @@
const formLabel = ({
    facilityCode: '设备编号',
    facilityName: '设备名称',
    facilityType: '设备类型',
    pointId: '设备监控点',
    longitude: '经度',
    latitude: '纬度',
    facilityUrl: '设备图片',
    remark: '备注信息',
    createTimeView: '创建时间'
    address: '设备地址',
    installDate: '安装时间'
})
const rules = ref({
    facilityCode: [{required: true, message: `${inpTip + formLabel.facilityCode}`, trigger: "blur"}],
    facilityName: [{required: true, message: `${inpTip + formLabel.facilityName}`, trigger: "blur"}],
    facilityType: [{required: true, message: `${inpTip + formLabel.facilityTypeName}`, trigger: "blur"}],
    pointId: [{required: true, message: `${inpTip + formLabel.pointName}`, trigger: "blur"}],
    supplier: [{required: true, message: `${inpTip + formLabel.supplier}`, trigger: "blur"}],
    longitude: [{required: true, message: `${inpTip + formLabel.longitude}`, trigger: "blur"}],
    latitude: [{required: true, message: `${inpTip + formLabel.latitude}`, trigger: "blur"}],
    address: [{required: true, message: `${inpTip + formLabel.address}`, trigger: "blur"}],
});
const form = ref({});
const searchParams = ref({
    keywords: '',
});
//查询监控点
const pointList = ref();
const cascaderOption = {
    label: 'pointName',
    value: 'id',
    children: 'childrenList',
    checkStrictly: true,
    expandTrigger: 'hover',
    emitPath: false
}; //级联选择器配置
const getPoint = async () => {
    await pointApi().getParentPoint().then((res) => {
        pointList.value = res.data
    })
}
//查询设备类型
const facilityTypeList = ref();
const getFacilityTypeList = async () => {
    await facilityTypeApi().search({limit: 100, page: 1}).then((res) => {
        facilityTypeList.value = res.data.list
    })
}
//获取参数列表数据
//设备参数table
const tableParamData = ref([]);
const getParamList = async () => {
    await commonParameters().search({limit: 10000, page: 1}).then((res) => {
        tableParamData.value = res.data.list;
    })
}
//获取已绑定参数数据
const getSelectParamList = async (val) => {
    await waterFacilityParameter().getParam(val).then((res) => {
        const data = res.data
        console.log("参数列表", data)
        if (data.length > 0) {
            data.forEach(item => {
                tableParamData.value.forEach((tableItem) => {
                    if (item.columnsCode == tableItem.mark) {
                        tableRef.value.toggleRowSelection(tableItem, undefined)
                    }
                })
            })
        }
    })
}
/** 新增按钮操作 */
async function handleAdd() {
@@ -165,56 +114,10 @@
 *  新增/修改弹窗Form表单相关
 */
//设备参数弹窗
const tableRef = ref()
const openParamForm = ref(false)
const open = ref(false);
const title = ref("");
const isDetail = ref(false);
const multipleSelection = ref([])
let tableParamHeader = ref({
    name: '参数名称',
    mark: '参数标识',
    unit: '参数单位',
})
/**
 * 绑定相关
 */
//绑定数据
const facilityData = ref({
    facilityId: '',
    parameterList: []
})
//已选择设备参数
const handleSelectionParams = (val) => {
    multipleSelection.value = val
}
/**
 * 设备参数操作相关
 */
//提交绑定
const handleSubmit = async () => {
    multipleSelection.value.forEach((item) => {
        facilityData.value.parameterList.push({
            columnsCode: item.mark,
            columnsShow: item.name,
            columnsUnits: item.unit,
        })
    })
    let res = await waterFacilityParameter().create(facilityData.value)
    if (res.code == 200) {
        proxy.$modal.msgSuccess('绑定成功!')
        facilityData.value.parameterList = []
        openParamForm.value = false
        tableRef.value.clearSelection()
    } else {
        proxy.$modal.msgError('绑定失败!')
        openParamForm.value = false
        tableRef.value.clearSelection()
    }
}
//上传文件,添加图片地址信息
const uploadData = (data) => {
    form.value.facilityUrl = data.toString();
@@ -253,16 +156,7 @@
/** 取消按钮 */
function cancel() {
    open.value = false;
    openParamForm.value = false;
    reset();
}
/** 绑定按钮操作 */
const handleband = async (row) => {
    facilityData.value.facilityId = row.id
    await getParamList()
    getSelectParamList(row.id)
    openParamForm.value = true
}
/** 表单重置 */
@@ -270,10 +164,10 @@
    form.value = {
        facilityCode: '',
        facilityName: '',
        facilityType: '',
        pointId: '',
        longitude: '',
        latitude: '',
        facilityUrl: '',
        remark: '',
        address: '',
        installDate: ''
    };
    proxy.resetForm("facilityTypeRef");
@@ -281,8 +175,6 @@
onMounted(() => {
    getList();
    getPoint()
    getFacilityTypeList()
})
</script>
@@ -332,7 +224,6 @@
            </el-table-column>
            <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
                <template #default="scope">
                    <el-button link type="primary" icon="Edit" @click="handleband(scope.row)">参数绑定</el-button>
                    <el-button link type="primary" icon="Edit" v-has="['update',route]"
                               @click="handleUpdate(scope.row)">修改
                    </el-button>
@@ -358,19 +249,14 @@
                <el-form-item :label="formLabel.facilityName" prop="facilityName">
                    <el-input v-model="form.facilityName" :placeholder="inpTip+formLabel.facilityName"/>
                </el-form-item>
                <el-form-item label="选择设备类型" prop="facilityType">
                    <el-select v-model="form.facilityType" :placeholder="inpTip+formLabel.facilityType">
                        <el-option
                            v-for="(item,index) in facilityTypeList"
                            :label="item.name"
                            :value="item.id"
                            :key="index"
                        ></el-option>
                    </el-select>
                <el-form-item :label="formLabel.longitude" prop="longitude">
                    <el-input v-model="form.longitude" :placeholder="inpTip+formLabel.longitude"/>
                </el-form-item>
                <el-form-item label="选择监控点" prop="pointId">
                    <el-cascader v-model="form.pointId" :options="pointList" :show-all-levels="false"
                                 :props="cascaderOption"/>
                <el-form-item :label="formLabel.latitude" prop="latitude">
                    <el-input v-model="form.latitude" :placeholder="inpTip+formLabel.latitude"/>
                </el-form-item>
                <el-form-item :label="formLabel.address" prop="address">
                    <el-input v-model="form.address" :placeholder="inpTip+formLabel.address"/>
                </el-form-item>
                <el-form-item label="安装日期" prop="installDate">
                    <el-date-picker
@@ -382,9 +268,6 @@
                        :disabled="isDetail ? true : false"
                    />
                </el-form-item>
                <el-form-item :label="formLabel.remark" prop="remark">
                    <el-input v-model="form.remark" :placeholder="inpTip+formLabel.remark"/>
                </el-form-item>
                <el-form-item label="资料上传" prop="facilityUrl" style="flex: 1">
                    <upload-icons @uploadData="uploadData" :imageList="form.facilityUrl" :limit="1"></upload-icons>
                    <span style="display: block;">(请上传1张设备图片)</span>
@@ -393,26 +276,6 @@
            <template #footer>
                <div class="dialog-footer">
                    <el-button type="primary" @click="submitForm">确 定</el-button>
                    <el-button @click="cancel">取 消</el-button>
                </div>
            </template>
        </el-dialog>
        <!-- 设备参数弹窗 -->
        <el-dialog title="设备参数" v-model="openParamForm" width="50vw" center align-center append-to-body>
            <!--表格-->
            <el-table ref='tableRef' :data="tableParamData" height="75vh" @selection-change="handleSelectionParams">
                <el-table-column type="selection" width="55" align="center"/>
                <el-table-column
                    v-for="(item, key, index) of tableParamHeader"
                    :prop="key.toString()"
                    :label="item"
                    :key="index"
                    align="center"
                ></el-table-column>
            </el-table>
            <template #footer>
                <div class="dialog-footer">
                    <el-button type="primary" @click="handleSubmit">确认绑定</el-button>
                    <el-button @click="cancel">取 消</el-button>
                </div>
            </template>