分布式调度框架。
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

/*
* 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
}
}