|
<template>
<div class="custom-detail-list">
<div class="model-table">
<common-table :table-header="table?.header" :table-data="table?.data">
<template #custom="scope">
<ipu-popconfirm
:btn-icon="'Delete'"
:title="'确认删除自定义属性吗?'"
@confirm="confirmEvent(scope.row)"
></ipu-popconfirm>
</template>
</common-table>
</div>
<div class="model-footer">
<common-pagination :page="table[active]?.page"></common-pagination>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue';
const props = defineProps({
attrDatas: {
type: Array,
default: () => []
}
});
const table = ref({
header: [
{ label: 'ID', name: 'id', width: '80', fixed: 'left' },
{ label: '名称', name: 'name', width: '100' },
{ label: '类型', name: 'type', width: '100' },
{ label: '最小', name: 'min', 'min-width': '100' },
{ label: '最大', name: 'max', 'min-width': '100' },
{ label: '小于', name: 'more', 'min-width': '100' },
{ label: '大于', name: 'less', 'min-width': '100' },
{ label: '等于', name: 'equal', 'min-width': '100' },
{ label: '不等于', name: 'unequal', 'min-width': '100' },
{ label: '表达式', name: 'expression', 'min-width': '100' },
{ label: '是否允许为空', name: 'nullable', 'min-width': '100' },
{ label: '小数刻度', name: 'precision', 'min-width': '180' },
{ label: '小数精度', name: 'precision', 'min-width': '180' },
{
label: '操作',
name: 'custom',
type: 'custom',
fixed: 'right',
width: '100'
}
],
// eslint-disable-next-line no-use-before-define
data: fomateData()
});
// 数据格式化
function fomateData() {
const data = [];
props.attrDatas.forEach((item) => {
data.push({
...item,
...item.validateRules
});
});
return data;
}
// function deleteRow(item) {}
function confirmEvent(row) {
console.log(row);
table.value.data.forEach((item, index) => {
if (item.id === row.id) {
// eslint-disable-next-line vue/no-mutating-props
props.attrDatas.splice(index, 1);
table.value.data = fomateData();
}
});
}
</script>
<style scoped lang="scss">
.custom-detail-list {
}
</style>
|