@vipl520/dk-ui 1.0.22 → 1.0.24
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.js +143 -56
- package/dist/index.min.js +5 -3
- package/dist/index.min.js.map +1 -1
- package/dist/index.min.mjs +5 -3
- package/dist/index.min.mjs.map +1 -1
- package/dist/index.mjs +143 -56
- package/dist/web-types.json +1 -1
- package/es/table/index.d.ts +45 -0
- package/es/table/src/components/header.vue2.mjs +58 -26
- package/es/table/src/components/header.vue2.mjs.map +1 -1
- package/es/table/src/props.d.ts +12 -0
- package/es/table/src/props.mjs +18 -0
- package/es/table/src/props.mjs.map +1 -1
- package/es/table/src/table.vue.d.ts +27 -0
- package/es/table/src/table.vue2.mjs +17 -20
- package/es/table/src/table.vue2.mjs.map +1 -1
- package/es/table/utils/dkTable.d.ts +2 -1
- package/es/table/utils/dkTable.mjs +40 -0
- package/es/table/utils/dkTable.mjs.map +1 -1
- package/lib/table/index.d.ts +45 -0
- package/lib/table/src/components/header.vue2.js +58 -26
- package/lib/table/src/components/header.vue2.js.map +1 -1
- package/lib/table/src/props.d.ts +12 -0
- package/lib/table/src/props.js +18 -0
- package/lib/table/src/props.js.map +1 -1
- package/lib/table/src/table.vue.d.ts +27 -0
- package/lib/table/src/table.vue2.js +17 -20
- package/lib/table/src/table.vue2.js.map +1 -1
- package/lib/table/utils/dkTable.d.ts +2 -1
- package/lib/table/utils/dkTable.js +40 -0
- package/lib/table/utils/dkTable.js.map +1 -1
- package/package.json +1 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"dkTable.mjs","sources":["../../../src/table/utils/dkTable.ts"],"sourcesContent":["import { findIndexRow, getArrayKey, storage } from '@vipl520/utils'\nimport { reactive } from 'vue'\nimport Sortable from 'sortablejs'\nimport { ElNotification } from 'element-plus'\nimport type { TableColumnCtx } from 'element-plus'\nimport { dkTableApi } from './dkTableApi'\n// import { DkTable } from '../../../types/table'\nexport default class dkTable {\n public url\n\n public api: dkTableApi\n\n public buttonCallback: (event: string, data: any) => void\n\n public table: DkTable = reactive({\n ref: undefined,\n pk: 'id',\n data: [],\n remark: null,\n loading: true,\n columnLoading: true,\n selection: [],\n column: [],\n total: 0,\n filter: {},\n dragSortLimitField: 'pid',\n acceptQuery: true,\n showComSearch: false,\n dblClickNotEditColumn: [undefined],\n expandAll: false,\n extend: {},\n })\n\n // BaTable前置处理函数列表(前置埋点)\n public before: BaTableBefore\n\n // BaTable后置处理函数列表(后置埋点)\n public after: BaTableAfter\n\n public form: DkForm = reactive({\n ref: undefined,\n operateIds: [], // 被编辑的IDs\n edit_id: 0,\n })\n\n public recycleTable: RecycleTable = reactive({\n ref: undefined,\n pk: 'id',\n data: [],\n loading: true,\n columnLoading: true,\n selection: [],\n column: [],\n total: 0,\n filter: {},\n showDialog: false,\n showDialogLoading: false,\n dragSortLimitField: 'pid',\n acceptQuery: true,\n showComSearch: false,\n dblClickNotEditColumn: [undefined],\n expandAll: false,\n extend: {},\n })\n\n // 通用搜索数据\n public comSearch: ComSearch = reactive({\n form: {},\n fieldData: new Map(),\n })\n\n constructor(url: string, before: BaTableBefore = {}, after: BaTableAfter = {}) {\n this.url = url\n // eslint-disable-next-line new-cap\n this.api = new dkTableApi(url)\n this.before = before\n this.after = after\n this.buttonCallback = (event, data) => {\n console.warn('请调用onClickButton((event,data)=>{})', event, data)\n }\n }\n\n /**\n * 表格内部鉴权方法\n * 此方法在表头或表行组件内部自动调用,传递权限节点名,如:add、edit\n * 若需自定义表格内部鉴权,重写此方法即可\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n auth(node: string) {\n // return auth(node)\n // TODO\n return true\n }\n\n /**\n * 运行前置函数\n * @param funName 函数名\n * @param args 参数\n */\n runBefore(funName: string, args: any = {}) {\n if (this.before && this.before[funName] && typeof this.before[funName] === 'function') {\n return this.before[funName]!({ ...args }) !== false\n }\n return true\n }\n\n /**\n * 运行后置函数\n * @param funName 函数名\n * @param args 参数\n */\n runAfter(funName: string, args: any = {}) {\n if (this.after && this.after[funName] && typeof this.after[funName] === 'function') {\n return this.after[funName]!({ ...args }) !== false\n }\n return true\n }\n\n getIndex = () => {\n if (!this.runBefore('getIndex')) return\n this.table.loading = true\n return this.api\n .index(this.table.filter)\n .then((res) => {\n this.table.data = res.data.list\n this.table.total = res.data.total\n this.runAfter('getIndex', { res })\n })\n .finally(() => {\n this.table.loading = false\n })\n }\n\n getTable = (cache = false) => {\n if (!this.runBefore('getTable')) return\n\n this.table.columnLoading = true\n\n // 如果允许使用缓存\n if (cache) {\n // 尝试从 localStorage 获取缓存数据\n const cachedData = storage.get(this.url + '_table')\n\n // 如果缓存存在且有效,使用缓存数据\n if (cachedData) {\n const cachedTableData = JSON.parse(cachedData)\n this.table.column = cachedTableData.column\n this.table.columnLoading = false // 加载完成\n this.runAfter('getTable', { res: cachedTableData }) // 使用缓存数据作为响应\n return Promise.resolve(cachedTableData) // 返回一个已解决的 Promise\n }\n } else {\n // 缓存不存在或不使用缓存时,调用 API\n return this.api\n .table()\n .then((res) => {\n this.table.column = res.data.column\n if (res.data.pk) {\n this.table.pk = res.data.pk\n }\n // 如果允许缓存,将数据存储到 localStorage\n // if (cache) {\n storage.set(this.url + '_table', JSON.stringify(res.data))\n // }\n this.runAfter('getTable', { res })\n })\n .finally(() => {\n this.table.columnLoading = false\n })\n }\n }\n\n /**\n * 显示回收站\n */\n async showRecycle() {\n this.recycleTable.showDialogLoading = true\n if (this.recycleTable.column.length <= 0) {\n await this.getRecycleTable()\n }\n await this.getRecycleIndex()\n this.recycleTable.showDialog = true\n this.recycleTable.showDialogLoading = false\n }\n\n /**\n * 获取回收站列表\n */\n getRecycleIndex = () => {\n this.recycleTable.loading = true\n return this.api\n .recycle(this.recycleTable.filter)\n .then((res) => {\n this.recycleTable.data = res.data.list\n this.recycleTable.total = res.data.total\n })\n .finally(() => {\n this.recycleTable.loading = false\n })\n }\n\n /**\n * 获取回收站表格\n * @param cache\n */\n getRecycleTable = (cache = false) => {\n if (!this.runBefore('getTable')) return\n\n this.recycleTable.columnLoading = true\n\n // 如果允许使用缓存\n if (cache) {\n // 尝试从 localStorage 获取缓存数据\n const cachedData = storage.get(this.url + '_recycleTable')\n\n // 如果缓存存在且有效,使用缓存数据\n if (cachedData) {\n const cachedTableData = JSON.parse(cachedData)\n this.recycleTable.column = cachedTableData.column\n this.recycleTable.columnLoading = false // 加载完成\n return Promise.resolve(cachedTableData) // 返回一个已解决的 Promise\n }\n } else {\n // 缓存不存在或不使用缓存时,调用 API\n return this.api\n .recycleTable()\n .then((res) => {\n this.recycleTable.column = res.data.column\n // 如果允许缓存,将数据存储到 localStorage\n // if (cache) {\n storage.set(this.url + '_recycleTable', JSON.stringify(res.data))\n // }\n })\n .finally(() => {\n this.recycleTable.columnLoading = false\n })\n }\n }\n\n /**\n * 获取表格选择项的id数组\n */\n getSelectionIds(): number[] {\n const ids: number[] = []\n this.table.selection?.forEach((item) => {\n ids.push(item[this.table.pk!])\n })\n return ids\n }\n\n onClickButton(callback: (event: string, data: any) => void) {\n this.buttonCallback = callback\n }\n\n /**\n * 表格内的事件统一响应\n * @param event 事件:selection-change=选中项改变,page-size-change=每页数量改变,current-page-change=翻页,sort-change=排序,edit=编辑,delete=删除,field-change=单元格值改变,com-search=公共搜索\n * @param data 携带数据\n */\n onTableAction = (event: string, data: anyObj) => {\n if (!this.runBefore('onTableAction', { event, data })) return\n const actionFun = new Map([\n [\n 'selection-change',\n () => {\n this.table.selection = data as TableRow[]\n },\n ],\n [\n 'selection-recycle-change',\n () => {\n this.recycleTable.selection = data as TableRow[]\n },\n ],\n [\n 'page-size-change',\n () => {\n this.table.filter!.limit = data.size\n this.onTableHeaderAction('refresh', {\n event: 'page-size-change',\n ...data,\n })\n },\n ],\n [\n 'current-page-change',\n () => {\n this.table.filter!.page = data.page\n this.onTableHeaderAction('refresh', {\n event: 'current-page-change',\n ...data,\n })\n },\n ],\n [\n 'sort-change',\n () => {\n let newOrder: string | undefined\n if (data.prop && data.order) {\n newOrder = data.prop + ',' + data.order\n }\n if (newOrder != this.table.filter!.order) {\n this.table.filter!.order = newOrder\n this.onTableHeaderAction('refresh', {\n event: 'sort-change',\n ...data,\n })\n }\n },\n ],\n [\n 'edit',\n () => {\n this.toggleForm('Edit', [data.row[this.table.pk!]])\n },\n ],\n [\n 'delete',\n () => {\n this.postDel([data.row[this.table.pk!]])\n },\n ],\n [\n 'field-change',\n () => {\n if (data.field.render == 'switch') {\n if (!data.row || !data.field.prop) return\n if (Object.keys(data.row).length === 0) {\n // return\n }\n data.row.loading = true\n this.api\n .postData('edit', {\n [this.table.pk!]: data.row[this.table.pk!],\n [data.field.prop]: data.value,\n })\n .then(() => {\n data.row.loading = false\n data.row[data.field.prop] = data.value\n })\n .catch(() => {\n data.row.loading = false\n })\n }\n },\n ],\n [\n 'com-search',\n () => {\n this.table.filter!.search = data as comSearchData[]\n this.onTableHeaderAction('refresh', {\n event: 'com-search',\n data,\n })\n },\n ],\n [\n 'default',\n () => {\n this.buttonCallback(event, data)\n },\n ],\n ])\n\n const action = actionFun.get(event) || actionFun.get('default')\n action!.call(this)\n return this.runAfter('onTableAction', { event, data })\n }\n\n // 删除\n postDel = (ids: number[]) => {\n if (!this.runBefore('postDel', { ids })) return\n this.api.del(ids).then((res) => {\n this.onTableHeaderAction('refresh', {})\n this.runAfter('postDel', { res })\n })\n }\n\n /**\n * 双击表格\n * @param row 行数据\n * @param column 列上下文数据\n */\n onTableDblclick = (row: TableRow, column: TableColumnCtx<TableRow>) => {\n if (\n !this.table.dblClickNotEditColumn!.includes('all') &&\n !this.table.dblClickNotEditColumn!.includes(column.property)\n ) {\n if (!this.runBefore('onTableDblclick', { row, column })) return\n this.toggleForm('Edit', [row[this.table.pk!]])\n this.runAfter('onTableDblclick', { row, column })\n }\n }\n\n /**\n * 打开表单\n * @param operate 操作:Add=添加,Edit=编辑\n * @param operateIds 被操作项的数组:Add=[],Edit=[1,2,...]\n */\n toggleForm = (operate = '', operateIds: number[] = []) => {\n if (operate === 'Edit') {\n this.form.edit_id = operateIds[0]\n operateIds.splice(0, 1)\n this.form.operateIds = operateIds\n } else {\n this.form.edit_id = 0\n }\n this.api\n .form(this.form.edit_id)\n .then((res) => {\n this.form.ref.setFormData(res.data)\n this.form.ref.show()\n })\n .catch((res) => {\n console.log('catch', res)\n })\n }\n\n onSubmit = () => {\n if (this.form.operateIds!.length > 0) {\n this.toggleForm('Edit', this.form.operateIds)\n }\n this.getIndex()\n }\n\n /**\n * 排序\n */\n dragSort = () => {\n const buttonsKey = getArrayKey(this.table.column, 'render', 'buttons')\n if (buttonsKey === false) return\n const moveButton = getArrayKey(this.table.column[buttonsKey]?.buttons, 'render', 'moveButton')\n if (moveButton === false) return\n\n if (!this.table.ref) {\n console.warn(\n 'Failed to initialize drag sort because table ref is not defined. Please assign table ref when onMounted'\n )\n return\n }\n const el = this.table.ref.$el.querySelector('.el-table__body-wrapper .el-table__body tbody')\n const disabledTip = this.table.column[buttonsKey].buttons![moveButton].disabledTip\n Sortable.create(el, {\n animation: 200,\n handle: '.table-row-weigh-sort',\n ghostClass: 'ba-table-row',\n onStart: () => {\n this.table.column[buttonsKey].buttons![moveButton].disabledTip = true\n },\n onEnd: (evt: Sortable.SortableEvent) => {\n this.table.column[buttonsKey].buttons![moveButton].disabledTip = disabledTip\n // 找到对应行id\n const moveRow = findIndexRow(this.table.data!, evt.oldIndex!) as TableRow\n const replaceRow = findIndexRow(this.table.data!, evt.newIndex!) as TableRow\n if (\n this.table.dragSortLimitField &&\n moveRow[this.table.dragSortLimitField] != replaceRow[this.table.dragSortLimitField]\n ) {\n this.onTableHeaderAction('refresh', {})\n ElNotification({\n type: 'error',\n message: 'utils.The moving position is beyond the movable range!',\n })\n return\n }\n\n this.api.sortableApi(moveRow[this.table.pk!], replaceRow[this.table.pk!]).finally(() => {\n this.onTableHeaderAction('refresh', {})\n })\n },\n })\n }\n\n /**\n * 表格顶栏按钮事件统一响应\n * @param event 事件:refresh=刷新,edit=编辑,delete=删除,quick-search=快速查询,unfold=折叠/展开,change-show-column=调整列显示状态\n * @param data 携带数据\n */\n onTableHeaderAction = (event: string, data?: anyObj) => {\n if (!this.runBefore('onTableHeaderAction', { event, data })) return\n const actionFun = new Map([\n [\n 'refresh',\n () => {\n // 刷新表格在大多数情况下无需置空 data,但任需防范表格列组件的 :key 不会被更新的问题,比如关联表的数据列\n this.table.data = []\n this.getIndex()\n },\n ],\n [\n 'add',\n () => {\n this.toggleForm('Add')\n },\n ],\n [\n 'edit',\n () => {\n this.toggleForm('Edit', this.getSelectionIds())\n },\n ],\n [\n 'delete',\n () => {\n this.postDel(this.getSelectionIds())\n },\n ],\n [\n 'unfold',\n () => {\n if (!this.table.ref) {\n console.warn(\n 'Collapse/expand failed because table ref is not defined. Please assign table ref when onMounted'\n )\n return\n }\n this.table.expandAll = data!.unfold\n this.table.ref.unFoldAll(data!.unfold)\n },\n ],\n [\n 'quick-search',\n () => {\n this.onTableHeaderAction('refresh', {\n event: 'quick-search',\n ...data,\n })\n },\n ],\n [\n 'change-show-column',\n () => {\n const columnKey = getArrayKey(this.table.column, 'prop', data!.field)\n this.table.column[columnKey].show = data!.value\n if (this.url) {\n const key = this.url + 'show_column'\n const cachedData = storage.get(key) || '{}'\n const cachedTableData = JSON.parse(cachedData)\n cachedTableData[data!.field] = data!.value\n storage.set(key, JSON.stringify(cachedTableData))\n }\n },\n ],\n [\n 'default',\n () => {\n console.warn('No action defined')\n },\n ],\n [\n 'recycle',\n () => {\n this.showRecycle()\n },\n ],\n [\n 'quick-recycle-search',\n () => {\n this.onTableHeaderAction('refreshRecycle', {\n event: 'refreshRecycle',\n ...data,\n })\n },\n ],\n [\n 'refreshRecycle',\n () => {\n // 刷新表格在大多数情况下无需置空 data,但任需防范表格列组件的 :key 不会被更新的问题,比如关联表的数据列\n this.recycleTable.data = []\n this.getRecycleIndex()\n },\n ],\n ])\n\n const action = actionFun.get(event) || actionFun.get('default')\n action!.call(this)\n return this.runAfter('onTableHeaderAction', { event, data })\n }\n\n /**\n * 通用搜索初始化\n * @param query 要搜索的数据\n */\n initComSearch = (query: anyObj = {}) => {\n const form: anyObj = {}\n const field = this.table.column\n\n if (field.length <= 0) {\n return\n }\n\n for (const key in field) {\n if (field[key].operator === false) {\n continue\n }\n const prop = field[key].prop\n if (typeof field[key].operator === 'undefined') {\n field[key].operator = 'eq'\n }\n if (prop) {\n if (field[key].operator == 'RANGE' || field[key].operator == 'NOT RANGE') {\n form[prop] = ''\n form[prop + '-start'] = ''\n form[prop + '-end'] = ''\n } else if (field[key].operator == 'NULL' || field[key].operator == 'NOT NULL') {\n form[prop] = false\n } else {\n form[prop] = ''\n }\n\n // 初始化来自query中的默认值\n if (this.table.acceptQuery && typeof query[prop] !== 'undefined') {\n const queryProp = (query[prop] as string) ?? ''\n if (field[key].operator == 'RANGE' || field[key].operator == 'NOT RANGE') {\n const range = queryProp.split(',')\n if (field[key].render == 'datetime') {\n if (range && range.length >= 2) {\n form[prop + '-default'] = [new Date(range[0]), new Date(range[1])]\n }\n } else {\n form[prop + '-start'] = range[0] ?? ''\n form[prop + '-end'] = range[1] ?? ''\n }\n } else if (field[key].operator == 'NULL' || field[key].operator == 'NOT NULL') {\n form[prop] = !!queryProp\n } else if (field[key].render == 'datetime') {\n form[prop + '-default'] = new Date(queryProp)\n } else {\n form[prop] = queryProp\n }\n }\n\n this.comSearch.fieldData.set(prop, {\n operator: field[key].operator,\n render: field[key].render,\n comSearchRender: field[key].comSearchRender,\n })\n }\n }\n\n // 接受query再搜索\n if (this.table.acceptQuery) {\n const comSearchData: comSearchData[] = []\n for (const key in query) {\n const fieldDataTemp = this.comSearch.fieldData.get(key)\n if (fieldDataTemp) {\n comSearchData.push({\n field: key,\n val: query[key] as string,\n operator: fieldDataTemp.operator,\n render: fieldDataTemp.render,\n })\n }\n }\n this.table.filter!.search = comSearchData\n }\n\n this.comSearch.form = Object.assign(this.comSearch.form, form)\n }\n}\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"dkTable.mjs","sources":["../../../src/table/utils/dkTable.ts"],"sourcesContent":["import { findIndexRow, getArrayKey, storage } from '@vipl520/utils'\nimport { reactive } from 'vue'\nimport Sortable from 'sortablejs'\nimport { ElNotification } from 'element-plus'\nimport type { TableColumnCtx } from 'element-plus'\nimport { dkTableApi } from './dkTableApi'\n// import { DkTable } from '../../../types/table'\nexport default class dkTable {\n public url\n\n public api: dkTableApi\n\n public buttonCallback: (event: string, data: any) => void\n\n public table: DkTable = reactive({\n ref: undefined,\n pk: 'id',\n data: [],\n remark: null,\n loading: true,\n columnLoading: true,\n selection: [],\n column: [],\n total: 0,\n filter: {},\n dragSortLimitField: 'pid',\n acceptQuery: true,\n showComSearch: false,\n dblClickNotEditColumn: [undefined],\n expandAll: false,\n extend: {},\n })\n\n // BaTable前置处理函数列表(前置埋点)\n public before: BaTableBefore\n\n // BaTable后置处理函数列表(后置埋点)\n public after: BaTableAfter\n\n public form: DkForm = reactive({\n ref: undefined,\n operateIds: [], // 被编辑的IDs\n edit_id: 0,\n })\n\n public recycleTable: RecycleTable = reactive({\n ref: undefined,\n pk: 'id',\n data: [],\n loading: true,\n columnLoading: true,\n selection: [],\n column: [],\n total: 0,\n filter: {},\n showDialog: false,\n showDialogLoading: false,\n dragSortLimitField: 'pid',\n acceptQuery: true,\n showComSearch: false,\n dblClickNotEditColumn: [undefined],\n expandAll: false,\n extend: {},\n })\n\n // 通用搜索数据\n public comSearch: ComSearch = reactive({\n form: {},\n fieldData: new Map(),\n })\n\n constructor(url: string, before: BaTableBefore = {}, after: BaTableAfter = {}) {\n this.url = url\n // eslint-disable-next-line new-cap\n this.api = new dkTableApi(url)\n this.before = before\n this.after = after\n this.buttonCallback = (event, data) => {\n console.warn('请调用onClickButton((event,data)=>{})', event, data)\n }\n }\n\n /**\n * 表格内部鉴权方法\n * 此方法在表头或表行组件内部自动调用,传递权限节点名,如:add、edit\n * 若需自定义表格内部鉴权,重写此方法即可\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n auth(node: string) {\n // return auth(node)\n // TODO\n return true\n }\n\n /**\n * 运行前置函数\n * @param funName 函数名\n * @param args 参数\n */\n runBefore(funName: string, args: any = {}) {\n if (this.before && this.before[funName] && typeof this.before[funName] === 'function') {\n return this.before[funName]!({ ...args }) !== false\n }\n return true\n }\n\n /**\n * 运行后置函数\n * @param funName 函数名\n * @param args 参数\n */\n runAfter(funName: string, args: any = {}) {\n if (this.after && this.after[funName] && typeof this.after[funName] === 'function') {\n return this.after[funName]!({ ...args }) !== false\n }\n return true\n }\n\n getIndex = () => {\n if (!this.runBefore('getIndex')) return\n this.table.loading = true\n return this.api\n .index(this.table.filter)\n .then((res) => {\n this.table.data = res.data.list\n this.table.total = res.data.total\n this.runAfter('getIndex', { res })\n })\n .finally(() => {\n this.table.loading = false\n })\n }\n\n getTable = (cache = false) => {\n if (!this.runBefore('getTable')) return\n\n this.table.columnLoading = true\n\n // 如果允许使用缓存\n if (cache) {\n // 尝试从 localStorage 获取缓存数据\n const cachedData = storage.get(this.url + '_table')\n\n // 如果缓存存在且有效,使用缓存数据\n if (cachedData) {\n const cachedTableData = JSON.parse(cachedData)\n this.table.column = cachedTableData.column\n this.table.columnLoading = false // 加载完成\n this.runAfter('getTable', { res: cachedTableData }) // 使用缓存数据作为响应\n return Promise.resolve(cachedTableData) // 返回一个已解决的 Promise\n }\n } else {\n // 缓存不存在或不使用缓存时,调用 API\n return this.api\n .table()\n .then((res) => {\n this.table.column = res.data.column\n if (res.data.pk) {\n this.table.pk = res.data.pk\n }\n // 如果允许缓存,将数据存储到 localStorage\n // if (cache) {\n storage.set(this.url + '_table', JSON.stringify(res.data))\n // }\n this.runAfter('getTable', { res })\n })\n .finally(() => {\n this.table.columnLoading = false\n })\n }\n }\n\n /**\n * 显示回收站\n */\n async showRecycle() {\n if (!this.runBefore('getRecycleTable')) return\n this.recycleTable.showDialogLoading = true\n if (this.recycleTable.column.length <= 0) {\n await this.getRecycleTable()\n }\n await this.getRecycleIndex()\n this.recycleTable.showDialog = true\n this.recycleTable.showDialogLoading = false\n }\n\n /**\n * 获取回收站列表\n */\n getRecycleIndex = () => {\n if (!this.runBefore('getRecycleIndex')) return\n this.recycleTable.loading = true\n return this.api\n .recycle(this.recycleTable.filter)\n .then((res) => {\n this.recycleTable.data = res.data.list\n this.recycleTable.total = res.data.total\n })\n .finally(() => {\n this.recycleTable.loading = false\n })\n }\n\n /**\n * 获取回收站表格\n * @param cache\n */\n getRecycleTable = (cache = false) => {\n if (!this.runBefore('getTable')) return\n\n this.recycleTable.columnLoading = true\n\n // 如果允许使用缓存\n if (cache) {\n // 尝试从 localStorage 获取缓存数据\n const cachedData = storage.get(this.url + '_recycleTable')\n\n // 如果缓存存在且有效,使用缓存数据\n if (cachedData) {\n const cachedTableData = JSON.parse(cachedData)\n this.recycleTable.column = cachedTableData.column\n this.recycleTable.columnLoading = false // 加载完成\n return Promise.resolve(cachedTableData) // 返回一个已解决的 Promise\n }\n } else {\n // 缓存不存在或不使用缓存时,调用 API\n return this.api\n .recycleTable()\n .then((res) => {\n this.recycleTable.column = res.data.column\n // 如果允许缓存,将数据存储到 localStorage\n // if (cache) {\n storage.set(this.url + '_recycleTable', JSON.stringify(res.data))\n // }\n })\n .finally(() => {\n this.recycleTable.columnLoading = false\n })\n }\n }\n\n /**\n * 获取表格选择项的id数组\n */\n getSelectionIds(): number[] {\n const ids: number[] = []\n this.table.selection?.forEach((item) => {\n ids.push(item[this.table.pk!])\n })\n return ids\n }\n\n onClickButton(callback: (event: string, data: any) => void) {\n this.buttonCallback = callback\n }\n\n /**\n * 表格内的事件统一响应\n * @param event 事件:selection-change=选中项改变,page-size-change=每页数量改变,current-page-change=翻页,sort-change=排序,edit=编辑,delete=删除,field-change=单元格值改变,com-search=公共搜索\n * @param data 携带数据\n */\n onTableAction = (event: string, data: anyObj) => {\n if (!this.runBefore('onTableAction', { event, data })) return\n const actionFun = new Map([\n [\n 'selection-change',\n () => {\n this.table.selection = data as TableRow[]\n },\n ],\n [\n 'selection-recycle-change',\n () => {\n this.recycleTable.selection = data as TableRow[]\n },\n ],\n [\n 'page-size-change',\n () => {\n this.table.filter!.limit = data.size\n this.onTableHeaderAction('refresh', {\n event: 'page-size-change',\n ...data,\n })\n },\n ],\n [\n 'current-page-change',\n () => {\n this.table.filter!.page = data.page\n this.onTableHeaderAction('refresh', {\n event: 'current-page-change',\n ...data,\n })\n },\n ],\n [\n 'sort-change',\n () => {\n let newOrder: string | undefined\n if (data.prop && data.order) {\n newOrder = data.prop + ',' + data.order\n }\n if (newOrder != this.table.filter!.order) {\n this.table.filter!.order = newOrder\n this.onTableHeaderAction('refresh', {\n event: 'sort-change',\n ...data,\n })\n }\n },\n ],\n [\n 'edit',\n () => {\n this.toggleForm('Edit', [data.row[this.table.pk!]])\n },\n ],\n [\n 'delete',\n () => {\n this.postDel([data.row[this.table.pk!]])\n },\n ],\n [\n 'field-change',\n () => {\n if (data.field.render == 'switch') {\n if (!data.row || !data.field.prop) return\n if (Object.keys(data.row).length === 0) {\n // return\n }\n data.row.loading = true\n this.api\n .postData('edit', {\n [this.table.pk!]: data.row[this.table.pk!],\n [data.field.prop]: data.value,\n })\n .then(() => {\n data.row.loading = false\n data.row[data.field.prop] = data.value\n })\n .catch(() => {\n data.row.loading = false\n })\n }\n },\n ],\n [\n 'com-search',\n () => {\n this.table.filter!.search = data as comSearchData[]\n this.onTableHeaderAction('refresh', {\n event: 'com-search',\n data,\n })\n },\n ],\n [\n 'default',\n () => {\n this.buttonCallback(event, data)\n },\n ],\n ])\n\n const action = actionFun.get(event) || actionFun.get('default')\n action!.call(this)\n return this.runAfter('onTableAction', { event, data })\n }\n\n // 删除\n postDel = (ids: number[]) => {\n if (!this.runBefore('postDel', { ids })) return\n this.api.del(ids).then((res) => {\n this.onTableHeaderAction('refresh', {})\n this.runAfter('postDel', { res })\n })\n }\n\n /**\n * 双击表格\n * @param row 行数据\n * @param column 列上下文数据\n */\n onTableDblclick = (row: TableRow, column: TableColumnCtx<TableRow>) => {\n if (\n !this.table.dblClickNotEditColumn!.includes('all') &&\n !this.table.dblClickNotEditColumn!.includes(column.property)\n ) {\n if (!this.runBefore('onTableDblclick', { row, column })) return\n this.toggleForm('Edit', [row[this.table.pk!]])\n this.runAfter('onTableDblclick', { row, column })\n }\n }\n\n exportCsv = () => {\n const header = this.table.column\n const headerMap = new Map(\n header\n .filter((item) => item !== undefined && item.label !== undefined && item.export)\n .map((item) => [item.label, item.prop])\n )\n const headerLabels = Array.from(headerMap.keys())\n function jsonToCsv(data: any) {\n let csvContent = headerLabels.join(',') + '\\n'\n data.forEach((row: any) => {\n const line: string[] = []\n headerLabels.forEach((label: string) => {\n const prop: any = headerMap.get(label)\n const value = String(row[prop])\n line.push(`\"${value.replace(/\"/g, '\"\"').replace(/[\\n\\r]/g, ' ')}\"`)\n })\n csvContent += line.join(',') + '\\n'\n })\n return csvContent\n }\n\n function downloadCsv(csvContent: string, fileName: string) {\n const link = document.createElement('a')\n link.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(csvContent))\n link.setAttribute('download', fileName + '.csv')\n document.body.appendChild(link)\n link.click()\n document.body.removeChild(link)\n }\n const csvStr = jsonToCsv(this.table.selection)\n downloadCsv(csvStr, 'export_data')\n }\n\n /**\n * 打开表单\n * @param operate 操作:Add=添加,Edit=编辑\n * @param operateIds 被操作项的数组:Add=[],Edit=[1,2,...]\n */\n toggleForm = (operate = '', operateIds: number[] = []) => {\n if (operate === 'Edit') {\n this.form.edit_id = operateIds[0]\n operateIds.splice(0, 1)\n this.form.operateIds = operateIds\n } else {\n this.form.edit_id = 0\n }\n this.api\n .form(this.form.edit_id)\n .then((res) => {\n this.form.ref.setFormData(res.data)\n this.form.ref.show()\n })\n .catch((res) => {\n console.log('catch', res)\n })\n }\n\n onSubmit = () => {\n if (this.form.operateIds!.length > 0) {\n this.toggleForm('Edit', this.form.operateIds)\n }\n this.getIndex()\n }\n\n /**\n * 排序\n */\n dragSort = () => {\n const buttonsKey = getArrayKey(this.table.column, 'render', 'buttons')\n if (buttonsKey === false) return\n const moveButton = getArrayKey(this.table.column[buttonsKey]?.buttons, 'render', 'moveButton')\n if (moveButton === false) return\n\n if (!this.table.ref) {\n console.warn(\n 'Failed to initialize drag sort because table ref is not defined. Please assign table ref when onMounted'\n )\n return\n }\n const el = this.table.ref.$el.querySelector('.el-table__body-wrapper .el-table__body tbody')\n const disabledTip = this.table.column[buttonsKey].buttons![moveButton].disabledTip\n Sortable.create(el, {\n animation: 200,\n handle: '.table-row-weigh-sort',\n ghostClass: 'ba-table-row',\n onStart: () => {\n this.table.column[buttonsKey].buttons![moveButton].disabledTip = true\n },\n onEnd: (evt: Sortable.SortableEvent) => {\n this.table.column[buttonsKey].buttons![moveButton].disabledTip = disabledTip\n // 找到对应行id\n const moveRow = findIndexRow(this.table.data!, evt.oldIndex!) as TableRow\n const replaceRow = findIndexRow(this.table.data!, evt.newIndex!) as TableRow\n if (\n this.table.dragSortLimitField &&\n moveRow[this.table.dragSortLimitField] != replaceRow[this.table.dragSortLimitField]\n ) {\n this.onTableHeaderAction('refresh', {})\n ElNotification({\n type: 'error',\n message: 'utils.The moving position is beyond the movable range!',\n })\n return\n }\n\n this.api.sortableApi(moveRow[this.table.pk!], replaceRow[this.table.pk!]).finally(() => {\n this.onTableHeaderAction('refresh', {})\n })\n },\n })\n }\n\n /**\n * 表格顶栏按钮事件统一响应\n * @param event 事件:refresh=刷新,edit=编辑,delete=删除,quick-search=快速查询,unfold=折叠/展开,change-show-column=调整列显示状态\n * @param data 携带数据\n */\n onTableHeaderAction = (event: string, data?: anyObj) => {\n if (!this.runBefore('onTableHeaderAction', { event, data })) return\n const actionFun = new Map([\n [\n 'refresh',\n () => {\n // 刷新表格在大多数情况下无需置空 data,但任需防范表格列组件的 :key 不会被更新的问题,比如关联表的数据列\n this.table.data = []\n this.getIndex()\n },\n ],\n [\n 'add',\n () => {\n this.toggleForm('Add')\n },\n ],\n [\n 'export_csv',\n () => {\n this.exportCsv()\n },\n ],\n [\n 'edit',\n () => {\n this.toggleForm('Edit', this.getSelectionIds())\n },\n ],\n [\n 'delete',\n () => {\n this.postDel(this.getSelectionIds())\n },\n ],\n [\n 'unfold',\n () => {\n if (!this.table.ref) {\n console.warn(\n 'Collapse/expand failed because table ref is not defined. Please assign table ref when onMounted'\n )\n return\n }\n this.table.expandAll = data!.unfold\n this.table.ref.unFoldAll(data!.unfold)\n },\n ],\n [\n 'quick-search',\n () => {\n this.onTableHeaderAction('refresh', {\n event: 'quick-search',\n ...data,\n })\n },\n ],\n [\n 'change-show-column',\n () => {\n const columnKey = getArrayKey(this.table.column, 'prop', data!.field)\n this.table.column[columnKey].show = data!.value\n if (this.url) {\n const key = this.url + 'show_column'\n const cachedData = storage.get(key) || '{}'\n const cachedTableData = JSON.parse(cachedData)\n cachedTableData[data!.field] = data!.value\n storage.set(key, JSON.stringify(cachedTableData))\n }\n },\n ],\n [\n 'default',\n () => {\n console.warn('No action defined')\n },\n ],\n [\n 'recycle',\n () => {\n this.showRecycle()\n },\n ],\n [\n 'quick-recycle-search',\n () => {\n this.onTableHeaderAction('refreshRecycle', {\n event: 'refreshRecycle',\n ...data,\n })\n },\n ],\n [\n 'refreshRecycle',\n () => {\n // 刷新表格在大多数情况下无需置空 data,但任需防范表格列组件的 :key 不会被更新的问题,比如关联表的数据列\n this.recycleTable.data = []\n this.getRecycleIndex()\n },\n ],\n ])\n\n const action = actionFun.get(event) || actionFun.get('default')\n action!.call(this)\n return this.runAfter('onTableHeaderAction', { event, data })\n }\n\n /**\n * 通用搜索初始化\n * @param query 要搜索的数据\n */\n initComSearch = (query: anyObj = {}) => {\n const form: anyObj = {}\n const field = this.table.column\n\n if (field.length <= 0) {\n return\n }\n\n for (const key in field) {\n if (field[key].operator === false) {\n continue\n }\n const prop = field[key].prop\n if (typeof field[key].operator === 'undefined') {\n field[key].operator = 'eq'\n }\n if (prop) {\n if (field[key].operator == 'RANGE' || field[key].operator == 'NOT RANGE') {\n form[prop] = ''\n form[prop + '-start'] = ''\n form[prop + '-end'] = ''\n } else if (field[key].operator == 'NULL' || field[key].operator == 'NOT NULL') {\n form[prop] = false\n } else {\n form[prop] = ''\n }\n\n // 初始化来自query中的默认值\n if (this.table.acceptQuery && typeof query[prop] !== 'undefined') {\n const queryProp = (query[prop] as string) ?? ''\n if (field[key].operator == 'RANGE' || field[key].operator == 'NOT RANGE') {\n const range = queryProp.split(',')\n if (field[key].render == 'datetime') {\n if (range && range.length >= 2) {\n form[prop + '-default'] = [new Date(range[0]), new Date(range[1])]\n }\n } else {\n form[prop + '-start'] = range[0] ?? ''\n form[prop + '-end'] = range[1] ?? ''\n }\n } else if (field[key].operator == 'NULL' || field[key].operator == 'NOT NULL') {\n form[prop] = !!queryProp\n } else if (field[key].render == 'datetime') {\n form[prop + '-default'] = new Date(queryProp)\n } else {\n form[prop] = queryProp\n }\n }\n\n this.comSearch.fieldData.set(prop, {\n operator: field[key].operator,\n render: field[key].render,\n comSearchRender: field[key].comSearchRender,\n })\n }\n }\n\n // 接受query再搜索\n if (this.table.acceptQuery) {\n const comSearchData: comSearchData[] = []\n for (const key in query) {\n const fieldDataTemp = this.comSearch.fieldData.get(key)\n if (fieldDataTemp) {\n comSearchData.push({\n field: key,\n val: query[key] as string,\n operator: fieldDataTemp.operator,\n render: fieldDataTemp.render,\n })\n }\n }\n this.table.filter!.search = comSearchData\n }\n\n this.comSearch.form = Object.assign(this.comSearch.form, form)\n }\n}\n"],"names":[],"mappings":"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"}
|
package/lib/table/index.d.ts
CHANGED
@@ -5,6 +5,9 @@ export declare const Table: import("@vipl520/utils").WithInstall<{
|
|
5
5
|
$props: {
|
6
6
|
tableApi?: string | undefined;
|
7
7
|
cacheTable?: boolean | undefined;
|
8
|
+
tableBefore?: Record<string, any> | undefined;
|
9
|
+
tableAfter?: Record<string, any> | undefined;
|
10
|
+
buttons?: unknown[] | undefined;
|
8
11
|
style?: unknown;
|
9
12
|
key?: string | number | symbol | undefined;
|
10
13
|
ref?: import("vue").VNodeRef | undefined;
|
@@ -72,6 +75,18 @@ export declare const Table: import("@vipl520/utils").WithInstall<{
|
|
72
75
|
default: boolean;
|
73
76
|
type: BooleanConstructor;
|
74
77
|
};
|
78
|
+
tableBefore: {
|
79
|
+
default: () => {};
|
80
|
+
type: ObjectConstructor;
|
81
|
+
};
|
82
|
+
tableAfter: {
|
83
|
+
default: () => {};
|
84
|
+
type: ObjectConstructor;
|
85
|
+
};
|
86
|
+
buttons: {
|
87
|
+
default: () => string[];
|
88
|
+
type: ArrayConstructor;
|
89
|
+
};
|
75
90
|
}>>, {
|
76
91
|
DkTable: import("./utils/dkTable").default;
|
77
92
|
TableRef: import("vue").Ref<any>;
|
@@ -79,6 +94,9 @@ export declare const Table: import("@vipl520/utils").WithInstall<{
|
|
79
94
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
80
95
|
tableApi: string;
|
81
96
|
cacheTable: boolean;
|
97
|
+
tableBefore: Record<string, any>;
|
98
|
+
tableAfter: Record<string, any>;
|
99
|
+
buttons: unknown[];
|
82
100
|
}, {}, string, {}> & {
|
83
101
|
beforeCreate?: ((() => void) | (() => void)[]) | undefined;
|
84
102
|
created?: ((() => void) | (() => void)[]) | undefined;
|
@@ -108,6 +126,18 @@ export declare const Table: import("@vipl520/utils").WithInstall<{
|
|
108
126
|
default: boolean;
|
109
127
|
type: BooleanConstructor;
|
110
128
|
};
|
129
|
+
tableBefore: {
|
130
|
+
default: () => {};
|
131
|
+
type: ObjectConstructor;
|
132
|
+
};
|
133
|
+
tableAfter: {
|
134
|
+
default: () => {};
|
135
|
+
type: ObjectConstructor;
|
136
|
+
};
|
137
|
+
buttons: {
|
138
|
+
default: () => string[];
|
139
|
+
type: ArrayConstructor;
|
140
|
+
};
|
111
141
|
}>> & import("vue").ShallowUnwrapRef<{
|
112
142
|
DkTable: import("./utils/dkTable").default;
|
113
143
|
TableRef: import("vue").Ref<any>;
|
@@ -125,6 +155,18 @@ export declare const Table: import("@vipl520/utils").WithInstall<{
|
|
125
155
|
default: boolean;
|
126
156
|
type: BooleanConstructor;
|
127
157
|
};
|
158
|
+
tableBefore: {
|
159
|
+
default: () => {};
|
160
|
+
type: ObjectConstructor;
|
161
|
+
};
|
162
|
+
tableAfter: {
|
163
|
+
default: () => {};
|
164
|
+
type: ObjectConstructor;
|
165
|
+
};
|
166
|
+
buttons: {
|
167
|
+
default: () => string[];
|
168
|
+
type: ArrayConstructor;
|
169
|
+
};
|
128
170
|
}>>, {
|
129
171
|
DkTable: import("./utils/dkTable").default;
|
130
172
|
TableRef: import("vue").Ref<any>;
|
@@ -132,6 +174,9 @@ export declare const Table: import("@vipl520/utils").WithInstall<{
|
|
132
174
|
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, {
|
133
175
|
tableApi: string;
|
134
176
|
cacheTable: boolean;
|
177
|
+
tableBefore: Record<string, any>;
|
178
|
+
tableAfter: Record<string, any>;
|
179
|
+
buttons: unknown[];
|
135
180
|
}, {}, string, {}> & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps & (new () => {
|
136
181
|
$slots: Partial<Record<NonNullable<string | number>, (_: {}) => any>> & Partial<Record<string, (_: any) => any>> & {
|
137
182
|
columnPrepend?(_: {}): any;
|
@@ -15,31 +15,38 @@ const _hoisted_2 = /* @__PURE__ */ vue.createElementVNode(
|
|
15
15
|
/* HOISTED */
|
16
16
|
);
|
17
17
|
const _hoisted_3 = /* @__PURE__ */ vue.createElementVNode(
|
18
|
+
"span",
|
19
|
+
{ class: "m-l-5px" },
|
20
|
+
"\u5BFC\u51FA",
|
21
|
+
-1
|
22
|
+
/* HOISTED */
|
23
|
+
);
|
24
|
+
const _hoisted_4 = /* @__PURE__ */ vue.createElementVNode(
|
18
25
|
"span",
|
19
26
|
{ class: "m-l-5px" },
|
20
27
|
"\u7F16\u8F91",
|
21
28
|
-1
|
22
29
|
/* HOISTED */
|
23
30
|
);
|
24
|
-
const
|
25
|
-
const
|
31
|
+
const _hoisted_5 = { class: "m-l-5px" };
|
32
|
+
const _hoisted_6 = /* @__PURE__ */ vue.createElementVNode(
|
26
33
|
"span",
|
27
34
|
{ class: "m-l-5px" },
|
28
35
|
"\u5220\u9664",
|
29
36
|
-1
|
30
37
|
/* HOISTED */
|
31
38
|
);
|
32
|
-
const
|
33
|
-
const
|
39
|
+
const _hoisted_7 = { class: "table-header-operate-text" };
|
40
|
+
const _hoisted_8 = /* @__PURE__ */ vue.createElementVNode(
|
34
41
|
"span",
|
35
42
|
{ class: "table-header-operate-text" },
|
36
43
|
" \u56DE\u6536\u7AD9 ",
|
37
44
|
-1
|
38
45
|
/* HOISTED */
|
39
46
|
);
|
40
|
-
const
|
41
|
-
const
|
42
|
-
const
|
47
|
+
const _hoisted_9 = { class: "table-search" };
|
48
|
+
const _hoisted_10 = { class: "mr-1" };
|
49
|
+
const _hoisted_11 = { class: "table-search-button-group" };
|
43
50
|
const __default__ = vue.defineComponent({
|
44
51
|
name: "DkTableHeader"
|
45
52
|
});
|
@@ -52,7 +59,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
52
59
|
},
|
53
60
|
buttons: {
|
54
61
|
default: () => {
|
55
|
-
return ["refresh", "add", "edit", "delete", "comSearch", "quickSearch", "columnDisplay"];
|
62
|
+
return ["refresh", "add", "export_csv", "edit", "delete", "comSearch", "quickSearch", "columnDisplay"];
|
56
63
|
},
|
57
64
|
type: Array
|
58
65
|
},
|
@@ -186,8 +193,33 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
186
193
|
_: 1
|
187
194
|
/* STABLE */
|
188
195
|
})) : vue.createCommentVNode("v-if", true),
|
189
|
-
props.buttons.includes("
|
196
|
+
props.buttons.includes("export_csv") && vue.unref(DkTable).auth("export_csv") ? (vue.openBlock(), vue.createBlock(_component_el_tooltip, {
|
190
197
|
key: 2,
|
198
|
+
content: "\u5BFC\u51FA\u9009\u4E2D\u884C",
|
199
|
+
placement: "top"
|
200
|
+
}, {
|
201
|
+
default: vue.withCtx(() => [
|
202
|
+
vue.withDirectives((vue.openBlock(), vue.createBlock(_component_el_button, {
|
203
|
+
disabled: !enableBatchOpt.value,
|
204
|
+
class: "table-header-operate",
|
205
|
+
type: "primary",
|
206
|
+
onClick: _cache[2] || (_cache[2] = ($event) => onAction("export_csv"))
|
207
|
+
}, {
|
208
|
+
default: vue.withCtx(() => [
|
209
|
+
vue.createVNode(_component_dk_icon, { icon: "typcn:download" }),
|
210
|
+
_hoisted_3
|
211
|
+
]),
|
212
|
+
_: 1
|
213
|
+
/* STABLE */
|
214
|
+
}, 8, ["disabled"])), [
|
215
|
+
[_directive_blur]
|
216
|
+
])
|
217
|
+
]),
|
218
|
+
_: 1
|
219
|
+
/* STABLE */
|
220
|
+
})) : vue.createCommentVNode("v-if", true),
|
221
|
+
props.buttons.includes("edit") && vue.unref(DkTable).auth("edit") ? (vue.openBlock(), vue.createBlock(_component_el_tooltip, {
|
222
|
+
key: 3,
|
191
223
|
content: "\u7F16\u8F91\u9009\u4E2D\u884C",
|
192
224
|
placement: "top"
|
193
225
|
}, {
|
@@ -196,11 +228,11 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
196
228
|
disabled: !enableBatchOpt.value,
|
197
229
|
class: "table-header-operate",
|
198
230
|
type: "primary",
|
199
|
-
onClick: _cache[
|
231
|
+
onClick: _cache[3] || (_cache[3] = ($event) => onAction("edit"))
|
200
232
|
}, {
|
201
233
|
default: vue.withCtx(() => [
|
202
234
|
vue.createVNode(_component_dk_icon, { icon: "typcn:edit" }),
|
203
|
-
|
235
|
+
_hoisted_4
|
204
236
|
]),
|
205
237
|
_: 1
|
206
238
|
/* STABLE */
|
@@ -212,16 +244,16 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
212
244
|
/* STABLE */
|
213
245
|
})) : vue.createCommentVNode("v-if", true),
|
214
246
|
props.buttons.includes("delete") && vue.unref(DkTable).auth("del") ? (vue.openBlock(), vue.createBlock(_component_el_popconfirm, {
|
215
|
-
key:
|
247
|
+
key: 4,
|
216
248
|
"confirm-button-text": "\u5220\u9664",
|
217
249
|
"cancel-button-text": "\u53D6\u6D88",
|
218
250
|
"confirm-button-type": "danger",
|
219
251
|
title: "\u60A8\u786E\u5B9A\u8981\u5220\u9664\u6240\u9009\u8BB0\u5F55\u5417\uFF1F",
|
220
252
|
disabled: !enableBatchOpt.value,
|
221
|
-
onConfirm: _cache[
|
253
|
+
onConfirm: _cache[4] || (_cache[4] = ($event) => onAction("delete"))
|
222
254
|
}, {
|
223
255
|
reference: vue.withCtx(() => [
|
224
|
-
vue.createElementVNode("div",
|
256
|
+
vue.createElementVNode("div", _hoisted_5, [
|
225
257
|
vue.createVNode(_component_el_tooltip, {
|
226
258
|
content: "\u5220\u9664\u6240\u9009\u884C",
|
227
259
|
placement: "top"
|
@@ -235,7 +267,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
235
267
|
default: vue.withCtx(() => [
|
236
268
|
vue.createCommentVNode(' <Icon name="fa fa-trash" />'),
|
237
269
|
vue.createVNode(_component_dk_icon, { icon: "typcn:trash" }),
|
238
|
-
|
270
|
+
_hoisted_6
|
239
271
|
]),
|
240
272
|
_: 1
|
241
273
|
/* STABLE */
|
@@ -252,7 +284,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
252
284
|
/* STABLE */
|
253
285
|
}, 8, ["disabled"])) : vue.createCommentVNode("v-if", true),
|
254
286
|
props.buttons.includes("unfold") ? (vue.openBlock(), vue.createBlock(_component_el_tooltip, {
|
255
|
-
key:
|
287
|
+
key: 5,
|
256
288
|
content: (vue.unref(DkTable).table.expandAll ? "\u6536\u7F29" : "\u5C55\u5F00") + "\u6240\u6709\u5B50\u83DC\u5355",
|
257
289
|
placement: "top"
|
258
290
|
}, {
|
@@ -260,14 +292,14 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
260
292
|
vue.withDirectives((vue.openBlock(), vue.createBlock(_component_el_button, {
|
261
293
|
class: "table-header-operate",
|
262
294
|
type: vue.unref(DkTable).table.expandAll ? "danger" : "warning",
|
263
|
-
onClick: _cache[
|
295
|
+
onClick: _cache[5] || (_cache[5] = ($event) => vue.unref(DkTable).onTableHeaderAction("unfold", {
|
264
296
|
unfold: !vue.unref(DkTable).table.expandAll
|
265
297
|
}))
|
266
298
|
}, {
|
267
299
|
default: vue.withCtx(() => [
|
268
300
|
vue.createElementVNode(
|
269
301
|
"span",
|
270
|
-
|
302
|
+
_hoisted_7,
|
271
303
|
vue.toDisplayString(vue.unref(DkTable).table.expandAll ? "\u6536\u7F29\u6240\u6709" : "\u5C55\u5F00\u6240\u6709"),
|
272
304
|
1
|
273
305
|
/* TEXT */
|
@@ -291,10 +323,10 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
291
323
|
class: "table-header-operate m-l-5px",
|
292
324
|
type: "warning",
|
293
325
|
loading: vue.unref(DkTable).recycleTable.showDialogLoading,
|
294
|
-
onClick: _cache[
|
326
|
+
onClick: _cache[6] || (_cache[6] = ($event) => onAction("recycle"))
|
295
327
|
}, {
|
296
328
|
default: vue.withCtx(() => [
|
297
|
-
|
329
|
+
_hoisted_8
|
298
330
|
]),
|
299
331
|
_: 1
|
300
332
|
/* STABLE */
|
@@ -305,18 +337,18 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
305
337
|
_: 1
|
306
338
|
/* STABLE */
|
307
339
|
}),
|
308
|
-
vue.createElementVNode("div",
|
309
|
-
vue.createElementVNode("div",
|
340
|
+
vue.createElementVNode("div", _hoisted_9, [
|
341
|
+
vue.createElementVNode("div", _hoisted_10, [
|
310
342
|
vue.createVNode(_component_el_input, {
|
311
343
|
modelValue: vue.unref(DkTable).table.filter.quickSearch,
|
312
|
-
"onUpdate:modelValue": _cache[
|
344
|
+
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => vue.unref(DkTable).table.filter.quickSearch = $event),
|
313
345
|
placeholder: "\u8BF7\u8F93\u5165",
|
314
346
|
"prefix-icon": "Search",
|
315
347
|
size: __props.size,
|
316
|
-
onInput: _cache[
|
348
|
+
onInput: _cache[8] || (_cache[8] = ($event) => vue.unref(utils.debounce)(onSearchInput, 500)())
|
317
349
|
}, null, 8, ["modelValue", "size"])
|
318
350
|
]),
|
319
|
-
vue.createElementVNode("div",
|
351
|
+
vue.createElementVNode("div", _hoisted_11, [
|
320
352
|
props.buttons.includes("columnDisplay") ? (vue.openBlock(), vue.createBlock(_component_el_dropdown, {
|
321
353
|
key: 0,
|
322
354
|
"max-height": 380,
|
@@ -386,7 +418,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
386
418
|
vue.withDirectives((vue.openBlock(), vue.createBlock(_component_el_button, {
|
387
419
|
size: __props.size,
|
388
420
|
class: "table-search-button-item",
|
389
|
-
onClick: _cache[
|
421
|
+
onClick: _cache[9] || (_cache[9] = ($event) => vue.unref(DkTable).table.showComSearch = !vue.unref(DkTable).table.showComSearch)
|
390
422
|
}, {
|
391
423
|
default: vue.withCtx(() => [
|
392
424
|
vue.createVNode(_component_dk_icon, { icon: "Search" })
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"header.vue2.js","sources":["../../../../src/table/src/components/header.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkTableHeader',\n});\n</script>\n<template>\n <el-collapse-transition>\n <ComSearch v-show=\"props.buttons.includes('comSearch') && DkTable.table.showComSearch\">\n <template v-for=\"(slot, idx) in $slots\" :key=\"idx\" #[idx]>\n <slot :name=\"idx\"></slot>\n </template>\n </ComSearch>\n </el-collapse-transition>\n <div class=\"dk-table-header\">\n <slot name=\"refreshPrepend\"></slot>\n <el-tooltip v-if=\"props.buttons.includes('refresh')\" content=\"刷新\" placement=\"top\">\n <el-button v-blur class=\"table-header-operate\" type=\"info\" @click=\"onAction('refresh', { loading: true })\">\n <dk-icon icon=\"Refresh\"></dk-icon>\n </el-button>\n </el-tooltip>\n <slot name=\"refreshAppend\"></slot>\n <el-tooltip v-if=\"props.buttons.includes('add') && DkTable.auth('add')\" content=\"新增\" placement=\"top\">\n <el-button v-blur class=\"table-header-operate\" type=\"primary\" @click=\"onAction('add')\">\n <dk-icon icon=\"typcn:plus\"></dk-icon>\n <span class=\"m-l-5px\">新增</span>\n </el-button>\n </el-tooltip>\n <el-tooltip v-if=\"props.buttons.includes('edit') && DkTable.auth('edit')\" content=\"编辑选中行\" placement=\"top\">\n <el-button\n v-blur\n :disabled=\"!enableBatchOpt\"\n class=\"table-header-operate\"\n type=\"primary\"\n @click=\"onAction('edit')\"\n >\n <dk-icon icon=\"typcn:edit\"></dk-icon>\n <span class=\"m-l-5px\">编辑</span>\n </el-button>\n </el-tooltip>\n <el-popconfirm\n v-if=\"props.buttons.includes('delete') && DkTable.auth('del')\"\n confirm-button-text=\"删除\"\n cancel-button-text=\"取消\"\n confirm-button-type=\"danger\"\n title=\"您确定要删除所选记录吗?\"\n :disabled=\"!enableBatchOpt\"\n @confirm=\"onAction('delete')\"\n >\n <template #reference>\n <div class=\"m-l-5px\">\n <el-tooltip content=\"删除所选行\" placement=\"top\">\n <el-button v-blur :disabled=\"!enableBatchOpt\" class=\"table-header-operate\" type=\"danger\">\n <!-- <Icon name=\"fa fa-trash\" />-->\n <dk-icon icon=\"typcn:trash\"></dk-icon>\n <span class=\"m-l-5px\">删除</span>\n </el-button>\n </el-tooltip>\n </div>\n </template>\n </el-popconfirm>\n <el-tooltip\n v-if=\"props.buttons.includes('unfold')\"\n :content=\"(DkTable.table.expandAll ? '收缩' : '展开') + '所有子菜单'\"\n placement=\"top\"\n >\n <el-button\n v-blur\n class=\"table-header-operate\"\n :type=\"DkTable.table.expandAll ? 'danger' : 'warning'\"\n @click=\"\n DkTable.onTableHeaderAction('unfold', {\n unfold: !DkTable.table.expandAll,\n })\n \"\n >\n <span class=\"table-header-operate-text\">\n {{ DkTable.table.expandAll ? '收缩所有' : '展开所有' }}\n </span>\n </el-button>\n </el-tooltip>\n <el-tooltip content=\"打开回收站\" placement=\"top\">\n <el-button\n v-blur\n class=\"table-header-operate m-l-5px\"\n type=\"warning\"\n :loading=\"DkTable.recycleTable.showDialogLoading\"\n @click=\"onAction('recycle')\"\n >\n <span class=\"table-header-operate-text\"> 回收站 </span>\n </el-button>\n </el-tooltip>\n <div class=\"table-search\">\n <div class=\"mr-1\">\n <el-input\n v-model=\"DkTable.table.filter!.quickSearch\"\n placeholder=\"请输入\"\n prefix-icon=\"Search\"\n :size=\"size\"\n @input=\"debounce(onSearchInput, 500)()\"\n />\n </div>\n <div class=\"table-search-button-group\">\n <el-dropdown v-if=\"props.buttons.includes('columnDisplay')\" :max-height=\"380\" :hide-on-click=\"false\">\n <el-button\n v-blur\n :size=\"size\"\n class=\"table-search-button-item\"\n :class=\"props.buttons.includes('comSearch') ? 'right-border' : ''\"\n >\n <dk-icon icon=\"Grid\"></dk-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item v-for=\"(item, idx) in columnDisplay\" :key=\"idx\">\n <el-checkbox\n v-if=\"item.prop\"\n :checked=\"!item.show\"\n :model-value=\"item.show\"\n :size=\"size\"\n :label=\"item.label\"\n @change=\"onChangeShowColumn($event, item.prop!)\"\n />\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n <div>\n <el-tooltip\n v-if=\"props.buttons.includes('comSearch')\"\n :disabled=\"DkTable.table.showComSearch\"\n content=\"展开常规搜索\"\n placement=\"top\"\n >\n <el-button\n v-blur\n :size=\"size\"\n class=\"table-search-button-item\"\n @click=\"DkTable.table.showComSearch = !DkTable.table.showComSearch\"\n >\n <dk-icon icon=\"Search\"></dk-icon>\n </el-button>\n </el-tooltip>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { inject, computed } from 'vue'\nimport dkTable from '../../utils/dkTable'\nimport ComSearch from './ComSearch.vue'\nimport { debounce, storage } from '@vipl520/utils'\n\n\n\nconst DkTable = inject('DkTable') as dkTable\n\nconst props = defineProps({\n size: {\n default: 'small',\n type: String,\n },\n buttons: {\n default: () => {\n return ['refresh', 'add', 'edit', 'delete', 'comSearch', 'quickSearch', 'columnDisplay']\n },\n type: Array,\n },\n quickSearchPlaceholder: {\n default: '快捷搜索',\n type: String,\n },\n})\n\nconst columnDisplay = computed(() => {\n const columnDisplayArr = []\n let cachedTableData: any = {}\n if (DkTable.url) {\n cachedTableData = JSON.parse(storage.get(DkTable.url + 'show_column') || '{}')\n }\n for (const item of DkTable.table.column) {\n if (cachedTableData[item.prop] !== undefined) {\n item.show = cachedTableData[item.prop]\n }\n // eslint-disable-next-line no-unused-expressions\n item.type === 'selection' || item.render === 'buttons' || item.enableColumnDisplayControl === false\n ? ''\n : columnDisplayArr.push(item)\n }\n return columnDisplayArr\n})\n\nconst enableBatchOpt = computed(() => DkTable.table.selection!.length > 0)\n\nconst onAction = (event: string, data: anyObj = {}) => {\n DkTable.onTableHeaderAction(event, data)\n}\n\nconst onSearchInput = () => {\n DkTable.onTableHeaderAction('quick-search', {\n keyword: DkTable.table.filter!.quickSearch,\n })\n}\n\nconst onChangeShowColumn = (value: string | number | boolean, field: string) => {\n DkTable.onTableHeaderAction('change-show-column', {\n field,\n value,\n })\n}\n</script>\n"],"names":["__MACROS_defineComponent","inject","computed","storage"],"mappings":"
|
1
|
+
{"version":3,"file":"header.vue2.js","sources":["../../../../src/table/src/components/header.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n name: 'DkTableHeader',\n});\n</script>\n<template>\n <el-collapse-transition>\n <ComSearch v-show=\"props.buttons.includes('comSearch') && DkTable.table.showComSearch\">\n <template v-for=\"(slot, idx) in $slots\" :key=\"idx\" #[idx]>\n <slot :name=\"idx\"></slot>\n </template>\n </ComSearch>\n </el-collapse-transition>\n <div class=\"dk-table-header\">\n <slot name=\"refreshPrepend\"></slot>\n <el-tooltip v-if=\"props.buttons.includes('refresh')\" content=\"刷新\" placement=\"top\">\n <el-button v-blur class=\"table-header-operate\" type=\"info\" @click=\"onAction('refresh', { loading: true })\">\n <dk-icon icon=\"Refresh\"></dk-icon>\n </el-button>\n </el-tooltip>\n <slot name=\"refreshAppend\"></slot>\n <el-tooltip v-if=\"props.buttons.includes('add') && DkTable.auth('add')\" content=\"新增\" placement=\"top\">\n <el-button v-blur class=\"table-header-operate\" type=\"primary\" @click=\"onAction('add')\">\n <dk-icon icon=\"typcn:plus\"></dk-icon>\n <span class=\"m-l-5px\">新增</span>\n </el-button>\n </el-tooltip>\n <el-tooltip\n v-if=\"props.buttons.includes('export_csv') && DkTable.auth('export_csv')\"\n content=\"导出选中行\"\n placement=\"top\"\n >\n <el-button\n v-blur\n :disabled=\"!enableBatchOpt\"\n class=\"table-header-operate\"\n type=\"primary\"\n @click=\"onAction('export_csv')\"\n >\n <dk-icon icon=\"typcn:download\"></dk-icon>\n <span class=\"m-l-5px\">导出</span>\n </el-button>\n </el-tooltip>\n <el-tooltip v-if=\"props.buttons.includes('edit') && DkTable.auth('edit')\" content=\"编辑选中行\" placement=\"top\">\n <el-button\n v-blur\n :disabled=\"!enableBatchOpt\"\n class=\"table-header-operate\"\n type=\"primary\"\n @click=\"onAction('edit')\"\n >\n <dk-icon icon=\"typcn:edit\"></dk-icon>\n <span class=\"m-l-5px\">编辑</span>\n </el-button>\n </el-tooltip>\n <el-popconfirm\n v-if=\"props.buttons.includes('delete') && DkTable.auth('del')\"\n confirm-button-text=\"删除\"\n cancel-button-text=\"取消\"\n confirm-button-type=\"danger\"\n title=\"您确定要删除所选记录吗?\"\n :disabled=\"!enableBatchOpt\"\n @confirm=\"onAction('delete')\"\n >\n <template #reference>\n <div class=\"m-l-5px\">\n <el-tooltip content=\"删除所选行\" placement=\"top\">\n <el-button v-blur :disabled=\"!enableBatchOpt\" class=\"table-header-operate\" type=\"danger\">\n <!-- <Icon name=\"fa fa-trash\" />-->\n <dk-icon icon=\"typcn:trash\"></dk-icon>\n <span class=\"m-l-5px\">删除</span>\n </el-button>\n </el-tooltip>\n </div>\n </template>\n </el-popconfirm>\n <el-tooltip\n v-if=\"props.buttons.includes('unfold')\"\n :content=\"(DkTable.table.expandAll ? '收缩' : '展开') + '所有子菜单'\"\n placement=\"top\"\n >\n <el-button\n v-blur\n class=\"table-header-operate\"\n :type=\"DkTable.table.expandAll ? 'danger' : 'warning'\"\n @click=\"\n DkTable.onTableHeaderAction('unfold', {\n unfold: !DkTable.table.expandAll,\n })\n \"\n >\n <span class=\"table-header-operate-text\">\n {{ DkTable.table.expandAll ? '收缩所有' : '展开所有' }}\n </span>\n </el-button>\n </el-tooltip>\n <el-tooltip content=\"打开回收站\" placement=\"top\">\n <el-button\n v-blur\n class=\"table-header-operate m-l-5px\"\n type=\"warning\"\n :loading=\"DkTable.recycleTable.showDialogLoading\"\n @click=\"onAction('recycle')\"\n >\n <span class=\"table-header-operate-text\"> 回收站 </span>\n </el-button>\n </el-tooltip>\n <div class=\"table-search\">\n <div class=\"mr-1\">\n <el-input\n v-model=\"DkTable.table.filter!.quickSearch\"\n placeholder=\"请输入\"\n prefix-icon=\"Search\"\n :size=\"size\"\n @input=\"debounce(onSearchInput, 500)()\"\n />\n </div>\n <div class=\"table-search-button-group\">\n <el-dropdown v-if=\"props.buttons.includes('columnDisplay')\" :max-height=\"380\" :hide-on-click=\"false\">\n <el-button\n v-blur\n :size=\"size\"\n class=\"table-search-button-item\"\n :class=\"props.buttons.includes('comSearch') ? 'right-border' : ''\"\n >\n <dk-icon icon=\"Grid\"></dk-icon>\n </el-button>\n <template #dropdown>\n <el-dropdown-menu>\n <el-dropdown-item v-for=\"(item, idx) in columnDisplay\" :key=\"idx\">\n <el-checkbox\n v-if=\"item.prop\"\n :checked=\"!item.show\"\n :model-value=\"item.show\"\n :size=\"size\"\n :label=\"item.label\"\n @change=\"onChangeShowColumn($event, item.prop!)\"\n />\n </el-dropdown-item>\n </el-dropdown-menu>\n </template>\n </el-dropdown>\n <div>\n <el-tooltip\n v-if=\"props.buttons.includes('comSearch')\"\n :disabled=\"DkTable.table.showComSearch\"\n content=\"展开常规搜索\"\n placement=\"top\"\n >\n <el-button\n v-blur\n :size=\"size\"\n class=\"table-search-button-item\"\n @click=\"DkTable.table.showComSearch = !DkTable.table.showComSearch\"\n >\n <dk-icon icon=\"Search\"></dk-icon>\n </el-button>\n </el-tooltip>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { inject, computed } from 'vue'\nimport dkTable from '../../utils/dkTable'\nimport ComSearch from './ComSearch.vue'\nimport { debounce, storage } from '@vipl520/utils'\n\n\n\nconst DkTable = inject('DkTable') as dkTable\n\nconst props = defineProps({\n size: {\n default: 'small',\n type: String,\n },\n buttons: {\n default: () => {\n return ['refresh', 'add', 'export_csv', 'edit', 'delete', 'comSearch', 'quickSearch', 'columnDisplay']\n },\n type: Array,\n },\n quickSearchPlaceholder: {\n default: '快捷搜索',\n type: String,\n },\n})\n\nconst columnDisplay = computed(() => {\n const columnDisplayArr = []\n let cachedTableData: any = {}\n if (DkTable.url) {\n cachedTableData = JSON.parse(storage.get(DkTable.url + 'show_column') || '{}')\n }\n for (const item of DkTable.table.column) {\n if (cachedTableData[item.prop] !== undefined) {\n item.show = cachedTableData[item.prop]\n }\n // eslint-disable-next-line no-unused-expressions\n item.type === 'selection' || item.render === 'buttons' || item.enableColumnDisplayControl === false\n ? ''\n : columnDisplayArr.push(item)\n }\n return columnDisplayArr\n})\n\nconst enableBatchOpt = computed(() => DkTable.table.selection!.length > 0)\n\nconst onAction = (event: string, data: anyObj = {}) => {\n DkTable.onTableHeaderAction(event, data)\n}\n\nconst onSearchInput = () => {\n DkTable.onTableHeaderAction('quick-search', {\n keyword: DkTable.table.filter!.quickSearch,\n })\n}\n\nconst onChangeShowColumn = (value: string | number | boolean, field: string) => {\n DkTable.onTableHeaderAction('change-show-column', {\n field,\n value,\n })\n}\n</script>\n"],"names":["__MACROS_defineComponent","inject","computed","storage"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAA6B,cAAAA,mBAAyB,CAAA;AAAA,EACpD,IAAM,EAAA,eAAA;AACR,CAAC,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAwKD,IAAM,MAAA,OAAA,GAAUC,WAAO,SAAS,CAAA,CAAA;AAmBhC,IAAM,MAAA,aAAA,GAAgBC,aAAS,MAAM;AACnC,MAAA,MAAM,mBAAmB,EAAC,CAAA;AAC1B,MAAA,IAAI,kBAAuB,EAAC,CAAA;AAC5B,MAAA,IAAI,QAAQ,GAAK,EAAA;AACf,QAAkB,eAAA,GAAA,IAAA,CAAK,MAAMC,aAAQ,CAAA,GAAA,CAAI,QAAQ,GAAM,GAAA,aAAa,KAAK,IAAI,CAAA,CAAA;AAAA,OAC/E;AACA,MAAW,KAAA,MAAA,IAAA,IAAQ,OAAQ,CAAA,KAAA,CAAM,MAAQ,EAAA;AACvC,QAAA,IAAI,eAAgB,CAAA,IAAA,CAAK,IAAI,CAAA,KAAM,KAAW,CAAA,EAAA;AAC5C,UAAK,IAAA,CAAA,IAAA,GAAO,eAAgB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,SACvC;AAEA,QAAK,IAAA,CAAA,IAAA,KAAS,WAAe,IAAA,IAAA,CAAK,MAAW,KAAA,SAAA,IAAa,IAAK,CAAA,0BAAA,KAA+B,KAC1F,GAAA,EAAA,GACA,gBAAiB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,OAChC;AACA,MAAO,OAAA,gBAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,MAAM,iBAAiBD,YAAS,CAAA,MAAM,QAAQ,KAAM,CAAA,SAAA,CAAW,SAAS,CAAC,CAAA,CAAA;AAEzE,IAAA,MAAM,QAAW,GAAA,CAAC,KAAe,EAAA,IAAA,GAAe,EAAO,KAAA;AACrD,MAAQ,OAAA,CAAA,mBAAA,CAAoB,OAAO,IAAI,CAAA,CAAA;AAAA,KACzC,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC1B,MAAA,OAAA,CAAQ,oBAAoB,cAAgB,EAAA;AAAA,QAC1C,OAAA,EAAS,OAAQ,CAAA,KAAA,CAAM,MAAQ,CAAA,WAAA;AAAA,OAChC,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAM,MAAA,kBAAA,GAAqB,CAAC,KAAA,EAAkC,KAAkB,KAAA;AAC9E,MAAA,OAAA,CAAQ,oBAAoB,oBAAsB,EAAA;AAAA,QAChD,KAAA;AAAA,QACA,KAAA;AAAA,OACD,CAAA,CAAA;AAAA,KACH,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/lib/table/src/props.d.ts
CHANGED
@@ -8,5 +8,17 @@ export declare const tableProps: {
|
|
8
8
|
default: boolean;
|
9
9
|
type: BooleanConstructor;
|
10
10
|
};
|
11
|
+
tableBefore: {
|
12
|
+
default: () => {};
|
13
|
+
type: ObjectConstructor;
|
14
|
+
};
|
15
|
+
tableAfter: {
|
16
|
+
default: () => {};
|
17
|
+
type: ObjectConstructor;
|
18
|
+
};
|
19
|
+
buttons: {
|
20
|
+
default: () => string[];
|
21
|
+
type: ArrayConstructor;
|
22
|
+
};
|
11
23
|
};
|
12
24
|
export type TableProps = ExtractPropTypes<typeof tableProps>;
|
package/lib/table/src/props.js
CHANGED
@@ -8,6 +8,24 @@ const tableProps = {
|
|
8
8
|
cacheTable: {
|
9
9
|
default: true,
|
10
10
|
type: Boolean
|
11
|
+
},
|
12
|
+
tableBefore: {
|
13
|
+
default: () => {
|
14
|
+
return {};
|
15
|
+
},
|
16
|
+
type: Object
|
17
|
+
},
|
18
|
+
tableAfter: {
|
19
|
+
default: () => {
|
20
|
+
return {};
|
21
|
+
},
|
22
|
+
type: Object
|
23
|
+
},
|
24
|
+
buttons: {
|
25
|
+
default: () => {
|
26
|
+
return ["refresh", "add", "export_csv", "edit", "delete", "comSearch", "quickSearch", "columnDisplay"];
|
27
|
+
},
|
28
|
+
type: Array
|
11
29
|
}
|
12
30
|
// ...ElTableNext.props,
|
13
31
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"props.js","sources":["../../../src/table/src/props.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue'\n// import ElTableNext from 'el-table-next'\n\nexport const tableProps = {\n tableApi: {\n default: '',\n type: String,\n },\n cacheTable: {\n default: true,\n type: Boolean,\n },\n // ...ElTableNext.props,\n}\n\nexport type TableProps = ExtractPropTypes<typeof tableProps>\n"],"names":[],"mappings":";;AAGO,MAAM,UAAa,GAAA;AAAA,EACxB,QAAU,EAAA;AAAA,IACR,OAAS,EAAA,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,UAAY,EAAA;AAAA,IACV,OAAS,EAAA,IAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,GACR;AAAA;AAEF;;;;"}
|
1
|
+
{"version":3,"file":"props.js","sources":["../../../src/table/src/props.ts"],"sourcesContent":["import type { ExtractPropTypes } from 'vue'\n// import ElTableNext from 'el-table-next'\n\nexport const tableProps = {\n tableApi: {\n default: '',\n type: String,\n },\n cacheTable: {\n default: true,\n type: Boolean,\n },\n tableBefore: {\n default: () => {\n return {}\n },\n type: Object,\n },\n tableAfter: {\n default: () => {\n return {}\n },\n type: Object,\n },\n buttons: {\n default: () => {\n return ['refresh', 'add', 'export_csv', 'edit', 'delete', 'comSearch', 'quickSearch', 'columnDisplay']\n },\n type: Array,\n },\n // ...ElTableNext.props,\n}\n\nexport type TableProps = ExtractPropTypes<typeof tableProps>\n"],"names":[],"mappings":";;AAGO,MAAM,UAAa,GAAA;AAAA,EACxB,QAAU,EAAA;AAAA,IACR,OAAS,EAAA,EAAA;AAAA,IACT,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,UAAY,EAAA;AAAA,IACV,OAAS,EAAA,IAAA;AAAA,IACT,IAAM,EAAA,OAAA;AAAA,GACR;AAAA,EACA,WAAa,EAAA;AAAA,IACX,SAAS,MAAM;AACb,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAAA,IACA,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,UAAY,EAAA;AAAA,IACV,SAAS,MAAM;AACb,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAAA,IACA,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,OAAS,EAAA;AAAA,IACP,SAAS,MAAM;AACb,MAAO,OAAA,CAAC,WAAW,KAAO,EAAA,YAAA,EAAc,QAAQ,QAAU,EAAA,WAAA,EAAa,eAAe,eAAe,CAAA,CAAA;AAAA,KACvG;AAAA,IACA,IAAM,EAAA,KAAA;AAAA,GACR;AAAA;AAEF;;;;"}
|