v24 第 9 批:名册九条(分组按钮/加入名册/生日月日/地址四级/千人性能/拖动修复/删除人员/返回名册/Semi DatePicker)
- #131 名册卡片加「分组」按钮(details+radio,显示当前分组,选中即改) - #132 修复「从已有人里加入名册」无反应 - #133 生日只显示月和日(阳历 MM-DD / 农历中文名),PersonQuery::birthdaysOf 取代 birthdayOf - #134 地址结构化为 国家/省/市/区+详细:regions 表(3429 行全国区划)+ Region.php + ?r=regions 级联接口 + 表单 .addr-grid + 老地址回填(Schema v16) - #135 千人名册性能:.person content-visibility:auto + 名册页 ob_gzhandler (实测 服务端 1.15s/3.8MB → 0.17s/87KB;客户端导航→load 1.35s → 0.37s) - #136 拖动排序改 Pointer Events(Chrome 下 HTML5 DnD 在 DOM 变动时断) - #137 个人详情页底部「删除人员」 - #138 编辑资料页加「返回名册」 - #139 所有日期选择换 Semi Design DatePicker(渐进增强:原生四字段保 POST 契约, 懒加载 vendor semi UMD,值回写原字段;工作经历 type=month 一并升级;宣纸主题对齐) 验证:e2e 785/0、batch9 37/0、upgrade 126/0、picker 28/0、mobile 688/0、interact 97/0、 batch_e 91/0、import 21/0、douban 22/0、drag 5/0、semi-integrate 28/0、semi-probe 17/0、 geom 5/5;部署后线上自检 16/16(含 4 个 semi 资源 200 + regions 路由)。
This commit is contained in:
+19
-8
@@ -36,13 +36,23 @@ $dtHour = $dtTs ? (int)date('G', $dtTs) : 0; // G = 0..23,天然 24 小时
|
||||
$dtMin = $dtTs ? (int)date('i', $dtTs) : 0;
|
||||
$dtSec = $dtTs ? (int)date('s', $dtTs) : 0;
|
||||
?>
|
||||
<div class="dt-input">
|
||||
<input type="date" class="dt-date" name="<?= e($dtName) ?>_date"
|
||||
<?= $dtId !== '' ? 'id="' . e($dtId) . '"' : '' ?>
|
||||
value="<?= e($dtDate) ?>"<?= $dtRequired ? ' required' : '' ?>
|
||||
aria-label="日期">
|
||||
<span class="dt-time">
|
||||
<select class="dt-hour" name="<?= e($dtName) ?>_hour" aria-label="时(24 小时制)">
|
||||
<?php /* v24 第 9 批 #9:所有日期选择换 Semi Design DatePicker(用户点名,样式与宣纸主题统一)。
|
||||
策略是**渐进增强**,原生四字段原样保留:
|
||||
· 表单契约(*_date/_hour/_minute/_second → read_dt_input())不变,服务端零改动;
|
||||
· Semi 资源(3.4 MB JS)只有页面真出现 .dt-input 才由 app.js 懒加载;
|
||||
· 加载成功 → 隐藏 .dt-native、在 .dt-semi 里挂 DatePicker,值回写原字段;
|
||||
· 加载失败/断网 → 原生控件原样可见可用,页面不会坏。 */
|
||||
$dtCfg = ['name' => $dtName, 'seconds' => $dtSeconds, 'required' => $dtRequired, 'id' => $dtId];
|
||||
?>
|
||||
<div class="dt-input" data-dt="<?= e(json_encode($dtCfg, JSON_UNESCAPED_UNICODE | JSON_HEX_APOS | JSON_HEX_QUOT)) ?>">
|
||||
<span class="dt-semi" aria-hidden="true"></span>
|
||||
<span class="dt-native">
|
||||
<input type="date" class="dt-date" name="<?= e($dtName) ?>_date"
|
||||
<?= $dtId !== '' ? 'id="' . e($dtId) . '"' : '' ?>
|
||||
value="<?= e($dtDate) ?>"<?= $dtRequired ? ' required' : '' ?>
|
||||
aria-label="日期">
|
||||
<span class="dt-time">
|
||||
<select class="dt-hour" name="<?= e($dtName) ?>_hour" aria-label="时(24 小时制)">
|
||||
<?php for ($dtH = 0; $dtH < 24; $dtH++): $hv = sprintf('%02d', $dtH); ?>
|
||||
<option value="<?= $hv ?>"<?= $dtH === $dtHour ? ' selected' : '' ?>><?= $hv ?></option>
|
||||
<?php endfor; ?>
|
||||
@@ -64,10 +74,11 @@ $dtSec = $dtTs ? (int)date('s', $dtTs) : 0;
|
||||
<?php endfor; ?>
|
||||
</select>
|
||||
<?php endif; ?>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<?php /* 用完即清,避免残留变量影响下一次 include */ unset(
|
||||
$dtName, $dtValue, $dtRequired, $dtId, $dtSeconds,
|
||||
$dtName, $dtValue, $dtRequired, $dtId, $dtSeconds, $dtCfg,
|
||||
$dtTs, $dtTsTmp, $dtDate, $dtHour, $dtMin, $dtSec,
|
||||
$dtH, $dtM, $dtS, $hv, $mv, $sv
|
||||
); ?>
|
||||
|
||||
Reference in New Issue
Block a user