import { T as ElCard, U as ElRow, i as ElIcon, t as ElLink, s as ElDivider, V as ElCol, W as connection_default, q as ElTag, X as ElSkeleton, Y as ElSkeletonItem, P as ElRadioGroup, Z as ElRadioButton, F as ElScrollbar, _ as ElTimeline, $ as ElTimelineItem, r as ElText } from "./element-plus.CkEW9frc.js"; import { _ as _sfc_main$2 } from "./index.vue_vue_type_script_setup_true_lang.DN-P1Gi6.js"; import { _ as _export_sfc } from "./_plugin-vue_export-helper.1tPrXgE0.js"; import { S as openBlock, _ as createElementBlock, a1 as createBaseVNode, J as defineComponent, r as ref, aD as dayjs, eh as useTransition, m as watch, t as onMounted, $ as createVNode, a0 as withCtx, o as unref, aa as toDisplayString, a9 as createTextVNode, T as createBlock, a3 as normalizeClass, a8 as createCommentVNode, z as isRef, H as Fragment, ay as renderList, aO as resolveComponent, j as computed } from "./.pnpm.BW3P1y8f.js"; import { f as useUserStore } from "./index.CMd5bD1r.js"; import { f as formatGrowthRate } from "./index.DZZZOFI8.js"; import { g as greetings } from "./common.ySZAMJjg.js"; import "./echarts.Cg_Ec8L-.js"; import "./codemirror.CvJAcn2d.js"; const _sfc_main$1 = {}; const _hoisted_1$1 = { href: "https://github.com/1014TaoTao/FastapiAdmin", target: "_blank", class: "github-corner", "aria-label": "View source on Github" }; const _hoisted_2$1 = { width: "80", height: "80", viewBox: "0 0 250 250", style: { "color": "#fff", "fill": "#40c9c6" }, "aria-hidden": "true" }; function _sfc_render(_ctx, _cache) { return openBlock(), createElementBlock("a", _hoisted_1$1, [ (openBlock(), createElementBlock("svg", _hoisted_2$1, [..._cache[0] || (_cache[0] = [ createBaseVNode("path", { d: "M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" }, null, -1), createBaseVNode("path", { d: "M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2", fill: "currentColor", style: { "transform-origin": "130px 106px" }, class: "octo-arm" }, null, -1), createBaseVNode("path", { d: "M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z", fill: "currentColor", class: "octo-body" }, null, -1) ])])) ]); } const __unplugin_components_0 = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__scopeId", "data-v-701f789e"]]); const _hoisted_1 = { class: "dashboard-container" }; const _hoisted_2 = { class: "flex flex-wrap" }; const _hoisted_3 = { class: "flex-1 flex items-start" }; const _hoisted_4 = ["src"]; const _hoisted_5 = { class: "ml-5" }; const _hoisted_6 = { class: "text-20px font-bold mb-5px" }; const _hoisted_7 = { class: "hidden sm:block" }; const _hoisted_8 = { class: "flex items-end space-x-6" }; const _hoisted_9 = { class: "flex flex-col items-center" }; const _hoisted_10 = { class: "font-bold color-#4080ff text-sm flex items-center" }; const _hoisted_11 = { class: "mt-3 whitespace-nowrap" }; const _hoisted_12 = { class: "flex flex-col items-center" }; const _hoisted_13 = { class: "font-bold color-#ff9a2e text-sm flex items-center" }; const _hoisted_14 = { class: "mt-3 whitespace-nowrap" }; const _hoisted_15 = { class: "w-full sm:hidden mt-3" }; const _hoisted_16 = { class: "flex justify-end space-x-4 overflow-x-auto" }; const _hoisted_17 = { class: "flex-x-between" }; const _hoisted_18 = { class: "flex-x-between mt-2 flex-1" }; const _hoisted_19 = { class: "flex-y-center" }; const _hoisted_20 = { key: 0, class: "ml-2 text-xs text-[#67c23a]" }; const _hoisted_21 = { key: 1, class: "ml-2 text-xs text-[#f56c6c]" }; const _hoisted_22 = { class: "flex-x-between" }; const _hoisted_23 = { class: "mt-5 flex-x-between" }; const _hoisted_24 = { class: "flex-x-between" }; const _hoisted_25 = { class: "flex-x-between mt-2 flex-1" }; const _hoisted_26 = { class: "flex-y-center" }; const _hoisted_27 = { class: "text-lg" }; const _hoisted_28 = { class: "flex-x-between mt-2 text-sm text-gray" }; const _hoisted_29 = { class: "flex-x-between" }; const _hoisted_30 = { class: "mt-5 flex-x-between" }; const _hoisted_31 = { class: "flex-x-between" }; const _hoisted_32 = { class: "flex-x-between mt-2 flex-1" }; const _hoisted_33 = { class: "flex-y-center" }; const _hoisted_34 = { class: "text-lg" }; const _hoisted_35 = { class: "flex-x-between mt-2 text-sm text-gray" }; const _hoisted_36 = { class: "flex-x-between" }; const _hoisted_37 = { class: "flex-x-between" }; const _hoisted_38 = { key: 0 }; const welcome = "祝你开心每一天!"; const _sfc_main = /* @__PURE__ */ defineComponent({ ...{ name: "Home", inheritAttrs: false }, __name: "index", setup(__props) { const timefix = greetings(); const userStore = useUserStore(); const vesionList = ref([ { id: "1", title: "v3.2.1", date: dayjs().format("YYYY-MM-DD HH:mm:ss"), content: "优化性能,修复若干小bug。", link: "https://gitee.com/tao__tao/FastapiAdmin/releases", tag: "更新" }, { id: "2", title: "v3.2.0", date: dayjs().subtract(1, "day").format("YYYY-MM-DD HH:mm:ss"), content: "新增用户行为分析功能。", link: "https://gitee.com/tao__tao/FastapiAdmin/releases", tag: "新功能" }, { id: "3", title: "v3.1.0", date: dayjs().subtract(3, "day").format("YYYY-MM-DD HH:mm:ss"), content: "优化权限管理系统。", link: "https://gitee.com/tao__tao/FastapiAdmin/releases", tag: "优化" } ]); const visitStatsLoading = ref(true); const visitStatsData = ref({ todayUvCount: 0, uvGrowthRate: 0, totalUvCount: 0, todayPvCount: 0, pvGrowthRate: 0, totalPvCount: 0 }); const transitionUvCount = useTransition( computed(() => visitStatsData.value.todayUvCount), { duration: 1e3, transition: [0.25, 0.1, 0.25, 1] // CSS cubic-bezier } ); const transitionTotalUvCount = useTransition( computed(() => visitStatsData.value.totalUvCount), { duration: 1200, transition: [0.25, 0.1, 0.25, 1] } ); const transitionPvCount = useTransition( computed(() => visitStatsData.value.todayPvCount), { duration: 1e3, transition: [0.25, 0.1, 0.25, 1] } ); const transitionTotalPvCount = useTransition( computed(() => visitStatsData.value.totalPvCount), { duration: 1200, transition: [0.25, 0.1, 0.25, 1] } ); const visitTrendDateRange = ref(7); const visitTrendChartOptions = ref(); const updateVisitTrendChartOptions = () => { visitTrendChartOptions.value = { tooltip: { trigger: "axis" }, legend: { data: ["浏览量(PV)", "访客数(UV)"], bottom: 0 }, grid: { left: "1%", right: "5%", bottom: "10%", containLabel: true }, xAxis: { type: "category", data: Array.from( { length: visitTrendDateRange.value }, (_, index2) => dayjs().subtract(visitTrendDateRange.value - index2 - 1, "day").format("YYYY-MM-DD") ) }, yAxis: { type: "value", splitLine: { show: true, lineStyle: { type: "dashed" } } }, series: [ { name: "浏览量(PV)", type: "line", data: Array.from( { length: visitTrendDateRange.value }, () => Math.floor(Math.random() * 500) + 100 ), areaStyle: { color: "rgba(64, 158, 255, 0.1)" }, smooth: true, itemStyle: { color: "#4080FF" }, lineStyle: { color: "#4080FF" } }, { name: "访客数(UV)", type: "line", data: Array.from( { length: visitTrendDateRange.value }, () => Math.floor(Math.random() * 200) + 50 ), areaStyle: { color: "rgba(103, 194, 58, 0.1)" }, smooth: true, itemStyle: { color: "#67C23A" }, lineStyle: { color: "#67C23A" } } ] }; }; const computeGrowthRateClass = (growthRate) => { if (!growthRate) { return "text-[--el-color-info]"; } if (growthRate > 0) { return "text-[--el-color-danger]"; } else if (growthRate < 0) { return "text-[--el-color-success]"; } else { return "text-[--el-color-info]"; } }; watch( () => visitTrendDateRange.value, () => { updateVisitTrendChartOptions(); }, { immediate: true } ); onMounted(() => { visitStatsLoading.value = false; visitStatsData.value = { todayUvCount: Math.floor(Math.random() * 200) + 50, uvGrowthRate: parseFloat((Math.random() * 20 - 10).toFixed(2)), totalUvCount: Math.floor(Math.random() * 5e3) + 1e3, todayPvCount: Math.floor(Math.random() * 500) + 100, pvGrowthRate: parseFloat((Math.random() * 20 - 10).toFixed(2)), totalPvCount: Math.floor(Math.random() * 2e4) + 5e3 }; updateVisitTrendChartOptions(); }); return (_ctx, _cache) => { const _component_GithubCorner = __unplugin_components_0; const _component_Document = resolveComponent("Document"); const _component_el_icon = ElIcon; const _component_el_link = ElLink; const _component_Folder = resolveComponent("Folder"); const _component_el_divider = ElDivider; const _component_el_card = ElCard; const _component_el_tag = ElTag; const _component_el_col = ElCol; const _component_el_skeleton_item = ElSkeletonItem; const _component_Top = resolveComponent("Top"); const _component_Bottom = resolveComponent("Bottom"); const _component_el_skeleton = ElSkeleton; const _component_el_row = ElRow; const _component_el_radio_button = ElRadioButton; const _component_el_radio_group = ElRadioGroup; const _component_ECharts = _sfc_main$2; const _component_TopRight = resolveComponent("TopRight"); const _component_el_text = ElText; const _component_el_timeline_item = ElTimelineItem; const _component_el_timeline = ElTimeline; const _component_el_scrollbar = ElScrollbar; return openBlock(), createElementBlock("div", _hoisted_1, [ createVNode(_component_GithubCorner, { class: "github-corner" }), createVNode(_component_el_card, { shadow: "hover" }, { default: withCtx(() => [ createBaseVNode("div", _hoisted_2, [ createBaseVNode("div", _hoisted_3, [ createBaseVNode("img", { class: "w80px h80px rounded-full", src: unref(userStore).basicInfo.avatar + "?imageView2/1/w/80/h/80" }, null, 8, _hoisted_4), createBaseVNode("div", _hoisted_5, [ createBaseVNode("div", _hoisted_6, toDisplayString(unref(timefix)) + toDisplayString(unref(userStore).basicInfo.name) + "," + toDisplayString(welcome), 1), _cache[1] || (_cache[1] = createBaseVNode("p", { class: "text-sm text-gray" }, "今日天气晴朗,气温在15℃至25℃之间,东南风。", -1)) ]) ]), createBaseVNode("div", _hoisted_7, [ createBaseVNode("div", _hoisted_8, [ createBaseVNode("div", _hoisted_9, [ createBaseVNode("div", _hoisted_10, [ createVNode(_component_el_icon, { class: "mr-2px" }, { default: withCtx(() => [ createVNode(_component_Document) ]), _: 1 }), _cache[2] || (_cache[2] = createTextVNode(" 文档 ", -1)) ]), createBaseVNode("div", _hoisted_11, [ createVNode(_component_el_link, { href: "https://blog.csdn.net/weixin_46768253/article/details/149569141?spm=1001.2014.3001.5502", target: "_blank" }, { default: withCtx(() => [..._cache[3] || (_cache[3] = [ createBaseVNode("div", { class: "i-svg:csdn text-lg" }, null, -1) ])]), _: 1 }) ]) ]), createBaseVNode("div", _hoisted_12, [ createBaseVNode("div", _hoisted_13, [ createVNode(_component_el_icon, { class: "mr-2px" }, { default: withCtx(() => [ createVNode(_component_Folder) ]), _: 1 }), _cache[4] || (_cache[4] = createTextVNode(" 仓库 ", -1)) ]), createBaseVNode("div", _hoisted_14, [ createVNode(_component_el_link, { href: "https://gitee.com/tao__tao/FastapiAdmin", target: "_blank" }, { default: withCtx(() => [..._cache[5] || (_cache[5] = [ createBaseVNode("div", { class: "i-svg:gitee text-lg color-#F76560" }, null, -1) ])]), _: 1 }), createVNode(_component_el_divider, { direction: "vertical" }), createVNode(_component_el_link, { href: "https://github.com/1014TaoTao/FastapiAdmin", target: "_blank" }, { default: withCtx(() => [..._cache[6] || (_cache[6] = [ createBaseVNode("div", { class: "i-svg:github text-lg color-#4080FF" }, null, -1) ])]), _: 1 }), createVNode(_component_el_divider, { direction: "vertical" }), createVNode(_component_el_link, { href: "https://gitcode.com/qq_36002987/FastapiAdmin", target: "_blank" }, { default: withCtx(() => [..._cache[7] || (_cache[7] = [ createBaseVNode("div", { class: "i-svg:gitcode text-lg color-#FF9A2E" }, null, -1) ])]), _: 1 }) ]) ]) ]) ]), createBaseVNode("div", _hoisted_15, [ createBaseVNode("div", _hoisted_16, [ createVNode(_component_el_link, { href: "https://gitee.com/tao__tao/FastapiAdmin", target: "_blank" }, { default: withCtx(() => [..._cache[8] || (_cache[8] = [ createBaseVNode("div", { class: "i-svg:gitee text-lg color-#F76560" }, null, -1) ])]), _: 1 }), createVNode(_component_el_divider, { direction: "vertical" }), createVNode(_component_el_link, { href: "https://github.com/1014TaoTao/FastapiAdmin", target: "_blank" }, { default: withCtx(() => [..._cache[9] || (_cache[9] = [ createBaseVNode("div", { class: "i-svg:github text-lg color-#4080FF" }, null, -1) ])]), _: 1 }), createVNode(_component_el_divider, { direction: "vertical" }), createVNode(_component_el_link, { href: "https://gitcode.com/qq_36002987/FastapiAdmin", target: "_blank" }, { default: withCtx(() => [..._cache[10] || (_cache[10] = [ createBaseVNode("div", { class: "i-svg:gitcode text-lg color-#FF9A2E" }, null, -1) ])]), _: 1 }) ]) ]) ]) ]), _: 1 }), createVNode(_component_el_row, { gutter: 10, class: "mt-4" }, { default: withCtx(() => [ createVNode(_component_el_col, { span: 8, xs: 24, class: "mb-xs-3" }, { default: withCtx(() => [ createVNode(_component_el_card, { shadow: "hover", class: "h-full flex flex-col" }, { header: withCtx(() => [ createBaseVNode("div", _hoisted_17, [ _cache[12] || (_cache[12] = createBaseVNode("span", { class: "text-gray" }, "在线用户", -1)), createVNode(_component_el_tag, { type: "danger", size: "small" }, { default: withCtx(() => [..._cache[11] || (_cache[11] = [ createTextVNode("实时", -1) ])]), _: 1 }) ]) ]), default: withCtx(() => [ createBaseVNode("div", _hoisted_18, [ createBaseVNode("div", _hoisted_19, [ _cache[15] || (_cache[15] = createBaseVNode("span", { class: "text-lg transition-all duration-300 hover:scale-110" }, "9999", -1)), true ? (openBlock(), createElementBlock("span", _hoisted_20, [ createVNode(_component_el_icon, null, { default: withCtx(() => [ createVNode(unref(connection_default)) ]), _: 1 }), _cache[13] || (_cache[13] = createTextVNode(" 已连接 ", -1)) ])) : (openBlock(), createElementBlock("span", _hoisted_21, [ createVNode(_component_el_icon, null, { default: withCtx(() => [ createVNode(unref(Failed)) ]), _: 1 }), _cache[14] || (_cache[14] = createTextVNode(" 未连接 ", -1)) ])) ]), _cache[16] || (_cache[16] = createBaseVNode("div", { class: "i-svg:people w-8 h-8 animate-[pulse_2s_infinite]" }, null, -1)) ]), _cache[17] || (_cache[17] = createBaseVNode("div", { class: "flex-x-between mt-2 text-sm text-gray" }, [ createBaseVNode("span", null, "更新时间"), createBaseVNode("span", null, "2025-07-12 00:00:00") ], -1)) ]), _: 1 }) ]), _: 1 }), createVNode(_component_el_col, { span: 8, xs: 24, class: "mb-xs-3" }, { default: withCtx(() => [ createVNode(_component_el_skeleton, { loading: unref(visitStatsLoading), rows: 5, animated: "" }, { template: withCtx(() => [ createVNode(_component_el_card, null, { header: withCtx(() => [ createBaseVNode("div", null, [ createVNode(_component_el_skeleton_item, { variant: "h3", style: { "width": "40%" } }), createVNode(_component_el_skeleton_item, { variant: "rect", style: { "float": "right", "width": "1em", "height": "1em" } }) ]) ]), default: withCtx(() => [ createBaseVNode("div", _hoisted_22, [ createVNode(_component_el_skeleton_item, { variant: "text", style: { "width": "30%" } }), createVNode(_component_el_skeleton_item, { variant: "circle", style: { "width": "2em", "height": "2em" } }) ]), createBaseVNode("div", _hoisted_23, [ createVNode(_component_el_skeleton_item, { variant: "text", style: { "width": "50%" } }), createVNode(_component_el_skeleton_item, { variant: "text", style: { "width": "1em" } }) ]) ]), _: 1 }) ]), default: withCtx(() => [ !unref(visitStatsLoading) ? (openBlock(), createBlock(_component_el_card, { key: 0, shadow: "hover", class: "h-full flex flex-col" }, { header: withCtx(() => [ createBaseVNode("div", _hoisted_24, [ _cache[19] || (_cache[19] = createBaseVNode("span", { class: "text-gray" }, "访客数(UV)", -1)), createVNode(_component_el_tag, { type: "success", size: "small" }, { default: withCtx(() => [..._cache[18] || (_cache[18] = [ createTextVNode("日", -1) ])]), _: 1 }) ]) ]), default: withCtx(() => [ createBaseVNode("div", _hoisted_25, [ createBaseVNode("div", _hoisted_26, [ createBaseVNode("span", _hoisted_27, toDisplayString(Math.round(unref(transitionUvCount))), 1), createBaseVNode("span", { class: normalizeClass([ "text-xs", "ml-2", computeGrowthRateClass(unref(visitStatsData).uvGrowthRate) ]) }, [ createVNode(_component_el_icon, null, { default: withCtx(() => [ unref(visitStatsData).uvGrowthRate > 0 ? (openBlock(), createBlock(_component_Top, { key: 0 })) : unref(visitStatsData).uvGrowthRate < 0 ? (openBlock(), createBlock(_component_Bottom, { key: 1 })) : createCommentVNode("", true) ]), _: 1 }), createTextVNode(" " + toDisplayString(unref(formatGrowthRate)(unref(visitStatsData).uvGrowthRate)), 1) ], 2) ]), _cache[20] || (_cache[20] = createBaseVNode("div", { class: "i-svg:visitor w-8 h-8" }, null, -1)) ]), createBaseVNode("div", _hoisted_28, [ _cache[21] || (_cache[21] = createBaseVNode("span", null, "总访客数", -1)), createBaseVNode("span", null, toDisplayString(Math.round(unref(transitionTotalUvCount))), 1) ]) ]), _: 1 })) : createCommentVNode("", true) ]), _: 1 }, 8, ["loading"]) ]), _: 1 }), createVNode(_component_el_col, { span: 8, xs: 24 }, { default: withCtx(() => [ createVNode(_component_el_skeleton, { loading: unref(visitStatsLoading), rows: 5, animated: "" }, { template: withCtx(() => [ createVNode(_component_el_card, null, { header: withCtx(() => [ createBaseVNode("div", null, [ createVNode(_component_el_skeleton_item, { variant: "h3", style: { "width": "40%" } }), createVNode(_component_el_skeleton_item, { variant: "rect", style: { "float": "right", "width": "1em", "height": "1em" } }) ]) ]), default: withCtx(() => [ createBaseVNode("div", _hoisted_29, [ createVNode(_component_el_skeleton_item, { variant: "text", style: { "width": "30%" } }), createVNode(_component_el_skeleton_item, { variant: "circle", style: { "width": "2em", "height": "2em" } }) ]), createBaseVNode("div", _hoisted_30, [ createVNode(_component_el_skeleton_item, { variant: "text", style: { "width": "50%" } }), createVNode(_component_el_skeleton_item, { variant: "text", style: { "width": "1em" } }) ]) ]), _: 1 }) ]), default: withCtx(() => [ !unref(visitStatsLoading) ? (openBlock(), createBlock(_component_el_card, { key: 0, shadow: "hover", class: "h-full flex flex-col" }, { header: withCtx(() => [ createBaseVNode("div", _hoisted_31, [ _cache[23] || (_cache[23] = createBaseVNode("span", { class: "text-gray" }, "浏览量(PV)", -1)), createVNode(_component_el_tag, { type: "primary", size: "small" }, { default: withCtx(() => [..._cache[22] || (_cache[22] = [ createTextVNode("日", -1) ])]), _: 1 }) ]) ]), default: withCtx(() => [ createBaseVNode("div", _hoisted_32, [ createBaseVNode("div", _hoisted_33, [ createBaseVNode("span", _hoisted_34, toDisplayString(Math.round(unref(transitionPvCount))), 1), createBaseVNode("span", { class: normalizeClass([ "text-xs", "ml-2", computeGrowthRateClass(unref(visitStatsData).pvGrowthRate) ]) }, [ createVNode(_component_el_icon, null, { default: withCtx(() => [ unref(visitStatsData).pvGrowthRate > 0 ? (openBlock(), createBlock(_component_Top, { key: 0 })) : unref(visitStatsData).pvGrowthRate < 0 ? (openBlock(), createBlock(_component_Bottom, { key: 1 })) : createCommentVNode("", true) ]), _: 1 }), createTextVNode(" " + toDisplayString(unref(formatGrowthRate)(unref(visitStatsData).pvGrowthRate)), 1) ], 2) ]), _cache[24] || (_cache[24] = createBaseVNode("div", { class: "i-svg:browser w-8 h-8" }, null, -1)) ]), createBaseVNode("div", _hoisted_35, [ _cache[25] || (_cache[25] = createBaseVNode("span", null, "总浏览量", -1)), createBaseVNode("span", null, toDisplayString(Math.round(unref(transitionTotalPvCount))), 1) ]) ]), _: 1 })) : createCommentVNode("", true) ]), _: 1 }, 8, ["loading"]) ]), _: 1 }) ]), _: 1 }), createVNode(_component_el_row, { gutter: 10, class: "mt-4" }, { default: withCtx(() => [ createVNode(_component_el_col, { xs: 24, span: 16 }, { default: withCtx(() => [ createVNode(_component_el_card, null, { header: withCtx(() => [ createBaseVNode("div", _hoisted_36, [ _cache[28] || (_cache[28] = createBaseVNode("span", null, "访问趋势", -1)), createVNode(_component_el_radio_group, { modelValue: unref(visitTrendDateRange), "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(visitTrendDateRange) ? visitTrendDateRange.value = $event : null), size: "small" }, { default: withCtx(() => [ createVNode(_component_el_radio_button, { value: 7 }, { default: withCtx(() => [..._cache[26] || (_cache[26] = [ createTextVNode("近7天", -1) ])]), _: 1 }), createVNode(_component_el_radio_button, { value: 30 }, { default: withCtx(() => [..._cache[27] || (_cache[27] = [ createTextVNode("近30天", -1) ])]), _: 1 }) ]), _: 1 }, 8, ["modelValue"]) ]) ]), default: withCtx(() => [ createVNode(_component_ECharts, { options: unref(visitTrendChartOptions), height: "400px" }, null, 8, ["options"]) ]), _: 1 }) ]), _: 1 }), createVNode(_component_el_col, { xs: 24, span: 8 }, { default: withCtx(() => [ createVNode(_component_el_card, null, { header: withCtx(() => [ createBaseVNode("div", _hoisted_37, [ _cache[30] || (_cache[30] = createBaseVNode("span", { class: "header-title" }, "最新动态", -1)), createVNode(_component_el_link, { type: "primary", underline: "never", href: "https://gitee.com/tao__tao/FastapiAdmin/releases", target: "_blank" }, { default: withCtx(() => [ _cache[29] || (_cache[29] = createTextVNode(" 完整记录 ", -1)), createVNode(_component_el_icon, { class: "link-icon" }, { default: withCtx(() => [ createVNode(_component_TopRight) ]), _: 1 }) ]), _: 1 }) ]) ]), default: withCtx(() => [ createVNode(_component_el_scrollbar, { height: "400px" }, { default: withCtx(() => [ createVNode(_component_el_timeline, { class: "p-3" }, { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(vesionList), (item, index2) => { return openBlock(), createBlock(_component_el_timeline_item, { key: index2, timestamp: item.date, placement: "top", color: index2 === 0 ? "#67C23A" : "#909399", hollow: index2 !== 0, size: "large" }, { default: withCtx(() => [ createBaseVNode("div", { class: normalizeClass(["version-item", { "latest-item": index2 === 0 }]) }, [ createBaseVNode("div", null, [ createVNode(_component_el_text, { tag: "strong" }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.title), 1) ]), _: 2 }, 1024), item.tag ? (openBlock(), createBlock(_component_el_tag, { key: 0, type: index2 === 0 ? "success" : "info", size: "small" }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.tag), 1) ]), _: 2 }, 1032, ["type"])) : createCommentVNode("", true) ]), createVNode(_component_el_text, { class: "version-content" }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.content), 1) ]), _: 2 }, 1024), item.link ? (openBlock(), createElementBlock("div", _hoisted_38, [ createVNode(_component_el_link, { type: index2 === 0 ? "primary" : "info", href: item.link, target: "_blank", underline: "never" }, { default: withCtx(() => [ _cache[31] || (_cache[31] = createTextVNode(" 详情 ", -1)), createVNode(_component_el_icon, { class: "link-icon" }, { default: withCtx(() => [ createVNode(_component_TopRight) ]), _: 1 }) ]), _: 1 }, 8, ["type", "href"]) ])) : createCommentVNode("", true) ], 2) ]), _: 2 }, 1032, ["timestamp", "color", "hollow"]); }), 128)) ]), _: 1 }) ]), _: 1 }) ]), _: 1 }) ]), _: 1 }) ]), _: 1 }) ]); }; } }); const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-f38347e4"]]); export { index as default };