@ditari/bsui 1.1.61 → 1.1.63
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 +12 -0
- package/dist/cjs/form/DQueryForm.cjs +6 -2
- package/dist/cjs/form/DQueryForm.cjs.map +1 -1
- package/dist/cjs/form/DQueryForm.d.ts +9 -0
- package/dist/cjs/menu/Menu.cjs +2 -1
- package/dist/cjs/menu/Menu.cjs.map +1 -1
- package/dist/esm/form/DQueryForm.d.ts +9 -0
- package/dist/esm/form/DQueryForm.mjs +6 -2
- package/dist/esm/form/DQueryForm.mjs.map +1 -1
- package/dist/esm/menu/Menu.mjs +2 -1
- package/dist/esm/menu/Menu.mjs.map +1 -1
- package/dist/style/theme/variable.scss +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -41,6 +41,10 @@ var QueryForm = /* @__PURE__ */ vue.defineComponent({
|
|
|
41
41
|
collapseText: {
|
|
42
42
|
type: String,
|
|
43
43
|
default: "\u6536\u8D77"
|
|
44
|
+
},
|
|
45
|
+
btnShape: {
|
|
46
|
+
type: String,
|
|
47
|
+
default: "round"
|
|
44
48
|
}
|
|
45
49
|
},
|
|
46
50
|
emits: ["reset", "query"],
|
|
@@ -106,14 +110,14 @@ var QueryForm = /* @__PURE__ */ vue.defineComponent({
|
|
|
106
110
|
default: () => [vue.createVNode(antDesignVue.Button, {
|
|
107
111
|
"loading": loading.value,
|
|
108
112
|
"type": "primary",
|
|
109
|
-
"shape":
|
|
113
|
+
"shape": props.btnShape,
|
|
110
114
|
"onClick": onQuery
|
|
111
115
|
}, {
|
|
112
116
|
default: () => props.queryText,
|
|
113
117
|
icon: () => vue.createVNode(iconsVue.SearchOutlined, null, null)
|
|
114
118
|
}), vue.createVNode(antDesignVue.Button, {
|
|
115
119
|
"disabled": loading.value,
|
|
116
|
-
"shape":
|
|
120
|
+
"shape": props.btnShape,
|
|
117
121
|
"onClick": onReset
|
|
118
122
|
}, {
|
|
119
123
|
default: () => props.resetText,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DQueryForm.cjs","sources":["../../../src/form/DQueryForm.tsx"],"sourcesContent":["import { defineComponent, onMounted, ref, watch, watchEffect } from \"vue\";\nimport { Form, FormItem, Row, Col, Button, Space } from \"ant-design-vue\";\nimport {\n SearchOutlined,\n ReloadOutlined,\n DoubleRightOutlined\n} from \"@ant-design/icons-vue\";\nimport DJsonSchemeRender from \"../json-scheme-render/JsonSchemeRender\";\n\n/**\n * 查询表单渲染\n * 展开,隐藏功能\n */\nexport default defineComponent({\n name: \"DQueryForm\",\n props: {\n scheme: {\n type: [Array, Object] as unknown as () => any[] | Record<string, any>,\n default: () => []\n },\n model: {\n type: Object as () => Record<string, unknown>,\n default: () => ({})\n },\n labelWidth: {\n type: String,\n default: \"90px\"\n },\n loading: {\n type: Boolean,\n default: false\n },\n queryText: {\n type: String,\n default: \"查询\"\n },\n resetText: {\n type: String,\n default: \"重置\"\n },\n expendText: {\n type: String,\n default: \"展开\"\n },\n collapseText: {\n type: String,\n default: \"收起\"\n }\n },\n emits: [\"reset\", \"query\"],\n setup(props, { slots, emit }) {\n // 表单\n const { loading, modelValue, formRef, onQuery, onReset, onKeyup } =\n useForm();\n // 展开\n const { rowRef, actionSpan, onExpend, expendBtnVisible, isExpend } =\n useExpand();\n //渲染操作列\n const { renderAction } = useRender();\n\n function useForm() {\n const loading = ref(false);\n const formRef = ref<any>(null);\n const modelValue = ref<any>({});\n\n watchEffect(() => {\n modelValue.value = props.model;\n });\n\n watch(\n () => props.loading,\n (val) => {\n loading.value = val;\n }\n );\n\n /// 监听回车事件\n // watch(enterKey, (v) => {\n // if (v) {\n // // 有路由名字会被keepalive进行缓存\n // // 用于判断当前页面是否被激活 因为页面被缓存的时候,页面切换后,回车事件依然会触发\n // const isActive = keepStore.list.some((name) => name === route.name);\n // console.log(route.name);\n // if (!loading.value && isActive) {\n // emit(\"query\", modelValue.value);\n // }\n // //TODO 逻辑有问题\n // if (!route.name) {\n // // 没有路由名字,不会被缓存\n // if (!loading.value) {\n // emit(\"query\", modelValue.value);\n // }\n // } else {\n //\n // }\n // }\n // });\n\n const onQuery = () => {\n emit(\"query\", modelValue.value);\n };\n\n const onReset = () => {\n formRef.value?.resetFields();\n emit(\"reset\");\n };\n\n const onKeyup = (event: any) => {\n if (event.keyCode === 13) {\n if (!loading.value) {\n emit(\"query\", modelValue.value);\n }\n }\n };\n return {\n loading,\n modelValue,\n formRef,\n onQuery,\n onReset,\n onKeyup\n };\n }\n\n function useRender() {\n /**\n * 操作按钮渲染\n */\n function renderAction() {\n return (\n <Space>\n <Button\n loading={loading.value}\n type={\"primary\"}\n shape={\"round\"}\n onClick={onQuery}\n >\n {{\n default: () => props.queryText,\n icon: () => <SearchOutlined />\n }}\n </Button>\n <Button disabled={loading.value} shape={\"round\"} onClick={onReset}>\n {{\n default: () => props.resetText,\n icon: () => <ReloadOutlined />\n }}\n </Button>\n {expendBtnVisible.value ? (\n <Button onClick={onExpend} shape={\"round\"}>\n {{\n default: () =>\n isExpend.value ? props.collapseText : props.expendText,\n icon: () => (\n <DoubleRightOutlined rotate={isExpend.value ? -90 : 90} />\n )\n }}\n </Button>\n ) : null}\n </Space>\n );\n }\n\n return {\n renderAction\n };\n }\n\n function useExpand() {\n // 为24网格布局\n const gridCount = 24;\n // 每列占6个格子\n const colSpan = 6;\n // 每行显示4列\n const colsPerRow = 4;\n // 操作按钮span\n const actionSpan = ref(6);\n // 控制展开或隐藏按钮文本\n const isExpend = ref(false);\n // 控制展开按按钮是否显示\n const expendBtnVisible = ref(false);\n // 行对象\n const rowRef = ref<any>(null);\n\n onMounted(() => {\n handleShowOrHidden();\n });\n\n function onExpend() {\n isExpend.value = !isExpend.value;\n handleShowOrHidden();\n }\n\n /**\n * 处理隐藏或显示\n */\n function handleShowOrHidden() {\n const colEl = Array.from(rowRef.value?.$el?.children);\n // col总条数 减掉操作栏按钮的div个数为1\n const colElLen = colEl.length - 1;\n // 已占用的网格数 = col总条数 * 每列占用的网格数\n const occupiedCols = colElLen * colSpan;\n // 总行数 = 总div数 / 每行显示的列数\n const fullRows = Math.ceil(colElLen / colsPerRow);\n // 最后一行的网格数 = 已占用的网格数 % 24\n const lastRowCols = occupiedCols % gridCount;\n // 最后一行剩余的网格数\n const remainingCols = gridCount - lastRowCols;\n\n // 网格行大于2才显示展开或隐藏按钮\n if (fullRows > 2) {\n expendBtnVisible.value = true;\n } else {\n // 如果没有大于两行,操作栏占用剩余的宽度\n actionSpan.value = remainingCols;\n }\n // 最后一行的起始索引\n const lastRowStartIndex = colsPerRow * (fullRows - 1) - 1;\n // 只有展开按钮显示时才处理\n if (expendBtnVisible.value) {\n colEl.forEach((col: any, index) => {\n if (index >= lastRowStartIndex) {\n // 最后一个元素不隐藏 是操作按钮的div\n index !== colElLen\n ? (col.style.display = !isExpend.value ? \"none\" : \"block\")\n : null; // 隐藏元素\n }\n });\n }\n\n if (expendBtnVisible.value) {\n // 如果是展开状态 则操作按钮占用剩余的网格数 否则占用6个网格\n isExpend.value\n ? (actionSpan.value = remainingCols)\n : (actionSpan.value = colSpan);\n }\n }\n\n return {\n rowRef,\n actionSpan,\n onExpend,\n expendBtnVisible,\n isExpend\n };\n }\n\n return () => (\n <div onKeyup={onKeyup}>\n <Form\n ref={formRef}\n colon={false}\n labelCol={{ style: { width: props.labelWidth } }}\n model={modelValue.value}\n >\n <Row ref={rowRef}>\n {slots.default ? (\n slots.default()\n ) : (\n <DJsonSchemeRender\n layout={props.scheme}\n value={modelValue.value}\n />\n )}\n <Col span={actionSpan.value} style={{ textAlign: \"right\" }}>\n <FormItem>\n {slots.action ? slots.action() : renderAction()}\n </FormItem>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n});\n"],"names":["defineComponent","name","props","scheme","type","Array","Object","default","model","labelWidth","String","loading","Boolean","queryText","resetText","expendText","collapseText","emits","setup","slots","emit","modelValue","formRef","onQuery","onReset","onKeyup","useForm","rowRef","actionSpan","onExpend","expendBtnVisible","isExpend","useExpand","renderAction","useRender","ref","watchEffect","value","watch","val","resetFields","event","keyCode","_createVNode","Space","Button","icon","SearchOutlined","ReloadOutlined","DoubleRightOutlined","gridCount","colSpan","colsPerRow","onMounted","handleShowOrHidden","colEl","from","$el","children","colElLen","length","occupiedCols","fullRows","Math","ceil","lastRowCols","remainingCols","lastRowStartIndex","forEach","col","index","style","display","Form","width","Row","DJsonSchemeRender","Col","textAlign","FormItem","action"],"mappings":";;;;;;;;;AAaA,gCAA+BA,mBAAA,CAAA;AAAA,EAC7BC,IAAM,EAAA,YAAA;AAAA,EACNC,KAAO,EAAA;AAAA,IACLC,MAAQ,EAAA;AAAA,MACNC,IAAAA,EAAM,CAACC,KAAAA,EAAOC,MAAM,CAAA;AAAA,MACpBC,OAAAA,EAASA,MAAM,EAAA;AAAA,KACjB;AAAA,IACAC,KAAO,EAAA;AAAA,MACLJ,IAAME,EAAAA,MAAAA;AAAAA,MACNC,OAAAA,EAASA,OAAO,EAAC,CAAA;AAAA,KACnB;AAAA,IACAE,UAAY,EAAA;AAAA,MACVL,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,MAAA;AAAA,KACX;AAAA,IACAI,OAAS,EAAA;AAAA,MACPP,IAAMQ,EAAAA,OAAAA;AAAAA,MACNL,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,IACAM,SAAW,EAAA;AAAA,MACTT,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,IACAO,SAAW,EAAA;AAAA,MACTV,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,IACAQ,UAAY,EAAA;AAAA,MACVX,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,IACAS,YAAc,EAAA;AAAA,MACZZ,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,GACF;AAAA,EACAU,KAAAA,EAAO,CAAC,OAAA,EAAS,OAAO,CAAA;AAAA,EACxBC,MAAMhB,KAAO,EAAA;AAAA,IAAEiB,KAAAA;AAAAA,IAAOC,IAAAA;AAAAA,GAAQ,EAAA;AAE5B,IAAM,MAAA;AAAA,MAAET,OAAAA;AAAAA,MAASU,UAAAA;AAAAA,MAAYC,OAAAA;AAAAA,MAASC,OAAAA;AAAAA,MAASC,OAAAA;AAAAA,MAASC,OAAAA;AAAAA,QACtDC,OAAQ,EAAA,CAAA;AAEV,IAAM,MAAA;AAAA,MAAEC,MAAAA;AAAAA,MAAQC,UAAAA;AAAAA,MAAYC,QAAAA;AAAAA,MAAUC,gBAAAA;AAAAA,MAAkBC,QAAAA;AAAAA,QACtDC,SAAU,EAAA,CAAA;AAEZ,IAAM,MAAA;AAAA,MAAEC,YAAAA;AAAAA,QAAiBC,SAAU,EAAA,CAAA;AAEnC,IAAA,SAASR,OAAU,GAAA;AACjB,MAAMf,MAAAA,QAAAA,GAAUwB,QAAI,KAAK,CAAA,CAAA;AACzB,MAAMb,MAAAA,QAAAA,GAAUa,QAAS,IAAI,CAAA,CAAA;AAC7B,MAAMd,MAAAA,WAAAA,GAAac,OAAS,CAAA,EAAE,CAAA,CAAA;AAE9BC,MAAAA,eAAAA,CAAY,MAAM;AAChBf,QAAAA,WAAAA,CAAWgB,QAAQnC,KAAMM,CAAAA,KAAAA,CAAAA;AAAAA,OAC1B,CAAA,CAAA;AAED8B,MACEA,SAAA,CAAA,MAAMpC,KAAMS,CAAAA,OAAAA,EACX4B,CAAQ,GAAA,KAAA;AACP5B,QAAAA,SAAQ0B,KAAQE,GAAAA,GAAAA,CAAAA;AAAAA,OAEpB,CAAA,CAAA;AAwBA,MAAA,MAAMhB,WAAUA,MAAM;AACpBH,QAAK,IAAA,CAAA,OAAA,EAASC,YAAWgB,KAAK,CAAA,CAAA;AAAA,OAChC,CAAA;AAEA,MAAA,MAAMb,WAAUA,MAAM;;AACpBF,QAAAA,CAAAA,EAAAA,GAAAA,QAAAA,CAAQe,UAARf,IAAekB,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,WAAAA,EAAAA,CAAAA;AACfpB,QAAAA,IAAAA,CAAK,OAAO,CAAA,CAAA;AAAA,OACd,CAAA;AAEA,MAAA,MAAMK,WAAWgB,CAAe,KAAA,KAAA;AAC9B,QAAIA,IAAAA,KAAAA,CAAMC,YAAY,EAAI,EAAA;AACxB,UAAI,IAAA,CAAC/B,SAAQ0B,KAAO,EAAA;AAClBjB,YAAK,IAAA,CAAA,OAAA,EAASC,YAAWgB,KAAK,CAAA,CAAA;AAAA,WAChC;AAAA,SACF;AAAA,OACF,CAAA;AACA,MAAO,OAAA;AAAA,QACL1B,OAAAA,EAAAA,QAAAA;AAAAA,QACAU,UAAAA,EAAAA,WAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,OACF,CAAA;AAAA,KACF;AAEA,IAAA,SAASS,SAAY,GAAA;AAInB,MAAA,SAASD,aAAe,GAAA;AACtB,QAAAU,OAAAA,eAAAA,CAAAC,oBAAA,IAAA,EAAA;AAAA,UAAArC,OAAAA,EAAAA,MAAAoC,CAAAA,eAAAA,CAAAE,mBAAA,EAAA;AAAA,YAAA,WAGelC,OAAQ0B,CAAAA,KAAAA;AAAAA,YAAK,MAChB,EAAA,SAAA;AAAA,YAAS,OACR,EAAA,OAAA;AAAA,YAAO,SACLd,EAAAA,OAAAA;AAAAA,WAAO,EAAA;AAAA,YAGdhB,OAAAA,EAASA,MAAML,KAAMW,CAAAA,SAAAA;AAAAA,YACrBiC,IAAMA,EAAAA,MAAAH,eAAAI,CAAAA,uBAAAA,EAAA,MAAA,IAAA,CAAA;AAAA,WAAwBJ,CAAAA,EAAAA,eAAAA,CAAAE,mBAAA,EAAA;AAAA,YAAA,YAGhBlC,OAAQ0B,CAAAA,KAAAA;AAAAA,YAAK,OAAS,EAAA,OAAA;AAAA,YAAO,SAAWb,EAAAA,OAAAA;AAAAA,WAAO,EAAA;AAAA,YAE7DjB,OAAAA,EAASA,MAAML,KAAMY,CAAAA,SAAAA;AAAAA,YACrBgC,IAAMA,EAAAA,MAAAH,eAAAK,CAAAA,uBAAAA,EAAA,MAAA,IAAA,CAAA;AAAA,WAAwB,CAAA,EAGjClB,gBAAiBO,CAAAA,KAAAA,GAAKM,gBAAAE,mBAAA,EAAA;AAAA,YAAA,SACJhB,EAAAA,QAAAA;AAAAA,YAAQ,OAAS,EAAA,OAAA;AAAA,WAAO,EAAA;AAAA,YAErCtB,SAASA,MACPwB,QAAAA,CAASM,KAAQnC,GAAAA,KAAAA,CAAMc,eAAed,KAAMa,CAAAA,UAAAA;AAAAA,YAC9C+B,IAAAA,EAAMA,MAAAH,eAAAA,CAAAM,4BAAA,EAAA;AAAA,cAAA,QAAA,EACyBlB,QAASM,CAAAA,KAAAA,GAAQ,CAAM,EAAA,GAAA,EAAA;AAAA,eAAE,IAAA,CAAA;AAAA,WACvD,IAGH,IAAI,CAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAGd;AAEA,MAAO,OAAA;AAAA,QACLJ,YAAAA,EAAAA,aAAAA;AAAAA,OACF,CAAA;AAAA,KACF;AAEA,IAAA,SAASD,SAAY,GAAA;AAEnB,MAAA,MAAMkB,SAAY,GAAA,EAAA,CAAA;AAElB,MAAA,MAAMC,OAAU,GAAA,CAAA,CAAA;AAEhB,MAAA,MAAMC,UAAa,GAAA,CAAA,CAAA;AAEnB,MAAMxB,MAAAA,WAAAA,GAAaO,QAAI,CAAC,CAAA,CAAA;AAExB,MAAMJ,MAAAA,SAAAA,GAAWI,QAAI,KAAK,CAAA,CAAA;AAE1B,MAAML,MAAAA,iBAAAA,GAAmBK,QAAI,KAAK,CAAA,CAAA;AAElC,MAAMR,MAAAA,OAAAA,GAASQ,QAAS,IAAI,CAAA,CAAA;AAE5BkB,MAAAA,aAAAA,CAAU,MAAM;AACdC,QAAmB,kBAAA,EAAA,CAAA;AAAA,OACpB,CAAA,CAAA;AAED,MAAA,SAASzB,SAAW,GAAA;AAClBE,QAAAA,SAAAA,CAASM,KAAQ,GAAA,CAACN,SAASM,CAAAA,KAAAA,CAAAA;AAC3BiB,QAAmB,kBAAA,EAAA,CAAA;AAAA,OACrB;AAKA,MAAA,SAASA,kBAAqB,GAAA;;AAC5B,QAAMC,MAAAA,KAAAA,GAAQlD,MAAMmD,IAAK7B,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,QAAOU,KAAPV,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAc8B,GAAd9B,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAmB+B,QAAQ,CAAA,CAAA;AAEpD,QAAMC,MAAAA,QAAAA,GAAWJ,MAAMK,MAAS,GAAA,CAAA,CAAA;AAEhC,QAAA,MAAMC,eAAeF,QAAWR,GAAAA,OAAAA,CAAAA;AAEhC,QAAA,MAAMW,QAAWC,GAAAA,IAAAA,CAAKC,IAAKL,CAAAA,QAAAA,GAAWP,UAAU,CAAA,CAAA;AAEhD,QAAA,MAAMa,cAAcJ,YAAeX,GAAAA,SAAAA,CAAAA;AAEnC,QAAA,MAAMgB,gBAAgBhB,SAAYe,GAAAA,WAAAA,CAAAA;AAGlC,QAAA,IAAIH,WAAW,CAAG,EAAA;AAChBhC,UAAAA,kBAAiBO,KAAQ,GAAA,IAAA,CAAA;AAAA,SACpB,MAAA;AAELT,UAAAA,YAAWS,KAAQ6B,GAAAA,aAAAA,CAAAA;AAAAA,SACrB;AAEA,QAAMC,MAAAA,iBAAAA,GAAoBf,UAAcU,IAAAA,QAAAA,GAAW,CAAK,CAAA,GAAA,CAAA,CAAA;AAExD,QAAA,IAAIhC,kBAAiBO,KAAO,EAAA;AAC1BkB,UAAMa,KAAAA,CAAAA,OAAAA,CAAQ,CAACC,GAAAA,EAAUC,KAAU,KAAA;AACjC,YAAA,IAAIA,SAASH,iBAAmB,EAAA;AAE9BG,cAAUX,KAAAA,KAAAA,QAAAA,GACLU,IAAIE,KAAMC,CAAAA,OAAAA,GAAU,CAACzC,SAASM,CAAAA,KAAAA,GAAQ,SAAS,OAChD,GAAA,IAAA,CAAA;AAAA,aACN;AAAA,WACD,CAAA,CAAA;AAAA,SACH;AAEA,QAAA,IAAIP,kBAAiBO,KAAO,EAAA;AAE1BN,UAAAA,UAASM,KACJT,GAAAA,WAAAA,CAAWS,KAAQ6B,GAAAA,aAAAA,GACnBtC,YAAWS,KAAQc,GAAAA,OAAAA,CAAAA;AAAAA,SAC1B;AAAA,OACF;AAEA,MAAO,OAAA;AAAA,QACLxB,MAAAA,EAAAA,OAAAA;AAAAA,QACAC,UAAAA,EAAAA,WAAAA;AAAAA,QACAC,QAAAA,EAAAA,SAAAA;AAAAA,QACAC,gBAAAA,EAAAA,iBAAAA;AAAAA,QACAC,QAAAA,EAAAA,SAAAA;AAAAA,OACF,CAAA;AAAA,KACF;AAEA,IAAO,OAAA,MAAAY,gBAAA,KAAA,EAAA;AAAA,MAAA,SACSlB,EAAAA,OAAAA;AAAAA,KAAO,EAAAkB,CAAAA,eAAAA,CAAA8B,iBAAA,EAAA;AAAA,MAAA,KAEZnD,EAAAA,OAAAA;AAAAA,MAAO,OACL,EAAA,KAAA;AAAA,MAAK,UACF,EAAA;AAAA,QAAEiD,KAAO,EAAA;AAAA,UAAEG,OAAOxE,KAAMO,CAAAA,UAAAA;AAAAA,SAAW;AAAA,OAAE;AAAA,MAAC,SACzCY,UAAWgB,CAAAA,KAAAA;AAAAA,KAAK,EAAA;AAAA,MAAA9B,OAAAA,EAAAA,MAAAoC,CAAAA,eAAAA,CAAAgC,gBAAA,EAAA;AAAA,QAAA,KAEbhD,EAAAA,MAAAA;AAAAA,OAAM,EAAA;AAAA,QAAApB,OAAAA,EAAAA,MACbY,CAAAA,KAAAA,CAAMZ,UACLY,KAAMZ,CAAAA,OAAAA,EAASoC,GAAAA,eAAAA,CAAAiC,wBAAA,EAAA;AAAA,UAAA,UAGL1E,KAAMC,CAAAA,MAAAA;AAAAA,UAAM,SACbkB,UAAWgB,CAAAA,KAAAA;AAAAA,SAErB,EAAA,IAAA,CAAAM,EAAAA,eAAAA,CAAAkC,gBAAA,EAAA;AAAA,UAAA,QACUjD,UAAWS,CAAAA,KAAAA;AAAAA,UAAK,OAAS,EAAA;AAAA,YAAEyC,SAAW,EAAA,OAAA;AAAA,WAAQ;AAAA,SAAC,EAAA;AAAA,UAAAvE,OAAAA,EAAAA,MAAAoC,CAAAA,eAAAA,CAAAoC,uBAAA,IAAA,EAAA;AAAA,YAAAxE,OAAAA,EAAAA,MAErDY,CAAAA,KAAAA,CAAM6D,SAAS7D,KAAM6D,CAAAA,MAAAA,EAAW/C,GAAAA,YAAAA,EAAc,CAAA;AAAA,WAAA,CAAA,CAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAM1D,CAAA,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"DQueryForm.cjs","sources":["../../../src/form/DQueryForm.tsx"],"sourcesContent":["import { defineComponent, onMounted, ref, watch, watchEffect } from \"vue\";\nimport { Form, FormItem, Row, Col, Button, Space } from \"ant-design-vue\";\nimport {\n SearchOutlined,\n ReloadOutlined,\n DoubleRightOutlined\n} from \"@ant-design/icons-vue\";\nimport DJsonSchemeRender from \"../json-scheme-render/JsonSchemeRender\";\n\n/**\n * 查询表单渲染\n * 展开,隐藏功能\n */\nexport default defineComponent({\n name: \"DQueryForm\",\n props: {\n scheme: {\n type: [Array, Object] as unknown as () => any[] | Record<string, any>,\n default: () => []\n },\n model: {\n type: Object as () => Record<string, unknown>,\n default: () => ({})\n },\n labelWidth: {\n type: String,\n default: \"90px\"\n },\n loading: {\n type: Boolean,\n default: false\n },\n queryText: {\n type: String,\n default: \"查询\"\n },\n resetText: {\n type: String,\n default: \"重置\"\n },\n expendText: {\n type: String,\n default: \"展开\"\n },\n collapseText: {\n type: String,\n default: \"收起\"\n },\n btnShape: {\n type: String as any,\n default: \"round\"\n }\n },\n emits: [\"reset\", \"query\"],\n setup(props, { slots, emit }) {\n // 表单\n const { loading, modelValue, formRef, onQuery, onReset, onKeyup } =\n useForm();\n // 展开\n const { rowRef, actionSpan, onExpend, expendBtnVisible, isExpend } =\n useExpand();\n //渲染操作列\n const { renderAction } = useRender();\n\n function useForm() {\n const loading = ref(false);\n const formRef = ref<any>(null);\n const modelValue = ref<any>({});\n\n watchEffect(() => {\n modelValue.value = props.model;\n });\n\n watch(\n () => props.loading,\n (val) => {\n loading.value = val;\n }\n );\n\n /// 监听回车事件\n // watch(enterKey, (v) => {\n // if (v) {\n // // 有路由名字会被keepalive进行缓存\n // // 用于判断当前页面是否被激活 因为页面被缓存的时候,页面切换后,回车事件依然会触发\n // const isActive = keepStore.list.some((name) => name === route.name);\n // console.log(route.name);\n // if (!loading.value && isActive) {\n // emit(\"query\", modelValue.value);\n // }\n // //TODO 逻辑有问题\n // if (!route.name) {\n // // 没有路由名字,不会被缓存\n // if (!loading.value) {\n // emit(\"query\", modelValue.value);\n // }\n // } else {\n //\n // }\n // }\n // });\n\n const onQuery = () => {\n emit(\"query\", modelValue.value);\n };\n\n const onReset = () => {\n formRef.value?.resetFields();\n emit(\"reset\");\n };\n\n const onKeyup = (event: any) => {\n if (event.keyCode === 13) {\n if (!loading.value) {\n emit(\"query\", modelValue.value);\n }\n }\n };\n return {\n loading,\n modelValue,\n formRef,\n onQuery,\n onReset,\n onKeyup\n };\n }\n\n function useRender() {\n /**\n * 操作按钮渲染\n */\n function renderAction() {\n return (\n <Space>\n <Button\n loading={loading.value}\n type={\"primary\"}\n shape={props.btnShape}\n onClick={onQuery}\n >\n {{\n default: () => props.queryText,\n icon: () => <SearchOutlined />\n }}\n </Button>\n <Button\n disabled={loading.value}\n shape={props.btnShape}\n onClick={onReset}\n >\n {{\n default: () => props.resetText,\n icon: () => <ReloadOutlined />\n }}\n </Button>\n {expendBtnVisible.value ? (\n <Button onClick={onExpend} shape={\"round\"}>\n {{\n default: () =>\n isExpend.value ? props.collapseText : props.expendText,\n icon: () => (\n <DoubleRightOutlined rotate={isExpend.value ? -90 : 90} />\n )\n }}\n </Button>\n ) : null}\n </Space>\n );\n }\n\n return {\n renderAction\n };\n }\n\n function useExpand() {\n // 为24网格布局\n const gridCount = 24;\n // 每列占6个格子\n const colSpan = 6;\n // 每行显示4列\n const colsPerRow = 4;\n // 操作按钮span\n const actionSpan = ref(6);\n // 控制展开或隐藏按钮文本\n const isExpend = ref(false);\n // 控制展开按按钮是否显示\n const expendBtnVisible = ref(false);\n // 行对象\n const rowRef = ref<any>(null);\n\n onMounted(() => {\n handleShowOrHidden();\n });\n\n function onExpend() {\n isExpend.value = !isExpend.value;\n handleShowOrHidden();\n }\n\n /**\n * 处理隐藏或显示\n */\n function handleShowOrHidden() {\n const colEl = Array.from(rowRef.value?.$el?.children);\n // col总条数 减掉操作栏按钮的div个数为1\n const colElLen = colEl.length - 1;\n // 已占用的网格数 = col总条数 * 每列占用的网格数\n const occupiedCols = colElLen * colSpan;\n // 总行数 = 总div数 / 每行显示的列数\n const fullRows = Math.ceil(colElLen / colsPerRow);\n // 最后一行的网格数 = 已占用的网格数 % 24\n const lastRowCols = occupiedCols % gridCount;\n // 最后一行剩余的网格数\n const remainingCols = gridCount - lastRowCols;\n\n // 网格行大于2才显示展开或隐藏按钮\n if (fullRows > 2) {\n expendBtnVisible.value = true;\n } else {\n // 如果没有大于两行,操作栏占用剩余的宽度\n actionSpan.value = remainingCols;\n }\n // 最后一行的起始索引\n const lastRowStartIndex = colsPerRow * (fullRows - 1) - 1;\n // 只有展开按钮显示时才处理\n if (expendBtnVisible.value) {\n colEl.forEach((col: any, index) => {\n if (index >= lastRowStartIndex) {\n // 最后一个元素不隐藏 是操作按钮的div\n index !== colElLen\n ? (col.style.display = !isExpend.value ? \"none\" : \"block\")\n : null; // 隐藏元素\n }\n });\n }\n\n if (expendBtnVisible.value) {\n // 如果是展开状态 则操作按钮占用剩余的网格数 否则占用6个网格\n isExpend.value\n ? (actionSpan.value = remainingCols)\n : (actionSpan.value = colSpan);\n }\n }\n\n return {\n rowRef,\n actionSpan,\n onExpend,\n expendBtnVisible,\n isExpend\n };\n }\n\n return () => (\n <div onKeyup={onKeyup}>\n <Form\n ref={formRef}\n colon={false}\n labelCol={{ style: { width: props.labelWidth } }}\n model={modelValue.value}\n >\n <Row ref={rowRef}>\n {slots.default ? (\n slots.default()\n ) : (\n <DJsonSchemeRender\n layout={props.scheme}\n value={modelValue.value}\n />\n )}\n <Col span={actionSpan.value} style={{ textAlign: \"right\" }}>\n <FormItem>\n {slots.action ? slots.action() : renderAction()}\n </FormItem>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n});\n"],"names":["defineComponent","name","props","scheme","type","Array","Object","default","model","labelWidth","String","loading","Boolean","queryText","resetText","expendText","collapseText","btnShape","emits","setup","slots","emit","modelValue","formRef","onQuery","onReset","onKeyup","useForm","rowRef","actionSpan","onExpend","expendBtnVisible","isExpend","useExpand","renderAction","useRender","ref","watchEffect","value","watch","val","resetFields","event","keyCode","_createVNode","Space","Button","icon","SearchOutlined","ReloadOutlined","DoubleRightOutlined","gridCount","colSpan","colsPerRow","onMounted","handleShowOrHidden","colEl","from","$el","children","colElLen","length","occupiedCols","fullRows","Math","ceil","lastRowCols","remainingCols","lastRowStartIndex","forEach","col","index","style","display","Form","width","Row","DJsonSchemeRender","Col","textAlign","FormItem","action"],"mappings":"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"}
|
|
@@ -35,6 +35,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
35
35
|
type: StringConstructor;
|
|
36
36
|
default: string;
|
|
37
37
|
};
|
|
38
|
+
btnShape: {
|
|
39
|
+
type: any;
|
|
40
|
+
default: string;
|
|
41
|
+
};
|
|
38
42
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("reset" | "query")[], "reset" | "query", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
39
43
|
scheme: {
|
|
40
44
|
type: () => any[] | Record<string, any>;
|
|
@@ -68,6 +72,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
68
72
|
type: StringConstructor;
|
|
69
73
|
default: string;
|
|
70
74
|
};
|
|
75
|
+
btnShape: {
|
|
76
|
+
type: any;
|
|
77
|
+
default: string;
|
|
78
|
+
};
|
|
71
79
|
}>> & {
|
|
72
80
|
onReset?: ((...args: any[]) => any) | undefined;
|
|
73
81
|
onQuery?: ((...args: any[]) => any) | undefined;
|
|
@@ -80,5 +88,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
80
88
|
resetText: string;
|
|
81
89
|
expendText: string;
|
|
82
90
|
collapseText: string;
|
|
91
|
+
btnShape: any;
|
|
83
92
|
}, {}>;
|
|
84
93
|
export default _default;
|
package/dist/cjs/menu/Menu.cjs
CHANGED
|
@@ -76,6 +76,7 @@ var Menu = /* @__PURE__ */ vue.defineComponent({
|
|
|
76
76
|
}
|
|
77
77
|
}));
|
|
78
78
|
vue.watch(() => getCollapsed.value, (val) => {
|
|
79
|
+
var _a;
|
|
79
80
|
const id = selectedMenuKeys.value[0];
|
|
80
81
|
const rs = findMatchedMenuById(id, list.value);
|
|
81
82
|
if (val) {
|
|
@@ -84,7 +85,7 @@ var Menu = /* @__PURE__ */ vue.defineComponent({
|
|
|
84
85
|
if (rs == null ? void 0 : rs.parentItem) {
|
|
85
86
|
openMenusKeys.value = [rs.parentItem.key];
|
|
86
87
|
} else {
|
|
87
|
-
openMenusKeys.value = rs ? [rs == null ? void 0 : rs.matchItem.key] : [];
|
|
88
|
+
openMenusKeys.value = rs.matchItem ? [(_a = rs == null ? void 0 : rs.matchItem) == null ? void 0 : _a.key] : [];
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.cjs","sources":["../../../src/menu/Menu.tsx"],"sourcesContent":["import { defineComponent, h, inject, resolveComponent, watch } from \"vue\";\nimport { useRouter, useRoute } from \"vue-router\";\n\nimport { storeToRefs } from \"pinia\";\n\nimport { useMenuStore, useSettingsStore } from \"@ditari/store\";\nimport useMenuCore from \"./useMenuCore\";\n\nexport default defineComponent({\n name: \"DMenu\",\n setup() {\n const router = useRouter();\n const route = useRoute();\n const { componentName, prop: menuProp } = inject(\"menuIcon\") as any;\n const { findMatchedMenuById, findMenuItemByUrl } = useMenuCore();\n\n // 菜单store\n const menuStore = useMenuStore();\n const { list, openMenusKeys, selectedMenuKeys } = storeToRefs(menuStore);\n // 设置store\n const settingsStore = useSettingsStore();\n const { getCollapsed } = storeToRefs(settingsStore) as any;\n useMenu();\n function useMenu() {\n /**\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\n */\n watch(\n () => route.fullPath,\n async (path) => {\n const flag = selectedMenuKeys.value.some(\n (item: string) => item === path\n );\n if (!flag) {\n let menuItem = findMenuItemByUrl(path, list.value);\n\n // 如果没有精确匹配,尝试匹配父级路径\n if (!menuItem) {\n menuItem = findClosestParentMenu(path, list.value);\n }\n if (!menuItem) {\n openMenusKeys.value = [];\n selectedMenuKeys.value = [path];\n } else {\n const rs = getFullParentChain(menuItem.id, list.value as never);\n if (!getCollapsed.value) {\n openMenusKeys.value = rs!;\n }\n selectedMenuKeys.value = [menuItem.key];\n }\n }\n }\n );\n\n watch(\n () => getCollapsed.value,\n (val) => {\n const id = selectedMenuKeys.value[0];\n const rs = findMatchedMenuById(id, list.value as never);\n\n if (val) {\n openMenusKeys.value = [];\n } else {\n if (rs?.parentItem) {\n openMenusKeys.value = [rs.parentItem.key];\n } else {\n openMenusKeys.value = rs ? [rs?.matchItem.key] : [];\n }\n }\n }\n );\n\n /**\n * 根据URL路径查找最接近的父级菜单\n */\n const findClosestParentMenu = (url: string, menus: any[]): any => {\n // 移除查询参数和哈希\n const cleanUrl = url.split(\"?\")[0].split(\"#\")[0];\n const pathSegments = cleanUrl.split(\"/\").filter(Boolean);\n\n // 从最长路径开始尝试匹配\n for (let i = pathSegments.length; i > 0; i--) {\n const testPath = \"/\" + pathSegments.slice(0, i).join(\"/\");\n const foundItem = findMenuItemByUrl(testPath, menus);\n if (foundItem) return foundItem;\n }\n\n return null;\n };\n\n /**\n * 获取从根到目标菜单项的完整 key 链\n * @param targetId 目标菜单项 id\n * @param menus 菜单数据\n * @param parentChain 递归传递的父级链\n */\n const getFullParentChain = (\n targetId: string,\n menus: any[],\n parentChain: string[] = []\n ): string[] | null => {\n for (const menu of menus) {\n // 找到目标项,返回完整链(包含自身 key)\n if (menu.id === targetId) {\n return [...parentChain, menu.key];\n }\n\n // 递归查找子菜单\n if (menu.children?.length) {\n const result = getFullParentChain(\n targetId,\n menu.children,\n [...parentChain, menu.key] // 传递当前层级的 key\n );\n if (result) return result;\n }\n }\n return null;\n };\n }\n\n /**\n * 监听菜单点击事件\n * @param item\n * @param key\n * @param keyPath\n */\n const onClick = ({ key, keyPath }: any) => {\n const rs = findMatchedMenuById(key, list.value);\n const findRoute = router\n .getRoutes()\n .find((item) => item.path === rs.matchItem.url && item.components);\n\n if (findRoute?.meta?.open === \"_blank\") {\n window.open(window.location.origin + rs.matchItem.url, \"_blank\");\n } else {\n openMenusKeys.value = keyPath;\n selectedMenuKeys.value = [rs.matchItem?.key];\n if (rs.matchItem?.url !== route.path) {\n // 判断目标路由和当前路由是否相等;\n // 不相等的时候再跳转\n router.push(rs.matchItem?.url).then((r) => {\n if (r) {\n console.warn(r);\n }\n });\n }\n }\n };\n\n // 渲染菜单\n const renderMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.key}>\n {{\n icon: () => renderIcon(menu),\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n const iconClass = [\"anticon\", \"anticon-menu\", \"ant-menu-item-icon\"];\n // 渲染图标\n const renderIcon = (menu: any) => {\n return (\n <>\n {!menu.icon ? (\n <div v-show={getCollapsed.value} class={iconClass}>\n {menu.title.substring(0, 1)}\n </div>\n ) : (\n renderIconSwitch(menu.icon)\n )}\n </>\n );\n };\n\n const renderIconSwitch = (icon: any) => {\n if (componentName === \"nativeHtml\") {\n return <span v-html={icon}></span>;\n } else {\n return h(resolveComponent(componentName), {\n [`${menuProp}`]: icon\n });\n }\n };\n\n // 递归渲染子菜单\n const renderSub = (menu: any) => {\n return (\n <>\n <a-sub-menu key={menu.key}>\n {{\n title: () => menu.title,\n icon: () => renderIcon(menu),\n default: () => {\n return menu.children.map(\n (item: any) =>\n !item.children || item.children.length === 0\n ? renderSubMenu(item)\n : renderSub(item) // 递归调用\n );\n }\n }}\n </a-sub-menu>\n </>\n );\n };\n\n // 递归下的子菜单\n const renderSubMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.key}>\n {{\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n return () => (\n <>\n <a-menu\n mode=\"inline\"\n theme=\"dark\"\n v-model:openKeys={openMenusKeys.value}\n v-model:selectedKeys={selectedMenuKeys.value}\n onClick={onClick}\n >\n {list.value.map((menu: any) => {\n if (!menu.children || menu.children?.length === 0) {\n // 没有children属性或者children的长度等于0\n return renderMenu(menu);\n } else {\n return renderSub(menu);\n }\n })}\n </a-menu>\n </>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","setup","router","useRouter","route","useRoute","componentName","prop","menuProp","inject","findMatchedMenuById","findMenuItemByUrl","useMenuCore","menuStore","useMenuStore","list","openMenusKeys","selectedMenuKeys","storeToRefs","settingsStore","useSettingsStore","getCollapsed","useMenu","watch","fullPath","path","flag","value","some","item","menuItem","findClosestParentMenu","rs","getFullParentChain","id","key","val","parentItem","matchItem","url","menus","cleanUrl","split","pathSegments","filter","Boolean","i","length","testPath","slice","join","foundItem","targetId","parentChain","menu","children","result","onClick","keyPath","findRoute","getRoutes","find","components","meta","open","window","location","origin","push","then","r","console","warn","renderMenu","_createVNode","_Fragment","_resolveComponent","icon","renderIcon","default","title","iconClass","_withDirectives","substring","_vShow","renderIconSwitch","h","resolveComponent","renderSub","map","renderSubMenu","_slot","$event"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMwC,SAAAA,QAAAC,CAAA,EAAA;AAAA,EAAA,OAAA,OAAAA,CAAAA,KAAA,UAAAC,IAAAA,MAAAA,CAAAC,SAAAC,CAAAA,QAAAA,CAAAC,IAAAJ,CAAAA,CAAA,CAAAK,KAAAA,iBAAAA,IAAAA,CAAAA,WAAAA,CAAAL,CAAA,CAAA,CAAA;AAAA,CAAA;AAExC,2BAA+BM,mBAAA,CAAA;AAAA,EAC7BC,IAAM,EAAA,OAAA;AAAA,EACNC,KAAQ,GAAA;AACN,IAAA,MAAMC,SAASC,mBAAU,EAAA,CAAA;AACzB,IAAA,MAAMC,QAAQC,kBAAS,EAAA,CAAA;AACvB,IAAM,MAAA;AAAA,MAAEC,aAAAA;AAAAA,MAAeC,IAAMC,EAAAA,QAAAA;AAAAA,KAAS,GAAIC,WAAO,UAAU,CAAA,CAAA;AAC3D,IAAM,MAAA;AAAA,MAAEC,mBAAAA;AAAAA,MAAqBC,iBAAAA;AAAAA,QAAsBC,mBAAY,EAAA,CAAA;AAG/D,IAAA,MAAMC,YAAYC,kBAAa,EAAA,CAAA;AAC/B,IAAM,MAAA;AAAA,MAAEC,IAAAA;AAAAA,MAAMC,aAAAA;AAAAA,MAAeC,gBAAAA;AAAAA,KAAiB,GAAIC,kBAAYL,SAAS,CAAA,CAAA;AAEvE,IAAA,MAAMM,gBAAgBC,sBAAiB,EAAA,CAAA;AACvC,IAAM,MAAA;AAAA,MAAEC,YAAAA;AAAAA,KAAa,GAAIH,kBAAYC,aAAa,CAAA,CAAA;AAClDG,IAAQ,OAAA,EAAA,CAAA;AACR,IAAA,SAASA,OAAU,GAAA;AAIjBC,MAAAA,SAAAA,CACE,MAAMnB,KAAAA,CAAMoB,QACZ,EAAA,CAAOC,IAAS,KAAA,OAAA,CAAA,IAAA,EAAA,IAAA,EAAA,aAAA;AACd,QAAA,MAAMC,OAAOT,gBAAiBU,CAAAA,KAAAA,CAAMC,IACjCC,CAAAA,CAAAA,IAAAA,KAAiBA,SAASJ,IAC7B,CAAA,CAAA;AACA,QAAA,IAAI,CAACC,IAAM,EAAA;AACT,UAAA,IAAII,QAAWnB,GAAAA,iBAAAA,CAAkBc,IAAMV,EAAAA,IAAAA,CAAKY,KAAK,CAAA,CAAA;AAGjD,UAAA,IAAI,CAACG,QAAU,EAAA;AACbA,YAAWC,QAAAA,GAAAA,qBAAAA,CAAsBN,IAAMV,EAAAA,IAAAA,CAAKY,KAAK,CAAA,CAAA;AAAA,WACnD;AACA,UAAA,IAAI,CAACG,QAAU,EAAA;AACbd,YAAAA,aAAAA,CAAcW,QAAQ,EAAE,CAAA;AACxBV,YAAiBU,gBAAAA,CAAAA,KAAAA,GAAQ,CAACF,IAAI,CAAA,CAAA;AAAA,WACzB,MAAA;AACL,YAAA,MAAMO,EAAKC,GAAAA,kBAAAA,CAAmBH,QAASI,CAAAA,EAAAA,EAAInB,KAAKY,KAAc,CAAA,CAAA;AAC9D,YAAI,IAAA,CAACN,aAAaM,KAAO,EAAA;AACvBX,cAAAA,aAAAA,CAAcW,KAAQK,GAAAA,EAAAA,CAAAA;AAAAA,aACxB;AACAf,YAAiBU,gBAAAA,CAAAA,KAAAA,GAAQ,CAACG,QAAAA,CAASK,GAAG,CAAA,CAAA;AAAA,WACxC;AAAA,SACF;AAAA,OAEJ,CAAA,CAAA,CAAA;AAEAZ,MACEA,SAAA,CAAA,MAAMF,YAAaM,CAAAA,KAAAA,EAClBS,CAAQ,GAAA,KAAA;AACP,QAAMF,MAAAA,EAAAA,GAAKjB,gBAAiBU,CAAAA,KAAAA,CAAM,CAAC,CAAA,CAAA;AACnC,QAAA,MAAMK,EAAKtB,GAAAA,mBAAAA,CAAoBwB,EAAInB,EAAAA,IAAAA,CAAKY,KAAc,CAAA,CAAA;AAEtD,QAAA,IAAIS,GAAK,EAAA;AACPpB,UAAAA,aAAAA,CAAcW,QAAQ,EAAE,CAAA;AAAA,SACnB,MAAA;AACL,UAAA,IAAIK,yBAAIK,UAAY,EAAA;AAClBrB,YAAAA,aAAAA,CAAcW,KAAQ,GAAA,CAACK,EAAGK,CAAAA,UAAAA,CAAWF,GAAG,CAAA,CAAA;AAAA,WACnC,MAAA;AACLnB,YAAAA,aAAAA,CAAcW,QAAQK,EAAK,GAAA,CAACA,yBAAIM,SAAUH,CAAAA,GAAG,IAAI,EAAE,CAAA;AAAA,WACrD;AAAA,SACF;AAAA,OAEJ,CAAA,CAAA;AAKA,MAAMJ,MAAAA,qBAAAA,GAAwBA,CAACQ,GAAAA,EAAaC,KAAsB,KAAA;AAEhE,QAAMC,MAAAA,QAAAA,GAAWF,GAAIG,CAAAA,KAAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAEA,CAAAA,KAAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAA;AAC/C,QAAA,MAAMC,eAAeF,QAASC,CAAAA,KAAAA,CAAM,GAAG,CAAA,CAAEE,OAAOC,OAAO,CAAA,CAAA;AAGvD,QAAA,KAAA,IAASC,CAAIH,GAAAA,YAAAA,CAAaI,MAAQD,EAAAA,CAAAA,GAAI,GAAGA,CAAK,EAAA,EAAA;AAC5C,UAAME,MAAAA,QAAAA,GAAW,MAAML,YAAaM,CAAAA,KAAAA,CAAM,GAAGH,CAAC,CAAA,CAAEI,KAAK,GAAG,CAAA,CAAA;AACxD,UAAMC,MAAAA,SAAAA,GAAYxC,iBAAkBqC,CAAAA,QAAAA,EAAUR,KAAK,CAAA,CAAA;AACnD,UAAIW,IAAAA,SAAAA;AAAW,YAAOA,OAAAA,SAAAA,CAAAA;AAAAA,SACxB;AAEA,QAAO,OAAA,IAAA,CAAA;AAAA,OACT,CAAA;AAQA,MAAA,MAAMlB,qBAAqBA,CACzBmB,QAAAA,EACAZ,KACAa,EAAAA,WAAAA,GAAwB,EACJ,KAAA;;AACpB,QAAA,KAAA,MAAWC,QAAQd,KAAO,EAAA;AAExB,UAAIc,IAAAA,IAAAA,CAAKpB,OAAOkB,QAAU,EAAA;AACxB,YAAA,OAAO,CAAC,GAAGC,WAAaC,EAAAA,IAAAA,CAAKnB,GAAG,CAAA,CAAA;AAAA,WAClC;AAGA,UAAImB,IAAAA,CAAAA,EAAAA,GAAAA,IAAAA,CAAKC,QAALD,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAeP,MAAQ,EAAA;AACzB,YAAA,MAAMS,MAASvB,GAAAA,kBAAAA;AAAAA,cACbmB,QAAAA;AAAAA,cACAE,IAAKC,CAAAA,QAAAA;AAAAA,cACL,CAAC,GAAGF,WAAaC,EAAAA,IAAAA,CAAKnB,GAAG,CAAA;AAAA;AAAA,aAC3B,CAAA;AACA,YAAIqB,IAAAA,MAAAA;AAAQ,cAAOA,OAAAA,MAAAA,CAAAA;AAAAA,WACrB;AAAA,SACF;AACA,QAAO,OAAA,IAAA,CAAA;AAAA,OACT,CAAA;AAAA,KACF;AAQA,IAAA,MAAMC,UAAUA,CAAC;AAAA,MAAEtB,GAAAA;AAAAA,MAAKuB,OAAAA;AAAAA,KAAmB,KAAA;;AACzC,MAAA,MAAM1B,EAAKtB,GAAAA,mBAAAA,CAAoByB,GAAKpB,EAAAA,IAAAA,CAAKY,KAAK,CAAA,CAAA;AAC9C,MAAA,MAAMgC,SAAYzD,GAAAA,MAAAA,CACf0D,SAAU,EAAA,CACVC,IAAMhC,CAAAA,CAAAA,IAAAA,KAASA,IAAKJ,CAAAA,IAAAA,KAASO,EAAGM,CAAAA,SAAAA,CAAUC,GAAOV,IAAAA,IAAAA,CAAKiC,UAAU,CAAA,CAAA;AAEnE,MAAA,IAAA,CAAA,CAAIH,EAAWI,GAAAA,SAAAA,IAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAAA,CAAAA,IAAAA,KAAXJ,IAAiBK,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,MAAS,QAAU,EAAA;AACtCC,QAAAA,MAAAA,CAAOD,KAAKC,MAAOC,CAAAA,QAAAA,CAASC,SAASnC,EAAGM,CAAAA,SAAAA,CAAUC,KAAK,QAAQ,CAAA,CAAA;AAAA,OAC1D,MAAA;AACLvB,QAAAA,aAAAA,CAAcW,KAAQ+B,GAAAA,OAAAA,CAAAA;AACtBzC,QAAAA,gBAAAA,CAAiBU,KAAQ,GAAA,CAAA,CAACK,EAAGM,GAAAA,EAAAA,CAAAA,SAAAA,KAAHN,mBAAcG,GAAG,CAAA,CAAA;AAC3C,QAAA,IAAA,CAAA,CAAIH,EAAGM,GAAAA,EAAAA,CAAAA,SAAAA,KAAHN,IAAcO,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,GAAAA,MAAQnC,MAAMqB,IAAM,EAAA;AAGpCvB,UAAAA,MAAAA,CAAOkE,MAAKpC,EAAGM,GAAAA,EAAAA,CAAAA,SAAAA,KAAHN,mBAAcO,GAAG,CAAA,CAAE8B,KAAMC,CAAM,CAAA,KAAA;AACzC,YAAA,IAAIA,CAAG,EAAA;AACLC,cAAAA,OAAAA,CAAQC,KAAKF,CAAC,CAAA,CAAA;AAAA,aAChB;AAAA,WACD,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAAA,KACF,CAAA;AAGA,IAAA,MAAMG,aAAcnB,CAAc,IAAA,KAAA;AAChC,MAAA,OAAAoB,gBAAAC,YAAAD,EAAAA,IAAAA,EAAAA,CAAAA,eAAAE,CAAAA,oBAAAA,CAAA,aAAA,CAAA,EAAA;AAAA,QAAA,OAEsBtB,IAAKnB,CAAAA,GAAAA;AAAAA,OAAG,EAAA;AAAA,QAEtB0C,IAAAA,EAAMA,MAAMC,UAAAA,CAAWxB,IAAI,CAAA;AAAA,QAC3ByB,OAAAA,EAASA,MAAMzB,IAAK0B,CAAAA,KAAAA;AAAAA,OAAK,CAAA,CAAA,CAAA,CAAA;AAAA,KAKnC,CAAA;AAEA,IAAA,MAAMC,SAAY,GAAA,CAAC,SAAW,EAAA,cAAA,EAAgB,oBAAoB,CAAA,CAAA;AAElE,IAAA,MAAMH,aAAcxB,CAAc,IAAA,KAAA;AAChC,MAAAoB,OAAAA,eAAAA,CAAAC,cAEK,IAAA,EAAA,CAAA,CAACrB,IAAKuB,CAAAA,IAAAA,GAAIK,kBAAAR,CAAAA,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAC+BO,EAAAA,SAAAA;AAAAA,OAAS,EAC9C3B,CAAAA,IAAK0B,CAAAA,KAAAA,CAAMG,UAAU,CAAG,EAAA,CAAC,CAAC,CAAA,CAAA,EAAA,CAAA,CAAAC,SADhB/D,EAAAA,YAAAA,CAAaM,KAAK,CAAA,CAAA,IAI/B0D,gBAAiB/B,CAAAA,IAAAA,CAAKuB,IAAI,CAC3B,CAAA,CAAA,CAAA;AAAA,KAGP,CAAA;AAEA,IAAA,MAAMQ,mBAAoBR,CAAc,IAAA,KAAA;AACtC,MAAA,IAAIvE,kBAAkB,YAAc,EAAA;AAClC,QAAA,OAAAoE,gBAAA,MAAA,EAAA;AAAA,UAAA,WAAqBG,EAAAA,IAAAA;AAAAA,WAAI,IAAA,CAAA,CAAA;AAAA,OACpB,MAAA;AACL,QAAOS,OAAAA,KAAAA,CAAEC,oBAAiBjF,CAAAA,aAAa,CAAG,EAAA;AAAA,UACxC,CAAE,CAAA,EAAEE,QAAS,CAAA,CAAC,GAAGqE,IAAAA;AAAAA,SAClB,CAAA,CAAA;AAAA,OACH;AAAA,KACF,CAAA;AAGA,IAAA,MAAMW,YAAalC,CAAc,IAAA,KAAA;AAC/B,MAAA,OAAAoB,gBAAAC,YAAAD,EAAAA,IAAAA,EAAAA,CAAAA,eAAAE,CAAAA,oBAAAA,CAAA,YAAA,CAAA,EAAA;AAAA,QAAA,OAEqBtB,IAAKnB,CAAAA,GAAAA;AAAAA,OAAG,EAAA;AAAA,QAErB6C,KAAAA,EAAOA,MAAM1B,IAAK0B,CAAAA,KAAAA;AAAAA,QAClBH,IAAAA,EAAMA,MAAMC,UAAAA,CAAWxB,IAAI,CAAA;AAAA,QAC3ByB,SAASA,MAAM;AACb,UAAA,OAAOzB,KAAKC,QAASkC,CAAAA,GAAAA;AAAAA,YAClB5D,CACC,IAAA,KAAA,CAACA,IAAK0B,CAAAA,QAAAA,IAAY1B,IAAK0B,CAAAA,QAAAA,CAASR,MAAW,KAAA,CAAA,GACvC2C,aAAc7D,CAAAA,IAAI,CAClB2D,GAAAA,SAAAA,CAAU3D,IAAI,CAAA;AAAA;AAAA,WACtB,CAAA;AAAA,SACF;AAAA,OAAC,CAAA,CAAA,CAAA,CAAA;AAAA,KAKX,CAAA;AAGA,IAAA,MAAM6D,gBAAiBpC,CAAc,IAAA,KAAA;AACnC,MAAA,OAAAoB,gBAAAC,YAAAD,EAAAA,IAAAA,EAAAA,CAAAA,eAAAE,CAAAA,oBAAAA,CAAA,aAAA,CAAA,EAAA;AAAA,QAAA,OAEsBtB,IAAKnB,CAAAA,GAAAA;AAAAA,OAAG,EAAA;AAAA,QAEtB4C,OAAAA,EAASA,MAAMzB,IAAK0B,CAAAA,KAAAA;AAAAA,OAAK,CAAA,CAAA,CAAA,CAAA;AAAA,KAKnC,CAAA;AAEA,IAAA,OAAO,MAAA;AAAA,MAAAW,IAAAA,KAAAA,CAAAA;AAAA,MAAA,OAAAjB,gBAAAC,YAAAD,EAAAA,IAAAA,EAAAA,CAAAA,eAAAE,CAAAA,oBAAAA,CAAA,QAAA,CAAA,EAAA;AAAA,QAAA,MAAA,EAAA,QAAA;AAAA,QAAA,OAAA,EAAA,MAAA;AAAA,QAAA,YAKiB5D,aAAcW,CAAAA,KAAAA;AAAAA,QAAK,mBAAA,EAAAiE,CAAnB5E,MAAAA,KAAAA,aAAAA,CAAcW,KAAKiE,GAAAA,MAAAA;AAAAA,QAAA,gBACf3E,gBAAiBU,CAAAA,KAAAA;AAAAA,QAAK,uBAAA,EAAAiE,CAAtB3E,MAAAA,KAAAA,gBAAAA,CAAiBU,KAAKiE,GAAAA,MAAAA;AAAAA,QAAA,SACnCnC,EAAAA,OAAAA;AAAAA,SAAOjE,OAAAmG,CAAAA,KAAAA,GAEf5E,IAAKY,CAAAA,KAAAA,CAAM8D,IAAKnC,CAAc,IAAA,KAAA;;AAC7B,QAAA,IAAI,CAACA,IAAKC,CAAAA,QAAAA,IAAAA,CAAAA,CAAYD,UAAKC,QAALD,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAeP,YAAW,CAAG,EAAA;AAEjD,UAAA,OAAO0B,WAAWnB,IAAI,CAAA,CAAA;AAAA,SACjB,MAAA;AACL,UAAA,OAAOkC,UAAUlC,IAAI,CAAA,CAAA;AAAA,SACvB;AAAA,OACD,CAAC,CAAA,GAAAqC,KAAA,GAAA;AAAA,QAAAZ,OAAAA,EAAAA,MAAA,CAAAY,KAAA,CAAA;AAAA,OAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAAA,CAAA;AAAA,GAIV;AACF,CAAC,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"Menu.cjs","sources":["../../../src/menu/Menu.tsx"],"sourcesContent":["import { defineComponent, h, inject, resolveComponent, watch } from \"vue\";\nimport { useRouter, useRoute } from \"vue-router\";\n\nimport { storeToRefs } from \"pinia\";\n\nimport { useMenuStore, useSettingsStore } from \"@ditari/store\";\nimport useMenuCore from \"./useMenuCore\";\n\nexport default defineComponent({\n name: \"DMenu\",\n setup() {\n const router = useRouter();\n const route = useRoute();\n const { componentName, prop: menuProp } = inject(\"menuIcon\") as any;\n const { findMatchedMenuById, findMenuItemByUrl } = useMenuCore();\n\n // 菜单store\n const menuStore = useMenuStore();\n const { list, openMenusKeys, selectedMenuKeys } = storeToRefs(menuStore);\n // 设置store\n const settingsStore = useSettingsStore();\n const { getCollapsed } = storeToRefs(settingsStore) as any;\n useMenu();\n function useMenu() {\n /**\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\n */\n watch(\n () => route.fullPath,\n async (path) => {\n const flag = selectedMenuKeys.value.some(\n (item: string) => item === path\n );\n if (!flag) {\n let menuItem = findMenuItemByUrl(path, list.value);\n\n // 如果没有精确匹配,尝试匹配父级路径\n if (!menuItem) {\n menuItem = findClosestParentMenu(path, list.value);\n }\n if (!menuItem) {\n openMenusKeys.value = [];\n selectedMenuKeys.value = [path];\n } else {\n const rs = getFullParentChain(menuItem.id, list.value as never);\n if (!getCollapsed.value) {\n openMenusKeys.value = rs!;\n }\n selectedMenuKeys.value = [menuItem.key];\n }\n }\n }\n );\n\n watch(\n () => getCollapsed.value,\n (val) => {\n const id = selectedMenuKeys.value[0];\n const rs = findMatchedMenuById(id, list.value as never);\n\n if (val) {\n openMenusKeys.value = [];\n } else {\n if (rs?.parentItem) {\n openMenusKeys.value = [rs.parentItem.key];\n } else {\n openMenusKeys.value = rs.matchItem ? [rs?.matchItem?.key] : [];\n }\n }\n }\n );\n\n /**\n * 根据URL路径查找最接近的父级菜单\n */\n const findClosestParentMenu = (url: string, menus: any[]): any => {\n // 移除查询参数和哈希\n const cleanUrl = url.split(\"?\")[0].split(\"#\")[0];\n const pathSegments = cleanUrl.split(\"/\").filter(Boolean);\n\n // 从最长路径开始尝试匹配\n for (let i = pathSegments.length; i > 0; i--) {\n const testPath = \"/\" + pathSegments.slice(0, i).join(\"/\");\n const foundItem = findMenuItemByUrl(testPath, menus);\n if (foundItem) return foundItem;\n }\n\n return null;\n };\n\n /**\n * 获取从根到目标菜单项的完整 key 链\n * @param targetId 目标菜单项 id\n * @param menus 菜单数据\n * @param parentChain 递归传递的父级链\n */\n const getFullParentChain = (\n targetId: string,\n menus: any[],\n parentChain: string[] = []\n ): string[] | null => {\n for (const menu of menus) {\n // 找到目标项,返回完整链(包含自身 key)\n if (menu.id === targetId) {\n return [...parentChain, menu.key];\n }\n\n // 递归查找子菜单\n if (menu.children?.length) {\n const result = getFullParentChain(\n targetId,\n menu.children,\n [...parentChain, menu.key] // 传递当前层级的 key\n );\n if (result) return result;\n }\n }\n return null;\n };\n }\n\n /**\n * 监听菜单点击事件\n * @param item\n * @param key\n * @param keyPath\n */\n const onClick = ({ key, keyPath }: any) => {\n const rs = findMatchedMenuById(key, list.value);\n const findRoute = router\n .getRoutes()\n .find((item) => item.path === rs.matchItem.url && item.components);\n\n if (findRoute?.meta?.open === \"_blank\") {\n window.open(window.location.origin + rs.matchItem.url, \"_blank\");\n } else {\n openMenusKeys.value = keyPath;\n selectedMenuKeys.value = [rs.matchItem?.key];\n if (rs.matchItem?.url !== route.path) {\n // 判断目标路由和当前路由是否相等;\n // 不相等的时候再跳转\n router.push(rs.matchItem?.url).then((r) => {\n if (r) {\n console.warn(r);\n }\n });\n }\n }\n };\n\n // 渲染菜单\n const renderMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.key}>\n {{\n icon: () => renderIcon(menu),\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n const iconClass = [\"anticon\", \"anticon-menu\", \"ant-menu-item-icon\"];\n // 渲染图标\n const renderIcon = (menu: any) => {\n return (\n <>\n {!menu.icon ? (\n <div v-show={getCollapsed.value} class={iconClass}>\n {menu.title.substring(0, 1)}\n </div>\n ) : (\n renderIconSwitch(menu.icon)\n )}\n </>\n );\n };\n\n const renderIconSwitch = (icon: any) => {\n if (componentName === \"nativeHtml\") {\n return <span v-html={icon}></span>;\n } else {\n return h(resolveComponent(componentName), {\n [`${menuProp}`]: icon\n });\n }\n };\n\n // 递归渲染子菜单\n const renderSub = (menu: any) => {\n return (\n <>\n <a-sub-menu key={menu.key}>\n {{\n title: () => menu.title,\n icon: () => renderIcon(menu),\n default: () => {\n return menu.children.map(\n (item: any) =>\n !item.children || item.children.length === 0\n ? renderSubMenu(item)\n : renderSub(item) // 递归调用\n );\n }\n }}\n </a-sub-menu>\n </>\n );\n };\n\n // 递归下的子菜单\n const renderSubMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.key}>\n {{\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n return () => (\n <>\n <a-menu\n mode=\"inline\"\n theme=\"dark\"\n v-model:openKeys={openMenusKeys.value}\n v-model:selectedKeys={selectedMenuKeys.value}\n onClick={onClick}\n >\n {list.value.map((menu: any) => {\n if (!menu.children || menu.children?.length === 0) {\n // 没有children属性或者children的长度等于0\n return renderMenu(menu);\n } else {\n return renderSub(menu);\n }\n })}\n </a-menu>\n </>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","setup","router","useRouter","route","useRoute","componentName","prop","menuProp","inject","findMatchedMenuById","findMenuItemByUrl","useMenuCore","menuStore","useMenuStore","list","openMenusKeys","selectedMenuKeys","storeToRefs","settingsStore","useSettingsStore","getCollapsed","useMenu","watch","fullPath","path","flag","value","some","item","menuItem","findClosestParentMenu","rs","getFullParentChain","id","key","val","parentItem","matchItem","url","menus","cleanUrl","split","pathSegments","filter","Boolean","i","length","testPath","slice","join","foundItem","targetId","parentChain","menu","children","result","onClick","keyPath","findRoute","getRoutes","find","components","meta","open","window","location","origin","push","then","r","console","warn","renderMenu","_createVNode","_Fragment","_resolveComponent","icon","renderIcon","default","title","iconClass","_withDirectives","substring","_vShow","renderIconSwitch","h","resolveComponent","renderSub","map","renderSubMenu","_slot","$event"],"mappings":"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"}
|
|
@@ -35,6 +35,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
35
35
|
type: StringConstructor;
|
|
36
36
|
default: string;
|
|
37
37
|
};
|
|
38
|
+
btnShape: {
|
|
39
|
+
type: any;
|
|
40
|
+
default: string;
|
|
41
|
+
};
|
|
38
42
|
}, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("reset" | "query")[], "reset" | "query", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
39
43
|
scheme: {
|
|
40
44
|
type: () => any[] | Record<string, any>;
|
|
@@ -68,6 +72,10 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
68
72
|
type: StringConstructor;
|
|
69
73
|
default: string;
|
|
70
74
|
};
|
|
75
|
+
btnShape: {
|
|
76
|
+
type: any;
|
|
77
|
+
default: string;
|
|
78
|
+
};
|
|
71
79
|
}>> & {
|
|
72
80
|
onReset?: ((...args: any[]) => any) | undefined;
|
|
73
81
|
onQuery?: ((...args: any[]) => any) | undefined;
|
|
@@ -80,5 +88,6 @@ declare const _default: import("vue").DefineComponent<{
|
|
|
80
88
|
resetText: string;
|
|
81
89
|
expendText: string;
|
|
82
90
|
collapseText: string;
|
|
91
|
+
btnShape: any;
|
|
83
92
|
}, {}>;
|
|
84
93
|
export default _default;
|
|
@@ -37,6 +37,10 @@ var QueryForm = /* @__PURE__ */ defineComponent({
|
|
|
37
37
|
collapseText: {
|
|
38
38
|
type: String,
|
|
39
39
|
default: "\u6536\u8D77"
|
|
40
|
+
},
|
|
41
|
+
btnShape: {
|
|
42
|
+
type: String,
|
|
43
|
+
default: "round"
|
|
40
44
|
}
|
|
41
45
|
},
|
|
42
46
|
emits: ["reset", "query"],
|
|
@@ -102,14 +106,14 @@ var QueryForm = /* @__PURE__ */ defineComponent({
|
|
|
102
106
|
default: () => [createVNode(Button, {
|
|
103
107
|
"loading": loading.value,
|
|
104
108
|
"type": "primary",
|
|
105
|
-
"shape":
|
|
109
|
+
"shape": props.btnShape,
|
|
106
110
|
"onClick": onQuery
|
|
107
111
|
}, {
|
|
108
112
|
default: () => props.queryText,
|
|
109
113
|
icon: () => createVNode(SearchOutlined, null, null)
|
|
110
114
|
}), createVNode(Button, {
|
|
111
115
|
"disabled": loading.value,
|
|
112
|
-
"shape":
|
|
116
|
+
"shape": props.btnShape,
|
|
113
117
|
"onClick": onReset
|
|
114
118
|
}, {
|
|
115
119
|
default: () => props.resetText,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DQueryForm.mjs","sources":["../../../src/form/DQueryForm.tsx"],"sourcesContent":["import { defineComponent, onMounted, ref, watch, watchEffect } from \"vue\";\nimport { Form, FormItem, Row, Col, Button, Space } from \"ant-design-vue\";\nimport {\n SearchOutlined,\n ReloadOutlined,\n DoubleRightOutlined\n} from \"@ant-design/icons-vue\";\nimport DJsonSchemeRender from \"../json-scheme-render/JsonSchemeRender\";\n\n/**\n * 查询表单渲染\n * 展开,隐藏功能\n */\nexport default defineComponent({\n name: \"DQueryForm\",\n props: {\n scheme: {\n type: [Array, Object] as unknown as () => any[] | Record<string, any>,\n default: () => []\n },\n model: {\n type: Object as () => Record<string, unknown>,\n default: () => ({})\n },\n labelWidth: {\n type: String,\n default: \"90px\"\n },\n loading: {\n type: Boolean,\n default: false\n },\n queryText: {\n type: String,\n default: \"查询\"\n },\n resetText: {\n type: String,\n default: \"重置\"\n },\n expendText: {\n type: String,\n default: \"展开\"\n },\n collapseText: {\n type: String,\n default: \"收起\"\n }\n },\n emits: [\"reset\", \"query\"],\n setup(props, { slots, emit }) {\n // 表单\n const { loading, modelValue, formRef, onQuery, onReset, onKeyup } =\n useForm();\n // 展开\n const { rowRef, actionSpan, onExpend, expendBtnVisible, isExpend } =\n useExpand();\n //渲染操作列\n const { renderAction } = useRender();\n\n function useForm() {\n const loading = ref(false);\n const formRef = ref<any>(null);\n const modelValue = ref<any>({});\n\n watchEffect(() => {\n modelValue.value = props.model;\n });\n\n watch(\n () => props.loading,\n (val) => {\n loading.value = val;\n }\n );\n\n /// 监听回车事件\n // watch(enterKey, (v) => {\n // if (v) {\n // // 有路由名字会被keepalive进行缓存\n // // 用于判断当前页面是否被激活 因为页面被缓存的时候,页面切换后,回车事件依然会触发\n // const isActive = keepStore.list.some((name) => name === route.name);\n // console.log(route.name);\n // if (!loading.value && isActive) {\n // emit(\"query\", modelValue.value);\n // }\n // //TODO 逻辑有问题\n // if (!route.name) {\n // // 没有路由名字,不会被缓存\n // if (!loading.value) {\n // emit(\"query\", modelValue.value);\n // }\n // } else {\n //\n // }\n // }\n // });\n\n const onQuery = () => {\n emit(\"query\", modelValue.value);\n };\n\n const onReset = () => {\n formRef.value?.resetFields();\n emit(\"reset\");\n };\n\n const onKeyup = (event: any) => {\n if (event.keyCode === 13) {\n if (!loading.value) {\n emit(\"query\", modelValue.value);\n }\n }\n };\n return {\n loading,\n modelValue,\n formRef,\n onQuery,\n onReset,\n onKeyup\n };\n }\n\n function useRender() {\n /**\n * 操作按钮渲染\n */\n function renderAction() {\n return (\n <Space>\n <Button\n loading={loading.value}\n type={\"primary\"}\n shape={\"round\"}\n onClick={onQuery}\n >\n {{\n default: () => props.queryText,\n icon: () => <SearchOutlined />\n }}\n </Button>\n <Button disabled={loading.value} shape={\"round\"} onClick={onReset}>\n {{\n default: () => props.resetText,\n icon: () => <ReloadOutlined />\n }}\n </Button>\n {expendBtnVisible.value ? (\n <Button onClick={onExpend} shape={\"round\"}>\n {{\n default: () =>\n isExpend.value ? props.collapseText : props.expendText,\n icon: () => (\n <DoubleRightOutlined rotate={isExpend.value ? -90 : 90} />\n )\n }}\n </Button>\n ) : null}\n </Space>\n );\n }\n\n return {\n renderAction\n };\n }\n\n function useExpand() {\n // 为24网格布局\n const gridCount = 24;\n // 每列占6个格子\n const colSpan = 6;\n // 每行显示4列\n const colsPerRow = 4;\n // 操作按钮span\n const actionSpan = ref(6);\n // 控制展开或隐藏按钮文本\n const isExpend = ref(false);\n // 控制展开按按钮是否显示\n const expendBtnVisible = ref(false);\n // 行对象\n const rowRef = ref<any>(null);\n\n onMounted(() => {\n handleShowOrHidden();\n });\n\n function onExpend() {\n isExpend.value = !isExpend.value;\n handleShowOrHidden();\n }\n\n /**\n * 处理隐藏或显示\n */\n function handleShowOrHidden() {\n const colEl = Array.from(rowRef.value?.$el?.children);\n // col总条数 减掉操作栏按钮的div个数为1\n const colElLen = colEl.length - 1;\n // 已占用的网格数 = col总条数 * 每列占用的网格数\n const occupiedCols = colElLen * colSpan;\n // 总行数 = 总div数 / 每行显示的列数\n const fullRows = Math.ceil(colElLen / colsPerRow);\n // 最后一行的网格数 = 已占用的网格数 % 24\n const lastRowCols = occupiedCols % gridCount;\n // 最后一行剩余的网格数\n const remainingCols = gridCount - lastRowCols;\n\n // 网格行大于2才显示展开或隐藏按钮\n if (fullRows > 2) {\n expendBtnVisible.value = true;\n } else {\n // 如果没有大于两行,操作栏占用剩余的宽度\n actionSpan.value = remainingCols;\n }\n // 最后一行的起始索引\n const lastRowStartIndex = colsPerRow * (fullRows - 1) - 1;\n // 只有展开按钮显示时才处理\n if (expendBtnVisible.value) {\n colEl.forEach((col: any, index) => {\n if (index >= lastRowStartIndex) {\n // 最后一个元素不隐藏 是操作按钮的div\n index !== colElLen\n ? (col.style.display = !isExpend.value ? \"none\" : \"block\")\n : null; // 隐藏元素\n }\n });\n }\n\n if (expendBtnVisible.value) {\n // 如果是展开状态 则操作按钮占用剩余的网格数 否则占用6个网格\n isExpend.value\n ? (actionSpan.value = remainingCols)\n : (actionSpan.value = colSpan);\n }\n }\n\n return {\n rowRef,\n actionSpan,\n onExpend,\n expendBtnVisible,\n isExpend\n };\n }\n\n return () => (\n <div onKeyup={onKeyup}>\n <Form\n ref={formRef}\n colon={false}\n labelCol={{ style: { width: props.labelWidth } }}\n model={modelValue.value}\n >\n <Row ref={rowRef}>\n {slots.default ? (\n slots.default()\n ) : (\n <DJsonSchemeRender\n layout={props.scheme}\n value={modelValue.value}\n />\n )}\n <Col span={actionSpan.value} style={{ textAlign: \"right\" }}>\n <FormItem>\n {slots.action ? slots.action() : renderAction()}\n </FormItem>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n});\n"],"names":["name","props","scheme","type","Array","Object","default","model","labelWidth","String","loading","Boolean","queryText","resetText","expendText","collapseText","emits","setup","slots","emit","modelValue","formRef","onQuery","onReset","onKeyup","useForm","rowRef","actionSpan","onExpend","expendBtnVisible","isExpend","useExpand","renderAction","useRender","ref","watchEffect","value","watch","val","resetFields","event","keyCode","_createVNode","Space","Button","icon","SearchOutlined","ReloadOutlined","DoubleRightOutlined","gridCount","colSpan","colsPerRow","onMounted","handleShowOrHidden","colEl","from","$el","children","colElLen","length","occupiedCols","fullRows","Math","ceil","lastRowCols","remainingCols","lastRowStartIndex","forEach","col","index","style","display","Form","width","Row","DJsonSchemeRender","Col","textAlign","FormItem","action"],"mappings":";;;;;AAaA,gCAA+B,eAAA,CAAA;AAAA,EAC7BA,IAAM,EAAA,YAAA;AAAA,EACNC,KAAO,EAAA;AAAA,IACLC,MAAQ,EAAA;AAAA,MACNC,IAAAA,EAAM,CAACC,KAAAA,EAAOC,MAAM,CAAA;AAAA,MACpBC,OAAAA,EAASA,MAAM,EAAA;AAAA,KACjB;AAAA,IACAC,KAAO,EAAA;AAAA,MACLJ,IAAME,EAAAA,MAAAA;AAAAA,MACNC,OAAAA,EAASA,OAAO,EAAC,CAAA;AAAA,KACnB;AAAA,IACAE,UAAY,EAAA;AAAA,MACVL,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,MAAA;AAAA,KACX;AAAA,IACAI,OAAS,EAAA;AAAA,MACPP,IAAMQ,EAAAA,OAAAA;AAAAA,MACNL,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,IACAM,SAAW,EAAA;AAAA,MACTT,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,IACAO,SAAW,EAAA;AAAA,MACTV,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,IACAQ,UAAY,EAAA;AAAA,MACVX,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,IACAS,YAAc,EAAA;AAAA,MACZZ,IAAMM,EAAAA,MAAAA;AAAAA,MACNH,OAAS,EAAA,cAAA;AAAA,KACX;AAAA,GACF;AAAA,EACAU,KAAAA,EAAO,CAAC,OAAA,EAAS,OAAO,CAAA;AAAA,EACxBC,MAAMhB,KAAO,EAAA;AAAA,IAAEiB,KAAAA;AAAAA,IAAOC,IAAAA;AAAAA,GAAQ,EAAA;AAE5B,IAAM,MAAA;AAAA,MAAET,OAAAA;AAAAA,MAASU,UAAAA;AAAAA,MAAYC,OAAAA;AAAAA,MAASC,OAAAA;AAAAA,MAASC,OAAAA;AAAAA,MAASC,OAAAA;AAAAA,QACtDC,OAAQ,EAAA,CAAA;AAEV,IAAM,MAAA;AAAA,MAAEC,MAAAA;AAAAA,MAAQC,UAAAA;AAAAA,MAAYC,QAAAA;AAAAA,MAAUC,gBAAAA;AAAAA,MAAkBC,QAAAA;AAAAA,QACtDC,SAAU,EAAA,CAAA;AAEZ,IAAM,MAAA;AAAA,MAAEC,YAAAA;AAAAA,QAAiBC,SAAU,EAAA,CAAA;AAEnC,IAAA,SAASR,OAAU,GAAA;AACjB,MAAMf,MAAAA,QAAAA,GAAUwB,IAAI,KAAK,CAAA,CAAA;AACzB,MAAMb,MAAAA,QAAAA,GAAUa,IAAS,IAAI,CAAA,CAAA;AAC7B,MAAMd,MAAAA,WAAAA,GAAac,GAAS,CAAA,EAAE,CAAA,CAAA;AAE9BC,MAAAA,WAAAA,CAAY,MAAM;AAChBf,QAAAA,WAAAA,CAAWgB,QAAQnC,KAAMM,CAAAA,KAAAA,CAAAA;AAAAA,OAC1B,CAAA,CAAA;AAED8B,MACE,KAAA,CAAA,MAAMpC,KAAMS,CAAAA,OAAAA,EACX4B,CAAQ,GAAA,KAAA;AACP5B,QAAAA,SAAQ0B,KAAQE,GAAAA,GAAAA,CAAAA;AAAAA,OAEpB,CAAA,CAAA;AAwBA,MAAA,MAAMhB,WAAUA,MAAM;AACpBH,QAAK,IAAA,CAAA,OAAA,EAASC,YAAWgB,KAAK,CAAA,CAAA;AAAA,OAChC,CAAA;AAEA,MAAA,MAAMb,WAAUA,MAAM;;AACpBF,QAAAA,CAAAA,EAAAA,GAAAA,QAAAA,CAAQe,UAARf,IAAekB,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,WAAAA,EAAAA,CAAAA;AACfpB,QAAAA,IAAAA,CAAK,OAAO,CAAA,CAAA;AAAA,OACd,CAAA;AAEA,MAAA,MAAMK,WAAWgB,CAAe,KAAA,KAAA;AAC9B,QAAIA,IAAAA,KAAAA,CAAMC,YAAY,EAAI,EAAA;AACxB,UAAI,IAAA,CAAC/B,SAAQ0B,KAAO,EAAA;AAClBjB,YAAK,IAAA,CAAA,OAAA,EAASC,YAAWgB,KAAK,CAAA,CAAA;AAAA,WAChC;AAAA,SACF;AAAA,OACF,CAAA;AACA,MAAO,OAAA;AAAA,QACL1B,OAAAA,EAAAA,QAAAA;AAAAA,QACAU,UAAAA,EAAAA,WAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,QACAC,OAAAA,EAAAA,QAAAA;AAAAA,OACF,CAAA;AAAA,KACF;AAEA,IAAA,SAASS,SAAY,GAAA;AAInB,MAAA,SAASD,aAAe,GAAA;AACtB,QAAAU,OAAAA,WAAAA,CAAAC,OAAA,IAAA,EAAA;AAAA,UAAArC,OAAAA,EAAAA,MAAAoC,CAAAA,WAAAA,CAAAE,MAAA,EAAA;AAAA,YAAA,WAGelC,OAAQ0B,CAAAA,KAAAA;AAAAA,YAAK,MAChB,EAAA,SAAA;AAAA,YAAS,OACR,EAAA,OAAA;AAAA,YAAO,SACLd,EAAAA,OAAAA;AAAAA,WAAO,EAAA;AAAA,YAGdhB,OAAAA,EAASA,MAAML,KAAMW,CAAAA,SAAAA;AAAAA,YACrBiC,IAAMA,EAAAA,MAAAH,WAAAI,CAAAA,cAAAA,EAAA,MAAA,IAAA,CAAA;AAAA,WAAwBJ,CAAAA,EAAAA,WAAAA,CAAAE,MAAA,EAAA;AAAA,YAAA,YAGhBlC,OAAQ0B,CAAAA,KAAAA;AAAAA,YAAK,OAAS,EAAA,OAAA;AAAA,YAAO,SAAWb,EAAAA,OAAAA;AAAAA,WAAO,EAAA;AAAA,YAE7DjB,OAAAA,EAASA,MAAML,KAAMY,CAAAA,SAAAA;AAAAA,YACrBgC,IAAMA,EAAAA,MAAAH,WAAAK,CAAAA,cAAAA,EAAA,MAAA,IAAA,CAAA;AAAA,WAAwB,CAAA,EAGjClB,gBAAiBO,CAAAA,KAAAA,GAAKM,YAAAE,MAAA,EAAA;AAAA,YAAA,SACJhB,EAAAA,QAAAA;AAAAA,YAAQ,OAAS,EAAA,OAAA;AAAA,WAAO,EAAA;AAAA,YAErCtB,SAASA,MACPwB,QAAAA,CAASM,KAAQnC,GAAAA,KAAAA,CAAMc,eAAed,KAAMa,CAAAA,UAAAA;AAAAA,YAC9C+B,IAAAA,EAAMA,MAAAH,WAAAA,CAAAM,mBAAA,EAAA;AAAA,cAAA,QAAA,EACyBlB,QAASM,CAAAA,KAAAA,GAAQ,CAAM,EAAA,GAAA,EAAA;AAAA,eAAE,IAAA,CAAA;AAAA,WACvD,IAGH,IAAI,CAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAGd;AAEA,MAAO,OAAA;AAAA,QACLJ,YAAAA,EAAAA,aAAAA;AAAAA,OACF,CAAA;AAAA,KACF;AAEA,IAAA,SAASD,SAAY,GAAA;AAEnB,MAAA,MAAMkB,SAAY,GAAA,EAAA,CAAA;AAElB,MAAA,MAAMC,OAAU,GAAA,CAAA,CAAA;AAEhB,MAAA,MAAMC,UAAa,GAAA,CAAA,CAAA;AAEnB,MAAMxB,MAAAA,WAAAA,GAAaO,IAAI,CAAC,CAAA,CAAA;AAExB,MAAMJ,MAAAA,SAAAA,GAAWI,IAAI,KAAK,CAAA,CAAA;AAE1B,MAAML,MAAAA,iBAAAA,GAAmBK,IAAI,KAAK,CAAA,CAAA;AAElC,MAAMR,MAAAA,OAAAA,GAASQ,IAAS,IAAI,CAAA,CAAA;AAE5BkB,MAAAA,SAAAA,CAAU,MAAM;AACdC,QAAmB,kBAAA,EAAA,CAAA;AAAA,OACpB,CAAA,CAAA;AAED,MAAA,SAASzB,SAAW,GAAA;AAClBE,QAAAA,SAAAA,CAASM,KAAQ,GAAA,CAACN,SAASM,CAAAA,KAAAA,CAAAA;AAC3BiB,QAAmB,kBAAA,EAAA,CAAA;AAAA,OACrB;AAKA,MAAA,SAASA,kBAAqB,GAAA;;AAC5B,QAAMC,MAAAA,KAAAA,GAAQlD,MAAMmD,IAAK7B,CAAAA,CAAAA,EAAAA,GAAAA,CAAAA,EAAAA,GAAAA,QAAOU,KAAPV,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAc8B,GAAd9B,KAAAA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAmB+B,QAAQ,CAAA,CAAA;AAEpD,QAAMC,MAAAA,QAAAA,GAAWJ,MAAMK,MAAS,GAAA,CAAA,CAAA;AAEhC,QAAA,MAAMC,eAAeF,QAAWR,GAAAA,OAAAA,CAAAA;AAEhC,QAAA,MAAMW,QAAWC,GAAAA,IAAAA,CAAKC,IAAKL,CAAAA,QAAAA,GAAWP,UAAU,CAAA,CAAA;AAEhD,QAAA,MAAMa,cAAcJ,YAAeX,GAAAA,SAAAA,CAAAA;AAEnC,QAAA,MAAMgB,gBAAgBhB,SAAYe,GAAAA,WAAAA,CAAAA;AAGlC,QAAA,IAAIH,WAAW,CAAG,EAAA;AAChBhC,UAAAA,kBAAiBO,KAAQ,GAAA,IAAA,CAAA;AAAA,SACpB,MAAA;AAELT,UAAAA,YAAWS,KAAQ6B,GAAAA,aAAAA,CAAAA;AAAAA,SACrB;AAEA,QAAMC,MAAAA,iBAAAA,GAAoBf,UAAcU,IAAAA,QAAAA,GAAW,CAAK,CAAA,GAAA,CAAA,CAAA;AAExD,QAAA,IAAIhC,kBAAiBO,KAAO,EAAA;AAC1BkB,UAAMa,KAAAA,CAAAA,OAAAA,CAAQ,CAACC,GAAAA,EAAUC,KAAU,KAAA;AACjC,YAAA,IAAIA,SAASH,iBAAmB,EAAA;AAE9BG,cAAUX,KAAAA,KAAAA,QAAAA,GACLU,IAAIE,KAAMC,CAAAA,OAAAA,GAAU,CAACzC,SAASM,CAAAA,KAAAA,GAAQ,SAAS,OAChD,GAAA,IAAA,CAAA;AAAA,aACN;AAAA,WACD,CAAA,CAAA;AAAA,SACH;AAEA,QAAA,IAAIP,kBAAiBO,KAAO,EAAA;AAE1BN,UAAAA,UAASM,KACJT,GAAAA,WAAAA,CAAWS,KAAQ6B,GAAAA,aAAAA,GACnBtC,YAAWS,KAAQc,GAAAA,OAAAA,CAAAA;AAAAA,SAC1B;AAAA,OACF;AAEA,MAAO,OAAA;AAAA,QACLxB,MAAAA,EAAAA,OAAAA;AAAAA,QACAC,UAAAA,EAAAA,WAAAA;AAAAA,QACAC,QAAAA,EAAAA,SAAAA;AAAAA,QACAC,gBAAAA,EAAAA,iBAAAA;AAAAA,QACAC,QAAAA,EAAAA,SAAAA;AAAAA,OACF,CAAA;AAAA,KACF;AAEA,IAAO,OAAA,MAAAY,YAAA,KAAA,EAAA;AAAA,MAAA,SACSlB,EAAAA,OAAAA;AAAAA,KAAO,EAAAkB,CAAAA,WAAAA,CAAA8B,IAAA,EAAA;AAAA,MAAA,KAEZnD,EAAAA,OAAAA;AAAAA,MAAO,OACL,EAAA,KAAA;AAAA,MAAK,UACF,EAAA;AAAA,QAAEiD,KAAO,EAAA;AAAA,UAAEG,OAAOxE,KAAMO,CAAAA,UAAAA;AAAAA,SAAW;AAAA,OAAE;AAAA,MAAC,SACzCY,UAAWgB,CAAAA,KAAAA;AAAAA,KAAK,EAAA;AAAA,MAAA9B,OAAAA,EAAAA,MAAAoC,CAAAA,WAAAA,CAAAgC,GAAA,EAAA;AAAA,QAAA,KAEbhD,EAAAA,MAAAA;AAAAA,OAAM,EAAA;AAAA,QAAApB,OAAAA,EAAAA,MACbY,CAAAA,KAAAA,CAAMZ,UACLY,KAAMZ,CAAAA,OAAAA,EAASoC,GAAAA,WAAAA,CAAAiC,gBAAA,EAAA;AAAA,UAAA,UAGL1E,KAAMC,CAAAA,MAAAA;AAAAA,UAAM,SACbkB,UAAWgB,CAAAA,KAAAA;AAAAA,SAErB,EAAA,IAAA,CAAAM,EAAAA,WAAAA,CAAAkC,GAAA,EAAA;AAAA,UAAA,QACUjD,UAAWS,CAAAA,KAAAA;AAAAA,UAAK,OAAS,EAAA;AAAA,YAAEyC,SAAW,EAAA,OAAA;AAAA,WAAQ;AAAA,SAAC,EAAA;AAAA,UAAAvE,OAAAA,EAAAA,MAAAoC,CAAAA,WAAAA,CAAAoC,UAAA,IAAA,EAAA;AAAA,YAAAxE,OAAAA,EAAAA,MAErDY,CAAAA,KAAAA,CAAM6D,SAAS7D,KAAM6D,CAAAA,MAAAA,EAAW/C,GAAAA,YAAAA,EAAc,CAAA;AAAA,WAAA,CAAA,CAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAAA,CAAA,CAAA;AAAA,KAM1D,CAAA,CAAA,CAAA,CAAA;AAAA,GACH;AACF,CAAC,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"DQueryForm.mjs","sources":["../../../src/form/DQueryForm.tsx"],"sourcesContent":["import { defineComponent, onMounted, ref, watch, watchEffect } from \"vue\";\nimport { Form, FormItem, Row, Col, Button, Space } from \"ant-design-vue\";\nimport {\n SearchOutlined,\n ReloadOutlined,\n DoubleRightOutlined\n} from \"@ant-design/icons-vue\";\nimport DJsonSchemeRender from \"../json-scheme-render/JsonSchemeRender\";\n\n/**\n * 查询表单渲染\n * 展开,隐藏功能\n */\nexport default defineComponent({\n name: \"DQueryForm\",\n props: {\n scheme: {\n type: [Array, Object] as unknown as () => any[] | Record<string, any>,\n default: () => []\n },\n model: {\n type: Object as () => Record<string, unknown>,\n default: () => ({})\n },\n labelWidth: {\n type: String,\n default: \"90px\"\n },\n loading: {\n type: Boolean,\n default: false\n },\n queryText: {\n type: String,\n default: \"查询\"\n },\n resetText: {\n type: String,\n default: \"重置\"\n },\n expendText: {\n type: String,\n default: \"展开\"\n },\n collapseText: {\n type: String,\n default: \"收起\"\n },\n btnShape: {\n type: String as any,\n default: \"round\"\n }\n },\n emits: [\"reset\", \"query\"],\n setup(props, { slots, emit }) {\n // 表单\n const { loading, modelValue, formRef, onQuery, onReset, onKeyup } =\n useForm();\n // 展开\n const { rowRef, actionSpan, onExpend, expendBtnVisible, isExpend } =\n useExpand();\n //渲染操作列\n const { renderAction } = useRender();\n\n function useForm() {\n const loading = ref(false);\n const formRef = ref<any>(null);\n const modelValue = ref<any>({});\n\n watchEffect(() => {\n modelValue.value = props.model;\n });\n\n watch(\n () => props.loading,\n (val) => {\n loading.value = val;\n }\n );\n\n /// 监听回车事件\n // watch(enterKey, (v) => {\n // if (v) {\n // // 有路由名字会被keepalive进行缓存\n // // 用于判断当前页面是否被激活 因为页面被缓存的时候,页面切换后,回车事件依然会触发\n // const isActive = keepStore.list.some((name) => name === route.name);\n // console.log(route.name);\n // if (!loading.value && isActive) {\n // emit(\"query\", modelValue.value);\n // }\n // //TODO 逻辑有问题\n // if (!route.name) {\n // // 没有路由名字,不会被缓存\n // if (!loading.value) {\n // emit(\"query\", modelValue.value);\n // }\n // } else {\n //\n // }\n // }\n // });\n\n const onQuery = () => {\n emit(\"query\", modelValue.value);\n };\n\n const onReset = () => {\n formRef.value?.resetFields();\n emit(\"reset\");\n };\n\n const onKeyup = (event: any) => {\n if (event.keyCode === 13) {\n if (!loading.value) {\n emit(\"query\", modelValue.value);\n }\n }\n };\n return {\n loading,\n modelValue,\n formRef,\n onQuery,\n onReset,\n onKeyup\n };\n }\n\n function useRender() {\n /**\n * 操作按钮渲染\n */\n function renderAction() {\n return (\n <Space>\n <Button\n loading={loading.value}\n type={\"primary\"}\n shape={props.btnShape}\n onClick={onQuery}\n >\n {{\n default: () => props.queryText,\n icon: () => <SearchOutlined />\n }}\n </Button>\n <Button\n disabled={loading.value}\n shape={props.btnShape}\n onClick={onReset}\n >\n {{\n default: () => props.resetText,\n icon: () => <ReloadOutlined />\n }}\n </Button>\n {expendBtnVisible.value ? (\n <Button onClick={onExpend} shape={\"round\"}>\n {{\n default: () =>\n isExpend.value ? props.collapseText : props.expendText,\n icon: () => (\n <DoubleRightOutlined rotate={isExpend.value ? -90 : 90} />\n )\n }}\n </Button>\n ) : null}\n </Space>\n );\n }\n\n return {\n renderAction\n };\n }\n\n function useExpand() {\n // 为24网格布局\n const gridCount = 24;\n // 每列占6个格子\n const colSpan = 6;\n // 每行显示4列\n const colsPerRow = 4;\n // 操作按钮span\n const actionSpan = ref(6);\n // 控制展开或隐藏按钮文本\n const isExpend = ref(false);\n // 控制展开按按钮是否显示\n const expendBtnVisible = ref(false);\n // 行对象\n const rowRef = ref<any>(null);\n\n onMounted(() => {\n handleShowOrHidden();\n });\n\n function onExpend() {\n isExpend.value = !isExpend.value;\n handleShowOrHidden();\n }\n\n /**\n * 处理隐藏或显示\n */\n function handleShowOrHidden() {\n const colEl = Array.from(rowRef.value?.$el?.children);\n // col总条数 减掉操作栏按钮的div个数为1\n const colElLen = colEl.length - 1;\n // 已占用的网格数 = col总条数 * 每列占用的网格数\n const occupiedCols = colElLen * colSpan;\n // 总行数 = 总div数 / 每行显示的列数\n const fullRows = Math.ceil(colElLen / colsPerRow);\n // 最后一行的网格数 = 已占用的网格数 % 24\n const lastRowCols = occupiedCols % gridCount;\n // 最后一行剩余的网格数\n const remainingCols = gridCount - lastRowCols;\n\n // 网格行大于2才显示展开或隐藏按钮\n if (fullRows > 2) {\n expendBtnVisible.value = true;\n } else {\n // 如果没有大于两行,操作栏占用剩余的宽度\n actionSpan.value = remainingCols;\n }\n // 最后一行的起始索引\n const lastRowStartIndex = colsPerRow * (fullRows - 1) - 1;\n // 只有展开按钮显示时才处理\n if (expendBtnVisible.value) {\n colEl.forEach((col: any, index) => {\n if (index >= lastRowStartIndex) {\n // 最后一个元素不隐藏 是操作按钮的div\n index !== colElLen\n ? (col.style.display = !isExpend.value ? \"none\" : \"block\")\n : null; // 隐藏元素\n }\n });\n }\n\n if (expendBtnVisible.value) {\n // 如果是展开状态 则操作按钮占用剩余的网格数 否则占用6个网格\n isExpend.value\n ? (actionSpan.value = remainingCols)\n : (actionSpan.value = colSpan);\n }\n }\n\n return {\n rowRef,\n actionSpan,\n onExpend,\n expendBtnVisible,\n isExpend\n };\n }\n\n return () => (\n <div onKeyup={onKeyup}>\n <Form\n ref={formRef}\n colon={false}\n labelCol={{ style: { width: props.labelWidth } }}\n model={modelValue.value}\n >\n <Row ref={rowRef}>\n {slots.default ? (\n slots.default()\n ) : (\n <DJsonSchemeRender\n layout={props.scheme}\n value={modelValue.value}\n />\n )}\n <Col span={actionSpan.value} style={{ textAlign: \"right\" }}>\n <FormItem>\n {slots.action ? slots.action() : renderAction()}\n </FormItem>\n </Col>\n </Row>\n </Form>\n </div>\n );\n }\n});\n"],"names":["name","props","scheme","type","Array","Object","default","model","labelWidth","String","loading","Boolean","queryText","resetText","expendText","collapseText","btnShape","emits","setup","slots","emit","modelValue","formRef","onQuery","onReset","onKeyup","useForm","rowRef","actionSpan","onExpend","expendBtnVisible","isExpend","useExpand","renderAction","useRender","ref","watchEffect","value","watch","val","resetFields","event","keyCode","_createVNode","Space","Button","icon","SearchOutlined","ReloadOutlined","DoubleRightOutlined","gridCount","colSpan","colsPerRow","onMounted","handleShowOrHidden","colEl","from","$el","children","colElLen","length","occupiedCols","fullRows","Math","ceil","lastRowCols","remainingCols","lastRowStartIndex","forEach","col","index","style","display","Form","width","Row","DJsonSchemeRender","Col","textAlign","FormItem","action"],"mappings":"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"}
|
package/dist/esm/menu/Menu.mjs
CHANGED
|
@@ -72,6 +72,7 @@ var Menu = /* @__PURE__ */ defineComponent({
|
|
|
72
72
|
}
|
|
73
73
|
}));
|
|
74
74
|
watch(() => getCollapsed.value, (val) => {
|
|
75
|
+
var _a;
|
|
75
76
|
const id = selectedMenuKeys.value[0];
|
|
76
77
|
const rs = findMatchedMenuById(id, list.value);
|
|
77
78
|
if (val) {
|
|
@@ -80,7 +81,7 @@ var Menu = /* @__PURE__ */ defineComponent({
|
|
|
80
81
|
if (rs == null ? void 0 : rs.parentItem) {
|
|
81
82
|
openMenusKeys.value = [rs.parentItem.key];
|
|
82
83
|
} else {
|
|
83
|
-
openMenusKeys.value = rs ? [rs == null ? void 0 : rs.matchItem.key] : [];
|
|
84
|
+
openMenusKeys.value = rs.matchItem ? [(_a = rs == null ? void 0 : rs.matchItem) == null ? void 0 : _a.key] : [];
|
|
84
85
|
}
|
|
85
86
|
}
|
|
86
87
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.mjs","sources":["../../../src/menu/Menu.tsx"],"sourcesContent":["import { defineComponent, h, inject, resolveComponent, watch } from \"vue\";\nimport { useRouter, useRoute } from \"vue-router\";\n\nimport { storeToRefs } from \"pinia\";\n\nimport { useMenuStore, useSettingsStore } from \"@ditari/store\";\nimport useMenuCore from \"./useMenuCore\";\n\nexport default defineComponent({\n name: \"DMenu\",\n setup() {\n const router = useRouter();\n const route = useRoute();\n const { componentName, prop: menuProp } = inject(\"menuIcon\") as any;\n const { findMatchedMenuById, findMenuItemByUrl } = useMenuCore();\n\n // 菜单store\n const menuStore = useMenuStore();\n const { list, openMenusKeys, selectedMenuKeys } = storeToRefs(menuStore);\n // 设置store\n const settingsStore = useSettingsStore();\n const { getCollapsed } = storeToRefs(settingsStore) as any;\n useMenu();\n function useMenu() {\n /**\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\n */\n watch(\n () => route.fullPath,\n async (path) => {\n const flag = selectedMenuKeys.value.some(\n (item: string) => item === path\n );\n if (!flag) {\n let menuItem = findMenuItemByUrl(path, list.value);\n\n // 如果没有精确匹配,尝试匹配父级路径\n if (!menuItem) {\n menuItem = findClosestParentMenu(path, list.value);\n }\n if (!menuItem) {\n openMenusKeys.value = [];\n selectedMenuKeys.value = [path];\n } else {\n const rs = getFullParentChain(menuItem.id, list.value as never);\n if (!getCollapsed.value) {\n openMenusKeys.value = rs!;\n }\n selectedMenuKeys.value = [menuItem.key];\n }\n }\n }\n );\n\n watch(\n () => getCollapsed.value,\n (val) => {\n const id = selectedMenuKeys.value[0];\n const rs = findMatchedMenuById(id, list.value as never);\n\n if (val) {\n openMenusKeys.value = [];\n } else {\n if (rs?.parentItem) {\n openMenusKeys.value = [rs.parentItem.key];\n } else {\n openMenusKeys.value = rs ? [rs?.matchItem.key] : [];\n }\n }\n }\n );\n\n /**\n * 根据URL路径查找最接近的父级菜单\n */\n const findClosestParentMenu = (url: string, menus: any[]): any => {\n // 移除查询参数和哈希\n const cleanUrl = url.split(\"?\")[0].split(\"#\")[0];\n const pathSegments = cleanUrl.split(\"/\").filter(Boolean);\n\n // 从最长路径开始尝试匹配\n for (let i = pathSegments.length; i > 0; i--) {\n const testPath = \"/\" + pathSegments.slice(0, i).join(\"/\");\n const foundItem = findMenuItemByUrl(testPath, menus);\n if (foundItem) return foundItem;\n }\n\n return null;\n };\n\n /**\n * 获取从根到目标菜单项的完整 key 链\n * @param targetId 目标菜单项 id\n * @param menus 菜单数据\n * @param parentChain 递归传递的父级链\n */\n const getFullParentChain = (\n targetId: string,\n menus: any[],\n parentChain: string[] = []\n ): string[] | null => {\n for (const menu of menus) {\n // 找到目标项,返回完整链(包含自身 key)\n if (menu.id === targetId) {\n return [...parentChain, menu.key];\n }\n\n // 递归查找子菜单\n if (menu.children?.length) {\n const result = getFullParentChain(\n targetId,\n menu.children,\n [...parentChain, menu.key] // 传递当前层级的 key\n );\n if (result) return result;\n }\n }\n return null;\n };\n }\n\n /**\n * 监听菜单点击事件\n * @param item\n * @param key\n * @param keyPath\n */\n const onClick = ({ key, keyPath }: any) => {\n const rs = findMatchedMenuById(key, list.value);\n const findRoute = router\n .getRoutes()\n .find((item) => item.path === rs.matchItem.url && item.components);\n\n if (findRoute?.meta?.open === \"_blank\") {\n window.open(window.location.origin + rs.matchItem.url, \"_blank\");\n } else {\n openMenusKeys.value = keyPath;\n selectedMenuKeys.value = [rs.matchItem?.key];\n if (rs.matchItem?.url !== route.path) {\n // 判断目标路由和当前路由是否相等;\n // 不相等的时候再跳转\n router.push(rs.matchItem?.url).then((r) => {\n if (r) {\n console.warn(r);\n }\n });\n }\n }\n };\n\n // 渲染菜单\n const renderMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.key}>\n {{\n icon: () => renderIcon(menu),\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n const iconClass = [\"anticon\", \"anticon-menu\", \"ant-menu-item-icon\"];\n // 渲染图标\n const renderIcon = (menu: any) => {\n return (\n <>\n {!menu.icon ? (\n <div v-show={getCollapsed.value} class={iconClass}>\n {menu.title.substring(0, 1)}\n </div>\n ) : (\n renderIconSwitch(menu.icon)\n )}\n </>\n );\n };\n\n const renderIconSwitch = (icon: any) => {\n if (componentName === \"nativeHtml\") {\n return <span v-html={icon}></span>;\n } else {\n return h(resolveComponent(componentName), {\n [`${menuProp}`]: icon\n });\n }\n };\n\n // 递归渲染子菜单\n const renderSub = (menu: any) => {\n return (\n <>\n <a-sub-menu key={menu.key}>\n {{\n title: () => menu.title,\n icon: () => renderIcon(menu),\n default: () => {\n return menu.children.map(\n (item: any) =>\n !item.children || item.children.length === 0\n ? renderSubMenu(item)\n : renderSub(item) // 递归调用\n );\n }\n }}\n </a-sub-menu>\n </>\n );\n };\n\n // 递归下的子菜单\n const renderSubMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.key}>\n {{\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n return () => (\n <>\n <a-menu\n mode=\"inline\"\n theme=\"dark\"\n v-model:openKeys={openMenusKeys.value}\n v-model:selectedKeys={selectedMenuKeys.value}\n onClick={onClick}\n >\n {list.value.map((menu: any) => {\n if (!menu.children || menu.children?.length === 0) {\n // 没有children属性或者children的长度等于0\n return renderMenu(menu);\n } else {\n return renderSub(menu);\n }\n })}\n </a-menu>\n </>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","setup","router","useRouter","route","useRoute","componentName","prop","menuProp","inject","findMatchedMenuById","findMenuItemByUrl","useMenuCore","menuStore","useMenuStore","list","openMenusKeys","selectedMenuKeys","storeToRefs","settingsStore","useSettingsStore","getCollapsed","useMenu","watch","fullPath","path","flag","value","some","item","menuItem","findClosestParentMenu","rs","getFullParentChain","id","key","val","parentItem","matchItem","url","menus","cleanUrl","split","pathSegments","filter","Boolean","i","length","testPath","slice","join","foundItem","targetId","parentChain","menu","children","result","onClick","keyPath","findRoute","getRoutes","find","components","meta","open","window","location","origin","push","then","r","console","warn","renderMenu","_createVNode","_Fragment","_resolveComponent","icon","renderIcon","default","title","iconClass","_withDirectives","substring","_vShow","renderIconSwitch","h","resolveComponent","renderSub","map","renderSubMenu","_slot","$event"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Menu.mjs","sources":["../../../src/menu/Menu.tsx"],"sourcesContent":["import { defineComponent, h, inject, resolveComponent, watch } from \"vue\";\nimport { useRouter, useRoute } from \"vue-router\";\n\nimport { storeToRefs } from \"pinia\";\n\nimport { useMenuStore, useSettingsStore } from \"@ditari/store\";\nimport useMenuCore from \"./useMenuCore\";\n\nexport default defineComponent({\n name: \"DMenu\",\n setup() {\n const router = useRouter();\n const route = useRoute();\n const { componentName, prop: menuProp } = inject(\"menuIcon\") as any;\n const { findMatchedMenuById, findMenuItemByUrl } = useMenuCore();\n\n // 菜单store\n const menuStore = useMenuStore();\n const { list, openMenusKeys, selectedMenuKeys } = storeToRefs(menuStore);\n // 设置store\n const settingsStore = useSettingsStore();\n const { getCollapsed } = storeToRefs(settingsStore) as any;\n useMenu();\n function useMenu() {\n /**\n * 在标签切换的时候,路由会变化,需要动态关联左侧菜单的选中状态\n */\n watch(\n () => route.fullPath,\n async (path) => {\n const flag = selectedMenuKeys.value.some(\n (item: string) => item === path\n );\n if (!flag) {\n let menuItem = findMenuItemByUrl(path, list.value);\n\n // 如果没有精确匹配,尝试匹配父级路径\n if (!menuItem) {\n menuItem = findClosestParentMenu(path, list.value);\n }\n if (!menuItem) {\n openMenusKeys.value = [];\n selectedMenuKeys.value = [path];\n } else {\n const rs = getFullParentChain(menuItem.id, list.value as never);\n if (!getCollapsed.value) {\n openMenusKeys.value = rs!;\n }\n selectedMenuKeys.value = [menuItem.key];\n }\n }\n }\n );\n\n watch(\n () => getCollapsed.value,\n (val) => {\n const id = selectedMenuKeys.value[0];\n const rs = findMatchedMenuById(id, list.value as never);\n\n if (val) {\n openMenusKeys.value = [];\n } else {\n if (rs?.parentItem) {\n openMenusKeys.value = [rs.parentItem.key];\n } else {\n openMenusKeys.value = rs.matchItem ? [rs?.matchItem?.key] : [];\n }\n }\n }\n );\n\n /**\n * 根据URL路径查找最接近的父级菜单\n */\n const findClosestParentMenu = (url: string, menus: any[]): any => {\n // 移除查询参数和哈希\n const cleanUrl = url.split(\"?\")[0].split(\"#\")[0];\n const pathSegments = cleanUrl.split(\"/\").filter(Boolean);\n\n // 从最长路径开始尝试匹配\n for (let i = pathSegments.length; i > 0; i--) {\n const testPath = \"/\" + pathSegments.slice(0, i).join(\"/\");\n const foundItem = findMenuItemByUrl(testPath, menus);\n if (foundItem) return foundItem;\n }\n\n return null;\n };\n\n /**\n * 获取从根到目标菜单项的完整 key 链\n * @param targetId 目标菜单项 id\n * @param menus 菜单数据\n * @param parentChain 递归传递的父级链\n */\n const getFullParentChain = (\n targetId: string,\n menus: any[],\n parentChain: string[] = []\n ): string[] | null => {\n for (const menu of menus) {\n // 找到目标项,返回完整链(包含自身 key)\n if (menu.id === targetId) {\n return [...parentChain, menu.key];\n }\n\n // 递归查找子菜单\n if (menu.children?.length) {\n const result = getFullParentChain(\n targetId,\n menu.children,\n [...parentChain, menu.key] // 传递当前层级的 key\n );\n if (result) return result;\n }\n }\n return null;\n };\n }\n\n /**\n * 监听菜单点击事件\n * @param item\n * @param key\n * @param keyPath\n */\n const onClick = ({ key, keyPath }: any) => {\n const rs = findMatchedMenuById(key, list.value);\n const findRoute = router\n .getRoutes()\n .find((item) => item.path === rs.matchItem.url && item.components);\n\n if (findRoute?.meta?.open === \"_blank\") {\n window.open(window.location.origin + rs.matchItem.url, \"_blank\");\n } else {\n openMenusKeys.value = keyPath;\n selectedMenuKeys.value = [rs.matchItem?.key];\n if (rs.matchItem?.url !== route.path) {\n // 判断目标路由和当前路由是否相等;\n // 不相等的时候再跳转\n router.push(rs.matchItem?.url).then((r) => {\n if (r) {\n console.warn(r);\n }\n });\n }\n }\n };\n\n // 渲染菜单\n const renderMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.key}>\n {{\n icon: () => renderIcon(menu),\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n const iconClass = [\"anticon\", \"anticon-menu\", \"ant-menu-item-icon\"];\n // 渲染图标\n const renderIcon = (menu: any) => {\n return (\n <>\n {!menu.icon ? (\n <div v-show={getCollapsed.value} class={iconClass}>\n {menu.title.substring(0, 1)}\n </div>\n ) : (\n renderIconSwitch(menu.icon)\n )}\n </>\n );\n };\n\n const renderIconSwitch = (icon: any) => {\n if (componentName === \"nativeHtml\") {\n return <span v-html={icon}></span>;\n } else {\n return h(resolveComponent(componentName), {\n [`${menuProp}`]: icon\n });\n }\n };\n\n // 递归渲染子菜单\n const renderSub = (menu: any) => {\n return (\n <>\n <a-sub-menu key={menu.key}>\n {{\n title: () => menu.title,\n icon: () => renderIcon(menu),\n default: () => {\n return menu.children.map(\n (item: any) =>\n !item.children || item.children.length === 0\n ? renderSubMenu(item)\n : renderSub(item) // 递归调用\n );\n }\n }}\n </a-sub-menu>\n </>\n );\n };\n\n // 递归下的子菜单\n const renderSubMenu = (menu: any) => {\n return (\n <>\n <a-menu-item key={menu.key}>\n {{\n default: () => menu.title\n }}\n </a-menu-item>\n </>\n );\n };\n\n return () => (\n <>\n <a-menu\n mode=\"inline\"\n theme=\"dark\"\n v-model:openKeys={openMenusKeys.value}\n v-model:selectedKeys={selectedMenuKeys.value}\n onClick={onClick}\n >\n {list.value.map((menu: any) => {\n if (!menu.children || menu.children?.length === 0) {\n // 没有children属性或者children的长度等于0\n return renderMenu(menu);\n } else {\n return renderSub(menu);\n }\n })}\n </a-menu>\n </>\n );\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","setup","router","useRouter","route","useRoute","componentName","prop","menuProp","inject","findMatchedMenuById","findMenuItemByUrl","useMenuCore","menuStore","useMenuStore","list","openMenusKeys","selectedMenuKeys","storeToRefs","settingsStore","useSettingsStore","getCollapsed","useMenu","watch","fullPath","path","flag","value","some","item","menuItem","findClosestParentMenu","rs","getFullParentChain","id","key","val","parentItem","matchItem","url","menus","cleanUrl","split","pathSegments","filter","Boolean","i","length","testPath","slice","join","foundItem","targetId","parentChain","menu","children","result","onClick","keyPath","findRoute","getRoutes","find","components","meta","open","window","location","origin","push","then","r","console","warn","renderMenu","_createVNode","_Fragment","_resolveComponent","icon","renderIcon","default","title","iconClass","_withDirectives","substring","_vShow","renderIconSwitch","h","resolveComponent","renderSub","map","renderSubMenu","_slot","$event"],"mappings":"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"}
|