配合 amis 实现前端界面显示
This commit is contained in:
parent
7d19573f85
commit
5bc3db60e7
197
frontend/index.html
Normal file
197
frontend/index.html
Normal file
@ -0,0 +1,197 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>amis admin</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width, initial-scale=1, maximum-scale=1"
|
||||
/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<link
|
||||
rel="stylesheet"
|
||||
title="default"
|
||||
href="https://unpkg.com/amis@beta/sdk/sdk.css"
|
||||
/>
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://unpkg.com/amis@beta/sdk/helper.css"
|
||||
/>
|
||||
<script src="https://unpkg.com/amis@beta/sdk/sdk.js"></script>
|
||||
<script src="https://unpkg.com/vue@2"></script>
|
||||
<script src="https://unpkg.com/history@4.10.1/umd/history.js"></script>
|
||||
<style>
|
||||
html,
|
||||
body,
|
||||
.app-wrapper {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root" class="app-wrapper"></div>
|
||||
<script>
|
||||
(function () {
|
||||
let amis = amisRequire('amis/embed');
|
||||
const match = amisRequire('path-to-regexp').match;
|
||||
|
||||
// 如果想用 browserHistory 请切换下这处代码, 其他不用变
|
||||
// const history = History.createBrowserHistory();
|
||||
const history = History.createHashHistory();
|
||||
|
||||
const app = {
|
||||
type: 'app',
|
||||
brandName: 'Admin',
|
||||
logo: '/public/logo.png',
|
||||
header: {
|
||||
type: 'tpl',
|
||||
inline: false,
|
||||
className: 'w-full',
|
||||
tpl: '<div class="flex justify-between"><div>顶部区域左侧</div><div>顶部区域右侧</div></div>'
|
||||
},
|
||||
// footer: '<div class="p-2 text-center bg-light">底部区域</div>',
|
||||
// asideBefore: '<div class="p-2 text-center">菜单前面区域</div>',
|
||||
// asideAfter: '<div class="p-2 text-center">菜单后面区域</div>',
|
||||
api: '/pages/site.json'
|
||||
};
|
||||
|
||||
function normalizeLink(to, location = history.location) {
|
||||
to = to || '';
|
||||
|
||||
if (to && to[0] === '#') {
|
||||
to = location.pathname + location.search + to;
|
||||
} else if (to && to[0] === '?') {
|
||||
to = location.pathname + to;
|
||||
}
|
||||
|
||||
const idx = to.indexOf('?');
|
||||
const idx2 = to.indexOf('#');
|
||||
let pathname = ~idx
|
||||
? to.substring(0, idx)
|
||||
: ~idx2
|
||||
? to.substring(0, idx2)
|
||||
: to;
|
||||
let search = ~idx ? to.substring(idx, ~idx2 ? idx2 : undefined) : '';
|
||||
let hash = ~idx2 ? to.substring(idx2) : location.hash;
|
||||
|
||||
if (!pathname) {
|
||||
pathname = location.pathname;
|
||||
} else if (pathname[0] != '/' && !/^https?\:\/\//.test(pathname)) {
|
||||
let relativeBase = location.pathname;
|
||||
const paths = relativeBase.split('/');
|
||||
paths.pop();
|
||||
let m;
|
||||
while ((m = /^\.\.?\//.exec(pathname))) {
|
||||
if (m[0] === '../') {
|
||||
paths.pop();
|
||||
}
|
||||
pathname = pathname.substring(m[0].length);
|
||||
}
|
||||
pathname = paths.concat(pathname).join('/');
|
||||
}
|
||||
|
||||
return pathname + search + hash;
|
||||
}
|
||||
|
||||
function isCurrentUrl(to, ctx) {
|
||||
if (!to) {
|
||||
return false;
|
||||
}
|
||||
const pathname = history.location.pathname;
|
||||
const link = normalizeLink(to, {
|
||||
...location,
|
||||
pathname,
|
||||
hash: ''
|
||||
});
|
||||
|
||||
if (!~link.indexOf('http') && ~link.indexOf(':')) {
|
||||
let strict = ctx && ctx.strict;
|
||||
return match(link, {
|
||||
decode: decodeURIComponent,
|
||||
strict: typeof strict !== 'undefined' ? strict : true
|
||||
})(pathname);
|
||||
}
|
||||
|
||||
return decodeURI(pathname) === link;
|
||||
}
|
||||
|
||||
let amisInstance = amis.embed(
|
||||
'#root',
|
||||
app,
|
||||
{
|
||||
location: history.location
|
||||
},
|
||||
{
|
||||
// watchRouteChange: fn => {
|
||||
// return history.listen(fn);
|
||||
// },
|
||||
updateLocation: (location, replace) => {
|
||||
location = normalizeLink(location);
|
||||
if (location === 'goBack') {
|
||||
return history.goBack();
|
||||
} else if (
|
||||
(!/^https?\:\/\//.test(location) &&
|
||||
location ===
|
||||
history.location.pathname + history.location.search) ||
|
||||
location === history.location.href
|
||||
) {
|
||||
// 目标地址和当前地址一样,不处理,免得重复刷新
|
||||
return;
|
||||
} else if (/^https?\:\/\//.test(location) || !history) {
|
||||
return (window.location.href = location);
|
||||
}
|
||||
|
||||
history[replace ? 'replace' : 'push'](location);
|
||||
},
|
||||
jumpTo: (to, action) => {
|
||||
if (to === 'goBack') {
|
||||
return history.goBack();
|
||||
}
|
||||
|
||||
to = normalizeLink(to);
|
||||
|
||||
if (isCurrentUrl(to)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (action && action.actionType === 'url') {
|
||||
action.blank === false
|
||||
? (window.location.href = to)
|
||||
: window.open(to, '_blank');
|
||||
return;
|
||||
} else if (action && action.blank) {
|
||||
window.open(to, '_blank');
|
||||
return;
|
||||
}
|
||||
|
||||
if (/^https?:\/\//.test(to)) {
|
||||
window.location.href = to;
|
||||
} else if (
|
||||
(!/^https?\:\/\//.test(to) &&
|
||||
to === history.pathname + history.location.search) ||
|
||||
to === history.location.href
|
||||
) {
|
||||
// do nothing
|
||||
} else {
|
||||
history.push(to);
|
||||
}
|
||||
},
|
||||
isCurrentUrl: isCurrentUrl,
|
||||
theme: 'cxd'
|
||||
}
|
||||
);
|
||||
|
||||
history.listen(state => {
|
||||
amisInstance.updateProps({
|
||||
location: state.location || state
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
152
frontend/pages/question.json
Normal file
152
frontend/pages/question.json
Normal file
@ -0,0 +1,152 @@
|
||||
{
|
||||
"type": "page",
|
||||
"body": [
|
||||
{
|
||||
"title": "查询条件",
|
||||
"type": "form",
|
||||
"target": "dataTable",
|
||||
"body": [
|
||||
{
|
||||
"type": "input-text",
|
||||
"name": "keyword",
|
||||
"label": "关键字:"
|
||||
}
|
||||
],
|
||||
"submitText": "搜索"
|
||||
},
|
||||
{
|
||||
"type": "crud",
|
||||
"name": "dataTable",
|
||||
"api": {
|
||||
"method": "post",
|
||||
"url": "/api/car/amis/list",
|
||||
"data": {
|
||||
"page": "${page}",
|
||||
"size": "${perPage}",
|
||||
"keyword": "$keyword"
|
||||
}
|
||||
},
|
||||
"mode": "cards",
|
||||
"data": {
|
||||
"answerMap": [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"A",
|
||||
"B",
|
||||
"C",
|
||||
"D",
|
||||
"E",
|
||||
"F",
|
||||
"G",
|
||||
"H"
|
||||
]
|
||||
},
|
||||
"columnsCount": 1,
|
||||
"card": {
|
||||
"body": [
|
||||
{
|
||||
"name": "id",
|
||||
"label": "id",
|
||||
"hidden": true
|
||||
},
|
||||
{
|
||||
"name": "question_id",
|
||||
"label": "题目id",
|
||||
"hidden": true
|
||||
},
|
||||
{
|
||||
"name": "keywords",
|
||||
"label": "关键字",
|
||||
"hidden": true
|
||||
},
|
||||
{
|
||||
"name": "answer",
|
||||
"label": "答案",
|
||||
|
||||
"type": "tpl",
|
||||
"tpl": "<span><%= data.answerMap.filter((_,index)=>{return (data.answer).toString(2).split('').reverse()[index] == '1'}) %></span>"
|
||||
|
||||
},
|
||||
{
|
||||
"name": "question",
|
||||
"label": "题目"
|
||||
},
|
||||
{
|
||||
"name": "media_content",
|
||||
"label": "图片",
|
||||
"width": "400px",
|
||||
"height": "300px",
|
||||
"type": "image",
|
||||
"enlargeAble": true,
|
||||
"hiddenOn": "this.media_content == 'None'"
|
||||
},
|
||||
{
|
||||
"name": "option_a",
|
||||
"label": "A",
|
||||
"hiddenOn": "this.option_a.length == 0"
|
||||
},
|
||||
{
|
||||
"name": "option_b",
|
||||
"label": "B",
|
||||
"hiddenOn": "this.option_b.length == 0"
|
||||
},
|
||||
{
|
||||
"name": "option_c",
|
||||
"label": "C",
|
||||
"hiddenOn": "this.option_c.length == 0"
|
||||
},
|
||||
{
|
||||
"name": "option_d",
|
||||
"label": "D",
|
||||
"hiddenOn": "this.option_d.length == 0"
|
||||
},
|
||||
{
|
||||
"name": "option_e",
|
||||
"label": "E",
|
||||
"hiddenOn": "this.option_e.length == 0"
|
||||
},
|
||||
{
|
||||
"name": "option_f",
|
||||
"label": "F",
|
||||
"hiddenOn": "this.option_f.length == 0"
|
||||
},
|
||||
{
|
||||
"name": "option_g",
|
||||
"label": "G",
|
||||
"hiddenOn": "this.option_g.length == 0"
|
||||
},
|
||||
{
|
||||
"name": "option_h",
|
||||
"label": "H",
|
||||
"hiddenOn": "this.option_h.length == 0"
|
||||
},
|
||||
{
|
||||
"name": "explain",
|
||||
"label": "解析",
|
||||
"body": "$explain"
|
||||
},
|
||||
{
|
||||
"name": "illiteracy_explain",
|
||||
"label": "相关规定"
|
||||
},
|
||||
{
|
||||
"name": "knack",
|
||||
"label": "窍门"
|
||||
},
|
||||
{
|
||||
"name": "concise_explain",
|
||||
"label": "简单解析"
|
||||
},
|
||||
{
|
||||
"name": "wrong_rate",
|
||||
"label": "错误率",
|
||||
"type": "tpl",
|
||||
"tpl": "${wrong_rate * 100}%"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
23
frontend/pages/site.json
Normal file
23
frontend/pages/site.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"status": 0,
|
||||
"msg": "",
|
||||
"data": {
|
||||
"pages": [
|
||||
{
|
||||
"label": "Home",
|
||||
"url": "/",
|
||||
"redirect": "/index"
|
||||
},
|
||||
{
|
||||
"label": "题库",
|
||||
"children": [
|
||||
{
|
||||
"label": "题库",
|
||||
"url": "/index",
|
||||
"schemaApi": "get:/pages/question.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
BIN
frontend/public/logo.png
Normal file
BIN
frontend/public/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.1 KiB |
5
frontend/x-pages/console.json
Normal file
5
frontend/x-pages/console.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"type": "page",
|
||||
"title": "Dashboard",
|
||||
"body": "body..."
|
||||
}
|
274
frontend/x-pages/crud-advance.json
Normal file
274
frontend/x-pages/crud-advance.json
Normal file
@ -0,0 +1,274 @@
|
||||
{
|
||||
"type": "page",
|
||||
"title": "复杂表单",
|
||||
"subTitle": "展示表格编辑、联动等等",
|
||||
"body": [
|
||||
{
|
||||
"type": "form",
|
||||
"mode": "horizontal",
|
||||
"title": "",
|
||||
"affixFooter": true,
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/form/save",
|
||||
"actions": [
|
||||
{
|
||||
"label": "保存",
|
||||
"type": "submit",
|
||||
"level": "success"
|
||||
}
|
||||
],
|
||||
"controls": [
|
||||
{
|
||||
"type": "fieldSet",
|
||||
"title": "基本配置",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"label": "任务名称",
|
||||
"name": "title",
|
||||
"size": "md",
|
||||
"required": true
|
||||
},
|
||||
|
||||
{
|
||||
"type": "textarea",
|
||||
"label": "任务描述",
|
||||
"name": "description",
|
||||
"size": "md"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "任务频率",
|
||||
"type": "radios",
|
||||
"name": "repeat",
|
||||
"inline": true,
|
||||
"value": "none",
|
||||
"required": true,
|
||||
"options": [
|
||||
{
|
||||
"label": "不重复",
|
||||
"value": "none"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "每天",
|
||||
"value": "day"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "每周",
|
||||
"value": "week"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "每月",
|
||||
"value": "month"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"label": "每天几点",
|
||||
"type": "select",
|
||||
"name": "time",
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"extractValue": true,
|
||||
"visibleOn": "this.repeat == \"day\"",
|
||||
"inline": true,
|
||||
"options": [
|
||||
{"value": 0, "label": "0:00"},
|
||||
{"value": 1, "label": "1:00"},
|
||||
{"value": 2, "label": "2:00"},
|
||||
{"value": 3, "label": "3:00"},
|
||||
{"value": 4, "label": "4:00"},
|
||||
{"value": 5, "label": "5:00"},
|
||||
{"value": 6, "label": "6:00"},
|
||||
{"value": 7, "label": "7:00"},
|
||||
{"value": 8, "label": "8:00"},
|
||||
{"value": 9, "label": "9:00"},
|
||||
{"value": 10, "label": "10:00"},
|
||||
{"value": 11, "label": "11:00"},
|
||||
{"value": 12, "label": "12:00"},
|
||||
{"value": 13, "label": "13:00"},
|
||||
{"value": 14, "label": "14:00"},
|
||||
{"value": 15, "label": "15:00"},
|
||||
{"value": 16, "label": "16:00"},
|
||||
{"value": 17, "label": "17:00"},
|
||||
{"value": 18, "label": "18:00"},
|
||||
{"value": 19, "label": "19:00"},
|
||||
{"value": 20, "label": "20:00"},
|
||||
{"value": 21, "label": "21:00"},
|
||||
{"value": 22, "label": "22:00"},
|
||||
{"value": 23, "label": "23:00"}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"label": "每周几执行",
|
||||
"type": "button-group",
|
||||
"name": "weekdays",
|
||||
"size": "md",
|
||||
"visibleOn": "this.repeat == \"week\"",
|
||||
"clearable": true,
|
||||
"multiple": true,
|
||||
"required": true,
|
||||
"extractValue": true,
|
||||
"maxLength": 7,
|
||||
"options": [
|
||||
{
|
||||
"label": "周一",
|
||||
"value": "0"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周二",
|
||||
"value": "1"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周三",
|
||||
"value": "2"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周四",
|
||||
"value": "3"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周五",
|
||||
"value": "4"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周六",
|
||||
"value": "5"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周日",
|
||||
"value": "6"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"label": "每月几号执行",
|
||||
"type": "list",
|
||||
"name": "monthday",
|
||||
"size": "md",
|
||||
"visibleOn": "this.repeat == \"month\"",
|
||||
"required": true,
|
||||
"maxLength": 31,
|
||||
"clearable": true,
|
||||
"multiple": true,
|
||||
"extractValue": true,
|
||||
"options": [
|
||||
{"value": 0, "label": "01"},
|
||||
{"value": 1, "label": "02"},
|
||||
{"value": 2, "label": "03"},
|
||||
{"value": 3, "label": "04"},
|
||||
{"value": 4, "label": "05"},
|
||||
{"value": 5, "label": "06"},
|
||||
{"value": 6, "label": "07"},
|
||||
{"value": 7, "label": "08"},
|
||||
{"value": 8, "label": "09"},
|
||||
{"value": 9, "label": "10"},
|
||||
{"value": 10, "label": "11"},
|
||||
{"value": 11, "label": "12"},
|
||||
{"value": 12, "label": "13"},
|
||||
{"value": 13, "label": "14"},
|
||||
{"value": 14, "label": "15"},
|
||||
{"value": 15, "label": "16"},
|
||||
{"value": 16, "label": "17"},
|
||||
{"value": 17, "label": "18"},
|
||||
{"value": 18, "label": "19"},
|
||||
{"value": 19, "label": "20"},
|
||||
{"value": 20, "label": "21"},
|
||||
{"value": 21, "label": "22"},
|
||||
{"value": 22, "label": "23"},
|
||||
{"value": 23, "label": "24"},
|
||||
{"value": 24, "label": "25"},
|
||||
{"value": 25, "label": "26"},
|
||||
{"value": 26, "label": "27"},
|
||||
{"value": 27, "label": "28"},
|
||||
{"value": 28, "label": "29"},
|
||||
{"value": 29, "label": "30"},
|
||||
{"value": 30, "label": "31"}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "fieldSet",
|
||||
"title": "其他信息",
|
||||
"collapsable": true,
|
||||
"controls": [
|
||||
{
|
||||
"type": "combo",
|
||||
"name": "admins",
|
||||
"label": "用户列表",
|
||||
"value": [""],
|
||||
"description": "请输入用户信息,不要重复。",
|
||||
"multiple": true,
|
||||
"inline": true,
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "name",
|
||||
"unique": true
|
||||
},
|
||||
|
||||
{
|
||||
"type": "select",
|
||||
"name": "perm",
|
||||
"value": "read",
|
||||
"options": [
|
||||
{
|
||||
"label": "可读",
|
||||
"value": "read"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "可写",
|
||||
"value": "write"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "新增一行",
|
||||
"type": "button",
|
||||
"actionType": "add",
|
||||
"target": "thetable",
|
||||
"level": "info"
|
||||
},
|
||||
{
|
||||
"name": "thetable",
|
||||
"type": "table",
|
||||
"label": "任务参数",
|
||||
"editable": true,
|
||||
"addable": true,
|
||||
"removable": true,
|
||||
"columns": [
|
||||
{
|
||||
"label": "参数名",
|
||||
"name": "key",
|
||||
"quickEdit": true
|
||||
},
|
||||
|
||||
{
|
||||
"label": "参数值",
|
||||
"name": "value",
|
||||
"quickEdit": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
64
frontend/x-pages/crud-edit.json
Normal file
64
frontend/x-pages/crud-edit.json
Normal file
@ -0,0 +1,64 @@
|
||||
{
|
||||
"type": "page",
|
||||
"title": "修改 ${params.id}",
|
||||
"remark": null,
|
||||
"toolbar": [
|
||||
{
|
||||
"type": "button",
|
||||
"actionType": "link",
|
||||
"link": "/crud/list",
|
||||
"label": "返回列表"
|
||||
}
|
||||
],
|
||||
"body": [
|
||||
{
|
||||
"type": "form",
|
||||
"initApi": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample/${params.id}",
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample/$id",
|
||||
"redirect": "/crud/list",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "engine",
|
||||
"label": "Engine",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "browser",
|
||||
"label": "Browser",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "platform",
|
||||
"label": "Platform(s)",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "version",
|
||||
"label": "Engine version"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "select",
|
||||
"name": "grade",
|
||||
"label": "CSS grade",
|
||||
"options": ["A", "B", "C", "D", "X"]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
149
frontend/x-pages/crud-list.json
Normal file
149
frontend/x-pages/crud-list.json
Normal file
@ -0,0 +1,149 @@
|
||||
{
|
||||
"type": "page",
|
||||
"title": "列表",
|
||||
"remark": null,
|
||||
"name": "page-demo",
|
||||
"toolbar": [
|
||||
{
|
||||
"type": "button",
|
||||
"actionType": "link",
|
||||
"link": "/crud/new",
|
||||
"label": "新增",
|
||||
"primary": true
|
||||
}
|
||||
],
|
||||
"body": [
|
||||
{
|
||||
"type": "crud",
|
||||
"name": "sample",
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample",
|
||||
"filter": {
|
||||
"title": "",
|
||||
"mode": "inline",
|
||||
"wrapWithPanel": false,
|
||||
"submitText": "",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "keywords",
|
||||
"placeholder": "通过关键字搜索",
|
||||
"addOn": {
|
||||
"label": "搜索",
|
||||
"type": "submit",
|
||||
"className": "btn-success"
|
||||
},
|
||||
"clearable": true
|
||||
}
|
||||
],
|
||||
"className": "m-b-sm"
|
||||
},
|
||||
"bulkActions": [
|
||||
{
|
||||
"label": "批量修改",
|
||||
"type": "button",
|
||||
"actionType": "dialog",
|
||||
"level": "primary",
|
||||
"dialog": {
|
||||
"title": "批量编辑",
|
||||
"name": "sample-bulk-edit",
|
||||
"body": {
|
||||
"type": "form",
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample/bulkUpdate2",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "engine",
|
||||
"label": "Engine"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "批量删除",
|
||||
"type": "button",
|
||||
"level": "danger",
|
||||
"actionType": "ajax",
|
||||
"api": "delete:https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample/$ids",
|
||||
"confirmText": "确定要批量删除?"
|
||||
}
|
||||
],
|
||||
"columns": [
|
||||
{
|
||||
"name": "engine",
|
||||
"label": "Rendering engine",
|
||||
"sortable": true
|
||||
},
|
||||
{
|
||||
"name": "id",
|
||||
"label": "ID",
|
||||
"width": 20,
|
||||
"sortable": true
|
||||
},
|
||||
{
|
||||
"name": "browser",
|
||||
"label": "Browser",
|
||||
"sortable": true
|
||||
},
|
||||
{
|
||||
"name": "platform",
|
||||
"label": "Platform(s)",
|
||||
"sortable": true
|
||||
},
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Engine version"
|
||||
},
|
||||
{
|
||||
"name": "grade",
|
||||
"label": "CSS grade"
|
||||
},
|
||||
{
|
||||
"type": "operation",
|
||||
"label": "操作",
|
||||
"width": "",
|
||||
"buttons": [
|
||||
{
|
||||
"type": "button-group",
|
||||
"buttons": [
|
||||
{
|
||||
"type": "button",
|
||||
"label": "查看",
|
||||
"level": "primary",
|
||||
"actionType": "link",
|
||||
"link": "/crud/${id}"
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"label": "修改",
|
||||
"level": "info",
|
||||
"actionType": "link",
|
||||
"link": "/crud/${id}/edit"
|
||||
},
|
||||
{
|
||||
"type": "button",
|
||||
"label": "删除",
|
||||
"level": "danger",
|
||||
"actionType": "ajax",
|
||||
"confirmText": "您确认要删除?",
|
||||
"api": "delete:https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample/$id"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"placeholder": "-",
|
||||
"fixed": "right"
|
||||
}
|
||||
],
|
||||
"affixHeader": true,
|
||||
"columnsTogglable": "auto",
|
||||
"placeholder": "暂无数据",
|
||||
"tableClassName": "table-db table-striped",
|
||||
"headerClassName": "crud-table-header",
|
||||
"footerClassName": "crud-table-footer",
|
||||
"toolbarClassName": "crud-table-toolbar",
|
||||
"combineNum": 0,
|
||||
"bodyClassName": "panel-default"
|
||||
}
|
||||
]
|
||||
}
|
69
frontend/x-pages/crud-new.json
Normal file
69
frontend/x-pages/crud-new.json
Normal file
@ -0,0 +1,69 @@
|
||||
{
|
||||
"type": "page",
|
||||
"title": "新增",
|
||||
"remark": null,
|
||||
"toolbar": [
|
||||
{
|
||||
"type": "button",
|
||||
"actionType": "link",
|
||||
"link": "/crud/list",
|
||||
"label": "返回列表"
|
||||
}
|
||||
],
|
||||
"body": [
|
||||
{
|
||||
"title": "",
|
||||
"type": "form",
|
||||
"redirect": "/crud/list",
|
||||
"name": "sample-edit-form",
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "engine",
|
||||
"label": "Engine",
|
||||
"required": true,
|
||||
"inline": false,
|
||||
"description": "",
|
||||
"descriptionClassName": "help-block",
|
||||
"placeholder": "",
|
||||
"addOn": null
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "browser",
|
||||
"label": "Browser",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "platform",
|
||||
"label": "Platform(s)",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "version",
|
||||
"label": "Engine version"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"name": "grade",
|
||||
"label": "CSS grade"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
65
frontend/x-pages/crud-view.json
Normal file
65
frontend/x-pages/crud-view.json
Normal file
@ -0,0 +1,65 @@
|
||||
{
|
||||
"type": "page",
|
||||
"title": "查看详情 ${params.id}",
|
||||
"remark": null,
|
||||
"toolbar": [
|
||||
{
|
||||
"type": "button",
|
||||
"actionType": "link",
|
||||
"link": "/crud/list",
|
||||
"label": "返回列表"
|
||||
}
|
||||
],
|
||||
"body": [
|
||||
{
|
||||
"type": "form",
|
||||
"initApi": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample/${params.id}",
|
||||
"controls": [
|
||||
{
|
||||
"type": "static",
|
||||
"name": "engine",
|
||||
"label": "Engine"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "browser",
|
||||
"label": "Browser"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "platform",
|
||||
"label": "Platform(s)"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "version",
|
||||
"label": "Engine version"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "grade",
|
||||
"label": "CSS grade"
|
||||
},
|
||||
{
|
||||
"type": "divider"
|
||||
},
|
||||
{
|
||||
"type": "html",
|
||||
"html": "<p>添加其他 <span>Html 片段</span> 需要支持变量替换(todo).</p>"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
18
frontend/x-pages/editor.json
Normal file
18
frontend/x-pages/editor.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"type": "page",
|
||||
"title": "代码编辑器",
|
||||
"subTitle": "使用的monaco-editor,用到了 worker, 如果控制台没有报错,说明一起正常。",
|
||||
"body": [
|
||||
{
|
||||
"type": "form",
|
||||
"controls": [
|
||||
{
|
||||
"type": "editor",
|
||||
"name": "js",
|
||||
"label": "Javascript",
|
||||
"size": "md"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
50
frontend/x-pages/excel.json
Normal file
50
frontend/x-pages/excel.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"type": "page",
|
||||
"body": {
|
||||
"type": "crud",
|
||||
"syncLocation": false,
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample",
|
||||
"headerToolbar": [
|
||||
{
|
||||
"type": "export-csv",
|
||||
"label": "全量导出 CSV",
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample"
|
||||
},
|
||||
{
|
||||
"type": "export-excel",
|
||||
"label": "全量导出 Excel",
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/sample"
|
||||
}
|
||||
],
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"label": "ID"
|
||||
},
|
||||
{
|
||||
"name": "engine",
|
||||
"label": "Rendering engine"
|
||||
},
|
||||
{
|
||||
"name": "browser",
|
||||
"label": "Browser"
|
||||
},
|
||||
{
|
||||
"name": "platform",
|
||||
"label": "Platform(s)"
|
||||
},
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Engine version"
|
||||
},
|
||||
{
|
||||
"name": "grade",
|
||||
"label": "CSS grade",
|
||||
"type": "mapping",
|
||||
"map": {
|
||||
"*": "<span class=\"label label-info\">${grade}</span>"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
241
frontend/x-pages/form-basic.json
Normal file
241
frontend/x-pages/form-basic.json
Normal file
@ -0,0 +1,241 @@
|
||||
{
|
||||
"type": "page",
|
||||
"title": "基础表单",
|
||||
"subTitle": "展示一些常规的表单,包括验证、提示等等",
|
||||
"body": [
|
||||
{
|
||||
"type": "form",
|
||||
"mode": "horizontal",
|
||||
"title": "常规表单示例",
|
||||
"affixFooter": true,
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/form/save",
|
||||
"actions": [
|
||||
{
|
||||
"label": "保存",
|
||||
"type": "submit",
|
||||
"level": "success"
|
||||
}
|
||||
],
|
||||
"controls": [
|
||||
{
|
||||
"label": " 标题",
|
||||
"type": "text",
|
||||
"placeholder": "请输入标题",
|
||||
"description": "请输入一个能吸引眼球的标题",
|
||||
"name": "title",
|
||||
"size": "md"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "编号",
|
||||
"required": true,
|
||||
"type": "text",
|
||||
"placeholder": "请输入编号",
|
||||
"name": "b",
|
||||
"size": "md",
|
||||
"validations": {
|
||||
"matchRegexp": "/^\\w{4}-\\w{4}-\\w{4}$/"
|
||||
},
|
||||
"validationErrors": {
|
||||
"matchRegexp": "您输入的内容格式不对,请按提示输入!"
|
||||
},
|
||||
"hint": "输入范例:xxxx-xxxx-xxxx"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "置顶",
|
||||
"type": "switch",
|
||||
"name": "c",
|
||||
"inline": true,
|
||||
"labelRemark": "开启后将置顶这条数据!"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "活动时间",
|
||||
"type": "date-range",
|
||||
"name": "range",
|
||||
"size": "md",
|
||||
"remark": "这是一个字段时间范围"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "日期范围",
|
||||
"type": "group",
|
||||
"controls": [
|
||||
{
|
||||
"type": "date",
|
||||
"size": "md",
|
||||
"name": "start",
|
||||
"mode": "inline",
|
||||
"maxDate": "${end}"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "到",
|
||||
"type": "date",
|
||||
"size": "md",
|
||||
"name": "end",
|
||||
"inputClassName": "m-l-sm",
|
||||
"mode": "inline",
|
||||
"minDate": "${start}",
|
||||
"remark": "这是两个字段的时间范围"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"label": "浏览器",
|
||||
"type": "button-group",
|
||||
"name": "browser",
|
||||
"value": "chrome",
|
||||
"options": [
|
||||
{
|
||||
"label": "Chrome",
|
||||
"value": "chrome"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "火狐",
|
||||
"value": "firefox"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "IE",
|
||||
"value": "ie"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"type": "list",
|
||||
"name": "taocan",
|
||||
"label": "套餐选择",
|
||||
"options": [
|
||||
{
|
||||
"value": 1,
|
||||
"body": "<div class='m-l-sm m-r-sm m-b-sm m-t-xs'> <div class='text-md p-b-xs b-b m-b-xs'>套餐:C01</div> <div class='text-sm'>CPU:2核</div> <div class='text-sm'>内存:1GB</div> <div class='text-sm'>SSD盘:10GB</div> </div>"
|
||||
},
|
||||
{
|
||||
"value": 2,
|
||||
"body": "<div class='m-l-sm m-r-sm m-b-sm m-t-xs'> <div class='text-md p-b-xs b-b m-b-xs'>套餐:C02</div> <div class='text-sm'>CPU:4核</div> <div class='text-sm'>内存:4GB</div> <div class='text-sm'>SSD盘:20GB</div> </div>"
|
||||
},
|
||||
{
|
||||
"value": 3,
|
||||
"disabled": true,
|
||||
"body": "<div class='m-l-sm m-r-sm m-b-sm m-t-xs'> <div class='text-md p-b-xs b-b m-b-xs'>套餐:C03</div> <div class='text-sm'>CPU:8核</div> <div class='text-sm'>内存:8GB</div> <div class='text-sm'>SSD盘:50GB</div> </div>"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"label": "最爱周几",
|
||||
"type": "select",
|
||||
"name": "select",
|
||||
"size": "md",
|
||||
"clearable": true,
|
||||
"options": [
|
||||
{
|
||||
"label": "周一",
|
||||
"value": "0"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周二",
|
||||
"value": "1"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周三",
|
||||
"value": "2"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周四",
|
||||
"value": "3"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周五",
|
||||
"value": "4"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周六",
|
||||
"value": "5"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周日",
|
||||
"value": "6"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"label": "休息日",
|
||||
"type": "list",
|
||||
"name": "freeday",
|
||||
"value": ["5", "6"],
|
||||
"multiple": true,
|
||||
"extractValue": true,
|
||||
"options": [
|
||||
{
|
||||
"label": "周一",
|
||||
"value": "0"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周二",
|
||||
"value": "1"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周三",
|
||||
"value": "2"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周四",
|
||||
"value": "3"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周五",
|
||||
"value": "4"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周六",
|
||||
"value": "5"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "周日",
|
||||
"value": "6"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"label": "人数",
|
||||
"type": "number",
|
||||
"name": "num",
|
||||
"size": "md",
|
||||
"value": 10
|
||||
},
|
||||
|
||||
{
|
||||
"label": "比率",
|
||||
"type": "range",
|
||||
"name": "percent"
|
||||
},
|
||||
|
||||
{
|
||||
"label": "简介",
|
||||
"type": "textarea",
|
||||
"name": "textarea"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
12
frontend/x-pages/jsonp.js
Normal file
12
frontend/x-pages/jsonp.js
Normal file
@ -0,0 +1,12 @@
|
||||
(function() {
|
||||
const response = {
|
||||
data: {
|
||||
type: "page",
|
||||
title: "标题",
|
||||
body: "this result is from jsonp"
|
||||
},
|
||||
status: 0
|
||||
}
|
||||
|
||||
window.jsonpCallback && window.jsonpCallback(response);
|
||||
})();
|
177
frontend/x-pages/pageA.json
Normal file
177
frontend/x-pages/pageA.json
Normal file
@ -0,0 +1,177 @@
|
||||
{
|
||||
"type": "page",
|
||||
"toolbar": [
|
||||
{
|
||||
"type": "form",
|
||||
"panelClassName": "mb-0",
|
||||
"title": "",
|
||||
"body": [
|
||||
{
|
||||
"type": "select",
|
||||
"label": "区域",
|
||||
"name": "businessLineId",
|
||||
"selectFirst": true,
|
||||
"mode": "inline",
|
||||
"options": [
|
||||
"北京",
|
||||
"上海"
|
||||
],
|
||||
"checkAll": false
|
||||
},
|
||||
{
|
||||
"label": "时间范围",
|
||||
"type": "input-date-range",
|
||||
"name": "dateRange",
|
||||
"inline": true,
|
||||
"value": "-1month,+0month",
|
||||
"inputFormat": "YYYY-MM-DD",
|
||||
"format": "YYYY-MM-DD",
|
||||
"closeOnSelect": true,
|
||||
"clearable": false
|
||||
}
|
||||
],
|
||||
"actions": [],
|
||||
"mode": "inline",
|
||||
"target": "mainPage",
|
||||
"submitOnChange": true,
|
||||
"submitOnInit": true
|
||||
}
|
||||
],
|
||||
"body": [
|
||||
{
|
||||
"type": "table",
|
||||
"title": "表格1",
|
||||
"source": "$rows",
|
||||
"columns": [
|
||||
{
|
||||
"name": "engine",
|
||||
"label": "Engine"
|
||||
},
|
||||
{
|
||||
"name": "version",
|
||||
"label": "Version"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "grid",
|
||||
"columns": [
|
||||
{
|
||||
"type": "panel",
|
||||
"className": "h-full",
|
||||
"body": {
|
||||
"type": "tabs",
|
||||
"tabs": [
|
||||
{
|
||||
"title": "消费趋势",
|
||||
"tab": [
|
||||
{
|
||||
"type": "chart",
|
||||
"config": {
|
||||
"title": {
|
||||
"text": "消费趋势"
|
||||
},
|
||||
"tooltip": {},
|
||||
"xAxis": {
|
||||
"type": "category",
|
||||
"boundaryGap": false,
|
||||
"data": [
|
||||
"一月",
|
||||
"二月",
|
||||
"三月",
|
||||
"四月",
|
||||
"五月",
|
||||
"六月"
|
||||
]
|
||||
},
|
||||
"yAxis": {},
|
||||
"series": [
|
||||
{
|
||||
"name": "销量",
|
||||
"type": "line",
|
||||
"areaStyle": {
|
||||
"color": {
|
||||
"type": "linear",
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"x2": 0,
|
||||
"y2": 1,
|
||||
"colorStops": [
|
||||
{
|
||||
"offset": 0,
|
||||
"color": "rgba(84, 112, 197, 1)"
|
||||
},
|
||||
{
|
||||
"offset": 1,
|
||||
"color": "rgba(84, 112, 197, 0)"
|
||||
}
|
||||
],
|
||||
"global": false
|
||||
}
|
||||
},
|
||||
"data": [
|
||||
5,
|
||||
20,
|
||||
36,
|
||||
10,
|
||||
10,
|
||||
20
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "账户余额",
|
||||
"tab": "0"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "panel",
|
||||
"className": "h-full",
|
||||
"body": [
|
||||
{
|
||||
"type": "chart",
|
||||
"config": {
|
||||
"title": {
|
||||
"text": "使用资源占比"
|
||||
},
|
||||
"series": [
|
||||
{
|
||||
"type": "pie",
|
||||
"data": [
|
||||
{
|
||||
"name": "BOS",
|
||||
"value": 70
|
||||
},
|
||||
{
|
||||
"name": "CDN",
|
||||
"value": 68
|
||||
},
|
||||
{
|
||||
"name": "BCC",
|
||||
"value": 48
|
||||
},
|
||||
{
|
||||
"name": "DCC",
|
||||
"value": 40
|
||||
},
|
||||
{
|
||||
"name": "RDS",
|
||||
"value": 32
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
126
frontend/x-pages/site.json
Normal file
126
frontend/x-pages/site.json
Normal file
@ -0,0 +1,126 @@
|
||||
{
|
||||
"status": 0,
|
||||
"msg": "",
|
||||
"data": {
|
||||
"pages": [
|
||||
{
|
||||
"label": "Home",
|
||||
"url": "/",
|
||||
"redirect": "/index/1"
|
||||
},
|
||||
{
|
||||
"label": "示例",
|
||||
"children": [
|
||||
{
|
||||
"label": "表格",
|
||||
"schemaApi": "get:/pages/excel.json"
|
||||
},
|
||||
{
|
||||
"label": "页面A",
|
||||
"url": "index",
|
||||
"schema": {
|
||||
"type": "page",
|
||||
"title": "页面A",
|
||||
"body": "页面A"
|
||||
},
|
||||
"children": [
|
||||
{
|
||||
"label": "页面A-1",
|
||||
"schemaApi": "get:/pages/pageA.json"
|
||||
},
|
||||
{
|
||||
"label": "页面A-2",
|
||||
"url": "2",
|
||||
"schema": {
|
||||
"type": "page",
|
||||
"title": "页面A-2",
|
||||
"body": "页面A-2"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "页面A-3",
|
||||
"url": "3",
|
||||
"schema": {
|
||||
"type": "page",
|
||||
"title": "页面A-3",
|
||||
"body": "页面A-3"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "页面B",
|
||||
"schema": {
|
||||
"type": "page",
|
||||
"title": "页面B",
|
||||
"body": "页面B"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "页面C",
|
||||
"schema": {
|
||||
"type": "page",
|
||||
"title": "页面C",
|
||||
"body": "页面C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "列表示例",
|
||||
"url": "/crud",
|
||||
"rewrite": "/crud/list",
|
||||
"icon": "fa fa-cube",
|
||||
"children": [
|
||||
{
|
||||
"label": "列表",
|
||||
"url": "/crud/list",
|
||||
"icon": "fa fa-list",
|
||||
"schemaApi": "get:/pages/crud-list.json"
|
||||
},
|
||||
{
|
||||
"label": "新增",
|
||||
"url": "/crud/new",
|
||||
"icon": "fa fa-plus",
|
||||
"schemaApi": "get:/pages/crud-new.json"
|
||||
},
|
||||
{
|
||||
"label": "查看",
|
||||
"url": "/crud/:id",
|
||||
"schemaApi": "get:/pages/crud-view.json"
|
||||
},
|
||||
{
|
||||
"label": "修改",
|
||||
"url": "/crud/:id/edit",
|
||||
"schemaApi": "get:/pages/crud-edit.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "分组2",
|
||||
"children": [
|
||||
{
|
||||
"label": "用户管理",
|
||||
"schema": {
|
||||
"type": "page",
|
||||
"title": "用户管理",
|
||||
"body": "页面C"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "外部链接",
|
||||
"link": "http://baidu.gitee.io/amis"
|
||||
},
|
||||
{
|
||||
"label": "部门管理",
|
||||
"schemaApi": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/mock2/service/form?tpl=tpl3"
|
||||
},
|
||||
{
|
||||
"label": "jsonp 返回示例",
|
||||
"schemaApi": "jsonp:/pages/jsonp.js?callback=jsonpCallback"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
105
frontend/x-pages/wizard.json
Normal file
105
frontend/x-pages/wizard.json
Normal file
@ -0,0 +1,105 @@
|
||||
{
|
||||
"type": "page",
|
||||
"title": "表单向导",
|
||||
"subTitle": "可以通过表单向导,将一个超长的表单页面拆分成多个步骤,一步一步指引用户完成。",
|
||||
"body": [
|
||||
{
|
||||
"type": "wizard",
|
||||
"actionFinishLabel": "确认",
|
||||
"api": "https://3xsw4ap8wah59.cfc-execute.bj.baidubce.com/api/amis-mock/saveWizard",
|
||||
"steps": [
|
||||
{
|
||||
"title": "填写活动信息",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "title",
|
||||
"label": "活动标题",
|
||||
"required": true,
|
||||
"size": "md"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "date",
|
||||
"name": "date",
|
||||
"label": "举办时间",
|
||||
"size": "md"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "number",
|
||||
"name": "num",
|
||||
"label": "参与人数",
|
||||
"value": 10,
|
||||
"size": "md"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"title": "填写赞助商信息",
|
||||
"controls": [
|
||||
{
|
||||
"type": "text",
|
||||
"name": "company",
|
||||
"label": "公司名称",
|
||||
"required": true,
|
||||
"size": "md"
|
||||
},
|
||||
|
||||
{
|
||||
"type": "text",
|
||||
"name": "money",
|
||||
"label": "赞助金额",
|
||||
"addOn": {
|
||||
"type": "text",
|
||||
"label": "¥"
|
||||
},
|
||||
"size": "md"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
"title": "确认",
|
||||
"mode": "horizontal",
|
||||
"horizontal": {
|
||||
"leftFixed": "sm"
|
||||
},
|
||||
"controls": [
|
||||
{
|
||||
"type": "static",
|
||||
"name": "company",
|
||||
"label": "活动标题",
|
||||
"labelClassName": "text-muted"
|
||||
},
|
||||
{
|
||||
"type": "static-date",
|
||||
"name": "date",
|
||||
"label": "举办时间",
|
||||
"labelClassName": "text-muted"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "num",
|
||||
"label": "参与人数",
|
||||
"labelClassName": "text-muted"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "company",
|
||||
"label": "公司名称",
|
||||
"labelClassName": "text-muted"
|
||||
},
|
||||
{
|
||||
"type": "static",
|
||||
"name": "money",
|
||||
"label": "赞助金额",
|
||||
"labelClassName": "text-muted"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
@ -5,7 +5,7 @@ import logger
|
||||
from db.mysql import database
|
||||
from model.car.dto.list import ListDto
|
||||
from orm.jiakaobaodian import JiaKaoBaoDian
|
||||
from utils.common import response
|
||||
from utils.common import response, amis_response
|
||||
from utils.model import model_list
|
||||
|
||||
router = APIRouter(tags=["Car"], prefix="/api/car")
|
||||
@ -36,3 +36,15 @@ def get_list(dto: ListDto, db: Session = Depends(database)):
|
||||
"size": size,
|
||||
"total": total
|
||||
})
|
||||
|
||||
|
||||
@router.post("/amis/list", summary="amis 题目列表")
|
||||
def amis_get_list(dto: ListDto, db: Session = Depends(database)):
|
||||
result = get_list(dto, db)['data']
|
||||
|
||||
return amis_response({
|
||||
"rows": result['data'],
|
||||
"page": result['page'],
|
||||
"size": result['size'],
|
||||
"total": result['total']
|
||||
})
|
||||
|
8
main.py
8
main.py
@ -1,7 +1,10 @@
|
||||
import os.path
|
||||
|
||||
import logger
|
||||
import uvicorn
|
||||
from fastapi import FastAPI, APIRouter
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.staticfiles import StaticFiles
|
||||
from handler import car, health
|
||||
|
||||
# 禁用 redoc
|
||||
@ -18,6 +21,9 @@ app.add_middleware(
|
||||
app.include_router(health.router)
|
||||
app.include_router(car.router)
|
||||
|
||||
frontend = os.path.join(os.path.dirname(__file__), "frontend")
|
||||
app.mount("/", StaticFiles(directory=frontend, html=True))
|
||||
|
||||
|
||||
@app.on_event("startup")
|
||||
async def startup():
|
||||
|
@ -19,3 +19,15 @@ def response(data: any, code=200, msg="OK"):
|
||||
"data": data,
|
||||
"msg": msg,
|
||||
}
|
||||
|
||||
|
||||
def amis_response(data: any, code=0, msg="OK"):
|
||||
return {
|
||||
"status": code,
|
||||
"data": data,
|
||||
"msg": msg,
|
||||
}
|
||||
|
||||
|
||||
def response_to_amis_response(_response):
|
||||
return amis_response(_response['data'], 0 if _response['code'] == 200 else _response['code'], _response['msg'])
|
||||
|
Loading…
Reference in New Issue
Block a user