You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
205 lines
5.9 KiB
205 lines
5.9 KiB
/* |
|
* Licensed to the Apache Software Foundation (ASF) under one or more |
|
* contributor license agreements. See the NOTICE file distributed with |
|
* this work for additional information regarding copyright ownership. |
|
* The ASF licenses this file to You under the Apache License, Version 2.0 |
|
* (the "License"); you may not use this file except in compliance with |
|
* the License. You may obtain a copy of the License at |
|
* |
|
* http://www.apache.org/licenses/LICENSE-2.0 |
|
* |
|
* Unless required by applicable law or agreed to in writing, software |
|
* distributed under the License is distributed on an "AS IS" BASIS, |
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
* See the License for the specific language governing permissions and |
|
* limitations under the License. |
|
*/ |
|
|
|
import { h, ref, reactive } from 'vue' |
|
import { useI18n } from 'vue-i18n' |
|
import { useRouter } from 'vue-router' |
|
import { NSpace, NTooltip, NButton, NPopconfirm } from 'naive-ui' |
|
import { |
|
deleteProjectParameterByCode, |
|
queryProjectParameterListPaging |
|
} from '@/service/modules/projects-parameter' |
|
import { ProjectParameterCodeReq } from '@/service/modules/projects-parameter/types' |
|
import { DeleteOutlined, EditOutlined } from '@vicons/antd' |
|
import { |
|
COLUMN_WIDTH_CONFIG, |
|
calculateTableWidth, |
|
DefaultTableWidth |
|
} from '@/common/column-width-config' |
|
import type { Router } from 'vue-router' |
|
|
|
export function useTable() { |
|
const { t } = useI18n() |
|
const router: Router = useRouter() |
|
|
|
const variables = reactive({ |
|
columns: [], |
|
tableWidth: DefaultTableWidth, |
|
row: {}, |
|
tableData: [], |
|
projectCode: ref(Number(router.currentRoute.value.params.projectCode)), |
|
page: ref(1), |
|
pageSize: ref(10), |
|
searchVal: ref(), |
|
totalPage: ref(1), |
|
showRef: ref(false), |
|
statusRef: ref(0), |
|
loadingRef: ref(false) |
|
}) |
|
|
|
const createColumns = (variables: any) => { |
|
variables.columns = [ |
|
{ |
|
title: '#', |
|
key: 'id', |
|
...COLUMN_WIDTH_CONFIG['index'], |
|
render: (row: any, index: number) => index + 1 |
|
}, |
|
{ |
|
title: t('project.parameter.name'), |
|
key: 'paramName', |
|
...COLUMN_WIDTH_CONFIG['name'] |
|
}, |
|
{ |
|
title: t('project.parameter.value'), |
|
key: 'paramValue', |
|
...COLUMN_WIDTH_CONFIG['name'] |
|
}, |
|
{ |
|
title: t('project.parameter.create_user'), |
|
key: 'createUser', |
|
...COLUMN_WIDTH_CONFIG['name'] |
|
}, |
|
{ |
|
title: t('project.parameter.modify_user'), |
|
key: 'modifyUser', |
|
...COLUMN_WIDTH_CONFIG['name'] |
|
}, |
|
{ |
|
title: t('project.parameter.create_time'), |
|
key: 'createTime', |
|
...COLUMN_WIDTH_CONFIG['time'] |
|
}, |
|
{ |
|
title: t('project.parameter.update_time'), |
|
key: 'updateTime', |
|
...COLUMN_WIDTH_CONFIG['time'] |
|
}, |
|
{ |
|
title: t('project.parameter.operation'), |
|
key: 'operation', |
|
...COLUMN_WIDTH_CONFIG['operation'](3), |
|
render: (row: any) => { |
|
return h(NSpace, null, { |
|
default: () => [ |
|
h( |
|
NTooltip, |
|
{}, |
|
{ |
|
trigger: () => |
|
h( |
|
NButton, |
|
{ |
|
circle: true, |
|
type: 'info', |
|
size: 'small', |
|
onClick: () => { |
|
handleEdit(row) |
|
} |
|
}, |
|
{ |
|
icon: () => h(EditOutlined) |
|
} |
|
), |
|
default: () => t('project.parameter.edit') |
|
} |
|
), |
|
h( |
|
NPopconfirm, |
|
{ |
|
onPositiveClick: () => { |
|
handleDelete(row.code) |
|
} |
|
}, |
|
{ |
|
trigger: () => |
|
h( |
|
NTooltip, |
|
{}, |
|
{ |
|
trigger: () => |
|
h( |
|
NButton, |
|
{ |
|
circle: true, |
|
type: 'error', |
|
size: 'small' |
|
}, |
|
{ |
|
icon: () => h(DeleteOutlined) |
|
} |
|
), |
|
default: () => t('project.parameter.delete') |
|
} |
|
), |
|
default: () => t('project.parameter.delete_confirm') |
|
} |
|
) |
|
] |
|
}) |
|
} |
|
} |
|
] |
|
if (variables.tableWidth) { |
|
variables.tableWidth = calculateTableWidth(variables.columns) |
|
} |
|
} |
|
|
|
const handleEdit = (row: any) => { |
|
variables.showRef = true |
|
variables.statusRef = 1 |
|
variables.row = row |
|
} |
|
|
|
const getTableData = (params: any) => { |
|
if (variables.loadingRef) return |
|
variables.loadingRef = true |
|
|
|
queryProjectParameterListPaging({ ...params }, variables.projectCode).then( |
|
(res: any) => { |
|
variables.totalPage = res.totalPage |
|
variables.tableData = res.totalList.map((item: any) => { |
|
return { ...item } |
|
}) |
|
variables.loadingRef = false |
|
} |
|
) |
|
} |
|
|
|
const handleDelete = (code: number) => { |
|
if (variables.tableData.length === 1 && variables.page > 1) { |
|
variables.page -= 1 |
|
} |
|
const data: ProjectParameterCodeReq = { |
|
code: code |
|
} |
|
deleteProjectParameterByCode(data, variables.projectCode).then(() => { |
|
window.$message.success(t('project.parameter.success')) |
|
getTableData({ |
|
pageSize: variables.pageSize, |
|
pageNo: variables.page, |
|
searchVal: variables.searchVal |
|
}) |
|
}) |
|
} |
|
|
|
return { |
|
variables, |
|
createColumns, |
|
getTableData |
|
} |
|
}
|
|
|