From 852d2c8f7567ffd3b38b37bec3c13cd243fd0508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=96=AA=E5=90=8D?= <942005050@qq.com> Date: Tue, 6 Feb 2024 11:25:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A7=E5=B0=8F=E5=86=99=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/error/403.vue | 8 + src/views/error/404.vue | 7 + src/views/error/500.vue | 7 + src/views/home/Index copy.vue | 381 +++++++++++++++ src/views/home/Index2.vue | 319 ++++++++++++ src/views/home/components/material.vue | 336 +++++++++++++ src/views/home/components/produce.vue | 286 +++++++++++ src/views/home/components/product.vue | 313 ++++++++++++ src/views/home/components/supplierIndex.vue | 452 ++++++++++++++++++ src/views/home/echarts-data.ts | 286 +++++++++++ src/views/home/index.vue | 14 + src/views/home/types.ts | 55 +++ .../infra/apiAccessLog/ApiAccessLogDetail.vue | 67 +++ src/views/infra/apiAccessLog/index.vue | 167 +++++++ .../infra/apiErrorLog/ApiErrorLogDetail.vue | 81 ++++ src/views/infra/apiErrorLog/index.vue | 249 ++++++++++ src/views/infra/build/index.vue | 143 ++++++ src/views/infra/codegen/PreviewCode.vue | 222 +++++++++ .../codegen/components/BasicInfoForm.vue | 87 ++++ .../codegen/components/ColumInfoForm.vue | 153 ++++++ .../codegen/components/GenerateInfoForm.vue | 391 +++++++++++++++ src/views/infra/codegen/components/index.ts | 4 + src/views/infra/codegen/editTable.vue | 83 ++++ src/views/infra/codegen/importTable.vue | 151 ++++++ src/views/infra/codegen/index.vue | 258 ++++++++++ src/views/infra/config/ConfigForm.vue | 131 +++++ src/views/infra/config/index.vue | 169 +++++++ src/views/infra/customInterface/index.vue | 21 + .../dataSourceConfig/DataSourceConfigForm.vue | 111 +++++ src/views/infra/dataSourceConfig/index.vue | 87 ++++ src/views/infra/dbDoc/index.vue | 57 +++ src/views/infra/druid/index.vue | 25 + src/views/infra/file/FileForm.vue | 104 ++++ src/views/infra/file/index.vue | 164 +++++++ src/views/infra/fileConfig/FileConfigForm.vue | 195 ++++++++ src/views/infra/fileConfig/index.vue | 168 +++++++ src/views/infra/job/JobDetail.vue | 73 +++ src/views/infra/job/JobForm.vue | 131 +++++ src/views/infra/job/index.vue | 255 ++++++++++ src/views/infra/job/logger/JobLogDetail.vue | 59 +++ src/views/infra/job/logger/index.vue | 196 ++++++++ src/views/infra/redis/index.vue | 266 +++++++++++ src/views/infra/server/index.vue | 28 ++ src/views/infra/skywalking/index.vue | 25 + src/views/infra/swagger/index.vue | 26 + src/views/infra/testDemo/index.vue | 4 + src/views/infra/webSocket/index.vue | 118 +++++ src/views/login/components/LoginForm.vue | 278 +++++++++++ src/views/login/components/LoginFormTitle.vue | 26 + src/views/login/components/MobileForm.vue | 225 +++++++++ src/views/login/components/QrCodeForm.vue | 30 ++ src/views/login/components/RegisterForm.vue | 142 ++++++ src/views/login/components/SSOLogin.vue | 199 ++++++++ src/views/login/components/index.ts | 8 + src/views/login/components/useLogin.ts | 42 ++ src/views/login/login.vue | 104 ++++ src/views/profile/components/BasicInfo.vue | 92 ++++ src/views/profile/components/ProfileUser.vue | 99 ++++ src/views/profile/components/ResetPwd.vue | 73 +++ src/views/profile/components/UserAvatar.vue | 39 ++ src/views/profile/components/UserSocial.vue | 94 ++++ src/views/profile/components/index.ts | 7 + src/views/profile/index.vue | 64 +++ src/views/redirect/redirect.vue | 28 ++ 64 files changed, 8483 insertions(+) create mode 100644 src/views/error/403.vue create mode 100644 src/views/error/404.vue create mode 100644 src/views/error/500.vue create mode 100644 src/views/home/Index copy.vue create mode 100644 src/views/home/Index2.vue create mode 100644 src/views/home/components/material.vue create mode 100644 src/views/home/components/produce.vue create mode 100644 src/views/home/components/product.vue create mode 100644 src/views/home/components/supplierIndex.vue create mode 100644 src/views/home/echarts-data.ts create mode 100644 src/views/home/index.vue create mode 100644 src/views/home/types.ts create mode 100644 src/views/infra/apiAccessLog/ApiAccessLogDetail.vue create mode 100644 src/views/infra/apiAccessLog/index.vue create mode 100644 src/views/infra/apiErrorLog/ApiErrorLogDetail.vue create mode 100644 src/views/infra/apiErrorLog/index.vue create mode 100644 src/views/infra/build/index.vue create mode 100644 src/views/infra/codegen/PreviewCode.vue create mode 100644 src/views/infra/codegen/components/BasicInfoForm.vue create mode 100644 src/views/infra/codegen/components/ColumInfoForm.vue create mode 100644 src/views/infra/codegen/components/GenerateInfoForm.vue create mode 100644 src/views/infra/codegen/components/index.ts create mode 100644 src/views/infra/codegen/editTable.vue create mode 100644 src/views/infra/codegen/importTable.vue create mode 100644 src/views/infra/codegen/index.vue create mode 100644 src/views/infra/config/ConfigForm.vue create mode 100644 src/views/infra/config/index.vue create mode 100644 src/views/infra/customInterface/index.vue create mode 100644 src/views/infra/dataSourceConfig/DataSourceConfigForm.vue create mode 100644 src/views/infra/dataSourceConfig/index.vue create mode 100644 src/views/infra/dbDoc/index.vue create mode 100644 src/views/infra/druid/index.vue create mode 100644 src/views/infra/file/FileForm.vue create mode 100644 src/views/infra/file/index.vue create mode 100644 src/views/infra/fileConfig/FileConfigForm.vue create mode 100644 src/views/infra/fileConfig/index.vue create mode 100644 src/views/infra/job/JobDetail.vue create mode 100644 src/views/infra/job/JobForm.vue create mode 100644 src/views/infra/job/index.vue create mode 100644 src/views/infra/job/logger/JobLogDetail.vue create mode 100644 src/views/infra/job/logger/index.vue create mode 100644 src/views/infra/redis/index.vue create mode 100644 src/views/infra/server/index.vue create mode 100644 src/views/infra/skywalking/index.vue create mode 100644 src/views/infra/swagger/index.vue create mode 100644 src/views/infra/testDemo/index.vue create mode 100644 src/views/infra/webSocket/index.vue create mode 100644 src/views/login/components/LoginForm.vue create mode 100644 src/views/login/components/LoginFormTitle.vue create mode 100644 src/views/login/components/MobileForm.vue create mode 100644 src/views/login/components/QrCodeForm.vue create mode 100644 src/views/login/components/RegisterForm.vue create mode 100644 src/views/login/components/SSOLogin.vue create mode 100644 src/views/login/components/index.ts create mode 100644 src/views/login/components/useLogin.ts create mode 100644 src/views/login/login.vue create mode 100644 src/views/profile/components/BasicInfo.vue create mode 100644 src/views/profile/components/ProfileUser.vue create mode 100644 src/views/profile/components/ResetPwd.vue create mode 100644 src/views/profile/components/UserAvatar.vue create mode 100644 src/views/profile/components/UserSocial.vue create mode 100644 src/views/profile/components/index.ts create mode 100644 src/views/profile/index.vue create mode 100644 src/views/redirect/redirect.vue diff --git a/src/views/error/403.vue b/src/views/error/403.vue new file mode 100644 index 0000000..a3ec487 --- /dev/null +++ b/src/views/error/403.vue @@ -0,0 +1,8 @@ + + + + diff --git a/src/views/error/404.vue b/src/views/error/404.vue new file mode 100644 index 0000000..f6a08de --- /dev/null +++ b/src/views/error/404.vue @@ -0,0 +1,7 @@ + + + + diff --git a/src/views/error/500.vue b/src/views/error/500.vue new file mode 100644 index 0000000..998487d --- /dev/null +++ b/src/views/error/500.vue @@ -0,0 +1,7 @@ + + + + diff --git a/src/views/home/Index copy.vue b/src/views/home/Index copy.vue new file mode 100644 index 0000000..121ec6a --- /dev/null +++ b/src/views/home/Index copy.vue @@ -0,0 +1,381 @@ + + + + + + + + + + + {{ t('workplace.welcome') }} {{ username }} {{ t('workplace.happyDay') }} + + + {{ t('workplace.toady') }},20℃ - 32℃! + + + + + + + + {{ t('workplace.project') }} + + + + + {{ t('workplace.toDo') }} + + + + + {{ t('workplace.access') }} + + + + + + + + + + + + + + + {{ t('workplace.project') }} + {{ t('action.more') }} + + + + + + + + + {{ item.name }} + + {{ t(item.message) }} + + {{ item.personal }} + {{ formatTime(item.time, 'yyyy-MM-dd') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ t('workplace.shortcutOperation') }} + + + + + + + + + {{ item.name }} + + + + + + + + + + {{ t('workplace.notice') }} + {{ t('action.more') }} + + + + + + + + + + {{ item.type }} : {{ item.title }} + + + + {{ formatTime(item.date, 'yyyy-MM-dd') }} + + + + + + + + + + + diff --git a/src/views/home/Index2.vue b/src/views/home/Index2.vue new file mode 100644 index 0000000..c9429ab --- /dev/null +++ b/src/views/home/Index2.vue @@ -0,0 +1,319 @@ + + + + + + + + + + + + + + {{ t('analysis.newUser') }} + + + + + + + + + + + + + + + + + + + + + {{ t('analysis.unreadInformation') }} + + + + + + + + + + + + + + + + + + + + + {{ t('analysis.transactionAmount') }} + + + + + + + + + + + + + + + + + + + + + {{ t('analysis.totalShopping') }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/home/components/material.vue b/src/views/home/components/material.vue new file mode 100644 index 0000000..83aadaa --- /dev/null +++ b/src/views/home/components/material.vue @@ -0,0 +1,336 @@ + + + + + + + 今日到货计划(已发货) + {{materialData?.preparetoissueTodayCount}}单 + + + + + + 今日备料计划(已发料) + {{materialData?.preparetoissueTodayCount}}单 + + + + + + 今日叫料请求(已发料) + {{materialData?.issueRequestTodayCount}}单 + + + + + + 空闲库位数/总库位数 + {{materialData?.freeLocationCount}}个/{{materialData?.totalLocationCount}}个 + + + + + + + 呆滞库存预警 + + + + + + + + + {{ formatter(scope.row.uom, DICT_TYPE.UOM) }} + + + + + + + {{ formatter(scope.row.inventoryStatus, DICT_TYPE.INVENTORY_STATUS) }} + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + 超期库存预警 + + + + + + + + + {{ formatter(scope.row.uom, DICT_TYPE.UOM) }} + + + + + + + {{ formatter(scope.row.inventoryStatus, DICT_TYPE.INVENTORY_STATUS) }} + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + + + 高低储预警 + + + + + + + + + {{ formatter(scope.row.uom, DICT_TYPE.UOM) }} + + + + + + + {{ formatter(scope.row.inventoryStatus, DICT_TYPE.INVENTORY_STATUS) }} + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + 待处理任务 + + + + + + + diff --git a/src/views/home/components/produce.vue b/src/views/home/components/produce.vue new file mode 100644 index 0000000..c289ec0 --- /dev/null +++ b/src/views/home/components/produce.vue @@ -0,0 +1,286 @@ + + + + + + 今日生产计划 + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + {{ formatDate(scope.row.beginTime) }} + + + + {{ formatDate(scope.row.endTime) }} + + + + + + + 线边安全库存 + + + + + + + + + + + + + + + + + + + + {{ formatDate(scope.row.createTime) }} + + + + + {{ formatDate(scope.row.createTime) }} + + + + + + + + 待上架成品库存 + + + + + + {{ formatDate(scope.row.requestTime) }} + + + + + {{ formatDate(scope.row.requestDueTime) }} + + + + + + + + {{ formatDate(scope.row.acceptTime) }} + + + + + + + + + + {{ formatter(scope.row.autoComplete, DICT_TYPE.TRUE_FALSE) }} + + + + + {{ formatter(scope.row.allowModifyLocation, DICT_TYPE.TRUE_FALSE) }} + + + + + {{ formatter(scope.row.allowModifyQty, DICT_TYPE.TRUE_FALSE) }} + + + + + {{ formatter(scope.row.allowBiggerQty, DICT_TYPE.TRUE_FALSE) }} + + + + + {{ formatter(scope.row.allowSmallerQty, DICT_TYPE.TRUE_FALSE) }} + + + + + {{ + formatter(scope.row.allowModifyInventoryStatus, DICT_TYPE.TRUE_FALSE) + }} + + + + + {{ formatter(scope.row.allowContinuousScanning, DICT_TYPE.TRUE_FALSE) }} + + + + + {{ formatter(scope.row.allowPartialComplete, DICT_TYPE.TRUE_FALSE) }} + + + + + {{ formatter(scope.row.allowModifyBatch, DICT_TYPE.TRUE_FALSE) }} + + + + + {{ formatter(scope.row.allowModifyPackingNumber, DICT_TYPE.TRUE_FALSE) }} + + + + + + 待处理任务 + + + + + + + diff --git a/src/views/home/components/product.vue b/src/views/home/components/product.vue new file mode 100644 index 0000000..5124d9c --- /dev/null +++ b/src/views/home/components/product.vue @@ -0,0 +1,313 @@ + + + + + + + 今日到货计划(已发货) + {{ productData?.deliverPlanTodayCount || 0 }}单 + + + + + + + 呆滞库存预警 + + + + + + + + + {{ formatter(scope.row.uom, DICT_TYPE.UOM) }} + + + + + + + {{ formatter(scope.row.inventoryStatus, DICT_TYPE.INVENTORY_STATUS) }} + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + 超期库存预警 + + + + + + + + + {{ formatter(scope.row.uom, DICT_TYPE.UOM) }} + + + + + + + {{ formatter(scope.row.inventoryStatus, DICT_TYPE.INVENTORY_STATUS) }} + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + + + 高低储预警 + + + + + + + + + {{ formatter(scope.row.uom, DICT_TYPE.UOM) }} + + + + + + + {{ formatter(scope.row.inventoryStatus, DICT_TYPE.INVENTORY_STATUS) }} + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + + + + + {{ formatDate(scope.row.planDate) }} + + + + + + 待处理任务 + + + + + + + diff --git a/src/views/home/components/supplierIndex.vue b/src/views/home/components/supplierIndex.vue new file mode 100644 index 0000000..7610f97 --- /dev/null +++ b/src/views/home/components/supplierIndex.vue @@ -0,0 +1,452 @@ + + + + + + 订单数 + + + + {{ supplierData?.openPurchaseCount || 0 }}单 + 开放订单数 + + + + + + {{ supplierData?.allPurchaseCount || 0 }}单 + 全部订单数 + + + + + + + 要货计划数 + + + + {{ supplierData?.openPurchasePlanCount || 0 }}单 + 开放计划数 + + + + + + {{ supplierData?.allPurchasePlanCount || 0 }}单 + 全部计划数 + + + + + + + 发货单数 + + + + {{ supplierData?.notTakeSupplierdeliverCount || 0 }}单 + 未收货订单数 + + + + + + {{ supplierData?.takeSupplierdeliverCount || 0 }}单 + 已收货订单数 + + + + + + + + + 本月发货单趋势 + + + + 本月发货零件TOP10 + + + + + + 最新消息 + + + + + + + + + + + + + {{ scope.row.templateParams }} + + + + + + + + + + + + + + + + + + 最新扣分明细 + + + + + + + + + + 本月退货明细 + + + + + + + + + + + + + + + + + + + + {{ formatter(scope.row.inventoryStatus,DICT_TYPE.INVENTORY_STATUS) }} + + + + + + + + + + + + + + + {{ formatter(scope.row.uom,DICT_TYPE.UOM) }} + + + + + + + {{ formatDate(scope.row.createTime) }} + + + + + + + 本月索赔明细 + + + + + + + + + + + + {{ formatDate(scope.row.createTime) }} + + + + + + + + + + diff --git a/src/views/home/echarts-data.ts b/src/views/home/echarts-data.ts new file mode 100644 index 0000000..15c7b4a --- /dev/null +++ b/src/views/home/echarts-data.ts @@ -0,0 +1,286 @@ +import { EChartsOption } from 'echarts' + +const { t } = useI18n() + +export const lineOptions: EChartsOption = { + + xAxis: { + data: [ 1, 2, 3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30 + ], + boundaryGap: false, + axisTick: { + show: false + } + }, + grid: { + left: 20, + right: 20, + bottom: 20, + top: 50, + containLabel: true + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'cross' + }, + padding: [5, 10] + }, + yAxis: { + axisTick: { + show: false + } + }, + legend: { + data: ['销售','哈哈'], + top: 20 + }, + series: [ + { + name: '销售', + smooth: true, + type: 'line', + data: [100, 120, 161, 134, 105, 160, 165, 114, 163, 185, 118, 123], + animationDuration: 2800, + animationEasing: 'cubicInOut' + }, + { + name: '哈哈', + smooth: true, + type: 'line', + itemStyle: {}, + data: [120, 82, 91, 154, 162, 140, 145, 250, 134, 56, 99, 123], + animationDuration: 2800, + animationEasing: 'quadraticOut' + } + ] +} + +export const pieOptions: EChartsOption = { + // title: { + // text: t('analysis.userAccessSource'), + // left: 'center' + // }, + tooltip: { + trigger: 'item', + formatter: '{a} {b} : {c} ({d}%)' + }, + legend: { + orient: 'vertical', + left: 'left', + top:20, + data: [ + t('analysis.directAccess'), + t('analysis.mailMarketing'), + t('analysis.allianceAdvertising'), + t('analysis.videoAdvertising'), + t('analysis.searchEngines') + ] + }, + series: [ + { + name: t('analysis.userAccessSource'), + type: 'pie', + radius: '55%', + center: ['50%', '60%'], + data: [ + { value: 335, name: t('analysis.directAccess') }, + { value: 310, name: t('analysis.mailMarketing') }, + { value: 234, name: t('analysis.allianceAdvertising') }, + { value: 135, name: t('analysis.videoAdvertising') }, + { value: 1548, name: t('analysis.searchEngines') } + ] + } + ] +} + +export const barOptions: EChartsOption = { + title: { + text: '', + left: 'center' + }, + tooltip: { + trigger: 'axis', + axisPointer: { + type: 'shadow' + } + }, + grid: { + left: 50, + right: 20, + bottom: 20 + }, + xAxis: { + type: 'category', + data: [], + axisTick: { + alignWithLabel: true + } + }, + yAxis: { + type: 'value' + }, + series: [ + { + name: t('analysis.activeQuantity'), + data: [], + type: 'bar' + } + ] +} + +export const radarOption: EChartsOption = { + legend: { + data: [t('workplace.personal'), t('workplace.team')] + }, + radar: { + // shape: 'circle', + indicator: [ + { name: t('workplace.quote'), max: 65 }, + { name: t('workplace.contribution'), max: 160 }, + { name: t('workplace.hot'), max: 300 }, + { name: t('workplace.yield'), max: 130 }, + { name: t('workplace.follow'), max: 100 } + ] + }, + series: [ + { + name: `xxx${t('workplace.index')}`, + type: 'radar', + data: [ + { + value: [42, 30, 20, 35, 80], + name: t('workplace.personal') + }, + { + value: [50, 140, 290, 100, 90], + name: t('workplace.team') + } + ] + } + ] +} + +export const wordOptions = { + series: [ + { + type: 'wordCloud', + gridSize: 2, + sizeRange: [12, 50], + rotationRange: [-90, 90], + shape: 'pentagon', + width: 600, + height: 400, + drawOutOfBound: true, + textStyle: { + color: function () { + return ( + 'rgb(' + + [ + Math.round(Math.random() * 160), + Math.round(Math.random() * 160), + Math.round(Math.random() * 160) + ].join(',') + + ')' + ) + } + }, + emphasis: { + textStyle: { + shadowBlur: 10, + shadowColor: '#333' + } + }, + data: [ + { + name: 'Sam S Club', + value: 10000, + textStyle: { + color: 'black' + }, + emphasis: { + textStyle: { + color: 'red' + } + } + }, + { + name: 'Macys', + value: 6181 + }, + { + name: 'Amy Schumer', + value: 4386 + }, + { + name: 'Jurassic World', + value: 4055 + }, + { + name: 'Charter Communications', + value: 2467 + }, + { + name: 'Chick Fil A', + value: 2244 + }, + { + name: 'Planet Fitness', + value: 1898 + }, + { + name: 'Pitch Perfect', + value: 1484 + }, + { + name: 'Express', + value: 1112 + }, + { + name: 'Home', + value: 965 + }, + { + name: 'Johnny Depp', + value: 847 + }, + { + name: 'Lena Dunham', + value: 582 + }, + { + name: 'Lewis Hamilton', + value: 555 + }, + { + name: 'KXAN', + value: 550 + }, + { + name: 'Mary Ellen Mark', + value: 462 + }, + { + name: 'Farrah Abraham', + value: 366 + }, + { + name: 'Rita Ora', + value: 360 + }, + { + name: 'Serena Williams', + value: 282 + }, + { + name: 'NCAA baseball tournament', + value: 273 + }, + { + name: 'Point Break', + value: 265 + } + ] + } + ] +} diff --git a/src/views/home/index.vue b/src/views/home/index.vue new file mode 100644 index 0000000..1cc81ac --- /dev/null +++ b/src/views/home/index.vue @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/src/views/home/types.ts b/src/views/home/types.ts new file mode 100644 index 0000000..e6313d3 --- /dev/null +++ b/src/views/home/types.ts @@ -0,0 +1,55 @@ +export type WorkplaceTotal = { + project: number + access: number + todo: number +} + +export type Project = { + name: string + icon: string + message: string + personal: string + time: Date | number | string +} + +export type Notice = { + title: string + type: string + keys: string[] + date: Date | number | string +} + +export type Shortcut = { + name: string + icon: string + url: string +} + +export type RadarData = { + personal: number + team: number + max: number + name: string +} +export type AnalysisTotalTypes = { + users: number + messages: number + moneys: number + shoppings: number +} + +export type UserAccessSource = { + value: number + name: string +} + +export type WeeklyUserActivity = { + value: number + name: string +} + +export type MonthlySales = { + name: string + estimate: number + actual: number +} diff --git a/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue b/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue new file mode 100644 index 0000000..43a34dc --- /dev/null +++ b/src/views/infra/apiAccessLog/ApiAccessLogDetail.vue @@ -0,0 +1,67 @@ + + + + + {{ detailData.id }} + + + {{ detailData.traceId }} + + + {{ detailData.applicationName }} + + + {{ detailData.userId }} + + + + {{ detailData.userIp }} + + + {{ detailData.userAgent }} + + + {{ detailData.requestMethod }} {{ detailData.requestUrl }} + + + {{ detailData.requestParams }} + + + {{ formatDate(detailData.beginTime) }} ~ {{ formatDate(detailData.endTime) }} + + {{ detailData.duration }} ms + + 正常 + 失败 | {{ detailData.resultCode }} | {{ detailData.resultMsg }} + + + + + + + diff --git a/src/views/infra/apiAccessLog/index.vue b/src/views/infra/apiAccessLog/index.vue new file mode 100644 index 0000000..245f433 --- /dev/null +++ b/src/views/infra/apiAccessLog/index.vue @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + + + 重置 + + + 导出 + + + + + + + + + + + + + + + + + + + + + {{ formatDate(scope.row.beginTime) }} + + + + {{ scope.row.duration }} ms + + + + {{ scope.row.resultCode === 0 ? '成功' : '失败(' + scope.row.resultMsg + ')' }} + + + + + + + 详细 + + + + + + + + + + + + diff --git a/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue b/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue new file mode 100644 index 0000000..7340ca8 --- /dev/null +++ b/src/views/infra/apiErrorLog/ApiErrorLogDetail.vue @@ -0,0 +1,81 @@ + + + + + {{ detailData.id }} + + + {{ detailData.traceId }} + + + {{ detailData.applicationName }} + + + {{ detailData.userId }} + + + + {{ detailData.userIp }} + + + {{ detailData.userAgent }} + + + {{ detailData.requestMethod }} {{ detailData.requestUrl }} + + + {{ detailData.requestParams }} + + + {{ formatDate(detailData.exceptionTime) }} + + + {{ detailData.exceptionName }} + + + + + + + + + {{ detailData.processUserId }} + + + {{ formatDate(detailData.processTime) }} + + + + + diff --git a/src/views/infra/apiErrorLog/index.vue b/src/views/infra/apiErrorLog/index.vue new file mode 100644 index 0000000..6836755 --- /dev/null +++ b/src/views/infra/apiErrorLog/index.vue @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 详细 + + + 已处理 + + + 已忽略 + + + + + + + + + + + + + diff --git a/src/views/infra/build/index.vue b/src/views/infra/build/index.vue new file mode 100644 index 0000000..11bfc99 --- /dev/null +++ b/src/views/infra/build/index.vue @@ -0,0 +1,143 @@ + + + + + + 生成 JSON + 生成 Options + 生成组件 + + + + + + + + + + + + + + {{ t('common.copy') }} + + + + + + + + + + diff --git a/src/views/infra/codegen/PreviewCode.vue b/src/views/infra/codegen/PreviewCode.vue new file mode 100644 index 0000000..b04775e --- /dev/null +++ b/src/views/infra/codegen/PreviewCode.vue @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + {{ t('common.copy') }} + + + + + + + + + + + + diff --git a/src/views/infra/codegen/components/BasicInfoForm.vue b/src/views/infra/codegen/components/BasicInfoForm.vue new file mode 100644 index 0000000..1859300 --- /dev/null +++ b/src/views/infra/codegen/components/BasicInfoForm.vue @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + 实体类名称 + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/infra/codegen/components/ColumInfoForm.vue b/src/views/infra/codegen/components/ColumInfoForm.vue new file mode 100644 index 0000000..737c2e2 --- /dev/null +++ b/src/views/infra/codegen/components/ColumInfoForm.vue @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/infra/codegen/components/GenerateInfoForm.vue b/src/views/infra/codegen/components/GenerateInfoForm.vue new file mode 100644 index 0000000..744edfe --- /dev/null +++ b/src/views/infra/codegen/components/GenerateInfoForm.vue @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 上级菜单 + + + + + + + + + + + + + + + + + + + + + + + + + + 模块名 + + + + + + + + + + + + + + 业务名 + + + + + + + + + + + + + + + + + + + + + + + + + + 类名称 + + + + + + + + + + + + + + 类描述 + + + + + + + + + + + + + + 自定义路径 + + + + + + + + + + 最近路径快速选择 + + + + + + 恢复默认的生成基础路径 + + + + + + + + + + + + 其他信息 + + + + + 树编码字段 + + + + + + + + + + + + + + + 树父编码字段 + + + + + + + + + + + + + + + 树名称字段 + + + + + + + + + + + + + + 关联信息 + + + + + 关联子表的表名 + + + + + + + + + + + + + + + 子表关联的外键名 + + + + + + + + + + + + + + diff --git a/src/views/infra/codegen/components/index.ts b/src/views/infra/codegen/components/index.ts new file mode 100644 index 0000000..1634a76 --- /dev/null +++ b/src/views/infra/codegen/components/index.ts @@ -0,0 +1,4 @@ +import BasicInfoForm from './BasicInfoForm.vue' +import ColumInfoForm from './ColumInfoForm.vue' +import GenerateInfoForm from './GenerateInfoForm.vue' +export { BasicInfoForm, ColumInfoForm, GenerateInfoForm } diff --git a/src/views/infra/codegen/editTable.vue b/src/views/infra/codegen/editTable.vue new file mode 100644 index 0000000..9c4e765 --- /dev/null +++ b/src/views/infra/codegen/editTable.vue @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + 保存 + 返回 + + + + + diff --git a/src/views/infra/codegen/importTable.vue b/src/views/infra/codegen/importTable.vue new file mode 100644 index 0000000..6cd4610 --- /dev/null +++ b/src/views/infra/codegen/importTable.vue @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + 搜索 + + + + 重置 + + + + + + + + + + + + + + + 导入 + + 关闭 + + + + diff --git a/src/views/infra/codegen/index.vue b/src/views/infra/codegen/index.vue new file mode 100644 index 0000000..4f99ce8 --- /dev/null +++ b/src/views/infra/codegen/index.vue @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + 搜索 + + + + 重置 + + + + 导入 + + + + + + + + + + + {{ + dataSourceConfigList.find((config) => config.id === scope.row.dataSourceConfigId)?.name + }} + + + + + + + + + + + + 预览 + + + + 编辑 + + + + 删除 + + + + 同步 + + + + 生成代码 + + + + + + + + + + + + + + diff --git a/src/views/infra/config/ConfigForm.vue b/src/views/infra/config/ConfigForm.vue new file mode 100644 index 0000000..19b5bf1 --- /dev/null +++ b/src/views/infra/config/ConfigForm.vue @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + {{ dict.label }} + + + + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/infra/config/index.vue b/src/views/infra/config/index.vue new file mode 100644 index 0000000..85b4fc9 --- /dev/null +++ b/src/views/infra/config/index.vue @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + 搜索 + + + 重置 + + + 新增 + + + 导出 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 编辑 + + + + 删除 + + + + + + + + + + + + diff --git a/src/views/infra/customInterface/index.vue b/src/views/infra/customInterface/index.vue new file mode 100644 index 0000000..9359223 --- /dev/null +++ b/src/views/infra/customInterface/index.vue @@ -0,0 +1,21 @@ + + + + diff --git a/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue b/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue new file mode 100644 index 0000000..e2a4eaa --- /dev/null +++ b/src/views/infra/dataSourceConfig/DataSourceConfigForm.vue @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/infra/dataSourceConfig/index.vue b/src/views/infra/dataSourceConfig/index.vue new file mode 100644 index 0000000..6e12bee --- /dev/null +++ b/src/views/infra/dataSourceConfig/index.vue @@ -0,0 +1,87 @@ + + + + + + + 新增 + + + + + + + + + + + + + + + + + + 编辑 + + + + 删除 + + + + + + + + + + diff --git a/src/views/infra/dbDoc/index.vue b/src/views/infra/dbDoc/index.vue new file mode 100644 index 0000000..51481c7 --- /dev/null +++ b/src/views/infra/dbDoc/index.vue @@ -0,0 +1,57 @@ + + + + + 导出 HTML + + + 导出 Word + + + 导出 Markdown + + + + + + diff --git a/src/views/infra/druid/index.vue b/src/views/infra/druid/index.vue new file mode 100644 index 0000000..3beac74 --- /dev/null +++ b/src/views/infra/druid/index.vue @@ -0,0 +1,25 @@ + + + + + + diff --git a/src/views/infra/file/FileForm.vue b/src/views/infra/file/FileForm.vue new file mode 100644 index 0000000..beeaea0 --- /dev/null +++ b/src/views/infra/file/FileForm.vue @@ -0,0 +1,104 @@ + + + + + 将文件拖到此处,或 点击上传 + + + 提示:仅允许导入 jpg、png、gif 格式文件! + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/infra/file/index.vue b/src/views/infra/file/index.vue new file mode 100644 index 0000000..4d86402 --- /dev/null +++ b/src/views/infra/file/index.vue @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + 搜索 + 重置 + + 上传文件 + + + + + + + + + + + + + + + + + + + 删除 + + + + + + + + + + + + diff --git a/src/views/infra/fileConfig/FileConfigForm.vue b/src/views/infra/fileConfig/FileConfigForm.vue new file mode 100644 index 0000000..06b80e7 --- /dev/null +++ b/src/views/infra/fileConfig/FileConfigForm.vue @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 主动模式 + 被动模式 + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/infra/fileConfig/index.vue b/src/views/infra/fileConfig/index.vue new file mode 100644 index 0000000..eec0dd3 --- /dev/null +++ b/src/views/infra/fileConfig/index.vue @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + 搜索 + + + 重置 + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + + + 编辑 + + + + 主配置 + + + 测试 + + + + 删除 + + + + + + + + + + + + diff --git a/src/views/infra/job/JobDetail.vue b/src/views/infra/job/JobDetail.vue new file mode 100644 index 0000000..db91d0f --- /dev/null +++ b/src/views/infra/job/JobDetail.vue @@ -0,0 +1,73 @@ + + + + + {{ detailData.id }} + + + {{ detailData.name }} + + + + + + {{ detailData.handlerName }} + + + {{ detailData.handlerParam }} + + + {{ detailData.cronExpression }} + + + {{ detailData.retryCount }} + + + {{ detailData.retryInterval + ' 毫秒' }} + + + {{ detailData.monitorTimeout > 0 ? detailData.monitorTimeout + ' 毫秒' : '未开启' }} + + + + + 第 {{ index + 1 }} 次 + + + + + + + diff --git a/src/views/infra/job/JobForm.vue b/src/views/infra/job/JobForm.vue new file mode 100644 index 0000000..632eef7 --- /dev/null +++ b/src/views/infra/job/JobForm.vue @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + 确 定 + 取 消 + + + + diff --git a/src/views/infra/job/index.vue b/src/views/infra/job/index.vue new file mode 100644 index 0000000..d662abc --- /dev/null +++ b/src/views/infra/job/index.vue @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + + 搜索 + + + 重置 + + + 新增 + + + 导出 + + + 执行日志 + + + + + + + + + + + + + + + + + + + + + + + 修改 + + + + {{ scope.row.status === InfraJobStatusEnum.STOP ? '开启' : '暂停' }} + + + + 删除 + + handleCommand(command, scope.row)" + v-hasPermi="['infra:job:trigger', 'infra:job:query']"> + + 更多 + + + + + 执行一次 + + + 任务详细 + + + 调度日志 + + + + + + + + + + + + + + + + + diff --git a/src/views/infra/job/logger/JobLogDetail.vue b/src/views/infra/job/logger/JobLogDetail.vue new file mode 100644 index 0000000..a010c94 --- /dev/null +++ b/src/views/infra/job/logger/JobLogDetail.vue @@ -0,0 +1,59 @@ + + + + + {{ detailData.id }} + + + {{ detailData.jobId }} + + + {{ detailData.handlerName }} + + + {{ detailData.handlerParam }} + + + {{ detailData.executeIndex }} + + + {{ formatDate(detailData.beginTime) + ' ~ ' + formatDate(detailData.endTime) }} + + + {{ detailData.duration + ' 毫秒' }} + + + + + + {{ detailData.duration + ' result' }} + + + + + diff --git a/src/views/infra/job/logger/index.vue b/src/views/infra/job/logger/index.vue new file mode 100644 index 0000000..a9fb08f --- /dev/null +++ b/src/views/infra/job/logger/index.vue @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + + + 搜索 + 重置 + + 导出 + + + + + + + + + + + + + + + + {{ formatDate(scope.row.beginTime) + ' ~ ' + formatDate(scope.row.endTime) }} + + + + + {{ scope.row.duration + ' 毫秒' }} + + + + + + + + + + + 详细 + + + + + + + + + + + + diff --git a/src/views/infra/redis/index.vue b/src/views/infra/redis/index.vue new file mode 100644 index 0000000..1924b79 --- /dev/null +++ b/src/views/infra/redis/index.vue @@ -0,0 +1,266 @@ + + + + + + + + + {{ cache?.info?.redis_version }} + + + {{ cache?.info?.redis_mode == 'standalone' ? '单机' : '集群' }} + + + {{ cache?.info?.tcp_port }} + + + {{ cache?.info?.connected_clients }} + + + {{ cache?.info?.uptime_in_days }} + + + {{ cache?.info?.used_memory_human }} + + + {{ cache?.info ? parseFloat(cache?.info?.used_cpu_user_children).toFixed(2) : '' }} + + + {{ cache?.info?.maxmemory_human }} + + + {{ cache?.info?.aof_enabled == '0' ? '否' : '是' }} + + + {{ cache?.info?.rdb_last_bgsave_status }} + + + {{ cache?.dbSize }} + + + {{ cache?.info?.instantaneous_input_kbps }}kps/ + {{ cache?.info?.instantaneous_output_kbps }}kps + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/infra/server/index.vue b/src/views/infra/server/index.vue new file mode 100644 index 0000000..da839bd --- /dev/null +++ b/src/views/infra/server/index.vue @@ -0,0 +1,28 @@ + + + + + + diff --git a/src/views/infra/skywalking/index.vue b/src/views/infra/skywalking/index.vue new file mode 100644 index 0000000..7918a05 --- /dev/null +++ b/src/views/infra/skywalking/index.vue @@ -0,0 +1,25 @@ + + + + + + diff --git a/src/views/infra/swagger/index.vue b/src/views/infra/swagger/index.vue new file mode 100644 index 0000000..4c39c13 --- /dev/null +++ b/src/views/infra/swagger/index.vue @@ -0,0 +1,26 @@ + + + + + + diff --git a/src/views/infra/testDemo/index.vue b/src/views/infra/testDemo/index.vue new file mode 100644 index 0000000..ca6a5b0 --- /dev/null +++ b/src/views/infra/testDemo/index.vue @@ -0,0 +1,4 @@ + + index + + diff --git a/src/views/infra/webSocket/index.vue b/src/views/infra/webSocket/index.vue new file mode 100644 index 0000000..ce6db79 --- /dev/null +++ b/src/views/infra/webSocket/index.vue @@ -0,0 +1,118 @@ + + + + + + 连接 + + + + 连接状态: + {{ status }} + + + + + + 服务地址 + + + {{ getIsOpen ? '关闭连接' : '开启连接' }} + + + 设置 + + + + 发送 + + + + + + 消息记录 + + + + + + + 收到消息: + {{ formatDate(item.time) }} + + + {{ item.res }} + + + + + + + + diff --git a/src/views/login/components/LoginForm.vue b/src/views/login/components/LoginForm.vue new file mode 100644 index 0000000..9499f49 --- /dev/null +++ b/src/views/login/components/LoginForm.vue @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ t('login.remember') }} + + + + {{ t('login.forgetPassword') }} + + + + + + + + + + + + + + + + + diff --git a/src/views/login/components/LoginFormTitle.vue b/src/views/login/components/LoginFormTitle.vue new file mode 100644 index 0000000..cdf4fac --- /dev/null +++ b/src/views/login/components/LoginFormTitle.vue @@ -0,0 +1,26 @@ + + + {{ getFormTitle }} + + + diff --git a/src/views/login/components/MobileForm.vue b/src/views/login/components/MobileForm.vue new file mode 100644 index 0000000..ebb36b8 --- /dev/null +++ b/src/views/login/components/MobileForm.vue @@ -0,0 +1,225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {{ t('login.getSmsCode') }} + + + {{ mobileCodeTimer }}秒后可重新获取 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/login/components/QrCodeForm.vue b/src/views/login/components/QrCodeForm.vue new file mode 100644 index 0000000..31d2845 --- /dev/null +++ b/src/views/login/components/QrCodeForm.vue @@ -0,0 +1,30 @@ + + + + + + + + + + + {{ t('login.qrcode') }} + + + + + + + + diff --git a/src/views/login/components/RegisterForm.vue b/src/views/login/components/RegisterForm.vue new file mode 100644 index 0000000..23b3bd4 --- /dev/null +++ b/src/views/login/components/RegisterForm.vue @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/login/components/SSOLogin.vue b/src/views/login/components/SSOLogin.vue new file mode 100644 index 0000000..f31ab0e --- /dev/null +++ b/src/views/login/components/SSOLogin.vue @@ -0,0 +1,199 @@ + + + + + + + + + + + 此第三方应用请求获得以下权限: + + + + {{ formatScope(scope) }} + + + + + + + 同意授权 + 授 权 中... + + 拒绝 + + + + + + diff --git a/src/views/login/components/index.ts b/src/views/login/components/index.ts new file mode 100644 index 0000000..204ad73 --- /dev/null +++ b/src/views/login/components/index.ts @@ -0,0 +1,8 @@ +import LoginForm from './LoginForm.vue' +import MobileForm from './MobileForm.vue' +import LoginFormTitle from './LoginFormTitle.vue' +import RegisterForm from './RegisterForm.vue' +import QrCodeForm from './QrCodeForm.vue' +import SSOLoginVue from './SSOLogin.vue' + +export { LoginForm, MobileForm, LoginFormTitle, RegisterForm, QrCodeForm, SSOLoginVue } diff --git a/src/views/login/components/useLogin.ts b/src/views/login/components/useLogin.ts new file mode 100644 index 0000000..b4a02f8 --- /dev/null +++ b/src/views/login/components/useLogin.ts @@ -0,0 +1,42 @@ +import { Ref } from 'vue' + +export enum LoginStateEnum { + LOGIN, + REGISTER, + RESET_PASSWORD, + MOBILE, + QR_CODE, + SSO +} + +const currentState = ref(LoginStateEnum.LOGIN) + +export function useLoginState() { + function setLoginState(state: LoginStateEnum) { + currentState.value = state + } + const getLoginState = computed(() => currentState.value) + + function handleBackLogin() { + setLoginState(LoginStateEnum.LOGIN) + } + + return { + setLoginState, + getLoginState, + handleBackLogin + } +} + +export function useFormValid(formRef: Ref) { + async function validForm() { + const form = unref(formRef) + if (!form) return + const data = await form.validate() + return data as T + } + + return { + validForm + } +} diff --git a/src/views/login/login.vue b/src/views/login/login.vue new file mode 100644 index 0000000..a0025ab --- /dev/null +++ b/src/views/login/login.vue @@ -0,0 +1,104 @@ + + + + + + + + {{ underlineToHump(appStore.getTitle) }} + + + + + + {{ t('login.welcome') }} + + {{ t('login.message') }} + + + + + + + + + + {{ underlineToHump(appStore.getTitle) }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/views/profile/components/BasicInfo.vue b/src/views/profile/components/BasicInfo.vue new file mode 100644 index 0000000..e2189b1 --- /dev/null +++ b/src/views/profile/components/BasicInfo.vue @@ -0,0 +1,92 @@ + + + + + {{ t('profile.user.man') }} + {{ t('profile.user.woman') }} + + + + + + + + + diff --git a/src/views/profile/components/ProfileUser.vue b/src/views/profile/components/ProfileUser.vue new file mode 100644 index 0000000..b493499 --- /dev/null +++ b/src/views/profile/components/ProfileUser.vue @@ -0,0 +1,99 @@ + + + + + + + + + {{ t('profile.user.username') }} + {{ userInfo?.username }} + + + + {{ t('profile.user.mobile') }} + {{ userInfo?.mobile }} + + + + {{ t('profile.user.email') }} + {{ userInfo?.email }} + + + + {{ t('profile.user.dept') }} + {{ userInfo?.dept.name }} + + + + {{ t('profile.user.posts') }} + + {{ userInfo?.posts.map((post) => post.name).join(',') }} + + + + + {{ t('profile.user.roles') }} + + {{ userInfo?.roles.map((role) => role.name).join(',') }} + + + + + {{ t('profile.user.createTime') }} + {{ formatDate(userInfo?.createTime) }} + + + + + + + diff --git a/src/views/profile/components/ResetPwd.vue b/src/views/profile/components/ResetPwd.vue new file mode 100644 index 0000000..477be91 --- /dev/null +++ b/src/views/profile/components/ResetPwd.vue @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/views/profile/components/UserAvatar.vue b/src/views/profile/components/UserAvatar.vue new file mode 100644 index 0000000..c20168f --- /dev/null +++ b/src/views/profile/components/UserAvatar.vue @@ -0,0 +1,39 @@ + + + + + + + + diff --git a/src/views/profile/components/UserSocial.vue b/src/views/profile/components/UserSocial.vue new file mode 100644 index 0000000..2f021ab --- /dev/null +++ b/src/views/profile/components/UserSocial.vue @@ -0,0 +1,94 @@ + + + + + + + {{ row.title }} + + + + + + 已绑定 + + + + 未绑定 + + + + + + + diff --git a/src/views/profile/components/index.ts b/src/views/profile/components/index.ts new file mode 100644 index 0000000..9e1883c --- /dev/null +++ b/src/views/profile/components/index.ts @@ -0,0 +1,7 @@ +import BasicInfo from './BasicInfo.vue' +import ProfileUser from './ProfileUser.vue' +import ResetPwd from './ResetPwd.vue' +import UserAvatarVue from './UserAvatar.vue' +import UserSocial from './UserSocial.vue' + +export { BasicInfo, ProfileUser, ResetPwd, UserAvatarVue, UserSocial } diff --git a/src/views/profile/index.vue b/src/views/profile/index.vue new file mode 100644 index 0000000..e813f04 --- /dev/null +++ b/src/views/profile/index.vue @@ -0,0 +1,64 @@ + + + + + + {{ t('profile.user.title') }} + + + + + + + + {{ t('profile.info.title') }} + + + + + + + + + + + + + + + + + + diff --git a/src/views/redirect/redirect.vue b/src/views/redirect/redirect.vue new file mode 100644 index 0000000..f7717ce --- /dev/null +++ b/src/views/redirect/redirect.vue @@ -0,0 +1,28 @@ + + + +
设置
{{ row.title }}