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