Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

crud.js 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. //增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)
  2. /* jshint esversion: 11 */
  3. import {
  4. config,
  5. method,
  6. HOOK
  7. } from './config';
  8. import {
  9. mergeOptions
  10. } from '@/utils/utils';
  11. /**
  12. * CRUD 的基础配置
  13. *
  14. * @param {*} options 选择
  15. */
  16. function CRUD(options = {}) {
  17. const defaultOptions = config.defaultOptions;
  18. //合并用户配置参数信息
  19. options = mergeOptions(defaultOptions, options);
  20. //data为系统视图配置(一般不做整合)-对象合并
  21. const crud = Object.assign(options, config.data);
  22. // 附加方法 CRUD操作执行方法
  23. Object.assign(crud, method);
  24. // 冻结处理(使得配置信息不可修改)
  25. Object.freeze(crud);
  26. return crud;
  27. }
  28. /**
  29. * CRUD的配置参数
  30. * @param {*} options 配置参数
  31. * @returns
  32. */
  33. function crudConfig(options = {}) {
  34. //合并传入过来的参数
  35. const crud = CRUD({});
  36. return {
  37. data() {
  38. return {
  39. crud
  40. };
  41. },
  42. beforeRefresh() { //创建前
  43. this.crud.registerVM(options.type, this);
  44. },
  45. destroy() { //销毁
  46. this.crud.unregisterVM(options.type, this);
  47. }
  48. };
  49. }
  50. /**
  51. * CRUD钩子
  52. */
  53. CRUD.HOOK = HOOK;
  54. /**
  55. * CRUD状态
  56. */
  57. CRUD.STATUS = {
  58. NORMAL: 0, //正常
  59. PREPARED: 1, //准备好的
  60. PROCESSING: 2 //处理好的
  61. };
  62. export default CRUD;
  63. export {
  64. crudConfig
  65. };