123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- <template>
- <div class="index-lists">
- <el-card class="!border-none" shadow="never">
- <el-form ref="formRef" class="mb-[-16px]" :model="queryParams" :inline="true">
- #foreach ($column in $columns)
- #if($column.isQuery==1)
- #if($column.htmlType=="datetime")
- <el-form-item label="${column.columnComment}" prop="${column.javaField}">
- <daterange-picker
- v-model:startTime="queryParams.createTimeStart"
- v-model:endTime="queryParams.createTimeEnd"
- />
- </el-form-item>
- #elseif($column.htmlType=="select" || $column.htmlType == "radio")
- <el-form-item label="${column.columnComment}" prop="${column.javaField}">
- <el-select
- v-model="queryParams.${column.javaField}"
- class="w-56"
- clearable
- >
- #if($column.dictType=="")
- <el-option label="请选择字典生成" value="" />
- #else
- <el-option label="全部" value="" />
- <el-option
- v-for="(item, index) in dictData.${column.dictType}"
- :key="index"
- :label="item.name"
- :value="item.value"
- />
- #end
- </el-select>
- </el-form-item>
- #elseif($column.htmlType=="input")
- <el-form-item label="${column.columnComment}" prop="${column.javaField}">
- <el-input class="w-56" v-model="queryParams.${column.javaField}" />
- </el-form-item>
- #end
- #end
- #end
- <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 mt-4" shadow="never">
- <div>
- <el-button v-perms="['${moduleName}:add']" type="primary" @click="handleAdd()">
- <template #icon>
- <icon name="el-icon-Plus" />
- </template>
- 新增
- </el-button>
- </div>
- <el-table
- class="mt-4"
- size="large"
- v-loading="pager.loading"
- :data="pager.lists"
- >
- #foreach ($column in $columns)
- #if($column.isList)
- #if($column.dictType!="" && ($column.htmlType=="select" || $column.htmlType=="radio" || $column.htmlType=="checkbox"))
- <el-table-column label="${column.columnComment}" prop="${column.javaField}" min-width="100">
- <template #default="{ row }">
- <dict-value :options="dictData.${column.dictType}" :value="row.${column.javaField}" />
- </template>
- </el-table-column>
- #elseif($column.htmlType=="imageUpload")
- <el-table-column label="${column.columnComment}" prop="${column.javaField}" min-width="100">
- <template #default="{ row }">
- <image-contain
- :width="40"
- :height="40"
- :src="row.${column.javaField}"
- :preview-src-list="[row.${column.javaField}]"
- preview-teleported
- hide-on-click-modal
- />
- </template>
- </el-table-column>
- #else
- <el-table-column label="${column.columnComment}" prop="${column.javaField}" min-width="100" />
- #end
- #end
- #end
- <el-table-column label="操作" width="120" fixed="right">
- <template #default="{ row }">
- <el-button
- v-perms="['${moduleName}:edit']"
- type="primary"
- link
- @click="handleEdit(row)"
- >
- 编辑
- </el-button>
- <el-button
- v-perms="['${moduleName}:del']"
- type="danger"
- link
- @click="handleDelete(row.${primaryKey})"
- >
- 删除
- </el-button>
- </template>
- </el-table-column>
- </el-table>
- <div class="flex justify-end mt-4">
- <pagination v-model="pager" @change="getLists" />
- </div>
- </el-card>
- <edit-popup
- v-if="showEdit"
- ref="editRef"
- #if($dictFields.size()>=1)
- :dict-data="dictData"
- #end
- @success="getLists"
- @close="showEdit = false"
- />
- </div>
- </template>
- <script lang="ts" setup>
- import { ${moduleName}Delete, ${moduleName}Lists } from '@/api/${moduleName}'
- #if($dictFields.size()>=1)
- import { useDictData } from '@/hooks/useDictOptions'
- #end
- import { usePaging } from '@/hooks/usePaging'
- import feedback from '@/utils/feedback'
- import EditPopup from './edit.vue'
- const editRef = shallowRef<InstanceType<typeof EditPopup>>()
- const showEdit = ref(false)
- const queryParams = reactive({
- #foreach ($column in $columns)
- #if($column.isQuery)
- #if($column.htmlType=="datetime")
- ${column.javaField}Start: '',
- ${column.javaField}End: '',
- #else
- ${column.javaField}: '',
- #end
- #end
- #end
- })
- const { pager, getLists, resetPage, resetParams } = usePaging({
- fetchFun: ${moduleName}Lists,
- params: queryParams
- })
- #if($dictFields.size()>=1)
- #set($dictSize = $dictFields.size() - 1)
- const { dictData } = useDictData<{
- #foreach ($dict in $dictFields)
- ${dict}: any[]
- #end
- }>([#foreach ($dict in $dictFields)'${dict}'#if($dictFields[$dictSize] != ${dict}),#end#end])
- #end
- 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?.getDetail(data)
- }
- const handleDelete = async (${primaryKey}: number) => {
- await feedback.confirm('确定要删除?')
- await ${moduleName}Delete({ ${primaryKey} })
- feedback.msgSuccess('删除成功')
- getLists()
- }
- getLists()
- </script>
|