| | |
| | | VITE_BASE_URL = / |
| | | |
| | | # 项目名称 |
| | | VITE_APP_NAME = 小鹏运营管理平台 |
| | | VITE_APP_NAME = RT后台 |
| | | |
| | | # 路由模式 web | hash |
| | | VITE_ROUTE_MODE = web |
| | |
| | | <meta charset="UTF-8" /> |
| | | <link rel="icon" href="/favicon.svg" /> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| | | <title>小鹏运营管理平台</title> |
| | | <title>RT后台</title> |
| | | </head> |
| | | |
| | | <body> |
| | |
| | | "order": "Order", |
| | | "evaluationRecord": "Evaluation record", |
| | | "transactionStrategy": "Transaction strategy", |
| | | "navigationAndRoutePlanning": "Navigation and route planning" |
| | | "navigationAndRoutePlanning": "Navigation and route planning", |
| | | "accountPermission": "账号权限管理", |
| | | "accountManagement": "账号管理", |
| | | "permissionGroup": "权限组管理", |
| | | "permissionGroupForm": "权限组表单", |
| | | "roleManagement": "角色管理", |
| | | "roleDetail": "角色详情", |
| | | "activityAndPricing": "活动及定价管理", |
| | | "pricingManagement": "定价管理", |
| | | "pricingDetail": "定价详情", |
| | | "rules": "计费规则", |
| | | "whitelistManagement": "白名单管理", |
| | | "invitationCode": "邀请码管理", |
| | | "whitelist": "白名单管理", |
| | | "whitelistLog": "白名单日志", |
| | | "operationsManagement": "运营管理", |
| | | "openCity": "开通城市管理", |
| | | "pointManagement": "点位管理", |
| | | "geofenceManagement": "围栏管理", |
| | | "geofenceDetail": "围栏详情", |
| | | "vehicleManagement": "车辆管理", |
| | | "inventoryVehicle": "车辆库存管理", |
| | | "addInventoryVehicle": "新增车辆", |
| | | "operatingVehicle": "运营车辆管理", |
| | | "operatingVehicleDetail": "运营车辆详情", |
| | | "fleetManagement": "车队管理", |
| | | "fleetManagementDetail": "车队详情" |
| | | }, |
| | | "transaction": { |
| | | "export": "Export order", |
| | |
| | | "navigate": "切换", |
| | | "inputPlaceholder": "请输入", |
| | | "selectPlaceholder": "请选择", |
| | | "search": "搜索", |
| | | "search": "查询", |
| | | "reset": "重置", |
| | | "export": "导出", |
| | | "expand": "展开", |
| | |
| | | "order": "订单管理", |
| | | "evaluationRecord": "评价记录", |
| | | "transactionStrategy": "交易策略", |
| | | "navigationAndRoutePlanning": "导航及路线规划" |
| | | "navigationAndRoutePlanning": "导航及路线规划", |
| | | "accountPermission": "账号权限管理", |
| | | "accountManagement": "账号管理", |
| | | "permissionGroup": "权限组管理", |
| | | "permissionGroupForm": "权限组表单", |
| | | "roleManagement": "角色管理", |
| | | "roleDetail": "角色详情", |
| | | "activityAndPricing": "活动及定价管理", |
| | | "pricingManagement": "定价管理", |
| | | "pricingDetail": "定价详情", |
| | | "rules": "计费规则", |
| | | "whitelistManagement": "白名单管理", |
| | | "invitationCode": "邀请码管理", |
| | | "whitelist": "白名单管理", |
| | | "whitelistLog": "白名单日志", |
| | | "operationsManagement": "运营管理", |
| | | "openCity": "开通城市管理", |
| | | "pointManagement": "点位管理", |
| | | "geofenceManagement": "围栏管理", |
| | | "geofenceDetail": "围栏详情", |
| | | "vehicleManagement": "车辆管理", |
| | | "inventoryVehicle": "车辆库存管理", |
| | | "addInventoryVehicle": "新增车辆", |
| | | "operatingVehicle": "运营车辆管理", |
| | | "operatingVehicleDetail": "运营车辆详情", |
| | | "fleetManagement": "车队管理", |
| | | "fleetManagementDetail": "车队详情" |
| | | }, |
| | | "transaction": { |
| | | "export": "导出订单", |
| | |
| | | "dependencies": { |
| | | "@vueuse/core": "^13.6.0", |
| | | "alova": "^3.3.4", |
| | | "ant-design-vue": "~4.2.6", |
| | | "colord": "^2.9.3", |
| | | "echarts": "^5.6.0", |
| | | "md-editor-v3": "^5.6.1", |
| | |
| | | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="400" height="400" viewBox="0 0 400 400"><defs><clipPath id="master_svg0_9_38"><rect x="0" y="0" width="400" height="400" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_9_38)"><g><g><path d="M62.99998474121094,251.565L199.99998474121094,366L200.27298474121093,365.772L200.49998474121094,366L203.01798474121094,363.479L336.99998474121094,251.565L199.99998474121094,37L62.99998474121094,251.565ZM200.20898474121094,365.708L200.27298474121093,365.772L203.01798474121094,363.479L294.99998474121094,271.39099999999996L200.49998474121094,94L105.99998474121094,271.39099999999996L198.73798474121094,364.236L145.99998474121094,290.522L199.99998474121094,149L253.99998474121094,290.522L200.20898474121094,365.708Z" fill-rule="evenodd" fill="#56CB46" fill-opacity="1"/></g></g></g></svg> |
| | | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="24" height="24" viewBox="0 0 24 24"><defs><linearGradient x1="0.9444345235824585" y1="0.4999999701976776" x2="0.15886342525482897" y2="0.5000000617001206" id="master_svg0_1_2191"><stop offset="0%" stop-color="#3DF661" stop-opacity="1"/><stop offset="97.83104658126831%" stop-color="#61DCF3" stop-opacity="1"/><stop offset="100%" stop-color="#61DCF3" stop-opacity="1"/></linearGradient><linearGradient x1="0.9645051956176758" y1="0.5" x2="0.28273433446884294" y2="0.49999995110556483" id="master_svg1_1_2206"><stop offset="0%" stop-color="#3DE8FF" stop-opacity="1"/><stop offset="100%" stop-color="#1578ED" stop-opacity="1"/></linearGradient><linearGradient x1="0.9594921469688416" y1="0.5000000596046448" x2="-2.2761513562841174e-8" y2="0.5000000596046448" id="master_svg2_1_2198"><stop offset="0%" stop-color="#138EFF" stop-opacity="1"/><stop offset="100%" stop-color="#004EE4" stop-opacity="1"/></linearGradient></defs><g><path d="M10.40821059461453,15.850779828125L13.109685935644531,19.317672828124998C13.299167135644531,19.560838828125,13.593389035644531,19.700780828124998,13.901663735644531,19.700780828124998L18.990495635644532,19.700780828124998C19.15700813564453,19.700781828125002,19.257646535644533,19.507556828125,19.15529923564453,19.376210828125L13.88222833564453,12.609103228125C13.600628835644532,12.247715928125,13.600628835644532,11.753845228125,13.88222833564453,11.392458928125L19.15529923564453,4.6253511581249995C19.257646535644533,4.494005858125,19.15700813564453,4.300781250005,18.990495635644532,4.300781250005L13.901663735644531,4.300781250005C13.593389035644531,4.300781250005,13.299167135644531,4.440721588125,13.109685935644531,4.683888938125L10.40821077916453,8.150782128125L12.934192635644532,11.392458928125C13.215792635644531,11.753845228125,13.215792635644531,12.247715928125,12.934192635644532,12.609102228125L10.40821059461453,15.850779828125Z" fill-rule="evenodd" fill="url(#master_svg0_1_2191)" fill-opacity="1"/></g><path d="M1.22630879,4.30078125C2.30153385,4.30078125,5.16091255,4.30078125,6.31514075,4.30078125C6.62341545,4.30078125,6.91763735,4.44072159,7.10711865,4.68388894C8.07751895,5.92923595,11.14837575,9.870168249999999,12.33457575,11.39245895C12.61617575,11.753845250000001,12.61617575,12.24771595,12.33457575,12.60910225C11.14837575,14.13139345,8.07751895,18.07232625,7.10711865,19.31767225C6.91763735,19.56083825,6.62341545,19.70078125,6.31514075,19.70078125C5.16091255,19.70078125,2.30153385,19.70078125,1.22630879,19.70078125C1.05979592,19.70078225,0.95915839,19.507557249999998,1.06150547,19.37621125C2.20170925,17.91294925,6.80859325,12.00078105,6.80859325,12.00078105C6.80859325,12.00078105,2.20170895,6.08861255,1.06150535,4.62535116C0.95915839,4.49400586,1.05979592,4.30078125,1.22630879,4.30078125" fill="url(#master_svg1_1_2206)" fill-opacity="1"/><path d="M1.2218304,4.30078125C1.80748117,4.30078125,2.8085936499999997,4.30078125,2.8085936499999997,4.30078125C2.8085936499999997,4.30078125,6.91713095,9.57340385,8.33457615,11.39245895C8.61617515,11.753845250000001,8.61617515,12.24771595,8.33457565,12.60910225C6.91713095,14.42815825,2.8085936499999997,19.70078125,2.8085936499999997,19.70078125C2.8085936499999997,19.70078125,1.80748123,19.70078125,1.22183046,19.70078125C1.05531748,19.70078025,0.95915839,19.507557249999998,1.06150547,19.37621125C1.97724685,18.20100925,5.12910505,14.15612415,6.33457615,12.60910325C6.61617565,12.24771595,6.61617565,11.753845250000001,6.33457615,11.39245895C5.12910555,9.84543805,1.97724665,5.80055245,1.06150535,4.62535116C0.95915839,4.49400586,1.05531748,4.30078125,1.22183037,4.30078125" fill="url(#master_svg2_1_2198)" fill-opacity="1"/></svg> |
| | |
| | | import { naiveI18nOptions } from '@/utils' |
| | | import { darkTheme } from 'naive-ui' |
| | | import { useAppStore } from './store' |
| | | import Antd from 'ant-design-vue'; |
| | | // import 'ant-design-vue/dist/reset.css'; |
| | | |
| | | // 创建异步初始化 Promise - 这会让组件变成异步组件 |
| | | const initializationPromise = (async () => { |
| | |
| | | |
| | | // 注册模块 Vue-router |
| | | await installRouter(app) |
| | | |
| | | app.use(Antd) |
| | | |
| | | // 注册模块 指令/静态资源 |
| | | const modules = import.meta.glob<{ install: (app: App) => void }>('./modules/*.ts', { |
| | |
| | | return naiveI18nOptions[appStore.lang] ? naiveI18nOptions[appStore.lang] : naiveI18nOptions.enUS |
| | | }) |
| | | </script> |
| | | |
| | | <!-- :theme="appStore.colorMode === 'dark' ? darkTheme : null" --> |
| | | <template> |
| | | <n-config-provider |
| | | class="wh-full" |
| | | inline-theme-disabled |
| | | :theme="appStore.colorMode === 'dark' ? darkTheme : null" |
| | | :theme="null" |
| | | :locale="naiveLocale.locale" |
| | | :date-locale="naiveLocale.dateLocale" |
| | | :theme-overrides="appStore.theme" |
| | |
| | | </naive-provider> |
| | | </n-config-provider> |
| | | </template> |
| | | |
| | | <style lang="scss"> |
| | | @use './styles/robotaxi.scss'; |
| | | </style> |
| | |
| | | <template> |
| | | <n-popselect :value="appStore.lang" :options="options" trigger="click" @update:value="appStore.setAppLang"> |
| | | <CommonWrapper> |
| | | <icon-park-outline-translate /> |
| | | <icon-park-outline-translate class="color-[#fff]"/> |
| | | </CommonWrapper> |
| | | </n-popselect> |
| | | </template> |
| | |
| | | <template> |
| | | <n-card ref="wrapperRef" class="search-panel"> |
| | | <div ref="wrapperRef" class="search-panel"> |
| | | <n-grid :cols="cols" :collapsed="collapsed" :collapsed-rows="collapsedRows" x-gap="24" y-gap="16"> |
| | | <!-- 查询条件 --> |
| | | <slot /> |
| | |
| | | </div> |
| | | </n-gi> |
| | | </n-grid> |
| | | </n-card> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | align-items: center; |
| | | gap: 12px; |
| | | gap: 8px; |
| | | } |
| | | </style> |
| | |
| | | <n-el |
| | | class="h-full robotaxi-content" |
| | | :class="[ |
| | | appStore.layoutMode === 'full-content' ? 'p-0' : 'p-16px', |
| | | appStore.layoutMode === 'full-content' ? 'p-0' : 'p-12px', |
| | | ]" |
| | | style="background-color: var(--action-color);" |
| | | style="background-color: #F4F6F8" |
| | | > |
| | | <router-view |
| | | v-slot="{ Component, route }" |
| | |
| | | </script> |
| | | |
| | | <template> |
| | | <div |
| | | class="h-60px text-xl flex-center cursor-pointer gap-2 p-x-2" |
| | | @click="router.push('/')" |
| | | > |
| | | <!-- <svg-icons-logo class="text-1.5em" /> --> |
| | | <span |
| | | v-show="!hidenLogoText" |
| | | class="text-ellipsis overflow-hidden whitespace-nowrap" |
| | | >{{ name }}</span> |
| | | <div class="h-68px flex-center cursor-pointer gap-2 p-x-2" @click="router.push('/')"> |
| | | <img src="/favicon.svg" alt="logo" class="w-24px h-24px" /> |
| | | <span v-show="!hidenLogoText" class="text-ellipsis overflow-hidden whitespace-nowrap title">{{ name }}</span> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped></style> |
| | | <style scoped lang="scss"> |
| | | .title { |
| | | font-family: Alibaba PuHuiTi 2.0; |
| | | font-size: 13px; |
| | | font-weight: 600; |
| | | line-height: 24px; |
| | | display: flex; |
| | | align-items: center; |
| | | letter-spacing: normal; |
| | | color: #FFFFFF; |
| | | } |
| | | </style> |
| | |
| | | > |
| | | <n-avatar |
| | | round |
| | | class="cursor-pointer" |
| | | class="cursor-pointer w-[24px] h-[24px]" |
| | | :src="userInfo?.avatar" |
| | | > |
| | | <template #fallback> |
| | |
| | | class="cursor-pointer p-x-4 p-y-2 m-x-2px b b-[--divider-color] b-b-[#0000] rounded-[--border-radius]" |
| | | :class="[ |
| | | value === route.fullPath ? 'c-[--primary-color]' : 'c-[--text-color-2]', |
| | | value === route.fullPath ? 'bg-[#0000]' : 'bg-[--tab-color]', |
| | | value !== route.fullPath ? 'bg-[#0000]' : 'bg-[--tab-color]', |
| | | closable && 'p-r-2', |
| | | ]" |
| | | style="transition: box-shadow .3s var(--n-bezier), color .3s var(--n-bezier), background-color .3s var(--n-bezier), border-color .3s var(--n-bezier);" |
| | |
| | | nav-fixed |
| | | show-nav |
| | | show-sidebar |
| | | :nav-height="60" |
| | | :nav-height="36" |
| | | :tabbar-height="45" |
| | | :footer-height="40" |
| | | :sidebar-width="sidebarWidth" |
| | |
| | | |
| | | <template #nav-left> |
| | | <template v-if="appStore.isMobile"> |
| | | <Logo /> |
| | | <!-- <Logo /> --> |
| | | </template> |
| | | |
| | | <template v-else> |
| | | <div v-if="!hasHorizontalMenu || !hidenCollapaseButton" class="h-full flex-y-center gap-1 p-x-sm"> |
| | | <!-- <div v-if="!hasHorizontalMenu || !hidenCollapaseButton" class="h-full flex-y-center gap-1 p-x-sm"> |
| | | <CollapaseButton v-if="!hidenCollapaseButton" /> |
| | | <Breadcrumb v-if="!hasHorizontalMenu" /> |
| | | </div> |
| | | </div> --> |
| | | </template> |
| | | </template> |
| | | |
| | |
| | | { |
| | | name: 'workbench', |
| | | path: '/dashboard/workbench', |
| | | title: '工作台', |
| | | title: '首页', |
| | | requiresAuth: true, |
| | | icon: 'icon-park-outline:home', |
| | | pinTab: true, |
| | |
| | | "errorColor": "#E02716", |
| | | "errorColorHover": "#F14637", |
| | | "errorColorPressed": "#D02213", |
| | | "errorColorSuppl": "#FFF3F1" |
| | | } |
| | | "errorColorSuppl": "#FFF3F1", |
| | | "fontSize": "13px", |
| | | "textColorBase": "#171F26", |
| | | "heightMedium": "32px" |
| | | }, |
| | | "Form": { |
| | | "labelFontSizeLeftMedium": "13px", |
| | | "labelFontSizeTopMedium": "13px", |
| | | "labelTextColor": "#171F26" |
| | | }, |
| | | "DataTable": { |
| | | "fontSizeMedium": "13px", |
| | | "thTextColor": "#171F26", |
| | | "tdTextColor": "#171F26", |
| | | "borderColor": "#f3f4f4", |
| | | "tdPaddingMedium": "11px 16px", |
| | | "thPaddingMedium": "11px 16px", |
| | | "lineHeight": "18px" |
| | | }, |
| | | "Button": { |
| | | "fontSizeMedium": "13px", |
| | | "borderRadiusMedium": "4px" |
| | | }, |
| | | "Pagination": { |
| | | "itemFontSizeMedium": "13px", |
| | | "jumperFontSizeMedium": "13px" |
| | | }, |
| | | "Alert": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Anchor": { |
| | | "linkFontSize": "13px" |
| | | }, |
| | | "AutoComplete": { |
| | | "optionFontSizeMedium": "13px" |
| | | }, |
| | | "Avatar": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "AvatarGroup": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "BackTop": {}, |
| | | "Badge": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Breadcrumb": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "ButtonGroup": {}, |
| | | "Calendar": { |
| | | "fontSizeMedium": "13px", |
| | | "titleFontSizeMedium": "13px" |
| | | }, |
| | | "Card": { |
| | | "fontSizeMedium": "13px", |
| | | "titleFontSizeMedium": "13px" |
| | | }, |
| | | "Carousel": {}, |
| | | "Cascader": { |
| | | "optionFontSize": "13px" |
| | | }, |
| | | "Checkbox": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "Code": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Collapse": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "CollapseTransition": {}, |
| | | "ColorPicker": { |
| | | "fontSizeMedium": "13px", |
| | | "panelFontSize": "13px" |
| | | }, |
| | | "DatePicker": { |
| | | "itemFontSize": "13px", |
| | | "calendarDaysFontSize": "13px", |
| | | "calendarTitleFontSize": "13px" |
| | | }, |
| | | "Descriptions": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "Dialog": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Divider": {}, |
| | | "Drawer": { |
| | | "titleFontSize": "13px" |
| | | }, |
| | | "Dropdown": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "DynamicInput": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "DynamicTags": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "Element": {}, |
| | | "Ellipsis": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Empty": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "Equation": {}, |
| | | "Flex": {}, |
| | | "FloatButton": {}, |
| | | "FloatButtonGroup": {}, |
| | | "GradientText": {}, |
| | | "Icon": {}, |
| | | "IconWrapper": {}, |
| | | "Image": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Input": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "InputNumber": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "Layout": {}, |
| | | "LegacyTransfer": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "List": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "LoadingBar": {}, |
| | | "Log": { |
| | | "loaderFontSize": "13px" |
| | | }, |
| | | "Menu": { |
| | | "fontSize": "13px", |
| | | "itemTextColor": "#fff", |
| | | "itemTextColorHover": "#fff", |
| | | "itemTextColorActive": "#fff", |
| | | "itemTextColorActiveHover": "#fff", |
| | | "itemTextColorChildActive": "#fff", |
| | | "itemTextColorChildActiveHover": "#fff", |
| | | "itemIconColor": "rgba(255, 255, 255, 0.6)", |
| | | "itemIconColorHover": "rgba(255, 255, 255, 0.6)", |
| | | "itemIconColorActive": "rgba(255, 255, 255, 0.6)", |
| | | "itemIconColorActiveHover": "rgba(255, 255, 255, 0.6)", |
| | | "itemIconColorChildActive": "rgba(255, 255, 255, 0.6)", |
| | | "itemIconColorChildActiveHover": "rgba(255, 255, 255, 0.6)", |
| | | "itemIconColorCollapsed": "rgba(255, 255, 255, 0.6)", |
| | | "arrowColor": "rgba(255, 255, 255, 0.6)", |
| | | "arrowColorHover": "rgba(255, 255, 255, 0.6)", |
| | | "arrowColorActive": "rgba(255, 255, 255, 0.6)", |
| | | "arrowColorActiveHover": "rgba(255, 255, 255, 0.6)", |
| | | "arrowColorChildActive": "rgba(255, 255, 255, 0.6)", |
| | | "arrowColorChildActiveHover": "rgba(255, 255, 255, 0.6)", |
| | | "itemColorHover": "rgba(255, 255, 255, 0.1)", |
| | | "itemColorActive": "#2B3545", |
| | | "itemHeight": "48px" |
| | | }, |
| | | "Mention": { |
| | | "optionFontSizeMedium": "13px" |
| | | }, |
| | | "Message": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Modal": { |
| | | "fontSize": "13px", |
| | | "titleFontSize": "13px" |
| | | }, |
| | | "Notification": { |
| | | "fontSize": "13px", |
| | | "titleFontSize": "13px", |
| | | "metaFontSize": "13px", |
| | | "descriptionFontSize": "13px" |
| | | }, |
| | | "PageHeader": { |
| | | "fontSize": "13px", |
| | | "titleFontSize": "13px" |
| | | }, |
| | | "Popconfirm": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Popover": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Popselect": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Progress": { |
| | | "fontSize": "13px", |
| | | "fontSizeCircle": "13px" |
| | | }, |
| | | "QrCode": {}, |
| | | "Radio": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "Rate": {}, |
| | | "Result": { |
| | | "fontSizeMedium": "13px", |
| | | "titleFontSizeMedium": "13px" |
| | | }, |
| | | "Scrollbar": {}, |
| | | "Select": {}, |
| | | "Skeleton": {}, |
| | | "Slider": { |
| | | "fontSize": "13px", |
| | | "markFontSize": "13px" |
| | | }, |
| | | "Space": {}, |
| | | "Spin": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Statistic": { |
| | | "labelFontSize": "13px", |
| | | "valueFontSize": "13px" |
| | | }, |
| | | "Steps": { |
| | | "stepHeaderFontSizeMedium": "13px", |
| | | "indicatorIndexFontSizeMedium": "13px" |
| | | }, |
| | | "Switch": {}, |
| | | "Table": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "Tabs": { |
| | | "tabFontSizeCard": "13px", |
| | | "tabFontSizeMedium": "13px" |
| | | }, |
| | | "Tag": { |
| | | "fontSizeMedium": "12px", |
| | | "heightMedium": "20px", |
| | | "padding": "0px 8px", |
| | | "borderRadius": "4px", |
| | | "textColor": "#171F26", |
| | | "color": "#E8E9E9" |
| | | }, |
| | | "Thing": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "TimePicker": { |
| | | "itemFontSize": "13px" |
| | | }, |
| | | "Timeline": { |
| | | "titleFontSizeMedium": "13px", |
| | | "contentFontSize": "13px" |
| | | }, |
| | | "Tooltip": {}, |
| | | "Transfer": { |
| | | "titleFontSizeMedium": "13px", |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "Tree": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "TreeSelect": {}, |
| | | "Typography": { |
| | | "blockquoteFontSize": "13px", |
| | | "liFontSize": "13px", |
| | | "pFontSize": "13px", |
| | | "headerFontSize1": "13px", |
| | | "headerFontSize2": "13px", |
| | | "headerFontSize3": "13px", |
| | | "headerFontSize4": "13px", |
| | | "headerFontSize5": "13px", |
| | | "headerFontSize6": "13px" |
| | | }, |
| | | "Upload": { |
| | | "fontSize": "13px" |
| | | }, |
| | | "Watermark": {}, |
| | | "Split": {}, |
| | | "Row": {}, |
| | | "Marquee": {}, |
| | | "Heatmap": { |
| | | "fontSizeMedium": "13px" |
| | | }, |
| | | "InternalSelectMenu": { |
| | | "optionFontSizeMedium": "13px" |
| | | }, |
| | | "InternalSelection": { |
| | | "optionFontSizeMedium": "13px" |
| | | }, |
| | | "InputOtp": {} |
| | | } |
| New file |
| | |
| | | /* 页面列表样式 */ |
| | | .n-pro-layout__nav, |
| | | .n-pro-layout__aside, |
| | | .n-pro-layout__logo, |
| | | .n-pro-layout__sidebar { |
| | | background: #3D4C63; |
| | | border-right: none !important; |
| | | } |
| | | |
| | | .n-pro-layout__tabbar { |
| | | height: 40px !important; |
| | | border: none !important; |
| | | } |
| | | |
| | | .n-pro-layout__content { |
| | | margin-top: 76px !important; |
| | | } |
| | | |
| | | .n-pro-layout__logo { |
| | | height: 68px !important; |
| | | } |
| | | |
| | | .roboTaxi { |
| | | .roboTaxi-form-card { |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | padding: 16px; |
| | | gap: 16px; |
| | | align-self: stretch; |
| | | z-index: 0; |
| | | border-radius: 6px; |
| | | background: #FFFFFF; |
| | | box-shadow: 0px 0px 10px 0px rgba(23, 31, 38, 0.05); |
| | | } |
| | | |
| | | .search-panel { |
| | | button { |
| | | min-width: 84px; |
| | | } |
| | | |
| | | .n-button--secondary { |
| | | box-sizing: border-box; |
| | | border: 1px solid rgba(23, 31, 38, 0.15); |
| | | } |
| | | } |
| | | |
| | | .n-button--secondary { |
| | | box-sizing: border-box; |
| | | border: 1px solid #7ABDFF; |
| | | } |
| | | |
| | | .n-card { |
| | | border-radius: 6px; |
| | | } |
| | | |
| | | .n-card-header { |
| | | padding: 12px; |
| | | } |
| | | |
| | | .n-card__content { |
| | | padding: 12px; |
| | | padding-top: 0; |
| | | } |
| | | |
| | | .n-base-selection-input__content { |
| | | font-size: 13px; |
| | | } |
| | | } |
| | |
| | | const columns = computed<DataTableColumns<any>>(() => [ |
| | | { |
| | | title: '围栏ID', |
| | | align: 'center', |
| | | key: 'id', |
| | | resizable: true, |
| | | ellipsis: true |
| | | }, |
| | | { |
| | | title: '围栏名称', |
| | | align: 'center', |
| | | key: 'name', |
| | | ellipsis: true |
| | | resizable: true, |
| | | ellipsis: true, |
| | | render(row) { |
| | | return h( |
| | | 'div', |
| | | { |
| | | class: 'cursor-pointer text-ellipsis whitespace-nowrap w-full overflow-hidden text-[#0068FF]' |
| | | }, |
| | | { |
| | | default: () => row.name |
| | | } |
| | | ) |
| | | } |
| | | }, |
| | | { |
| | | title: '围栏构成', |
| | | align: 'center', |
| | | key: 'polygon', |
| | | resizable: true, |
| | | ellipsis: true |
| | | }, |
| | | { |
| | | title: '状态', |
| | | align: 'center', |
| | | key: 'status', |
| | | ellipsis: true, |
| | | resizable: true, |
| | | render(row) { |
| | | return h( |
| | | NTag, |
| | | { |
| | | style: { |
| | | marginRight: '6px' |
| | | }, |
| | | round: true, |
| | | type: row.status === 1 ? 'default' : row.status === 2 ? 'success' : 'info', |
| | | type: row.status === 1 || row.status === 3 ? 'default' : row.status === 2 ? 'success' : 'warning', |
| | | bordered: false |
| | | }, |
| | | { |
| | | default: () => row.status === 1 ? '草稿' : row.status === 2 ? '启用中' : '已停用' |
| | | default: () => row.status === 1 ? '草稿' : row.status === 2 ? '启用中' : row.status === 3 ? '已停用' : '待生效' |
| | | } |
| | | ) |
| | | } |
| | | }, |
| | | { |
| | | title: '更新人', |
| | | align: 'center', |
| | | key: 'updateUser', |
| | | ellipsis: true |
| | | ellipsis: true, |
| | | resizable: true |
| | | }, |
| | | { |
| | | title: '更新时间', |
| | | align: 'center', |
| | | key: 'updateTime', |
| | | ellipsis: true, |
| | | resizable: true, |
| | | sorter: true |
| | | }, |
| | | { |
| | | title: '创建人', |
| | | align: 'center', |
| | | key: 'createUser', |
| | | ellipsis: true |
| | | ellipsis: true, |
| | | resizable: true |
| | | }, |
| | | { |
| | | title: '创建时间', |
| | | align: 'center', |
| | | key: 'createTime', |
| | | ellipsis: true, |
| | | sorter: true |
| | | sorter: true, |
| | | resizable: true |
| | | }, |
| | | { |
| | | title: '操作', |
| | | align: 'center', |
| | | key: 'actions', |
| | | width: 260, |
| | | width: 100, |
| | | fixed: 'right', |
| | | render: (row) => { |
| | | return ( |
| | |
| | | <NButton |
| | | text |
| | | type="primary" |
| | | disabled={row.status === 2} |
| | | > |
| | | 复制 |
| | | </NButton> |
| | |
| | | { |
| | | label: '已停用', |
| | | value: 3, |
| | | }, |
| | | { |
| | | label: '待生效', |
| | | value: 4, |
| | | }, |
| | | ] |
| | | |
| | |
| | | updateUser: '张三', |
| | | createUser: '张三', |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '四川省成都市', |
| | | status: 3, |
| | | polygon: '1运营区域|2禁行区域', |
| | | createTime: '2023-01-01 10:00:00', |
| | | updateTime: '2023-01-01 10:00:00', |
| | | updateUser: '张三', |
| | | createUser: '张三', |
| | | }, |
| | | { |
| | | id: 2, |
| | | name: '四川省成都市', |
| | | status: 4, |
| | | polygon: '1运营区域|2禁行区域', |
| | | createTime: '2023-01-01 10:00:00', |
| | | updateTime: '2023-01-01 10:00:00', |
| | | updateUser: '张三', |
| | | createUser: '张三', |
| | | }, |
| | | ] |
| | | listData.value.forEach((item: any, index: number) => { |
| | | item.serialNumber = index + 1 |
| | | }) |
| | | count.value = 1 |
| | | count.value = listData.value.length |
| | | endLoading() |
| | | }, 1000) |
| | | } |
| | |
| | | </script> |
| | | |
| | | <template> |
| | | <n-flex> |
| | | <NSpace vertical class="flex-1"> |
| | | <n-card> |
| | | <n-flex class="roboTaxi"> |
| | | <NSpace vertical class="flex-1" :size="12"> |
| | | <div class="roboTaxi-form-card"> |
| | | <n-form ref="formRef" :model="model" label-placement="left" inline :show-feedback="false"> |
| | | <SearchPanel> |
| | | <n-gi v-for="item in filterItems" :key="item.path"> |
| | |
| | | </n-gi> |
| | | <template #action> |
| | | <NButton strong secondary @click="handleResetSearch"> |
| | | <template #icon> |
| | | <icon-park-outline-redo /> |
| | | </template> |
| | | {{ $t('common.reset') }} |
| | | </NButton> |
| | | <NButton type="primary" @click="getList"> |
| | | <template #icon> |
| | | <icon-park-outline-search /> |
| | | </template> |
| | | {{ $t('common.search') }} |
| | | </NButton> |
| | | </template> |
| | | </SearchPanel> |
| | | </n-form> |
| | | </n-card> |
| | | </div> |
| | | |
| | | <n-card class="flex-1"> |
| | | <template #header> |
| | | <NButton type="primary" @click="handleToDetail({}, 'add')"> |
| | | 新建围栏 |
| | | </NButton> |
| | | <n-flex justify="flex-end"> |
| | | <NButton type="primary" secondary @click="handleToDetail({}, 'add')"> |
| | | 新建围栏 |
| | | </NButton> |
| | | </n-flex> |
| | | </template> |
| | | <NSpace vertical> |
| | | <n-data-table :columns="columns" :data="listData" :loading="loading" /> |
| | | <n-data-table :columns="columns" :data="listData" :loading="loading" :bordered="false" :header-height="18" :row-height="18"/> |
| | | <Pagination :count="count" @change="changePage" /> |
| | | </NSpace> |
| | | </n-card> |
| | |
| | | <n-card> |
| | | <n-form ref="formRef" :model="model" label-placement="left" inline :show-feedback="false" |
| | | require-mark-placement="left"> |
| | | <NSpace vertical> |
| | | <n-spin :show="loading"> |
| | | <n-spin :show="loading"> |
| | | <NSpace vertical :size="16"> |
| | | <!-- 发单策略 --> |
| | | <NSpace vertical> |
| | | <NSpace vertical :size="16"> |
| | | <div class="text-base font-bold">发单策略</div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="用户取消订单" path="condition_1" required> |
| | |
| | | <template #trigger> |
| | | <icon-park-outline-help /> |
| | | </template> |
| | | 自然日(00:00~24:00)内用户取消订单数超过X单后,不播单 |
| | | 自然日(00:00~24:00)内用户取消订单数超过X单后,不播单 |
| | | </n-tooltip> |
| | | </n-form-item> |
| | | </div> |
| | |
| | | </div> |
| | | </NSpace> |
| | | <!-- 发单拦截策略 --> |
| | | <NSpace vertical> |
| | | <NSpace vertical :size="16"> |
| | | <div class="text-base font-bold">发单拦截策略</div> |
| | | <div class="pl-4"> |
| | | <n-form-item label="小额豁免配置" path="condition_1" /> |
| | | </div> |
| | | <NSpace vertical class="pl-20"> |
| | | <NSpace vertical class="pl-20" :size="16"> |
| | | <n-form-item label="金额上限" path="condition_1" required> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :precision="0" :show-button="false" |
| | | class="mr-2" />元内可豁免 |
| | | </n-form-item> |
| | | <n-form-item label="豁免城市" path="condition_1" required> |
| | | <PcaCascader v-model:value="model.condition_1" /> |
| | | <PcaCascader v-model:value="model.condition_1" class="w-[240px]" /> |
| | | </n-form-item> |
| | | <n-form-item label="豁免时效" path="condition_1" required> |
| | | <n-date-picker v-model:value="model.condition_1" type="daterange" clearable class="mr-2" /> |
| | | <n-date-picker v-model:value="model.condition_1" type="daterange" clearable class="mr-2 w-[240px]" /> |
| | | <n-checkbox v-model:checked="model.condition_2"> |
| | | 长期有效 |
| | | </n-checkbox> |
| | | </n-form-item> |
| | | <n-form-item label="豁免角色" path="condition_1" required> |
| | | <n-select v-model:value="model.condition_3" :options="options" multiple /> |
| | | <n-select v-model:value="model.condition_3" :options="options" multiple class="w-[240px]" /> |
| | | </n-form-item> |
| | | </NSpace> |
| | | <div class="pl-4"> |
| | | <n-form-item label="分级预付配置" path="condition_1" /> |
| | | </div> |
| | | <NSpace vertical class="pl-20"> |
| | | <NSpace vertical class="pl-20" :size="16"> |
| | | <n-form-item label="小额免密授权" path="condition_1"> |
| | | 订单> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mr-2" /> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mx-2" /> |
| | | 元,需免密授权 |
| | | </n-form-item> |
| | | <n-form-item label="预付" path="condition_1" required> |
| | | 订单> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mr-2" /> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mx-2" /> |
| | | 元,需预付 |
| | | </n-form-item> |
| | | </NSpace> |
| | | </NSpace> |
| | | <!-- 播单策略 --> |
| | | <NSpace vertical> |
| | | <NSpace vertical :size="16"> |
| | | <div class="text-base font-bold">播单策略</div> |
| | | <NSpace vertical class="pl-20"> |
| | | <NSpace vertical class="pl-20" :size="16"> |
| | | <n-form-item label="第一轮推单" path="condition_1" required> |
| | | 推单距离为 |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mr-2" /> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mx-2" /> |
| | | 公里,推单时间为 |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mr-2" /> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mx-2" /> |
| | | 秒 |
| | | </n-form-item> |
| | | <n-form-item label="第二轮推单" path="condition_1" required> |
| | | 推单距离为 |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mr-2" /> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mx-2" /> |
| | | 公里,推单时间为 |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mr-2" /> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mx-2" /> |
| | | 秒 |
| | | </n-form-item> |
| | | <n-form-item label="第三轮推单" path="condition_1" required> |
| | | 推单距离为 |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mr-2" /> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mx-2" /> |
| | | 公里,推单时间为 |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mr-2" /> |
| | | <n-input-number v-model:value="model.condition_1" min="0" :show-button="false" class="mx-2" /> |
| | | 秒 |
| | | </n-form-item> |
| | | </NSpace> |
| | | </NSpace> |
| | | <!-- 分单策略 --> |
| | | <NSpace vertical> |
| | | <NSpace vertical :size="16"> |
| | | <div class="text-base font-bold">分单策略</div> |
| | | <NSpace vertical class="pl-20"> |
| | | <NSpace vertical class="pl-20" :size="16"> |
| | | <n-form-item label="举手规则配置" path="condition_1" required> |
| | | <n-radio-group v-model:value="model.condition_1" name="radiobuttongroup1"> |
| | | <n-radio-button :value="1" label="单手举手" /> |
| | |
| | | 可同时抢单 |
| | | </n-form-item> |
| | | </NSpace> |
| | | <NSpace vertical class="pl-20"> |
| | | <NSpace vertical class="pl-20" :size="16"> |
| | | <n-form-item label="分单倾向配置" path="condition_1" required> |
| | | </n-form-item> |
| | | <div class="pl-30 w-[500px]"> |
| | |
| | | </div> |
| | | </NSpace> |
| | | </NSpace> |
| | | </n-spin> |
| | | </NSpace> |
| | | </NSpace> |
| | | </n-spin> |
| | | </n-form> |
| | | <NSpace justify="center" class="w-[50%] mt-12"> |
| | | <NButton type='primary'> |