mirror of https://gitee.com/lmlz_0/dc-ui.git
fuguobin
8 months ago
2 changed files with 436 additions and 55 deletions
@ -0,0 +1,291 @@ |
|||
<template> |
|||
<div class="app-container"> |
|||
<el-collapse class="paramsCollapse" v-model="activeNames"> |
|||
<el-collapse-item title="基本信息" name="1"> |
|||
<el-form :inline="true" :model="addForm" class="demo-form-inline"> |
|||
<el-form-item label="资产编号"> |
|||
<el-input |
|||
v-model="addForm.num" |
|||
placeholder="资产编号" |
|||
clearable |
|||
readonly |
|||
/> |
|||
</el-form-item> |
|||
<el-form-item label="资产名称"> |
|||
<el-input v-model="addForm.name" placeholder="资产名称" clearable /> |
|||
</el-form-item> |
|||
<el-form-item label="组成设备"> |
|||
<el-select |
|||
v-model="addForm.device" |
|||
multiple |
|||
filterable |
|||
allow-create |
|||
default-first-option |
|||
:reserve-keyword="false" |
|||
placeholder="组成设备" |
|||
style="width: 240px" |
|||
> |
|||
<el-option |
|||
v-for="item in options" |
|||
:key="item.value" |
|||
:label="item.label" |
|||
:value="item.value" |
|||
/> |
|||
</el-select> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button type="success" @click="selectParams">选择参数</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
</el-collapse-item> |
|||
<el-collapse-item title="参数列表" name="2"> |
|||
<vxe-table |
|||
class="tableCollapse" |
|||
border |
|||
ref="tableRef" |
|||
max-height="400" |
|||
:row-config="{ isHover: true }" |
|||
:loading="loading" |
|||
:data="tableListData" |
|||
> |
|||
<vxe-column type="checkbox" width="60"></vxe-column> |
|||
<vxe-column field="role" title="参数编码"></vxe-column> |
|||
<vxe-column |
|||
field="address" |
|||
title="参数名称" |
|||
:filters="addressOptions" |
|||
:filter-method="filterAddressMethod" |
|||
:filter-recover-method="filterAddressRecoverMethod" |
|||
> |
|||
<template #filter="{ $panel, column }"> |
|||
<vxe-input |
|||
class="filterInput" |
|||
v-for="(option, index) in column.filters" |
|||
:key="index" |
|||
v-model="option.data" |
|||
@input="$panel.changeOption($event, !!option.data, option)" |
|||
@keyup.enter="$panel.confirmFilter()" |
|||
placeholder="参数名称" |
|||
size="mini" |
|||
></vxe-input> |
|||
</template> |
|||
</vxe-column> |
|||
<vxe-column field="youxiao" title="是否有效"> |
|||
<template #default="{ row }"> |
|||
<vxe-checkbox v-model="row.youxiao"></vxe-checkbox> |
|||
</template> |
|||
</vxe-column> |
|||
<vxe-column field="kekong" title="是否可控"> |
|||
<template #default="{ row }"> |
|||
<vxe-checkbox v-model="row.kekong"></vxe-checkbox> |
|||
</template> |
|||
</vxe-column> |
|||
</vxe-table> |
|||
</el-collapse-item> |
|||
</el-collapse> |
|||
<el-dialog |
|||
class="addDialog" |
|||
v-model="dialogTableVisible" |
|||
title="选择参数" |
|||
width="900" |
|||
> |
|||
<vxe-table |
|||
class="tableDialog" |
|||
border |
|||
ref="tableRef" |
|||
max-height="400" |
|||
:row-config="{ isHover: true }" |
|||
:loading="loading" |
|||
:data="tableData" |
|||
> |
|||
<vxe-column type="checkbox" width="60"></vxe-column> |
|||
<vxe-column field="id" title="设备编码" sortable></vxe-column> |
|||
<vxe-column field="name" title="设备名称"></vxe-column> |
|||
<vxe-column field="role" title="参数编码"></vxe-column> |
|||
<vxe-column |
|||
field="age" |
|||
title="参数模版名称" |
|||
:filters="ageOptions" |
|||
:filter-method="filterAgeMethod" |
|||
:filter-recover-method="filterAgeRecoverMethod" |
|||
> |
|||
<template #filter="{ $panel, column }"> |
|||
<vxe-input |
|||
class="filterInput" |
|||
v-for="(option, index) in column.filters" |
|||
:key="index" |
|||
v-model="option.data" |
|||
@input="$panel.changeOption($event, !!option.data, option)" |
|||
@keyup.enter="$panel.confirmFilter()" |
|||
placeholder="参数模版名称" |
|||
size="mini" |
|||
></vxe-input> |
|||
</template> |
|||
</vxe-column> |
|||
<vxe-column |
|||
field="address" |
|||
title="参数名称" |
|||
:filters="addressOptions" |
|||
:filter-method="filterAddressMethod" |
|||
:filter-recover-method="filterAddressRecoverMethod" |
|||
> |
|||
<template #filter="{ $panel, column }"> |
|||
<vxe-input |
|||
class="filterInput" |
|||
v-for="(option, index) in column.filters" |
|||
:key="index" |
|||
v-model="option.data" |
|||
@input="$panel.changeOption($event, !!option.data, option)" |
|||
@keyup.enter="$panel.confirmFilter()" |
|||
placeholder="参数名称" |
|||
size="mini" |
|||
></vxe-input> |
|||
</template> |
|||
</vxe-column> |
|||
<vxe-column |
|||
field="sex" |
|||
title="分区" |
|||
:filter-multiple="false" |
|||
:filters="sexOptions" |
|||
></vxe-column> |
|||
</vxe-table> |
|||
<template #footer> |
|||
<div class="dialog-footer"> |
|||
<el-button @click="dialogTableVisible = false">取消</el-button> |
|||
<el-button type="primary" @click="dialogTableVisible = false"> |
|||
确认 |
|||
</el-button> |
|||
</div> |
|||
</template> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
<script setup> |
|||
import { ref, reactive, onMounted } from "vue"; |
|||
import { useRoute } from "vue-router"; |
|||
const activeNames = ref(["1", "2"]); |
|||
const route = useRoute(); |
|||
const dialogTableVisible = ref(false); |
|||
const addForm = reactive({ |
|||
num: route.query.assetCode, |
|||
name: "", |
|||
device: [], |
|||
}); |
|||
const options = [ |
|||
{ |
|||
value: "HTML", |
|||
label: "HTML", |
|||
}, |
|||
{ |
|||
value: "CSS", |
|||
label: "CSS", |
|||
}, |
|||
{ |
|||
value: "JavaScript", |
|||
label: "JavaScript", |
|||
}, |
|||
]; |
|||
const tableRef = ref(); |
|||
const loading = ref(false); |
|||
const tableData = ref([ |
|||
{ |
|||
id: 10001, |
|||
name: "Test1", |
|||
role: "Develop", |
|||
sex: "Man", |
|||
age: 28, |
|||
address: "test", |
|||
}, |
|||
{ |
|||
id: 10002, |
|||
name: "Test2", |
|||
role: "admin", |
|||
sex: "Man", |
|||
age: 29, |
|||
address: "asd", |
|||
}, |
|||
{ |
|||
id: 10003, |
|||
name: "Test3", |
|||
role: "useer", |
|||
sex: "Man", |
|||
age: 22, |
|||
address: "qsx", |
|||
}, |
|||
]); |
|||
const tableListData = ref([ |
|||
{ |
|||
id: 10001, |
|||
name: "Test1", |
|||
role: "Develop", |
|||
sex: "Man", |
|||
age: 28, |
|||
address: "test", |
|||
youxiao: true, |
|||
kekong: false, |
|||
}, |
|||
{ |
|||
id: 10002, |
|||
name: "Test2", |
|||
role: "admin", |
|||
sex: "Man", |
|||
age: 29, |
|||
address: "asd", |
|||
youxiao: false, |
|||
kekong: true, |
|||
}, |
|||
{ |
|||
id: 10003, |
|||
name: "Test3", |
|||
role: "useer", |
|||
sex: "Man", |
|||
age: 22, |
|||
address: "qsx", |
|||
youxiao: false, |
|||
kekong: false, |
|||
}, |
|||
]); |
|||
const sexOptions = ref([ |
|||
{ label: "高", value: "Man" }, |
|||
{ label: "中", value: "Women" }, |
|||
]); |
|||
const ageOptions = ref([{ data: "" }]); |
|||
const addressOptions = ref([{ data: "" }]); |
|||
const filterAgeMethod = ({ option, row }) => { |
|||
return row.age === Number(option.data); |
|||
}; |
|||
const filterAgeRecoverMethod = ({ option }) => { |
|||
// 如果是自定义筛选模板,当为点击确认时,该选项将被恢复为默认值 |
|||
option.data = ""; |
|||
}; |
|||
const filterAddressMethod = ({ option, row }) => { |
|||
return row.address === option.data; |
|||
}; |
|||
const filterAddressRecoverMethod = ({ option }) => { |
|||
// 如果是自定义筛选模板,当为点击确认时,该选项将被恢复为默认值 |
|||
option.data = ""; |
|||
}; |
|||
onMounted(() => {}); |
|||
function selectParams() { |
|||
//选择参数 |
|||
dialogTableVisible.value = true; |
|||
} |
|||
</script> |
|||
<style scoped> |
|||
.paramsCollapse { |
|||
.tableCollapse { |
|||
.filterInput { |
|||
width: 120px; |
|||
margin: 10px; |
|||
} |
|||
} |
|||
} |
|||
:deep(.addDialog) { |
|||
.tableDialog { |
|||
.filterInput { |
|||
width: 120px; |
|||
margin: 10px; |
|||
} |
|||
} |
|||
} |
|||
</style> |
Loading…
Reference in new issue