From 98247bb0b4da9a322c97867262c1a76c53ace520 Mon Sep 17 00:00:00 2001
From: web <candymxq888@outlook.com>
Date: 星期三, 26 三月 2025 17:05:18 +0800
Subject: [PATCH] fix: 生态报表

---
 src/views/facility/monitorList/index.vue |  433 +++++++++++++++++++++++++++---------------------------
 1 files changed, 216 insertions(+), 217 deletions(-)

diff --git a/src/views/facility/monitorList/index.vue b/src/views/facility/monitorList/index.vue
index 990ed08..5a75b87 100644
--- a/src/views/facility/monitorList/index.vue
+++ b/src/views/facility/monitorList/index.vue
@@ -13,19 +13,20 @@
 
 const route = useRoute();
 const {proxy} = getCurrentInstance();
+const imgBaseUrl = import.meta.env.VITE_APP_IMG_BASEURL //图片前缀
 
 /**
  * 搜索相关
  */
 /** 搜索按钮操作 */
 function handleQuery() {
-  getList({keywords: searchParams.value.keywords})
+    getList({keywords: searchParams.value.keywords})
 }
 
 /** 重置按钮操作 */
 function resetQuery() {
-  proxy.resetForm("queryRef");
-  handleQuery();
+    proxy.resetForm("queryRef");
+    handleQuery();
 }
 
 /**
@@ -33,108 +34,110 @@
  */
 
 const pageParam = ref({
-  total: 0,
-  limit: 0,
-  page: 1,
+    total: 0,
+    limit: 0,
+    page: 1,
 })
 const tableData = ref([]);
 
 let tableHeader = ref({
-  pointName: '监控点名称',
-  pointCode: '监控点编号',
-  pointType: '监控类型',
-  address: '详细地址',
-  createTimeView: '创建时间',
-  imageUrl: '图片',
-  remark: '备注'
+    pointName: '监控点名称',
+    pointCode: '监控点编号',
+    pointType: '监控类型',
+    address: '详细地址',
+    createTimeView: '创建时间',
+    imageUrl: '图片',
+    remark: '备注'
 })
 
 /** 获取权限列表 */
 async function getList(val) {
-  loading.value = true;
-  let postParam = setPostParams(val)
-  await pointApi().search({...postParam, ...searchParams.value}).then((res) => {
-    monityList.value = res.data.list;
-    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;
+    loading.value = true;
+    let postParam = setPostParams(val)
+    await pointApi().search({...postParam, ...searchParams.value}).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;
 }
 
 /**
  *  表单相关
  */
 const formLabel = ({
-  pointName: '监控点名称',
-  pointCode: '监控点编号',
-  pointType: '监控点类型',
-  parentId: '父级监控点',
-  address: '详细地址',
-  imageUrl: '图片',
-  remark: '备注'
+    pointName: '监控点名称',
+    pointCode: '监控点编号',
+    pointType: '监控点类型',
+    parentId: '父级监控点',
+    address: '详细地址',
+    imageUrl: '图片',
+    remark: '备注'
 })
 const rules = ref({
-  pointName: [{required: true, message: `请输入${formLabel.pointName}`, trigger: "blur"}],
-  pointCode: [{required: true, message: `请输入${formLabel.address}`, trigger: "blur"}],
-  pointType: [{required: true, message: `请输入${formLabel.pointType}`, trigger: "blur"}],
+    pointName: [{required: true, message: `请输入${formLabel.pointName}`, trigger: "blur"}],
+    pointCode: [{required: true, message: `请输入${formLabel.address}`, trigger: "blur"}],
+    pointType: [{required: true, message: `请输入${formLabel.pointType}`, trigger: "blur"}],
 });
 const form = ref({
-  pointName: '',
-  pointCode: '',
-  pointType: '',
-  parentId: '',
-  address: '',
-  imageUrl: '',
-  remark: ''
+    pointName: '',
+    pointCode: '',
+    pointType: '',
+    parentId: '',
+    address: '',
+    imageUrl: '',
+    remark: ''
 });
 const searchParams = ref({
-  keywords: '',
+    keywords: '',
 });
 // 监控点列表
 const monityList = ref([]);
 // 监控点类型
-const monityTypeList = ref([]);
+const monityTypeList = [
+    {id: 1, name: '水温监测点'},
+    {id: 2, name: '生态流量监测点'}
+];
+const cascaderOption = { label: 'pointName', value: 'id', children: 'childrenList', checkStrictly: true, expandTrigger: 'hover', emitPath: false }; //级联选择器配置
 
 /** 新增按钮操作 */
 async function handleAdd() {
-  reset();
-  open.value = true;
-  title.value = "新增";
+    reset();
+    open.value = true;
+    title.value = "新增";
 }
 
 /** 修改按钮操作 */
 async function handleUpdate(row) {
-  reset();
-  Object.keys(form.value).forEach(key => {
-    if (row.hasOwnProperty(key)) {
-      form.value[key] = row[key];
-    }
-  });
-  form.value.id = row.id
-  open.value = true;
-  title.value = "修改";
+    reset();
+    Object.keys(form.value).forEach(key => {
+        if (row.hasOwnProperty(key)) {
+            form.value[key] = row[key];
+        }
+    });
+    form.value.id = row.id
+    open.value = true;
+    title.value = "修改";
 }
 
 /** 删除按钮操作 */
 function handleDelete(row) {
-  proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function () {
-    // return pointApi().remove(row.id);
-  }).then(() => {
-    getList();
-    proxy.$modal.msgSuccess("删除成功");
-  }).catch(() => {
-  });
+    proxy.$modal.confirm('是否确认删除名称为"' + row.contact + '"的数据项?').then(function () {
+        // return pointApi().remove(row.id);
+    }).then(() => {
+        getList();
+        proxy.$modal.msgSuccess("删除成功");
+    }).catch(() => {
+    });
 }
 
 
-// 获取监控点类型
-const getMonitryType = () => {
-  monityTypeList.value = [
-      {id: 1, name: '水温监测点'},
-      {id: 2, name: '生态流量监测点'}
-     ]
+// 获取监控点列表
+const getMonitryList = () => {
+    pointApi().getParentPoint().then(res => {
+        monityList.value = res.data;
+    })
 }
 
 /**
@@ -146,179 +149,175 @@
 
 //上传文件,添加图片地址信息
 const uploadData = (data) => {
-  form.value.imageUrl = data.toString();
+    form.value.imageUrl = imgBaseUrl + data.toString();
 }
 
 /** 提交按钮 */
 function submitForm() {
-  proxy.$refs["formRef"].validate(valid => {
-    if (valid) {
-      if (form.value.id != undefined) {
-        pointApi().modify(form.value).then(res => {
-          proxy.$modal.msgSuccess("修改成功");
-          open.value = false;
-          getList();
-        }).catch(() => {
-          open.value = false;
-          proxy.$modal.msgError("修改失败");
-        });
-      } else {
-        pointApi().create(form.value).then(res => {
-          proxy.$modal.msgSuccess("新增成功");
-          open.value = false;
-          getList();
-        }).catch(() => {
-          open.value = false;
-          proxy.$modal.msgError("新增失败");
-        });
-      }
-    }
-  });
+    proxy.$refs["formRef"].validate(valid => {
+        if (valid) {
+            if (form.value.id != undefined) {
+                pointApi().modify(form.value).then(res => {
+                    proxy.$modal.msgSuccess("修改成功");
+                    open.value = false;
+                    getList();
+                }).catch(() => {
+                    open.value = false;
+                    proxy.$modal.msgError("修改失败");
+                });
+            } else {
+                pointApi().create(form.value).then(res => {
+                    proxy.$modal.msgSuccess("新增成功");
+                    open.value = false;
+                    getList();
+                }).catch(() => {
+                    open.value = false;
+                    proxy.$modal.msgError("新增失败");
+                });
+            }
+        }
+    });
 }
 
 /** 取消按钮 */
 function cancel() {
-  open.value = false;
-  reset();
+    open.value = false;
+    reset();
 }
 
 /** 表单重置 */
 function reset() {
-  form.value = {
-    parentId: '',
-    pointName: '',
-    pointCode: '',
-    pointType: '',
-    address: '',
-    imageUrl: '',
-    remark: ''
-  };
-  proxy.resetForm("formRef");
+    form.value = {
+        parentId: '',
+        pointName: '',
+        pointCode: '',
+        pointType: '',
+        address: '',
+        imageUrl: '',
+        remark: ''
+    };
+    proxy.resetForm("formRef");
 }
 
 onMounted(() => {
-  getMonitryType();
-  getList();
+    getList();
+    getMonitryList();
 })
 </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>
+    <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-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button
-            type="primary"
-            plain
-            icon="Plus"
-            @click="handleAdd"
-        >新增
-        </el-button>
-      </el-col>
-    </el-row>
-    <!--表格及分页-->
-    <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 === 'imageUrl'">
-            <img :src="scope.row.headImg" class="table-headImg"/>
-          </div>
-          <div v-else-if="key === 'pointType'">
-            {{ scope.row.pointType === 1 ? '水温监测点' : '生态流量监测点' }}
-          </div>
-        </template>
-      </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" v-has="['update',route]"
-                     @click="handleUpdate(scope.row)">修改
-          </el-button>
-          <el-button link type="primary" icon="Delete" v-has="['delete',route]"
-                     @click="handleDelete(scope.row)">删除
-          </el-button>
-        </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"
-    />
-    <!-- 添加/修改表单 -->
-    <el-dialog :title="title" v-model="open" append-to-body center>
-      <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'>
-        <el-form-item :label="formLabel.parentId" prop="parentId">
-          <el-select v-model="form.parentId" :placeholder="'请输入'+formLabel.parentId">
-            <el-option
-                v-for="(item,index) in monityList"
-                :label="item.pointName"
-                :value="item.id"
+        <el-row :gutter="10" class="mb8">
+            <el-col :span="1.5">
+                <el-button
+                    type="primary"
+                    plain
+                    icon="Plus"
+                    @click="handleAdd"
+                >新增
+                </el-button>
+            </el-col>
+        </el-row>
+        <!--表格及分页-->
+        <el-table v-loading="loading" :data="tableData">
+            <el-table-column
+                v-for="(item, key, index) of tableHeader"
+                :prop="key.toString()"
+                :label="item"
                 :key="index"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item :label="formLabel.pointType" prop="pointType">
-          <el-select v-model="form.pointType" :placeholder="'请输入'+formLabel.pointType">
-            <el-option
-                v-for="(item,index) in monityTypeList"
-                :label="item.name"
-                :value="item.id"
-                :key="index"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item :label="formLabel.pointName" prop="pointName">
-          <el-input v-model="form.pointName" :placeholder="'请输入'+formLabel.pointName"/>
-        </el-form-item>
-        <el-form-item :label="formLabel.pointCode" prop="pointCode">
-          <el-input v-model="form.pointCode" :placeholder="'请输入'+formLabel.pointCode"/>
-        </el-form-item>
-        <el-form-item :label="formLabel.address" prop="address">
-          <el-input v-model="form.address" :placeholder="'请输入'+formLabel.address"/>
-        </el-form-item>
-        <el-form-item :label="formLabel.remark" prop="address">
-          <el-input v-model="form.remark" :placeholder="'请输入'+formLabel.remark"/>
-        </el-form-item>
-<!--        <el-form-item></el-form-item>-->
-        <el-form-item label="图片" prop="imageUrl" style="flex: 1">
-          <upload-icons @uploadData="uploadData" :imageList="form.imageUrl" :limit="1"></upload-icons>
-          <span style="display: block;">(请上传1张设备图片)</span>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <div class="dialog-footer">
-          <el-button type="primary" @click="submitForm">确 定</el-button>
-          <el-button @click="cancel">取 消</el-button>
-        </div>
-      </template>
-    </el-dialog>
-  </div>
+                align="center"
+            >
+                <template #default="scope">
+                    <div v-if="key === 'imageUrl'">
+                        <img :src="imgBaseUrl + scope.row.headImg" class="table-headImg" alt="" />
+                    </div>
+                    <div v-else-if="key === 'pointType'">
+                        {{ scope.row.pointType === 1 ? '水温监测点' : '生态流量监测点' }}
+                    </div>
+                </template>
+            </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" v-has="['update',route]"
+                               @click="handleUpdate(scope.row)">修改
+                    </el-button>
+                    <el-button link type="primary" icon="Delete" v-has="['delete',route]"
+                               @click="handleDelete(scope.row)">删除
+                    </el-button>
+                </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"
+        />
+        <!-- 添加/修改表单 -->
+        <el-dialog :title="title" v-model="open" append-to-body center>
+            <el-form class="form-box" ref="formRef" :model="form" :rules="rules" label-width='auto'>
+                <el-form-item :label="formLabel.parentId" prop="parentId">
+                    <el-cascader v-model="form.parentId" :options="monityList" :show-all-levels="false" :props="cascaderOption" />
+                </el-form-item>
+                <el-form-item :label="formLabel.pointType" prop="pointType">
+                    <el-select v-model="form.pointType" :placeholder="'请输入'+formLabel.pointType">
+                        <el-option
+                            v-for="(item,index) in monityTypeList"
+                            :label="item.name"
+                            :value="item.id"
+                            :key="index"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item :label="formLabel.pointName" prop="pointName">
+                    <el-input v-model="form.pointName" :placeholder="'请输入'+formLabel.pointName"/>
+                </el-form-item>
+                <el-form-item :label="formLabel.pointCode" prop="pointCode">
+                    <el-input v-model="form.pointCode" :placeholder="'请输入'+formLabel.pointCode"/>
+                </el-form-item>
+                <el-form-item :label="formLabel.address" prop="address">
+                    <el-input v-model="form.address" :placeholder="'请输入'+formLabel.address"/>
+                </el-form-item>
+                <el-form-item :label="formLabel.remark" prop="address">
+                    <el-input v-model="form.remark" :placeholder="'请输入'+formLabel.remark"/>
+                </el-form-item>
+                <!--        <el-form-item></el-form-item>-->
+                <el-form-item label="图片" prop="imageUrl" style="flex: 1">
+                    <upload-icons @uploadData="uploadData" :imageList="form.imageUrl" :limit="1"></upload-icons>
+                    <span style="display: block;">(请上传1张设备图片)</span>
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <div class="dialog-footer">
+                    <el-button type="primary" @click="submitForm">确 定</el-button>
+                    <el-button @click="cancel">取 消</el-button>
+                </div>
+            </template>
+        </el-dialog>
+    </div>
 </template>
 
 <style lang="scss" scoped>
 .form-box {
-  justify-content: normal;
+    justify-content: normal;
+    :deep(.el-cascader){
+        flex-grow: 1;
+    }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3