giime 0.9.3-beta.1 → 0.9.4-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +116 -116
- package/es/components/src/base/configProvider/ConfigProvider.vue.d.ts +1 -1
- package/es/components/src/base/configProvider/index.d.ts +3 -3
- package/es/components/src/base/image/Image.vue.d.ts +1 -1
- package/es/components/src/base/image/index.d.ts +2 -2
- package/es/components/src/base/imageViewer/ImageViewer.vue.d.ts +1 -1
- package/es/components/src/base/imageViewer/index.d.ts +1 -1
- package/es/components/src/base/progress/Progress.vue.d.ts +1 -1
- package/es/components/src/base/progress/index.d.ts +3 -3
- package/es/components/src/base/space/Space.vue.d.ts +2 -2
- package/es/components/src/base/space/index.d.ts +6 -6
- package/es/components/src/base/step/Step.vue.d.ts +1 -1
- package/es/components/src/base/step/index.d.ts +3 -3
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs +6 -3
- package/es/components/src/business/loginDialog/LoginDialog.vue2.mjs.map +1 -1
- package/es/components/src/composite/tableCustom/TableColumnVNodeRenderer.mjs +11 -9
- package/es/components/src/composite/tableCustom/TableColumnVNodeRenderer.mjs.map +1 -1
- package/es/components/src/composite/tableCustom/TableCustom.vue.mjs +1 -1
- package/es/components/src/composite/tableCustom/TableCustom.vue2.mjs +1 -1
- package/es/components/src/composite/tableCustom/TableCustom.vue2.mjs.map +1 -1
- package/es/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.mjs +7 -1
- package/es/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.mjs.map +1 -1
- package/es/giime/index.mjs +1 -0
- package/es/giime/index.mjs.map +1 -1
- package/es/giime/version.d.ts +1 -1
- package/es/giime/version.mjs +1 -1
- package/es/giime/version.mjs.map +1 -1
- package/es/hooks/store/common/useLangList/index.d.ts +1 -1
- package/es/hooks/store/useLineList/index.d.ts +1 -1
- package/es/index.css +116 -116
- package/es/utils/index.d.ts +1 -0
- package/es/utils/index.mjs +1 -0
- package/es/utils/index.mjs.map +1 -1
- package/es/utils/src/clarity/index.d.ts +67 -0
- package/es/utils/src/clarity/index.mjs +93 -0
- package/es/utils/src/clarity/index.mjs.map +1 -0
- package/es/utils/src/http/devProxy.mjs +1 -3
- package/es/utils/src/http/devProxy.mjs.map +1 -1
- package/lib/components/src/base/configProvider/ConfigProvider.vue.d.ts +1 -1
- package/lib/components/src/base/configProvider/index.d.ts +3 -3
- package/lib/components/src/base/image/Image.vue.d.ts +1 -1
- package/lib/components/src/base/image/index.d.ts +2 -2
- package/lib/components/src/base/imageViewer/ImageViewer.vue.d.ts +1 -1
- package/lib/components/src/base/imageViewer/index.d.ts +1 -1
- package/lib/components/src/base/progress/Progress.vue.d.ts +1 -1
- package/lib/components/src/base/progress/index.d.ts +3 -3
- package/lib/components/src/base/space/Space.vue.d.ts +2 -2
- package/lib/components/src/base/space/index.d.ts +6 -6
- package/lib/components/src/base/step/Step.vue.d.ts +1 -1
- package/lib/components/src/base/step/index.d.ts +3 -3
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js +6 -3
- package/lib/components/src/business/loginDialog/LoginDialog.vue2.js.map +1 -1
- package/lib/components/src/composite/tableCustom/TableColumnVNodeRenderer.js +11 -9
- package/lib/components/src/composite/tableCustom/TableColumnVNodeRenderer.js.map +1 -1
- package/lib/components/src/composite/tableCustom/TableCustom.vue.js +1 -1
- package/lib/components/src/composite/tableCustom/TableCustom.vue2.js +1 -1
- package/lib/components/src/composite/tableCustom/TableCustom.vue2.js.map +1 -1
- package/lib/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.js +7 -1
- package/lib/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.js.map +1 -1
- package/lib/giime/index.js +375 -373
- package/lib/giime/index.js.map +1 -1
- package/lib/giime/version.d.ts +1 -1
- package/lib/giime/version.js +1 -1
- package/lib/giime/version.js.map +1 -1
- package/lib/hooks/store/common/useLangList/index.d.ts +1 -1
- package/lib/hooks/store/useLineList/index.d.ts +1 -1
- package/lib/index.css +116 -116
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +2 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/src/clarity/index.d.ts +67 -0
- package/lib/utils/src/clarity/index.js +95 -0
- package/lib/utils/src/clarity/index.js.map +1 -0
- package/lib/utils/src/http/devProxy.js +1 -3
- package/lib/utils/src/http/devProxy.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginDialog.vue2.mjs","sources":["../../../../../../../packages/components/src/business/loginDialog/LoginDialog.vue"],"sourcesContent":["<script lang=\"ts\">\nconst loginEnvKey = 'VITE_GIIME_LOGIN_URL'\n</script>\n<template>\n <div v-if=\"isSSRShowDialog\">\n <el-dialog v-model=\"loginStore.showLogin\" width=\"80%\" append-to-body>\n <!-- 正常登录状态:显示iframe -->\n <iframe v-if=\"loginStore.showLogin && !loginStore.isLoginBlocked\" class=\"gm-h-[600px] gm-w-full\" :src=\"loginUrl\" />\n <!-- 异常状态:显示错误提示 -->\n <div v-else-if=\"loginStore.isLoginBlocked\" class=\"gm-py-10\">\n <el-result icon=\"warning\" title=\"登录异常\" sub-title=\"短时间内多次登录失败,请稍后重试\">\n <template #extra>\n <el-button type=\"primary\" @click=\"handleRetryLogin\">重新登录</el-button>\n <el-button type=\"warning\" @click=\"handleClearCache\">清空缓存</el-button>\n <el-button @click=\"loginStore.showLogin = false\">关闭</el-button>\n </template>\n </el-result>\n </div>\n </el-dialog>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\n// import { isObject } from '@vue/shared';\nimport { ElButton, ElDialog, ElMessage, ElResult } from 'element-plus';\nimport Cookies from 'js-cookie';\n// import router from 'vue-router';\nimport { useLoginStore } from '@giime/hooks';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { isDingTalk, isMobile, isString } from '@giime/utils';\nimport { getDomain, urlJoin } from '@giime/utils/src/http/url';\nimport { getTenantType, isGiikin } from '@giime/utils/src/tenant';\nimport { envConfigs } from '@giime/utils/src/http/createModes';\nimport { loginDialogProps } from './loginDialog';\nimport { resetEnvMode } from '@giime/constants/key';\n\nconst props = defineProps(loginDialogProps);\nconst router = useGlobalConfig('router');\n\n// const router = useRouter();\nconst route = computed(() => (router.value ? router.value.currentRoute.value : undefined));\nconst loginStore = useLoginStore();\nconst loginUrl = ref('');\n\n\nconst importMetaEnv = useGlobalConfig('env');\nconst isSSRShowDialog = ref(importMetaEnv.value.SSR === false);\n\n/**\n * 获取登录URL\n * 优先级:环境变量 > resetEnvMode > 租户类型判断 > 默认值\n */\nlet originLoginUrl = '';\n// 1. 优先使用环境变量配置的 loginUrl\nif (isString(importMetaEnv.value[loginEnvKey])) {\n originLoginUrl = importMetaEnv.value[loginEnvKey];\n} else {\n // 2. 根据租户类型获取登录路径\n const loginPath = isGiikin() ? '/guard/sso/public/auth' : '/fe/basic/login';\n\n // 3. 根据 resetEnvMode 获取环境配置并拼接完整URL\n const resetMode = importMetaEnv.value[resetEnvMode];\n const hostname = window.location.hostname;\n // 获取域名对应的环境配置\n const findEnvConfig = Object.values(envConfigs).find(config => config.domain === hostname);\n if (resetMode && envConfigs[resetMode]) {\n originLoginUrl = urlJoin(envConfigs[resetMode].url, loginPath);\n } else if (findEnvConfig) {\n // 4. 根据域名获取环境配置并拼接完整URL\n originLoginUrl = urlJoin(findEnvConfig.url, loginPath);\n } else {\n // 5. 默认使用开发环境登录路径\n originLoginUrl = urlJoin(envConfigs.develop.url, loginPath);\n }\n}\nconst handleLogin = () => {\n const protocol = window.location.protocol;\n const host = window.location.host;\n const myPath = window.location.pathname;\n loginUrl.value = `${originLoginUrl}?_system=${props.system}`;\n if (route.value && props.needScanningRouteNames.includes(route.value?.name?.toString() ?? '')) {\n loginUrl.value += '&is_dashboard=1';\n }\n\n // 公司id\n const guard_company = Cookies.get('guard_company');\n if (guard_company) {\n loginUrl.value += `&companyId=${guard_company}`;\n }\n\n loginUrl.value += `&${props.redirectUrlField}=${protocol}//${host}${myPath}`;\n\n // eslint-disable-next-line no-console\n console.log(loginUrl.value);\n if (isMobile() || isDingTalk()) {\n window.location.href = loginUrl.value;\n }\n};\n\n/** 重试登录:重置循环保护计数器并重新加载登录页 */\nconst handleRetryLogin = () => {\n loginStore.resetLoginBlock();\n handleLogin();\n};\n\n/** 清空缓存:清除 Cookies、localStorage 和 sessionStorage */\nconst handleClearCache = () => {\n // 清除所有 Cookies\n const cookies = document.cookie.split(';');\n const curDomain = getDomain();\n cookies.forEach(cookie => {\n const name = cookie.split('=')[0].trim();\n if (name) {\n // 尝试多种方式删除 cookie\n Cookies.remove(name);\n Cookies.remove(name, { domain: curDomain });\n Cookies.remove(name, { domain: `.${curDomain}` });\n }\n });\n\n // 提示操作成功\n ElMessage.success('清除cookie缓存成功');\n};\nwatch(\n () => loginStore.showLogin,\n value => {\n if (value) {\n handleLogin();\n }\n },\n);\n// 超过5分钟没扫码 会不能扫码 定时没登录的话3分钟刷新次\nconst reloadTimer = ref<number>();\nif (route.value) {\n watch(route, (newValue, oldValue) => {\n if (!oldValue || !newValue) {\n return;\n }\n if (oldValue.name && props.needScanningRouteNames.includes(oldValue.name.toString())) {\n window.clearInterval(reloadTimer.value);\n }\n if (newValue.name && props.needScanningRouteNames.includes(newValue.name.toString())) {\n reloadTimer.value = window.setInterval(\n () => {\n if (!loginStore.showLogin) {\n return;\n }\n // 登录超时后 3分钟刷新次页面\n window.location.reload();\n },\n 3 * 60 * 1000,\n );\n }\n });\n}\n\ninterface GiikinLogged {\n type: string;\n data: {\n token: string;\n userId: string;\n /**token 或者 loginSuccess 控制当前登录是否成功*/\n loginSuccess?: boolean;\n /**禁止写入cookie */\n disabledWrite?: boolean;\n disabledClose?: boolean;\n tokens: { key: string; value: string }[];\n };\n cookies?: string[];\n}\n\nonMounted(() => {\n isSSRShowDialog.value = true;\n if (loginStore.showLogin) {\n handleLogin();\n }\n // iframe事件监听\n window.addEventListener('message', async e => {\n // 刷新登陆状态\n if (e.data.type == 'giikin-Logged') {\n const data: GiikinLogged = e.data;\n // eslint-disable-next-line no-console\n console.log(e.data);\n const token = Cookies.get('token');\n // const isProduction = importMetaEnv.value.MODE === 'production' || importMetaEnv.value.MODE === 'giiktok.production';\n const isProduction = importMetaEnv.value.MODE.includes('production');\n if (\n // 测试环境 但是需要登陆的情况\n (!isProduction && data?.data?.token) ||\n // 正式环境 登录成功 但是服务器token设置失败\n (isProduction && !token && data?.data?.token)\n ) {\n // loginStore.userToken = data.data.token;\n loginStore.userId = data.data.userId;\n const now = new Date();\n let time = now.getTime();\n time += 8 * 60 * 60 * 1000; // 8 小时之后的时间(单位:毫秒)\n now.setTime(time);\n const curDomain = getDomain();\n // 不禁用 则写入cookie\n if (!data.data.disabledWrite) {\n // cookieMap\n if (data.cookies && Array.isArray(data.cookies)) {\n data.cookies.forEach((cookie: string) => {\n document.cookie = cookie;\n });\n }\n // 可能出现测试环境调正式,需要写入token\n Cookies.set('token', data.data.token, { expires: now, domain: isProduction ? curDomain : undefined });\n // 本地开发时 写入token\n if (importMetaEnv.value.DEV && data.data.tokens) {\n data.data.tokens.forEach((token: { key: string; value: string }) => {\n Cookies.set(token.key, token.value, { expires: now, domain: curDomain });\n });\n }\n\n if (!Cookies.get('sso_user_id') && data.data.userId) {\n Cookies.set('sso_user_id', data.data.userId, {\n expires: now,\n domain: isProduction ? curDomain : undefined,\n });\n }\n }\n }\n if (!data.data.disabledClose) {\n // 触发登录成功监听\n if (data?.data?.token || data?.data?.loginSuccess) {\n await loginStore.triggerLoginResult(true);\n }\n // ElMessage.success('登录成功,请关闭弹窗');\n loginStore.showLogin = false;\n if (route.value && props.needRealodRouteNames.includes(route.value.name?.toString() ?? '')) {\n window.location.reload();\n }\n }\n }\n });\n});\nonUnmounted(() => {\n window.clearInterval(reloadTimer.value);\n});\n</script>\n"],"names":["token"],"mappings":";;;;;;;;;;;;;;;;;AACA,MAAM,WAAA,GAAc,sBAAA;;;;;AAmCpB,IAAA,MAAM,KAAA,GAAQ,OAAA;AACd,IAAA,MAAM,MAAA,GAAS,gBAAgB,QAAQ,CAAA;AAGvC,IAAA,MAAM,KAAA,GAAQ,SAAS,MAAO,MAAA,CAAO,QAAQ,MAAA,CAAO,KAAA,CAAM,YAAA,CAAa,KAAA,GAAQ,KAAA,CAAU,CAAA;AACzF,IAAA,MAAM,aAAa,aAAA,EAAc;AACjC,IAAA,MAAM,QAAA,GAAW,IAAI,EAAE,CAAA;AAGvB,IAAA,MAAM,aAAA,GAAgB,gBAAgB,KAAK,CAAA;AAC3C,IAAA,MAAM,eAAA,GAAkB,GAAA,CAAI,aAAA,CAAc,KAAA,CAAM,QAAQ,KAAK,CAAA;AAM7D,IAAA,IAAI,cAAA,GAAiB,EAAA;AAErB,IAAA,IAAI,QAAA,CAAS,aAAA,CAAc,KAAA,CAAM,WAAW,CAAC,CAAA,EAAG;AAC9C,MAAA,cAAA,GAAiB,aAAA,CAAc,MAAM,WAAW,CAAA;AAAA,IAClD,CAAA,MAAO;AAEL,MAAA,MAAM,SAAA,GAAY,QAAA,EAAS,GAAI,wBAAA,GAA2B,iBAAA;AAG1D,MAAA,MAAM,SAAA,GAAY,aAAA,CAAc,KAAA,CAAM,YAAY,CAAA;AAClD,MAAA,MAAM,QAAA,GAAW,OAAO,QAAA,CAAS,QAAA;AAEjC,MAAA,MAAM,aAAA,GAAgB,OAAO,MAAA,CAAO,UAAU,EAAE,IAAA,CAAK,CAAA,MAAA,KAAU,MAAA,CAAO,MAAA,KAAW,QAAQ,CAAA;AACzF,MAAA,IAAI,SAAA,IAAa,UAAA,CAAW,SAAS,CAAA,EAAG;AACtC,QAAA,cAAA,GAAiB,OAAA,CAAQ,UAAA,CAAW,SAAS,CAAA,CAAE,KAAK,SAAS,CAAA;AAAA,MAC/D,WAAW,aAAA,EAAe;AAExB,QAAA,cAAA,GAAiB,OAAA,CAAQ,aAAA,CAAc,GAAA,EAAK,SAAS,CAAA;AAAA,MACvD,CAAA,MAAO;AAEL,QAAA,cAAA,GAAiB,OAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,GAAA,EAAK,SAAS,CAAA;AAAA,MAC5D;AAAA,IACF;AACA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,MAAM,QAAA,GAAW,OAAO,QAAA,CAAS,QAAA;AACjC,MAAA,MAAM,IAAA,GAAO,OAAO,QAAA,CAAS,IAAA;AAC7B,MAAA,MAAM,MAAA,GAAS,OAAO,QAAA,CAAS,QAAA;AAC/B,MAAA,QAAA,CAAS,KAAA,GAAQ,CAAA,EAAG,cAAc,CAAA,SAAA,EAAY,MAAM,MAAM,CAAA,CAAA;AAC1D,MAAA,IAAI,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,sBAAA,CAAuB,QAAA,CAAS,KAAA,CAAM,KAAA,EAAO,IAAA,EAAM,QAAA,EAAS,IAAK,EAAE,CAAA,EAAG;AAC7F,QAAA,QAAA,CAAS,KAAA,IAAS,iBAAA;AAAA,MACpB;AAGA,MAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,GAAA,CAAI,eAAe,CAAA;AACjD,MAAA,IAAI,aAAA,EAAe;AACjB,QAAA,QAAA,CAAS,KAAA,IAAS,cAAc,aAAa,CAAA,CAAA;AAAA,MAC/C;AAEA,MAAA,QAAA,CAAS,KAAA,IAAS,IAAI,KAAA,CAAM,gBAAgB,IAAI,QAAQ,CAAA,EAAA,EAAK,IAAI,CAAA,EAAG,MAAM,CAAA,CAAA;AAG1E,MAAA,OAAA,CAAQ,GAAA,CAAI,SAAS,KAAK,CAAA;AAC1B,MAAA,IAAI,QAAA,EAAS,IAAK,UAAA,EAAW,EAAG;AAC9B,QAAA,MAAA,CAAO,QAAA,CAAS,OAAO,QAAA,CAAS,KAAA;AAAA,MAClC;AAAA,IACF,CAAA;AAGA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,UAAA,CAAW,eAAA,EAAgB;AAC3B,MAAA,WAAA,EAAY;AAAA,IACd,CAAA;AAGA,IAAA,MAAM,mBAAmB,MAAM;AAE7B,MAAA,MAAM,OAAA,GAAU,QAAA,CAAS,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA;AACzC,MAAA,MAAM,YAAY,SAAA,EAAU;AAC5B,MAAA,OAAA,CAAQ,QAAQ,CAAA,MAAA,KAAU;AACxB,QAAA,MAAM,OAAO,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,EAAE,IAAA,EAAK;AACvC,QAAA,IAAI,IAAA,EAAM;AAER,UAAA,OAAA,CAAQ,OAAO,IAAI,CAAA;AACnB,UAAA,OAAA,CAAQ,MAAA,CAAO,IAAA,EAAM,EAAE,MAAA,EAAQ,WAAW,CAAA;AAC1C,UAAA,OAAA,CAAQ,OAAO,IAAA,EAAM,EAAE,QAAQ,CAAA,CAAA,EAAI,SAAS,IAAI,CAAA;AAAA,QAClD;AAAA,MACF,CAAC,CAAA;AAGD,MAAA,SAAA,CAAU,QAAQ,4CAAc,CAAA;AAAA,IAClC,CAAA;AACA,IAAA,KAAA;AAAA,MACE,MAAM,UAAA,CAAW,SAAA;AAAA,MACjB,CAAA,KAAA,KAAS;AACP,QAAA,IAAI,KAAA,EAAO;AACT,UAAA,WAAA,EAAY;AAAA,QACd;AAAA,MACF;AAAA,KACF;AAEA,IAAA,MAAM,cAAc,GAAA,EAAY;AAChC,IAAA,IAAI,MAAM,KAAA,EAAO;AACf,MAAA,KAAA,CAAM,KAAA,EAAO,CAAC,QAAA,EAAU,QAAA,KAAa;AACnC,QAAA,IAAI,CAAC,QAAA,IAAY,CAAC,QAAA,EAAU;AAC1B,UAAA;AAAA,QACF;AACA,QAAA,IAAI,QAAA,CAAS,QAAQ,KAAA,CAAM,sBAAA,CAAuB,SAAS,QAAA,CAAS,IAAA,CAAK,QAAA,EAAU,CAAA,EAAG;AACpF,UAAA,MAAA,CAAO,aAAA,CAAc,YAAY,KAAK,CAAA;AAAA,QACxC;AACA,QAAA,IAAI,QAAA,CAAS,QAAQ,KAAA,CAAM,sBAAA,CAAuB,SAAS,QAAA,CAAS,IAAA,CAAK,QAAA,EAAU,CAAA,EAAG;AACpF,UAAA,WAAA,CAAY,QAAQ,MAAA,CAAO,WAAA;AAAA,YACzB,MAAM;AACJ,cAAA,IAAI,CAAC,WAAW,SAAA,EAAW;AACzB,gBAAA;AAAA,cACF;AAEA,cAAA,MAAA,CAAO,SAAS,MAAA,EAAO;AAAA,YACzB,CAAA;AAAA,YACA,IAAI,EAAA,GAAK;AAAA,WACX;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AAAA,IACH;AAiBA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,eAAA,CAAgB,KAAA,GAAQ,IAAA;AACxB,MAAA,IAAI,WAAW,SAAA,EAAW;AACxB,QAAA,WAAA,EAAY;AAAA,MACd;AAEA,MAAA,MAAA,CAAO,gBAAA,CAAiB,SAAA,EAAW,OAAM,CAAA,KAAK;AAE5C,QAAA,IAAI,CAAA,CAAE,IAAA,CAAK,IAAA,IAAQ,eAAA,EAAiB;AAClC,UAAA,MAAM,OAAqB,CAAA,CAAE,IAAA;AAE7B,UAAA,OAAA,CAAQ,GAAA,CAAI,EAAE,IAAI,CAAA;AAClB,UAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA;AAEjC,UAAA,MAAM,YAAA,GAAe,aAAA,CAAc,KAAA,CAAM,IAAA,CAAK,SAAS,YAAY,CAAA;AACnE,UAAA;AAAA;AAAA,YAEG,CAAC,YAAA,IAAgB,IAAA,EAAM,IAAA,EAAM,KAAA;AAAA,YAE7B,YAAA,IAAgB,CAAC,KAAA,IAAS,IAAA,EAAM,IAAA,EAAM;AAAA,YACvC;AAEA,YAAA,UAAA,CAAW,MAAA,GAAS,KAAK,IAAA,CAAK,MAAA;AAC9B,YAAA,MAAM,GAAA,uBAAU,IAAA,EAAK;AACrB,YAAA,IAAI,IAAA,GAAO,IAAI,OAAA,EAAQ;AACvB,YAAA,IAAA,IAAQ,CAAA,GAAI,KAAK,EAAA,GAAK,GAAA;AACtB,YAAA,GAAA,CAAI,QAAQ,IAAI,CAAA;AAChB,YAAA,MAAM,YAAY,SAAA,EAAU;AAE5B,YAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,aAAA,EAAe;AAE5B,cAAA,IAAI,KAAK,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,EAAG;AAC/C,gBAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KAAmB;AACvC,kBAAA,QAAA,CAAS,MAAA,GAAS,MAAA;AAAA,gBACpB,CAAC,CAAA;AAAA,cACH;AAEA,cAAA,OAAA,CAAQ,GAAA,CAAI,OAAA,EAAS,IAAA,CAAK,IAAA,CAAK,KAAA,EAAO,EAAE,OAAA,EAAS,GAAA,EAAK,MAAA,EAAQ,YAAA,GAAe,SAAA,GAAY,KAAA,CAAA,EAAW,CAAA;AAEpG,cAAA,IAAI,aAAA,CAAc,KAAA,CAAM,GAAA,IAAO,IAAA,CAAK,KAAK,MAAA,EAAQ;AAC/C,gBAAA,IAAA,CAAK,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,CAACA,MAAAA,KAA0C;AAClE,kBAAA,OAAA,CAAQ,GAAA,CAAIA,MAAAA,CAAM,GAAA,EAAKA,MAAAA,CAAM,KAAA,EAAO,EAAE,OAAA,EAAS,GAAA,EAAK,MAAA,EAAQ,SAAA,EAAW,CAAA;AAAA,gBACzE,CAAC,CAAA;AAAA,cACH;AAEA,cAAA,IAAI,CAAC,OAAA,CAAQ,GAAA,CAAI,aAAa,CAAA,IAAK,IAAA,CAAK,KAAK,MAAA,EAAQ;AACnD,gBAAA,OAAA,CAAQ,GAAA,CAAI,aAAA,EAAe,IAAA,CAAK,IAAA,CAAK,MAAA,EAAQ;AAAA,kBAC3C,OAAA,EAAS,GAAA;AAAA,kBACT,MAAA,EAAQ,eAAe,SAAA,GAAY,KAAA;AAAA,iBACpC,CAAA;AAAA,cACH;AAAA,YACF;AAAA,UACF;AACA,UAAA,IAAI,CAAC,IAAA,CAAK,IAAA,CAAK,aAAA,EAAe;AAE5B,YAAA,IAAI,IAAA,EAAM,IAAA,EAAM,KAAA,IAAS,IAAA,EAAM,MAAM,YAAA,EAAc;AACjD,cAAA,MAAM,UAAA,CAAW,mBAAmB,IAAI,CAAA;AAAA,YAC1C;AAEA,YAAA,UAAA,CAAW,SAAA,GAAY,KAAA;AACvB,YAAA,IAAI,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,oBAAA,CAAqB,QAAA,CAAS,KAAA,CAAM,KAAA,CAAM,IAAA,EAAM,QAAA,EAAS,IAAK,EAAE,CAAA,EAAG;AAC1F,cAAA,MAAA,CAAO,SAAS,MAAA,EAAO;AAAA,YACzB;AAAA,UACF;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,MAAA,CAAO,aAAA,CAAc,YAAY,KAAK,CAAA;AAAA,IACxC,CAAC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"LoginDialog.vue2.mjs","sources":["../../../../../../../packages/components/src/business/loginDialog/LoginDialog.vue"],"sourcesContent":["<script lang=\"ts\">\nconst loginEnvKey = 'VITE_GIIME_LOGIN_URL'\n</script>\n<template>\n <div v-if=\"isSSRShowDialog\">\n <el-dialog v-model=\"loginStore.showLogin\" width=\"80%\" append-to-body>\n <!-- 正常登录状态:显示iframe -->\n <iframe v-if=\"loginStore.showLogin && !loginStore.isLoginBlocked\" class=\"gm-h-[600px] gm-w-full\" :src=\"loginUrl\" />\n <!-- 异常状态:显示错误提示 -->\n <div v-else-if=\"loginStore.isLoginBlocked\" class=\"gm-py-10\" :src=\"loginUrl\">\n <el-result icon=\"warning\" title=\"登录异常\" sub-title=\"短时间内多次登录失败,请稍后重试\">\n <template #extra>\n <el-button type=\"primary\" @click=\"handleRetryLogin\">重新登录</el-button>\n <el-button type=\"warning\" @click=\"handleClearCache\">清空缓存</el-button>\n <el-button @click=\"loginStore.showLogin = false\">关闭</el-button>\n </template>\n </el-result>\n </div>\n </el-dialog>\n </div>\n</template>\n<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, ref, watch } from 'vue';\n// import { isObject } from '@vue/shared';\nimport { ElButton, ElDialog, ElMessage, ElResult } from 'element-plus';\nimport Cookies from 'js-cookie';\n// import router from 'vue-router';\nimport { useLoginStore } from '@giime/hooks';\nimport { useGlobalConfig } from '@giime/hooks/base/useGlobalConfig';\nimport { isDingTalk, isMobile, isString } from '@giime/utils';\nimport { getDomain, urlJoin } from '@giime/utils/src/http/url';\nimport { getTenantType, isGiikin } from '@giime/utils/src/tenant';\nimport { envConfigs } from '@giime/utils/src/http/createModes';\nimport { loginDialogProps } from './loginDialog';\nimport { resetEnvMode } from '@giime/constants/key';\n\nconst props = defineProps(loginDialogProps);\nconst router = useGlobalConfig('router');\n\n// const router = useRouter();\nconst route = computed(() => (router.value ? router.value.currentRoute.value : undefined));\nconst loginStore = useLoginStore();\nconst loginUrl = ref('');\n\n\nconst importMetaEnv = useGlobalConfig('env');\nconst isSSRShowDialog = ref(importMetaEnv.value.SSR === false);\n\n/**\n * 获取登录URL\n * 优先级:环境变量 > resetEnvMode > 租户类型判断 > 默认值\n */\nlet originLoginUrl = '';\n// 1. 优先使用环境变量配置的 loginUrl\nif (isString(importMetaEnv.value[loginEnvKey])) {\n originLoginUrl = importMetaEnv.value[loginEnvKey];\n} else {\n // 2. 根据租户类型获取登录路径\n const loginPath = isGiikin() ? '/guard/sso/public/auth' : '/fe/basic/login';\n\n // 3. 根据 resetEnvMode 获取环境配置并拼接完整URL\n const resetMode = importMetaEnv.value[resetEnvMode];\n const hostname = window.location.hostname;\n // 获取域名对应的环境配置\n const findEnvConfig = Object.values(envConfigs).find(config => config.domain === hostname);\n if (resetMode && envConfigs[resetMode]) {\n originLoginUrl = urlJoin(envConfigs[resetMode].url, loginPath);\n } else if (findEnvConfig) {\n // 4. 根据域名获取环境配置并拼接完整URL\n originLoginUrl = urlJoin(findEnvConfig.url, loginPath);\n } else {\n // 5. 默认使用开发环境登录路径\n originLoginUrl = urlJoin(envConfigs.develop.url, loginPath);\n }\n}\nconst handleLogin = () => {\n const protocol = window.location.protocol;\n const host = window.location.host;\n const myPath = window.location.pathname;\n loginUrl.value = `${originLoginUrl}?_system=${props.system}`;\n if (route.value && props.needScanningRouteNames.includes(route.value?.name?.toString() ?? '')) {\n loginUrl.value += '&is_dashboard=1';\n }\n\n // 公司id\n const guard_company = Cookies.get('guard_company');\n if (guard_company) {\n loginUrl.value += `&companyId=${guard_company}`;\n }\n\n loginUrl.value += `&${props.redirectUrlField}=${protocol}//${host}${myPath}`;\n\n // eslint-disable-next-line no-console\n console.log(loginUrl.value);\n if (isMobile() || isDingTalk()) {\n window.location.href = loginUrl.value;\n }\n};\n\n/** 重试登录:重置循环保护计数器并重新加载登录页 */\nconst handleRetryLogin = () => {\n loginStore.resetLoginBlock();\n handleLogin();\n};\n\n/** 清空缓存:清除 Cookies、localStorage 和 sessionStorage */\nconst handleClearCache = () => {\n // 清除所有 Cookies\n const cookies = document.cookie.split(';');\n const curDomain = getDomain();\n cookies.forEach(cookie => {\n const name = cookie.split('=')[0].trim();\n if (name) {\n // 尝试多种方式删除 cookie\n Cookies.remove(name);\n Cookies.remove(name, { domain: curDomain });\n Cookies.remove(name, { domain: `.${curDomain}` });\n }\n });\n\n // 提示操作成功\n ElMessage.success('清除cookie缓存成功');\n};\nwatch(\n () => loginStore.showLogin,\n value => {\n if (value) {\n handleLogin();\n }\n },\n);\n// 超过5分钟没扫码 会不能扫码 定时没登录的话3分钟刷新次\nconst reloadTimer = ref<number>();\nif (route.value) {\n watch(route, (newValue, oldValue) => {\n if (!oldValue || !newValue) {\n return;\n }\n if (oldValue.name && props.needScanningRouteNames.includes(oldValue.name.toString())) {\n window.clearInterval(reloadTimer.value);\n }\n if (newValue.name && props.needScanningRouteNames.includes(newValue.name.toString())) {\n reloadTimer.value = window.setInterval(\n () => {\n if (!loginStore.showLogin) {\n return;\n }\n // 登录超时后 3分钟刷新次页面\n window.location.reload();\n },\n 3 * 60 * 1000,\n );\n }\n });\n}\n\ninterface GiikinLogged {\n type: string;\n data: {\n token: string;\n userId: string;\n /**token 或者 loginSuccess 控制当前登录是否成功*/\n loginSuccess?: boolean;\n /**禁止写入cookie */\n disabledWrite?: boolean;\n disabledClose?: boolean;\n tokens: { key: string; value: string }[];\n };\n cookies?: string[];\n}\n\nonMounted(() => {\n isSSRShowDialog.value = true;\n if (loginStore.showLogin) {\n handleLogin();\n }\n // iframe事件监听\n window.addEventListener('message', async e => {\n // 刷新登陆状态\n if (e.data.type == 'giikin-Logged') {\n const data: GiikinLogged = e.data;\n // eslint-disable-next-line no-console\n console.log(e.data);\n const token = Cookies.get('token');\n // const isProduction = importMetaEnv.value.MODE === 'production' || importMetaEnv.value.MODE === 'giiktok.production';\n const isProduction = importMetaEnv.value.MODE.includes('production');\n if (\n // 测试环境 但是需要登陆的情况\n (!isProduction && data?.data?.token) ||\n // 正式环境 登录成功 但是服务器token设置失败\n (isProduction && !token && data?.data?.token)\n ) {\n // loginStore.userToken = data.data.token;\n loginStore.userId = data.data.userId;\n const now = new Date();\n let time = now.getTime();\n time += 8 * 60 * 60 * 1000; // 8 小时之后的时间(单位:毫秒)\n now.setTime(time);\n const curDomain = getDomain();\n // 不禁用 则写入cookie\n if (!data.data.disabledWrite) {\n // cookieMap\n if (data.cookies && Array.isArray(data.cookies)) {\n data.cookies.forEach((cookie: string) => {\n document.cookie = cookie;\n });\n }\n // 可能出现测试环境调正式,需要写入token\n Cookies.set('token', data.data.token, { expires: now, domain: isProduction ? curDomain : undefined });\n // 本地开发时 写入token\n if (importMetaEnv.value.DEV && data.data.tokens) {\n data.data.tokens.forEach((token: { key: string; value: string }) => {\n Cookies.set(token.key, token.value, { expires: now, domain: curDomain });\n });\n }\n\n if (!Cookies.get('sso_user_id') && data.data.userId) {\n Cookies.set('sso_user_id', data.data.userId, {\n expires: now,\n domain: isProduction ? curDomain : undefined,\n });\n }\n }\n }\n if (!data.data.disabledClose) {\n // 触发登录成功监听\n if (data?.data?.token || data?.data?.loginSuccess) {\n await loginStore.triggerLoginResult(true);\n }\n // ElMessage.success('登录成功,请关闭弹窗');\n loginStore.showLogin = false;\n if (route.value && props.needRealodRouteNames.includes(route.value.name?.toString() ?? '')) {\n window.location.reload();\n }\n }\n }\n });\n});\nonUnmounted(() => {\n window.clearInterval(reloadTimer.value);\n});\n</script>\n"],"names":["token"],"mappings":"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"}
|
|
@@ -20,19 +20,22 @@ var TableColumnVNodeRenderer = /* @__PURE__ */ defineComponent({
|
|
|
20
20
|
},
|
|
21
21
|
setup(props) {
|
|
22
22
|
const mergePropsList = computed(() => {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
return it;
|
|
23
|
+
const matchedItems = props.propsList.filter((propsItem) => {
|
|
24
|
+
return props.defaultPropsList.some((defaultItem) => defaultItem.prop === propsItem.prop);
|
|
25
|
+
});
|
|
26
|
+
const additionalItems = props.defaultPropsList.filter((defaultItem) => {
|
|
27
|
+
return !props.propsList.some((propsItem) => propsItem.prop === defaultItem.prop);
|
|
29
28
|
});
|
|
29
|
+
return [...matchedItems, ...additionalItems];
|
|
30
30
|
});
|
|
31
31
|
const processVNode = (vnode) => {
|
|
32
32
|
if (!vnode) return null;
|
|
33
33
|
if (vnode.type?.name === "GmTableColumnPro") {
|
|
34
|
+
if (vnode.props?.type === "edit") {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
34
37
|
const propsConfig = mergePropsList.value.find((it) => it.prop === vnode.props?.prop);
|
|
35
|
-
if (propsConfig &&
|
|
38
|
+
if (propsConfig && !propsConfig.isShow) {
|
|
36
39
|
return null;
|
|
37
40
|
}
|
|
38
41
|
if (propsConfig) {
|
|
@@ -91,8 +94,7 @@ var TableColumnVNodeRenderer = /* @__PURE__ */ defineComponent({
|
|
|
91
94
|
processedProps.add(propsConfig.prop);
|
|
92
95
|
}
|
|
93
96
|
});
|
|
94
|
-
|
|
95
|
-
return [...multiLevelHeaders, ...orderedColumns, ...remainingColumns].map((vnode) => vnode ? h(vnode) : null).filter(Boolean);
|
|
97
|
+
return [...multiLevelHeaders, ...orderedColumns].map((vnode) => vnode ? h(vnode) : null).filter(Boolean);
|
|
96
98
|
});
|
|
97
99
|
return () => render.value;
|
|
98
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableColumnVNodeRenderer.mjs","sources":["../../../../../../../packages/components/src/composite/tableCustom/TableColumnVNodeRenderer.tsx"],"sourcesContent":["// TableColumnVNodeRenderer - 支持多级表头\nimport { computed, defineComponent, h, cloneVNode } from 'vue';\nimport type { TableColumnProProps } from '../tablePro/tableColumnPro/tableColumnPro';\nimport type { PropType, VNode } from 'vue';\n\nexport default defineComponent({\n functional: true,\n props: {\n // 当前原始vnode vue模板中的attribute\n vnode: {\n type: [Object, Array],\n required: true,\n },\n // 真实渲染的propsList\n propsList: {\n type: Array as PropType<TableColumnProProps[]>,\n default: () => [],\n },\n defaultPropsList: {\n type: Array as PropType<TableColumnProProps[]>,\n default: () => [],\n },\n },\n setup(props) {\n /** 合并propsList和defaultPropsList */\n const mergePropsList = computed(() => {\n
|
|
1
|
+
{"version":3,"file":"TableColumnVNodeRenderer.mjs","sources":["../../../../../../../packages/components/src/composite/tableCustom/TableColumnVNodeRenderer.tsx"],"sourcesContent":["// TableColumnVNodeRenderer - 支持多级表头\nimport { computed, defineComponent, h, cloneVNode } from 'vue';\nimport type { TableColumnProProps } from '../tablePro/tableColumnPro/tableColumnPro';\nimport type { PropType, VNode } from 'vue';\n\nexport default defineComponent({\n functional: true,\n props: {\n // 当前原始vnode vue模板中的attribute\n vnode: {\n type: [Object, Array],\n required: true,\n },\n // 真实渲染的propsList\n propsList: {\n type: Array as PropType<TableColumnProProps[]>,\n default: () => [],\n },\n defaultPropsList: {\n type: Array as PropType<TableColumnProProps[]>,\n default: () => [],\n },\n },\n setup(props) {\n /** 合并propsList和defaultPropsList,优先循环propsList,存在时返回propsList内的对象,同时将defaultPropsList内多出的对象插入数组后面 */\n const mergePropsList = computed(() => {\n // 获取 propsList 中在 defaultPropsList 中也存在的项(使用 propsList 中的对象)\n const matchedItems = props.propsList.filter(propsItem => {\n return props.defaultPropsList.some(defaultItem => defaultItem.prop === propsItem.prop);\n });\n\n // 获取 defaultPropsList 中存在但 propsList 中不存在的项\n const additionalItems = props.defaultPropsList.filter(defaultItem => {\n return !props.propsList.some(propsItem => propsItem.prop === defaultItem.prop);\n });\n\n // 合并:propsList 中的项在前,defaultPropsList 中多出的项在后\n return [...matchedItems, ...additionalItems];\n });\n\n /**\n * 递归处理 vnode 树,应用 propsList 配置\n * @param vnode 要处理的 vnode\n * @returns 处理后的 vnode\n */\n const processVNode = (vnode: any): any => {\n if (!vnode) return null;\n\n // 如果是 GmTableColumnPro,查找并应用配置\n if (vnode.type?.name === 'GmTableColumnPro') {\n // type=\"edit\" 的列由 TablePro 的 gmEdit 列统一处理,这里跳过\n // 直接检查 vnode.props.type,避免因 prop 相同导致的误匹配\n if (vnode.props?.type === 'edit') {\n return null;\n }\n\n const propsConfig = mergePropsList.value.find(it => it.prop === vnode.props?.prop);\n\n // 如果配置中标记为不显示,跳过渲染\n if (propsConfig && !propsConfig.isShow) {\n return null;\n }\n\n // 应用配置到 vnode props\n if (propsConfig) {\n const newProps = {\n ...vnode.props,\n width: propsConfig.width,\n label: propsConfig.label,\n fixed: propsConfig.fixed,\n };\n return cloneVNode(vnode, newProps);\n }\n\n return vnode;\n }\n\n // 如果是其他组件(如 gm-table-column 用于多级表头),递归处理子节点\n if (vnode.children) {\n let newChildren = vnode.children;\n\n // 如果 children 是对象(包含 slots),递归处理 default slot\n if (typeof vnode.children === 'object' && vnode.children.default) {\n const originalDefault = vnode.children.default;\n newChildren = {\n ...vnode.children,\n default: (slotProps: any) => {\n const childVnodes = originalDefault(slotProps);\n if (Array.isArray(childVnodes)) {\n return childVnodes.map(processVNode).filter(Boolean);\n }\n return processVNode(childVnodes);\n },\n };\n }\n // 如果 children 是数组,递归处理每个子节点\n else if (Array.isArray(vnode.children)) {\n newChildren = vnode.children.map(processVNode).filter(Boolean);\n }\n\n return cloneVNode(vnode, vnode.props, newChildren);\n }\n\n return vnode;\n };\n\n const render = computed(() => {\n const vnodeArray = Array.isArray(props.vnode) ? props.vnode : [props.vnode];\n\n // 先处理所有 vnode\n const processedVnodes = vnodeArray.map(vnode => processVNode(vnode)).filter(Boolean);\n\n // 分离顶层列和多级表头\n const topLevelColumns: any[] = [];\n const multiLevelHeaders: any[] = [];\n\n processedVnodes.forEach(vnode => {\n // 如果是 GmTableColumnPro(顶层列),收集起来\n if (vnode?.type?.name === 'GmTableColumnPro') {\n topLevelColumns.push(vnode);\n } else {\n // 其他情况(多级表头等),保持原样\n multiLevelHeaders.push(vnode);\n }\n });\n\n // 按照 mergePropsList 的顺序来排序顶层列\n const orderedColumns: any[] = [];\n const processedProps = new Set<string>();\n\n mergePropsList.value.forEach(propsConfig => {\n // 如果配置中标记为不显示或类型是 edit,跳过渲染\n if (!propsConfig.isShow || propsConfig.type === 'edit') {\n return;\n }\n\n // 查找对应的顶层列\n const matchedColumn = topLevelColumns.find(col => col?.props?.prop === propsConfig.prop);\n\n if (matchedColumn) {\n orderedColumns.push(matchedColumn);\n processedProps.add(propsConfig.prop);\n }\n });\n\n // 合并:多级表头 + 按顺序的顶层列 + 剩余的顶层列\n return [...multiLevelHeaders, ...orderedColumns].map(vnode => (vnode ? h(vnode) : null)).filter(Boolean);\n });\n\n return () => render.value;\n },\n});\n"],"names":["functional","props","vnode","type","Object","Array","required","propsList","default","defaultPropsList","setup","mergePropsList","computed","matchedItems","filter","propsItem","some","defaultItem","prop","additionalItems","processVNode","name","propsConfig","value","find","it","isShow","newProps","width","label","fixed","cloneVNode","children","newChildren","originalDefault","slotProps","childVnodes","isArray","map","Boolean","render","vnodeArray","processedVnodes","topLevelColumns","multiLevelHeaders","forEach","push","orderedColumns","processedProps","Set","matchedColumn","col","add","h"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import _sfc_main from './TableCustom.vue2.mjs';
|
|
|
2
2
|
import './TableCustom.vue3.mjs';
|
|
3
3
|
import _export_sfc from '../../../../_virtual/_plugin-vue_export-helper.mjs';
|
|
4
4
|
|
|
5
|
-
var TableCustom = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
5
|
+
var TableCustom = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-3f2c8504"]]);
|
|
6
6
|
|
|
7
7
|
export { TableCustom as default };
|
|
8
8
|
//# sourceMappingURL=TableCustom.vue.mjs.map
|
|
@@ -12,7 +12,7 @@ import TableColumnVNodeRenderer from './TableColumnVNodeRenderer.mjs';
|
|
|
12
12
|
import { tableCustomEmits, tableCustomProps } from './tableCustom.mjs';
|
|
13
13
|
import { customOperateButtonProps } from './customOperate/customOperate.mjs';
|
|
14
14
|
|
|
15
|
-
const _withScopeId = (n) => (pushScopeId("data-v-
|
|
15
|
+
const _withScopeId = (n) => (pushScopeId("data-v-3f2c8504"), n = n(), popScopeId(), n);
|
|
16
16
|
const _hoisted_1 = { class: "gm-text-center" };
|
|
17
17
|
const _hoisted_2 = {
|
|
18
18
|
key: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCustom.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/tableCustom/TableCustom.vue"],"sourcesContent":["<template>\n <div ref=\"gmTableCustomDivRef\">\n <gm-table\n v-if=\"gmCustomTableHeaderRef?.isInited\"\n ref=\"GmTbaleCustomRef\"\n v-bind=\"props\"\n :height=\"autoHeight ? tableMaxHeight : height\"\n class=\"gmTableCustom\"\n :class=\"[props.border ? '' : 'gmTableNoBorder']\"\n v-on=\"elEvents\"\n @selection-change=\"(value: TableColumnProProps[]) => $emit('selection-change', value)\"\n @sort-change=\"handleSortChange\"\n @header-dragend=\"headerDragend\"\n >\n <slot name=\"native\" />\n <template v-if=\"slots.append\" #append>\n <slot name=\"append\" />\n </template>\n <template v-if=\"slots.empty\" #empty>\n <slot name=\"empty\" />\n </template>\n <template v-if=\"props.selection\">\n <gm-table-column :key=\"999999\" type=\"selection\" width=\"55\" />\n </template>\n <TableColumnVNodeRenderer :vnode=\"tableColumnVnode\" :propsList=\"colPropsList\" :defaultPropsList=\"colDefaultPropsList\" />\n <!-- 操作 -->\n <gm-table-column\n v-if=\"customHeader || customOperate\"\n prop=\"gmEdit\"\n min-width=\"100\"\n :width=\"editProps?.width\"\n :fixed=\"operateFixed ? 'right' : false\"\n >\n <template #header>\n <div class=\"gm-text-center\">\n <gm-button v-if=\"customHeader\" type=\"primary\" link size=\"small\" @click=\"setTable('header')\"> 表头 </gm-button>\n <gm-button v-if=\"customOperate\" type=\"primary\" link size=\"small\" @click=\"setTable('operate')\"> 操作 </gm-button>\n </div>\n </template>\n <template #default=\"slotValue\">\n <div\n v-if=\"\n tableOperateVnode &&\n tableOperateVnode.children &&\n gmCustomOperateRef &&\n gmCustomOperateRef.isInited &&\n slotValue &&\n slotValue.row &&\n tableOperateVnode.children?.default(slotValue) &&\n customBtnPropsList\n \"\n class=\"gm-flex gm-flex-wrap gm-justify-center\"\n >\n <TableOperateVNodeRenderer :vnode=\"tableOperateVnode.children?.default(slotValue)\" :customPropsList=\"customBtnPropsList\" />\n </div>\n </template>\n </gm-table-column>\n </gm-table>\n </div>\n\n <gm-table-custom-header\n ref=\"gmCustomTableHeaderRef\"\n v-model:isShowDrawer=\"drawerHeaderVisible\"\n v-model:colPropsList=\"colPropsList\"\n :colDefaultPropsList=\"colDefaultPropsList\"\n :keyWord=\"props.page\"\n :disabledRemoteCol=\"props.disabledRemoteCol\"\n :drag-header=\"props.dragHeader\"\n type=\"CustomHeaderList\"\n @updateColumns=\"resetWidthOnHeaderDrag()\"\n />\n\n <gm-custom-operate\n ref=\"gmCustomOperateRef\"\n v-model:isShowDrawer=\"drawerOperateVisible\"\n v-model:customBtnPropsList=\"customBtnPropsList\"\n :customDefaultPropsList=\"customDefaultPropsList\"\n :keyWord=\"props.page\"\n :disabledRemoteBtn=\"props.disabledRemoteBtn\"\n type=\"CustomOperateList\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, nextTick, ref } from 'vue';\nimport { hasOwn } from '@giime/utils/src/objects';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { getGmEvent } from '@giime/utils/src/elementPlus/event';\nimport { TableCtxKey } from '@giime/constants/table';\nimport { useElementRemainingHeight } from '@giime/hooks/base/useElementRemainingHeight';\nimport TableOperateVNodeRenderer from '../tablePro/TableOperateVNodeRenderer';\nimport { getVnodesByGmName } from '../tablePro/tableHelper';\nimport { TableColumnProName, type TableColumnProProps, tableColumnProProps } from '../tablePro/tableColumnPro/tableColumnPro';\nimport GmCustomOperate, { customOperateButtonProps } from './customOperate';\nimport TableColumnVNodeRenderer from './TableColumnVNodeRenderer';\nimport { tableCustomEmits, tableCustomProps } from './tableCustom';\nimport type { TableColumnSortValue } from './tableCustom';\nimport type { OperateButtonFormInstance } from '../operateButton/operateButtonForm';\nimport type { TableHeaderFormInstance } from '../tablePro/tableHeaderForm';\nimport type { CustomOperateButtonProps } from './customOperate';\nimport type { Sort, TableInstance } from 'element-plus';\n\ndefineOptions({\n name: 'GmTableCustom',\n});\nconst tableCtx = inject(TableCtxKey);\nconst props = defineProps(tableCustomProps);\n\nconst GmTbaleCustomRef = ref<TableInstance>();\nif (tableCtx && tableCtx.tableId === props.page) {\n tableCtx.tableRef = GmTbaleCustomRef;\n}\nconst gmCustomOperateRef = ref<OperateButtonFormInstance>();\nconst gmCustomTableHeaderRef = ref<TableHeaderFormInstance>();\n\nconst emit = defineEmits(tableCustomEmits);\n// 需要手动重新实现的事件\nconst notResendEvents = ['sort-change', 'header-dragend', 'selection-change'];\nconst resendEvent = { ...tableCustomEmits };\nnotResendEvents.forEach(it => Reflect.deleteProperty(resendEvent, it));\n// 重发el的事件\nconst elEvents = getGmEvent(resendEvent, emit);\nconst slots = defineSlots<{\n default(data?: any): any[];\n append?(data?: any): any[];\n empty?(data?: any): any[];\n native?(data?: any): any[];\n}>();\n// 列 当前原始vnode\nconst tableColumnVnode = computed(() => {\n const vNodes = slots.default?.() || [];\n return vNodes;\n});\n// 默认表头Props列表\nconst colDefaultPropsList = computed(() => {\n const vNodes = slots.default?.() || [];\n const children = getVnodesByGmName(vNodes, TableColumnProName);\n\n const colProps: TableColumnProProps[] = children.map((vNode: { props: any }) => vNode.props) ?? [];\n // 循环插入props所需的默认值\n colProps.forEach(it => {\n for (const key in tableColumnProProps) {\n // 如果当前props含有默认值\n if (hasOwn(it, key)) {\n continue;\n }\n if (hasOwn(tableColumnProProps, key)) {\n const element = tableColumnProProps[key as keyof TableColumnProProps];\n // 如果btn 定义中含有默认值 则赋值给props\n if (hasOwn(element, 'default')) {\n Reflect.set(it, key, Reflect.get(element, 'default'));\n }\n }\n }\n });\n return colProps;\n});\n\n// 已选中表头\nconst colPropsList = ref<TableColumnProProps[]>(colDefaultPropsList.value);\nconst editProps = computed(() => colPropsList.value.find(it => it.type === 'edit'));\n\n// 操作按钮组 当前原始vnode\nconst tableOperateVnode = computed(() => {\n const vNodes = slots.default?.() || [];\n const nodes = vNodes.find(vNode => vNode.props && vNode.props.type === 'edit');\n return nodes;\n});\n\nconst customDefaultPropsList = computed(() => {\n const defaultVnodes = tableOperateVnode.value?.children?.default?.({ row: {} });\n if (Array.isArray(defaultVnodes) && defaultVnodes.some(it => it?.children === 'v-if')) {\n console.error(`警告:为确保表格操作按钮能正常渲染,请把表格${props.page}操作按钮中使用的\"v-if\"替换为\"v-see\"`);\n }\n const children = getVnodesByGmName(defaultVnodes, 'GmOperateButton');\n const btnProps: CustomOperateButtonProps[] = children.map((vNode: { props: any }) => vNode.props) ?? [];\n // console.log(btnProps);\n // 循环插入props所需的默认值\n btnProps.forEach(it => {\n for (const key in customOperateButtonProps) {\n // 如果当前props含有默认值\n if (hasOwn(it, key)) {\n continue;\n }\n if (hasOwn(customOperateButtonProps, key)) {\n const element = customOperateButtonProps[key as keyof CustomOperateButtonProps];\n // 如果btn 定义中含有默认值 则赋值给props\n if (hasOwn(element, 'default')) {\n Reflect.set(it, key, Reflect.get(element, 'default'));\n }\n }\n }\n });\n return btnProps;\n});\nconst customBtnPropsList = ref<CustomOperateButtonProps[]>(customDefaultPropsList.value);\n\n// 表格头部弹层\nconst drawerHeaderVisible = ref(false); // 表头设置弹层\nconst drawerOperateVisible = ref(false); // 按钮设置弹层\nconst setTable = (event: string) => {\n if (event === 'header') {\n drawerHeaderVisible.value = true;\n }\n if (event === 'operate') {\n drawerOperateVisible.value = true;\n }\n};\n\n/**\n * 表头拖动,修改width\n */\nconst headerDragend = async (newWidth: number, oldWidth: number, column: any) => {\n const findItem = colPropsList.value.find(it => it.prop === column.property);\n const editItem = column.property === 'gmEdit' ? colPropsList.value.find(it => it.type === 'edit') : null;\n if (!findItem && !editItem) {\n return;\n }\n if (findItem) {\n findItem.width = newWidth;\n }\n if (editItem) {\n editItem.width = newWidth;\n }\n // 设置列宽\n await nextTick();\n resetWidthOnHeaderDrag(column);\n gmCustomTableHeaderRef.value?.syncPropsList();\n gmCustomTableHeaderRef.value?.submitSettings({ hiddenMessage: true });\n};\n/**\n * 当表头拖动后,重新计算补充列宽度\n * 当全部列都设置了宽度,把设置过minWidth的列设置为补充列,补充表格剩余宽度\n */\nconst resetWidthOnHeaderDrag = (column?: any) => {\n // console.log('resetWidthOnHeaderDrag', column);\n if (props.disabledResetWidth) {\n return;\n }\n // // 当全部列都设置了宽度 才执行后续步骤\n // if (colPropsList.value.some(it => it.isShow && !it.width)) {\n // return;\n // }\n // console.log('colPropsList', colPropsList.value);\n const minWidthCols = colPropsList.value.filter(\n // 是在展示中的列,并且不是操作列,并且设置了最小宽度\n it => it.isShow === true && it.type !== 'edit' && it.prop !== 'edit' && ((it as any)['min-width'] || it.minWidth),\n );\n for (const item of minWidthCols) {\n // 只有一个minWidth时, 也需要设置width = ''\n if (column?.property === item.prop && minWidthCols.length !== 1) {\n continue;\n }\n item.width = '';\n }\n};\n/**\n * 搜索模块\n */\nconst sortValue = defineModel<TableColumnSortValue[]>('sortValue');\n\nconst handleSortChange = (sort: Sort) => {\n if (sortValue.value) {\n sortValue.value.length = 0;\n switch (sort.order) {\n case 'ascending':\n sortValue.value.push({ field: sort.prop, order: 'asc' });\n break;\n case 'descending':\n sortValue.value.push({ field: sort.prop, order: 'desc' });\n break;\n }\n }\n\n emit('sort-change', sort);\n};\nconst exposeEvents = [\n 'clearSelection',\n 'getSelectionRows',\n 'toggleRowSelection',\n 'toggleAllSelection',\n 'toggleRowExpansion',\n 'setCurrentRow',\n 'setChecked',\n 'clearSort',\n 'clearFilter',\n 'doLayout',\n 'sort',\n 'scrollTo',\n 'setScrollTop',\n 'setScrollLeft',\n] as const;\nconst { exposeFns } = getGmExports(GmTbaleCustomRef, exposeEvents);\n\n// 用于计算table高度\nconst gmTableCustomDivRef = ref<HTMLDivElement>();\nconst { height: tableMaxHeight } = useElementRemainingHeight(gmTableCustomDivRef, {\n bottomOffset: props.heightOffset || 30, // 高度 - 顶部距离 - 分页器\n minHeight: 300,\n});\n\ndefineExpose({\n colPropsList,\n ...exposeFns,\n});\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(.gmTableNoBorder .el-table__body .el-table__cell) {\n border-right: none;\n}\n:deep(.gmTableNoBorder .el-table__inner-wrapper:before) {\n height: 0;\n}\n:deep(.gmTableNoBorder.el-table--border .el-table__inner-wrapper:after) {\n height: 0;\n}\n:deep(.gmTableNoBorder.el-table--border:after) {\n height: 0;\n}\n:deep(.gmTableNoBorder.el-table--border:before) {\n height: 0;\n}\n:deep(.gmTableNoBorder .el-table__border-left-patch) {\n height: 0;\n}\n</style>\n"],"names":["_useSlots","_useModel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableCustom.vue2.mjs","sources":["../../../../../../../packages/components/src/composite/tableCustom/TableCustom.vue"],"sourcesContent":["<template>\n <div ref=\"gmTableCustomDivRef\">\n <gm-table\n v-if=\"gmCustomTableHeaderRef?.isInited\"\n ref=\"GmTbaleCustomRef\"\n v-bind=\"props\"\n :height=\"autoHeight ? tableMaxHeight : height\"\n class=\"gmTableCustom\"\n :class=\"[props.border ? '' : 'gmTableNoBorder']\"\n v-on=\"elEvents\"\n @selection-change=\"(value: TableColumnProProps[]) => $emit('selection-change', value)\"\n @sort-change=\"handleSortChange\"\n @header-dragend=\"headerDragend\"\n >\n <slot name=\"native\" />\n <template v-if=\"slots.append\" #append>\n <slot name=\"append\" />\n </template>\n <template v-if=\"slots.empty\" #empty>\n <slot name=\"empty\" />\n </template>\n <template v-if=\"props.selection\">\n <gm-table-column :key=\"999999\" type=\"selection\" width=\"55\" />\n </template>\n <TableColumnVNodeRenderer :vnode=\"tableColumnVnode\" :propsList=\"colPropsList\" :defaultPropsList=\"colDefaultPropsList\" />\n <!-- 操作 -->\n <gm-table-column\n v-if=\"customHeader || customOperate\"\n prop=\"gmEdit\"\n min-width=\"100\"\n :width=\"editProps?.width\"\n :fixed=\"operateFixed ? 'right' : false\"\n >\n <template #header>\n <div class=\"gm-text-center\">\n <gm-button v-if=\"customHeader\" type=\"primary\" link size=\"small\" @click=\"setTable('header')\"> 表头 </gm-button>\n <gm-button v-if=\"customOperate\" type=\"primary\" link size=\"small\" @click=\"setTable('operate')\"> 操作 </gm-button>\n </div>\n </template>\n <template #default=\"slotValue\">\n <div\n v-if=\"\n tableOperateVnode &&\n tableOperateVnode.children &&\n gmCustomOperateRef &&\n gmCustomOperateRef.isInited &&\n slotValue &&\n slotValue.row &&\n tableOperateVnode.children?.default(slotValue) &&\n customBtnPropsList\n \"\n class=\"gm-flex gm-flex-wrap gm-justify-center\"\n >\n <TableOperateVNodeRenderer :vnode=\"tableOperateVnode.children?.default(slotValue)\" :customPropsList=\"customBtnPropsList\" />\n </div>\n </template>\n </gm-table-column>\n </gm-table>\n </div>\n\n <gm-table-custom-header\n ref=\"gmCustomTableHeaderRef\"\n v-model:isShowDrawer=\"drawerHeaderVisible\"\n v-model:colPropsList=\"colPropsList\"\n :colDefaultPropsList=\"colDefaultPropsList\"\n :keyWord=\"props.page\"\n :disabledRemoteCol=\"props.disabledRemoteCol\"\n :drag-header=\"props.dragHeader\"\n type=\"CustomHeaderList\"\n @updateColumns=\"resetWidthOnHeaderDrag()\"\n />\n\n <gm-custom-operate\n ref=\"gmCustomOperateRef\"\n v-model:isShowDrawer=\"drawerOperateVisible\"\n v-model:customBtnPropsList=\"customBtnPropsList\"\n :customDefaultPropsList=\"customDefaultPropsList\"\n :keyWord=\"props.page\"\n :disabledRemoteBtn=\"props.disabledRemoteBtn\"\n type=\"CustomOperateList\"\n />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, nextTick, ref } from 'vue';\nimport { hasOwn } from '@giime/utils/src/objects';\nimport { getGmExports } from '@giime/utils/src/elementPlus/exports';\nimport { getGmEvent } from '@giime/utils/src/elementPlus/event';\nimport { TableCtxKey } from '@giime/constants/table';\nimport { useElementRemainingHeight } from '@giime/hooks/base/useElementRemainingHeight';\nimport TableOperateVNodeRenderer from '../tablePro/TableOperateVNodeRenderer';\nimport { getVnodesByGmName } from '../tablePro/tableHelper';\nimport { TableColumnProName, type TableColumnProProps, tableColumnProProps } from '../tablePro/tableColumnPro/tableColumnPro';\nimport GmCustomOperate, { customOperateButtonProps } from './customOperate';\nimport TableColumnVNodeRenderer from './TableColumnVNodeRenderer';\nimport { tableCustomEmits, tableCustomProps } from './tableCustom';\nimport type { TableColumnSortValue } from './tableCustom';\nimport type { OperateButtonFormInstance } from '../operateButton/operateButtonForm';\nimport type { TableHeaderFormInstance } from '../tablePro/tableHeaderForm';\nimport type { CustomOperateButtonProps } from './customOperate';\nimport type { Sort, TableInstance } from 'element-plus';\n\ndefineOptions({\n name: 'GmTableCustom',\n});\nconst tableCtx = inject(TableCtxKey);\nconst props = defineProps(tableCustomProps);\n\nconst GmTbaleCustomRef = ref<TableInstance>();\nif (tableCtx && tableCtx.tableId === props.page) {\n tableCtx.tableRef = GmTbaleCustomRef;\n}\nconst gmCustomOperateRef = ref<OperateButtonFormInstance>();\nconst gmCustomTableHeaderRef = ref<TableHeaderFormInstance>();\n\nconst emit = defineEmits(tableCustomEmits);\n// 需要手动重新实现的事件\nconst notResendEvents = ['sort-change', 'header-dragend', 'selection-change'];\nconst resendEvent = { ...tableCustomEmits };\nnotResendEvents.forEach(it => Reflect.deleteProperty(resendEvent, it));\n// 重发el的事件\nconst elEvents = getGmEvent(resendEvent, emit);\nconst slots = defineSlots<{\n default(data?: any): any[];\n append?(data?: any): any[];\n empty?(data?: any): any[];\n native?(data?: any): any[];\n}>();\n// 列 当前原始vnode\nconst tableColumnVnode = computed(() => {\n const vNodes = slots.default?.() || [];\n return vNodes;\n});\n// 默认表头Props列表\nconst colDefaultPropsList = computed(() => {\n const vNodes = slots.default?.() || [];\n const children = getVnodesByGmName(vNodes, TableColumnProName);\n\n const colProps: TableColumnProProps[] = children.map((vNode: { props: any }) => vNode.props) ?? [];\n // 循环插入props所需的默认值\n colProps.forEach(it => {\n for (const key in tableColumnProProps) {\n // 如果当前props含有默认值\n if (hasOwn(it, key)) {\n continue;\n }\n if (hasOwn(tableColumnProProps, key)) {\n const element = tableColumnProProps[key as keyof TableColumnProProps];\n // 如果btn 定义中含有默认值 则赋值给props\n if (hasOwn(element, 'default')) {\n Reflect.set(it, key, Reflect.get(element, 'default'));\n }\n }\n }\n });\n return colProps;\n});\n\n// 已选中表头\nconst colPropsList = ref<TableColumnProProps[]>(colDefaultPropsList.value);\nconst editProps = computed(() => colPropsList.value.find(it => it.type === 'edit'));\n\n// 操作按钮组 当前原始vnode\nconst tableOperateVnode = computed(() => {\n const vNodes = slots.default?.() || [];\n const nodes = vNodes.find(vNode => vNode.props && vNode.props.type === 'edit');\n return nodes;\n});\n\nconst customDefaultPropsList = computed(() => {\n const defaultVnodes = tableOperateVnode.value?.children?.default?.({ row: {} });\n if (Array.isArray(defaultVnodes) && defaultVnodes.some(it => it?.children === 'v-if')) {\n console.error(`警告:为确保表格操作按钮能正常渲染,请把表格${props.page}操作按钮中使用的\"v-if\"替换为\"v-see\"`);\n }\n const children = getVnodesByGmName(defaultVnodes, 'GmOperateButton');\n const btnProps: CustomOperateButtonProps[] = children.map((vNode: { props: any }) => vNode.props) ?? [];\n // console.log(btnProps);\n // 循环插入props所需的默认值\n btnProps.forEach(it => {\n for (const key in customOperateButtonProps) {\n // 如果当前props含有默认值\n if (hasOwn(it, key)) {\n continue;\n }\n if (hasOwn(customOperateButtonProps, key)) {\n const element = customOperateButtonProps[key as keyof CustomOperateButtonProps];\n // 如果btn 定义中含有默认值 则赋值给props\n if (hasOwn(element, 'default')) {\n Reflect.set(it, key, Reflect.get(element, 'default'));\n }\n }\n }\n });\n return btnProps;\n});\nconst customBtnPropsList = ref<CustomOperateButtonProps[]>(customDefaultPropsList.value);\n\n// 表格头部弹层\nconst drawerHeaderVisible = ref(false); // 表头设置弹层\nconst drawerOperateVisible = ref(false); // 按钮设置弹层\nconst setTable = (event: string) => {\n if (event === 'header') {\n drawerHeaderVisible.value = true;\n }\n if (event === 'operate') {\n drawerOperateVisible.value = true;\n }\n};\n\n/**\n * 表头拖动,修改width\n */\nconst headerDragend = async (newWidth: number, oldWidth: number, column: any) => {\n const findItem = colPropsList.value.find(it => it.prop === column.property);\n const editItem = column.property === 'gmEdit' ? colPropsList.value.find(it => it.type === 'edit') : null;\n if (!findItem && !editItem) {\n return;\n }\n if (findItem) {\n findItem.width = newWidth;\n }\n if (editItem) {\n editItem.width = newWidth;\n }\n // 设置列宽\n await nextTick();\n resetWidthOnHeaderDrag(column);\n gmCustomTableHeaderRef.value?.syncPropsList();\n gmCustomTableHeaderRef.value?.submitSettings({ hiddenMessage: true });\n};\n/**\n * 当表头拖动后,重新计算补充列宽度\n * 当全部列都设置了宽度,把设置过minWidth的列设置为补充列,补充表格剩余宽度\n */\nconst resetWidthOnHeaderDrag = (column?: any) => {\n // console.log('resetWidthOnHeaderDrag', column);\n if (props.disabledResetWidth) {\n return;\n }\n // // 当全部列都设置了宽度 才执行后续步骤\n // if (colPropsList.value.some(it => it.isShow && !it.width)) {\n // return;\n // }\n const minWidthCols = colPropsList.value.filter(\n // 是在展示中的列,并且不是操作列,并且设置了最小宽度\n it => it.isShow === true && it.type !== 'edit' && it.prop !== 'edit' && ((it as any)['min-width'] || it.minWidth),\n );\n for (const item of minWidthCols) {\n // 只有一个minWidth时, 也需要设置width = ''\n if (column?.property === item.prop && minWidthCols.length !== 1) {\n continue;\n }\n item.width = '';\n }\n};\n/**\n * 搜索模块\n */\nconst sortValue = defineModel<TableColumnSortValue[]>('sortValue');\n\nconst handleSortChange = (sort: Sort) => {\n if (sortValue.value) {\n sortValue.value.length = 0;\n switch (sort.order) {\n case 'ascending':\n sortValue.value.push({ field: sort.prop, order: 'asc' });\n break;\n case 'descending':\n sortValue.value.push({ field: sort.prop, order: 'desc' });\n break;\n }\n }\n\n emit('sort-change', sort);\n};\nconst exposeEvents = [\n 'clearSelection',\n 'getSelectionRows',\n 'toggleRowSelection',\n 'toggleAllSelection',\n 'toggleRowExpansion',\n 'setCurrentRow',\n 'setChecked',\n 'clearSort',\n 'clearFilter',\n 'doLayout',\n 'sort',\n 'scrollTo',\n 'setScrollTop',\n 'setScrollLeft',\n] as const;\nconst { exposeFns } = getGmExports(GmTbaleCustomRef, exposeEvents);\n\n// 用于计算table高度\nconst gmTableCustomDivRef = ref<HTMLDivElement>();\nconst { height: tableMaxHeight } = useElementRemainingHeight(gmTableCustomDivRef, {\n bottomOffset: props.heightOffset || 30, // 高度 - 顶部距离 - 分页器\n minHeight: 300,\n});\n\ndefineExpose({\n colPropsList,\n ...exposeFns,\n});\n</script>\n\n<style lang=\"scss\" scoped>\n:deep(.gmTableNoBorder .el-table__body .el-table__cell) {\n border-right: none;\n}\n:deep(.gmTableNoBorder .el-table__inner-wrapper:before) {\n height: 0;\n}\n:deep(.gmTableNoBorder.el-table--border .el-table__inner-wrapper:after) {\n height: 0;\n}\n:deep(.gmTableNoBorder.el-table--border:after) {\n height: 0;\n}\n:deep(.gmTableNoBorder.el-table--border:before) {\n height: 0;\n}\n:deep(.gmTableNoBorder .el-table__border-left-patch) {\n height: 0;\n}\n</style>\n"],"names":["_useSlots","_useModel"],"mappings":"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"}
|
package/es/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.mjs
CHANGED
|
@@ -121,7 +121,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
121
121
|
const { cloned: clonedColPropsList, sync: syncPropsList } = useCloned(colPropsList);
|
|
122
122
|
watch(isShowDrawer, (newValue) => {
|
|
123
123
|
if (newValue) {
|
|
124
|
-
|
|
124
|
+
const cloned = cloneDeep(colPropsList.value);
|
|
125
|
+
const editIndex = cloned.findIndex((it) => it.type === "edit");
|
|
126
|
+
const editItem = cloned[editIndex];
|
|
127
|
+
if (editIndex > -1) {
|
|
128
|
+
cloned.splice(editIndex, 1);
|
|
129
|
+
}
|
|
130
|
+
clonedColPropsList.value = [...cloned, editItem];
|
|
125
131
|
}
|
|
126
132
|
});
|
|
127
133
|
const customSettingsValue = computed(() => customSettingsStore.customSettings[props.keyWord]?.[props.type] || []);
|
package/es/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue2.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableCustomHeader.vue2.mjs","sources":["../../../../../../../../packages/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue"],"sourcesContent":["<template>\n <gm-drawer\n v-model=\"isShowDrawer\"\n title=\"自定义表头\"\n direction=\"rtl\"\n size=\"600px\"\n append-to-body\n destroy-on-close\n class=\"table-custom-header-drawer\"\n >\n <div class=\"gm-mb-4 gm-flex gm-items-center gm-rounded gm-border gm-border-cyan-300 gm-bg-cyan-50 gm-p-2 gm-text-sm gm-text-[#777]\">\n <gm-icon><InfoFilled /></gm-icon>\n <p class=\"gm-ml-2\">\n 已选中 <span class=\"gm-text-cyan-500\">{{ checkedNumber }}</span> 项\n </p>\n </div>\n\n <div class=\"custom-content gm-text-sm\">\n <ul\n class=\"gm-flex gm-items-center gm-border gm-border-y-0 gm-border-gray-200 gm-bg-gray-200 gm-font-semibold gm-text-[#333]\"\n :style=\"titleStyle\"\n >\n <li class=\"gm-flex gm-w-14 gm-justify-center\">\n <gm-checkbox v-model=\"checkedAll\" :indeterminate=\"isIndeterminate\" />\n </li>\n <li class=\"gm-flex-1 gm-border-l gm-border-white\">列名</li>\n <li class=\"gm-w-36 gm-border-l gm-border-white\">列宽</li>\n <li class=\"gm-w-24 gm-border-l gm-border-white\">固定</li>\n <li v-if=\"dragHeader\" class=\"gm-w-28 gm-border-l gm-border-white\">拖地调整顺序</li>\n </ul>\n <transition-group class=\"custom-group gm-border-b gm-border-gray-200 gm-text-gray-600\" name=\"sort\" tag=\"div\">\n <template v-for=\"item in clonedColPropsList\" :key=\"item.prop\">\n <ul v-if=\"item.type === 'edit'\" class=\"gm-flex gm-items-center gm-border gm-border-b-0 gm-border-gray-200\">\n <li class=\"gm-flex gm-w-14 gm-justify-center\">\n <gm-checkbox v-model=\"item.isShow\" disabled />\n </li>\n <li class=\"gm-flex-1 gm-border-l gm-border-gray-200\">操作</li>\n <li class=\"gm-w-36 gm-border-l gm-border-gray-200 gm-px-2\">\n <gm-input v-model=\"item.width\" class=\"gm-w-full\" placeholder=\"设置宽度\" clearable />\n </li>\n <li class=\"gm-flex gm-w-24 gm-items-center gm-justify-center gm-gap-4 gm-border-l gm-border-gray-200\" />\n <li v-if=\"dragHeader\" class=\"gm-w-28 gm-cursor-grabbing gm-border-l gm-border-gray-200\" />\n </ul>\n <ul\n v-else\n class=\"gm-flex gm-items-center gm-border gm-border-b-0 gm-border-gray-200\"\n :draggable=\"dragHeader\"\n @dragstart=\"dragstart(item)\"\n @dragenter=\"dragenter(item, $event)\"\n @dragend=\"dragend\"\n @dragover=\"dragover($event)\"\n >\n <li class=\"gm-flex gm-w-14 gm-justify-center\">\n <gm-checkbox v-model=\"item.isShow\" />\n </li>\n <li class=\"gm-flex-1 gm-border-l gm-border-gray-200\">{{ item.label }}</li>\n <li class=\"gm-w-36 gm-border-l gm-border-gray-200 gm-px-2\">\n <gm-input v-model=\"item.width\" class=\"gm-w-full\" placeholder=\"设置宽度\" clearable />\n </li>\n <li class=\"gm-flex gm-w-24 gm-items-center gm-justify-center gm-gap-4 gm-border-l gm-border-gray-200\">\n <gm-tooltip effect=\"dark\" content=\"固定在左侧\" placement=\"top\">\n <div class=\"gm-cursor-pointer\" @click=\"handleToogleFixed(item, 'left')\">\n <svg\n t=\"1748946230868\"\n class=\"icon\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n p-id=\"15386\"\n width=\"18\"\n height=\"18\"\n >\n <path\n d=\"M958.9 895.8L732 668.9l-63 63 227 226.9 64 1.3zM792.3 379l-102.5-12.7-311-284.7c-25.2-24-65.7-23.4-90.1 1l-206 205.9c-24.6 24.6-25 65.1-1.1 90.2l284.8 311.1 12.7 102.5c0 74.7 55.1 104.7 108 51.7L844 487.1c53-53 23.1-108.1-51.7-108.1zM439.7 610.1c-4.2 4.2-9.7 6.4-15.6 6.4s-11.4-2.3-15.7-6.5l-254-254.3c-8.4-8.4-8.6-22.5-0.2-31l43.7-45c4.2-4.4 9.7-6.7 15.9-6.7 5.7 0 11.2 2.3 15.3 6.3 4.3 4 6.5 9.6 6.8 15.4 0.1 5.9-2.1 11.5-6.3 15.8l-28.5 29.3 238.6 239c8.6 8.6 8.5 22.6 0 31.3z\"\n p-id=\"15387\"\n :fill=\"item.fixed === 'left' ? '#217efd' : '#bbbbbb'\"\n />\n </svg>\n </div>\n </gm-tooltip>\n <gm-tooltip effect=\"dark\" content=\"固定在右侧\" placement=\"top\">\n <div class=\"gm-rotate-90 gm-cursor-pointer\" @click=\"handleToogleFixed(item, 'right')\">\n <svg\n t=\"1748946230868\"\n class=\"icon\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n p-id=\"15386\"\n width=\"18\"\n height=\"18\"\n >\n <path\n d=\"M958.9 895.8L732 668.9l-63 63 227 226.9 64 1.3zM792.3 379l-102.5-12.7-311-284.7c-25.2-24-65.7-23.4-90.1 1l-206 205.9c-24.6 24.6-25 65.1-1.1 90.2l284.8 311.1 12.7 102.5c0 74.7 55.1 104.7 108 51.7L844 487.1c53-53 23.1-108.1-51.7-108.1zM439.7 610.1c-4.2 4.2-9.7 6.4-15.6 6.4s-11.4-2.3-15.7-6.5l-254-254.3c-8.4-8.4-8.6-22.5-0.2-31l43.7-45c4.2-4.4 9.7-6.7 15.9-6.7 5.7 0 11.2 2.3 15.3 6.3 4.3 4 6.5 9.6 6.8 15.4 0.1 5.9-2.1 11.5-6.3 15.8l-28.5 29.3 238.6 239c8.6 8.6 8.5 22.6 0 31.3z\"\n p-id=\"15387\"\n :fill=\"item.fixed === 'right' ? '#217efd' : '#bbbbbb'\"\n />\n </svg>\n </div>\n </gm-tooltip>\n </li>\n <li v-if=\"dragHeader\" class=\"gm-w-28 gm-cursor-grabbing gm-border-l gm-border-gray-200\">\n <el-icon color=\"#217efd\"><Rank /></el-icon>\n </li>\n </ul>\n </template>\n </transition-group>\n </div>\n\n <template v-if=\"!disabledRemoteCol\" #footer>\n <div class=\"gm-flex gm-justify-between\">\n <div>\n <gm-button :loading=\"submitLoading\" type=\"primary\" size=\"default\" @click=\"onReset\">重置</gm-button>\n <gm-button :loading=\"submitLoading\" type=\"success\" size=\"default\" @click=\"onSyncRemote\">同步</gm-button>\n </div>\n <div>\n <gm-button :loading=\"submitLoading\" size=\"default\" @click=\"isShowDrawer = false\">取消</gm-button>\n <gm-button :loading=\"submitLoading\" type=\"primary\" size=\"default\" @click=\"submitSettings()\">保存</gm-button>\n </div>\n </div>\n </template>\n </gm-drawer>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { useCloned } from '@vueuse/core';\nimport { useCustomSettingsStore } from '@giime/hooks';\nimport { GmMessage } from '@giime/components/src/plugins/message';\nimport { cloneDeep } from 'lodash-es';\nimport { InfoFilled, Rank } from '@element-plus/icons-vue';\nimport { tableCustomHeaderProps } from './tableCustomHeader';\nimport type { CheckboxValueType } from 'element-plus';\nimport type { TableColumnProProps } from '../../tablePro/tableColumnPro/tableColumnPro';\n\ndefineOptions({\n name: 'GmTableCustomHeader',\n});\n\nconst props = defineProps(tableCustomHeaderProps);\nconst emit = defineEmits([\"updateColumns\"]);\n/**抽屉显示 */\nconst isShowDrawer = defineModel<boolean>('isShowDrawer', {\n required: true,\n});\n\n/**自定义按钮 props列表 */\nconst colPropsList = defineModel<TableColumnProProps[]>('colPropsList', {\n required: true,\n});\nconst customSettingsStore = useCustomSettingsStore();\n\n/**\n * 数据是否初始化完成\n */\nconst isInited = ref(false);\n/**内部克隆一份,当点击保存时 应用修改的内容 */\nconst { cloned: clonedColPropsList, sync: syncPropsList } = useCloned(colPropsList);\n// 重新打开弹窗时, 克隆一份新数据\nwatch(isShowDrawer, newValue => {\n if (newValue) {\n clonedColPropsList.value = cloneDeep(colPropsList.value);\n }\n});\nconst customSettingsValue = computed<TableColumnProProps[]>(() => customSettingsStore.customSettings[props.keyWord]?.[props.type] || []);\nconst { cloned: clonedStore } = useCloned(customSettingsValue);\n\n/** 设置表头位置样式,调整表格对齐 */\nconst titleStyle = computed(() => {\n const h = props.colDefaultPropsList.length * 44;\n const H = document.documentElement.clientHeight || document.body.clientHeight;\n return h > H - 240 ? { paddingRight: '4px' } : { paddingRight: 0 };\n});\n\n// 更新选中数据\nconst updateColumns = () => {\n colPropsList.value = clonedColPropsList.value;\n};\n// 初始化数据\nconst initColumns = async () => {\n try {\n await customSettingsStore.getCustomSettings({ key_word: props.keyWord, type: props.type }, { defaultValue: [] });\n } catch {}\n\n const colnedDefaultColumns = cloneDeep(props.colDefaultPropsList);\n\n let columns = colnedDefaultColumns;\n\n if (clonedStore.value.length) {\n columns = [];\n clonedStore.value.forEach(it => {\n const index = colnedDefaultColumns.findIndex(v => v.prop === it.prop);\n if (index > -1) {\n const item = colnedDefaultColumns.splice(index, 1)[0];\n\n columns.push({\n ...it,\n ...item,\n isShow: it.isShow,\n width: it.width,\n fixed: it.fixed,\n });\n }\n });\n clonedColPropsList.value = [...columns, ...colnedDefaultColumns];\n }\n updateColumns();\n isInited.value = true;\n};\n\n// 已选中条数\nconst checkedNumber = computed(() => {\n return clonedColPropsList.value.filter(v => v.isShow).length;\n});\n// 全选\nconst checkedAll = computed({\n get() {\n return clonedColPropsList.value.filter(it => it.type !== 'edit').every(v => v.isShow);\n },\n set(value: CheckboxValueType) {\n clonedColPropsList.value.forEach(v => {\n if (v.type !== 'edit') {\n v.isShow = Boolean(value);\n }\n });\n },\n});\n// 半选\nconst isIndeterminate = computed(() => !checkedAll.value && clonedColPropsList.value.filter(it => it.type !== 'edit').some(v => v.isShow));\n\n/** 拖拽开始 */\nconst start = ref<TableColumnProProps>();\nconst end = ref<TableColumnProProps>();\nconst dragstart = (item: TableColumnProProps) => {\n if (!props.dragHeader) return;\n document.body.style.userSelect = 'none';\n start.value = item;\n};\n/** 拖拽过程 */\nconst dragenter = (item: TableColumnProProps, e: DragEvent) => {\n if (!props.dragHeader) return;\n end.value = item;\n e.preventDefault();\n};\n/** 拖拽结束 */\nconst dragend = () => {\n if (!props.dragHeader) return;\n document.body.style.userSelect = 'text';\n if (start.value === end.value) return;\n if (start.value && end.value) {\n const oldIndex: number = clonedColPropsList.value.findIndex(v => v.prop === start.value?.prop);\n const newIndex: number = clonedColPropsList.value.findIndex(v => v.prop === end.value?.prop);\n const newItems = [...clonedColPropsList.value];\n // 删除老节点\n newItems.splice(oldIndex, 1);\n\n // 目标位置新增节点\n newItems.splice(newIndex, 0, start.value);\n clonedColPropsList.value = [...newItems];\n }\n};\n/** 拖拽事件 */\nconst dragover = (e: DragEvent) => {\n if (!props.dragHeader) return;\n e.preventDefault();\n};\n\nconst submitLoading = ref(false);\n// 保存\nconst submitSettings = async (options?: { hiddenMessage?: boolean }) => {\n try {\n submitLoading.value = true;\n const { data } = await customSettingsStore.addCustomSettings({\n key_word: props.keyWord,\n value: JSON.stringify(clonedColPropsList.value),\n type: props.type,\n });\n submitLoading.value = false;\n if (data.code !== 200) {\n return;\n }\n updateColumns();\n if (!options?.hiddenMessage) {\n GmMessage.success('保存成功');\n }\n emit('updateColumns');\n } catch (e) {\n console.error(e);\n submitLoading.value = false;\n }\n};\n/**同步远程设置 */\nconst onSyncRemote = async () => {\n try {\n submitLoading.value = true;\n await customSettingsStore.syncRemoteSetting({\n key_word: props.keyWord,\n type: props.type,\n });\n submitLoading.value = false;\n initColumns();\n GmMessage.success('同步成功');\n } catch (e) {\n console.error(e);\n submitLoading.value = false;\n }\n};\n// 重置\nconst onReset = () => {\n clonedColPropsList.value = cloneDeep(props.colDefaultPropsList);\n};\n// 点击固定列\nconst handleToogleFixed = (row: TableColumnProProps, fixed: string) => {\n if (row.fixed === fixed) {\n row.fixed = false;\n return;\n }\n row.fixed = fixed;\n};\n\nonMounted(() => {\n if (props.disabledRemoteCol) {\n isInited.value = true;\n } else {\n initColumns();\n }\n});\ndefineExpose({\n isInited,\n submitSettings,\n syncPropsList,\n});\n</script>\n\n<style lang=\"scss\">\n.table-custom-header-drawer {\n .el-drawer__header {\n padding: 10px 15px;\n margin: 0;\n border-bottom: 1px solid #ebeef5;\n }\n .el-drawer__title {\n font-size: 14px;\n color: #333;\n }\n .el-drawer__body {\n padding: 15px;\n }\n .el-drawer__footer {\n padding: 10px 15px;\n border-top: 1px solid #ebeef5;\n }\n .el-checkbox {\n display: flex;\n align-items: center;\n }\n .el-input__inner {\n text-align: center;\n }\n .el-input__suffix {\n position: absolute;\n right: 10px;\n }\n .custom-content {\n li {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 44px;\n }\n }\n .custom-group {\n max-height: calc(100vh - 226px);\n overflow-y: auto;\n\n &::-webkit-scrollbar {\n /*滚动条整体样式*/\n width: 4px;\n /*高宽分别对应横竖滚动条的尺寸*/\n height: 1px;\n }\n\n &::-webkit-scrollbar-thumb {\n /*滚动条里面小方块*/\n border-radius: 10px;\n box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);\n background: #999;\n }\n\n &::-webkit-scrollbar-track {\n /*滚动条里面轨道*/\n box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);\n border-radius: 10px;\n background: #eee;\n }\n }\n}\n</style>\n"],"names":["_useModel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TableCustomHeader.vue2.mjs","sources":["../../../../../../../../packages/components/src/composite/tableCustom/tableCustomHeader/TableCustomHeader.vue"],"sourcesContent":["<template>\n <gm-drawer\n v-model=\"isShowDrawer\"\n title=\"自定义表头\"\n direction=\"rtl\"\n size=\"600px\"\n append-to-body\n destroy-on-close\n class=\"table-custom-header-drawer\"\n >\n <div class=\"gm-mb-4 gm-flex gm-items-center gm-rounded gm-border gm-border-cyan-300 gm-bg-cyan-50 gm-p-2 gm-text-sm gm-text-[#777]\">\n <gm-icon><InfoFilled /></gm-icon>\n <p class=\"gm-ml-2\">\n 已选中 <span class=\"gm-text-cyan-500\">{{ checkedNumber }}</span> 项\n </p>\n </div>\n\n <div class=\"custom-content gm-text-sm\">\n <ul\n class=\"gm-flex gm-items-center gm-border gm-border-y-0 gm-border-gray-200 gm-bg-gray-200 gm-font-semibold gm-text-[#333]\"\n :style=\"titleStyle\"\n >\n <li class=\"gm-flex gm-w-14 gm-justify-center\">\n <gm-checkbox v-model=\"checkedAll\" :indeterminate=\"isIndeterminate\" />\n </li>\n <li class=\"gm-flex-1 gm-border-l gm-border-white\">列名</li>\n <li class=\"gm-w-36 gm-border-l gm-border-white\">列宽</li>\n <li class=\"gm-w-24 gm-border-l gm-border-white\">固定</li>\n <li v-if=\"dragHeader\" class=\"gm-w-28 gm-border-l gm-border-white\">拖地调整顺序</li>\n </ul>\n <transition-group class=\"custom-group gm-border-b gm-border-gray-200 gm-text-gray-600\" name=\"sort\" tag=\"div\">\n <template v-for=\"item in clonedColPropsList\" :key=\"item.prop\">\n <ul v-if=\"item.type === 'edit'\" class=\"gm-flex gm-items-center gm-border gm-border-b-0 gm-border-gray-200\">\n <li class=\"gm-flex gm-w-14 gm-justify-center\">\n <gm-checkbox v-model=\"item.isShow\" disabled />\n </li>\n <li class=\"gm-flex-1 gm-border-l gm-border-gray-200\">操作</li>\n <li class=\"gm-w-36 gm-border-l gm-border-gray-200 gm-px-2\">\n <gm-input v-model=\"item.width\" class=\"gm-w-full\" placeholder=\"设置宽度\" clearable />\n </li>\n <li class=\"gm-flex gm-w-24 gm-items-center gm-justify-center gm-gap-4 gm-border-l gm-border-gray-200\" />\n <li v-if=\"dragHeader\" class=\"gm-w-28 gm-cursor-grabbing gm-border-l gm-border-gray-200\" />\n </ul>\n <ul\n v-else\n class=\"gm-flex gm-items-center gm-border gm-border-b-0 gm-border-gray-200\"\n :draggable=\"dragHeader\"\n @dragstart=\"dragstart(item)\"\n @dragenter=\"dragenter(item, $event)\"\n @dragend=\"dragend\"\n @dragover=\"dragover($event)\"\n >\n <li class=\"gm-flex gm-w-14 gm-justify-center\">\n <gm-checkbox v-model=\"item.isShow\" />\n </li>\n <li class=\"gm-flex-1 gm-border-l gm-border-gray-200\">{{ item.label }}</li>\n <li class=\"gm-w-36 gm-border-l gm-border-gray-200 gm-px-2\">\n <gm-input v-model=\"item.width\" class=\"gm-w-full\" placeholder=\"设置宽度\" clearable />\n </li>\n <li class=\"gm-flex gm-w-24 gm-items-center gm-justify-center gm-gap-4 gm-border-l gm-border-gray-200\">\n <gm-tooltip effect=\"dark\" content=\"固定在左侧\" placement=\"top\">\n <div class=\"gm-cursor-pointer\" @click=\"handleToogleFixed(item, 'left')\">\n <svg\n t=\"1748946230868\"\n class=\"icon\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n p-id=\"15386\"\n width=\"18\"\n height=\"18\"\n >\n <path\n d=\"M958.9 895.8L732 668.9l-63 63 227 226.9 64 1.3zM792.3 379l-102.5-12.7-311-284.7c-25.2-24-65.7-23.4-90.1 1l-206 205.9c-24.6 24.6-25 65.1-1.1 90.2l284.8 311.1 12.7 102.5c0 74.7 55.1 104.7 108 51.7L844 487.1c53-53 23.1-108.1-51.7-108.1zM439.7 610.1c-4.2 4.2-9.7 6.4-15.6 6.4s-11.4-2.3-15.7-6.5l-254-254.3c-8.4-8.4-8.6-22.5-0.2-31l43.7-45c4.2-4.4 9.7-6.7 15.9-6.7 5.7 0 11.2 2.3 15.3 6.3 4.3 4 6.5 9.6 6.8 15.4 0.1 5.9-2.1 11.5-6.3 15.8l-28.5 29.3 238.6 239c8.6 8.6 8.5 22.6 0 31.3z\"\n p-id=\"15387\"\n :fill=\"item.fixed === 'left' ? '#217efd' : '#bbbbbb'\"\n />\n </svg>\n </div>\n </gm-tooltip>\n <gm-tooltip effect=\"dark\" content=\"固定在右侧\" placement=\"top\">\n <div class=\"gm-rotate-90 gm-cursor-pointer\" @click=\"handleToogleFixed(item, 'right')\">\n <svg\n t=\"1748946230868\"\n class=\"icon\"\n viewBox=\"0 0 1024 1024\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n p-id=\"15386\"\n width=\"18\"\n height=\"18\"\n >\n <path\n d=\"M958.9 895.8L732 668.9l-63 63 227 226.9 64 1.3zM792.3 379l-102.5-12.7-311-284.7c-25.2-24-65.7-23.4-90.1 1l-206 205.9c-24.6 24.6-25 65.1-1.1 90.2l284.8 311.1 12.7 102.5c0 74.7 55.1 104.7 108 51.7L844 487.1c53-53 23.1-108.1-51.7-108.1zM439.7 610.1c-4.2 4.2-9.7 6.4-15.6 6.4s-11.4-2.3-15.7-6.5l-254-254.3c-8.4-8.4-8.6-22.5-0.2-31l43.7-45c4.2-4.4 9.7-6.7 15.9-6.7 5.7 0 11.2 2.3 15.3 6.3 4.3 4 6.5 9.6 6.8 15.4 0.1 5.9-2.1 11.5-6.3 15.8l-28.5 29.3 238.6 239c8.6 8.6 8.5 22.6 0 31.3z\"\n p-id=\"15387\"\n :fill=\"item.fixed === 'right' ? '#217efd' : '#bbbbbb'\"\n />\n </svg>\n </div>\n </gm-tooltip>\n </li>\n <li v-if=\"dragHeader\" class=\"gm-w-28 gm-cursor-grabbing gm-border-l gm-border-gray-200\">\n <el-icon color=\"#217efd\"><Rank /></el-icon>\n </li>\n </ul>\n </template>\n </transition-group>\n </div>\n\n <template v-if=\"!disabledRemoteCol\" #footer>\n <div class=\"gm-flex gm-justify-between\">\n <div>\n <gm-button :loading=\"submitLoading\" type=\"primary\" size=\"default\" @click=\"onReset\">重置</gm-button>\n <gm-button :loading=\"submitLoading\" type=\"success\" size=\"default\" @click=\"onSyncRemote\">同步</gm-button>\n </div>\n <div>\n <gm-button :loading=\"submitLoading\" size=\"default\" @click=\"isShowDrawer = false\">取消</gm-button>\n <gm-button :loading=\"submitLoading\" type=\"primary\" size=\"default\" @click=\"submitSettings()\">保存</gm-button>\n </div>\n </div>\n </template>\n </gm-drawer>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, ref, watch } from 'vue';\nimport { useCloned } from '@vueuse/core';\nimport { useCustomSettingsStore } from '@giime/hooks';\nimport { GmMessage } from '@giime/components/src/plugins/message';\nimport { cloneDeep } from 'lodash-es';\nimport { InfoFilled, Rank } from '@element-plus/icons-vue';\nimport { tableCustomHeaderProps } from './tableCustomHeader';\nimport type { CheckboxValueType } from 'element-plus';\nimport type { TableColumnProProps } from '../../tablePro/tableColumnPro/tableColumnPro';\n\ndefineOptions({\n name: 'GmTableCustomHeader',\n});\n\nconst props = defineProps(tableCustomHeaderProps);\nconst emit = defineEmits([\"updateColumns\"]);\n/**抽屉显示 */\nconst isShowDrawer = defineModel<boolean>('isShowDrawer', {\n required: true,\n});\n\n/**自定义按钮 props列表 */\nconst colPropsList = defineModel<TableColumnProProps[]>('colPropsList', {\n required: true,\n});\nconst customSettingsStore = useCustomSettingsStore();\n\n/**\n * 数据是否初始化完成\n */\nconst isInited = ref(false);\n/**内部克隆一份,当点击保存时 应用修改的内容 */\nconst { cloned: clonedColPropsList, sync: syncPropsList } = useCloned(colPropsList);\n// 重新打开弹窗时, 克隆一份新数据\nwatch(isShowDrawer, newValue => {\n if (newValue) {\n const cloned = cloneDeep(colPropsList.value);\n\n // 操作列单独处理,放在最后面\n const editIndex = cloned.findIndex(it => it.type === 'edit');\n const editItem = cloned[editIndex];\n if (editIndex > -1) {\n cloned.splice(editIndex, 1);\n }\n clonedColPropsList.value = [...cloned, editItem];\n }\n});\nconst customSettingsValue = computed<TableColumnProProps[]>(() => customSettingsStore.customSettings[props.keyWord]?.[props.type] || []);\nconst { cloned: clonedStore } = useCloned(customSettingsValue);\n\n/** 设置表头位置样式,调整表格对齐 */\nconst titleStyle = computed(() => {\n const h = props.colDefaultPropsList.length * 44;\n const H = document.documentElement.clientHeight || document.body.clientHeight;\n return h > H - 240 ? { paddingRight: '4px' } : { paddingRight: 0 };\n});\n\n// 更新选中数据\nconst updateColumns = () => {\n colPropsList.value = clonedColPropsList.value;\n};\n// 初始化数据\nconst initColumns = async () => {\n try {\n await customSettingsStore.getCustomSettings({ key_word: props.keyWord, type: props.type }, { defaultValue: [] });\n } catch {}\n\n const colnedDefaultColumns = cloneDeep(props.colDefaultPropsList);\n\n let columns = colnedDefaultColumns;\n\n if (clonedStore.value.length) {\n columns = [];\n clonedStore.value.forEach(it => {\n const index = colnedDefaultColumns.findIndex(v => v.prop === it.prop);\n if (index > -1) {\n const item = colnedDefaultColumns.splice(index, 1)[0];\n\n columns.push({\n ...it,\n ...item,\n isShow: it.isShow,\n width: it.width,\n fixed: it.fixed,\n });\n }\n });\n clonedColPropsList.value = [...columns, ...colnedDefaultColumns];\n }\n updateColumns();\n isInited.value = true;\n};\n\n// 已选中条数\nconst checkedNumber = computed(() => {\n return clonedColPropsList.value.filter(v => v.isShow).length;\n});\n// 全选\nconst checkedAll = computed({\n get() {\n return clonedColPropsList.value.filter(it => it.type !== 'edit').every(v => v.isShow);\n },\n set(value: CheckboxValueType) {\n clonedColPropsList.value.forEach(v => {\n if (v.type !== 'edit') {\n v.isShow = Boolean(value);\n }\n });\n },\n});\n// 半选\nconst isIndeterminate = computed(() => !checkedAll.value && clonedColPropsList.value.filter(it => it.type !== 'edit').some(v => v.isShow));\n\n/** 拖拽开始 */\nconst start = ref<TableColumnProProps>();\nconst end = ref<TableColumnProProps>();\nconst dragstart = (item: TableColumnProProps) => {\n if (!props.dragHeader) return;\n document.body.style.userSelect = 'none';\n start.value = item;\n};\n/** 拖拽过程 */\nconst dragenter = (item: TableColumnProProps, e: DragEvent) => {\n if (!props.dragHeader) return;\n end.value = item;\n e.preventDefault();\n};\n/** 拖拽结束 */\nconst dragend = () => {\n if (!props.dragHeader) return;\n document.body.style.userSelect = 'text';\n if (start.value === end.value) return;\n if (start.value && end.value) {\n const oldIndex: number = clonedColPropsList.value.findIndex(v => v.prop === start.value?.prop);\n const newIndex: number = clonedColPropsList.value.findIndex(v => v.prop === end.value?.prop);\n const newItems = [...clonedColPropsList.value];\n // 删除老节点\n newItems.splice(oldIndex, 1);\n\n // 目标位置新增节点\n newItems.splice(newIndex, 0, start.value);\n clonedColPropsList.value = [...newItems];\n }\n};\n/** 拖拽事件 */\nconst dragover = (e: DragEvent) => {\n if (!props.dragHeader) return;\n e.preventDefault();\n};\n\nconst submitLoading = ref(false);\n// 保存\nconst submitSettings = async (options?: { hiddenMessage?: boolean }) => {\n try {\n submitLoading.value = true;\n const { data } = await customSettingsStore.addCustomSettings({\n key_word: props.keyWord,\n value: JSON.stringify(clonedColPropsList.value),\n type: props.type,\n });\n submitLoading.value = false;\n if (data.code !== 200) {\n return;\n }\n updateColumns();\n if (!options?.hiddenMessage) {\n GmMessage.success('保存成功');\n }\n emit('updateColumns');\n } catch (e) {\n console.error(e);\n submitLoading.value = false;\n }\n};\n/**同步远程设置 */\nconst onSyncRemote = async () => {\n try {\n submitLoading.value = true;\n await customSettingsStore.syncRemoteSetting({\n key_word: props.keyWord,\n type: props.type,\n });\n submitLoading.value = false;\n initColumns();\n GmMessage.success('同步成功');\n } catch (e) {\n console.error(e);\n submitLoading.value = false;\n }\n};\n// 重置\nconst onReset = () => {\n clonedColPropsList.value = cloneDeep(props.colDefaultPropsList);\n};\n// 点击固定列\nconst handleToogleFixed = (row: TableColumnProProps, fixed: string) => {\n if (row.fixed === fixed) {\n row.fixed = false;\n return;\n }\n row.fixed = fixed;\n};\n\nonMounted(() => {\n if (props.disabledRemoteCol) {\n isInited.value = true;\n } else {\n initColumns();\n }\n});\ndefineExpose({\n isInited,\n submitSettings,\n syncPropsList,\n});\n</script>\n\n<style lang=\"scss\">\n.table-custom-header-drawer {\n .el-drawer__header {\n padding: 10px 15px;\n margin: 0;\n border-bottom: 1px solid #ebeef5;\n }\n .el-drawer__title {\n font-size: 14px;\n color: #333;\n }\n .el-drawer__body {\n padding: 15px;\n }\n .el-drawer__footer {\n padding: 10px 15px;\n border-top: 1px solid #ebeef5;\n }\n .el-checkbox {\n display: flex;\n align-items: center;\n }\n .el-input__inner {\n text-align: center;\n }\n .el-input__suffix {\n position: absolute;\n right: 10px;\n }\n .custom-content {\n li {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 44px;\n }\n }\n .custom-group {\n max-height: calc(100vh - 226px);\n overflow-y: auto;\n\n &::-webkit-scrollbar {\n /*滚动条整体样式*/\n width: 4px;\n /*高宽分别对应横竖滚动条的尺寸*/\n height: 1px;\n }\n\n &::-webkit-scrollbar-thumb {\n /*滚动条里面小方块*/\n border-radius: 10px;\n box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.1);\n background: #999;\n }\n\n &::-webkit-scrollbar-track {\n /*滚动条里面轨道*/\n box-shadow: inset 0 0 3px rgba(0, 0, 0, 0.1);\n border-radius: 10px;\n background: #eee;\n }\n }\n}\n</style>\n"],"names":["_useModel"],"mappings":"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"}
|
package/es/giime/index.mjs
CHANGED
|
@@ -34,6 +34,7 @@ export { mergePropsToArray } from '../utils/src/array.mjs';
|
|
|
34
34
|
export { integerPattern, moneyPattern, nonNegativeIntegerPattern, nonNegativeNumberPattern, nonZeroNumberPattern, numberPattern, positiveIntegerPattern, positiveNumberPattern } from '../utils/src/regexPatterns/number.mjs';
|
|
35
35
|
export { base64Pattern, domainPattern, emailPattern, urlPattern } from '../utils/src/regexPatterns/url.mjs';
|
|
36
36
|
export { getTenantType, isGiikin, isGiiktok } from '../utils/src/tenant.mjs';
|
|
37
|
+
export { Clarity } from '../utils/src/clarity/index.mjs';
|
|
37
38
|
export { affixEmits, affixProps } from '../components/src/base/affix/affix.mjs';
|
|
38
39
|
export { GmAffix } from '../components/src/base/affix/index.mjs';
|
|
39
40
|
export { alertEffects, alertEmits, alertProps } from '../components/src/base/alert/alert.mjs';
|
package/es/giime/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../packages/giime/index.ts"],"sourcesContent":["import installer from './defaults';\nimport './tailwind.css';\nexport * from '@giime/utils';\nexport * from '@giime/components';\nexport * from '@giime/hooks';\n// export * from '@giime/api'; // 用户通过giime/es/api 导入类型\nexport const install = installer.install;\nexport const version = installer.version;\nexport default installer;\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../packages/giime/index.ts"],"sourcesContent":["import installer from './defaults';\nimport './tailwind.css';\nexport * from '@giime/utils';\nexport * from '@giime/components';\nexport * from '@giime/hooks';\n// export * from '@giime/api'; // 用户通过giime/es/api 导入类型\nexport const install = installer.install;\nexport const version = installer.version;\nexport default installer;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMO,MAAM,UAAU,SAAA,CAAU;AAC1B,MAAM,UAAU,SAAA,CAAU;;;;"}
|
package/es/giime/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "0.9.
|
|
1
|
+
export declare const version = "0.9.4-beta.1";
|
package/es/giime/version.mjs
CHANGED
package/es/giime/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.9.
|
|
1
|
+
{"version":3,"file":"version.mjs","sources":["../../../../packages/giime/version.ts"],"sourcesContent":["export const version = '0.9.4-beta.1';\n"],"names":[],"mappings":"AAAO,MAAM,OAAA,GAAU;;;;"}
|
|
@@ -7,7 +7,7 @@ export declare const useLangListStore: import("pinia").StoreDefinition<"gmLangLi
|
|
|
7
7
|
isFinished: import("vue").Ref<boolean>;
|
|
8
8
|
getLangList: () => Promise<void>;
|
|
9
9
|
getDataFinally: () => Promise<unknown>;
|
|
10
|
-
}, "
|
|
10
|
+
}, "isLoading" | "isFinished" | "langList">, Pick<{
|
|
11
11
|
langList: import("@vueuse/shared").RemovableRef<LanguageOpenVo[]>;
|
|
12
12
|
isLoading: import("vue").Ref<boolean>;
|
|
13
13
|
isFinished: import("vue").Ref<boolean>;
|
|
@@ -5,7 +5,7 @@ export declare const useLineListStore: import("pinia").StoreDefinition<"gmLineLi
|
|
|
5
5
|
lineList: import("@vueuse/shared").RemovableRef<PostShopAdminStoreFilterResponseDataLine[]>;
|
|
6
6
|
isLoading: import("vue").Ref<boolean>;
|
|
7
7
|
getLineList: () => Promise<void>;
|
|
8
|
-
}, "
|
|
8
|
+
}, "isLoading" | "lineList">, Pick<{
|
|
9
9
|
lineList: import("@vueuse/shared").RemovableRef<PostShopAdminStoreFilterResponseDataLine[]>;
|
|
10
10
|
isLoading: import("vue").Ref<boolean>;
|
|
11
11
|
getLineList: () => Promise<void>;
|