admin.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503
  1. <?php
  2. return [
  3. # 数据来源,如果当前菜单不是表名,这里可以定义从哪个表获取数据
  4. //'source' => 'manage/admin',
  5. # 列表页配置
  6. 'list' => [
  7. # 多选功能,配合批量操作
  8. //'selection' => true,
  9. # 列表页筛选功能
  10. //'filter' => 'Manage/Lib/Test.getFilter',
  11. //'where' => ['group_id' => $group],
  12. # 列表页类型 table表格、article文章、pic图片、goods商品,默认是表格,除table外,其余类型需要增加layout项,用以控制展示位置,并且批量操作功能将失效,如批量删除、批量操作等,后续增加更多类型
  13. 'type' => 'table',
  14. # 是否显示序号
  15. /*
  16. 'index' => [
  17. 'name' => '序号',
  18. # 固定表头,field中也支持
  19. 'fixed' => true,
  20. ],
  21. */
  22. # 展示的字段
  23. 'field' => [
  24. 'id',
  25. 'name',
  26. # 实现多级表头,两个字段合并到一起展示,因vue3问题,仅支持三级表头哦
  27. /*
  28. 'test2' => [
  29. 'name' => '基本资料',
  30. 'type' => 'mul',
  31. 'child' => [
  32. 'avatar' => 'image',
  33. 'mobile' => [
  34. 'type' => 'show',
  35. # 加入排序
  36. 'sort' => true,
  37. ],
  38. ],
  39. ],*/
  40. //'avatar' => 'image',
  41. 'mobile' => [
  42. 'sort' => true,
  43. # 多余字符按照...提示
  44. 'truncate' => true,
  45. ],
  46. 'role',
  47. /*
  48. # 自定义展示内容
  49. 'role' => [
  50. //'show' => 'Dever::db("role", "manage")->find("{id}")["name"]',
  51. # 气泡卡片展示
  52. 'type' => 'popover',
  53. # 位置:top/top-start/top-end/bottom/bottom-start/bottom-end/left/left-start/left-end/right/right-start/right-end
  54. 'location' => 'right',
  55. # 是否用标签形式展示
  56. 'tag' => true,
  57. # 返回一个数组['name' => '', 'content' => []],这样可以展示多条[['name' => '', 'content' => []]]
  58. 'show' => 'Dever::load("common")->show2("{role}")',
  59. ],*/
  60. 'status' => [
  61. 'type' => 'switch',
  62. 'show' => '{status}',
  63. 'active_value' => 1,
  64. 'inactive_value' => 2,
  65. ],
  66. 'cdate',
  67. ],
  68. # 扩展展示内容
  69. //'expand' => 'Manage/Lib/Util.show',
  70. /*
  71. 'type' => 'article',
  72. 'layout' => [
  73. [
  74. 'type' => 'avatar',
  75. 'value' => [
  76. 'image' => 'avatar',
  77. ]
  78. ],
  79. [
  80. 'type' => 'content',
  81. 'value' => [
  82. 'title' => 'name',
  83. 'description' => 'role'
  84. ]
  85. ],
  86. [
  87. 'type' => 'content',
  88. 'value' => [
  89. 'item' => ['时间', 'cdate'],
  90. ]
  91. ],
  92. ],
  93. */
  94. /*
  95. 'type' => 'goods',
  96. 'layout' => [
  97. 'tag' => 'mobile',
  98. 'image' => 'avatar',
  99. 'title' => 'name',
  100. 'description' => 'role',
  101. //'icon' => 'icon',
  102. ],*/
  103. /*
  104. 'type' => 'pic',
  105. 'layout' => [
  106. 'id' => 'id',
  107. 'image' => 'avatar',
  108. ],*/
  109. # 列表页描述
  110. //'desc' => 'test',
  111. # 列表的高度,auto和100%或者具体数值,默认是auto
  112. 'height' => 'auto',
  113. # 列表页按钮,默认是快速新增和删除
  114. 'button' => [
  115. '新增' => 'add',
  116. //'新增' => 'fastadd',
  117. //'删除' => 'recycle',//删除到回收站 此功能暂时废弃,可以用filter和oper自行实现
  118. //'彻底删除' => 'delete',
  119. //'更改角色' => ['oper', 'role'],
  120. //'链接跳转' => ['link', 'https://www.baidu.com/'],
  121. //'路由跳转' => ['route', 'manage/menu?test=1'],
  122. ],
  123. # 列表页每条数据的按钮,默认是快速编辑和删除
  124. 'data_button' => [
  125. '编辑' => 'edit',
  126. //'编辑' => 'fastedit',
  127. # 只处理某个字段,多个用逗号隔开
  128. //'编辑' => ['fastedit', 'name'],
  129. //'编辑' => ['fastedit'],
  130. # 打开其他表的新增
  131. //'新增子菜单' => ['fastadd', 'platform/admin'],
  132. //'新增子菜单' => ['fastadd', ['path' => 'place_user_log/wallet', 'field' => ['uid' => 'id']]],
  133. //'删除' => 'recycle',//删除到回收站 此功能暂时废弃,可以用filter和oper自行实现
  134. //'彻底删除' => 'delete',
  135. //'操作' => ['oper', 'role'],
  136. //'接口操作' => ['api', 'api'],
  137. //'详情' => ['view', 'platform/admin?type=view&id=id'],//view可以改成drawer,在本页右侧出现
  138. //'链接跳转' => ['link', 'https://www.baidu.com/'],
  139. # 第三个参数可以自定义图标:https://element-plus.org/zh-CN/component/icon.html#icon-collection
  140. # 第四个参数是判断是否展示该按钮,字段名=字段值& 如name=1&id=2
  141. //'路由跳转' => ['route', 'manage/menu?test=1', 'ChatLineSquare'],
  142. //'管理账户列表' => ['route', ['path' => 'set_group/group_user', 'param' => ['set' => ['module_id' => 2, 'relation_id' => 'id']]]],
  143. ],
  144. # 按钮组复杂例子
  145. /*
  146. 'data_button' => [
  147. '编辑' => 'edit',
  148. '内容' => ['route', [
  149. 'path' => 'source_manage/content',
  150. 'param' => [
  151. 'set' => ['info_id' => 'id', 'menu' => 'source_manage/info', 'parent' => 'source_manage/info'],
  152. ],
  153. ]],
  154. ],
  155. # 更多按钮
  156. 'data_button_list' => [
  157. '编辑' => 'edit',
  158. '内容' => ['route', [
  159. 'path' => 'source_manage/content',
  160. 'param' => [
  161. 'set' => ['info_id' => 'id', 'menu' => 'source_manage/info', 'parent' => 'source_manage/info'],
  162. ],
  163. ]],
  164. ],*/
  165. # 列表页导入
  166. 'import' => [
  167. ],
  168. # 列表页导出
  169. 'export' => [
  170. 'out' => '导出',
  171. 'Manage/Lib/Util.out' => '自定义导出',
  172. ],
  173. # 搜索字段 fulltext 模糊查询
  174. 'search' => [
  175. 'name',
  176. 'mobile',
  177. 'role' => 'group',
  178. ],
  179. # 统计
  180. //'stat' => 'Manage/Lib/Util.stat',
  181. ],
  182. # 更新页配置
  183. 'update' => [
  184. # 更新后是否更新后台用户登录信息,用于修改后台常用的配置
  185. 'upAdmin' => true,
  186. # 更新页描述
  187. 'desc' => '',
  188. # 自定义标签 支持分栏
  189. /*
  190. 'tab' => [
  191. # 不设置分栏
  192. '基础设置' => 'name,mobile',
  193. # 设置分栏
  194. '基础设置' => [
  195. [
  196. 'name' => 12,
  197. 'mobile' => 12,
  198. ],
  199. ],
  200. '普通设置' => 'password',
  201. '其他设置' => 'role',
  202. ],
  203. # 自定义步骤 支持分栏 设置后,tab将失效
  204. 'step' => [
  205. '第一步' => 'name,mobile',
  206. # 设置分栏
  207. '第一步' => [
  208. [
  209. 'name' => 12,
  210. 'mobile' => 12,
  211. ],
  212. ],
  213. '第二步' => 'password',
  214. '提交' => 'role',
  215. ],
  216. # 自定义布局 24分栏布局,设置后,tab和step里的设置将失效
  217. 'layout' => [
  218. [
  219. 'name' => 12,
  220. 'mobile' => 12,
  221. ],
  222. [
  223. 'password' => 12,
  224. 'role' => 12,
  225. ],
  226. ],*/
  227. # 要更新的字段
  228. 'field' => [
  229. 'avatar' => [
  230. 'type' => 'upload',
  231. # 这里传入上传规则
  232. 'upload' => '1',
  233. # 是否支持多选
  234. 'multiple' => false,
  235. # 提示
  236. 'truncate' => '2222',
  237. # 展示类型 默认为list 列表 input 可输入地址 pic图片模式
  238. 'style' => 'pic',
  239. # 裁剪时的默认宽度高度
  240. 'wh' => '500*500',
  241. # 上传后影响的字段 这个目前仅有name字段
  242. //'upload_name' => 'name',
  243. ],
  244. 'name' => [
  245. 'type' => 'text',
  246. # 定义editor的工具栏,一般无需配置,参考wangEditor https://www.wangeditor.com/v5/toolbar-config.html#toolbarkeys,这里直接配置toolbarConfig的值
  247. /*
  248. 'editorToolBar' => [
  249. 'toolbarKeys' => [
  250. 'headerSelect',
  251. '|',
  252. 'bold', 'italic',
  253. ],
  254. 'insertKeys' => [],
  255. 'excludeKeys' => [],
  256. ],*/
  257. # 定义editor的菜单配置,一般只需要配置上传规则即可,其余也可以配置,参考wangEditor https://www.wangeditor.com/v5/menu-config.html,这里直接配置editorConfig.MENU_CONF的值
  258. 'editorMenu' => [
  259. # 定义上传规则,与uploadVideo一样,无需定义server
  260. 'uploadImage' => [
  261. # 这里传入上传规则id
  262. 'upload' => 1,
  263. # 不传则默认为file
  264. 'fieldName' => 'file',
  265. ],
  266. # 也可以直接传入上传规则,其余配置默认
  267. 'uploadVideo' => 3,
  268. ],
  269. 'maxlength' => 30,
  270. # 描述
  271. 'desc' => '',
  272. ],
  273. /* type的值
  274. text:单行文本
  275. set:
  276. maxlength:最大输入长度
  277. minlength:最小输入长度
  278. size: 大小,'large' | 'default' | 'small'
  279. password:文本密码框
  280. textarea:多行文本
  281. autosize:true 高度是否自适应,也可以传入数组,['minRows' => 2, 'maxRows' => 6]
  282. rows:多行文本的行数,默认为2
  283. editor:编辑器
  284. number:数字计数器
  285. set:
  286. step:计数器步数,默认为1
  287. min:最小值
  288. max:最大值
  289. precision:精度,小数点几位
  290. position:按钮位置:left、right,不填为两端
  291. switch:开关
  292. set:
  293. open_color:开启颜色
  294. close_color:关闭颜色
  295. open_text:开启文字
  296. close_text:关闭文字
  297. slider:滑块
  298. set:
  299. max:最大值
  300. step:步数
  301. stops:是否显示间断点
  302. input:是否显示输入框,true/false
  303. range:是否范围选择,true/false
  304. format:格式化展示数字,这里是一个计算公式,如{a}/100,{a}为当前值变量名
  305. radio:单选
  306. radio_button:单选按钮样式
  307. set:
  308. border:单选边框样式
  309. checkbox:多选
  310. checkbox_button:多选按钮样式
  311. set:
  312. border:多选边框样式
  313. min:多选限制选择数目,最小选择数目
  314. max:多选限制选择数目,最大选择数目
  315. tree:树形选择器
  316. tree2:大量数据下的树形选择器,暂时不支持
  317. cascader:级联选择器,可以做地区等
  318. select:选择器
  319. select_tree:选择器,多选的树形模式
  320. select_text:选择器+文本
  321. set:
  322. clearable:是否可清空选择,true/false
  323. multiple:开启多选,true/false
  324. url:开启远程搜索,这里定义远程搜索的url
  325. remote:开启远程控制,这里定义远程控制的url
  326. rate:评分
  327. set:
  328. score:是否显示分数
  329. text:是否显示文字
  330. date:日期,不带具体时间
  331. date_type:
  332. dates:多个日期
  333. year:只显示年
  334. month:只显示月
  335. week:只显示周
  336. datetime:带有时间的日期
  337. datetimerange:带有时间的日期范围
  338. daterange:日期范围
  339. monthrange:月份范围
  340. set:
  341. disable_func:禁止选择方法,需要根据不同的date_type实现不同的方法,默认为不能选择今天之后的日期:return time.getTime() > Date.now()
  342. format:格式化展示,YYYY-MM-DD,参考:https://day.js.org/docs/en/display/format#list-of-all-available-formats
  343. shortcuts:默认展示的日期,如果没有填写则会吐出默认值,值如:
  344. [
  345. [
  346. 'text' => '今天',
  347. 'func' => 'return new Date()',//这里是js代码,怎么弄找ai要就行
  348. ],
  349. ],
  350. start_placeholder:开始日期文字描述
  351. end_placeholder:结束日期文字描述
  352. range_separator:日期范围文字描述
  353. step:步数
  354. start:开始日期
  355. end:结束日期
  356. default:默认日期
  357. time:仅选择时间
  358. step:步数
  359. start:开始时间
  360. end:结束时间
  361. */
  362. 'mobile' => [
  363. # 仅限编辑,值为add/edit,不填则所有有效
  364. //'only' => 'edit',
  365. 'name' => '手机号',
  366. 'type' => 'text',
  367. 'disable' => false,//是否禁用
  368. 'placeholder' => '',//提示语
  369. # 校验规则,如rules => true,是必填, 无rules或者rules=false,就是选填
  370. # 参考:https://github.com/yiminghe/async-validator
  371. 'rules' => [
  372. # 规则1
  373. [
  374. # 必填
  375. 'required' => true,
  376. # 输入后触发
  377. 'trigger' => 'blur',
  378. # 提示信息
  379. 'message' => '请输入手机号',
  380. ],
  381. # 规则2
  382. [
  383. # 最小字符
  384. //'min' => 3,
  385. # 最大字符
  386. //'max' => 5,
  387. # 长度
  388. 'len' => 11,
  389. # 正则
  390. 'pattern' => Dever::rule('mobile', ''),
  391. 'trigger' => 'blur',
  392. # 提示信息
  393. 'message' => '手机号错误',
  394. # 验证类型 date,array,number,boolean,integer,float,url,email,enum,string
  395. 'type' => 'string',
  396. ],
  397. ],
  398. ],
  399. 'password' => [
  400. 'type' => 'password',
  401. # 更新时的值,始终是空的,有值才更新
  402. 'update' => '',
  403. # 对更新的值进行处理
  404. 'handle' => 'manage/util.createPwd',
  405. # 空值不允许入库
  406. 'empty' => false,
  407. 'rules' => [
  408. [
  409. # 仅限新增时必填,值为add/edit,不填则所有有效
  410. 'only' => 'add',
  411. 'required' => true,
  412. 'trigger' => 'blur',
  413. 'message' => '请输入密码',
  414. ],
  415. [
  416. 'min' => 6,
  417. 'max' => 18,
  418. 'trigger' => 'blur',
  419. 'message' => '密码长度不能超过18或者少于6个字符',
  420. ],
  421. ],
  422. ],
  423. 'role' => [
  424. 'type' => 'checkbox',
  425. # 是否开启控制功能,需要配置control
  426. //'control' => true,
  427. # 开启远程获取数据功能,这里设置接口即可,访问到api下
  428. 'remote' => 'Manage/Api/Admin.getModuleData',
  429. ],
  430. 'module_data' => [
  431. 'type' => 'tree',
  432. 'desc' => '',
  433. ],
  434. # 调用另外一个manage下update字段定义,如api/api_notify,就是调用api/manage/api_notify.php里的update
  435. /*
  436. #也可以这样设置
  437. 'api/api_notify#' => [
  438. 'field' => 'sign_arg',
  439. 'name' => '签名参数',
  440. 'where' => ['api_id' => 'id'],
  441. 'type' => 'text',
  442. ],
  443. 'api/api_notify##' => [
  444. 'field' => 'sign_id',
  445. 'name' => '签名',
  446. 'where' => ['api_id' => 'id'],
  447. ],
  448. 'api/api_notify' => [
  449. 'name' => '基本设置',
  450. 'where' => ['api_id' => 'id'],
  451. 'default' => [['type' => 2]],
  452. # 默认使用表格形式展示,可以改成每行展示
  453. 'type' => 'line',
  454. ],
  455. 'api/api_notify_body' => [
  456. 'name' => '参数设置',
  457. 'where' => ['api_id' => 'id'],
  458. ],
  459. */
  460. ],
  461. # 是否开启控制功能
  462. /*
  463. 'control' => [
  464. 'avatar' => [
  465. 'role' => 1,
  466. ],
  467. ],
  468. */
  469. # update提交之前的操作,需要验证哪些字段唯一,多个用逗号隔开
  470. 'check' => 'mobile',
  471. # update提交之前的操作
  472. 'start' => '',
  473. # update提交之后的操作
  474. 'end' => '',
  475. ],
  476. # 详情页配置
  477. 'view' => 'Manage/Lib/Util.view',
  478. # 自定义页配置
  479. //'diy1' => 'Manage/Lib/Test.diy',
  480. ];