hejianhao
2026-01-27 92ffe53376e9b80fc94a2f9fe2280438165b4ef7
fix: 修复文件下载路径和客户端选择参数等问题

- 更新环境变量和前端代码中的文件下载路径从 `/public/file/download/` 到 `/project/download/`
- 修复客户端选择接口参数从 `title` 改为 `keyword`
- 修正事故信息表单日期选择器格式为仅日期
- 修复委托方类型选择选项使用新的映射方法
- 添加密码重置时的确认密码校验
- 更新项目类型和用途类型映射使用新常量
- 调整事故信息表格中时间字段的显示格式
- 修复客户端Logo显示路径拼接问题
- 更新API基础URL为本地开发地址
15个文件已修改
292 ■■■■■ 已修改文件
estate-frontend-v2024/src/api/projects.js 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/views/business/clientInfo.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/views/business/onDuty.jsx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/views/business/projects.jsx 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/views/common/constants.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/views/layout/Header/index.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/views/screenSetting/accidentMessageSetting.jsx 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/views/screenSetting/accountSetting.jsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/views/screenSetting/forms/edit-accidentMessage-form.jsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/.env.production 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/accidentCase/detail.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/accidentCase/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/header/index.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/projectHome/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/view/projectProgress/index.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
estate-frontend-v2024/src/api/projects.js
@@ -9,12 +9,12 @@
// }
export function getProjectList(pageInfo, req) {
  let data = {...req, pageReq: pageInfo}
    return request({
      url: `/admin/project/list`,
      method: 'post',
      data
    })
  let data = { ...req, pageReq: pageInfo }
  return request({
    url: `/admin/project/list`,
    method: 'post',
    data
  })
}
export function getProjectTypeOptions() {
@@ -68,7 +68,7 @@
      method: 'post',
      data
    })
  }else {
  } else {
    return request({
      url: '/admin/project/add',
      method: 'post',
@@ -86,70 +86,70 @@
}
export function editProjectInfo(data, isEdit) {
    if (isEdit) {
        return request({
        url: '/admin/projectInfo/edit',
        method: 'post',
        data
        })
    }else {
        return request({
        url: '/admin/projectInfo/add',
        method: 'post',
        data
        })
    }
  if (isEdit) {
    return request({
      url: '/admin/projectInfo/edit',
      method: 'post',
      data
    })
  } else {
    return request({
      url: '/admin/projectInfo/add',
      method: 'post',
      data
    })
  }
}
export function getDeviceUsage(data, req) {
    return request({
        url: '/admin/project/device/usage/history?projectId=' + req.projectId + '&deviceType=' + req.deviceType,
        method: 'post',
        data
    })
  return request({
    url: '/admin/project/device/usage/history?projectId=' + req.projectId + '&deviceType=' + req.deviceType,
    method: 'post',
    data
  })
}
export function editDeviceUsage(data, isEdit) {
    if (isEdit) {
        return request({
        url: '/admin/project/device/usage/edit',
        method: 'post',
        data
        })
    }else {
        return request({
        url: '/admin/project/device/usage/add',
        method: 'post',
        data
        })
    }
  if (isEdit) {
    return request({
      url: '/admin/project/device/usage/edit',
      method: 'post',
      data
    })
  } else {
    return request({
      url: '/admin/project/device/usage/add',
      method: 'post',
      data
    })
  }
}
export function deleteDeviceUsage(data) {
    return request({
        url: '/admin/project/device/usage/batch/del',
        method: 'post',
        data
    })
  return request({
    url: '/admin/project/device/usage/batch/del',
    method: 'post',
    data
  })
}
// 获取未使用的设备
export function getFreeDeviceOptions(deviceType) {
    return request({
        url: '/admin/entity/freeDevices?deviceType=' + deviceType,
        method: 'get'
    })
  return request({
    url: '/admin/entity/freeDevices?deviceType=' + deviceType,
    method: 'get'
  })
}
export function deleteProjectInfo(data) {
    return request({
        url: '/admin/projectInfo/del',
        method: 'post',
        data
    })
  return request({
    url: '/admin/projectInfo/del',
    method: 'post',
    data
  })
}
@@ -200,7 +200,7 @@
}
export function getFuzzyEvaluate(pageInfo, req) {
  let data = {...req, pageReq: pageInfo}
  let data = { ...req, pageReq: pageInfo }
  return request({
    url: '/admin/eval/fuzzy/list',
    method: 'post',
@@ -209,7 +209,7 @@
}
export function getCalcResult(pageInfo, req) {
  let data = {...req, pageReq: pageInfo}
  let data = { ...req, pageReq: pageInfo }
  return request({
    url: '/admin/eval/score/list',
    method: 'post',
@@ -218,53 +218,53 @@
}
export function editCalcResult(data) {
    return request({
        url: '/admin/eval/score/edit',
        method: 'post',
        data
    })
  return request({
    url: '/admin/eval/score/edit',
    method: 'post',
    data
  })
}
export function getMeasurementEvaluate(pageInfo, req) {
    let data = {...req, pageReq: pageInfo}
    return request({
        url: '/admin/eval/measurement/list',
        method: 'post',
        data
    })
  let data = { ...req, pageReq: pageInfo }
  return request({
    url: '/admin/eval/measurement/list',
    method: 'post',
    data
  })
}
export function getMeasureModel(data, query) {
    return request({
        url: '/admin/measureModel/list?keyword=' + query.keyword,
        method: 'post',
        data
    })
  return request({
    url: '/admin/measureModel/list?keyword=' + query.keyword,
    method: 'post',
    data
  })
}
export function editMeasureModel(data, isEdit) {
    if (isEdit) {
        return request({
            url: '/admin/measureModel/edit',
            method: 'post',
            data
        })
    }else {
        return request({
            url: '/admin/measureModel/add',
            method: 'post',
            data
        })
    }
  if (isEdit) {
    return request({
      url: '/admin/measureModel/edit',
      method: 'post',
      data
    })
  } else {
    return request({
      url: '/admin/measureModel/add',
      method: 'post',
      data
    })
  }
}
export function deleteMeasureModel(data) {
    return request({
        url: '/admin/measureModel/del',
        method: 'post',
        data
    })
  return request({
    url: '/admin/measureModel/del',
    method: 'post',
    data
  })
}
export function getFuzzyScoreResult(params) {
@@ -284,26 +284,26 @@
}
export function getDeviceFuzzyScoreResult(params) {
    return request({
        url: '/admin/eval/fuzzy/device/get',
        method: 'get',
        params
    })
  return request({
    url: '/admin/eval/fuzzy/device/get',
    method: 'get',
    params
  })
}
export function getDeviceCalcScoreResult(params) {
    return request({
        url: '/admin/eval/score/device/get',
        method: 'get',
        params
    })
  return request({
    url: '/admin/eval/score/device/get',
    method: 'get',
    params
  })
}
export function getProjectOptions(clientId) {
    return request({
        url: `/admin/entity/projects?clientId=${clientId}`,
        method: 'get',
    })
  return request({
    url: `/admin/entity/projects?clientId=${clientId}`,
    method: 'get',
  })
}
export function getProjectsByIds(data) {
estate-frontend-v2024/src/views/business/clientInfo.jsx
@@ -104,7 +104,7 @@
                            }
                        }
                    >
                        {clientTypeMap.toOptionsWithTitle("委托方类型").map((item, index) => (
                        {clientTypeMap.toOptionsWithTitleValNew().map((item, index) => (
                            <Option value={item.value} key={item.label}>{item.label}</Option>
                        ))}
                    </Select>
estate-frontend-v2024/src/views/business/onDuty.jsx
@@ -135,6 +135,9 @@
              dataIndex="content"
              align="center"
              ellipsis={true}
              render={(text, row) => (
                <span>人员在岗</span>
              )}
            />
            <Column
              title="岗位"
estate-frontend-v2024/src/views/business/projects.jsx
@@ -8,7 +8,7 @@
import "./style/projects.less";
import "./style/clientInfo.less";
import { projectTypeMap, projectUsageTypeMap } from "../common/constants";
import { projectTypeMapNew, projectUsageTypeMapNew } from "../common/constants";
import CompanyCollectionModal from "./components/companyCollectionModal";
import CrudViewBase from "../common/crud-view-base";
import ProjectDetail from "./components/projectDetail";
@@ -209,7 +209,7 @@
              this.handleListBodyChange("projectTypes", value);
            }}
          >
            {projectTypeMap.toOptions().map((item, index) => (
            {projectTypeMapNew.toOptions().map((item, index) => (
              <Option value={item.value} key={index}>
                {item.label}
              </Option>
@@ -295,7 +295,7 @@
              key="type"
              align="center"
              ellipsis={true}
              render={(text, row) => <span>{projectTypeMap[row.type]}</span>}
              render={(text, row) => <span>{projectTypeMapNew[row.type]}</span>}
            />
            <Column
              title="用途类型"
@@ -303,7 +303,7 @@
              align="center"
              ellipsis={true}
              render={(text, row) => (
                <span>{projectUsageTypeMap[row.usageType]}</span>
                <span>{projectUsageTypeMapNew[row.usageType]}</span>
              )}
            />
            <Column
estate-frontend-v2024/src/views/common/constants.js
@@ -3,7 +3,8 @@
// 定义全局变量
// export const BASE_URL = 'http://47.93.28.249:8181'
export const BASE_URL = 'http://221.182.45.100:8180';
// export const BASE_URL = 'http://221.182.45.100:8180';
export const BASE_URL = 'http://192.168.110.111:8080';
// export const SCREEN_URL = 'http://221.182.45.100:8087/#/ ';
export const SCREEN_URL = 'http://192.168.110.22:8087/#/ ';
@@ -43,6 +44,13 @@
    [Symbol.iterator]() {
        return Object.entries(this)[Symbol.iterator]();
    }
    toOptionsWithTitleValNew() {
        // 增加一个空选项
        let options = [];
        options.push(...Object.entries(this).map(([value, label]) => ({ value, label })));
        return options;
    }
}
estate-frontend-v2024/src/views/layout/Header/index.jsx
@@ -103,7 +103,7 @@
  const fetchData = (type, title = "") => {
    if (type === "1") {
      getClientSelectOptions({ title }).then(res => {
      getClientSelectOptions({ keyword: title }).then(res => {
        if (res.data.status === 'OK') {
          setClientList(res.data.data || []);
        }
estate-frontend-v2024/src/views/screenSetting/accidentMessageSetting.jsx
@@ -1,14 +1,15 @@
import React from "react";
import { Card, Divider, Icon, Input, Select, Table } from "antd";
import {
    getAccidentBriefList,
    addAccidentBrief,
    editAccidentBrief,
    deleteAccidentBrief
import {
  getAccidentBriefList,
  addAccidentBrief,
  editAccidentBrief,
  deleteAccidentBrief
} from "@/api/screenSetting";
import EditAccidentMessageForm from "./forms/edit-accidentMessage-form";
import "./style/index.less";
import CrudViewBase from "../common/crud-view-base";
import moment from "moment";
const { Column } = Table;
const inputLongStyle = {
@@ -25,7 +26,7 @@
  getEntityList(pageInfo, listBody) {
    const params = {
        title: listBody.title
      title: listBody.title
    };
    return getAccidentBriefList(pageInfo, params);
  }
@@ -34,32 +35,32 @@
    // 数据清洗与转换
    // 1. 处理级联选择结果
    if (data.cascaderValue && data.cascaderValue.length > 0) {
        data.province = data.cascaderValue[0] || '';
        data.city = data.cascaderValue[1] || '';
        data.area = data.cascaderValue[2] || '';
      data.province = data.cascaderValue[0] || '';
      data.city = data.cascaderValue[1] || '';
      data.area = data.cascaderValue[2] || '';
    }
    if (this.editFormRef && this.editFormRef.state.editableData) {
        data.img = this.editFormRef.state.editableData.img.name;
      data.img = this.editFormRef.state.editableData.img.name;
    }
    // 3. 删除多余字段
    const allowedFields = [
        'title', 'classifyId', 'area', 'city', 'province',
        'casualties', 'time', 'content', 'detail', 'img', 'state'
      'title', 'classifyId', 'area', 'city', 'province',
      'casualties', 'time', 'content', 'detail', 'img', 'state'
    ];
    // 如果是编辑,保留 id
    if (isEdit) {
        data.id = this.state.currentRowData.id;
        allowedFields.push('id');
      data.id = this.state.currentRowData.id;
      allowedFields.push('id');
    }
    const payload = {};
    allowedFields.forEach(field => {
        if (data[field] !== undefined) {
            payload[field] = data[field];
        }
      if (data[field] !== undefined) {
        payload[field] = data[field];
      }
    });
    if (isEdit) {
@@ -130,7 +131,7 @@
              key="location"
              align="center"
              render={(text, row) => (
                  <span>{`${row.province || ''}${row.city || ''}${row.area || ''}`}</span>
                <span>{`${row.province || ''}${row.city || ''}${row.area || ''}`}</span>
              )}
            />
            <Column
@@ -146,6 +147,9 @@
              key="time"
              align="center"
              width={150}
              render={(text, row) => (
                <span>{moment(row.time).format('YYYY-MM-DD')}</span>
              )}
            />
            <Column
              title="状态"
estate-frontend-v2024/src/views/screenSetting/accountSetting.jsx
@@ -89,6 +89,10 @@
        return;
      }
      if (values.confirmPassword != values.password) {
        return message.warning("两次密码输入不一致!");
      }
      this.setState({ resetPasswordModalLoading: true });
      const payload = {
@@ -169,7 +173,6 @@
            rowKey="id"
            dataSource={entities}
            pagination={false}
            scroll={{ x: "max-content" }}
          >
            <Column
              title="序号"
@@ -207,6 +210,7 @@
              key="clientOrProject"
              dataIndex="clientOrProject"
              align="center"
              ellipsis={true}
            />
            <Column
              title="状态"
estate-frontend-v2024/src/views/screenSetting/forms/edit-accidentMessage-form.jsx
@@ -389,7 +389,7 @@
                initialValue: time ? moment(time) : null,
                onChange: this.handleDateFieldChange("time"),
              })(
                <DatePicker showTime style={{ width: "250px" }} format={"YYYY-MM-DD HH:mm:ss"} />,
                <DatePicker style={{ width: "250px" }} format={"YYYY-MM-DD"} />,
              )}
            </Form.Item>
screen/.env.production
@@ -1,2 +1,2 @@
VUE_APP_BASE_URL=https://rhljsq.pzhsoar.com/manage
VUE_APP_IMAGE_BASE_URL=http://47.108.113.190:8181/public/file/download/
VUE_APP_IMAGE_BASE_URL=http://47.108.113.190:8181/project/download/
screen/src/view/accidentCase/detail.vue
@@ -63,7 +63,7 @@
              v-if="detailData.img"
              style="width: 730px; height: 348px; object-fit: cover"
              :src="
                VUE_APP_BASE_URL + '/public/file/download/' +
                VUE_APP_BASE_URL + '/project/download/' +
                detailData.img
              "
              @error="handleImageError"
screen/src/view/accidentCase/index.vue
@@ -193,7 +193,7 @@
          </div>
          <img
            v-if="item.img"
            :src="VUE_APP_BASE_URL + '/public/file/download/' + item.img"
            :src="VUE_APP_BASE_URL + '/project/download/' + item.img"
            class="w--264 h--160 shrink0 ml--54 br--10"
            @error="handleImageError"
          />
screen/src/view/header/index.vue
@@ -5,7 +5,7 @@
      class="flex a-center c-fff absolute adress1 cursor-pointer"
    >
      <img
        :src="clientLogo || require('../../assets/img/logo.png')"
        :src="clientLogo ? VUE_APP_BASE_URL + '/project/download/' + clientLogo : require('../../assets/img/logo.png')"
        class="w--30 h--30 shrink0 mr--10"
      />
      <div class="color2 lh--30 fs--30 SHSBold">
@@ -64,6 +64,7 @@
      clientName: localStorage.getItem("clientName"),
      clientLogo: localStorage.getItem("clientLogo"),
      VUE_APP_IMAGE_BASE_URL: process.env.VUE_APP_IMAGE_BASE_URL,
      VUE_APP_BASE_URL: process.env.VUE_APP_BASE_URL,
      showLogoutDialog: false,
    };
  },
screen/src/view/projectHome/index.vue
@@ -662,7 +662,7 @@
            url = id;
          } else {
            // 否则拼接为下载URL
            url = `${this.VUE_APP_BASE_URL}/public/file/download/${id}`;
            url = `${this.VUE_APP_BASE_URL}/project/download/${id}`;
          }
          // 先尝试从扩展名判断
screen/src/view/projectProgress/index.vue
@@ -471,7 +471,7 @@
            url = id;
          } else {
            // 否则拼接为下载URL
            url = `${this.VUE_APP_BASE_URL}/public/file/download/${id}`;
            url = `${this.VUE_APP_BASE_URL}/project/download/${id}`;
          }
          // 先尝试从扩展名判断