1 line
30 KiB
JSON
1 line
30 KiB
JSON
{"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]} |