| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | alt="no-data" |
| | | /> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | case '测试中': |
| | | return 'testing' |
| | | case '测试不通过': |
| | | case '失效': |
| | | case '已失效': |
| | | return 'test-fail' |
| | | case '可运营': |
| | | return 'test-pass' |
| | |
| | | { label: '待生效', value: 5 }, |
| | | { label: '启用中', value: 6 }, |
| | | { label: '已停用', value: 7 }, |
| | | { label: '失效', value: 8 }, |
| | | { label: '已失效', value: 8 }, |
| | | ] |
| | | |
| | | const conditionOptions = [ |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | return ( |
| | | <div class="flex-center py-12px"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style="width: 123px; height: 125px" |
| | | alt="no-data" |
| | | /> |
| | |
| | | {{ empty: ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style="width: 123px; height: 125px" |
| | | alt="no-data" |
| | | /> |
| | |
| | | let params: Record<string, any> = {} |
| | | if (checkedRowKeys.value.length > 0) { |
| | | params = { pointIds: checkedRowKeys.value } |
| | | } else { |
| | | } |
| | | else { |
| | | params = { |
| | | ...pointModel.value, |
| | | cityCode: buildQueryCityCode(pointModel.value.cityCode), |
| | |
| | | let params: Record<string, any> = {} |
| | | if (checkedRowKeys.value.length > 0) { |
| | | params = { ids: checkedRowKeys.value } |
| | | } else { |
| | | } |
| | | else { |
| | | params = { |
| | | cityCode: buildQueryCityCode(stationModel.value.cityCode), |
| | | stationNameOrNumber: stationModel.value.stationNameOrNumber || undefined, |
| | |
| | | placeholder="请选择" |
| | | clearable |
| | | multiple |
| | | max-tag-count="responsive" |
| | | max-tag-count="responsive" |
| | | onUpdate:show={(val: boolean) => isStationPointNumOpen.value = val} |
| | | > |
| | | {{ |
| | |
| | | placeholder="请选择" |
| | | clearable |
| | | multiple |
| | | max-tag-count="responsive" |
| | | max-tag-count="responsive" |
| | | onUpdate:show={(val: boolean) => isStationStatusOpen.value = val} |
| | | > |
| | | {{ |
| | |
| | | { |
| | | label: '点位ID', |
| | | path: 'pointNumber', |
| | | render: () => <NInput v-model:value={pointModel.value.pointNumber} placeholder="请输入" inputmode="numeric" allow-input={onlyAllowNumberInput} />, |
| | | render: () => <NInput v-model:value={pointModel.value.pointNumber} placeholder="请输入" inputmode="numeric" allow-input={onlyAllowNumberInput} />, |
| | | }, |
| | | { |
| | | label: '点位名称', |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | return ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | alt="no-data" |
| | | /> |
| | |
| | | } |
| | | |
| | | function handleSearch() { |
| | | if (!validateRange(model.value.minPointCount, model.value.maxPointCount, '关联点位')) return |
| | | if (!validateRange(model.value.minVehicleCount, model.value.maxVehicleCount, '关联车辆数')) return |
| | | if (!validateRange(model.value.minOrderCount, model.value.maxOrderCount, '测试订单数')) return |
| | | if (!validateRange(model.value.minPointCount, model.value.maxPointCount, '关联点位')) |
| | | return |
| | | if (!validateRange(model.value.minVehicleCount, model.value.maxVehicleCount, '关联车辆数')) |
| | | return |
| | | if (!validateRange(model.value.minOrderCount, model.value.maxOrderCount, '测试订单数')) |
| | | return |
| | | pageParams.value.pageNum = 1 |
| | | getList() |
| | | } |
| | |
| | | }, |
| | | }, |
| | | { |
| | | title: '操作', |
| | | title: '操作', |
| | | key: 'actions', |
| | | width: 200, |
| | | align: 'left', |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | alt="no-data" |
| | | /> |
| | |
| | | > |
| | | <template #header> |
| | | <n-flex justify="space-between"> |
| | | <NButton @click="handleOpenOperationLog" v-permission="2026061521"> |
| | | <NButton v-permission="2026061521" @click="handleOpenOperationLog"> |
| | | 操作日志 |
| | | </NButton> |
| | | <NButton type="primary" v-permission="2026061520" secondary style="background-color: #E6F4FF; border-color: #7ABDFF; color: #0068FF;" @click="handleAdd"> |
| | | <NButton v-permission="2026061520" type="primary" secondary style="background-color: #E6F4FF; border-color: #7ABDFF; color: #0068FF;" @click="handleAdd"> |
| | | 添加测试计划 |
| | | </NButton> |
| | | </n-flex> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '123px', height: '125px' }} |
| | | onError={(e: any) => { e.target.src = 'https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/9bed493b-a6aa-4ef6-ac10-7f67f5c6adc5.png' }} |
| | | /> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | return ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | onError={(e: any) => { e.target.src = noDataFallbackImg }} |
| | | /> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | empty: () => ( |
| | | <div class="flex-center"> |
| | | <img |
| | | :src="noDataImg" |
| | | src={noDataImg} |
| | | style={{ width: '50%' }} |
| | | /> |
| | | </div> |
| | |
| | | <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 v-permission="30131" @click="handleExport"> |
| | | <NButton v-permission="30131" @click="handleExport"> |
| | | 导出 |
| | | </NButton> |
| | | </n-flex> |