feat(admin): 订单管理重构、设置管理增强、短信签名模板管理及通知渠道优化
- 订单列表重构为卡片式布局并新增筛选功能 - 设置管理支持struct/struct_list类型配置 - 新增短信签名和模板独立管理页面 - 通知渠道新增短信渠道配置 - 产品参数管理优化 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -488,11 +488,11 @@
|
||||
<div class="tk-section-title">数值范围配置</div>
|
||||
<el-form-item label="范围类型" prop="range_type">
|
||||
<el-select v-model="paramValueForm.range_type" placeholder="请选择范围类型" style="width: 100%">
|
||||
<el-option label="小于 (before)" value="before" />
|
||||
<el-option label="大于 (after)" value="after" />
|
||||
<el-option label="小于等于 (before)" value="before" />
|
||||
<el-option label="大于等于 (after)" value="after" />
|
||||
<el-option label="等于 (equal)" value="equal" />
|
||||
</el-select>
|
||||
<div class="form-tip">before: 数值 < phase 时匹配 | after: 数值 > phase 时匹配</div>
|
||||
<div class="form-tip">before: 数值 ≤ phase 时匹配 | after: 数值 ≥ phase 时匹配</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="阈值" prop="attr_range">
|
||||
<el-input-number v-model="paramValueForm.attr_range" :min="0" placeholder="范围阈值" style="width: 100%" />
|
||||
@@ -1532,7 +1532,7 @@ const getArgTypeTag = (type) => {
|
||||
|
||||
// 范围类型显示
|
||||
const getRangeTypeText = (type) => {
|
||||
const typeMap = { 'after': '大于 >', 'before': '小于 <', 'equal': '等于 =' }
|
||||
const typeMap = { 'after': '大于等于 ≥', 'before': '小于等于 ≤', 'equal': '等于 =' }
|
||||
return typeMap[type] || type || '-'
|
||||
}
|
||||
|
||||
@@ -1960,9 +1960,9 @@ const findMatchingNumberAttr = (spec, numValue) => {
|
||||
const phase = attr.phase || 0
|
||||
const rangeType = attr.rangeType || 'before'
|
||||
|
||||
if (rangeType === 'before' && numValue < phase) {
|
||||
if (rangeType === 'before' && numValue <= phase) {
|
||||
return attr
|
||||
} else if (rangeType === 'after' && numValue > phase) {
|
||||
} else if (rangeType === 'after' && numValue >= phase) {
|
||||
return attr
|
||||
} else if (rangeType === 'equal' && numValue === phase) {
|
||||
return attr
|
||||
|
||||
@@ -275,13 +275,13 @@
|
||||
<el-form-item v-if="currentParam?.type === 'number'" label="数值范围" prop="attr_range">
|
||||
<div class="range-config-row">
|
||||
<el-select v-model="paramValueForm.range_type" class="range-type-select">
|
||||
<el-option label="<" value="before">
|
||||
<span class="range-opt-symbol"><</span>
|
||||
<span class="range-opt-desc">小于</span>
|
||||
<el-option label="≤" value="before">
|
||||
<span class="range-opt-symbol">≤</span>
|
||||
<span class="range-opt-desc">小于等于</span>
|
||||
</el-option>
|
||||
<el-option label=">" value="after">
|
||||
<span class="range-opt-symbol">></span>
|
||||
<span class="range-opt-desc">大于</span>
|
||||
<el-option label="≥" value="after">
|
||||
<span class="range-opt-symbol">≥</span>
|
||||
<span class="range-opt-desc">大于等于</span>
|
||||
</el-option>
|
||||
<el-option label="=" value="equal">
|
||||
<span class="range-opt-symbol">=</span>
|
||||
@@ -635,7 +635,7 @@ const getArgTypeTag = (type) => {
|
||||
return tagMap[type] || 'info'
|
||||
}
|
||||
const getRangeTypeText = (type) => {
|
||||
const typeMap = { 'after': '>', 'before': '<', 'equal': '=' }
|
||||
const typeMap = { 'after': '≥', 'before': '≤', 'equal': '=' }
|
||||
return typeMap[type] || type || '-'
|
||||
}
|
||||
|
||||
|
||||
@@ -548,8 +548,8 @@ const findMatchingNumberAttr = (spec, numValue) => {
|
||||
for (const attr of sortedAttrs) {
|
||||
const phase = attr.phase || 0
|
||||
const rangeType = attr.rangeType || 'before'
|
||||
if (rangeType === 'before' && numValue < phase) return attr
|
||||
else if (rangeType === 'after' && numValue > phase) return attr
|
||||
if (rangeType === 'before' && numValue <= phase) return attr
|
||||
else if (rangeType === 'after' && numValue >= phase) return attr
|
||||
else if (rangeType === 'equal' && numValue === phase) return attr
|
||||
}
|
||||
return sortedAttrs[sortedAttrs.length - 1]
|
||||
|
||||
Reference in New Issue
Block a user