修改详情页面手机端展示问题

main
kangwenjing 2026-04-15 10:45:46 +08:00
parent 8c0e11b0a8
commit b3f85504f6
8 changed files with 137 additions and 77 deletions

View File

@ -24,29 +24,30 @@
<option name="hideEmptyMiddlePackages" value="true" /> <option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" /> <option name="showLibraryContents" value="true" />
</component> </component>
<component name="PropertiesComponent">{ <component name="PropertiesComponent"><![CDATA[{
&quot;keyToString&quot;: { "keyToString": {
&quot;RequestMappingsPanelOrder0&quot;: &quot;0&quot;, "RequestMappingsPanelOrder0": "0",
&quot;RequestMappingsPanelOrder1&quot;: &quot;1&quot;, "RequestMappingsPanelOrder1": "1",
&quot;RequestMappingsPanelWidth0&quot;: &quot;75&quot;, "RequestMappingsPanelWidth0": "75",
&quot;RequestMappingsPanelWidth1&quot;: &quot;75&quot;, "RequestMappingsPanelWidth1": "75",
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;, "RunOnceActivity.OpenProjectViewOnStart": "true",
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;, "RunOnceActivity.ShowReadmeOnStart": "true",
&quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;, "WebServerToolWindowFactoryState": "false",
&quot;git-widget-placeholder&quot;: &quot;main&quot;, "git-widget-placeholder": "main",
&quot;last_opened_file_path&quot;: &quot;/Users/kangwenjing/Downloads/crm/unis_crm&quot;, "last_opened_file_path": "/Users/kangwenjing/Downloads/crm/unis_crm",
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;, "node.js.detected.package.eslint": "true",
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;, "node.js.detected.package.tslint": "true",
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;, "node.js.selected.package.eslint": "(autodetect)",
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;, "node.js.selected.package.tslint": "(autodetect)",
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;, "nodejs_package_manager_path": "npm",
&quot;project.structure.last.edited&quot;: &quot;模块&quot;, "project.structure.last.edited": "项目",
&quot;project.structure.proportion&quot;: &quot;0.0&quot;, "project.structure.proportion": "0.14450866",
&quot;project.structure.side.proportion&quot;: &quot;0.0&quot;, "project.structure.side.proportion": "0.18800648",
&quot;ts.external.directory.path&quot;: &quot;/Users/kangwenjing/Downloads/crm/unis_crm/frontend/node_modules/typescript/lib&quot;, "settings.editor.selected.configurable": "configurable.group.appearance",
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot; "ts.external.directory.path": "/Users/kangwenjing/Downloads/crm/unis_crm/frontend/node_modules/typescript/lib",
"vue.rearranger.settings.migration": "true"
} }
}</component> }]]></component>
<component name="RunManager" selected="Spring Boot.UnisCrmBackendApplication"> <component name="RunManager" selected="Spring Boot.UnisCrmBackendApplication">
<configuration name="unis-crm-backend中的所有" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true"> <configuration name="unis-crm-backend中的所有" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
<module name="unis-crm-backend" /> <module name="unis-crm-backend" />
@ -92,6 +93,7 @@
<workItem from="1775200047785" duration="3902000" /> <workItem from="1775200047785" duration="3902000" />
<workItem from="1775541962012" duration="805000" /> <workItem from="1775541962012" duration="805000" />
<workItem from="1775611219527" duration="1273000" /> <workItem from="1775611219527" duration="1273000" />
<workItem from="1775721940000" duration="8576000" />
</task> </task>
<task id="LOCAL-00001" summary="修改定位信息 0323"> <task id="LOCAL-00001" summary="修改定位信息 0323">
<option name="closed" value="true" /> <option name="closed" value="true" />

View File

@ -2263,7 +2263,7 @@ export default function Expansion() {
animate={{ x: 0, y: 0 }} animate={{ x: 0, y: 0 }}
exit={{ x: "100%", y: 0 }} exit={{ x: "100%", y: 0 }}
transition={{ type: "spring", damping: 25, stiffness: 200 }} transition={{ type: "spring", damping: 25, stiffness: 200 }}
className={`fixed inset-x-0 bottom-0 z-50 flex h-[88dvh] w-full flex-col rounded-t-3xl border border-slate-200 bg-white shadow-2xl transition-opacity dark:border-slate-800 dark:bg-slate-900 sm:inset-y-0 sm:right-0 sm:left-auto sm:h-full sm:max-w-2xl lg:max-w-3xl sm:rounded-none sm:rounded-l-3xl sm:border-l ${ className={`fixed inset-x-0 bottom-0 z-50 flex h-[88dvh] w-full flex-col overflow-hidden rounded-t-3xl border border-slate-200 bg-white shadow-2xl transition-opacity dark:border-slate-800 dark:bg-slate-900 sm:inset-y-0 sm:right-0 sm:left-auto sm:h-full sm:max-w-2xl lg:max-w-3xl sm:rounded-none sm:rounded-l-3xl sm:border-l ${
hasForegroundModal ? "pointer-events-none opacity-20" : "" hasForegroundModal ? "pointer-events-none opacity-20" : ""
}`} }`}
> >
@ -2277,7 +2277,7 @@ export default function Expansion() {
</button> </button>
</div> </div>
<div className="flex-1 overflow-y-auto px-5 py-5 sm:px-6"> <div className="min-h-0 flex-1 overflow-y-auto px-5 py-5 sm:px-6">
<div className="crm-modal-stack"> <div className="crm-modal-stack">
<div> <div>
{selectedItem.type === "sales" ? ( {selectedItem.type === "sales" ? (
@ -2480,23 +2480,25 @@ export default function Expansion() {
</div> </div>
)} )}
</div> </div>
<div className="sticky bottom-0 bg-slate-50/95 px-4 pb-[calc(1rem+env(safe-area-inset-bottom))] pt-4 backdrop-blur sm:static sm:p-4 dark:bg-slate-900/90">
{!canEditSelectedItem ? (
<p className="mb-3 text-xs text-slate-400 dark:text-slate-500"></p>
) : null}
<div className="flex">
<button
type="button"
onClick={() => void handleOpenEdit()}
disabled={!canEditSelectedItem}
title={canEditSelectedItem ? "编辑资料" : "仅本人可操作"}
className="crm-btn-sm crm-btn-secondary flex-1 disabled:cursor-not-allowed disabled:opacity-60"
>
{canEditSelectedItem ? "编辑资料" : "仅本人可操作"}
</button>
</div>
</div> </div>
<div className="w-full shrink-0 border-t border-slate-200/80 bg-slate-50/95 backdrop-blur dark:border-slate-800/80 dark:bg-slate-900/90">
<div className="px-4 pb-[calc(1rem+env(safe-area-inset-bottom))] pt-4 sm:p-4">
{!canEditSelectedItem ? (
<p className="mb-3 text-xs text-slate-400 dark:text-slate-500"></p>
) : null}
<div className="grid grid-cols-1 gap-3">
<button
type="button"
onClick={() => void handleOpenEdit()}
disabled={!canEditSelectedItem}
title={canEditSelectedItem ? "编辑资料" : "仅本人可操作"}
className="crm-btn crm-btn-secondary inline-flex h-11 w-full items-center justify-center disabled:cursor-not-allowed disabled:opacity-60"
>
{canEditSelectedItem ? "编辑资料" : "仅本人可操作"}
</button>
</div>
</div>
</div> </div>
</motion.div> </motion.div>
</> </>

View File

@ -2506,7 +2506,7 @@ export default function Opportunities() {
animate={{ x: 0, y: 0 }} animate={{ x: 0, y: 0 }}
exit={{ x: "100%", y: 0 }} exit={{ x: "100%", y: 0 }}
transition={{ type: "spring", damping: 25, stiffness: 200 }} transition={{ type: "spring", damping: 25, stiffness: 200 }}
className={`fixed inset-x-0 bottom-0 z-50 flex h-[90dvh] w-full flex-col rounded-t-3xl border border-slate-200 bg-white shadow-2xl transition-opacity dark:border-slate-800 dark:bg-slate-900 sm:inset-y-0 sm:right-0 sm:left-auto sm:h-full sm:w-[min(840px,92vw)] sm:max-w-none sm:rounded-none sm:rounded-l-3xl sm:border-l lg:w-[min(960px,90vw)] ${hasForegroundModal ? "pointer-events-none opacity-20" : ""}`} className={`fixed inset-x-0 bottom-0 z-50 flex h-[90dvh] w-full flex-col overflow-hidden rounded-t-3xl border border-slate-200 bg-white shadow-2xl transition-opacity dark:border-slate-800 dark:bg-slate-900 sm:inset-y-0 sm:right-0 sm:left-auto sm:h-full sm:w-[min(840px,92vw)] sm:max-w-none sm:rounded-none sm:rounded-l-3xl sm:border-l lg:w-[min(960px,90vw)] ${hasForegroundModal ? "pointer-events-none opacity-20" : ""}`}
> >
<div className="flex items-center justify-between border-b border-slate-100 px-5 py-4 dark:border-slate-800 sm:px-6"> <div className="flex items-center justify-between border-b border-slate-100 px-5 py-4 dark:border-slate-800 sm:px-6">
<div className="flex items-center gap-3"> <div className="flex items-center gap-3">
@ -2518,7 +2518,7 @@ export default function Opportunities() {
</button> </button>
</div> </div>
<div className="flex-1 overflow-y-auto px-4 py-4 sm:px-6 sm:py-5"> <div className="min-h-0 flex-1 overflow-y-auto px-4 py-4 sm:px-6 sm:py-5">
<div className="crm-modal-stack"> <div className="crm-modal-stack">
<div> <div>
<div className="mb-2 flex items-center gap-2"> <div className="mb-2 flex items-center gap-2">
@ -2671,41 +2671,43 @@ export default function Opportunities() {
</div> </div>
</div> </div>
</div> </div>
<div className="sticky bottom-0 bg-slate-50/95 px-4 pb-[calc(1rem+env(safe-area-inset-bottom))] pt-4 backdrop-blur sm:static sm:p-4 dark:bg-slate-900/90"> <div className="w-full shrink-0 border-t border-slate-200/80 bg-slate-50/95 backdrop-blur dark:border-slate-800/80 dark:bg-slate-900/90">
{error ? <div className="crm-alert crm-alert-error mb-3">{error}</div> : null} <div className="px-4 pb-[calc(1rem+env(safe-area-inset-bottom))] pt-4 sm:p-4">
{!canEditSelectedItem ? ( {error ? <div className="crm-alert crm-alert-error mb-3">{error}</div> : null}
<p className="mb-3 text-xs text-slate-400 dark:text-slate-500"></p> {!canEditSelectedItem ? (
) : null} <p className="mb-3 text-xs text-slate-400 dark:text-slate-500"></p>
<div className="grid grid-cols-2 gap-3"> ) : null}
<button <div className="grid grid-cols-2 gap-3">
type="button" <button
onClick={handleOpenEdit} type="button"
disabled={!canEditSelectedItem} onClick={handleOpenEdit}
title={canEditSelectedItem ? "编辑商机" : "仅本人可操作"} disabled={!canEditSelectedItem}
className="crm-btn crm-btn-secondary inline-flex h-11 items-center justify-center disabled:cursor-not-allowed disabled:opacity-60" title={canEditSelectedItem ? "编辑商机" : "仅本人可操作"}
> className="crm-btn crm-btn-secondary inline-flex h-11 items-center justify-center disabled:cursor-not-allowed disabled:opacity-60"
{canEditSelectedItem ? "编辑商机" : "仅本人可操作"} >
</button> {canEditSelectedItem ? "编辑商机" : "仅本人可操作"}
<button </button>
type="button" <button
onClick={() => void handleOpenPushConfirm()} type="button"
disabled={!canPushSelectedItem || pushingOms} onClick={() => void handleOpenPushConfirm()}
title={ disabled={!canPushSelectedItem || pushingOms}
!canPushSelectedItem title={
? "仅本人可操作" !canPushSelectedItem
: selectedItem.pushedToOms ? "仅本人可操作"
? "重新推送 OMS" : selectedItem.pushedToOms
: "推送 OMS" ? "重新推送 OMS"
} : "推送 OMS"
className={cn( }
"crm-btn inline-flex h-11 items-center justify-center disabled:cursor-not-allowed disabled:opacity-60", className={cn(
!canPushSelectedItem "crm-btn inline-flex h-11 items-center justify-center disabled:cursor-not-allowed disabled:opacity-60",
? "cursor-not-allowed rounded-2xl border border-slate-200 bg-slate-50 text-slate-400 dark:border-slate-800 dark:bg-slate-800/40 dark:text-slate-500" !canPushSelectedItem
: "crm-btn-primary", ? "cursor-not-allowed rounded-2xl border border-slate-200 bg-slate-50 text-slate-400 dark:border-slate-800 dark:bg-slate-800/40 dark:text-slate-500"
)} : "crm-btn-primary",
> )}
{!canPushSelectedItem ? "仅本人可操作" : pushingOms ? "推送中..." : selectedItem.pushedToOms ? "重新推送 OMS" : "推送 OMS"} >
</button> {!canPushSelectedItem ? "仅本人可操作" : pushingOms ? "推送中..." : selectedItem.pushedToOms ? "重新推送 OMS" : "推送 OMS"}
</button>
</div>
</div> </div>
</div> </div>
</motion.div> </motion.div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

View File

@ -0,0 +1,54 @@
{
"opportunityMetrics": {
"initialMetrics": {
"viewportHeight": 932,
"panelBottom": 932,
"scrollBottom": 822,
"footerTop": 822,
"footerBottom": 931,
"overlap": 0,
"safeBottom": "16px",
"scrollHeight": 1268,
"clientHeight": 640,
"scrollTop": 0
},
"bottomMetrics": {
"viewportHeight": 932,
"panelBottom": 932,
"scrollBottom": 822,
"footerTop": 822,
"footerBottom": 931,
"overlap": 0,
"safeBottom": "16px",
"scrollHeight": 1268,
"clientHeight": 640,
"scrollTop": 628
}
},
"channelMetrics": {
"initialMetrics": {
"viewportHeight": 932,
"panelBottom": 932,
"scrollBottom": 931,
"footerTop": 181.84375,
"footerBottom": 931,
"overlap": 749.15625,
"safeBottom": "20px",
"scrollHeight": 1316,
"clientHeight": 749,
"scrollTop": 0
},
"bottomMetrics": {
"viewportHeight": 932,
"panelBottom": 932,
"scrollBottom": 931,
"footerTop": 181.84375,
"footerBottom": 931,
"overlap": 749.15625,
"safeBottom": "20px",
"scrollHeight": 1316,
"clientHeight": 749,
"scrollTop": 567
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 221 KiB