Files

87 lines
3.5 KiB
PHP
Raw Permalink Normal View History

<?php $isEdit = $mode !== null; ?>
<div class="page-header">
<div>
<h1><?= $isEdit ? '编辑出行方式' : '新增出行方式' ?></h1>
<?php if ($isEdit): ?>
<p class="muted">ID:<?= (int)$mode['id'] ?></p>
<?php endif; ?>
</div>
<a href="<?= url('travel_modes/index') ?>" class="btn">返回列表</a>
</div>
<form method="post" action="<?= url($isEdit ? 'travel_modes/update' : 'travel_modes/store') ?>" class="form">
<input type="hidden" name="_csrf" value="<?= e(csrf_token()) ?>">
<?php if ($isEdit): ?>
<input type="hidden" name="id" value="<?= (int)$mode['id'] ?>">
<?php endif; ?>
<div class="form-row">
<label>交通类型 *</label>
<select name="mode_type" id="mode-type-select" required>
<?php foreach ($modeLabels as $key => $label): ?>
<option value="<?= e($key) ?>" <?= ($mode['mode_type'] ?? '') === $key ? 'selected' : '' ?>>
<?= e($label) ?>
</option>
<?php endforeach; ?>
</select>
<p class="muted" style="font-size:12px; margin-top:6px;">
具体的车次、航班号、座位号在「活动节点」中填写,此处只维护出行方式本身。
</p>
</div>
<div class="form-row mode-field" id="field-vehicle_id" style="display:none;">
<label>选择车辆 *</label>
<select name="vehicle_id" id="vehicle-select">
<option value="">— 请选择车辆 —</option>
<?php foreach ($vehicles as $v): ?>
<option value="<?= (int)$v['id'] ?>"
data-vtype="<?= e($v['vehicle_type']) ?>"
<?= (int)($mode['vehicle_id'] ?? 0) === (int)$v['id'] ? 'selected' : '' ?>>
<?= e($v['plate_number'] . ' · ' . $v['model_name'] . ($v['vehicle_type'] === 'rental' ? '(租)' : '')) ?>
</option>
<?php endforeach; ?>
</select>
<p class="muted" style="font-size:12px; margin-top:6px;">
自有车/租车类型只能选择对应车辆。若列表为空,请先维护车辆库。
</p>
</div>
<div class="form-row">
<label>备注</label>
<textarea name="notes" rows="3" placeholder="其他补充说明,如常走的路线、使用偏好等"><?= e($mode['notes'] ?? '') ?></textarea>
</div>
<div class="form-actions">
<a href="<?= url('travel_modes/index') ?>" class="btn">取消</a>
<button type="submit" class="btn-primary">保存</button>
</div>
</form>
<script>
(function () {
var modeSelect = document.getElementById('mode-type-select');
if (!modeSelect) return;
var vehicleField = document.getElementById('field-vehicle_id');
var vehicleSelect = document.getElementById('vehicle-select');
function refresh() {
var type = modeSelect.value;
var isDrive = (type === 'drive_own' || type === 'drive_rental');
vehicleField.style.display = isDrive ? '' : 'none';
if (vehicleSelect) {
var want = type === 'drive_own' ? 'own' : (type === 'drive_rental' ? 'rental' : null);
Array.prototype.forEach.call(vehicleSelect.options, function (opt) {
if (!opt.value) return;
var vt = opt.getAttribute('data-vtype');
opt.hidden = (want && vt !== want);
if (opt.hidden && opt.selected) opt.selected = false;
});
}
}
modeSelect.addEventListener('change', refresh);
refresh();
})();
</script>