|
|
|
@ -7,7 +7,7 @@ import {
|
|
|
|
ElTooltipProps,
|
|
|
|
ElTooltipProps,
|
|
|
|
ElImage
|
|
|
|
ElImage
|
|
|
|
} from 'element-plus'
|
|
|
|
} from 'element-plus'
|
|
|
|
import { defineComponent, PropType, ref, computed, unref, watch, onMounted, nextTick } from 'vue'
|
|
|
|
import { defineComponent, PropType, ref, computed, unref, watch, onMounted } from 'vue'
|
|
|
|
import { propTypes } from '@/utils/propTypes'
|
|
|
|
import { propTypes } from '@/utils/propTypes'
|
|
|
|
import { setIndex } from './helper'
|
|
|
|
import { setIndex } from './helper'
|
|
|
|
import type { TableProps, TableColumn, Pagination, TableSetProps } from './types'
|
|
|
|
import type { TableProps, TableColumn, Pagination, TableSetProps } from './types'
|
|
|
|
@ -15,8 +15,8 @@ import { set } from 'lodash-es'
|
|
|
|
import { CSSProperties } from 'vue'
|
|
|
|
import { CSSProperties } from 'vue'
|
|
|
|
import { getSlot } from '@/utils/tsxHelper'
|
|
|
|
import { getSlot } from '@/utils/tsxHelper'
|
|
|
|
import TableActions from './components/TableActions.vue'
|
|
|
|
import TableActions from './components/TableActions.vue'
|
|
|
|
import Sortable from 'sortablejs'
|
|
|
|
// import Sortable from 'sortablejs'
|
|
|
|
import { Icon } from '@/components/Icon'
|
|
|
|
// import { Icon } from '@/components/Icon'
|
|
|
|
|
|
|
|
|
|
|
|
export default defineComponent({
|
|
|
|
export default defineComponent({
|
|
|
|
name: 'Table',
|
|
|
|
name: 'Table',
|
|
|
|
@ -62,7 +62,7 @@ export default defineComponent({
|
|
|
|
type: Array as PropType<string[]>,
|
|
|
|
type: Array as PropType<string[]>,
|
|
|
|
default: () => []
|
|
|
|
default: () => []
|
|
|
|
},
|
|
|
|
},
|
|
|
|
sortable: propTypes.bool.def(false),
|
|
|
|
// sortable: propTypes.bool.def(false),
|
|
|
|
height: propTypes.oneOfType([Number, String]),
|
|
|
|
height: propTypes.oneOfType([Number, String]),
|
|
|
|
maxHeight: propTypes.oneOfType([Number, String]),
|
|
|
|
maxHeight: propTypes.oneOfType([Number, String]),
|
|
|
|
stripe: propTypes.bool.def(false),
|
|
|
|
stripe: propTypes.bool.def(false),
|
|
|
|
@ -213,32 +213,32 @@ export default defineComponent({
|
|
|
|
return propsObj
|
|
|
|
return propsObj
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
const sortableEl = ref()
|
|
|
|
// const sortableEl = ref()
|
|
|
|
// 初始化拖拽
|
|
|
|
// 初始化拖拽
|
|
|
|
const initDropTable = () => {
|
|
|
|
// const initDropTable = () => {
|
|
|
|
const el = unref(elTableRef)?.$el.querySelector('.el-table__body tbody')
|
|
|
|
// const el = unref(elTableRef)?.$el.querySelector('.el-table__body tbody')
|
|
|
|
if (!el) return
|
|
|
|
// if (!el) return
|
|
|
|
if (unref(sortableEl)) unref(sortableEl).destroy()
|
|
|
|
// if (unref(sortableEl)) unref(sortableEl).destroy()
|
|
|
|
|
|
|
|
|
|
|
|
sortableEl.value = Sortable.create(el, {
|
|
|
|
// sortableEl.value = Sortable.create(el, {
|
|
|
|
handle: '.table-move',
|
|
|
|
// handle: '.table-move',
|
|
|
|
animation: 180,
|
|
|
|
// animation: 180,
|
|
|
|
onEnd(e: any) {
|
|
|
|
// onEnd(e: any) {
|
|
|
|
emit('sortable-change', e)
|
|
|
|
// emit('sortable-change', e)
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
})
|
|
|
|
// })
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
watch(
|
|
|
|
// watch(
|
|
|
|
() => getProps.value.sortable,
|
|
|
|
// () => getProps.value.sortable,
|
|
|
|
async (v) => {
|
|
|
|
// async (v) => {
|
|
|
|
await nextTick()
|
|
|
|
// await nextTick()
|
|
|
|
v && initDropTable()
|
|
|
|
// v && initDropTable()
|
|
|
|
},
|
|
|
|
// },
|
|
|
|
{
|
|
|
|
// {
|
|
|
|
immediate: true
|
|
|
|
// immediate: true
|
|
|
|
}
|
|
|
|
// }
|
|
|
|
)
|
|
|
|
// )
|
|
|
|
|
|
|
|
|
|
|
|
const setProps = (props: TableProps = {}) => {
|
|
|
|
const setProps = (props: TableProps = {}) => {
|
|
|
|
mergeProps.value = Object.assign(unref(mergeProps), props)
|
|
|
|
mergeProps.value = Object.assign(unref(mergeProps), props)
|
|
|
|
@ -495,19 +495,19 @@ export default defineComponent({
|
|
|
|
tableSlots['append'] = (...args: any[]) => getSlot(slots, 'append', args)
|
|
|
|
tableSlots['append'] = (...args: any[]) => getSlot(slots, 'append', args)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const { sortable } = unref(getProps)
|
|
|
|
// const { sortable } = unref(getProps)
|
|
|
|
|
|
|
|
|
|
|
|
const sortableEl = sortable ? (
|
|
|
|
// const sortableEl = sortable ? (
|
|
|
|
<ElTableColumn
|
|
|
|
// <ElTableColumn
|
|
|
|
className="table-move cursor-move"
|
|
|
|
// className="table-move cursor-move"
|
|
|
|
type="sortable"
|
|
|
|
// type="sortable"
|
|
|
|
prop="sortable"
|
|
|
|
// prop="sortable"
|
|
|
|
width="60px"
|
|
|
|
// width="60px"
|
|
|
|
align="center"
|
|
|
|
// align="center"
|
|
|
|
>
|
|
|
|
// >
|
|
|
|
<Icon icon="ant-design:drag-outlined" />
|
|
|
|
// <Icon icon="ant-design:drag-outlined" />
|
|
|
|
</ElTableColumn>
|
|
|
|
// </ElTableColumn>
|
|
|
|
) : null
|
|
|
|
// ) : null
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<div v-loading={unref(getProps).loading}>
|
|
|
|
<div v-loading={unref(getProps).loading}>
|
|
|
|
@ -520,7 +520,7 @@ export default defineComponent({
|
|
|
|
) : null}
|
|
|
|
) : null}
|
|
|
|
<ElTable ref={elTableRef} data={unref(getProps).data} {...unref(getBindValue)}>
|
|
|
|
<ElTable ref={elTableRef} data={unref(getProps).data} {...unref(getBindValue)}>
|
|
|
|
{{
|
|
|
|
{{
|
|
|
|
default: () => [sortableEl, ...renderTableColumn()],
|
|
|
|
default: () => renderTableColumn(),
|
|
|
|
...tableSlots
|
|
|
|
...tableSlots
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
</ElTable>
|
|
|
|
</ElTable>
|
|
|
|
|