| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | <template>  <div class="layout-padding">    <div class="layout-padding-auto layout-padding-view">#if($queryList)      <el-row v-show="showSearch">        <el-form :model="state.queryForm" ref="queryRef" :inline="true" @keyup.enter="getDataList">#foreach($field in $queryList)#if($field.queryFormType == 'select')      <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end" prop="${field.attrName}">            <el-select v-model="state.queryForm.${field.attrName}" placeholder="请选择#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end">       #if($field.fieldDict)              <el-option :label="item.label" :value="item.value" v-for="(item, index) in ${field.fieldDict}" :key="index"></el-option>         #else              <el-option label="请选择">0</el-option>         #end            </el-select>      </el-form-item>#elseif($field.queryFormType == 'date')      <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end" prop="${field.attrName}">      <el-date-picker type="date" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end" v-model="state.queryForm.${field.attrName}"></el-date-picker>      </el-form-item>#elseif($field.queryFormType == 'datetime')      <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end" prop="${field.attrName}" >            <el-date-picker type="datetime" placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end" v-model="state.queryForm.${field.attrName}"></el-date-picker>      </el-form-item>      </el-col>#else      <el-form-item label="#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end" prop="${field.attrName}" >        <el-input placeholder="请输入#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end" v-model="state.queryForm.${field.attrName}" />      </el-form-item>#end#end          <el-form-item>            <el-button icon="search" type="primary" @click="getDataList">              查询            </el-button>            <el-button icon="Refresh" @click="resetQuery">重置</el-button>          </el-form-item>        </el-form>      </el-row>#end      <el-row>        <div class="mb8" style="width: 100%">          <el-button icon="folder-add" type="primary" class="ml10" @click="formDialogRef.openDialog()"            v-auth="'${moduleName}_${functionName}_add'">            新 增          </el-button>          <el-button plain :disabled="multiple" icon="Delete" type="primary"            v-auth="'${moduleName}_${functionName}_del'" @click="handleDelete(selectObjs)">            删除          </el-button>          <right-toolbar v-model:showSearch="showSearch" :export="'${moduleName}_${functionName}_export'"                @exportExcel="exportExcel" class="ml10 mr20" style="float: right;"            @queryTable="getDataList"></right-toolbar>        </div>      </el-row>      <el-table :data="state.dataList" v-loading="state.loading" border         :cell-style="tableStyle.cellStyle" :header-cell-style="tableStyle.headerCellStyle"				@selection-change="selectionChangHandle"        @sort-change="sortChangeHandle">        <el-table-column type="selection" width="40" align="center" />        <el-table-column type="index" label="#" width="40" />      #foreach($field in $gridList)        #if($field.fieldDict)          <el-table-column prop="${field.attrName}" label="#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end" show-overflow-tooltip>      <template #default="scope">                <dict-tag :options="$field.fieldDict" :value="scope.row.${field.attrName}"></dict-tag>            </template>          </el-table-column>        #else          <el-table-column prop="${field.attrName}" label="#if(${field.fieldComment})${field.fieldComment}#else ${field.attrName}#end" #if(${field.gridSort} == '1')sortable="custom"#end show-overflow-tooltip/>        #end     #end        <el-table-column label="操作" width="150">          <template #default="scope">            <el-button icon="edit-pen" text type="primary" v-auth="'${moduleName}_${functionName}_edit'"              @click="formDialogRef.openDialog(scope.row.${pk.attrName})">编辑</el-button>            <el-button icon="delete" text type="primary" v-auth="'${moduleName}_${functionName}_del'" @click="handleDelete([scope.row.${pk.attrName}])">删除</el-button>          </template>        </el-table-column>      </el-table>      <pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" />    </div>    <!-- 编辑、新增  -->    <form-dialog ref="formDialogRef" @refresh="getDataList(false)" />  </div></template><script setup lang="ts" name="system${ClassName}">import { BasicTableProps, useTable } from "/@/hooks/table";import { fetchList, delObjs } from "/@/api/${moduleName}/${functionName}";import { useMessage, useMessageBox } from "/@/hooks/message";import { useDict } from '/@/hooks/dict';// 引入组件const FormDialog = defineAsyncComponent(() => import('./form.vue'));// 定义查询字典#set($fieldDict=[])#foreach($field in $queryList)  #if($field.fieldDict)    #set($void=$fieldDict.add($field.fieldDict))  #end#end#foreach($field in $gridList)  #if($field.fieldDict)    #set($void=$fieldDict.add($field.fieldDict))  #end#end#if($fieldDict)const { $dict.format($fieldDict) } = useDict($dict.quotation($fieldDict))#end// 定义变量内容const formDialogRef = ref()// 搜索变量const queryRef = ref()const showSearch = ref(true)// 多选变量const selectObjs = ref([]) as anyconst multiple = ref(true)const state: BasicTableProps = reactive<BasicTableProps>({  queryForm: {},  pageList: fetchList})//  table hookconst {  getDataList,  currentChangeHandle,  sizeChangeHandle,  sortChangeHandle,  downBlobFile,	tableStyle} = useTable(state)// 清空搜索条件const resetQuery = () => {  // 清空搜索条件  queryRef.value?.resetFields()  // 清空多选  selectObjs.value = []  getDataList()}// 导出excelconst exportExcel = () => {  downBlobFile('/${moduleName}/${functionName}/export', Object.assign(state.queryForm, { ids: selectObjs }), '${functionName}.xlsx')}// 多选事件const selectionChangHandle = (objs: { $pk.attrName: string }[]) => {  selectObjs.value = objs.map(({ $pk.attrName }) => $pk.attrName);  multiple.value = !objs.length;};// 删除操作const handleDelete = async (ids: string[]) => {  try {    await useMessageBox().confirm('此操作将永久删除');  } catch {    return;  }  try {    await delObjs(ids);    getDataList();    useMessage().success('删除成功');  } catch (err: any) {    useMessage().error(err.msg);  }};</script>
 |