| | |
| | | icon: 'icon-park-outline:bill', |
| | | menuType: 'page', |
| | | componentPath: '/system/financeBill/index.vue', |
| | | id: 204, |
| | | id: 2026061528, |
| | | keepAlive: true, |
| | | pid: 2, |
| | | fullScreen: true, |
| | |
| | | icon: 'icon-park-outline:tag-one', |
| | | menuType: 'page', |
| | | componentPath: '/system/evaluationTag/index.vue', |
| | | id: 205, |
| | | id: 2026061531, |
| | | keepAlive: true, |
| | | pid: 2, |
| | | fullScreen: true, |
| | |
| | | icon: 'icon-park-outline:file-text', |
| | | menuType: 'page', |
| | | componentPath: '/userContent/contentCenter/agreementAuthorizationRecord.vue', |
| | | id: 202642903, |
| | | id: 2026061536, |
| | | keepAlive: false, |
| | | pid: 302, |
| | | fullScreen: true, |
| | |
| | | icon: 'icon-park-outline:pic', |
| | | menuType: 'page', |
| | | componentPath: '/assetManagement/vehicleManagement/vehicleMaterial/index.vue', |
| | | id: 5014, |
| | | id: 2026061538, |
| | | keepAlive: false, |
| | | pid: 501, |
| | | }, |
| | |
| | | icon: 'icon-park-outline:list-view', |
| | | menuType: 'page', |
| | | componentPath: '/testDemo/testPlanManagement/index.vue', |
| | | id: 2026052901, |
| | | pid: 9, |
| | | id: 2026061519, |
| | | pid: 20260615, |
| | | }, |
| | | { |
| | | name: 'testPlanManagementAdd', |
| | |
| | | icon: 'icon-park-outline:list-view', |
| | | menuType: 'page', |
| | | componentPath: '/testDemo/testPlanManagement/add.vue', |
| | | id: 2026052902, |
| | | pid: 9, |
| | | id: 2026061512, |
| | | pid: 20260615, |
| | | hide: true, |
| | | fullScreen: true, |
| | | activeMenu: '/testDemo/testPlanManagement', |
| | |
| | | icon: 'icon-park-outline:list-view', |
| | | menuType: 'page', |
| | | componentPath: '/testDemo/testPlanManagement/detail.vue', |
| | | id: 2026052903, |
| | | pid: 9, |
| | | id: 2026061523, |
| | | pid: 20260615, |
| | | hide: true, |
| | | fullScreen: true, |
| | | activeMenu: '/testDemo/testPlanManagement', |
| | | }, |
| | | { |
| | | name: 'testDemo2.0', |
| | | path: '/testDemo', |
| | | title: '测试跑单demo2.0', |
| | | requiresAuth: true, |
| | | icon: 'icon-park-outline:analysis', |
| | | menuType: 'dir', |
| | | componentPath: null, |
| | | id: 20260615, |
| | | pid: null, |
| | | }, |
| | | { |
| | | name: 'testDemoOperationWorkbenchMap', |
| | |
| | | icon: 'icon-park-outline:alarm', |
| | | menuType: 'page', |
| | | componentPath: '/testDemo/operationWorkbench/map.vue', |
| | | id: 202642977, |
| | | id: 2026061501, |
| | | keepAlive: false, |
| | | pid: 9, |
| | | pid: 20260615, |
| | | fullScreen: true, |
| | | }, |
| | | { |
| | |
| | | icon: 'icon-park-outline:alarm', |
| | | menuType: 'page', |
| | | componentPath: '/testDemo/operationWorkbench/list.vue', |
| | | id: 202642978, |
| | | id: 2026061502, |
| | | keepAlive: true, |
| | | pid: 9, |
| | | pid: 20260615, |
| | | hide: true, |
| | | activeMenu: '/testDemo/operationWorkbench/map', |
| | | }, |
| | |
| | | } |
| | | |
| | | export function fetchAgreementAuthorizationRecordPageList(data: AgreementAuthorizationRecordPageParams) { |
| | | return request.Post<Service.ResponseResult<Service.PageData<AgreementAuthorizationRecordItem>>>('/operation/api/v1/mini-program/agreementAuthorizationRecord/pageList', data) |
| | | return request.Post<Service.ResponseResult<Service.PageData<AgreementAuthorizationRecordItem>>>('/operation/api/v1/agreementAuthorizationRecord/pageList', data) |
| | | } |
| | | |
| | | export function exportAgreementAuthorizationRecord(data: AgreementAuthorizationRecordPageParams) { |
| | | const method = request.Post('/operation/api/v1/mini-program/agreementAuthorizationRecord/exportExcel', data, { responseType: 'blob' }) |
| | | const method = request.Post('/operation/api/v1/agreementAuthorizationRecord/exportExcel', data, { responseType: 'blob' }) |
| | | method.meta = { ...method.meta, isBlob: true } |
| | | return method |
| | | } |
| | |
| | | title: '操作', |
| | | key: 'actions', |
| | | width: 120, |
| | | render: row => h('div', { class: 'flex items-center' }, [ |
| | | h(NButton, { |
| | | text: true, |
| | | type: 'primary', |
| | | onClick: () => handleEditTag(row), |
| | | }, { default: () => '编辑' }), |
| | | h(NButton, { |
| | | text: true, |
| | | type: 'primary', |
| | | class: 'ml-12px', |
| | | onClick: () => handleToggleStatus(row), |
| | | }, { default: () => Number(row.status) === 1 ? '停用' : '启用' }), |
| | | ]), |
| | | render: row => ( |
| | | <div class="flex items-center"> |
| | | <div> |
| | | <NButton |
| | | text |
| | | v-permission="2026061533" |
| | | type="primary" |
| | | onClick={() => handleEditTag(row)} |
| | | > |
| | | 编辑 |
| | | </NButton> |
| | | </div> |
| | | <div class="ml-12px"> |
| | | <NButton |
| | | text |
| | | v-permission="2026061534" |
| | | type="primary" |
| | | onClick={() => handleToggleStatus(row)} |
| | | > |
| | | {Number(row.status) === 1 ? '停用' : '启用'} |
| | | </NButton> |
| | | </div> |
| | | </div> |
| | | ), |
| | | }, |
| | | ] |
| | | }) |
| | |
| | | <n-card class="robotaxi-table-card" :bordered="false"> |
| | | <template #header> |
| | | <div class="flex items-center justify-end"> |
| | | <NButton type="primary" secondary @click="handleAddTag"> |
| | | <NButton type="primary" v-permission="2026061532" secondary @click="handleAddTag"> |
| | | 新增 |
| | | </NButton> |
| | | </div> |
| | |
| | | <NButton class="w-84px" @click="handleCancelChanges"> |
| | | 取消 |
| | | </NButton> |
| | | <NButton type="primary" class="w-84px" :loading="saving" @click="handleSave"> |
| | | <NButton v-permission="2026061535" type="primary" class="w-84px" :loading="saving" @click="handleSave"> |
| | | 保存 |
| | | </NButton> |
| | | </n-space> |
| | |
| | | width: 60, |
| | | fixed: 'right', |
| | | render: row => ( |
| | | <NButton text type="primary" onClick={() => handleOpenDetail(row.id)}> |
| | | <NButton text v-permission="2026061529" type="primary" onClick={() => handleOpenDetail(row.id)}> |
| | | 详情 |
| | | </NButton> |
| | | ), |
| | |
| | | <n-card class="flex-1 robotaxi-table-card" :bordered="false"> |
| | | <template #header> |
| | | <div class="flex items-center justify-end"> |
| | | <NButton type="primary" secondary @click="handleManualPush"> |
| | | <NButton type="primary" v-permission="2026061530" secondary @click="handleManualPush"> |
| | | 手动推送 |
| | | </NButton> |
| | | </div> |
| | |
| | | } |
| | | |
| | | function handlePointToDetail(row: any, type: 'detail' | 'edit') { |
| | | if (type === 'detail' && !hasPermission('202642925')) |
| | | if (type === 'detail' && !hasPermission('2026061509')) |
| | | return |
| | | const context = buildWorkbenchMapContext('point', type, row) |
| | | workbenchStore.setListContext({ |
| | |
| | | } |
| | | |
| | | function handleStationToMap(row: any, type: 'detail' | 'edit') { |
| | | if (type === 'detail' && !hasPermission('202642931')) |
| | | if (type === 'detail' && !hasPermission('2026061515')) |
| | | return |
| | | const context = buildWorkbenchMapContext('station', type, row) |
| | | workbenchStore.setListContext({ |
| | |
| | | } |
| | | }, |
| | | }) |
| | | } |
| | | function handleBatchExport() { |
| | | if (activeTab.value === 'station') { |
| | | handleStationBatchExport() |
| | | return |
| | | } |
| | | handlePointBatchExport() |
| | | } |
| | | |
| | | async function handlePointBatchExport() { |
| | |
| | | render(row) { |
| | | return ( |
| | | <NSpace> |
| | | <NButton v-permission="202642921" text type="primary" onClick={() => handleFenceToDetail(row, 'edit')}> |
| | | <NButton v-permission="2026061505" text type="primary" onClick={() => handleFenceToDetail(row, 'edit')}> |
| | | 编辑 |
| | | </NButton> |
| | | <NButton v-permission="202642922" text type="primary" disabled={row.status !== 3} onClick={() => handleFenceCopy(row)}> |
| | | <NButton v-permission="2026061506" text type="primary" disabled={row.status !== 3} onClick={() => handleFenceCopy(row)}> |
| | | 复制 |
| | | </NButton> |
| | | </NSpace> |
| | |
| | | const isEnabled = Number(row.status) === 2 |
| | | return ( |
| | | <NSpace wrap={false}> |
| | | <NButton v-permission="202642930" text type="primary" onClick={() => handleStationToMap(row, 'edit')}> |
| | | <NButton v-permission="2026061514" text type="primary" onClick={() => handleStationToMap(row, 'edit')}> |
| | | 编辑 |
| | | </NButton> |
| | | {isEnabled |
| | | ? ( |
| | | <NButton v-permission="202642933" text type="primary" onClick={() => handleStationDisable(row)}> |
| | | <NButton v-permission="2026061517" text type="primary" onClick={() => handleStationDisable(row)}> |
| | | 停用 |
| | | </NButton> |
| | | ) |
| | | : ( |
| | | <NButton v-permission="202642932" text type="primary" onClick={() => handleStationDelete(row)}> |
| | | <NButton v-permission="2026061516" text type="primary" onClick={() => handleStationDelete(row)}> |
| | | 删除 |
| | | </NButton> |
| | | )} |
| | |
| | | return ( |
| | | <NSpace wrap={false}> |
| | | <NButton |
| | | v-permission="202642924" |
| | | v-permission="2026061508" |
| | | text |
| | | type="primary" |
| | | disabled={!canOperate} |
| | |
| | | {isEnabled |
| | | ? ( |
| | | <NButton |
| | | v-permission="202642927" |
| | | v-permission="2026061511" |
| | | text |
| | | type="primary" |
| | | disabled={!canOperate} |
| | |
| | | ) |
| | | : ( |
| | | <NButton |
| | | v-permission="202642926" |
| | | v-permission="2026061510" |
| | | text |
| | | type="primary" |
| | | disabled={!canOperate} |
| | |
| | | 已选择{{ checkedRowKeys.length }}条记录 |
| | | </span> |
| | | <NButton |
| | | v-permission="202642928" |
| | | v-permission="2026061512" |
| | | :disabled="checkedRowKeys.length === 0" |
| | | @click="handlePointBatchExport" |
| | | @click="handleBatchExport" |
| | | > |
| | | 批量导出 |
| | | </NButton> |
| | |
| | | 已选择 {{ checkedRowKeys.length }} 条记录 |
| | | </span> |
| | | <NButton |
| | | v-permission="202642934" |
| | | v-permission="2026061518" |
| | | :disabled="checkedRowKeys.length === 0" |
| | | @click="handleStationBatchExport" |
| | | @click="handleBatchExport" |
| | | > |
| | | 批量导出 |
| | | </NButton> |
| | |
| | | </n-flex> |
| | | |
| | | <n-flex align="center"> |
| | | <NButton v-permission="202642919" @click="handleBackToMap"> |
| | | <NButton v-permission="2026061503" @click="handleBackToMap"> |
| | | 查看地图视图 |
| | | </NButton> |
| | | <NButton |
| | | v-if="activeTab === 'fence'" |
| | | v-permission="202642920" |
| | | v-permission="2026061504" |
| | | type="primary" |
| | | secondary |
| | | @click="handleCreate" |
| | |
| | | </NButton> |
| | | <NButton |
| | | v-else-if="activeTab === 'point'" |
| | | v-permission="202642923" |
| | | v-permission="2026061507" |
| | | type="primary" |
| | | secondary |
| | | @click="handleCreate" |
| | |
| | | <template #trigger> |
| | | <span> |
| | | <NButton |
| | | v-permission="202642929" |
| | | v-permission="2026061513" |
| | | type="primary" |
| | | secondary |
| | | :disabled="!!stationCreateDisabledReason" |
| | |
| | | const actions = [] |
| | | |
| | | if (row.status === 1) { // 待下发 |
| | | actions.push(<NButton text type="primary" onClick={() => handleEdit(row)}>编辑</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleDelete(row)}>删除</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleEdit(row)} v-permission="2026061522">编辑</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleDelete(row)} v-permission="2026061524">删除</NButton>) |
| | | } |
| | | if (row.status === 2) { // 测试中 |
| | | actions.push(<NButton text type="primary" onClick={() => handleDetail(row)}>详情</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleInterrupt(row)}>中断测试</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleDetail(row)} v-permission="2026061523">详情</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleInterrupt(row)} v-permission="2026061525">中断测试</NButton>) |
| | | } |
| | | if (row.status === 3) { // 已暂停 |
| | | actions.push(<NButton text type="primary" onClick={() => handleDetail(row)}>详情</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleClose(row)}>关闭测试</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleContinue(row)}>继续测试</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleDetail(row)} v-permission="2026061523">详情</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleClose(row)} v-permission="2026061526">关闭测试</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleContinue(row)} v-permission="2026061527">继续测试</NButton>) |
| | | } |
| | | if (row.status === 4 || row.status === 5) { // 已完成 / 关闭测试 |
| | | actions.push(<NButton text type="primary" onClick={() => handleDetail(row)}>详情</NButton>) |
| | | actions.push(<NButton text type="primary" onClick={() => handleDetail(row)} v-permission="2026061523">详情</NButton>) |
| | | } |
| | | |
| | | return ( |
| | |
| | | > |
| | | <template #header> |
| | | <n-flex justify="space-between"> |
| | | <NButton @click="handleOpenOperationLog"> |
| | | <NButton @click="handleOpenOperationLog" v-permission="2026061521"> |
| | | 操作日志 |
| | | </NButton> |
| | | <NButton type="primary" secondary style="background-color: #E6F4FF; border-color: #7ABDFF; color: #0068FF;" @click="handleAdd"> |
| | | <NButton type="primary" v-permission="2026061520" secondary style="background-color: #E6F4FF; border-color: #7ABDFF; color: #0068FF;" @click="handleAdd"> |
| | | 添加测试计划 |
| | | </NButton> |
| | | </n-flex> |
| | |
| | | <NCard class="flex-1 robotaxi-table-card" content-style="display: flex; flex-direction: column; flex: 1; min-height: 0;"> |
| | | <template #header> |
| | | <n-flex justify="flex-end" align="center"> |
| | | <NButton @click="handleExport"> |
| | | <NButton @click="handleExport" v-permission="2026061537"> |
| | | 导出 |
| | | </NButton> |
| | | </n-flex> |