feat(P4): precompute移植+app.js sources双向回填+回归1003/1003+验收体积/文件/data.json
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Aurora Admin · EmptyPro(普通 H5)</title>
|
||||
<link rel="stylesheet" href="../.design_library/aurora-admin/colors_and_type.css" />
|
||||
<link rel="stylesheet" href="EmptyPro.css" />
|
||||
<style>body{margin:0;padding:24px;background: var(--au-color-page-bg);display:flex;gap:16px;flex-wrap:wrap;}
|
||||
.aa-card{background: var(--au-color-card-bg);border: 1px solid var(--au-color-border);border-radius:8px;width:320px;}</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="aa-card"><div class="aa-empty" role="status" data-type="empty"></div></div>
|
||||
<div class="aa-card"><div class="aa-empty" role="status" data-type="permission"></div></div>
|
||||
<div class="aa-card"><div class="aa-empty" role="status" data-type="search"></div></div>
|
||||
<div class="aa-card"><div class="aa-empty" role="status" data-type="error"></div></div>
|
||||
|
||||
<script>
|
||||
var PRESET = {
|
||||
empty: { icon: '📭', title: '暂无数据', desc: '当前列表为空,试试新增一条记录。' },
|
||||
permission: { icon: '🔒', title: '无访问权限', desc: '你没有查看该内容的权限。' },
|
||||
search: { icon: '🔍', title: '未找到结果', desc: '换个关键词或筛选条件再试。' },
|
||||
error: { icon: '⚠️', title: '加载失败', desc: '网络异常,请稍后重试。' }
|
||||
};
|
||||
document.querySelectorAll('.aa-empty').forEach(function (el) {
|
||||
var p = PRESET[el.dataset.type] || PRESET.empty;
|
||||
el.innerHTML = '<div class="aa-empty-icon">' + p.icon + '</div>' +
|
||||
'<div class="aa-empty-title">' + p.title + '</div>' +
|
||||
'<div class="aa-empty-desc">' + p.desc + '</div>' +
|
||||
'<div class="aa-empty-actions" role="status"><button class="aa-empty-btn primary" role="status">主要操作</button>' +
|
||||
'<button class="aa-empty-btn" role="status">次要操作</button></div>';
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,31 @@
|
||||
import React from 'react';
|
||||
import './EmptyPro.css';
|
||||
|
||||
const PRESET = {
|
||||
empty: { icon: '📭', title: '暂无数据', desc: '当前列表为空,试试新增一条记录。' },
|
||||
permission: { icon: '🔒', title: '无访问权限', desc: '你没有查看该内容的权限。' },
|
||||
search: { icon: '🔍', title: '未找到结果', desc: '换个关键词或筛选条件再试。' },
|
||||
error: { icon: '⚠️', title: '加载失败', desc: '网络异常,请稍后重试。' }
|
||||
};
|
||||
|
||||
export default function EmptyPro({ type = 'empty', icon, title, desc, actionText, secondaryText, onAction, onSecondary }) {
|
||||
const p = PRESET[type] || {};
|
||||
const resolved = {
|
||||
icon: icon || p.icon || '📭',
|
||||
title: title || p.title || '暂无数据',
|
||||
desc: desc || p.desc || ''
|
||||
};
|
||||
return (
|
||||
<div className="aa-empty">
|
||||
<div className="aa-empty-icon">{resolved.icon}</div>
|
||||
<div className="aa-empty-title">{resolved.title}</div>
|
||||
{resolved.desc ? <div className="aa-empty-desc">{resolved.desc}</div> : null}
|
||||
{(actionText || secondaryText) ? (
|
||||
<div className="aa-empty-actions">
|
||||
{actionText ? <button className="aa-empty-btn primary" onClick={onAction}>{actionText}</button> : null}
|
||||
{secondaryText ? <button className="aa-empty-btn" onClick={onSecondary}>{secondaryText}</button> : null}
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<template>
|
||||
<div class="aa-empty">
|
||||
<div class="aa-empty-icon">{{ resolved.icon }}</div>
|
||||
<div class="aa-empty-title">{{ resolved.title }}</div>
|
||||
<div class="aa-empty-desc" v-if="resolved.desc">{{ resolved.desc }}</div>
|
||||
<div class="aa-empty-actions" v-if="actionText || secondaryText">
|
||||
<button v-if="actionText" class="aa-empty-btn primary" @click="$emit('action')">{{ actionText }}</button>
|
||||
<button v-if="secondaryText" class="aa-empty-btn" @click="$emit('secondary')">{{ secondaryText }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'AaEmptyPro',
|
||||
props: {
|
||||
type: { type: String, default: 'empty' },
|
||||
icon: { type: String, default: '' },
|
||||
title: { type: String, default: '' },
|
||||
desc: { type: String, default: '' },
|
||||
actionText: { type: String, default: '' },
|
||||
secondaryText: { type: String, default: '' }
|
||||
},
|
||||
computed: {
|
||||
resolved: function () {
|
||||
var p = {
|
||||
empty: { icon: '📭', title: '暂无数据', desc: '当前列表为空,试试新增一条记录。' },
|
||||
permission: { icon: '🔒', title: '无访问权限', desc: '你没有查看该内容的权限。' },
|
||||
search: { icon: '🔍', title: '未找到结果', desc: '换个关键词或筛选条件再试。' },
|
||||
error: { icon: '⚠️', title: '加载失败', desc: '网络异常,请稍后重试。' }
|
||||
}[this.type] || {};
|
||||
return {
|
||||
icon: this.icon || p.icon || '📭',
|
||||
title: this.title || p.title || '暂无数据',
|
||||
desc: this.desc || p.desc || ''
|
||||
};
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style src="./EmptyPro.css"></style>
|
||||
@@ -0,0 +1,40 @@
|
||||
<template>
|
||||
<div class="aa-empty">
|
||||
<div class="aa-empty-icon">{{ resolved.icon }}</div>
|
||||
<div class="aa-empty-title">{{ resolved.title }}</div>
|
||||
<div class="aa-empty-desc" v-if="resolved.desc">{{ resolved.desc }}</div>
|
||||
<div class="aa-empty-actions" v-if="actionText || secondaryText">
|
||||
<button v-if="actionText" class="aa-empty-btn primary" @click="emit('action')">{{ actionText }}</button>
|
||||
<button v-if="secondaryText" class="aa-empty-btn" @click="emit('secondary')">{{ secondaryText }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { computed } from 'vue';
|
||||
const props = defineProps({
|
||||
type: { type: String, default: 'empty' },
|
||||
icon: { type: String, default: '' },
|
||||
title: { type: String, default: '' },
|
||||
desc: { type: String, default: '' },
|
||||
actionText: { type: String, default: '' },
|
||||
secondaryText: { type: String, default: '' }
|
||||
});
|
||||
const emit = defineEmits(['action', 'secondary']);
|
||||
|
||||
const resolved = computed(() => {
|
||||
const p = {
|
||||
empty: { icon: '📭', title: '暂无数据', desc: '当前列表为空,试试新增一条记录。' },
|
||||
permission: { icon: '🔒', title: '无访问权限', desc: '你没有查看该内容的权限。' },
|
||||
search: { icon: '🔍', title: '未找到结果', desc: '换个关键词或筛选条件再试。' },
|
||||
error: { icon: '⚠️', title: '加载失败', desc: '网络异常,请稍后重试。' }
|
||||
}[props.type] || {};
|
||||
return {
|
||||
icon: props.icon || p.icon || '📭',
|
||||
title: props.title || p.title || '暂无数据',
|
||||
desc: props.desc || p.desc || ''
|
||||
};
|
||||
});
|
||||
</script>
|
||||
|
||||
<style src="./EmptyPro.css"></style>
|
||||
Reference in New Issue
Block a user