| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- <template>
- <div>
- <el-card class="!border-none mb-4" shadow="never">
- <el-form
- class="mb-[-16px]"
- :model="queryParams"
- inline
- >
- {SEARCH_VIEW}
- <el-form-item>
- <el-button type="primary" @click="resetPage">查询</el-button>
- <el-button @click="resetParams">重置</el-button>
- </el-form-item>
- </el-form>
- </el-card>
- <el-card class="!border-none" v-loading="pager.loading" shadow="never">
- <el-button v-perms="['{PERMS_ADD}']" type="primary" @click="handleAdd">
- <template #icon>
- <icon name="el-icon-Plus" />
- </template>
- 新增
- </el-button>
- <el-button
- v-perms="['{PERMS_DELETE}']"
- :disabled="!selectData.length"
- @click="handleDelete(selectData)"
- >
- 删除
- </el-button>
- <div class="mt-4">
- <el-table :data="pager.lists" @selection-change="handleSelectionChange">
- <el-table-column type="selection" width="55" />
- {LISTS_VIEW}
- <el-table-column label="操作" width="120" fixed="right">
- <template #default="{ row }">
- <el-button
- v-perms="['{PERMS_EDIT}']"
- type="primary"
- link
- @click="handleEdit(row)"
- >
- 编辑
- </el-button>
- <el-button
- v-perms="['{PERMS_DELETE}']"
- type="danger"
- link
- @click="handleDelete(row.{PK})"
- >
- 删除
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- </div>
- <div class="flex mt-4 justify-end">
- <pagination v-model="pager" @change="getLists" />
- </div>
- </el-card>
- <edit-popup v-if="showEdit" ref="editRef" :dict-data="dictData" @success="getLists" @close="showEdit = false" />
- </div>
- </template>
- <script lang="ts" setup name="{SETUP_NAME}Lists">
- import { usePaging } from '@/hooks/usePaging'
- import { useDictData } from '@/hooks/useDictOptions'
- import { api{UPPER_CAMEL_NAME}Lists, api{UPPER_CAMEL_NAME}Delete } from '@/api/{API_DIR}'
- import { timeFormat } from '@/utils/util'
- import feedback from '@/utils/feedback'
- import EditPopup from './edit.vue'
- const editRef = shallowRef<InstanceType<typeof EditPopup>>()
- // 是否显示编辑框
- const showEdit = ref(false)
- // 查询条件
- const queryParams = reactive({
- {QUERY_PARAMS}
- })
- // 选中数据
- const selectData = ref<any[]>([])
- // 表格选择后回调事件
- const handleSelectionChange = (val: any[]) => {
- selectData.value = val.map(({ {PK} }) => {PK})
- }
- // 获取字典数据
- const { dictData } = useDictData('{DICT_DATA}')
- // 分页相关
- const { pager, getLists, resetParams, resetPage } = usePaging({
- fetchFun: api{UPPER_CAMEL_NAME}Lists,
- params: queryParams
- })
- // 添加
- const handleAdd = async () => {
- showEdit.value = true
- await nextTick()
- editRef.value?.open('add')
- }
- // 编辑
- const handleEdit = async (data: any) => {
- showEdit.value = true
- await nextTick()
- editRef.value?.open('edit')
- editRef.value?.setFormData(data)
- }
- // 删除
- const handleDelete = async ({PK}: number | any[]) => {
- await feedback.confirm('确定要删除?')
- await api{UPPER_CAMEL_NAME}Delete({ {PK} })
- getLists()
- }
- getLists()
- </script>
|