@ditari/bsui 1.1.20 → 1.1.22
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/CHANGELOG.md +15 -0
- package/dist/cjs/desensitize/Desensitize.cjs.map +1 -1
- package/dist/cjs/desensitize/Desensitize.d.ts +2 -2
- package/dist/cjs/layout/NavTabs.vue2.cjs +0 -4
- package/dist/cjs/layout/NavTabs.vue2.cjs.map +1 -1
- package/dist/esm/desensitize/Desensitize.d.ts +2 -2
- package/dist/esm/desensitize/Desensitize.mjs.map +1 -1
- package/dist/esm/layout/NavTabs.vue2.mjs +0 -4
- package/dist/esm/layout/NavTabs.vue2.mjs.map +1 -1
- package/example/src/api/list.ts +9 -11
- package/example/src/views/table/List.vue +4 -1
- package/package.json +3 -3
- package/src/desensitize/Desensitize.tsx +1 -1
- package/src/layout/NavTabs.vue +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @ditari/bsui
|
|
2
2
|
|
|
3
|
+
## 1.1.22
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 1.标签关闭,新增删除缓存的组件 name
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
- @ditari/store@1.0.6
|
|
10
|
+
- @ditari/hooks@1.0.8
|
|
11
|
+
|
|
12
|
+
## 1.1.21
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 1.脱敏组件,value 属性添加类型
|
|
17
|
+
|
|
3
18
|
## 1.1.20
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Desensitize.cjs","sources":["../../../src/desensitize/Desensitize.tsx"],"sourcesContent":["/**\n * 脱敏\n * @author 余春林\n */\nimport { defineComponent, computed, ref } from \"vue\";\nimport { EyeOutlined, EyeInvisibleOutlined } from \"@ant-design/icons-vue\";\nimport { prefixName } from \"../theme\";\n\n//class名称\nconst baseClassName = `${prefixName}-desensitize`;\nexport default defineComponent({\n name: \"DDesensitize\",\n components: {\n EyeOutlined,\n EyeInvisibleOutlined\n },\n props: {\n value: {\n // type: [string,number] 可以使用PropType 来声明对象类型\n // type: String as () => string | number,\n type: String,\n required: true\n },\n // 替换样式\n style: {\n type: String,\n default: \"*\"\n },\n // 替换规则 id 和mobile\n rule: {\n type: String,\n required: true\n },\n // 正则表达式\n regex: {\n type: String,\n default: \"\"\n },\n // 替换方式\n regexValue: {\n type: String,\n default: \"\"\n },\n eye: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n // 控制显示隐藏脱敏或者不脱敏\n const invisible = ref(true);\n const desensitizedString = computed(() => {\n const value = props.value;\n const rule = props.rule;\n const regex = props.regex;\n const regexValue = props.regexValue;\n let str = \"\";\n if (!value) {\n return \"\";\n }\n if (rule) {\n switch (rule) {\n case \"mobile\":\n str = value.replace(/(\\d{3})\\d{4}(\\d{4})/, \"$1*****$2\");\n break;\n case \"id\":\n str = value.replace(/(\\d{4})\\d{10}(\\w{4})/, \"$1*****$2\");\n break;\n }\n } else {\n str = value.replace(regex, regexValue);\n }\n return str;\n });\n return () => (\n <>\n <div class={baseClassName}>\n <span class={\"value\"}>\n {invisible.value ? desensitizedString.value : props.value}\n </span>\n {props.eye ? (\n <span>\n <eye-outlined\n onClick={() => (invisible.value = !invisible.value)}\n v-show={!invisible.value}\n />\n <eye-invisible-outlined\n onClick={() => (invisible.value = !invisible.value)}\n v-show={invisible.value}\n />\n </span>\n ) : undefined}\n </div>\n </>\n );\n }\n});\n"],"names":["baseClassName","prefixName","defineComponent","name","components","EyeOutlined","EyeInvisibleOutlined","props","value","type","String","required","style","default","rule","regex","regexValue","eye","Boolean","setup","invisible","ref","desensitizedString","computed","str","replace","_createVNode","_Fragment","_withDirectives","_resolveComponent","onClick","_vShow","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Desensitize.cjs","sources":["../../../src/desensitize/Desensitize.tsx"],"sourcesContent":["/**\n * 脱敏\n * @author 余春林\n */\nimport { defineComponent, computed, ref } from \"vue\";\nimport { EyeOutlined, EyeInvisibleOutlined } from \"@ant-design/icons-vue\";\nimport { prefixName } from \"../theme\";\n\n//class名称\nconst baseClassName = `${prefixName}-desensitize`;\nexport default defineComponent({\n name: \"DDesensitize\",\n components: {\n EyeOutlined,\n EyeInvisibleOutlined\n },\n props: {\n value: {\n // type: [string,number] 可以使用PropType 来声明对象类型\n // type: String as () => string | number,\n type: String as () => string | undefined,\n required: true\n },\n // 替换样式\n style: {\n type: String,\n default: \"*\"\n },\n // 替换规则 id 和mobile\n rule: {\n type: String,\n required: true\n },\n // 正则表达式\n regex: {\n type: String,\n default: \"\"\n },\n // 替换方式\n regexValue: {\n type: String,\n default: \"\"\n },\n eye: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n // 控制显示隐藏脱敏或者不脱敏\n const invisible = ref(true);\n const desensitizedString = computed(() => {\n const value = props.value;\n const rule = props.rule;\n const regex = props.regex;\n const regexValue = props.regexValue;\n let str = \"\";\n if (!value) {\n return \"\";\n }\n if (rule) {\n switch (rule) {\n case \"mobile\":\n str = value.replace(/(\\d{3})\\d{4}(\\d{4})/, \"$1*****$2\");\n break;\n case \"id\":\n str = value.replace(/(\\d{4})\\d{10}(\\w{4})/, \"$1*****$2\");\n break;\n }\n } else {\n str = value.replace(regex, regexValue);\n }\n return str;\n });\n return () => (\n <>\n <div class={baseClassName}>\n <span class={\"value\"}>\n {invisible.value ? desensitizedString.value : props.value}\n </span>\n {props.eye ? (\n <span>\n <eye-outlined\n onClick={() => (invisible.value = !invisible.value)}\n v-show={!invisible.value}\n />\n <eye-invisible-outlined\n onClick={() => (invisible.value = !invisible.value)}\n v-show={invisible.value}\n />\n </span>\n ) : undefined}\n </div>\n </>\n );\n }\n});\n"],"names":["baseClassName","prefixName","defineComponent","name","components","EyeOutlined","EyeInvisibleOutlined","props","value","type","String","required","style","default","rule","regex","regexValue","eye","Boolean","setup","invisible","ref","desensitizedString","computed","str","replace","_createVNode","_Fragment","_withDirectives","_resolveComponent","onClick","_vShow","undefined"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const _default: import("vue").DefineComponent<{
|
|
2
2
|
value: {
|
|
3
|
-
type:
|
|
3
|
+
type: () => string | undefined;
|
|
4
4
|
required: true;
|
|
5
5
|
};
|
|
6
6
|
style: {
|
|
@@ -25,7 +25,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
25
25
|
};
|
|
26
26
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
27
27
|
value: {
|
|
28
|
-
type:
|
|
28
|
+
type: () => string | undefined;
|
|
29
29
|
required: true;
|
|
30
30
|
};
|
|
31
31
|
style: {
|
|
@@ -59,13 +59,9 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
59
59
|
}
|
|
60
60
|
};
|
|
61
61
|
const onClose = ($event, key) => {
|
|
62
|
-
const rs = navTabs.value.find((item) => item.fullPath === key);
|
|
63
62
|
$event.stopPropagation();
|
|
64
63
|
navStore.deleteTabs(key);
|
|
65
64
|
router.push(navTabs.value[navTabs.value.length - 1].fullPath);
|
|
66
|
-
if (rs.name) {
|
|
67
|
-
keepAliveStore.deleteKeepAlive(rs.name);
|
|
68
|
-
}
|
|
69
65
|
};
|
|
70
66
|
const closeStatus = (item) => {
|
|
71
67
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavTabs.vue2.cjs","sources":["../../../src/layout/NavTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * 标签组件\n */\nimport { computed, Ref, watch, watchEffect, ref } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\nimport { storeToRefs } from \"pinia\";\n\nimport {\n useNavTabsStore,\n useKeepAliveStore,\n useMenuStore\n} from \"@ditari/store\";\n\nimport { prefixName } from \"../theme\";\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst navStore = useNavTabsStore();\nconst keepAliveStore = useKeepAliveStore();\nconst menuStore = useMenuStore();\n\n//class名称\nconst baseClassName = `${prefixName}-nav`;\n\n//标签列表\nconst navTabs: Ref<any[]> = computed(() => navStore.getList);\n// 被选中的菜单\nconst { selectedMenuKeys } = storeToRefs(menuStore);\n//当前被激活的标签 通过选中的菜单得到\nconst activeKey = ref(\"\");\nwatchEffect(() => {\n activeKey.value =\n selectedMenuKeys.value.length > 0 ? selectedMenuKeys.value[0] : \"\";\n});\n//首次进入页面或者刷新的时候执行\nsetNavTabs();\n// 监听路由变化\nwatch(\n () => route.path,\n () => {\n //TODO 需要优化 确保只有未打开过的标签 进入保存\n setNavTabs();\n }\n);\n\n//设置标签\nfunction setNavTabs() {\n // 保存标签\n navStore.save(route);\n // 设置激活的标签\n //navStore.setActiveKey(route.path);\n selectedMenuKeys.value = [route.path];\n keepAliveStore.save(route);\n}\n\n/**\n * 切换标签\n * @param nav\n */\nconst onClick = (key: string) => {\n if (key !== route.path) {\n // 匹配打开的标签路由数据\n const rs = navTabs.value.filter((item: any) => item.path === key)[0];\n // 打开路由\n router.push({\n path: rs.path,\n query: rs.query,\n params: rs.params,\n fullPath: rs.fullPath\n } as any);\n }\n};\n\n/**\n * 关闭标签\n * @param $event\n * @param targetKey\n */\nconst onClose = ($event: any, key: string) => {\n const rs = navTabs.value.find((item) => item.fullPath === key) as any;\n //阻止冒泡\n $event.stopPropagation();\n // 删除标签\n navStore.deleteTabs(key);\n // 重新push已打开的路由\n router.push(navTabs.value[navTabs.value.length - 1].fullPath);\n\n //根据name 删除缓存的组件\n if (rs.name) {\n
|
|
1
|
+
{"version":3,"file":"NavTabs.vue2.cjs","sources":["../../../src/layout/NavTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * 标签组件\n */\nimport { computed, Ref, watch, watchEffect, ref } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\nimport { storeToRefs } from \"pinia\";\n\nimport {\n useNavTabsStore,\n useKeepAliveStore,\n useMenuStore\n} from \"@ditari/store\";\n\nimport { prefixName } from \"../theme\";\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst navStore = useNavTabsStore();\nconst keepAliveStore = useKeepAliveStore();\nconst menuStore = useMenuStore();\n\n//class名称\nconst baseClassName = `${prefixName}-nav`;\n\n//标签列表\nconst navTabs: Ref<any[]> = computed(() => navStore.getList);\n// 被选中的菜单\nconst { selectedMenuKeys } = storeToRefs(menuStore);\n//当前被激活的标签 通过选中的菜单得到\nconst activeKey = ref(\"\");\nwatchEffect(() => {\n activeKey.value =\n selectedMenuKeys.value.length > 0 ? selectedMenuKeys.value[0] : \"\";\n});\n//首次进入页面或者刷新的时候执行\nsetNavTabs();\n// 监听路由变化\nwatch(\n () => route.path,\n () => {\n //TODO 需要优化 确保只有未打开过的标签 进入保存\n setNavTabs();\n }\n);\n\n//设置标签\nfunction setNavTabs() {\n // 保存标签\n navStore.save(route);\n // 设置激活的标签\n //navStore.setActiveKey(route.path);\n selectedMenuKeys.value = [route.path];\n keepAliveStore.save(route);\n}\n\n/**\n * 切换标签\n * @param nav\n */\nconst onClick = (key: string) => {\n if (key !== route.path) {\n // 匹配打开的标签路由数据\n const rs = navTabs.value.filter((item: any) => item.path === key)[0];\n // 打开路由\n router.push({\n path: rs.path,\n query: rs.query,\n params: rs.params,\n fullPath: rs.fullPath\n } as any);\n }\n};\n\n/**\n * 关闭标签\n * @param $event\n * @param targetKey\n */\nconst onClose = ($event: any, key: string) => {\n //const rs = navTabs.value.find((item) => item.fullPath === key) as any;\n //阻止冒泡\n $event.stopPropagation();\n // 删除标签\n navStore.deleteTabs(key);\n // 重新push已打开的路由\n router.push(navTabs.value[navTabs.value.length - 1].fullPath);\n\n //根据name 删除缓存的组件\n // if (rs.name) {\n // keepAliveStore.deleteKeepAlive(rs.name);\n // }\n};\n\n/**\n * 是否显示标签关闭按钮函数\n * @param item\n * 根据item和当前 navTabs 长度来判断是否要隐藏关闭标签按钮\n */\nconst closeStatus = (item: any) => {\n // 如果meta有设置keepOpen或者当前打开的标签只有一个的话不显示关闭按钮\n if (item.meta?.keepOpen) {\n return false;\n } else {\n // 如果只有一个标签,则隐藏关闭按钮\n return navTabs.value.length === 1 ? false : true;\n }\n};\n</script>\n<template>\n <div :class=\"baseClassName\">\n <a-tabs v-model:activeKey=\"activeKey\" type=\"card\" @tabClick=\"onClick\">\n <a-tab-pane v-for=\"item in navTabs\" :key=\"item.path\">\n <template #tab>\n <div class=\"tab-dividers\"></div>\n <div class=\"tab-item\" :class=\"{ active: activeKey === item.path }\">\n {{ item.meta.title }}\n </div>\n <div v-if=\"closeStatus(item)\" class=\"tab-close\">\n <CloseOutlined @click=\"onClose($event, item.fullPath)\" />\n </div>\n </template>\n </a-tab-pane>\n </a-tabs>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":["useRoute","useRouter","useNavTabsStore","useKeepAliveStore","useMenuStore","prefixName","computed","storeToRefs","ref","watchEffect","watch"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,QAAQA,kBAAS,EAAA,CAAA;AACvB,IAAA,MAAM,SAASC,mBAAU,EAAA,CAAA;AAEzB,IAAA,MAAM,WAAWC,qBAAgB,EAAA,CAAA;AACjC,IAAA,MAAM,iBAAiBC,uBAAkB,EAAA,CAAA;AACzC,IAAA,MAAM,YAAYC,kBAAa,EAAA,CAAA;AAG/B,IAAM,MAAA,aAAA,GAAgB,GAAGC,gBAAU,CAAA,IAAA,CAAA,CAAA;AAGnC,IAAA,MAAM,OAAsB,GAAAC,YAAA,CAAS,MAAM,QAAA,CAAS,OAAO,CAAA,CAAA;AAE3D,IAAA,MAAM,EAAE,gBAAA,EAAqB,GAAAC,iBAAA,CAAY,SAAS,CAAA,CAAA;AAElD,IAAM,MAAA,SAAA,GAAYC,QAAI,EAAE,CAAA,CAAA;AACxB,IAAAC,eAAA,CAAY,MAAM;AAChB,MAAU,SAAA,CAAA,KAAA,GACR,iBAAiB,KAAM,CAAA,MAAA,GAAS,IAAI,gBAAiB,CAAA,KAAA,CAAM,CAAC,CAAI,GAAA,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAED,IAAW,UAAA,EAAA,CAAA;AAEX,IAAAC,SAAA;AAAA,MACE,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,MAAM;AAEJ,QAAW,UAAA,EAAA,CAAA;AAAA,OACb;AAAA,KACF,CAAA;AAGA,IAAA,SAAS,UAAa,GAAA;AAEpB,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAGnB,MAAiB,gBAAA,CAAA,KAAA,GAAQ,CAAC,KAAA,CAAM,IAAI,CAAA,CAAA;AACpC,MAAA,cAAA,CAAe,KAAK,KAAK,CAAA,CAAA;AAAA,KAC3B;AAMA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAgB,KAAA;AAC/B,MAAI,IAAA,GAAA,KAAQ,MAAM,IAAM,EAAA;AAEtB,QAAM,MAAA,EAAA,GAAK,OAAQ,CAAA,KAAA,CAAM,MAAO,CAAA,CAAC,SAAc,IAAK,CAAA,IAAA,KAAS,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA;AAEnE,QAAA,MAAA,CAAO,IAAK,CAAA;AAAA,UACV,MAAM,EAAG,CAAA,IAAA;AAAA,UACT,OAAO,EAAG,CAAA,KAAA;AAAA,UACV,QAAQ,EAAG,CAAA,MAAA;AAAA,UACX,UAAU,EAAG,CAAA,QAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACV;AAAA,KACF,CAAA;AAOA,IAAM,MAAA,OAAA,GAAU,CAAC,MAAA,EAAa,GAAgB,KAAA;AAG5C,MAAA,MAAA,CAAO,eAAgB,EAAA,CAAA;AAEvB,MAAA,QAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AAEvB,MAAO,MAAA,CAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,CAAC,EAAE,QAAQ,CAAA,CAAA;AAAA,KAM9D,CAAA;AAOA,IAAM,MAAA,WAAA,GAAc,CAAC,IAAc,KAAA;;AAEjC,MAAI,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,IAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAW,QAAU,EAAA;AACvB,QAAO,OAAA,KAAA,CAAA;AAAA,OACF,MAAA;AAEL,QAAA,OAAO,OAAQ,CAAA,KAAA,CAAM,MAAW,KAAA,CAAA,GAAI,KAAQ,GAAA,IAAA,CAAA;AAAA,OAC9C;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
declare const _default: import("vue").DefineComponent<{
|
|
2
2
|
value: {
|
|
3
|
-
type:
|
|
3
|
+
type: () => string | undefined;
|
|
4
4
|
required: true;
|
|
5
5
|
};
|
|
6
6
|
style: {
|
|
@@ -25,7 +25,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
25
25
|
};
|
|
26
26
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
27
27
|
value: {
|
|
28
|
-
type:
|
|
28
|
+
type: () => string | undefined;
|
|
29
29
|
required: true;
|
|
30
30
|
};
|
|
31
31
|
style: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Desensitize.mjs","sources":["../../../src/desensitize/Desensitize.tsx"],"sourcesContent":["/**\n * 脱敏\n * @author 余春林\n */\nimport { defineComponent, computed, ref } from \"vue\";\nimport { EyeOutlined, EyeInvisibleOutlined } from \"@ant-design/icons-vue\";\nimport { prefixName } from \"../theme\";\n\n//class名称\nconst baseClassName = `${prefixName}-desensitize`;\nexport default defineComponent({\n name: \"DDesensitize\",\n components: {\n EyeOutlined,\n EyeInvisibleOutlined\n },\n props: {\n value: {\n // type: [string,number] 可以使用PropType 来声明对象类型\n // type: String as () => string | number,\n type: String,\n required: true\n },\n // 替换样式\n style: {\n type: String,\n default: \"*\"\n },\n // 替换规则 id 和mobile\n rule: {\n type: String,\n required: true\n },\n // 正则表达式\n regex: {\n type: String,\n default: \"\"\n },\n // 替换方式\n regexValue: {\n type: String,\n default: \"\"\n },\n eye: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n // 控制显示隐藏脱敏或者不脱敏\n const invisible = ref(true);\n const desensitizedString = computed(() => {\n const value = props.value;\n const rule = props.rule;\n const regex = props.regex;\n const regexValue = props.regexValue;\n let str = \"\";\n if (!value) {\n return \"\";\n }\n if (rule) {\n switch (rule) {\n case \"mobile\":\n str = value.replace(/(\\d{3})\\d{4}(\\d{4})/, \"$1*****$2\");\n break;\n case \"id\":\n str = value.replace(/(\\d{4})\\d{10}(\\w{4})/, \"$1*****$2\");\n break;\n }\n } else {\n str = value.replace(regex, regexValue);\n }\n return str;\n });\n return () => (\n <>\n <div class={baseClassName}>\n <span class={\"value\"}>\n {invisible.value ? desensitizedString.value : props.value}\n </span>\n {props.eye ? (\n <span>\n <eye-outlined\n onClick={() => (invisible.value = !invisible.value)}\n v-show={!invisible.value}\n />\n <eye-invisible-outlined\n onClick={() => (invisible.value = !invisible.value)}\n v-show={invisible.value}\n />\n </span>\n ) : undefined}\n </div>\n </>\n );\n }\n});\n"],"names":["baseClassName","prefixName","name","components","EyeOutlined","EyeInvisibleOutlined","props","value","type","String","required","style","default","rule","regex","regexValue","eye","Boolean","setup","invisible","ref","desensitizedString","computed","str","replace","_createVNode","_Fragment","_withDirectives","_resolveComponent","onClick","_vShow","undefined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Desensitize.mjs","sources":["../../../src/desensitize/Desensitize.tsx"],"sourcesContent":["/**\n * 脱敏\n * @author 余春林\n */\nimport { defineComponent, computed, ref } from \"vue\";\nimport { EyeOutlined, EyeInvisibleOutlined } from \"@ant-design/icons-vue\";\nimport { prefixName } from \"../theme\";\n\n//class名称\nconst baseClassName = `${prefixName}-desensitize`;\nexport default defineComponent({\n name: \"DDesensitize\",\n components: {\n EyeOutlined,\n EyeInvisibleOutlined\n },\n props: {\n value: {\n // type: [string,number] 可以使用PropType 来声明对象类型\n // type: String as () => string | number,\n type: String as () => string | undefined,\n required: true\n },\n // 替换样式\n style: {\n type: String,\n default: \"*\"\n },\n // 替换规则 id 和mobile\n rule: {\n type: String,\n required: true\n },\n // 正则表达式\n regex: {\n type: String,\n default: \"\"\n },\n // 替换方式\n regexValue: {\n type: String,\n default: \"\"\n },\n eye: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n // 控制显示隐藏脱敏或者不脱敏\n const invisible = ref(true);\n const desensitizedString = computed(() => {\n const value = props.value;\n const rule = props.rule;\n const regex = props.regex;\n const regexValue = props.regexValue;\n let str = \"\";\n if (!value) {\n return \"\";\n }\n if (rule) {\n switch (rule) {\n case \"mobile\":\n str = value.replace(/(\\d{3})\\d{4}(\\d{4})/, \"$1*****$2\");\n break;\n case \"id\":\n str = value.replace(/(\\d{4})\\d{10}(\\w{4})/, \"$1*****$2\");\n break;\n }\n } else {\n str = value.replace(regex, regexValue);\n }\n return str;\n });\n return () => (\n <>\n <div class={baseClassName}>\n <span class={\"value\"}>\n {invisible.value ? desensitizedString.value : props.value}\n </span>\n {props.eye ? (\n <span>\n <eye-outlined\n onClick={() => (invisible.value = !invisible.value)}\n v-show={!invisible.value}\n />\n <eye-invisible-outlined\n onClick={() => (invisible.value = !invisible.value)}\n v-show={invisible.value}\n />\n </span>\n ) : undefined}\n </div>\n </>\n );\n }\n});\n"],"names":["baseClassName","prefixName","name","components","EyeOutlined","EyeInvisibleOutlined","props","value","type","String","required","style","default","rule","regex","regexValue","eye","Boolean","setup","invisible","ref","desensitizedString","computed","str","replace","_createVNode","_Fragment","_withDirectives","_resolveComponent","onClick","_vShow","undefined"],"mappings":";;;;AASA,MAAMA,aAAAA,GAAiB,GAAEC,UAAW,CAAA,YAAA,CAAA,CAAA;AACpC,kCAA+B,eAAA,CAAA;AAAA,EAC7BC,IAAM,EAAA,cAAA;AAAA,EACNC,UAAY,EAAA;AAAA,IACVC,WAAAA;AAAAA,IACAC,oBAAAA;AAAAA,GACF;AAAA,EACAC,KAAO,EAAA;AAAA,IACLC,KAAO,EAAA;AAAA;AAAA;AAAA,MAGLC,IAAMC,EAAAA,MAAAA;AAAAA,MACNC,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA;AAAA,IAEAC,KAAO,EAAA;AAAA,MACLH,IAAMC,EAAAA,MAAAA;AAAAA,MACNG,OAAS,EAAA,GAAA;AAAA,KACX;AAAA;AAAA,IAEAC,IAAM,EAAA;AAAA,MACJL,IAAMC,EAAAA,MAAAA;AAAAA,MACNC,QAAU,EAAA,IAAA;AAAA,KACZ;AAAA;AAAA,IAEAI,KAAO,EAAA;AAAA,MACLN,IAAMC,EAAAA,MAAAA;AAAAA,MACNG,OAAS,EAAA,EAAA;AAAA,KACX;AAAA;AAAA,IAEAG,UAAY,EAAA;AAAA,MACVP,IAAMC,EAAAA,MAAAA;AAAAA,MACNG,OAAS,EAAA,EAAA;AAAA,KACX;AAAA,IACAI,GAAK,EAAA;AAAA,MACHR,IAAMS,EAAAA,OAAAA;AAAAA,MACNL,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,GACF;AAAA,EACAM,MAAMZ,KAAO,EAAA;AAEX,IAAMa,MAAAA,SAAAA,GAAYC,IAAI,IAAI,CAAA,CAAA;AAC1B,IAAMC,MAAAA,kBAAAA,GAAqBC,SAAS,MAAM;AACxC,MAAA,MAAMf,QAAQD,KAAMC,CAAAA,KAAAA,CAAAA;AACpB,MAAA,MAAMM,OAAOP,KAAMO,CAAAA,IAAAA,CAAAA;AACnB,MAAA,MAAMC,QAAQR,KAAMQ,CAAAA,KAAAA,CAAAA;AACpB,MAAA,MAAMC,aAAaT,KAAMS,CAAAA,UAAAA,CAAAA;AACzB,MAAA,IAAIQ,GAAM,GAAA,EAAA,CAAA;AACV,MAAA,IAAI,CAAChB,KAAO,EAAA;AACV,QAAO,OAAA,EAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAIM,IAAM,EAAA;AACR,QAAA,QAAQA,IAAI;AAAA,UACV,KAAK,QAAA;AACHU,YAAMhB,GAAAA,GAAAA,KAAAA,CAAMiB,OAAQ,CAAA,qBAAA,EAAuB,WAAW,CAAA,CAAA;AACtD,YAAA,MAAA;AAAA,UACF,KAAK,IAAA;AACHD,YAAMhB,GAAAA,GAAAA,KAAAA,CAAMiB,OAAQ,CAAA,sBAAA,EAAwB,WAAW,CAAA,CAAA;AACvD,YAAA,MAAA;AAAA,SACJ;AAAA,OACK,MAAA;AACLD,QAAMhB,GAAAA,GAAAA,KAAAA,CAAMiB,OAAQV,CAAAA,KAAAA,EAAOC,UAAU,CAAA,CAAA;AAAA,OACvC;AACA,MAAOQ,OAAAA,GAAAA,CAAAA;AAAAA,KACR,CAAA,CAAA;AACD,IAAA,OAAO,MAAAE,WAAAC,CAAAA,QAAAA,SAAAD,YAAA,KAAA,EAAA;AAAA,MAAA,OAESzB,EAAAA,aAAAA;AAAAA,KAAa,EAAA,CAAAyB,WAAAA,CAAA,MAAA,EAAA;AAAA,MAAA,OACV,EAAA,OAAA;AAAA,KAAO,EACjBN,CAAAA,SAAUZ,CAAAA,KAAAA,GAAQc,mBAAmBd,KAAQD,GAAAA,KAAAA,CAAMC,KAAK,IAE1DD,MAAMU,GAAGS,GAAAA,WAAAA,gBAAAE,eAAAF,WAAAG,CAAAA,gBAAAA,CAAA,cAAA,CAAA,EAAA;AAAA,MAAA,SAGKC,EAAAA,MAAOV,SAAUZ,CAAAA,KAAAA,GAAQ,CAACY,SAAUZ,CAAAA,KAAAA;AAAAA,OAAMuB,IAAAA,CAAAA,EAAAA,CAAAA,CAAAA,OAC3C,CAACX,SAAAA,CAAUZ,KAAK,CAAA,CAAA,CAAAoB,EAAAA,cAAAA,CAAAF,WAAAG,CAAAA,gBAAAA,CAAA,wBAAA,CAAA,EAAA;AAAA,MAAA,SAGfC,EAAAA,MAAOV,SAAUZ,CAAAA,KAAAA,GAAQ,CAACY,SAAUZ,CAAAA,KAAAA;AAAAA,OAAM,IAAA,CAAA,EAAA,CAAA,CAAAuB,OAC3CX,SAAUZ,CAAAA,KAAK,CAAA,CAAA,CAAA,CAAA,CAAA,GAGzBwB,KAAS,CAAA,CAGlB,CAAA,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA;;;;"}
|
|
@@ -55,13 +55,9 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
55
55
|
}
|
|
56
56
|
};
|
|
57
57
|
const onClose = ($event, key) => {
|
|
58
|
-
const rs = navTabs.value.find((item) => item.fullPath === key);
|
|
59
58
|
$event.stopPropagation();
|
|
60
59
|
navStore.deleteTabs(key);
|
|
61
60
|
router.push(navTabs.value[navTabs.value.length - 1].fullPath);
|
|
62
|
-
if (rs.name) {
|
|
63
|
-
keepAliveStore.deleteKeepAlive(rs.name);
|
|
64
|
-
}
|
|
65
61
|
};
|
|
66
62
|
const closeStatus = (item) => {
|
|
67
63
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavTabs.vue2.mjs","sources":["../../../src/layout/NavTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * 标签组件\n */\nimport { computed, Ref, watch, watchEffect, ref } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\nimport { storeToRefs } from \"pinia\";\n\nimport {\n useNavTabsStore,\n useKeepAliveStore,\n useMenuStore\n} from \"@ditari/store\";\n\nimport { prefixName } from \"../theme\";\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst navStore = useNavTabsStore();\nconst keepAliveStore = useKeepAliveStore();\nconst menuStore = useMenuStore();\n\n//class名称\nconst baseClassName = `${prefixName}-nav`;\n\n//标签列表\nconst navTabs: Ref<any[]> = computed(() => navStore.getList);\n// 被选中的菜单\nconst { selectedMenuKeys } = storeToRefs(menuStore);\n//当前被激活的标签 通过选中的菜单得到\nconst activeKey = ref(\"\");\nwatchEffect(() => {\n activeKey.value =\n selectedMenuKeys.value.length > 0 ? selectedMenuKeys.value[0] : \"\";\n});\n//首次进入页面或者刷新的时候执行\nsetNavTabs();\n// 监听路由变化\nwatch(\n () => route.path,\n () => {\n //TODO 需要优化 确保只有未打开过的标签 进入保存\n setNavTabs();\n }\n);\n\n//设置标签\nfunction setNavTabs() {\n // 保存标签\n navStore.save(route);\n // 设置激活的标签\n //navStore.setActiveKey(route.path);\n selectedMenuKeys.value = [route.path];\n keepAliveStore.save(route);\n}\n\n/**\n * 切换标签\n * @param nav\n */\nconst onClick = (key: string) => {\n if (key !== route.path) {\n // 匹配打开的标签路由数据\n const rs = navTabs.value.filter((item: any) => item.path === key)[0];\n // 打开路由\n router.push({\n path: rs.path,\n query: rs.query,\n params: rs.params,\n fullPath: rs.fullPath\n } as any);\n }\n};\n\n/**\n * 关闭标签\n * @param $event\n * @param targetKey\n */\nconst onClose = ($event: any, key: string) => {\n const rs = navTabs.value.find((item) => item.fullPath === key) as any;\n //阻止冒泡\n $event.stopPropagation();\n // 删除标签\n navStore.deleteTabs(key);\n // 重新push已打开的路由\n router.push(navTabs.value[navTabs.value.length - 1].fullPath);\n\n //根据name 删除缓存的组件\n if (rs.name) {\n
|
|
1
|
+
{"version":3,"file":"NavTabs.vue2.mjs","sources":["../../../src/layout/NavTabs.vue"],"sourcesContent":["<script setup lang=\"ts\">\n/**\n * 标签组件\n */\nimport { computed, Ref, watch, watchEffect, ref } from \"vue\";\nimport { useRoute, useRouter } from \"vue-router\";\nimport { CloseOutlined } from \"@ant-design/icons-vue\";\nimport { storeToRefs } from \"pinia\";\n\nimport {\n useNavTabsStore,\n useKeepAliveStore,\n useMenuStore\n} from \"@ditari/store\";\n\nimport { prefixName } from \"../theme\";\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst navStore = useNavTabsStore();\nconst keepAliveStore = useKeepAliveStore();\nconst menuStore = useMenuStore();\n\n//class名称\nconst baseClassName = `${prefixName}-nav`;\n\n//标签列表\nconst navTabs: Ref<any[]> = computed(() => navStore.getList);\n// 被选中的菜单\nconst { selectedMenuKeys } = storeToRefs(menuStore);\n//当前被激活的标签 通过选中的菜单得到\nconst activeKey = ref(\"\");\nwatchEffect(() => {\n activeKey.value =\n selectedMenuKeys.value.length > 0 ? selectedMenuKeys.value[0] : \"\";\n});\n//首次进入页面或者刷新的时候执行\nsetNavTabs();\n// 监听路由变化\nwatch(\n () => route.path,\n () => {\n //TODO 需要优化 确保只有未打开过的标签 进入保存\n setNavTabs();\n }\n);\n\n//设置标签\nfunction setNavTabs() {\n // 保存标签\n navStore.save(route);\n // 设置激活的标签\n //navStore.setActiveKey(route.path);\n selectedMenuKeys.value = [route.path];\n keepAliveStore.save(route);\n}\n\n/**\n * 切换标签\n * @param nav\n */\nconst onClick = (key: string) => {\n if (key !== route.path) {\n // 匹配打开的标签路由数据\n const rs = navTabs.value.filter((item: any) => item.path === key)[0];\n // 打开路由\n router.push({\n path: rs.path,\n query: rs.query,\n params: rs.params,\n fullPath: rs.fullPath\n } as any);\n }\n};\n\n/**\n * 关闭标签\n * @param $event\n * @param targetKey\n */\nconst onClose = ($event: any, key: string) => {\n //const rs = navTabs.value.find((item) => item.fullPath === key) as any;\n //阻止冒泡\n $event.stopPropagation();\n // 删除标签\n navStore.deleteTabs(key);\n // 重新push已打开的路由\n router.push(navTabs.value[navTabs.value.length - 1].fullPath);\n\n //根据name 删除缓存的组件\n // if (rs.name) {\n // keepAliveStore.deleteKeepAlive(rs.name);\n // }\n};\n\n/**\n * 是否显示标签关闭按钮函数\n * @param item\n * 根据item和当前 navTabs 长度来判断是否要隐藏关闭标签按钮\n */\nconst closeStatus = (item: any) => {\n // 如果meta有设置keepOpen或者当前打开的标签只有一个的话不显示关闭按钮\n if (item.meta?.keepOpen) {\n return false;\n } else {\n // 如果只有一个标签,则隐藏关闭按钮\n return navTabs.value.length === 1 ? false : true;\n }\n};\n</script>\n<template>\n <div :class=\"baseClassName\">\n <a-tabs v-model:activeKey=\"activeKey\" type=\"card\" @tabClick=\"onClick\">\n <a-tab-pane v-for=\"item in navTabs\" :key=\"item.path\">\n <template #tab>\n <div class=\"tab-dividers\"></div>\n <div class=\"tab-item\" :class=\"{ active: activeKey === item.path }\">\n {{ item.meta.title }}\n </div>\n <div v-if=\"closeStatus(item)\" class=\"tab-close\">\n <CloseOutlined @click=\"onClose($event, item.fullPath)\" />\n </div>\n </template>\n </a-tab-pane>\n </a-tabs>\n </div>\n</template>\n<style lang=\"scss\"></style>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAiBA,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,IAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AAEzB,IAAA,MAAM,WAAW,eAAgB,EAAA,CAAA;AACjC,IAAA,MAAM,iBAAiB,iBAAkB,EAAA,CAAA;AACzC,IAAA,MAAM,YAAY,YAAa,EAAA,CAAA;AAG/B,IAAM,MAAA,aAAA,GAAgB,GAAG,UAAU,CAAA,IAAA,CAAA,CAAA;AAGnC,IAAA,MAAM,OAAsB,GAAA,QAAA,CAAS,MAAM,QAAA,CAAS,OAAO,CAAA,CAAA;AAE3D,IAAA,MAAM,EAAE,gBAAA,EAAqB,GAAA,WAAA,CAAY,SAAS,CAAA,CAAA;AAElD,IAAM,MAAA,SAAA,GAAY,IAAI,EAAE,CAAA,CAAA;AACxB,IAAA,WAAA,CAAY,MAAM;AAChB,MAAU,SAAA,CAAA,KAAA,GACR,iBAAiB,KAAM,CAAA,MAAA,GAAS,IAAI,gBAAiB,CAAA,KAAA,CAAM,CAAC,CAAI,GAAA,EAAA,CAAA;AAAA,KACnE,CAAA,CAAA;AAED,IAAW,UAAA,EAAA,CAAA;AAEX,IAAA,KAAA;AAAA,MACE,MAAM,KAAM,CAAA,IAAA;AAAA,MACZ,MAAM;AAEJ,QAAW,UAAA,EAAA,CAAA;AAAA,OACb;AAAA,KACF,CAAA;AAGA,IAAA,SAAS,UAAa,GAAA;AAEpB,MAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAGnB,MAAiB,gBAAA,CAAA,KAAA,GAAQ,CAAC,KAAA,CAAM,IAAI,CAAA,CAAA;AACpC,MAAA,cAAA,CAAe,KAAK,KAAK,CAAA,CAAA;AAAA,KAC3B;AAMA,IAAM,MAAA,OAAA,GAAU,CAAC,GAAgB,KAAA;AAC/B,MAAI,IAAA,GAAA,KAAQ,MAAM,IAAM,EAAA;AAEtB,QAAM,MAAA,EAAA,GAAK,OAAQ,CAAA,KAAA,CAAM,MAAO,CAAA,CAAC,SAAc,IAAK,CAAA,IAAA,KAAS,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA;AAEnE,QAAA,MAAA,CAAO,IAAK,CAAA;AAAA,UACV,MAAM,EAAG,CAAA,IAAA;AAAA,UACT,OAAO,EAAG,CAAA,KAAA;AAAA,UACV,QAAQ,EAAG,CAAA,MAAA;AAAA,UACX,UAAU,EAAG,CAAA,QAAA;AAAA,SACP,CAAA,CAAA;AAAA,OACV;AAAA,KACF,CAAA;AAOA,IAAM,MAAA,OAAA,GAAU,CAAC,MAAA,EAAa,GAAgB,KAAA;AAG5C,MAAA,MAAA,CAAO,eAAgB,EAAA,CAAA;AAEvB,MAAA,QAAA,CAAS,WAAW,GAAG,CAAA,CAAA;AAEvB,MAAO,MAAA,CAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,OAAA,CAAQ,MAAM,MAAS,GAAA,CAAC,EAAE,QAAQ,CAAA,CAAA;AAAA,KAM9D,CAAA;AAOA,IAAM,MAAA,WAAA,GAAc,CAAC,IAAc,KAAA;;AAEjC,MAAI,IAAA,CAAA,EAAA,GAAA,IAAA,CAAK,IAAL,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAW,QAAU,EAAA;AACvB,QAAO,OAAA,KAAA,CAAA;AAAA,OACF,MAAA;AAEL,QAAA,OAAO,OAAQ,CAAA,KAAA,CAAM,MAAW,KAAA,CAAA,GAAI,KAAQ,GAAA,IAAA,CAAA;AAAA,OAC9C;AAAA,KACF,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/example/src/api/list.ts
CHANGED
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import axios from "axios";
|
|
2
2
|
|
|
3
3
|
export const userList = (params: { page?: number; limit?: number }) => {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
// });
|
|
7
|
-
return new Promise((resolve, reject) => {
|
|
8
|
-
resolve({ data: [], total: 0 });
|
|
4
|
+
return axios.get("https://61273138c2e8920017bc0b3c.mockapi.io/api/users", {
|
|
5
|
+
params
|
|
9
6
|
});
|
|
7
|
+
|
|
10
8
|
};
|
|
11
9
|
|
|
12
10
|
export const testService = (params: { page?: number; limit?: number }) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// });
|
|
16
|
-
console.log(params)
|
|
17
|
-
return new Promise((resolve, reject) => {
|
|
18
|
-
resolve({ data: [], total: 0 });
|
|
11
|
+
return axios.get("https://61273138c2e8920017bc0b3c.mockapi.io/api/users/", {
|
|
12
|
+
params
|
|
19
13
|
});
|
|
14
|
+
// console.log(params)
|
|
15
|
+
// return new Promise((resolve, reject) => {
|
|
16
|
+
// resolve({ data: [], total: 0 });
|
|
17
|
+
// });
|
|
20
18
|
};
|
|
21
19
|
|
|
22
20
|
export const getUsers = () => {
|
|
@@ -20,10 +20,13 @@ export default {
|
|
|
20
20
|
row-key="id"
|
|
21
21
|
:loading="loading"
|
|
22
22
|
:expanded-row-keys="['1', '2']"
|
|
23
|
-
:data="
|
|
23
|
+
:data="data"
|
|
24
24
|
:config="config"
|
|
25
25
|
:height="height"
|
|
26
26
|
>
|
|
27
|
+
<template #expandedRowRender="{ record }">
|
|
28
|
+
{{record}}
|
|
29
|
+
</template>
|
|
27
30
|
<template #action>
|
|
28
31
|
<a-button>ok</a-button>
|
|
29
32
|
</template>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ditari/bsui",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.22",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"./theme/*": "./dist/style/*"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@ditari/store": "^1.0.
|
|
33
|
-
"@ditari/hooks": "^1.0.
|
|
32
|
+
"@ditari/store": "^1.0.6",
|
|
33
|
+
"@ditari/hooks": "^1.0.8"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"vue": "^3.3.4",
|
package/src/layout/NavTabs.vue
CHANGED
|
@@ -80,7 +80,7 @@ const onClick = (key: string) => {
|
|
|
80
80
|
* @param targetKey
|
|
81
81
|
*/
|
|
82
82
|
const onClose = ($event: any, key: string) => {
|
|
83
|
-
const rs = navTabs.value.find((item) => item.fullPath === key) as any;
|
|
83
|
+
//const rs = navTabs.value.find((item) => item.fullPath === key) as any;
|
|
84
84
|
//阻止冒泡
|
|
85
85
|
$event.stopPropagation();
|
|
86
86
|
// 删除标签
|
|
@@ -89,9 +89,9 @@ const onClose = ($event: any, key: string) => {
|
|
|
89
89
|
router.push(navTabs.value[navTabs.value.length - 1].fullPath);
|
|
90
90
|
|
|
91
91
|
//根据name 删除缓存的组件
|
|
92
|
-
if (rs.name) {
|
|
93
|
-
|
|
94
|
-
}
|
|
92
|
+
// if (rs.name) {
|
|
93
|
+
// keepAliveStore.deleteKeepAlive(rs.name);
|
|
94
|
+
// }
|
|
95
95
|
};
|
|
96
96
|
|
|
97
97
|
/**
|