123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- <template>
- <div class="{{ dashCase name }}-container auto-height-container">
- <vab-query-form>
- <vab-query-form-top-panel>
- <el-form inline :model="queryForm" @submit.prevent>
- <el-form-item label="标题">
- <el-input v-model="queryForm.title" clearable placeholder="请输入标题" />
- </el-form-item>
- <el-form-item v-show="!fold" label="标题">
- <el-input v-model="queryForm.title" clearable placeholder="请输入标题" />
- </el-form-item>
- <el-form-item>
- <el-button :icon="Search" :loading="listLoading" native-type="submit" type="primary" @click="queryData">查询</el-button>
- <el-button class="hidden-xs-only" text type="primary" @click="handleFold">
- <span v-if="fold">展开</span>
- <span v-else>合并</span>
- <vab-icon class="vab-dropdown" :class="{ 'vab-dropdown-active': fold }" icon="arrow-up-s-line" />
- </el-button>
- </el-form-item>
- </el-form>
- </vab-query-form-top-panel>
- <vab-query-form-left-panel :span="24">
- <el-button :icon="Plus" type="primary" @click="handleAdd">添加</el-button>
- <el-button :icon="Delete" type="danger" @click="handleDelete">删除</el-button>
- </vab-query-form-left-panel>
- </vab-query-form>
- <el-table ref="tableRef" v-loading="listLoading" border :data="list" @selection-change="setSelectRows">
- <el-table-column type="selection" width="38" />
- <el-table-column align="center" label="标题" prop="title" />
- <el-table-column align="center" label="作者" prop="author" />
- <el-table-column align="center" label="操作" width="150">
- <template #default="{ row }">
- <el-button text type="primary" @click="handleEdit(row)">编辑</el-button>
- <el-button text type="danger" @click="handleDelete(row)">删除</el-button>
- </template>
- </el-table-column>
- <template #empty>
- <el-empty class="vab-data-empty" description="暂无数据" />
- </template>
- </el-table>
- <vab-pagination
- :current-page="queryForm.pageNo"
- :page-size="queryForm.pageSize"
- :total="total"
- @current-change="handleCurrentChange"
- @size-change="handleSizeChange"
- />
- <{{ dashCase name }}-edit ref="editRef" @fetch-data="fetchData" />
- </div>
- </template>
- <script lang="ts" setup>
- import { Delete, Plus, Search } from '@element-plus/icons-vue'
- import type { TableInstance } from 'element-plus'
- import { doDelete, getList } from '/@/api/{{ camelCase name }}'
- defineOptions({
- name: '{{ properCase name }}',
- })
- const editRef = ref<any>(null)
- const tableRef = ref<TableInstance>()
- const fold = ref<boolean>(true)
- const list = ref<any>([])
- const listLoading = ref<boolean>(true)
- const total = ref<number>(0)
- const selectRows = ref<any>([])
- const queryForm = reactive<any>({
- pageNo: 1,
- pageSize: 20,
- })
- const fetchData = async () => {
- listLoading.value = true
- const { data } = await getList(queryForm)
- list.value = data.list
- total.value = data.total
- listLoading.value = false
- }
- const handleSizeChange = (value: number) => {
- queryForm.pageNo = 1
- queryForm.pageSize = value
- fetchData()
- }
- const handleCurrentChange = (value: number) => {
- queryForm.pageNo = value
- fetchData()
- }
- const queryData = () => {
- queryForm.pageNo = 1
- fetchData()
- }
- const handleFold = () => {
- fold.value = !fold.value
- }
- const setSelectRows = (value: string) => {
- selectRows.value = value
- }
- const handleAdd = () => {
- editRef.value.showEdit()
- }
- const handleEdit = (row = {}) => {
- editRef.value.showEdit(row)
- }
- const handleDelete = (row: any) => {
- if (row.id) {
- $baseConfirm('您确定要删除当前项吗', null, async () => {
- const { msg }: any = await doDelete({ ids: row.id })
- $baseMessage(msg, 'success', 'hey')
- await fetchData()
- })
- } else {
- if (selectRows.value.length > 0) {
- const ids = selectRows.value.map((item: { id: any }) => item.id).join()
- $baseConfirm('您确定要删除选中项吗', null, async () => {
- const { msg }: any = await doDelete({ ids: ids })
- $baseMessage(msg, 'success', 'hey')
- await fetchData()
- })
- } else {
- $baseMessage('您未选中任何行', 'warning', 'hey')
- }
- }
- }
- onActivated(() => {
- tableRef.value?.doLayout()
- })
- onBeforeMount(() => {
- fetchData()
- })
- </script>
|