| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | <template>  <ContentWrap>    <!-- 列表 -->    <XTable @register="registerTable">      <template #toolbar_buttons>        <!-- 操作:新增 -->        <XButton          type="primary"          preIcon="ep:zoom-in"          :title="t('action.add')"          v-hasPermi="['pay:order:create']"          @click="handleCreate()"        />        <!-- 操作:导出 -->        <XButton          type="warning"          preIcon="ep:download"          :title="t('action.export')"          v-hasPermi="['pay:order:export']"          @click="exportList('订单数据.xls')"        />      </template>      <template #actionbtns_default="{ row }">        <!-- 操作:详情 -->        <XTextButton          preIcon="ep:view"          :title="t('action.detail')"          v-hasPermi="['pay:order:query']"          @click="handleDetail(row.id)"        />      </template>    </XTable>  </ContentWrap>  <XModal v-model="dialogVisible" :title="dialogTitle">    <!-- 对话框(详情) -->    <Descriptions :schema="allSchemas.detailSchema" :data="detailData" />    <!-- 操作按钮 -->    <template #footer>      <!-- 按钮:关闭 -->      <XButton :loading="actionLoading" :title="t('dialog.close')" @click="dialogVisible = false" />    </template>  </XModal></template><script setup lang="ts" name="PayOrder">import { allSchemas } from './order.data'import * as OrderApi from '@/api/pay/order'const { t } = useI18n() // 国际化// 列表相关的变量const [registerTable, { exportList }] = useXTable({  allSchemas: allSchemas,  getListApi: OrderApi.getOrderPage,  exportListApi: OrderApi.exportOrder})// ========== CRUD 相关 ==========const actionLoading = ref(false) // 遮罩层const actionType = ref('') // 操作按钮的类型const dialogVisible = ref(false) // 是否显示弹出层const dialogTitle = ref('edit') // 弹出层标题const detailData = ref() // 详情 Ref// 设置标题const setDialogTile = (type: string) => {  dialogTitle.value = t('action.' + type)  actionType.value = type  dialogVisible.value = true}// 新增操作const handleCreate = () => {  setDialogTile('create')}// 详情操作const handleDetail = async (rowId: number) => {  setDialogTile('detail')  const res = await OrderApi.getOrder(rowId)  detailData.value = res}</script>
 |