|
@@ -1,73 +1,138 @@
|
|
|
<template>
|
|
|
- <div id="tableForm">
|
|
|
- <div class="tableContent">
|
|
|
- <el-table :data="tableData" style="width: 100%">
|
|
|
- <el-table-column align="center" prop="date" label="Date" />
|
|
|
- <el-table-column align="center" prop="name" label="Name" />
|
|
|
- <el-table-column align="center" prop="address" label="Address" />
|
|
|
- </el-table>
|
|
|
- </div>
|
|
|
- <div class="paginationBox">
|
|
|
- <el-pagination
|
|
|
- v-model:currentPage="currentPage2"
|
|
|
- :page-sizes="sizes"
|
|
|
- :page-size="sizes[0]"
|
|
|
- layout="sizes, prev, pager, next"
|
|
|
- :total="1000"
|
|
|
- @size-change="handleSizeChange"
|
|
|
- @current-change="handleCurrentChange"
|
|
|
- >
|
|
|
- </el-pagination>
|
|
|
+ <div id="dataBox">
|
|
|
+ <searchForm v-if="searchFormData"
|
|
|
+ :searchFormData="searchFormData"
|
|
|
+ @handleSearch="handleSearch">
|
|
|
+ <!-- <template #button>
|
|
|
+ <slot name="button">
|
|
|
+
|
|
|
+ </slot>
|
|
|
+
|
|
|
+ </template> -->
|
|
|
+ </searchForm>
|
|
|
+ <div id="tableForm">
|
|
|
+ <div class="tableContent">
|
|
|
+ <el-table :data="tableData"
|
|
|
+ style="width: 100%">
|
|
|
+ <el-table-column v-for="(item, i) in tableHeader"
|
|
|
+ :key="i"
|
|
|
+ :prop="item.prop"
|
|
|
+ :label="item.label"
|
|
|
+ :width="item.width"
|
|
|
+ :filters="item.filters"
|
|
|
+ :column-key="item.columnKey"
|
|
|
+ :filtered-value="item.filteredValue"
|
|
|
+ :filter-multiple="item.filterMultiple"
|
|
|
+ :align="item.center || 'center'">
|
|
|
+ <!-- <slot name="column">
|
|
|
+ </slot> -->
|
|
|
+ <template #default="scope">
|
|
|
+ <v-solt v-if="item.render"
|
|
|
+ :render="item.render"
|
|
|
+ :row="scope.row"
|
|
|
+ :index="scope.$index"
|
|
|
+ :column="item"></v-solt>
|
|
|
+ <div v-else-if="item.action">
|
|
|
+ <el-link href="javascripy:;"
|
|
|
+ @click="o.clickFun(scope.$index,scope.row)"
|
|
|
+ v-for="(o,key) in item.action"
|
|
|
+ :key="key"
|
|
|
+ :type="o.type ||'primary'">
|
|
|
+ {{o.name}}
|
|
|
+ </el-link>
|
|
|
+ </div>
|
|
|
+ <span v-else>{{scope.row[item.prop] || '-'}}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <div class="paginationBox">
|
|
|
+ <el-pagination v-model:currentPage="currentPage2"
|
|
|
+ :page-sizes="sizes"
|
|
|
+ :page-size="sizes[0]"
|
|
|
+ layout="sizes, prev, pager, next"
|
|
|
+ :total="1000"
|
|
|
+ @size-change="handleSizeChange"
|
|
|
+ @current-change="handleCurrentChange">
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { defineComponent, reactive, ref, toRefs, onMounted } from "vue";
|
|
|
-import { useRoute, useRouter } from "vue-router";
|
|
|
+import { defineComponent, reactive, ref, toRefs, onMounted } from 'vue'
|
|
|
+import { useRoute, useRouter } from 'vue-router'
|
|
|
+import searchForm from '@/components/searchForm/index.vue'
|
|
|
+import vSolt from './vSolt.vue'
|
|
|
export default defineComponent({
|
|
|
- setup() {
|
|
|
+ // props: ['dataApi', 'tableHeader'],
|
|
|
+ props: {
|
|
|
+ dataApi: Function,
|
|
|
+ config: {
|
|
|
+ type: Object,
|
|
|
+ default: function () {
|
|
|
+ return null
|
|
|
+ },
|
|
|
+ },
|
|
|
+ tableHeader: Array,
|
|
|
+ tableData: {
|
|
|
+ type: Array,
|
|
|
+ default: function () {
|
|
|
+ return []
|
|
|
+ },
|
|
|
+ },
|
|
|
+ searchFormData: {
|
|
|
+ type: Object,
|
|
|
+ default: function () {
|
|
|
+ return null
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ setup(props, context) {
|
|
|
const data = reactive({
|
|
|
sizes: [10, 30, 50, 100],
|
|
|
currentPage2: ref(5),
|
|
|
- tableData: [
|
|
|
- {
|
|
|
- date: "2016-05-03",
|
|
|
- name: "Tom",
|
|
|
- address: "No. 189, Grove St, Los Angeles",
|
|
|
- },
|
|
|
- {
|
|
|
- date: "2016-05-02",
|
|
|
- name: "Tom",
|
|
|
- address: "No. 189, Grove St, Los Angeles",
|
|
|
- },
|
|
|
- {
|
|
|
- date: "2016-05-04",
|
|
|
- name: "Tom",
|
|
|
- address: "No. 189, Grove St, Los Angeles",
|
|
|
- },
|
|
|
- {
|
|
|
- date: "2016-05-01",
|
|
|
- name: "Tom",
|
|
|
- address: "No. 189, Grove St, Los Angeles",
|
|
|
- },
|
|
|
- ],
|
|
|
- });
|
|
|
+ // tableData: [],
|
|
|
+ pageParam: {
|
|
|
+ limit: 10,
|
|
|
+ nd: 1635487948418,
|
|
|
+ order: 'asc',
|
|
|
+ page: 1,
|
|
|
+ sidx: '',
|
|
|
+ token: localStorage.getItem('token'),
|
|
|
+ _search: false,
|
|
|
+ },
|
|
|
+ })
|
|
|
+ onMounted(() => {
|
|
|
+ // handleTableData()
|
|
|
+ })
|
|
|
|
|
|
+ const handleTableData = () => {
|
|
|
+ props
|
|
|
+ .dataApi(data.pageParam)
|
|
|
+ .then((res) => {
|
|
|
+ console.log(res)
|
|
|
+ data.tableData = res.page.list
|
|
|
+ })
|
|
|
+ .catch((err) => {})
|
|
|
+ }
|
|
|
const handleSizeChange = (val) => {
|
|
|
- console.log(`${val} items per page`);
|
|
|
- };
|
|
|
+ console.log(`${val} items per page`)
|
|
|
+ }
|
|
|
const handleCurrentChange = (val) => {
|
|
|
- console.log(`current page: ${val}`);
|
|
|
- };
|
|
|
+ console.log(`current page: ${val}`)
|
|
|
+ }
|
|
|
return {
|
|
|
handleSizeChange,
|
|
|
handleCurrentChange,
|
|
|
...toRefs(data),
|
|
|
- };
|
|
|
+ }
|
|
|
},
|
|
|
- components: {},
|
|
|
-});
|
|
|
+ components: { searchForm, vSolt },
|
|
|
+})
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss">
|
|
@@ -79,6 +144,16 @@ export default defineComponent({
|
|
|
overflow: hidden;
|
|
|
padding: 20px;
|
|
|
box-sizing: border-box;
|
|
|
+ .el-table {
|
|
|
+ .cell {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ .el-link {
|
|
|
+ margin-right: 5px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
.paginationBox {
|
|
|
display: flex;
|