dev_1.2
tangjie 2026-07-29 18:23:45 +08:00
parent 66155d78a2
commit 82d8a2c7f6
4 changed files with 49 additions and 9 deletions

View File

@ -10,9 +10,9 @@ module.exports = {
javaGitBranch: "dev", javaGitBranch: "dev",
// 本地联调 safetyEval-servicecontext-path: /safetyEval默认端口 8095 // 本地联调 safetyEval-servicecontext-path: /safetyEval默认端口 8095
// 可通过环境变量覆盖: SAFETY_EVAL_API_HOST=http://192.168.x.x:8095 // 可通过环境变量覆盖: SAFETY_EVAL_API_HOST=http://192.168.x.x:8095
//API_HOST: "https://gbs-gateway.qhdsafety.com", API_HOST: "https://gbs-gateway.qhdsafety.com",
API_HOST: "http://192.168.0.152", //API_HOST: "http://192.168.0.152",
//API_HOST: "http://192.168.0.150", //太浅 //API_HOST: "http://192.168.0.150", //太浅
// API_HOST: "http://192.168.0.152", // API_HOST: "http://192.168.0.152",
//API_HOST: "http://192.168.0.103", //huwei //API_HOST: "http://192.168.0.103", //huwei

View File

@ -9,6 +9,8 @@ import {
Empty, Empty,
Typography, Typography,
Image, Image,
Popover,
Button,
} from "antd"; } from "antd";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout"; import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
import { AntdTableFuncControl } from "@cqsjjb/jjb-common-decorator/antd"; import { AntdTableFuncControl } from "@cqsjjb/jjb-common-decorator/antd";
@ -266,8 +268,20 @@ const SurveyPanel = ({ personnel, attachments, loading, detailData }) => {
dataIndex: "sceneUrl", dataIndex: "sceneUrl",
width: 80, width: 80,
render: (v) => { render: (v) => {
const count = v ? v.split(",").filter(Boolean).length : 0; const urls = v ? v.split(",").filter(Boolean) : [];
return count > 0 ? `${count}` : "-"; if (urls.length === 0) return "-";
const content = (
<div style={{ display: "flex", gap: 8, flexWrap: "wrap", maxWidth: 400 }}>
{urls.map((url, i) => (
<Image key={i} src={url} width={120} height={90} style={{ objectFit: "cover" }} />
))}
</div>
);
return (
<Popover content={content} title="现场照片" trigger="hover">
<Button type="link" size="small" style={{ padding: 0 }}>{urls.length}</Button>
</Popover>
);
}, },
}, },
{ {

View File

@ -12,6 +12,8 @@ import {
Modal, Modal,
Space, Space,
Typography, Typography,
Popover,
Image,
} from "antd"; } from "antd";
import { AntdTableFuncControl } from "@cqsjjb/jjb-common-decorator/antd"; import { AntdTableFuncControl } from "@cqsjjb/jjb-common-decorator/antd";
import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout"; import PageLayout from "@cqsjjb/jjb-react-admin-component/PageLayout";
@ -185,8 +187,20 @@ const SurveyMonitor = (props) => {
dataIndex: "sceneUrl", dataIndex: "sceneUrl",
width: 80, width: 80,
render: (v) => { render: (v) => {
const count = v ? v.split(",").filter(Boolean).length : 0; const urls = v ? v.split(",").filter(Boolean) : [];
return count > 0 ? `${count}` : "-"; if (urls.length === 0) return "-";
const content = (
<div style={{ display: "flex", gap: 8, flexWrap: "wrap", maxWidth: 400 }}>
{urls.map((url, i) => (
<Image key={i} src={url} width={120} height={90} style={{ objectFit: "cover" }} />
))}
</div>
);
return (
<Popover content={content} title="现场照片" trigger="hover">
<Button type="link" size="small" style={{ padding: 0 }}>{urls.length}</Button>
</Popover>
);
}, },
}, },
{ {

View File

@ -1,5 +1,5 @@
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import { Form, Button, Flex, Typography, Steps, Tag, Card, Table, message } from "antd"; import { Form, Button, Flex, Typography, Steps, Tag, Card, Table, message, Popover, Image } from "antd";
import { CheckCircleFilled, DownloadOutlined } from "@ant-design/icons"; import { CheckCircleFilled, DownloadOutlined } from "@ant-design/icons";
import { Connect } from "@cqsjjb/jjb-dva-runtime"; import { Connect } from "@cqsjjb/jjb-dva-runtime";
import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace"; import { NS_SAFETY_EVAL_BUSINESS } from "~/enumerate/namespace";
@ -103,8 +103,20 @@ const InspectionPanel = ({ dataSource = [], evalProjectDetailData = {} }) => {
{ title: "签退时间", dataIndex: "signOutTime" }, { title: "签退时间", dataIndex: "signOutTime" },
{ title: "在场时长", render: (_, r) => calcDuration(r.singInTime, r.signOutTime) }, { title: "在场时长", render: (_, r) => calcDuration(r.singInTime, r.signOutTime) },
{ title: "现场照片", dataIndex: "sceneUrl", render: (v) => { { title: "现场照片", dataIndex: "sceneUrl", render: (v) => {
const count = v ? v.split(',').filter(Boolean).length : 0; const urls = v ? v.split(',').filter(Boolean) : [];
return <Button type="link" size="small">{count}</Button>; if (urls.length === 0) return <Button type="link" size="small">0</Button>;
const content = (
<div style={{ display: 'flex', gap: 8, flexWrap: 'wrap', maxWidth: 400 }}>
{urls.map((url, i) => (
<Image key={i} src={url} width={120} height={90} style={{ objectFit: 'cover' }} />
))}
</div>
);
return (
<Popover content={content} title="现场照片" trigger="hover">
<Button type="link" size="small">{urls.length}</Button>
</Popover>
);
}}, }},
{ title: "本人签字", dataIndex: "signatureUrl", render: (v) => <Tag color={v ? "success" : "default"}>{v ? "已签字" : "未签字"}</Tag> }, { title: "本人签字", dataIndex: "signatureUrl", render: (v) => <Tag color={v ? "success" : "default"}>{v ? "已签字" : "未签字"}</Tag> },
]} ]}