Files
tekelanew_acs/acs/nladmin-ui/node_modules/.cache/babel-loader/806f25acf0f9dfcaaedffcc905a66632.json
2024-12-05 09:33:18 +08:00

1 line
30 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"remainingRequest":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\babel-loader\\lib\\index.js!D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\eslint-loader\\index.js??ref--13-0!D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\src\\components\\Crud\\crud.js","dependencies":[{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\src\\components\\Crud\\crud.js","mtime":1732871026459},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\babel.config.js","mtime":1732871025888},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1732872824662},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\babel-loader\\lib\\index.js","mtime":1732872825017},{"path":"D:\\data\\hanguodoushan\\acs2\\nladmin-ui\\node_modules\\eslint-loader\\index.js","mtime":1732872823677}],"contextDependencies":[],"result":["\"use strict\";\n\nvar _interopRequireDefault = require(\"D:/data/hanguodoushan/acs2/nladmin-ui/node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crud = crud;\nexports.default = void 0;\nexports.form = form;\nexports.header = header;\nexports.pagination = pagination;\nexports.presenter = presenter;\nrequire(\"core-js/modules/es6.string.iterator\");\nrequire(\"core-js/modules/es6.set\");\nrequire(\"core-js/modules/es6.object.freeze\");\nrequire(\"core-js/modules/es6.array.find\");\nvar _typeof2 = _interopRequireDefault(require(\"D:/data/hanguodoushan/acs2/nladmin-ui/node_modules/@babel/runtime/helpers/typeof.js\"));\nrequire(\"core-js/modules/es6.array.sort\");\nrequire(\"core-js/modules/es6.object.keys\");\nrequire(\"core-js/modules/web.dom.iterable\");\nvar _objectSpread2 = _interopRequireDefault(require(\"D:/data/hanguodoushan/acs2/nladmin-ui/node_modules/@babel/runtime/helpers/objectSpread2.js\"));\nvar _data = require(\"@/api/data\");\nvar _index = require(\"@/utils/index\");\nvar _vue = _interopRequireDefault(require(\"vue\"));\nvar _i18n = _interopRequireDefault(require(\"@/i18n\"));\n/**\r\n * CRUD配置\r\n * @author moxun\r\n * @param {*} options <br>\r\n * @return crud instance.\r\n * @example\r\n * 要使用多crud时请在关联crud的组件处使用crud-tag进行标记<jobForm :job-status=\"dict.job_status\" crud-tag=\"job\" />\r\n */\nfunction CRUD(options) {\n var defaultOptions = {\n tag: 'default',\n // id字段名\n idField: 'id',\n // 标题\n title: '',\n // 请求数据的url\n url: '',\n // 表格数据\n data: [],\n // 选择项\n selections: [],\n // 待查询的对象\n query: {},\n // 查询数据的参数\n params: {},\n // Form 表单\n form: {},\n // 重置表单\n defaultForm: function defaultForm() {},\n // 排序规则,默认 id 降序, 支持多字段排序 ['id,desc', 'createTime,asc']\n sort: ['id,desc'],\n // 等待时间\n time: 50,\n // CRUD Method\n crudMethod: {\n add: function add(form) {},\n del: function del(id) {},\n edit: function edit(form) {},\n get: function get(id) {}\n },\n // 主页操作栏显示哪些按钮\n optShow: {\n add: true,\n edit: false,\n del: true,\n download: false,\n reset: true\n },\n // 自定义一些扩展属性\n props: {},\n // 在主页准备\n queryOnPresenterCreated: true,\n // 调试开关\n debug: false\n };\n options = mergeOptions(defaultOptions, options);\n var data = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, options), {}, {\n // 记录数据状态\n dataStatus: {},\n status: {\n add: CRUD.STATUS.NORMAL,\n edit: CRUD.STATUS.NORMAL,\n view: CRUD.STATUS.NORMAL,\n // 添加或编辑状态\n get cu() {\n if (this.add === CRUD.STATUS.NORMAL && this.edit === CRUD.STATUS.NORMAL) {\n return CRUD.STATUS.NORMAL;\n } else if (this.add === CRUD.STATUS.PREPARED || this.edit === CRUD.STATUS.PREPARED) {\n return CRUD.STATUS.PREPARED;\n } else if (this.add === CRUD.STATUS.PROCESSING || this.edit === CRUD.STATUS.PROCESSING) {\n return CRUD.STATUS.PROCESSING;\n }\n throw new Error('wrong crud\\'s cu status');\n },\n // 标题\n get title() {\n return this.add > CRUD.STATUS.NORMAL ? _i18n.default.t('auto.common.Create') + ' ' + _i18n.default.t(\"\".concat(crud.title)) : this.edit > CRUD.STATUS.NORMAL ? _i18n.default.t('auto.common.Editors') + ' ' + _i18n.default.t(\"\".concat(crud.title)) : crud.title;\n }\n },\n msg: {\n submit: '提交成功',\n add: '新增成功',\n edit: '编辑成功',\n del: '删除成功'\n },\n page: {\n // 页码\n page: 0,\n // 每页数据条数\n size: 10,\n // 总数据条数\n total: 0\n },\n // 整体loading\n loading: false,\n // 导出的 Loading\n downloadLoading: false,\n // 导出csv的 Loading\n downloadcsvLoading: false,\n // 删除的 Loading\n delAllLoading: false\n });\n var methods = {\n /**\r\n * 通用的提示\r\n */\n submitSuccessNotify: function submitSuccessNotify() {\n crud.notify(crud.msg.submit, CRUD.NOTIFICATION_TYPE.SUCCESS);\n },\n addSuccessNotify: function addSuccessNotify() {\n crud.notify(crud.msg.add, CRUD.NOTIFICATION_TYPE.SUCCESS);\n },\n editSuccessNotify: function editSuccessNotify() {\n crud.notify(crud.msg.edit, CRUD.NOTIFICATION_TYPE.SUCCESS);\n },\n delSuccessNotify: function delSuccessNotify() {\n crud.notify(crud.msg.del, CRUD.NOTIFICATION_TYPE.SUCCESS);\n },\n // 搜索\n toQuery: function toQuery() {\n crud.page.page = 1;\n crud.refresh();\n },\n // 刷新\n refresh: function refresh() {\n if (!callVmHook(crud, CRUD.HOOK.beforeRefresh)) {\n return;\n }\n return new Promise(function (resolve, reject) {\n crud.loading = true;\n // 请求数据\n (0, _data.initData)(crud.url, crud.getQueryParams()).then(function (data) {\n var table = crud.getTable();\n if (table && table.lazy) {\n // 懒加载子节点数据,清掉已加载的数据\n table.store.states.treeData = {};\n table.store.states.lazyTreeNodeMap = {};\n }\n crud.page.total = data.totalElements;\n crud.data = data.content;\n crud.resetDataStatus();\n // time 毫秒后显示表格\n setTimeout(function () {\n crud.loading = false;\n callVmHook(crud, CRUD.HOOK.afterRefresh);\n }, crud.time);\n resolve(data);\n }).catch(function (err) {\n crud.loading = false;\n reject(err);\n });\n });\n },\n /**\r\n * 格式化是否1-是0-否\r\n */\n formatIsOrNot: function formatIsOrNot(row, column) {\n if (!row[column.property]) {\n return '否';\n }\n return row[column.property] === '1' ? '是' : '否';\n },\n /**\r\n * 格式化数据保留0位小数\r\n */\n formatNum0: function formatNum0(row, column) {\n if (!row[column.property]) {\n return 0;\n }\n return parseFloat(row[column.property]).toFixed(0);\n },\n /**\r\n * 格式化数据保留2位小数\r\n */\n formatNum2: function formatNum2(row, column) {\n if (!row[column.property]) {\n return 0;\n }\n return parseFloat(row[column.property]).toFixed(2);\n },\n /**\r\n * 格式化数据保留3位小数\r\n */\n formatNum3: function formatNum3(row, column) {\n if (!row[column.property]) {\n return 0;\n }\n return parseFloat(row[column.property]).toFixed(3);\n },\n /**\r\n * 质检格式化数据保留4位小数\r\n */\n formatQlNum4: function formatQlNum4(row, column) {\n if (!row[column.property]) {\n return '';\n }\n return parseFloat(row[column.property]).toFixed(4);\n },\n /**\r\n * 启动添加\r\n */\n toAdd: function toAdd() {\n crud.resetForm();\n if (!(callVmHook(crud, CRUD.HOOK.beforeToAdd, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) {\n return;\n }\n crud.status.add = CRUD.STATUS.PREPARED;\n callVmHook(crud, CRUD.HOOK.afterToAdd, crud.form);\n callVmHook(crud, CRUD.HOOK.afterToCU, crud.form);\n },\n /**\r\n * 启动添加 可携带参数\r\n */\n toAddAndData: function toAddAndData(data) {\n crud.resetForm(JSON.parse(JSON.stringify(data)));\n if (!(callVmHook(crud, CRUD.HOOK.beforeToAdd, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) {\n return;\n }\n crud.status.add = CRUD.STATUS.PREPARED;\n callVmHook(crud, CRUD.HOOK.afterToAdd, crud.form);\n callVmHook(crud, CRUD.HOOK.afterToCU, crud.form);\n },\n /**\r\n * 启动编辑\r\n * @param {*} data 数据项\r\n */\n toEdit: function toEdit(data) {\n crud.resetForm(JSON.parse(JSON.stringify(data)));\n if (!(callVmHook(crud, CRUD.HOOK.beforeToEdit, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) {\n return;\n }\n crud.status.edit = CRUD.STATUS.PREPARED;\n crud.getDataStatus(crud.getDataId(data)).edit = CRUD.STATUS.PREPARED;\n callVmHook(crud, CRUD.HOOK.afterToEdit, crud.form);\n callVmHook(crud, CRUD.HOOK.afterToCU, crud.form);\n },\n /**\r\n * 查询详情\r\n * @param {*} data 数据项\r\n */\n toView: function toView(data) {\n crud.params.optRow = data;\n crud.resetForm(JSON.parse(JSON.stringify(data)));\n crud.status.view = CRUD.STATUS.PREPARED;\n crud.getDataStatus(crud.getDataId(data)).view = CRUD.STATUS.PREPARED;\n callVmHook(crud, CRUD.HOOK.afterToView, crud.form);\n },\n /**\r\n * 启动删除\r\n * @param {*} data 数据项\r\n */\n toDelete: function toDelete(data) {\n crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.PREPARED;\n },\n /**\r\n * 取消删除\r\n * @param {*} data 数据项\r\n */\n cancelDelete: function cancelDelete(data) {\n if (!callVmHook(crud, CRUD.HOOK.beforeDeleteCancel, data)) {\n return;\n }\n crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.NORMAL;\n callVmHook(crud, CRUD.HOOK.afterDeleteCancel, data);\n },\n /**\r\n * 取消新增/编辑\r\n */\n cancelCU: function cancelCU(formName) {\n if (formName instanceof PointerEvent) {\n formName = 'form';\n }\n var addStatus = crud.status.add;\n var editStatus = crud.status.edit;\n var viewStatus = crud.status.view;\n if (addStatus === CRUD.STATUS.PREPARED) {\n if (!callVmHook(crud, CRUD.HOOK.beforeAddCancel, crud.form)) {\n return;\n }\n crud.status.add = CRUD.STATUS.NORMAL;\n }\n if (viewStatus === CRUD.STATUS.PREPARED) {\n crud.status.view = CRUD.STATUS.NORMAL;\n }\n if (editStatus === CRUD.STATUS.PREPARED) {\n if (!callVmHook(crud, CRUD.HOOK.beforeEditCancel, crud.form)) {\n return;\n }\n crud.status.edit = CRUD.STATUS.NORMAL;\n crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL;\n }\n crud.resetForm();\n if (addStatus === CRUD.STATUS.PREPARED) {\n callVmHook(crud, CRUD.HOOK.afterAddCancel, crud.form);\n }\n if (editStatus === CRUD.STATUS.PREPARED) {\n callVmHook(crud, CRUD.HOOK.afterEditCancel, crud.form);\n }\n // 清除表单验证\n if (crud.findVM('form').$refs[formName]) {\n crud.findVM('form').$refs[formName].clearValidate();\n }\n },\n /**\r\n * 提交新增/编辑\r\n */\n submitCU: function submitCU(formName) {\n if (formName instanceof PointerEvent) {\n formName = 'form';\n }\n if (!callVmHook(crud, CRUD.HOOK.beforeValidateCU)) {\n return;\n }\n crud.findVM('form').$refs[formName].validate(function (valid) {\n if (!valid) {\n return;\n }\n if (!callVmHook(crud, CRUD.HOOK.afterValidateCU)) {\n return;\n }\n if (crud.status.add === CRUD.STATUS.PREPARED) {\n crud.doAdd();\n } else if (crud.status.edit === CRUD.STATUS.PREPARED) {\n crud.doEdit();\n }\n });\n },\n /**\r\n * 执行添加\r\n */\n doAdd: function doAdd() {\n if (!callVmHook(crud, CRUD.HOOK.beforeSubmit)) {\n return;\n }\n crud.status.add = CRUD.STATUS.PROCESSING;\n crud.crudMethod.add(crud.form).then(function () {\n crud.status.add = CRUD.STATUS.NORMAL;\n crud.resetForm();\n crud.addSuccessNotify();\n callVmHook(crud, CRUD.HOOK.afterSubmit);\n crud.toQuery();\n }).catch(function () {\n crud.status.add = CRUD.STATUS.PREPARED;\n callVmHook(crud, CRUD.HOOK.afterAddError);\n });\n },\n /**\r\n * 执行编辑\r\n */\n doEdit: function doEdit() {\n if (!callVmHook(crud, CRUD.HOOK.beforeSubmit)) {\n return;\n }\n crud.status.edit = CRUD.STATUS.PROCESSING;\n crud.crudMethod.edit(crud.form).then(function () {\n crud.status.edit = CRUD.STATUS.NORMAL;\n crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL;\n crud.editSuccessNotify();\n crud.resetForm();\n callVmHook(crud, CRUD.HOOK.afterSubmit);\n crud.refresh();\n }).catch(function () {\n crud.status.edit = CRUD.STATUS.PREPARED;\n callVmHook(crud, CRUD.HOOK.afterEditError);\n });\n },\n /**\r\n * 执行删除\r\n * @param {*} data 数据项\r\n */\n doDelete: function doDelete(data) {\n var _this = this;\n var delAll = false;\n var dataStatus;\n var ids = [];\n if (data instanceof Array) {\n delAll = true;\n data.forEach(function (val) {\n ids.push(_this.getDataId(val));\n });\n } else {\n ids.push(this.getDataId(data));\n dataStatus = crud.getDataStatus(this.getDataId(data));\n }\n if (!callVmHook(crud, CRUD.HOOK.beforeDelete, data)) {\n return;\n }\n if (!delAll) {\n dataStatus.delete = CRUD.STATUS.PROCESSING;\n }\n return crud.crudMethod.del(ids).then(function () {\n if (delAll) {\n crud.delAllLoading = false;\n } else {\n dataStatus.delete = CRUD.STATUS.PREPARED;\n }\n crud.dleChangePage(1);\n crud.delSuccessNotify();\n callVmHook(crud, CRUD.HOOK.afterDelete, data);\n crud.refresh();\n }).catch(function () {\n if (delAll) {\n crud.delAllLoading = false;\n } else {\n dataStatus.delete = CRUD.STATUS.PREPARED;\n }\n });\n },\n /**\r\n * 通用导出\r\n */\n doExport: function doExport() {\n crud.downloadLoading = true;\n (0, _data.download)(crud.url + '/download', crud.getQueryParams()).then(function (result) {\n (0, _index.downloadFile)(result, crud.title + '数据', 'xlsx');\n crud.downloadLoading = false;\n }).catch(function () {\n crud.downloadLoading = false;\n });\n },\n doExportCSV: function doExportCSV() {\n crud.downloadcsvLoading = true;\n (0, _data.download)(crud.url + '/downloadCSV', crud.getQueryParams()).then(function (result) {\n (0, _index.downloadFile)(result, crud.title + '数据', 'csv');\n crud.downloadcsvLoading = false;\n }).catch(function () {\n crud.downloadcsvLoading = false;\n });\n },\n /**\r\n * 获取查询参数\r\n */\n getQueryParams: function getQueryParams() {\n // 清除参数无值的情况\n Object.keys(crud.query).length !== 0 && Object.keys(crud.query).forEach(function (item) {\n if (crud.query[item] === null || crud.query[item] === '') crud.query[item] = undefined;\n });\n Object.keys(crud.params).length !== 0 && Object.keys(crud.params).forEach(function (item) {\n if (crud.params[item] === null || crud.params[item] === '') crud.params[item] = undefined;\n });\n return (0, _objectSpread2.default)((0, _objectSpread2.default)({\n page: crud.page.page - 1,\n size: crud.page.size,\n sort: crud.sort\n }, crud.query), crud.params);\n },\n // 当前页改变\n pageChangeHandler: function pageChangeHandler(e) {\n crud.page.page = e;\n crud.refresh();\n },\n // 每页条数改变\n sizeChangeHandler: function sizeChangeHandler(e) {\n crud.page.size = e;\n crud.page.page = 1;\n crud.refresh();\n },\n // 预防删除第二页最后一条数据时,或者多选删除第二页的数据时,页码错误导致请求无数据\n dleChangePage: function dleChangePage(size) {\n if (crud.data.length === size && crud.page.page !== 1) {\n crud.page.page -= 1;\n }\n },\n // 选择改变\n selectionChangeHandler: function selectionChangeHandler(val) {\n crud.selections = val;\n },\n /**\r\n * 重置查询参数\r\n * @param {Boolean} toQuery 重置后进行查询操作\r\n */\n resetQuery: function resetQuery() {\n var toQuery = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var defaultQuery = JSON.parse(JSON.stringify(crud.defaultQuery));\n var query = crud.query;\n Object.keys(query).forEach(function (key) {\n query[key] = defaultQuery[key];\n });\n // 重置参数\n this.params = {};\n if (toQuery) {\n crud.toQuery();\n }\n },\n /**\r\n * 重置表单\r\n * @param {Array} data 数据\r\n */\n resetForm: function resetForm(data) {\n var form = data || ((0, _typeof2.default)(crud.defaultForm) === 'object' ? JSON.parse(JSON.stringify(crud.defaultForm)) : crud.defaultForm.apply(crud.findVM('form')));\n var crudFrom = crud.form;\n for (var key in form) {\n if (crudFrom.hasOwnProperty(key)) {\n crudFrom[key] = form[key];\n } else {\n _vue.default.set(crudFrom, key, form[key]);\n }\n }\n // add by ghl 2020-10-04 页面重复添加信息时,下拉框的校验会存在,需要找工取消\n var form_ref = 'form';\n if (crudFrom.form_ref) form_ref = crudFrom.form_ref;\n if (crud.findVM('form').$refs[form_ref]) {\n crud.findVM('form').$refs[form_ref].clearValidate();\n }\n },\n /**\r\n * 重置数据状态\r\n */\n resetDataStatus: function resetDataStatus() {\n var dataStatus = {};\n function resetStatus(datas) {\n datas.forEach(function (e) {\n dataStatus[crud.getDataId(e)] = {\n delete: 0,\n edit: 0\n };\n if (e.children) {\n resetStatus(e.children);\n }\n });\n }\n resetStatus(crud.data);\n crud.dataStatus = dataStatus;\n },\n /**\r\n * 获取数据状态\r\n * @param {Number | String} id 数据项id\r\n */\n getDataStatus: function getDataStatus(id) {\n return crud.dataStatus[id];\n },\n /**\r\n * 用于树形表格多选, 选中所有\r\n * @param selection\r\n */\n selectAllChange: function selectAllChange(selection) {\n // 如果选中的数目与请求到的数目相同就选中子节点,否则就清空选中\n if (selection && selection.length === crud.data.length) {\n selection.forEach(function (val) {\n crud.selectChange(selection, val);\n });\n } else {\n crud.getTable().clearSelection();\n }\n },\n /**\r\n * 用于树形表格多选,单选的封装\r\n * @param selection\r\n * @param row\r\n */\n selectChange: function selectChange(selection, row) {\n // 如果selection中存在row代表是选中否则是取消选中\n if (selection.find(function (val) {\n return crud.getDataId(val) === crud.getDataId(row);\n })) {\n if (row.children) {\n row.children.forEach(function (val) {\n crud.getTable().toggleRowSelection(val, true);\n selection.push(val);\n if (val.children) {\n crud.selectChange(selection, val);\n }\n });\n }\n } else {\n crud.toggleRowSelection(selection, row);\n }\n },\n /**\r\n * 切换选中状态\r\n * @param selection\r\n * @param data\r\n */\n toggleRowSelection: function toggleRowSelection(selection, data) {\n if (data.children) {\n data.children.forEach(function (val) {\n crud.getTable().toggleRowSelection(val, false);\n if (val.children) {\n crud.toggleRowSelection(selection, val);\n }\n });\n }\n },\n findVM: function findVM(type) {\n return crud.vms.find(function (vm) {\n return vm && vm.type === type;\n }).vm;\n },\n notify: function notify(title) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : CRUD.NOTIFICATION_TYPE.INFO;\n crud.vms[0].vm.$notify({\n title: title,\n type: type,\n duration: 2500\n });\n },\n updateProp: function updateProp(name, value) {\n _vue.default.set(crud.props, name, value);\n },\n getDataId: function getDataId(data) {\n return data[this.idField];\n },\n getTable: function getTable() {\n return this.findVM('presenter').$refs.table;\n },\n attchTable: function attchTable() {\n var table = this.getTable();\n this.updateProp('table', table);\n var that = this;\n table.$on('expand-change', function (row, expanded) {\n if (!expanded) {\n return;\n }\n var lazyTreeNodeMap = table.store.states.lazyTreeNodeMap;\n row.children = lazyTreeNodeMap[crud.getDataId(row)];\n if (row.children) {\n row.children.forEach(function (ele) {\n var id = crud.getDataId(ele);\n if (that.dataStatus[id] === undefined) {\n that.dataStatus[id] = {\n delete: 0,\n edit: 0\n };\n }\n });\n }\n });\n }\n };\n var crud = Object.assign({}, data);\n // 可观测化\n _vue.default.observable(crud);\n // 附加方法\n Object.assign(crud, methods);\n // 记录初始默认的查询参数,后续重置查询时使用\n Object.assign(crud, {\n defaultQuery: JSON.parse(JSON.stringify(data.query)),\n // 预留4位存储组件 主页、头部、分页、表单,调试查看也方便找\n vms: Array(4),\n /**\r\n * 注册组件实例\r\n * @param {String} type 类型\r\n * @param {*} vm 组件实例\r\n * @param {Number} index 该参数内部使用\r\n */\n registerVM: function registerVM(type, vm) {\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : -1;\n var vmObj = {\n type: type,\n vm: vm\n };\n if (index < 0) {\n this.vms.push(vmObj);\n return;\n }\n if (index < 4) {\n // 内置预留vm数\n this.vms[index] = vmObj;\n return;\n }\n this.vms.length = Math.max(this.vms.length, index);\n this.vms.splice(index, 1, vmObj);\n },\n /**\r\n * 取消注册组件实例\r\n * @param {*} vm 组件实例\r\n */\n unregisterVM: function unregisterVM(type, vm) {\n for (var i = this.vms.length - 1; i >= 0; i--) {\n if (this.vms[i] === undefined) {\n continue;\n }\n if (this.vms[i].type === type && this.vms[i].vm === vm) {\n if (i < 4) {\n // 内置预留vm数\n this.vms[i] = undefined;\n } else {\n this.vms.splice(i, 1);\n }\n break;\n }\n }\n }\n });\n // 冻结处理需要扩展数据的话使用crud.updateProp(name, value)以crud.props.name形式访问这个是响应式的可以做数据绑定\n Object.freeze(crud);\n return crud;\n}\n\n// hook VM\nfunction callVmHook(crud, hook) {\n if (crud.debug) {\n console.log('callVmHook: ' + hook);\n }\n var tagHook = crud.tag ? hook + '$' + crud.tag : null;\n var ret = true;\n var nargs = [crud];\n for (var i = 2; i < arguments.length; ++i) {\n nargs.push(arguments[i]);\n }\n // 有些组件扮演了多个角色,调用钩子时,需要去重\n var vmSet = new Set();\n crud.vms.forEach(function (vm) {\n return vm && vmSet.add(vm.vm);\n });\n vmSet.forEach(function (vm) {\n if (vm[hook]) {\n ret = vm[hook].apply(vm, nargs) !== false && ret;\n }\n if (tagHook && vm[tagHook]) {\n ret = vm[tagHook].apply(vm, nargs) !== false && ret;\n }\n });\n return ret;\n}\nfunction mergeOptions(src, opts) {\n var optsRet = (0, _objectSpread2.default)({}, src);\n for (var key in src) {\n if (opts.hasOwnProperty(key)) {\n optsRet[key] = opts[key];\n }\n }\n return optsRet;\n}\n\n/**\r\n * 查找crud\r\n * @param {*} vm\r\n * @param {string} tag\r\n */\nfunction lookupCrud(vm, tag) {\n tag = tag || vm.$attrs['crud-tag'] || 'default';\n // function lookupCrud(vm, tag) {\n if (vm.$crud) {\n var ret = vm.$crud[tag];\n if (ret) {\n return ret;\n }\n }\n return vm.$parent ? lookupCrud(vm.$parent, tag) : undefined;\n}\n\n/**\r\n * crud主页\r\n */\nfunction presenter(crud) {\n if (crud) {\n console.warn('[CRUD warn]: ' + 'please use $options.cruds() { return CRUD(...) or [CRUD(...), ...] }');\n }\n return {\n data: function data() {\n // 在data中返回crud是为了将crud与当前实例关联组件观测crud相关属性变化\n return {\n crud: this.crud\n };\n },\n beforeCreate: function beforeCreate() {\n var _this2 = this;\n this.$crud = this.$crud || {};\n var cruds = this.$options.cruds instanceof Function ? this.$options.cruds() : crud;\n if (!(cruds instanceof Array)) {\n cruds = [cruds];\n }\n cruds.forEach(function (ele) {\n if (_this2.$crud[ele.tag]) {\n console.error('[CRUD error]: ' + 'crud with tag [' + ele.tag + ' is already exist');\n }\n _this2.$crud[ele.tag] = ele;\n ele.registerVM('presenter', _this2, 0);\n });\n this.crud = this.$crud['defalut'] || cruds[0];\n },\n methods: {\n parseTime: _index.parseTime\n },\n created: function created() {\n for (var k in this.$crud) {\n if (this.$crud[k].queryOnPresenterCreated) {\n this.$crud[k].toQuery();\n }\n }\n },\n destroyed: function destroyed() {\n for (var k in this.$crud) {\n this.$crud[k].unregisterVM('presenter', this);\n }\n },\n mounted: function mounted() {\n // 如果table未实例化例如使用了v-if请稍后在适当时机crud.attchTable刷新table信息\n if (this.$refs.table !== undefined) {\n this.crud.attchTable();\n }\n }\n };\n}\n\n/**\r\n * 头部\r\n */\nfunction header() {\n return {\n data: function data() {\n return {\n crud: this.crud,\n query: this.crud.query\n };\n },\n beforeCreate: function beforeCreate() {\n this.crud = lookupCrud(this);\n this.crud.registerVM('header', this, 1);\n },\n destroyed: function destroyed() {\n this.crud.unregisterVM('header', this);\n }\n };\n}\n\n/**\r\n * 分页\r\n */\nfunction pagination() {\n return {\n data: function data() {\n return {\n crud: this.crud,\n page: this.crud.page\n };\n },\n beforeCreate: function beforeCreate() {\n this.crud = lookupCrud(this);\n this.crud.registerVM('pagination', this, 2);\n },\n destroyed: function destroyed() {\n this.crud.unregisterVM('pagination', this);\n }\n };\n}\n\n/**\r\n * 表单\r\n */\nfunction form(defaultForm) {\n return {\n data: function data() {\n return {\n crud: this.crud,\n form: this.crud.form\n };\n },\n beforeCreate: function beforeCreate() {\n this.crud = lookupCrud(this);\n this.crud.registerVM('form', this, 3);\n },\n created: function created() {\n this.crud.defaultForm = defaultForm;\n this.crud.resetForm();\n },\n destroyed: function destroyed() {\n this.crud.unregisterVM('form', this);\n }\n };\n}\n\n/**\r\n * crud\r\n */\nfunction crud() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaultOptions = {\n type: undefined\n };\n options = mergeOptions(defaultOptions, options);\n return {\n data: function data() {\n return {\n crud: this.crud\n };\n },\n beforeCreate: function beforeCreate() {\n this.crud = lookupCrud(this);\n this.crud.registerVM(options.type, this);\n },\n destroyed: function destroyed() {\n this.crud.unregisterVM(options.type, this);\n }\n };\n}\n\n/**\r\n * CRUD钩子\r\n */\nCRUD.HOOK = {\n /** 刷新 - 之前 */\n beforeRefresh: 'beforeCrudRefresh',\n /** 刷新 - 之后 */\n afterRefresh: 'afterCrudRefresh',\n /** 删除 - 之前 */\n beforeDelete: 'beforeCrudDelete',\n /** 删除 - 之后 */\n afterDelete: 'afterCrudDelete',\n /** 删除取消 - 之前 */\n beforeDeleteCancel: 'beforeCrudDeleteCancel',\n /** 删除取消 - 之后 */\n afterDeleteCancel: 'afterCrudDeleteCancel',\n /** 新建 - 之前 */\n beforeToAdd: 'beforeCrudToAdd',\n /** 新建 - 之后 */\n afterToAdd: 'afterCrudToAdd',\n /** 编辑 - 之前 */\n beforeToEdit: 'beforeCrudToEdit',\n /** 编辑 - 之后 */\n afterToEdit: 'afterCrudToEdit',\n /** 开始 \"新建/编辑\" - 之前 */\n beforeToCU: 'beforeCrudToCU',\n /** 开始 \"新建/编辑\" - 之后 */\n afterToCU: 'afterCrudToCU',\n /** \"新建/编辑\" 验证 - 之前 */\n beforeValidateCU: 'beforeCrudValidateCU',\n /** \"新建/编辑\" 验证 - 之后 */\n afterValidateCU: 'afterCrudValidateCU',\n /** 添加取消 - 之前 */\n beforeAddCancel: 'beforeCrudAddCancel',\n /** 添加取消 - 之后 */\n afterAddCancel: 'afterCrudAddCancel',\n /** 编辑取消 - 之前 */\n beforeEditCancel: 'beforeCrudEditCancel',\n /** 编辑取消 - 之后 */\n afterEditCancel: 'afterCrudEditCancel',\n /** 提交 - 之前 */\n beforeSubmit: 'beforeCrudSubmitCU',\n /** 提交 - 之后 */\n afterSubmit: 'afterCrudSubmitCU',\n afterAddError: 'afterCrudAddError',\n afterEditError: 'afterCrudEditError',\n afterToView: 'afterToView'\n};\n\n/**\r\n * CRUD状态\r\n */\nCRUD.STATUS = {\n NORMAL: 0,\n PREPARED: 1,\n PROCESSING: 2\n};\n\n/**\r\n * CRUD通知类型\r\n */\nCRUD.NOTIFICATION_TYPE = {\n SUCCESS: 'success',\n WARNING: 'warning',\n INFO: 'info',\n ERROR: 'error'\n};\nvar _default = exports.default = CRUD;",null]}