基础信息修改
parent
553a2a75a7
commit
026d86b082
|
|
@ -1,6 +1,15 @@
|
|||
const Cesium = window.Cesium;
|
||||
// 2026-08-08 修复:原实现在模块顶层直接 `const Cesium = window.Cesium` 并立即访问
|
||||
// `Cesium.createPropertyDescriptor` / `Cesium.Material` 执行材质注册。当 Cesium(CDN 全局脚本)
|
||||
// 尚未就绪(如离线/CDN 不可达/加载顺序差异)时,模块求值阶段即抛
|
||||
// "Cannot read properties of undefined (reading 'createPropertyDescriptor')",
|
||||
// 而该模块被自动路由同步加载,会连带阻塞整个应用启动(DvaRoot 渲染失败)。
|
||||
// 变更逻辑:① 统一改用 `window.Cesium` 取最新全局值,避免加载时缓存为 undefined;
|
||||
// ② 把依赖 Cesium 的材质注册逻辑延迟到 Cesium 就绪后执行(立即或 window load 事件),
|
||||
// 注册失败仅跳过、不抛错,保证即使 Cesium 暂未加载也不会拖垮应用启动。
|
||||
|
||||
function TrajectoryPolylineTrailLinkMaterialProperty(viewer) {
|
||||
// 构造时再取全局 Cesium,确保 Cesium 已就绪
|
||||
const Cesium = window.Cesium;
|
||||
this.viewer = viewer;
|
||||
this._definitionChanged = new Cesium.Event();
|
||||
this._uTime = 0;
|
||||
|
|
@ -17,7 +26,9 @@ Object.defineProperties(TrajectoryPolylineTrailLinkMaterialProperty.prototype, {
|
|||
return this._definitionChanged;
|
||||
},
|
||||
},
|
||||
uTime: Cesium.createPropertyDescriptor("uTime"),
|
||||
uTime: window.Cesium
|
||||
? window.Cesium.createPropertyDescriptor("uTime")
|
||||
: { get() { return this._uTime; }, set(v) { this._uTime = v; } },
|
||||
});
|
||||
|
||||
TrajectoryPolylineTrailLinkMaterialProperty.prototype.getType = function () {
|
||||
|
|
@ -28,6 +39,7 @@ TrajectoryPolylineTrailLinkMaterialProperty.prototype.getValue = function (
|
|||
time,
|
||||
result,
|
||||
) {
|
||||
const Cesium = window.Cesium;
|
||||
if (!Cesium.defined(result)) {
|
||||
result = {};
|
||||
}
|
||||
|
|
@ -52,8 +64,15 @@ TrajectoryPolylineTrailLinkMaterialProperty.prototype.equals = function (
|
|||
);
|
||||
};
|
||||
|
||||
Cesium.Material.CustomMaterialType = "CustomMaterial";
|
||||
Cesium.Material.CustomMaterialSource = `
|
||||
// 注册到 Cesium.Material(依赖 Cesium 全局脚本已就绪),失败仅跳过不阻断应用
|
||||
function registerTrajectoryMaterial() {
|
||||
try {
|
||||
const Cesium = window.Cesium;
|
||||
if (!Cesium || !Cesium.Material) {
|
||||
return;
|
||||
}
|
||||
Cesium.Material.CustomMaterialType = "CustomMaterial";
|
||||
Cesium.Material.CustomMaterialSource = `
|
||||
czm_material czm_getMaterial(czm_materialInput materialInput)
|
||||
{
|
||||
czm_material material = czm_getDefaultMaterial(materialInput);
|
||||
|
|
@ -66,16 +85,29 @@ czm_material czm_getMaterial(czm_materialInput materialInput)
|
|||
material.emission = material.diffuse * 0.5;
|
||||
return material;
|
||||
}`;
|
||||
Cesium.Material._materialCache.addMaterial(Cesium.Material.CustomMaterialType, {
|
||||
fabric: {
|
||||
type: Cesium.Material.CustomMaterialType,
|
||||
uniforms: {
|
||||
uTime: 0,
|
||||
},
|
||||
source: Cesium.Material.CustomMaterialSource,
|
||||
},
|
||||
});
|
||||
Cesium.TrajectoryPolylineTrailLinkMaterialProperty
|
||||
= TrajectoryPolylineTrailLinkMaterialProperty;
|
||||
} catch (e) {
|
||||
// Cesium 未就绪或注册异常:仅跳过,不阻断应用启动(Map 真实访问时 Cesium 已存在)
|
||||
// eslint-disable-next-line no-console
|
||||
console.warn("[TrajectoryPolylineTrailLinkMaterialProperty] 材质注册跳过:", e);
|
||||
}
|
||||
}
|
||||
|
||||
Cesium.Material._materialCache.addMaterial(Cesium.Material.CustomMaterialType, {
|
||||
fabric: {
|
||||
type: Cesium.Material.CustomMaterialType,
|
||||
uniforms: {
|
||||
uTime: 0,
|
||||
},
|
||||
source: Cesium.Material.CustomMaterialSource,
|
||||
},
|
||||
});
|
||||
// 模块顶层仅定义类;注册延迟到 Cesium 就绪(立即或 window load)后执行,避免阻断应用启动
|
||||
if (window.Cesium && window.Cesium.Material) {
|
||||
registerTrajectoryMaterial();
|
||||
} else {
|
||||
window.addEventListener("load", registerTrajectoryMaterial, { once: true });
|
||||
}
|
||||
|
||||
Cesium.TrajectoryPolylineTrailLinkMaterialProperty
|
||||
= TrajectoryPolylineTrailLinkMaterialProperty;
|
||||
export default TrajectoryPolylineTrailLinkMaterialProperty;
|
||||
|
|
|
|||
|
|
@ -1,14 +1,22 @@
|
|||
import PolylineTrailLinkImage from "~/assets/images/map_bi/wall_img.png";
|
||||
|
||||
const Cesium = window.Cesium;
|
||||
// 2026-08-08 修复:原实现在模块顶层 `const Cesium = window.Cesium` 并立即访问
|
||||
// `Cesium.Color` / `Cesium.Material` 执行材质注册。当 Cesium(CDN 全局脚本)尚未就绪时,
|
||||
// 模块求值阶段即抛错,而该模块被自动路由同步加载,会连带阻塞整个应用启动。
|
||||
// 变更逻辑:① 统一改用 `window.Cesium` 取最新全局值;② 材质注册延迟到 Cesium 就绪后执行,
|
||||
// 失败仅跳过、不抛错,保证应用可正常启动(Map 真实访问时 Cesium 已存在)。
|
||||
|
||||
function WallPolylineTrailLinkMaterialProperty(
|
||||
viewer,
|
||||
options = {
|
||||
color: Cesium.Color.fromBytes(201, 118, 243).withAlpha(0.5),
|
||||
// 构造时再取全局 Cesium,避免加载时缓存为 undefined
|
||||
color: window.Cesium
|
||||
? window.Cesium.Color.fromBytes(201, 118, 243).withAlpha(0.5)
|
||||
: undefined,
|
||||
duration: 2000,
|
||||
},
|
||||
) {
|
||||
const Cesium = window.Cesium;
|
||||
this.viewer = viewer;
|
||||
this._definitionChanged = new Cesium.Event();
|
||||
this._color = undefined;
|
||||
|
|
@ -29,15 +37,20 @@ Object.defineProperties(WallPolylineTrailLinkMaterialProperty.prototype, {
|
|||
return this._definitionChanged;
|
||||
},
|
||||
},
|
||||
color: Cesium.createPropertyDescriptor("color"),
|
||||
color: window.Cesium
|
||||
? window.Cesium.createPropertyDescriptor("color")
|
||||
: { get() { return this._color; }, set(v) { this._color = v; } },
|
||||
});
|
||||
|
||||
WallPolylineTrailLinkMaterialProperty.prototype.getType = function () {
|
||||
return "PolylineTrailLink";
|
||||
};
|
||||
|
||||
WallPolylineTrailLinkMaterialProperty.prototype.getValue = function (
|
||||
time,
|
||||
result,
|
||||
) {
|
||||
const Cesium = window.Cesium;
|
||||
if (!Cesium.defined(result)) {
|
||||
result = {};
|
||||
}
|
||||
|
|
@ -56,18 +69,28 @@ WallPolylineTrailLinkMaterialProperty.prototype.getValue = function (
|
|||
this.viewer.scene.requestRender();
|
||||
return result;
|
||||
};
|
||||
|
||||
WallPolylineTrailLinkMaterialProperty.prototype.equals = function (other) {
|
||||
const Cesium = window.Cesium;
|
||||
return (
|
||||
this === other
|
||||
|| (other instanceof WallPolylineTrailLinkMaterialProperty
|
||||
&& Cesium.Property.equals(this._color, other._color))
|
||||
);
|
||||
};
|
||||
Cesium.WallPolylineTrailLinkMaterialProperty
|
||||
= WallPolylineTrailLinkMaterialProperty;
|
||||
Cesium.Material.PolylineTrailLinkType = "PolylineTrailLink";
|
||||
Cesium.Material.PolylineTrailLinkImage = PolylineTrailLinkImage;
|
||||
Cesium.Material.PolylineTrailLinkSource = `czm_material czm_getMaterial(czm_materialInput
|
||||
|
||||
// 注册到 Cesium.Material(依赖 Cesium 全局脚本已就绪),失败仅跳过不阻断应用
|
||||
function registerWallMaterial() {
|
||||
try {
|
||||
const Cesium = window.Cesium;
|
||||
if (!Cesium || !Cesium.Material) {
|
||||
return;
|
||||
}
|
||||
Cesium.WallPolylineTrailLinkMaterialProperty
|
||||
= WallPolylineTrailLinkMaterialProperty;
|
||||
Cesium.Material.PolylineTrailLinkType = "PolylineTrailLink";
|
||||
Cesium.Material.PolylineTrailLinkImage = PolylineTrailLinkImage;
|
||||
Cesium.Material.PolylineTrailLinkSource = `czm_material czm_getMaterial(czm_materialInput
|
||||
materialInput)\n\
|
||||
{\n\
|
||||
czm_material material =
|
||||
|
|
@ -83,20 +106,35 @@ Cesium.Material.PolylineTrailLinkSource = `czm_material czm_getMaterial(czm_mate
|
|||
material.emission = fragColor.rgb;\n\
|
||||
return material;\n\
|
||||
}`;
|
||||
Cesium.Material._materialCache.addMaterial(
|
||||
Cesium.Material.PolylineTrailLinkType,
|
||||
{
|
||||
fabric: {
|
||||
type: Cesium.Material.PolylineTrailLinkType,
|
||||
uniforms: {
|
||||
color: new Cesium.Color(1.0, 1.0, 1.0, 1),
|
||||
image: Cesium.Material.PolylineTrailLinkImage,
|
||||
time: 0,
|
||||
Cesium.Material._materialCache.addMaterial(
|
||||
Cesium.Material.PolylineTrailLinkType,
|
||||
{
|
||||
fabric: {
|
||||
type: Cesium.Material.PolylineTrailLinkType,
|
||||
uniforms: {
|
||||
color: new Cesium.Color(1.0, 1.0, 1.0, 1),
|
||||
image: Cesium.Material.PolylineTrailLinkImage,
|
||||
time: 0,
|
||||
},
|
||||
source: Cesium.Material.PolylineTrailLinkSource,
|
||||
},
|
||||
translucent() {
|
||||
return true;
|
||||
},
|
||||
},
|
||||
source: Cesium.Material.PolylineTrailLinkSource,
|
||||
},
|
||||
translucent() {
|
||||
return true;
|
||||
},
|
||||
},
|
||||
);
|
||||
);
|
||||
} catch (e) {
|
||||
// Cesium 未就绪或注册异常:仅跳过,不阻断应用启动
|
||||
// eslint-disable-next-line no-console
|
||||
console.warn("[WallPolylineTrailLinkMaterialProperty] 材质注册跳过:", e);
|
||||
}
|
||||
}
|
||||
|
||||
// 模块顶层仅定义类;注册延迟到 Cesium 就绪(立即或 window load)后执行,避免阻断应用启动
|
||||
if (window.Cesium && window.Cesium.Material) {
|
||||
registerWallMaterial();
|
||||
} else {
|
||||
window.addEventListener("load", registerWallMaterial, { once: true });
|
||||
}
|
||||
|
||||
export default WallPolylineTrailLinkMaterialProperty;
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ import loginbg from "~/enumerate/img/loginbg.jpg";
|
|||
import logo from "~/enumerate/img/logo.png";
|
||||
import leftIcon from "~/enumerate/img/left-img.jpg";
|
||||
import "./index.less";
|
||||
import { cacheRegisterQueryParams } from "~/utils/resolveRegisterQueryParams";
|
||||
|
||||
function Register(props) {
|
||||
const { sendMessageAction, registerAction, register } = props;
|
||||
|
|
@ -74,6 +75,11 @@ function Register(props) {
|
|||
}
|
||||
message.success("操作成功");
|
||||
form.resetFields();
|
||||
// 2026-08-08 跳转填报页同时写入会话缓存,供填报页缺失路由参数时兜底读取(防止瞎写 registerUserId)
|
||||
cacheRegisterQueryParams({
|
||||
account: values.account,
|
||||
registerUserId: res.data.id,
|
||||
});
|
||||
props.history.push(
|
||||
`RegisterMore?account=${encodeURIComponent(values.account)}®isterUserId=${encodeURIComponent(res.data.id)}`,
|
||||
);
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,13 +1,349 @@
|
|||
// ============================================================
|
||||
// 2026-08-08 依据原型 V1.6 register.html「认证信息填报页」1:1 还原
|
||||
// 变更原因:原型为原生 HTML/CSS(非 antd),需按原型样式、布局、颜色、边框、字体、
|
||||
// 按钮、响应式做 1:1 还原。
|
||||
// 变更逻辑:将原型 register.html 内联 CSS 迁入本文件,置于 .register-more 命名空间下
|
||||
// 避免影响全局;保留 .audit-look 审核中动画等既有区块。
|
||||
// 变更理由:最小侵入、样式与原型一一对应,支持 max-width:760px 响应式单列布局。
|
||||
// ============================================================
|
||||
.register-more {
|
||||
position: relative;
|
||||
padding-bottom: 20px;
|
||||
// 背景
|
||||
min-height: 100vh;
|
||||
background: #f7f9fc;
|
||||
color: #1f2937;
|
||||
font-family: "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
|
||||
box-sizing: border-box;
|
||||
padding-bottom: 40px;
|
||||
|
||||
// ---- hero 头图区(原型 .hero)----
|
||||
.register-more-hero {
|
||||
height: 230px;
|
||||
background: linear-gradient(90deg, #eef3fb, #fff, #e7f0ff);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding-left: max(calc((100% - 1180px) / 2), 30px);
|
||||
|
||||
h1 {
|
||||
font-size: 26px;
|
||||
margin: 0;
|
||||
color: #1f2937;
|
||||
}
|
||||
}
|
||||
|
||||
// ---- 内容容器(原型 .wrap)----
|
||||
.register-more-wrap {
|
||||
max-width: 1180px;
|
||||
margin: auto;
|
||||
padding: 30px 24px 60px;
|
||||
}
|
||||
|
||||
// ---- 步骤条(原型 .steps / .step)----
|
||||
.register-more-steps {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
.register-more-step {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #9ca3af;
|
||||
font-size: 14px;
|
||||
|
||||
i {
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
border-radius: 50%;
|
||||
display: grid;
|
||||
place-items: center;
|
||||
background: #f0f2f5;
|
||||
font-style: normal;
|
||||
margin-right: 9px;
|
||||
font-size: 14px;
|
||||
}
|
||||
&.active {
|
||||
color: #111827;
|
||||
i {
|
||||
background: #1677ed;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
&:not(:last-child)::after {
|
||||
content: "";
|
||||
width: 100px;
|
||||
height: 1px;
|
||||
background: #cbd1da;
|
||||
margin: 0 20px;
|
||||
}
|
||||
}
|
||||
|
||||
// ---- 卡片(原型 .card)----
|
||||
.register-more-card {
|
||||
background: #fff;
|
||||
border: 1px solid #e4e9f0;
|
||||
padding: 28px 35px;
|
||||
border-radius: 5px;
|
||||
|
||||
h2 {
|
||||
text-align: center;
|
||||
margin: 0 0 26px;
|
||||
font-size: 22px;
|
||||
color: #1f2937;
|
||||
}
|
||||
}
|
||||
|
||||
// ---- 两列 grid(原型 .grid / .field)----
|
||||
.register-more-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
gap: 20px 60px;
|
||||
}
|
||||
.register-more-field {
|
||||
display: grid;
|
||||
grid-template-columns: 150px 1fr;
|
||||
align-items: center;
|
||||
|
||||
label {
|
||||
text-align: right;
|
||||
padding-right: 14px;
|
||||
font-size: 14px;
|
||||
color: #1f2937;
|
||||
}
|
||||
&.required label::before {
|
||||
content: "*";
|
||||
color: #ef4444;
|
||||
margin-right: 4px;
|
||||
}
|
||||
input,
|
||||
textarea {
|
||||
width: 100%;
|
||||
height: 36px;
|
||||
border: 1px solid #d3d8e1;
|
||||
border-radius: 3px;
|
||||
padding: 8px 11px;
|
||||
font: 14px inherit;
|
||||
color: #1f2937;
|
||||
background: #fff;
|
||||
outline: none;
|
||||
transition: border-color 0.15s;
|
||||
|
||||
&::placeholder {
|
||||
color: #9ca3af;
|
||||
}
|
||||
&:focus {
|
||||
border-color: #1677ed;
|
||||
}
|
||||
&:disabled {
|
||||
background: #f5f7fa;
|
||||
color: #9ca3af;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
textarea {
|
||||
height: 68px;
|
||||
resize: vertical;
|
||||
}
|
||||
&.align-start {
|
||||
align-items: start;
|
||||
label {
|
||||
padding-top: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.register-more-large-textarea {
|
||||
height: 150px !important;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
// ---- 控件容器与错误提示(原生受控表单)----
|
||||
.register-more-control {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 4px;
|
||||
input[type="number"] {
|
||||
// 隐藏 number input 的步进箭头,保持原型简洁外观
|
||||
&::-webkit-outer-spin-button,
|
||||
&::-webkit-inner-spin-button {
|
||||
-webkit-appearance: none;
|
||||
margin: 0;
|
||||
}
|
||||
-moz-appearance: textfield;
|
||||
appearance: textfield;
|
||||
}
|
||||
}
|
||||
.register-more-error {
|
||||
color: #ef4444;
|
||||
font-size: 12px;
|
||||
line-height: 1.4;
|
||||
margin-top: 2px;
|
||||
}
|
||||
.is-disabled {
|
||||
opacity: 0.6;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
// ---- 营业执照上传区(与单位名称/信用代码同为两列布局,按钮与文本输入框同高同边框)----
|
||||
.register-more-license {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: stretch;
|
||||
gap: 6px;
|
||||
}
|
||||
// 2026-08-08 营业执照按钮:与 .field input 同 36px 高、同 1px solid #d3d8e1 边框、同 3px 圆角,
|
||||
// 仅与右侧文本输入对齐且宽度自适应;框内左侧 * 红星表示必填。
|
||||
.register-more-file-btn {
|
||||
position: relative;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
height: 36px;
|
||||
padding: 0 11px;
|
||||
border: 1px solid #d3d8e1;
|
||||
border-radius: 3px;
|
||||
color: #1f2937;
|
||||
background: #fff;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
white-space: nowrap;
|
||||
flex: 0 0 auto;
|
||||
transition: border-color 0.15s;
|
||||
|
||||
&:hover {
|
||||
border-color: #1677ed;
|
||||
}
|
||||
input[type="file"] {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
opacity: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.register-more-file-text {
|
||||
color: #475569;
|
||||
}
|
||||
|
||||
// ---- 业务范围多选(原型 .scope-options)----
|
||||
.register-more-scope {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 10px 18px;
|
||||
padding: 14px;
|
||||
border: 1px solid #d3d8e1;
|
||||
border-radius: 3px;
|
||||
background: #fbfcfe;
|
||||
|
||||
label {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
text-align: left;
|
||||
padding: 0;
|
||||
font-size: 14px;
|
||||
line-height: 1.5;
|
||||
cursor: pointer;
|
||||
color: #1f2937;
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 3px 8px 0 0;
|
||||
flex: 0 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
// ---- 可选说明 / 底部提示(原型 .optional-note / .tip)----
|
||||
.register-more-optional-note {
|
||||
display: block;
|
||||
color: #8b95a5;
|
||||
font-size: 12px;
|
||||
margin-top: 6px;
|
||||
}
|
||||
.register-more-tip {
|
||||
margin: 20px 0 0 150px;
|
||||
color: #8b95a5;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
// ---- 全宽字段(原型 .wide)----
|
||||
.register-more-wide {
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
|
||||
// ---- 操作按钮(原型 .actions / .btn)----
|
||||
.register-more-actions {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 14px;
|
||||
border-top: 1px solid #edf0f4;
|
||||
margin-top: 28px;
|
||||
padding-top: 24px;
|
||||
}
|
||||
.register-more-btn {
|
||||
height: 40px;
|
||||
padding: 0 25px;
|
||||
border: 0;
|
||||
border-radius: 4px;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
transition: opacity 0.15s;
|
||||
|
||||
&:disabled {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
&.primary {
|
||||
background: #1677ed;
|
||||
color: #fff;
|
||||
&:hover:not(:disabled) {
|
||||
background: #0958d9;
|
||||
}
|
||||
}
|
||||
&.secondary {
|
||||
background: #f1f4f8;
|
||||
color: #475569;
|
||||
&:hover:not(:disabled) {
|
||||
background: #e5eaf1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ---- 营业执照文件列表(自定义,贴近原型原生 file input 的说明样式)----
|
||||
.register-more-license-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px;
|
||||
margin-top: 8px;
|
||||
.license-item {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
border: 1px solid #d3d8e1;
|
||||
border-radius: 3px;
|
||||
background: #fbfcfe;
|
||||
padding: 4px 8px;
|
||||
font-size: 12px;
|
||||
color: #1f2937;
|
||||
a {
|
||||
color: #1677ed;
|
||||
text-decoration: none;
|
||||
}
|
||||
.license-remove {
|
||||
border: 0;
|
||||
background: none;
|
||||
color: #ef4444;
|
||||
cursor: pointer;
|
||||
font-size: 14px;
|
||||
line-height: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ---- 审核中/通过 区块(既有动画,保留)----
|
||||
.audit-look {
|
||||
background-repeat: no-repeat;
|
||||
height: 175px;
|
||||
width: 171px;
|
||||
position: relative;
|
||||
}
|
||||
.audit-look-img{
|
||||
.audit-look-img {
|
||||
position: absolute;
|
||||
width: 45px;
|
||||
height: 45px;
|
||||
|
|
@ -17,7 +353,6 @@
|
|||
margin-left: -22.5px;
|
||||
animation: orbit-clockwise 2s linear infinite;
|
||||
}
|
||||
|
||||
@keyframes orbit-clockwise {
|
||||
from {
|
||||
transform: rotate(0deg) translateX(8px) rotate(0deg);
|
||||
|
|
@ -26,23 +361,58 @@
|
|||
transform: rotate(360deg) translateX(8px) rotate(-360deg);
|
||||
}
|
||||
}
|
||||
.register-more-header {
|
||||
height: 250px;
|
||||
position: relative;
|
||||
.register-more-header-content {
|
||||
width: 1200px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
.register-more-header-title {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
.register-more-state {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 16px;
|
||||
color: #1f2937;
|
||||
font-size: 16px;
|
||||
img {
|
||||
max-width: 120px;
|
||||
}
|
||||
}
|
||||
.register-more-content {
|
||||
width: 1200px;
|
||||
margin: 30px auto 20px;
|
||||
|
||||
// ---- 响应式(原型 @media max-width:760px)----
|
||||
@media (max-width: 760px) {
|
||||
.register-more-hero {
|
||||
height: 140px;
|
||||
padding-left: 20px;
|
||||
h1 {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
.register-more-wrap {
|
||||
padding: 20px 10px;
|
||||
}
|
||||
.register-more-card {
|
||||
padding: 20px 12px;
|
||||
h2 {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
.register-more-grid {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 14px;
|
||||
}
|
||||
.register-more-wide {
|
||||
grid-column: auto;
|
||||
}
|
||||
.register-more-field {
|
||||
grid-template-columns: 125px 1fr;
|
||||
}
|
||||
.register-more-scope {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.register-more-step:not(:last-child)::after {
|
||||
width: 28px;
|
||||
margin: 0 7px;
|
||||
}
|
||||
.register-more-step {
|
||||
font-size: 12px;
|
||||
}
|
||||
.register-more-tip {
|
||||
margin-left: 125px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,35 @@
|
|||
import { tools } from "@cqsjjb/jjb-common-lib";
|
||||
|
||||
// ===== 2026-08-08 注册填报参数解析:路由参数 + 会话缓存兜底(变更原因) =====
|
||||
// 变更理由:填报页 registerUserId 必须来自"真实注册流程的路由参数"或"本次会话缓存",
|
||||
// 禁止用户手改 URL 瞎写非法 id(此前出现过 create_id 与真实账户脱节的问题)。
|
||||
// 备注:使用 sessionStorage(会话级缓存),刷新/重进不丢失,关闭标签页即清除,不污染全局。
|
||||
const QUERY_KEYS = ["account", "registerUserId"];
|
||||
const CACHE_KEY = "registerQueryParams";
|
||||
|
||||
// 注册成功后写入缓存,供填报页缺失路由参数时兜底读取
|
||||
export function cacheRegisterQueryParams(params) {
|
||||
try {
|
||||
if (!params) return;
|
||||
const next = { ...readCachedParams() };
|
||||
for (const key of QUERY_KEYS) {
|
||||
if (params[key]) next[key] = params[key];
|
||||
}
|
||||
sessionStorage.setItem(CACHE_KEY, JSON.stringify(next));
|
||||
} catch {
|
||||
// ignore
|
||||
}
|
||||
}
|
||||
|
||||
function readCachedParams() {
|
||||
try {
|
||||
const raw = sessionStorage.getItem(CACHE_KEY);
|
||||
if (!raw) return {};
|
||||
return JSON.parse(raw) || {};
|
||||
} catch {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
function parseFromSearch(search) {
|
||||
const params = {};
|
||||
|
|
@ -73,6 +102,7 @@ export function resolveRegisterQueryParams() {
|
|||
parseFromUrl(window.location.href),
|
||||
parseFromUrl(document.referrer),
|
||||
readRouterQuery(),
|
||||
readCachedParams(),
|
||||
];
|
||||
|
||||
for (const source of sources) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue