|
|
@@ -168,7 +168,7 @@ const emits = defineEmits<{
|
|
|
(e: "update:loading", v: boolean): void
|
|
|
(e: "page-change", v: number): void
|
|
|
(e: "update:formData", v: any): void
|
|
|
- (e: "sort", v: Sort): void
|
|
|
+ (e: "sort", v: Sort[]): void
|
|
|
(e: "select", row: any): void
|
|
|
(e: "unSelect", row: any): void
|
|
|
(e: "select-all", rows: any[]): void
|
|
|
@@ -189,10 +189,12 @@ const remoteTotal = ref<number>(0)
|
|
|
const remoteData = ref<any[]>([])
|
|
|
const checkAll = ref<boolean>(false)
|
|
|
const toolbarHandleBtns = ref<ToolBtn[]>([])
|
|
|
-const sortParams = ref<{ orderByColumn?: string; isAsc?: string }>({
|
|
|
- orderByColumn: props.sortField ?? "",
|
|
|
- isAsc: props.sortOrder == "asc" ? "ascending" : "descending"
|
|
|
-})
|
|
|
+const sortParams = ref<Sort[]>([
|
|
|
+ {
|
|
|
+ label: props.sortField ?? "",
|
|
|
+ order: props.sortOrder == "asc" ? "asc" : "desc"
|
|
|
+ }
|
|
|
+])
|
|
|
|
|
|
const _columns = ref<Header[]>()
|
|
|
const columns: WritableComputedRef<Header[]> = computed({
|
|
|
@@ -396,9 +398,15 @@ const remote = (id?: string) => {
|
|
|
const params = props.noPage
|
|
|
? queryParams.value
|
|
|
: Object.assign({ pageNum: currentPage.value, pageSize: pageSize.value }, queryParams.value)
|
|
|
- if (sortParams.value.orderByColumn) {
|
|
|
- params.orderByColumn = sortParams.value.orderByColumn
|
|
|
- params.isAsc = sortParams.value.isAsc
|
|
|
+ if (sortParams.value.length) {
|
|
|
+ params.orderByColumn = ""
|
|
|
+ params.isAsc = ""
|
|
|
+ sortParams.value.forEach((v: any) => {
|
|
|
+ if (v.order && v.label) {
|
|
|
+ params.orderByColumn += (params.orderByColumn ? "," : "") + v.label
|
|
|
+ params.isAsc += (params.isAsc ? "," : "") + v.order
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
let curData: any = {}
|
|
|
if (props.isLazy) {
|
|
|
@@ -508,38 +516,40 @@ const loadHandleBtns = () => {
|
|
|
if (!props.useCustomBtns && props.handlePerm) {
|
|
|
const _handleFuns = Object.assign({}, defaultHandleFuns, props.handleFuns ?? {})
|
|
|
apis.system.menuApi.menuChildrenByPerms(props.handlePerm).then((res) => {
|
|
|
- res.data.forEach((v: any) => {
|
|
|
- if (v.btnScript && v.btnScript != "hide") {
|
|
|
- const scripts = v.btnScript.split("@")
|
|
|
- const _btn = props.handleBtns?.find((v) => {
|
|
|
- return v.key == scripts[0]
|
|
|
- })
|
|
|
- const btn: ToolBtn = {
|
|
|
- key: scripts[0],
|
|
|
- show: _btn?.show == undefined ? true : _btn?.show,
|
|
|
- name: _btn?.name ?? v.menuName,
|
|
|
- permission: _btn?.permission ?? v.perms,
|
|
|
- clickFun: _btn?.clickFun ?? _handleFuns[scripts[0]],
|
|
|
- icon: _btn?.icon ?? `${props.btnIconPrefix}${v.icon}`,
|
|
|
- iconType: _btn?.iconType ?? "class",
|
|
|
- btnClass: _btn?.btnClass ?? v.btnClass,
|
|
|
- disabledFun: _btn?.disabledFun
|
|
|
- }
|
|
|
- if (scripts.length > 1) {
|
|
|
- btn.disabledFun = (r: number) => {
|
|
|
- const temp = Number(scripts[1])
|
|
|
- if (temp == 0) {
|
|
|
- return r == 0
|
|
|
+ if (res.data && res.data.length > 0) {
|
|
|
+ res.data.forEach((v: any) => {
|
|
|
+ if (v.btnScript && v.btnScript != "hide") {
|
|
|
+ const scripts = v.btnScript.split("@")
|
|
|
+ const _btn = props.handleBtns?.find((v) => {
|
|
|
+ return v.key == scripts[0]
|
|
|
+ })
|
|
|
+ const btn: ToolBtn = {
|
|
|
+ key: scripts[0],
|
|
|
+ show: _btn?.show == undefined ? true : _btn?.show,
|
|
|
+ name: _btn?.name ?? v.menuName,
|
|
|
+ permission: _btn?.permission ?? v.perms,
|
|
|
+ clickFun: _btn?.clickFun ?? _handleFuns[scripts[0]],
|
|
|
+ icon: _btn?.icon ?? `${props.btnIconPrefix}${v.icon}`,
|
|
|
+ iconType: _btn?.iconType ?? "class",
|
|
|
+ btnClass: _btn?.btnClass ?? v.btnClass,
|
|
|
+ disabledFun: _btn?.disabledFun
|
|
|
+ }
|
|
|
+ if (scripts.length > 1) {
|
|
|
+ btn.disabledFun = (r: number) => {
|
|
|
+ const temp = Number(scripts[1])
|
|
|
+ if (temp == 0) {
|
|
|
+ return r == 0
|
|
|
+ }
|
|
|
+ return r != Number(scripts[1])
|
|
|
}
|
|
|
- return r != Number(scripts[1])
|
|
|
}
|
|
|
+ if (props.handleDisabledFuns && props.handleDisabledFuns[scripts[0]]) {
|
|
|
+ btn.disabledFun = props.handleDisabledFuns[scripts[0]]
|
|
|
+ }
|
|
|
+ toolbarHandleBtns.value.push(btn)
|
|
|
}
|
|
|
- if (props.handleDisabledFuns && props.handleDisabledFuns[scripts[0]]) {
|
|
|
- btn.disabledFun = props.handleDisabledFuns[scripts[0]]
|
|
|
- }
|
|
|
- toolbarHandleBtns.value.push(btn)
|
|
|
- }
|
|
|
- })
|
|
|
+ })
|
|
|
+ }
|
|
|
toolbarHandleBtns.value.push(...(props.customBtns ?? []))
|
|
|
})
|
|
|
} else {
|
|
|
@@ -687,16 +697,10 @@ const onPageSizeChange = (count: number) => {
|
|
|
const onColumnsChange = (headers: Header[]) => {
|
|
|
columns.value = headers
|
|
|
}
|
|
|
-const onSort = (v: Sort) => {
|
|
|
- const sort = toValue(v)
|
|
|
- if (sort.order) {
|
|
|
- sortParams.value.orderByColumn = sort.label ?? ""
|
|
|
- sortParams.value.isAsc = sort.order == "asc" ? "ascending" : "descending"
|
|
|
- } else {
|
|
|
- delete sortParams.value.orderByColumn
|
|
|
- delete sortParams.value.isAsc
|
|
|
- }
|
|
|
- emits("sort", sort)
|
|
|
+const onSort = (v: Sort[]) => {
|
|
|
+ const sorts = toValue(v)
|
|
|
+ sortParams.value = sorts
|
|
|
+ emits("sort", sorts)
|
|
|
search(false)
|
|
|
}
|
|
|
const onSelectAll = (isChecked: boolean) => {
|