初始化

This commit is contained in:
2026-08-08 18:28:49 +08:00
parent 9bef4420e0
commit f082037a6e
854 changed files with 217171 additions and 11 deletions
+151
View File
@@ -0,0 +1,151 @@
<?php
$activeMenu = 'productModel';
include APP_PATH . 'app/views/layouts/admin_header.php';
?>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="box box-primary">
<div class="box-header with-border">
<h3 class="box-title"><i class="fa fa-plus"></i> 添加产品型号</h3>
</div>
<form method="post" action="">
<input type="hidden" name="csrf_token" value="<?php echo htmlspecialchars($csrfToken); ?>">
<div class="box-body">
<?php if (!empty($error)): ?>
<div class="alert alert-danger alert-dismissible">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
<i class="icon fa fa-ban"></i> <?php echo htmlspecialchars($error); ?>
</div>
<?php endif; ?>
<div class="form-group">
<label>类型 <span class="text-danger">*</span></label>
<select name="type" id="typeSelect" class="form-control" required>
<option value="">-- 请选择类型 --</option>
<?php if (!empty($typeConfigs)): ?>
<?php foreach ($typeConfigs as $cfg): ?>
<option value="<?php echo htmlspecialchars($cfg['type_name']); ?>"><?php echo htmlspecialchars($cfg['type_name']); ?></option>
<?php endforeach; ?>
<?php else: ?>
<option value="成品">成品</option>
<option value="电池">电池</option>
<option value="外壳">外壳</option>
<option value="外壳颜色">外壳颜色</option>
<option value="包装">包装</option>
<option value="半成品">半成品</option>
<option value="配件">配件</option>
<?php endif; ?>
</select>
</div>
<div class="form-group" id="productTypeGroup">
<label id="productTypeLabel">产品类型 <span class="text-danger">*</span></label>
<input type="text" name="product_type" id="productTypeInput" class="form-control" placeholder="如:电池、外壳,成品" required>
</div>
<div class="form-group" id="modelCodeGroup">
<label>产品型号 <span class="text-danger">*</span></label>
<input type="text" name="model_code" id="modelCodeInput" class="form-control" placeholder="如:T8" required>
</div>
<div class="form-group" id="colorGroup">
<label>颜色</label>
<input type="text" name="color" id="colorInput" class="form-control" placeholder="如:珍珠白、深空灰">
</div>
<div class="form-group">
<label>产品说明</label>
<textarea name="description" class="form-control" rows="3" placeholder="产品描述信息"></textarea>
</div>
<script>
(function(){
var $typeSel = $('#typeSelect');
var $ptGroup = $('#productTypeGroup');
var $ptLabel = $('#productTypeLabel');
var $ptInput = $('#productTypeInput');
var $modelCodeGroup = $('#modelCodeGroup');
var $modelCodeInput = $('#modelCodeInput');
var $colorGroup = $('#colorGroup');
var $colorInput = $('#colorInput');
// 类型配置数据(从服务端传入)
var typeConfigs = <?php echo json_encode($typeConfigs ?? [], JSON_UNESCAPED_UNICODE); ?>;
// 构建类型名→配置映射
var typeConfigMap = {};
if (Array.isArray(typeConfigs)) {
typeConfigs.forEach(function(cfg) {
typeConfigMap[cfg.type_name] = cfg;
});
}
function updateProductTypeField() {
var t = $typeSel.val();
var cfg = typeConfigMap[t] || {};
// 产品类型输入框(三态:hidden/readonly/editable
var ptState = cfg.product_type_state || 'editable';
var field = cfg.product_type_field || 'product_type';
// 当 product_type_field === 'color' 且颜色框可见时,
// 隐藏产品类型输入框,避免与颜色输入框 name="color" 冲突
var cState = cfg.color_state || 'editable';
var hidePtForColor = (field === 'color' && cState !== 'hidden');
if (ptState === 'hidden' || hidePtForColor) {
$ptGroup.hide();
$ptInput.removeAttr('required');
} else {
$ptGroup.show();
var label = cfg.product_type_label || '产品类型';
var placeholder = cfg.product_type_placeholder || '';
if (!placeholder) {
placeholder = '如:' + label;
}
$ptLabel.html(label + (ptState === 'editable' ? ' <span class="text-danger">*</span>' : ''));
$ptInput.attr({name: field, placeholder: placeholder});
if (ptState === 'readonly') {
$ptInput.prop({readonly: true, required: false});
} else {
$ptInput.prop({readonly: false, required: true});
}
}
// 产品型号输入框(三态:hidden/readonly/editable
var mcState = cfg.model_code_state || 'editable';
if (mcState === 'hidden') {
$modelCodeGroup.hide();
$modelCodeInput.removeAttr('required').val('');
} else {
$modelCodeGroup.show();
if (mcState === 'readonly') {
$modelCodeInput.prop({readonly: true, required: false});
} else {
$modelCodeInput.prop({readonly: false, required: true});
}
}
// 颜色输入框(三态:hidden/readonly/editable
var cState = cfg.color_state || 'editable';
if (cState === 'hidden') {
$colorGroup.hide();
$colorInput.val('');
} else {
$colorGroup.show();
if (cState === 'readonly') {
$colorInput.prop('readonly', true);
} else {
$colorInput.prop('readonly', false);
}
}
}
$typeSel.on('change', updateProductTypeField);
updateProductTypeField();
})();
</script>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary"><i class="fa fa-save"></i> 保存</button>
<a href="<?php echo BASE_URL; ?>/Admin/productModel" class="btn btn-default"><i class="fa fa-arrow-left"></i> 返回</a>
</div>
</form>
</div>
</div>
</div>
<?php include APP_PATH . 'app/views/layouts/admin_footer.php'; ?>