middleground_code_v2/src/components/base/baseChoice/index.vue

211 lines
5.0 KiB
Vue
Raw Normal View History

2024-03-26 11:18:19 +08:00
<template>
<div flex>
<div class="treeBody" v-if="menuData.length > 0">
<base-tree ref="baseTree" :isCenter="false" :isSaveBtn="false" :Allshow="false" :showCheckbox="false"
:menuData="menuData" @handleNodeClick="handleNodeClick">
</base-tree>
</div>
<div style="overflow: hidden;padding: 10px;flex: 1;">
<!-- <div flex="cross:center" style="margin-bottom: 10px;">
<el-input v-model="write" :placeholder="placeholder" style="width: 200px;margin-right: 10px;">
</el-input>
<el-button type="primary" icon="el-icon-search" @click="search">查询</el-button>
</div> -->
<base-table ref="customtable" :border="true" :showIndex="false" :tabLoading.sync="tabLoading" :slotrow="true"
:tableData="tableData" :tableColumn="tableColumn" :funData="[]" @onCellClick="getCell" :tableHeight="tableHeightLog"
@onSelectionChange="getSelect" :highlightCurrent="true" @radioChange="radioChange">
<!-- 单选 -->
<template v-slot:option="{row}">
<el-radio v-model="radio" :label="row.$index" ></el-radio>
</template>
</base-table>
<base-page :pageModel.sync="pageModel" @onPageChange="pageChange" :pageSizesList='[10 , 20, 80, 100, 150]'></base-page>
</div>
</div>
</template>
<script>
import baseTable from "@/components/base/baseTable";
import baseLayout from "@/components/base/baseLayout";
import baseJurisdiction from "@/components/base/baseJurisdiction/index.vue";
import baseTree from "@/components/base/BaseMenuTree/index.vue";
import basePage from '@/components/base/basePage'
import configData from "./configData";
export default {
name: "review",
components: {
baseLayout,
baseTable,
baseTree,
baseJurisdiction,
basePage
},
props: {
// 表格尺寸
placeholder: {
type: String,
default: '请输入内容'
},
choiceDialog: {
type: Boolean,
default: false
},
tableColumn: {
type: Array,
default () {
return []
},
},
menuData: {
type: Array,
default () {
return []
},
},
tableData: {
type: Array,
default () {
return []
},
},
},
watch: {
choiceDialog: {
deep: true, //深度监听设置为 true
handler: function(newV, oldV) {
if(this.choiceDialog){
this.reset()
}
}
},
},
data() {
return {
radio: false,
optionData: '',
// 分页数据
pageModel: {
total: 0,
page: 1,
limit: 10,
},
write: '',
nowBtns: [{
'routeUrl': 'button_jurisdiction',
'menuName': '权限设置'
}],
tabLoading: false,
selectTable: [], //多选
settingsDialog: false,
settingCenter: "left",
tableHeightLog: "calc(100vh - 416px)",
}
},
computed: {
// 表头配置
// tableColumn() {
// return configData.tableColumnJson
// },
},
mounted() {
// this.$refs.customtable.clearRadioIndex()
},
methods: {
// 查询、筛选事件
getQuery(model) {
console.log(model)
},
// 单元格点击事件
getCell(row, label) {
},
// 详情页 type: 1 新增 2编辑
goInfo(type = 1, id) {
},
getElSelect(event, index, indexItem, param) {},
// 按钮点击事件
getFuncBtn(btnEven) {
console.log(btnEven)
if (btnEven.routeUrl == 'button_jurisdiction') {
this.settingsDialog = true
}
},
// 表格多选
getSelect(selectTable) {
this.selectTable = selectTable
},
// 树状图点击事件
handleNodeClick(data) {
this.organizationForm = {
o_OrganCode: data.o_OrganCode,
ParentOrganName: data.label,
}
this.propvalue = data.label
this.optionData = ''
this.$refs.customtable.clearRadioIndex()
this.$emit('handleNodeClick', data)
},
// 页数或每页条数更改时触发
pageChange() {
this.$emit('onQuery', this.mergeParam())
},
mergeParam(state) {
if (state) {
this.pageModel.page = 1;
}
let page = {
page: this.pageModel.page,
limit: this.pageModel.limit,
}
for (let i in this.model) {
if (!this.model[i]) {
this.model[i] = null;
}
}
let search = Object.assign({}, page, this.model)
return Object.assign({}, page, this.model)
},
// 设置分页total值
setPageTotal(total) {
this.$set(this.pageModel, 'total', total)
},
//查询
search() {
this.$emit('getTableList', this.write);
},
radioChange(val) {
this.optionData = val
this.radio = val.index
},
reset() {
this.write = ''
this.radio = false
}
},
mounted() {
// this.$refs.choice.reset()
},
}
</script>
<style scoped>
.treeBody {
background-color: #f2f3f4;
width: 25%;
margin-top: 10px;
height: calc(100vh - 360px);
overflow-y: auto;
}
/* >>>.el-table__body-wrapper {
height: 300px !important;
} */
.app-container {
height: calc(100% - 52px);
}
</style>