| | |
| | | export function syncTenantDict() { |
| | | return request({ |
| | | url: '/system/tenant/syncTenantDict', |
| | | method: 'get', |
| | | method: 'get' |
| | | }); |
| | | } |
| | |
| | | |
| | | .el-collapse { |
| | | .collapse__title { |
| | | font-weight: 600; |
| | |
| | | --bpmn-panel-bar-background-color: #f5f7fa; |
| | | |
| | | // ele |
| | | --brder-color: #e8e8e8 |
| | | --brder-color: #e8e8e8; |
| | | } |
| | | html.dark { |
| | | --menuBg: #1d1e1f; |
| | |
| | | --el-color-primary-light-9: #262727; |
| | | } |
| | | // vxe-table 主题 |
| | | --vxe-font-color: #98989E; |
| | | --vxe-primary-color: #2C7ECF; |
| | | --vxe-icon-background-color: #98989E; |
| | | --vxe-table-font-color: #98989E; |
| | | --vxe-font-color: #98989e; |
| | | --vxe-primary-color: #2c7ecf; |
| | | --vxe-icon-background-color: #98989e; |
| | | --vxe-table-font-color: #98989e; |
| | | --vxe-table-resizable-color: #95969a; |
| | | --vxe-table-header-background-color: #28282A; |
| | | --vxe-table-header-background-color: #28282a; |
| | | --vxe-table-body-background-color: #151518; |
| | | --vxe-table-background-color: #4a5663; |
| | | --vxe-table-border-width: 1px; |
| | | --vxe-table-border-color: #37373A; |
| | | --vxe-toolbar-background-color: #37373A; |
| | | --vxe-table-border-color: #37373a; |
| | | --vxe-toolbar-background-color: #37373a; |
| | | |
| | | // 工作流 |
| | | --bpmn-panel-border: #37373A; |
| | | --bpmn-panel-box-shadow: #37373A; |
| | | --bpmn-panel-bar-background-color: #37373A; |
| | | --bpmn-panel-border: #37373a; |
| | | --bpmn-panel-box-shadow: #37373a; |
| | | --bpmn-panel-bar-background-color: #37373a; |
| | | |
| | | // ele |
| | | --brder-color: #37373A |
| | | --brder-color: #37373a; |
| | | } |
| | | |
| | | // base color |
| | |
| | | const pathList = route.path.match(reg).map((item, index) => { |
| | | if (index !== 0) item = item.slice(1); |
| | | return item; |
| | | }) |
| | | }); |
| | | getMatched(pathList, permissionStore.defaultRoutes, matched); |
| | | } else { |
| | | matched = route.matched.filter(item => item.meta && item.meta.title); |
| | | matched = route.matched.filter((item) => item.meta && item.meta.title); |
| | | } |
| | | // 判断是否为首页 |
| | | if (!isDashboard(matched[0])) { |
| | | matched = [{ path: '/index', meta: { title: '首页' } }].concat(matched); |
| | | } |
| | | levelList.value = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false); |
| | | levelList.value = matched.filter((item) => item.meta && item.meta.title && item.meta.breadcrumb !== false); |
| | | }; |
| | | const findPathNum = (str, char = '/') => { |
| | | let index = str.indexOf(char); |
| | |
| | | return num; |
| | | }; |
| | | const getMatched = (pathList, routeList, matched) => { |
| | | let data = routeList.find(item => item.path == pathList[0] || (item.name += '').toLowerCase() == pathList[0]); |
| | | let data = routeList.find((item) => item.path == pathList[0] || (item.name += '').toLowerCase() == pathList[0]); |
| | | if (data) { |
| | | matched.push(data); |
| | | if (data.children && pathList.length) { |
| | |
| | | <el-card shadow="hover"> |
| | | <template #header> |
| | | <el-row :gutter="10"> |
| | | <right-toolbar v-model:showSearch="showSearch" :search="true" @query-table="handleQuery"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" :search="true" @query-table="handleQuery"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | import { dynamicClear, dynamicTenant } from '@/api/system/tenant'; |
| | | import { TenantVO } from '@/api/types'; |
| | | import notice from './notice/index.vue'; |
| | | import router from "@/router"; |
| | | import router from '@/router'; |
| | | |
| | | const appStore = useAppStore(); |
| | | const userStore = useUserStore(); |
| | |
| | | query: { |
| | | redirect: encodeURIComponent(router.currentRoute.value.fullPath || '/') |
| | | } |
| | | }) |
| | | }); |
| | | }); |
| | | }; |
| | | |
| | |
| | | import useAppStore from '@/store/modules/app'; |
| | | import useSettingsStore from '@/store/modules/settings'; |
| | | import { initWebSocket } from '@/utils/websocket'; |
| | | import { initSSE } from "@/utils/sse"; |
| | | import { initSSE } from '@/utils/sse'; |
| | | |
| | | const settingsStore = useSettingsStore(); |
| | | const theme = computed(() => settingsStore.theme); |
| | |
| | | import router from '@/router'; |
| | | import {RouteLocationMatched, RouteLocationNormalized, RouteLocationRaw} from 'vue-router'; |
| | | import { RouteLocationMatched, RouteLocationNormalized, RouteLocationRaw } from 'vue-router'; |
| | | import useTagsViewStore from '@/store/modules/tagsView'; |
| | | |
| | | export default { |
| | |
| | | const delIframeView = (view: RouteLocationNormalized): Promise<RouteLocationNormalized[]> => { |
| | | return new Promise((resolve) => { |
| | | iframeViews.value = iframeViews.value.filter((item: RouteLocationNormalized) => item.path !== view.path); |
| | | resolve([...iframeViews.value as RouteLocationNormalized[]]); |
| | | resolve([...(iframeViews.value as RouteLocationNormalized[])]); |
| | | }); |
| | | }; |
| | | const addVisitedView = (view: RouteLocationNormalized): void => { |
| | |
| | | delCachedView(view); |
| | | } |
| | | resolve({ |
| | | visitedViews: [...visitedViews.value as RouteLocationNormalized[]], |
| | | visitedViews: [...(visitedViews.value as RouteLocationNormalized[])], |
| | | cachedViews: [...cachedViews.value] |
| | | }); |
| | | }); |
| | |
| | | break; |
| | | } |
| | | } |
| | | resolve([...visitedViews.value as RouteLocationNormalized[]]); |
| | | resolve([...(visitedViews.value as RouteLocationNormalized[])]); |
| | | }); |
| | | }; |
| | | const delCachedView = (view?: RouteLocationNormalized): Promise<string[]> => { |
| | |
| | | delOthersVisitedViews(view); |
| | | delOthersCachedViews(view); |
| | | resolve({ |
| | | visitedViews: [...visitedViews.value as RouteLocationNormalized[]], |
| | | visitedViews: [...(visitedViews.value as RouteLocationNormalized[])], |
| | | cachedViews: [...cachedViews.value] |
| | | }); |
| | | }); |
| | |
| | | visitedViews.value = visitedViews.value.filter((v: RouteLocationNormalized) => { |
| | | return v.meta?.affix || v.path === view.path; |
| | | }); |
| | | resolve([...visitedViews.value as RouteLocationNormalized[]]); |
| | | resolve([...(visitedViews.value as RouteLocationNormalized[])]); |
| | | }); |
| | | }; |
| | | const delOthersCachedViews = (view: RouteLocationNormalized): Promise<string[]> => { |
| | |
| | | delAllVisitedViews(); |
| | | delAllCachedViews(); |
| | | resolve({ |
| | | visitedViews: [...visitedViews.value as RouteLocationNormalized[]], |
| | | visitedViews: [...(visitedViews.value as RouteLocationNormalized[])], |
| | | cachedViews: [...cachedViews.value] |
| | | }); |
| | | }); |
| | |
| | | const delAllVisitedViews = (): Promise<RouteLocationNormalized[]> => { |
| | | return new Promise((resolve) => { |
| | | visitedViews.value = visitedViews.value.filter((tag: RouteLocationNormalized) => tag.meta?.affix); |
| | | resolve([...visitedViews.value as RouteLocationNormalized[]]); |
| | | resolve([...(visitedViews.value as RouteLocationNormalized[])]); |
| | | }); |
| | | }; |
| | | |
| | |
| | | } |
| | | return false; |
| | | }); |
| | | resolve([...visitedViews.value as RouteLocationNormalized[]]); |
| | | resolve([...(visitedViews.value as RouteLocationNormalized[])]); |
| | | }); |
| | | }; |
| | | const delLeftTags = (view: RouteLocationNormalized): Promise<RouteLocationNormalized[]> => { |
| | |
| | | } |
| | | return false; |
| | | }); |
| | | resolve([...visitedViews.value as RouteLocationNormalized[]]); |
| | | resolve([...(visitedViews.value as RouteLocationNormalized[])]); |
| | | }); |
| | | }; |
| | | |
| | |
| | | import { getLanguage } from '@/lang'; |
| | | import { encryptBase64, encryptWithAes, generateAesKey, decryptWithAes, decryptBase64 } from '@/utils/crypto'; |
| | | import { encrypt, decrypt } from '@/utils/jsencrypt'; |
| | | import router from "@/router"; |
| | | import router from '@/router'; |
| | | |
| | | const encryptHeader = 'encrypt-key'; |
| | | let downloadLoadingInstance: LoadingInstance; |
| | |
| | | } |
| | | |
| | | url = url + '?Authorization=Bearer ' + getToken() + '&clientid=' + import.meta.env.VITE_APP_CLIENT_ID; |
| | | const { |
| | | data, |
| | | error |
| | | } = useEventSource(url, [], { |
| | | const { data, error } = useEventSource(url, [], { |
| | | autoReconnect: { |
| | | retries: 10, |
| | | delay: 3000, |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['demo:demo:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | <el-table |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['monitor:logininfor:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['monitor:operlog:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['system:client:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['system:config:remove']" type="danger" plain icon="Refresh" @click="handleRefreshCache">刷新缓存</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="warning" plain icon="Close" @click="handleClose">关闭</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['system:dict:remove']" type="danger" plain icon="Refresh" @click="handleRefreshCache">刷新缓存</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | proxy?.$modal.msgSuccess('刷新成功'); |
| | | useDictStore().cleanDict(); |
| | | }; |
| | | |
| | | |
| | | onMounted(() => { |
| | | getList(); |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | 删除 |
| | | </el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | 删除 |
| | | </el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['system:ossConfig:list']" type="info" plain icon="Operation" @click="handleOssConfig">配置管理</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['system:post:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange"> |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="warning" plain icon="Close" @click="handleClose">关闭</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" :search="true" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" :search="true" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['system:role:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-if="userId === 1" type="success" plain icon="Refresh" @click="handleSyncTenantDict">同步租户字典</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | </template> |
| | | |
| | | <script setup name="Tenant" lang="ts"> |
| | | import { listTenant, getTenant, delTenant, addTenant, updateTenant, changeTenantStatus, syncTenantPackage, syncTenantDict } from '@/api/system/tenant'; |
| | | import { |
| | | listTenant, |
| | | getTenant, |
| | | delTenant, |
| | | addTenant, |
| | | updateTenant, |
| | | changeTenantStatus, |
| | | syncTenantPackage, |
| | | syncTenantDict |
| | | } from '@/api/system/tenant'; |
| | | import { selectTenantPackage } from '@/api/system/tenantPackage'; |
| | | import useUserStore from '@/store/modules/user'; |
| | | import { TenantForm, TenantQuery, TenantVO } from '@/api/system/tenant/types'; |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['system:tenantPackage:export']" type="warning" plain icon="Download" @click="handleExport">导出 </el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | |
| | | /** 单击选中行数据 */ |
| | | const clickRow = (row: RoleVO) => { |
| | | row.flag = !row.flag |
| | | row.flag = !row.flag; |
| | | tableRef.value?.toggleRowSelection(row, row.flag); |
| | | }; |
| | | /** 多选框选中数据 */ |
| | |
| | | </template> |
| | | </el-dropdown> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" :columns="columns" :search="true" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | 删除 |
| | | </el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">展开/折叠</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | <el-table |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['workflow:formManage:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button v-hasPermi="['workflow:leave:export']" type="warning" plain icon="Download" @click="handleExport">导出</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | taskVariables.value = { |
| | | entity: data, |
| | | leaveDays: data.leaveDays, |
| | | userList: ["1", "3"], |
| | | userList2: ["1", "3"] |
| | | userList: ['1', '3'], |
| | | userList2: ['1', '3'] |
| | | }; |
| | | submitFormData.value.variables = taskVariables.value; |
| | | const resp = await startWorkFlow(submitFormData.value); |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="primary" plain :disabled="multiple" icon="Download" @click="clickExportZip()">导出</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="primary" icon="UploadFilled" @click="uploadDialog.visible = true">部署流程文件</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete">删除</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-col :span="1.5"> |
| | | <el-button type="primary" plain icon="Edit" :disabled="multiple" @click="handleUpdate">修改办理人</el-button> |
| | | </el-col> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-card shadow="hover"> |
| | | <template #header> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-card shadow="hover"> |
| | | <template #header> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-card shadow="hover"> |
| | | <template #header> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | <el-card shadow="hover"> |
| | | <template #header> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <right-toolbar v-model:showSearch="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | <right-toolbar v-model:show-search="showSearch" @query-table="handleQuery"></right-toolbar> |
| | | </el-row> |
| | | </template> |
| | | |
| | |
| | | "compilerOptions": { |
| | | "target": "esnext", |
| | | "module": "esnext", |
| | | // "useDefineForClassFields": true, |
| | | // "useDefineForClassFields": true, |
| | | "moduleResolution": "bundler", |
| | | "strict": true, |
| | | "jsx": "preserve", |