封装搜索、表格、新增表单

This commit is contained in:
qq787203167
2022-01-19 17:53:19 +08:00
parent fa0e712ccf
commit e634323ff3
9 changed files with 744 additions and 2 deletions
+224
View File
@@ -0,0 +1,224 @@
<template>
<div style="height: 100%">
<div class="box">
<table class="box-table" cellpadding="0" cellspacing="0">
<thead>
<tr id="table_thead_tr">
<a-checkbox-group @change="checkboxAll($event)">
<th class="checkbox" style="margin-top: 24px;display: inline-block">
<a-checkbox></a-checkbox>
</th>
</a-checkbox-group>
</tr>
</thead>
<tbody id="table_tbody_tr">
<a-checkbox-group @change="checkboxChange" style="display: contents" v-model="checkboxList">
<tr v-for="item in jsonBody">
<td class="checkbox">
<a-checkbox :value="item.id"></a-checkbox>
</td>
<td v-for="val in Object.keys(item)" v-if="val != 'id'" class="box-td" :title="item[val]">
{{item[val]}}
</td>
<td class="box-td box-th-po">
<a class="text" v-if="Collection">收藏</a>
<a class="text" v-if="subscribe">订阅</a>
<a class="text" v-if="edit">编辑</a>
<a class="text" v-if="del">删除</a>
</td>
</tr>
</a-checkbox-group>
</tbody>
</table>
</div>
<div class="page">
<a-pagination
:show-total="total => ` ${total} `"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize"
:total="500"
@change="onChange"
/>
</div>
</div>
</template>
<script>
import eventBUs from '../../common/event'
export default {
name: 'index',
props: {
edit: {
type: Boolean,
default: false
},
del: {
type: Boolean,
default: false
},
Collection: {
type: Boolean,
default: false
},
subscribe: {
type: Boolean,
default: false
},
url: {
type: Object,
default: {}
}
},
data() {
return {
pageSize: 20,
jsonHead: [
{
'name': '序号',
'enName': 'Swrial number'
},
{
'name': '编号',
'enName': 'Swrial number'
},
{
'name': '标题',
'enName': 'Title'
},
{
'name': '发布日期',
'enName': 'Release data'
},
{
'name': '标准实施日期',
'enName': 'Standard data'
},
{
'name': '状态',
'enName': 'State'
}
],
jsonBody: [
{
// 'col1': '河流1',
id: 1,
'col2': '河流26dsfdsfdsfdsfsfdsfsfsfsfsdfsfsfdsfsfdsfdsfdsfdsfdsf1232132132132131321321321312312321321321312dsf',
'col3': '大羊沟6dsfdsfdsfdsfsfdsfsfsfsfsdfsfsfdsfsfdsfdsfdsfdsfdsf1232132132132131321321321312312321321321312dsf',
'col4': '待审批6dsfdsfdsfdsfsfdsfsfsfsfsdfsfsfdsfsfdsfdsfdsfdsfdsf1232132132132131321321321312312321321321312dsf',
'col5': '待审批6dsfdsfdsfdsfsfdsfsfsfsfsdfsfsfdsfsfdsfdsfdsfdsfdsf1232132132132131321321321312312321321321312dsf',
'col6': '待审批6dsfdsfdsfdsfsfdsfsfsfsfsdfsfsfdsfsfdsfdsfdsfdsfdsf1232132132132131321321321312312321321321312dsf',
'col7': 0.6
},
{
// 'col1': '河流1',
id: 2,
'col2': '河流2',
'col3': '大羊沟',
'col4': '待审批',
'col5': 0.6,
'col6': '0.6dsfdsfdsfdsfsfdsfsfsfsfsdfsfsfdsfsfdsfdsfdsfdsfdsf1232132132132131321321321312312321321321312dsf',
'col7': 0.6
}
],
checkboxList: []
}
},
mounted() {
eventBUs.$on('searchQuery', target => {
console.log(target);
});
eventBUs.$on('searchReset', target => {
console.log(target);
});
this.getData()
},
methods: {
getData() {
var jsonHead = this.jsonHead
for (var i = 0; i < jsonHead.length; i++) {
$('#table_thead_tr').append('<th class="box-th">' + jsonHead[i].enName + '</br>' + jsonHead[i].name + '</th>')
}
let th = '<th class="box-th box-th-po">' + 'Operation ' + '</br>' + '操作' + '</th>'
$('#table_thead_tr').append(th)
},
checkboxChange(value) {
console.log(value)
},
checkboxAll(event) {
this.checkboxList = []
if (event.length > 0) {
this.jsonBody.forEach(res => {
this.checkboxList.push(res.id)
})
}
},
onChange() {
}
}
}
</script>
<style scoped>
.box {
width: 100%;
height: calc(100% - 100px);
overflow: auto;
}
.box-table {
width: 100%;
overflow: auto;
position: relative;
}
.checkbox {
min-width: 30px;
margin-top: 10px;
}
.text {
margin-right: 16px;
}
.page {
text-align: right;
margin-top: 20px;
}
</style>
<style>
.box-th {
min-width: 100px;
max-width: 300px;
padding: 20px 20px;
box-sizing: border-box;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: left;
}
.box-td {
min-width: 100px;
max-width: 300px;
padding: 20px 20px;
box-sizing: border-box;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
text-align: left;
}
.box-th-po {
max-width: 340px;
position: sticky;
right: 0;
background: #fff;
padding: 20px 0 20px 20px;
box-sizing: border-box;
text-align: left;
}
</style>