Merge branch 'shiy-point' into shiy
This commit is contained in:
@@ -33,6 +33,10 @@ interface EvaluationResult {
|
||||
data?: string;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
evaluated_point_results_log?: {
|
||||
rules?: unknown[];
|
||||
[key: string]: unknown;
|
||||
};
|
||||
[key: string]: unknown;
|
||||
}
|
||||
|
||||
@@ -73,6 +77,8 @@ interface ReviewPointResult {
|
||||
suggestion: string;
|
||||
result?: boolean;
|
||||
score: number;
|
||||
// evaluatedPointResultsLog: Record<string, Array<Record<string, unknown>>>;
|
||||
evaluatedPointResultsLog: Record<string, unknown>;
|
||||
}
|
||||
|
||||
// 定义统计数据类型
|
||||
@@ -242,6 +248,11 @@ export async function getReviewPoints(fileId: string) {
|
||||
const group = groupsMap.get(point.evaluation_point_groups_id || 0) || {} as EvaluationPointGroup;
|
||||
const editAuditStatus = editAuditStatusMap.get(result.evaluation_point_id) || {id: '', status: 0};
|
||||
|
||||
// 评查结果内容改成由evaluated_point_results_log中获取
|
||||
const evaluatedPointResultsLog = result.evaluated_point_results_log || {};
|
||||
// console.log('evaluatedPointResultsLog-------', evaluatedPointResultsLog);
|
||||
|
||||
|
||||
// 从 evaluated_results 中提取数据
|
||||
let message = '';
|
||||
let data = '';
|
||||
@@ -328,7 +339,213 @@ export async function getReviewPoints(fileId: string) {
|
||||
// }
|
||||
|
||||
// 评查配置: point.evaluation_config
|
||||
evaluationConfig: point.evaluation_config || {}
|
||||
evaluationConfig: point.evaluation_config || {},
|
||||
|
||||
evaluatedPointResultsLog: evaluatedPointResultsLog || {}
|
||||
// evaluatedPointResultsLog: {
|
||||
// rules:[
|
||||
// {
|
||||
// "id": "1",
|
||||
// "type": "consistency",
|
||||
// "config": {
|
||||
// "logic": "and",
|
||||
// "pairs": [
|
||||
// {
|
||||
// "sourceField": {"a":{page: 1,value: '张三拉萨看得见佛i啊是觉得离开房间啊善良的是的链接发了上帝就发垃圾袋的时间佛爱上立刻就阿拉山口大家分厘卡即使灯笼裤飞机啊顺利打开解放拉萨酱豆腐立刻阿萨到了经历多空双方叫阿里的肌肤垃圾收到了看见螺丝钉解放了啊撒旦解放垃圾的等级分类教师劳动纠纷爱丽丝的开发教师的肌肤啊撒旦解放考虑进来阿斯兰的看法骄傲'}},
|
||||
// "targetField": {"b":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"b":{page: 1,value: '张三'}},
|
||||
// "targetField": {"c":{page: 1,value: '张三拉萨看得见佛i啊是觉得离开房间啊善良的是的链接发了上帝就发垃圾袋的时间佛爱上立刻就阿拉山口大家分厘卡即使灯笼裤飞机啊顺利打开解放拉萨酱豆腐立刻阿萨到了经历多空双方叫阿里的肌肤垃圾收到了看见螺丝钉解放了啊撒旦解放垃圾的等级分类教师劳动纠纷爱丽丝的开发教师的肌肤啊撒旦解放考虑进来阿斯兰的看法骄傲'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": false
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"c":{page: 1,value: '张三'}},
|
||||
// "targetField": {"d":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "contains",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"d":{page: 1,value: '张三'}},
|
||||
// "targetField": {"e":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"现场笔录-被检查人名称":{page: 1,value: '张三'}},
|
||||
// "targetField": {"证据复制(提取)单-营业执照-名称":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"证据复制(提取)单-营业执照-名称":{page: 1,value: '张三'}},
|
||||
// "targetField": {"证据复制(提取)单-营业执照-目录-名称":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"现场笔录-法定代表人(负责人)":{page: 1,value: '张三'}},
|
||||
// "targetField": {"证据复制(提取)单-营业执照-法定代表人":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"现场笔录-烟草专卖许可证号码":{page: 1,value: '张三'}},
|
||||
// "targetField": {"证据复制(提取)单-烟草专卖零售许可证-许可证号":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"证据复制(提取)单-烟草专卖零售许可证-企业名称":{page: 1,value: '张三'}},
|
||||
// "targetField": {"证据复制(提取)单-营业执照-名称":{page: 1,value: '张三拉萨看得见佛i啊是觉得离开房间啊善良的是的链接发了上帝就发垃圾袋的时间佛爱上立刻就阿拉山口大家分厘卡即使灯笼裤飞机啊顺利打开解放拉萨酱豆腐立刻阿萨到了经历多空双方叫阿里的肌肤垃圾收到了看见螺丝钉解放了啊撒旦解放垃圾的等级分类教师劳动纠纷爱丽丝的开发教师的肌肤啊撒旦解放考虑进来阿斯兰的看法骄傲'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": false
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"证据复制(提取)单-烟草专卖零售许可证-负责人姓名":{page: 1,value: '张三'}},
|
||||
// "targetField": {"证据复制(提取)单-营业执照-法定代表人":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"立案报告表-当事人-单位-名称":{page: 1,value: '张三'}},
|
||||
// "targetField": {"证据复制(提取)单-营业执照-名称":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"立案报告表-当事人-单位-法定代表人(负责人)":{page: 1,value: '张三拉萨看得见佛i啊是觉得离开房间啊善良的是的链接发了上帝就发垃圾袋的时间佛爱上立刻就阿拉山口大家分厘卡即使灯笼裤飞机啊顺利打开解放拉萨酱豆腐立刻阿萨到了经历多空双方叫阿里的肌肤垃圾收到了看见螺丝钉解放了啊撒旦解放垃圾的等级分类教师劳动纠纷爱丽丝的开发教师的肌肤啊撒旦解放考虑进来阿斯兰的看法骄傲'}},
|
||||
// "targetField": {"证据复制(提取)单-营业执照-法定代表人":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "sourceField": {"立案报告表-当事人-单位-地址":{page: 1,value: '张三'}},
|
||||
// "targetField": {"证据复制(提取)单-营业执照-住所":{page: 1,value: '张三'}},
|
||||
// "compareMethod": "exact",
|
||||
// "res": true
|
||||
// }
|
||||
// ],
|
||||
// "selectedFields": []
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// "id": "2",
|
||||
// "type": "exists",
|
||||
// "config": {
|
||||
// "logic": "all",
|
||||
// "res": true,
|
||||
// "fields": {
|
||||
// "证据先行登记保存批准书-负责人意见并签名-时间": {page: 1,value: ''},
|
||||
// "证据先行登记保存批准书-负责人意见并签名-签名": {page: 2,value: '有无判断类型'}
|
||||
// },
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// "id": "3",
|
||||
// "type": "exists",
|
||||
// "config": {
|
||||
// "logic": "all",
|
||||
// "res": false,
|
||||
// "fields": {
|
||||
// "证据先行登记-负责人意见并签名-时间": {page: 1,value: ''},
|
||||
// "证据先行登记-负责人意见并签名-签名": {page: 2,value: '有无判断类型'}
|
||||
// },
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// "id": "4",
|
||||
// "type": "logic",
|
||||
// "config": {
|
||||
// "logic": "all",
|
||||
// "conditions": [
|
||||
// {
|
||||
// "field": {
|
||||
// "送达回证-送达方式": {
|
||||
// "page": 5,
|
||||
// "value": "逻辑判断"
|
||||
// }
|
||||
// },
|
||||
// "value": "直接送达",
|
||||
// "operator": "eq",
|
||||
// "res": true
|
||||
// },
|
||||
// {
|
||||
// "field": {
|
||||
// "犯罪证据-犯罪方式": {
|
||||
// "page": 6,
|
||||
// "value": "逻辑判断"
|
||||
// }
|
||||
// },
|
||||
// "value": "直接送达",
|
||||
// "operator": "eq",
|
||||
// "res": false
|
||||
// }
|
||||
// ],
|
||||
// "selectedFields": []
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// "id": "5",
|
||||
// "type": "regex",
|
||||
// "config": {
|
||||
// "res": true,
|
||||
// "field": {
|
||||
// "广东省没收、收缴、追缴财务收据-标题":{
|
||||
// page: 1,value: 'asdasdasd'
|
||||
// }
|
||||
// },
|
||||
// "pattern": "^(.*广东省没收.*财务收据.*)",
|
||||
// "matchType": "match",
|
||||
// "selectedFields": []
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// "id": "6",
|
||||
// "type": "format",
|
||||
// "config": {
|
||||
// "field": {
|
||||
// "广东省没收、收缴、追缴财务收据-标题": {
|
||||
// "value": "",
|
||||
// "page": 8
|
||||
// }
|
||||
// },
|
||||
// "formatType": "date",
|
||||
// "parameters": "YYYY-MM-DD",
|
||||
// "selectedFields": [],
|
||||
// "res": false
|
||||
// }
|
||||
// },
|
||||
// {
|
||||
// "id": "7",
|
||||
// "type": "ai",
|
||||
// "config": {
|
||||
// "res": false,
|
||||
// "model": "qwen14b",
|
||||
// "fields": {
|
||||
// "涉案物件核价表-涉案物品价格-品种规格、单价": {
|
||||
// "page": 1,
|
||||
// "value": "规则和单价你都无法想象"
|
||||
// },
|
||||
// "涉案物件核价表-涉案物品种": {
|
||||
// "page": 1,
|
||||
// "value": "什么都有"
|
||||
// },
|
||||
// "涉案物件核价表-涉案": {
|
||||
// "page": 19,
|
||||
// "value": ""
|
||||
// }
|
||||
// },
|
||||
// "prompt": "请判断以下{涉案物件核价表-涉案物品价格-品种规格、单价}各品种规格的数量、单价计算的合计金额是否正确,各品种规格合计金额计算总计金额是否正确,仅回答\"符合\"或\"不符合\",并简要说明理由。",
|
||||
// "message": "缺少字段: 涉案物件核价表-涉案物品价格-品种规格、单价",
|
||||
// "temperature": 0.1,
|
||||
// "selectedFields": []
|
||||
// }
|
||||
// }
|
||||
// ]}
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -593,7 +593,7 @@ export default function ReviewDetails() {
|
||||
{activeTab === 'preview' && (
|
||||
<div className="flex flex-col lg:flex-row space-y-4 lg:space-y-0 lg:space-x-4">
|
||||
{/* 左侧:文件预览 */}
|
||||
<div className="w-full lg:w-2/3">
|
||||
<div className="w-full lg:w-[65%]">
|
||||
<FilePreview
|
||||
fileContent={document}
|
||||
reviewPoints={reviewData.reviewPoints}
|
||||
@@ -603,7 +603,7 @@ export default function ReviewDetails() {
|
||||
</div>
|
||||
|
||||
{/* 右侧:评查结果 */}
|
||||
<div className="w-full lg:w-1/3">
|
||||
<div className="w-full lg:w-[35%]">
|
||||
<ReviewPointsList
|
||||
reviewPoints={reviewData.reviewPoints}
|
||||
statistics={reviewData.statistics}
|
||||
|
||||
+14
-7
@@ -209,23 +209,30 @@
|
||||
.review-points-list {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: 0;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.review-point-item {
|
||||
padding: 20px;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
/* box-sizing: border-box; */
|
||||
/* margin: 10px; */
|
||||
padding: 5px 10px 10px 10px;
|
||||
/* border-bottom: 1px solid var(--border-color); */
|
||||
cursor: pointer;
|
||||
transition: background-color 0.3s;
|
||||
width: 100%;
|
||||
/* border-radius: 6px; */
|
||||
}
|
||||
|
||||
.review-point-item:hover {
|
||||
background-color: #f5f5f5;
|
||||
/* background-color: #f5f5f5; */
|
||||
/* box-shadow: 10px 10px 10px 3px rgba(250, 173, 20, 0.6); */
|
||||
transform: translateX(-2px);
|
||||
box-shadow: 1px 4px 10px rgba(0, 0, 0, 0.08);
|
||||
|
||||
}
|
||||
|
||||
.review-point-item.active {
|
||||
background-color: var(--primary-light);
|
||||
/* background-color: var(--primary-light); */
|
||||
/* border: 1px solid var(--primary-color); */
|
||||
}
|
||||
|
||||
.review-point-header {
|
||||
@@ -249,7 +256,7 @@
|
||||
font-weight: 500;
|
||||
font-size: 13px;
|
||||
line-height: 1.3;
|
||||
margin-right: 8px;
|
||||
/* margin-right: 8px; */
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
|
||||
+915
@@ -0,0 +1,915 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>评查结果 - 卡片对比版</title>
|
||||
<!-- <link href="https://cdn.jsdelivr.net/npm/remixicon@2.5.0/fonts/remixicon.css" rel="stylesheet"> -->
|
||||
<link href="https://unpkg.com/remixicon@2.5.0/fonts/remixicon.css" rel="stylesheet">
|
||||
<style>
|
||||
:root {
|
||||
--primary-color: #00684a;
|
||||
--primary-hover: #005a40;
|
||||
--primary-light: rgba(0, 104, 74, 0.1);
|
||||
--success-color: #52c41a;
|
||||
--warning-color: #faad14;
|
||||
--error-color: #ff4d4f;
|
||||
--text-color: rgba(0, 0, 0, 0.85);
|
||||
--text-secondary: rgba(0, 0, 0, 0.45);
|
||||
--border-color: #f0f0f0;
|
||||
--bg-gray: #f5f5f5;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
|
||||
line-height: 1.4;
|
||||
color: var(--text-color);
|
||||
background-color: var(--bg-gray);
|
||||
padding: 8px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.container {
|
||||
max-width: 320px;
|
||||
margin: 0 auto;
|
||||
background: white;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.header {
|
||||
background: linear-gradient(135deg, var(--primary-color), var(--primary-hover));
|
||||
color: white;
|
||||
padding: 12px 16px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.header h1 {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.header p {
|
||||
font-size: 12px;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
.stats-overview {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 0;
|
||||
background: white;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
padding: 12px;
|
||||
text-align: center;
|
||||
border-right: 1px solid var(--border-color);
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.stat-item:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.stat-item:hover {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
.stat-number {
|
||||
font-size: 20px;
|
||||
font-weight: 700;
|
||||
margin-bottom: 3px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.stat-label {
|
||||
font-size: 11px;
|
||||
color: var(--text-secondary);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.stat-total .stat-number { color: var(--text-color); }
|
||||
.stat-pass .stat-number { color: var(--success-color); }
|
||||
.stat-warning .stat-number { color: var(--warning-color); }
|
||||
.stat-error .stat-number { color: var(--error-color); }
|
||||
|
||||
.content-area {
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.search-box {
|
||||
margin-bottom: 12px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.search-input {
|
||||
width: 100%;
|
||||
padding: 8px 12px 8px 32px;
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 20px;
|
||||
font-size: 12px;
|
||||
transition: all 0.2s ease;
|
||||
background: #fafafa;
|
||||
}
|
||||
|
||||
.search-input:focus {
|
||||
outline: none;
|
||||
border-color: var(--primary-color);
|
||||
background: white;
|
||||
box-shadow: 0 0 0 2px var(--primary-light);
|
||||
}
|
||||
|
||||
.search-icon {
|
||||
position: absolute;
|
||||
left: 10px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: var(--text-secondary);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.results-section {
|
||||
display: grid;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.result-card {
|
||||
background: white;
|
||||
border: 1px solid var(--border-color);
|
||||
border-radius: 6px;
|
||||
overflow: hidden;
|
||||
transition: all 0.2s ease;
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.03);
|
||||
}
|
||||
|
||||
.result-card:hover {
|
||||
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
|
||||
}
|
||||
|
||||
.result-header {
|
||||
background: linear-gradient(135deg, #f8f9fa, #e9ecef);
|
||||
padding: 10px 12px;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.result-title {
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
color: var(--text-color);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.result-title i {
|
||||
margin-right: 6px;
|
||||
color: var(--primary-color);
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.status-badge {
|
||||
padding: 3px 8px;
|
||||
border-radius: 10px;
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 3px;
|
||||
}
|
||||
|
||||
.status-pass {
|
||||
background: #f6ffed;
|
||||
color: var(--success-color);
|
||||
border: 1px solid #b7eb8f;
|
||||
}
|
||||
|
||||
.status-warning {
|
||||
background: #fffbe6;
|
||||
color: var(--warning-color);
|
||||
border: 1px solid #ffe58f;
|
||||
}
|
||||
|
||||
.status-error {
|
||||
background: #fff2f0;
|
||||
color: var(--error-color);
|
||||
border: 1px solid #ffccc7;
|
||||
}
|
||||
|
||||
.result-body {
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
/* 对比卡片样式 */
|
||||
.comparison-group {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.comparison-group:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.group-title {
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
color: var(--primary-color);
|
||||
margin-bottom: 8px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 4px 0;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.group-title i {
|
||||
margin-right: 4px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.comparison-item {
|
||||
display: flex;
|
||||
align-items: stretch;
|
||||
margin-bottom: 6px;
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
border: 1px solid #e8e8e8;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.comparison-item:hover {
|
||||
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.comparison-item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.field-label {
|
||||
background: #f8f9fa;
|
||||
padding: 6px 8px;
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
color: var(--text-secondary);
|
||||
min-width: 70px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-right: 1px solid #e8e8e8;
|
||||
}
|
||||
|
||||
.comparison-values {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.value-box {
|
||||
flex: 1;
|
||||
padding: 6px 8px;
|
||||
font-size: 10px;
|
||||
line-height: 1.3;
|
||||
border-right: 1px solid #e8e8e8;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.value-box:last-child {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.value-source {
|
||||
font-size: 9px;
|
||||
color: var(--text-secondary);
|
||||
margin-bottom: 2px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.vs-icon {
|
||||
font-size: 8px;
|
||||
margin: 0 4px;
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
.value-content {
|
||||
font-size: 10px;
|
||||
color: var(--text-color);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.status-indicator {
|
||||
min-width: 30px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 9px;
|
||||
font-weight: 600;
|
||||
padding: 6px 4px;
|
||||
}
|
||||
|
||||
/* 状态样式 */
|
||||
.comparison-item.match .value-box {
|
||||
background: #f6ffed;
|
||||
border-color: #d9f7be;
|
||||
}
|
||||
|
||||
.comparison-item.match .status-indicator {
|
||||
background: #f6ffed;
|
||||
color: var(--success-color);
|
||||
}
|
||||
|
||||
.comparison-item.mismatch .value-box {
|
||||
background: #fffbe6;
|
||||
border-color: #ffe58f;
|
||||
}
|
||||
|
||||
.comparison-item.mismatch .status-indicator {
|
||||
background: #fffbe6;
|
||||
color: var(--warning-color);
|
||||
}
|
||||
|
||||
.comparison-item.missing .value-box {
|
||||
background: #fff2f0;
|
||||
border-color: #ffccc7;
|
||||
}
|
||||
|
||||
.comparison-item.missing .status-indicator {
|
||||
background: #fff2f0;
|
||||
color: var(--error-color);
|
||||
}
|
||||
|
||||
/* 单项检查样式 */
|
||||
.single-check-group {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.check-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 6px 8px;
|
||||
margin-bottom: 4px;
|
||||
border-radius: 4px;
|
||||
border: 1px solid #e8e8e8;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.check-item:hover {
|
||||
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.check-item:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.check-item.present {
|
||||
background: #f6ffed;
|
||||
border-color: #d9f7be;
|
||||
}
|
||||
|
||||
.check-item.missing {
|
||||
background: #fff2f0;
|
||||
border-color: #ffccc7;
|
||||
}
|
||||
|
||||
.check-label {
|
||||
font-size: 10px;
|
||||
color: var(--text-secondary);
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.check-value {
|
||||
font-size: 10px;
|
||||
font-weight: 500;
|
||||
color: var(--text-color);
|
||||
flex: 1;
|
||||
margin: 0 8px;
|
||||
}
|
||||
|
||||
.check-status {
|
||||
font-size: 9px;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.check-status.present {
|
||||
color: var(--success-color);
|
||||
}
|
||||
|
||||
.check-status.missing {
|
||||
color: var(--error-color);
|
||||
}
|
||||
|
||||
/* 总结框 */
|
||||
.summary-box {
|
||||
background: linear-gradient(135deg, #f0f9ff, #e0f2fe);
|
||||
border: 1px solid #bae6fd;
|
||||
border-radius: 4px;
|
||||
padding: 8px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
.summary-title {
|
||||
font-size: 10px;
|
||||
font-weight: 600;
|
||||
color: var(--primary-color);
|
||||
margin-bottom: 4px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.summary-title i {
|
||||
margin-right: 3px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.summary-content {
|
||||
font-size: 9px;
|
||||
color: var(--text-color);
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.action-buttons {
|
||||
margin-top: 12px;
|
||||
display: flex;
|
||||
gap: 8px;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 8px 14px;
|
||||
border-radius: 4px;
|
||||
font-size: 11px;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
border: none;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background: var(--primary-color);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background: var(--primary-hover);
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
background: white;
|
||||
color: var(--text-color);
|
||||
border: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.btn-secondary:hover {
|
||||
border-color: var(--primary-color);
|
||||
color: var(--primary-color);
|
||||
}
|
||||
|
||||
/* 长内容两行显示样式 */
|
||||
.comparison-item.long-content .comparison-values {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.comparison-item.long-content .value-box {
|
||||
border-right: none;
|
||||
border-bottom: none;
|
||||
padding: 2px 8px;
|
||||
}
|
||||
|
||||
.comparison-item.long-content .value-box:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
/* 长内容合并标题样式 */
|
||||
.comparison-item.long-content .merged-header {
|
||||
background: #f8f9fa;
|
||||
padding: 4px 8px;
|
||||
font-size: 8px;
|
||||
font-weight: 600;
|
||||
color: var(--text-secondary);
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.comparison-item.long-content .content-row {
|
||||
padding: 4px 8px;
|
||||
font-size: 10px;
|
||||
color: var(--text-color);
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
}
|
||||
|
||||
.comparison-item.long-content .content-row:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.comparison-item.long-content .value-content {
|
||||
line-height: 1.2;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
/* Tooltip 样式 */
|
||||
.tooltip {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tooltip .tooltiptext {
|
||||
visibility: hidden;
|
||||
width: 120px;
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
border-radius: 6px;
|
||||
padding: 6px;
|
||||
position: absolute;
|
||||
z-index: 1000;
|
||||
bottom: 125%;
|
||||
left: 50%;
|
||||
margin-left: -60px;
|
||||
opacity: 0;
|
||||
transition: opacity 0.3s;
|
||||
font-size: 10px;
|
||||
line-height: 1.4;
|
||||
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.tooltip .tooltiptext::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 50%;
|
||||
margin-left: -5px;
|
||||
border-width: 5px;
|
||||
border-style: solid;
|
||||
border-color: #333 transparent transparent transparent;
|
||||
}
|
||||
|
||||
.tooltip:hover .tooltiptext {
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
/* 文本截断样式 */
|
||||
.truncate {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.stats-overview {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
.stat-item {
|
||||
border-right: none;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
|
||||
.stat-item:nth-child(2n) {
|
||||
border-right: none;
|
||||
}
|
||||
|
||||
.content-area {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.action-buttons {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.comparison-values {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.value-box {
|
||||
border-right: none;
|
||||
border-bottom: 1px solid #e8e8e8;
|
||||
}
|
||||
|
||||
.value-box:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<!-- 页面头部 -->
|
||||
<div class="header">
|
||||
<h1>评查结果</h1>
|
||||
<p>烟草专卖行政执法案件评查报告</p>
|
||||
</div>
|
||||
|
||||
<!-- 统计概览 -->
|
||||
<div class="stats-overview">
|
||||
<div class="stat-item stat-total">
|
||||
<span class="stat-number">55</span>
|
||||
<span class="stat-label">总计</span>
|
||||
</div>
|
||||
<div class="stat-item stat-pass">
|
||||
<span class="stat-number">49</span>
|
||||
<span class="stat-label">通过</span>
|
||||
</div>
|
||||
<div class="stat-item stat-warning">
|
||||
<span class="stat-number">6</span>
|
||||
<span class="stat-label">警告</span>
|
||||
</div>
|
||||
<div class="stat-item stat-error">
|
||||
<span class="stat-number">0</span>
|
||||
<span class="stat-label">错误</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 内容区域 -->
|
||||
<div class="content-area">
|
||||
<!-- 搜索框 -->
|
||||
<div class="search-box">
|
||||
<i class="ri-search-line search-icon"></i>
|
||||
<input type="text" class="search-input" placeholder="搜索评查点...">
|
||||
</div>
|
||||
|
||||
<!-- 评查结果列表 -->
|
||||
<div class="results-section">
|
||||
<!-- 当事人基本情况记载完整、准确 -->
|
||||
<div class="result-card">
|
||||
<div class="result-header">
|
||||
<div class="result-title">
|
||||
<i class="ri-user-check-line"></i>
|
||||
当事人基本情况记载完整、准确
|
||||
</div>
|
||||
<div class="status-badge status-pass">
|
||||
<i class="ri-check-circle-line"></i>
|
||||
通过
|
||||
</div>
|
||||
</div>
|
||||
<div class="result-body">
|
||||
<!-- 个人基本信息对比 -->
|
||||
<div class="comparison-group">
|
||||
<!-- <div class="group-title">
|
||||
<i class="ri-user-line"></i>
|
||||
个人基本信息对比
|
||||
</div> -->
|
||||
|
||||
<div class="comparison-item match">
|
||||
<div class="field-label" style="display: none;">姓名</div>
|
||||
<div class="comparison-values">
|
||||
<div class="value-box">
|
||||
<div class="value-source">立案报告表-姓名</div>
|
||||
<div class="value-content">江小妹</div>
|
||||
</div>
|
||||
<div class="value-box">
|
||||
<div class="value-source">身份证-姓名</div>
|
||||
<div class="value-content">江小妹</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="status-indicator tooltip">
|
||||
<i class="ri-check-line" style="color: var(--success-color); font-size: 14px;"></i>
|
||||
<span class="tooltiptext">一致</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comparison-item match">
|
||||
<div class="field-label" style="display: none;">性别</div>
|
||||
<div class="comparison-values">
|
||||
<div class="value-box">
|
||||
<div class="value-source">立案报告表-性别</div>
|
||||
<div class="value-content">女</div>
|
||||
</div>
|
||||
<div class="value-box">
|
||||
<div class="value-source">身份证-性别</div>
|
||||
<div class="value-content">女</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="status-indicator tooltip">
|
||||
<i class="ri-check-line" style="color: var(--success-color); font-size: 14px;"></i>
|
||||
<span class="tooltiptext">一致</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comparison-item mismatch">
|
||||
<div class="field-label" style="display: none;">民族</div>
|
||||
<div class="comparison-values">
|
||||
<div class="value-box">
|
||||
<div class="value-source">立案报告表-民族</div>
|
||||
<div class="value-content">汉人</div>
|
||||
</div>
|
||||
<div class="value-box">
|
||||
<div class="value-source">身份证-民族</div>
|
||||
<div class="value-content">汉族</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="status-indicator tooltip">
|
||||
<i class="ri-alert-line" style="color: var(--warning-color); font-size: 14px;"></i>
|
||||
<span class="tooltiptext">不一致</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comparison-item match">
|
||||
<div class="field-label" style="display: none;">身份证号</div>
|
||||
<div class="comparison-values">
|
||||
<div class="value-box">
|
||||
<div class="value-source">立案报告表-身份证号</div>
|
||||
<div class="value-content">445322198602014328</div>
|
||||
</div>
|
||||
<div class="value-box">
|
||||
<div class="value-source">身份证-身份证号</div>
|
||||
<div class="value-content">445322198602014328</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="status-indicator tooltip">
|
||||
<i class="ri-check-line" style="color: var(--success-color); font-size: 14px;"></i>
|
||||
<span class="tooltiptext">一致</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comparison-item match long-content">
|
||||
<div class="field-label" style="display: none;">住址</div>
|
||||
<div class="comparison-values">
|
||||
<div class="value-box">
|
||||
<div class="value-source">立案报告表-住址 <i class="ri-arrow-left-right-line vs-icon"></i> 身份证-住址</div>
|
||||
<div class="value-content">广东省云浮市郁南县宋桂镇宋桂村委尾一村6号</div>
|
||||
</div>
|
||||
<div class="value-box">
|
||||
<div class="value-content">广东省云浮市郁南县宋桂镇宋桂村委尾一村6号</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="status-indicator tooltip">
|
||||
<i class="ri-check-line" style="color: var(--success-color); font-size: 14px;"></i>
|
||||
<span class="tooltiptext">一致</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 单位信息对比 -->
|
||||
<div class="comparison-group">
|
||||
<div class="group-title">
|
||||
<i class="ri-building-line"></i>
|
||||
单位信息对比
|
||||
</div>
|
||||
|
||||
<div class="comparison-item match long-content">
|
||||
<div class="field-label" style="display: none;">单位名称</div>
|
||||
<div class="comparison-values">
|
||||
<div class="value-box">
|
||||
<div class="value-source">立案报告表-单位名称 <i class="ri-arrow-left-right-line vs-icon"></i> 营业执照-单位名称</div>
|
||||
<div class="value-content">郁南县连滩镇领航烟酒商行</div>
|
||||
</div>
|
||||
<div class="value-box">
|
||||
<div class="value-content">郁南县连滩镇领航烟酒商行</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="status-indicator tooltip">
|
||||
<i class="ri-check-line" style="color: var(--success-color); font-size: 14px;"></i>
|
||||
<span class="tooltiptext">一致</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="comparison-item match long-content">
|
||||
<div class="field-label" style="display: none;">地址/住所</div>
|
||||
<div class="comparison-values">
|
||||
<div class="value-box">
|
||||
<div class="value-source">立案报告表-地址 <i class="ri-arrow-left-right-line vs-icon"></i> 营业执照-住所</div>
|
||||
<div class="value-content">郁南县连滩镇中华路106号一楼</div>
|
||||
</div>
|
||||
<div class="value-box">
|
||||
<div class="value-content">郁南县连滩镇中华路106号一楼</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="status-indicator tooltip">
|
||||
<i class="ri-check-line" style="color: var(--success-color); font-size: 14px;"></i>
|
||||
<span class="tooltiptext">一致</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 必要信息完整性检查 -->
|
||||
<div class="single-check-group">
|
||||
<!-- <div class="group-title">
|
||||
<i class="ri-file-check-line"></i>
|
||||
必要信息完整性检查
|
||||
</div> -->
|
||||
|
||||
<div class="check-item present">
|
||||
<div class="check-label">法定代表人</div>
|
||||
<div class="check-value">江小妹</div>
|
||||
<div class="check-status present tooltip">
|
||||
<i class="ri-check-line" style="font-size: 14px;"></i>
|
||||
<span class="tooltiptext">已填写</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="check-item present">
|
||||
<div class="check-label">年龄</div>
|
||||
<div class="check-value">38</div>
|
||||
<div class="check-status present tooltip">
|
||||
<i class="ri-check-line" style="font-size: 14px;"></i>
|
||||
<span class="tooltiptext">已填写</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="check-item present">
|
||||
<div class="check-label">联系电话</div>
|
||||
<div class="check-value">13430472175</div>
|
||||
<div class="check-status present tooltip">
|
||||
<i class="ri-check-line" style="font-size: 14px;"></i>
|
||||
<span class="tooltiptext">已填写</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 检查总结 -->
|
||||
<div class="summary-box">
|
||||
<div class="summary-title">
|
||||
<i class="ri-file-list-check-line"></i>
|
||||
检查总结
|
||||
</div>
|
||||
<div class="summary-content">
|
||||
<strong>检查结果:</strong>当事人基本情况记录完整,与身份证信息基本一致。<br>
|
||||
<strong>发现问题:</strong>民族字段存在细微差异("汉人" vs "汉族"),建议统一表述。<br>
|
||||
<strong>建议:</strong>将立案报告表中的"汉人"修改为"汉族"以保持一致性。
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 操作按钮 -->
|
||||
<div class="action-buttons">
|
||||
<button class="btn btn-secondary">
|
||||
<i class="ri-download-line"></i>
|
||||
导出报告
|
||||
</button>
|
||||
<button class="btn btn-primary">
|
||||
<i class="ri-check-double-line"></i>
|
||||
确认评查结果
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// 搜索功能
|
||||
document.querySelector('.search-input').addEventListener('input', function(e) {
|
||||
const searchTerm = e.target.value.toLowerCase();
|
||||
const resultCards = document.querySelectorAll('.result-card');
|
||||
|
||||
resultCards.forEach(card => {
|
||||
const title = card.querySelector('.result-title').textContent.toLowerCase();
|
||||
const content = card.querySelector('.result-body').textContent.toLowerCase();
|
||||
|
||||
if (title.includes(searchTerm) || content.includes(searchTerm)) {
|
||||
card.style.display = 'block';
|
||||
} else {
|
||||
card.style.display = 'none';
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 按钮点击事件
|
||||
document.querySelector('.btn-primary').addEventListener('click', function() {
|
||||
alert('评查结果已确认!');
|
||||
});
|
||||
|
||||
document.querySelector('.btn-secondary').addEventListener('click', function() {
|
||||
alert('正在导出评查报告...');
|
||||
});
|
||||
|
||||
// 卡片悬停效果
|
||||
document.querySelectorAll('.result-card').forEach(card => {
|
||||
card.addEventListener('mouseenter', function() {
|
||||
this.style.transform = 'translateY(-2px)';
|
||||
});
|
||||
|
||||
card.addEventListener('mouseleave', function() {
|
||||
this.style.transform = 'translateY(0)';
|
||||
});
|
||||
});
|
||||
|
||||
// 对比项悬停效果
|
||||
document.querySelectorAll('.comparison-item, .check-item').forEach(item => {
|
||||
item.addEventListener('mouseenter', function() {
|
||||
this.style.transform = 'translateX(2px)';
|
||||
});
|
||||
|
||||
item.addEventListener('mouseleave', function() {
|
||||
this.style.transform = 'translateX(0)';
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user