fix: 修复文件下载路径和客户端选择参数等问题
- 更新环境变量和前端代码中的文件下载路径从 `/public/file/download/` 到 `/project/download/`
- 修复客户端选择接口参数从 `title` 改为 `keyword`
- 修正事故信息表单日期选择器格式为仅日期
- 修复委托方类型选择选项使用新的映射方法
- 添加密码重置时的确认密码校验
- 更新项目类型和用途类型映射使用新常量
- 调整事故信息表格中时间字段的显示格式
- 修复客户端Logo显示路径拼接问题
- 更新API基础URL为本地开发地址
| | |
| | | // } |
| | | |
| | | 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() { |
| | |
| | | method: 'post', |
| | | data |
| | | }) |
| | | }else { |
| | | } else { |
| | | return request({ |
| | | url: '/admin/project/add', |
| | | method: 'post', |
| | |
| | | } |
| | | |
| | | 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 |
| | | }) |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | export function getFuzzyEvaluate(pageInfo, req) { |
| | | let data = {...req, pageReq: pageInfo} |
| | | let data = { ...req, pageReq: pageInfo } |
| | | return request({ |
| | | url: '/admin/eval/fuzzy/list', |
| | | method: 'post', |
| | |
| | | } |
| | | |
| | | export function getCalcResult(pageInfo, req) { |
| | | let data = {...req, pageReq: pageInfo} |
| | | let data = { ...req, pageReq: pageInfo } |
| | | return request({ |
| | | url: '/admin/eval/score/list', |
| | | method: 'post', |
| | |
| | | } |
| | | |
| | | 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) { |
| | |
| | | } |
| | | |
| | | 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) { |
| | |
| | | } |
| | | } |
| | | > |
| | | {clientTypeMap.toOptionsWithTitle("委托方类型").map((item, index) => ( |
| | | {clientTypeMap.toOptionsWithTitleValNew().map((item, index) => ( |
| | | <Option value={item.value} key={item.label}>{item.label}</Option> |
| | | ))} |
| | | </Select> |
| | |
| | | dataIndex="content" |
| | | align="center" |
| | | ellipsis={true} |
| | | render={(text, row) => ( |
| | | <span>人员在岗</span> |
| | | )} |
| | | /> |
| | | <Column |
| | | title="岗位" |
| | |
| | | |
| | | 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"; |
| | |
| | | this.handleListBodyChange("projectTypes", value); |
| | | }} |
| | | > |
| | | {projectTypeMap.toOptions().map((item, index) => ( |
| | | {projectTypeMapNew.toOptions().map((item, index) => ( |
| | | <Option value={item.value} key={index}> |
| | | {item.label} |
| | | </Option> |
| | |
| | | key="type" |
| | | align="center" |
| | | ellipsis={true} |
| | | render={(text, row) => <span>{projectTypeMap[row.type]}</span>} |
| | | render={(text, row) => <span>{projectTypeMapNew[row.type]}</span>} |
| | | /> |
| | | <Column |
| | | title="用途类型" |
| | |
| | | align="center" |
| | | ellipsis={true} |
| | | render={(text, row) => ( |
| | | <span>{projectUsageTypeMap[row.usageType]}</span> |
| | | <span>{projectUsageTypeMapNew[row.usageType]}</span> |
| | | )} |
| | | /> |
| | | <Column |
| | |
| | | // 定义全局变量 |
| | | |
| | | // 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/#/ '; |
| | | |
| | |
| | | [Symbol.iterator]() { |
| | | return Object.entries(this)[Symbol.iterator](); |
| | | } |
| | | |
| | | toOptionsWithTitleValNew() { |
| | | // 增加一个空选项 |
| | | let options = []; |
| | | options.push(...Object.entries(this).map(([value, label]) => ({ value, label }))); |
| | | return options; |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | 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 || []); |
| | | } |
| | |
| | | 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 = { |
| | |
| | | |
| | | getEntityList(pageInfo, listBody) { |
| | | const params = { |
| | | title: listBody.title |
| | | title: listBody.title |
| | | }; |
| | | return getAccidentBriefList(pageInfo, params); |
| | | } |
| | |
| | | // 数据清洗与转换 |
| | | // 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) { |
| | |
| | | key="location" |
| | | align="center" |
| | | render={(text, row) => ( |
| | | <span>{`${row.province || ''}${row.city || ''}${row.area || ''}`}</span> |
| | | <span>{`${row.province || ''}${row.city || ''}${row.area || ''}`}</span> |
| | | )} |
| | | /> |
| | | <Column |
| | |
| | | key="time" |
| | | align="center" |
| | | width={150} |
| | | render={(text, row) => ( |
| | | <span>{moment(row.time).format('YYYY-MM-DD')}</span> |
| | | )} |
| | | /> |
| | | <Column |
| | | title="状态" |
| | |
| | | return; |
| | | } |
| | | |
| | | if (values.confirmPassword != values.password) { |
| | | return message.warning("两次密码输入不一致!"); |
| | | } |
| | | |
| | | this.setState({ resetPasswordModalLoading: true }); |
| | | |
| | | const payload = { |
| | |
| | | rowKey="id" |
| | | dataSource={entities} |
| | | pagination={false} |
| | | scroll={{ x: "max-content" }} |
| | | > |
| | | <Column |
| | | title="序号" |
| | |
| | | key="clientOrProject" |
| | | dataIndex="clientOrProject" |
| | | align="center" |
| | | ellipsis={true} |
| | | /> |
| | | <Column |
| | | title="状态" |
| | |
| | | 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> |
| | | |
| | |
| | | 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/ |
| | |
| | | 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" |
| | |
| | | </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" |
| | | /> |
| | |
| | | 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"> |
| | |
| | | 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, |
| | | }; |
| | | }, |
| | |
| | | url = id; |
| | | } else { |
| | | // 否则拼接为下载URL |
| | | url = `${this.VUE_APP_BASE_URL}/public/file/download/${id}`; |
| | | url = `${this.VUE_APP_BASE_URL}/project/download/${id}`; |
| | | } |
| | | |
| | | // 先尝试从扩展名判断 |
| | |
| | | url = id; |
| | | } else { |
| | | // 否则拼接为下载URL |
| | | url = `${this.VUE_APP_BASE_URL}/public/file/download/${id}`; |
| | | url = `${this.VUE_APP_BASE_URL}/project/download/${id}`; |
| | | } |
| | | |
| | | // 先尝试从扩展名判断 |