飞行任务修改

main
徐景良 4 weeks ago
parent 1956a0bc77
commit 9a670c511d

@ -17,7 +17,7 @@
>
<div class="group-container">
<a-form-item ref="name" label="计划名称" name="taskName">
<a-input v-model:value="submitForm.taskName" placeholder="请输入计划名称" />
<a-input v-model:value="submitForm.taskName" placeholder="请输入计划名称" :disabled="props.workPlanStatus === 'detail'" />
</a-form-item>
</div>
@ -35,7 +35,7 @@
<a-form-item ref="workspaceId" label="选择项目" name="workspaceId">
<div class="">
<a-select v-model:value="submitForm.workspaceId" placeholder="请选择所属项目">
<a-select v-model:value="submitForm.workspaceId" placeholder="请选择所属项目" :disabled="props.workPlanStatus === 'detail'" >
<a-select-option
v-for="(item, index) in workspaceList"
:key="index"
@ -60,7 +60,7 @@
<div class="select-item" v-show="submitForm.airLineId">
<div class="item-name">{{ submitForm.taskAirLineName }}</div>
<div class="item-operate" @click="selectAriLine">
<div class="item-operate" @click="props.workPlanStatus =='create' ? selectAriLine() : null" :style="{'cursor' : props.workPlanStatus =='create' ? '' : 'not-allowed'}">
<MoreOutlined />
<a-dropdown v-if="false">
<MoreOutlined />
@ -96,7 +96,7 @@
<div class="select-item" v-show="submitForm.taskDronePort">
<div class="item-name">{{ submitForm.taskDronePortName }}</div>
<div class="item-operate" @click="selectAircraft">
<div class="item-operate" @click="props.workPlanStatus =='create' ? selectAircraft() : null" :style="{'cursor' : props.workPlanStatus =='create' ? '' : 'not-allowed'}">
<MoreOutlined />
</div>
</div>
@ -115,7 +115,7 @@
:class="
submitForm.waylinePrecisionType == item.value ? 'radio-item-active' : 'radio-item'
"
@click="submitForm.waylinePrecisionType = item.value"
@click="props.workPlanStatus =='create' ? submitForm.waylinePrecisionType = item.value : null" :style="{'cursor' : props.workPlanStatus =='create' ? '' : 'not-allowed'}"
>
{{ item.label }}
</div>
@ -128,7 +128,7 @@
v-for="(item, index) in periodicFormulaOptions"
:key="index"
:class="submitForm.taskType == item.value ? 'radio-item-active' : 'radio-item'"
@click="submitForm.taskType = item.value"
@click="props.workPlanStatus =='create' ? submitForm.taskType = item.value : null" :style="{'cursor' : props.workPlanStatus =='create' ? '' : 'not-allowed'}"
>
{{ item.label }}
</div>
@ -145,6 +145,7 @@
show-time
placeholder="选择时间"
@change="onOnceTimeChange"
:disabled="props.workPlanStatus === 'detail'"
/>
</a-form-item>
@ -156,6 +157,7 @@
valueFormat="YYYY-M-D"
style="width: 100%"
@change="onRepeatDateChange"
:disabled="props.workPlanStatus === 'detail'"
/>
</a-form-item>
@ -166,6 +168,7 @@
valueFormat="H:m:s"
style="width: 100%"
@change="onRepeatTimeChange"
:disabled="props.workPlanStatus === 'detail'"
/>
</a-form-item>
@ -180,6 +183,7 @@
ref="select"
v-model:value="repeatTime.type"
@change="handleRepeatTypeChange"
:disabled="props.workPlanStatus === 'detail'"
>
<a-select-option value="date"></a-select-option>
<!-- <a-select-option value="week"></a-select-option> -->
@ -204,14 +208,44 @@
<div style="flex: 1">智能巡检</div>
<div>
<a-switch
v-model:checked="submitForm.aiInspection"
:checked="submitForm.aiInspection == 'true'"
checked-color="#3A57E8"
un-checked-color="#cccccc"
@change="changeAiInspection"
:disabled="props.workPlanStatus === 'detail'"
/>
</div>
</div>
<div v-if="submitForm.aiInspection == 'true'">
<a-form-item ref="algoInstanceld" label="选择AI算法实例" name="algoInstanceld">
<div class="">
<a-select v-model:value="submitForm.algoInstanceld" placeholder="请选择所属项目" :disabled="props.workPlanStatus === 'detail'" >
<a-select-option
v-for="(item, index) in aiList"
:key="index"
:value="item.id"
>
{{ item.displayScheme }}
</a-select-option>
</a-select>
</div>
</a-form-item>
<a-form-item ref="name" label="警告提示标题" name="">
<a-input v-model:value="submitForm.warningTitle" placeholder="请输入警告提示标题" :disabled="props.workPlanStatus === 'detail'" />
</a-form-item>
<a-form-item ref="name" label="警告提示内容" name="">
<a-textarea rows="4" v-model:value="submitForm.warningContent" style="resize: none;" placeholder="请输入警告提示内容" :disabled="props.workPlanStatus === 'detail'" />
</a-form-item>
</div>
</div>
<div class="group-container">
<a-form-item ref="outOfContact" label="返航高度(相对机场返航高度)" name="outOfContact">
<div class="return-height">
<div @click="submitForm.returnAltitude -= 100">-100</div>
@ -223,6 +257,7 @@
size="small"
v-model:value="submitForm.returnAltitude"
style="width: 40px"
:disabled="props.workPlanStatus === 'detail'"
></a-input>
</div>
<div>m</div>
@ -240,7 +275,7 @@
:class="
submitForm.lossOfControlAction == item.value ? 'radio-item-active' : 'radio-item'
"
@click="submitForm.lossOfControlAction = item.value"
@click="props.workPlanStatus =='create' ? submitForm.lossOfControlAction = item.value : null" :style="{'cursor' : props.workPlanStatus =='create' ? '' : 'not-allowed'}"
>
{{ item.label }}
</div>
@ -260,7 +295,8 @@
:class="
submitForm.continuationMode == item.value ? 'radio-item-active' : 'radio-item'
"
@click="submitForm.continuationMode = item.value"
@click="props.workPlanStatus =='create' ? submitForm.continuationMode = item.value : null" :style="{'cursor' : props.workPlanStatus =='create' ? '' : 'not-allowed'}"
>
{{ item.label }}
</div>
@ -342,6 +378,7 @@
import axios from 'axios';
import JSZip from 'jszip';
import { GetMediaFile } from '@/api/demo/mediaLibrary';
import {GetAlgoInstanceList} from '@/api/demo/aiinstance';
import { XMLParser, XMLBuilder } from 'fast-xml-parser';
import { Modal, message } from 'ant-design-vue';
import { useRoute, useRouter } from 'vue-router';
@ -376,7 +413,6 @@
returnAltitude: 100,
lossOfControlAction: 1,
continuationMode: 0,
aiInspection: null,
status: 0,
periodicFormula: null,
airLineId: null,
@ -395,6 +431,10 @@
flightId: null,
reason: null,
externalTaskId: null,
aiInspection: null, // ai
algoInstanceld:null,
warningTitle:null,
warningContent:null,
}),
},
editMode: {
@ -418,7 +458,6 @@
returnAltitude: 20,
lossOfControlAction: 1,
continuationMode: 0,
aiInspection: null,
status: 0,
periodicFormula: null,
airLineId: null,
@ -437,6 +476,10 @@
flightId: null,
reason: null,
externalTaskId: null,
aiInspection: null, // ai
algoInstanceld:null,
warningTitle:null,
warningContent:null,
});
// workspace
@ -444,6 +487,7 @@
const loadWorkspaceList = async () => {
let res = await getWorkspaceList({ isjoin: 0 });
workspaceList.value = res;
if (res) {
@ -454,6 +498,20 @@
loadWorkspaceList();
// AI
const aiList = ref([]);
const loadAIList = async()=>{
let res = await GetAlgoInstanceList({page:1,size:999});
aiList.value = res.items;
console.log("aiLlist",aiList.value,)
}
loadAIList();
const weekdays = ref([
{
label: '周日',
@ -737,6 +795,7 @@
taskName: [{ required: true, message: '计划名称不能为空!', trigger: 'blur' }],
workspaceId: [{ required: true, message: '请选择项目!', trigger: 'blur' }],
onceTime: [{ required: true, message: '时间不能为空!', trigger: 'blur' }],
algoInstanceld:[{ required: true, message: '算法实例不能为空!', trigger: 'blur' }]
};
const onSubmit = async () => {
@ -759,7 +818,8 @@
if (props.formData) {
//
let data = { ...submitForm.value, ...patrol.value };
// let data = { ...submitForm.value, ...patrol.value };
let data = { ...submitForm.value };
// let res = editTask(data);
addTask(data).then((res) => {
@ -775,9 +835,9 @@
submitForm.value.externalTaskId = paramValue;
}
//
const query = {
...submitForm.value,
...patrol.value,
};
addTask(query).then((res) => {
@ -921,7 +981,8 @@
const changeAiInspection = (val) => {
if (val) {
emit('intelligentPatrol');
submitForm.value.aiInspection = 'true';
// emit('intelligentPatrol');
}else{
submitForm.value.aiInspection = null;
}

@ -46,7 +46,8 @@
></createWorkPlan>
</div>
<!-- 智能巡检 -->
<div class="patrol-box" v-if="patrolShow">
<!-- v-if="patrolShow" -->
<div class="patrol-box" v-if="false">
<Patrol type="plan" @changePatrol="patrolShow = false"/>
</div>
@ -243,7 +244,9 @@ const checkDronePort = (item)=>{
const toCreateWorkPlan = (data)=> {
formData.value = data;
if(data){
formData.value = data;
}
workPlanFormShow.value = true;
if(data){
workPlanStatus.value = "edit"

@ -0,0 +1,67 @@
// vite.config.ts
import { defineApplicationConfig } from "file:///E:/projects/DiKongGanZhiPingTai/internal/vite-config/dist/index.mjs";
import { mars3dPlugin } from "file:///E:/projects/DiKongGanZhiPingTai/node_modules/.pnpm/registry.npmmirror.com+vite-plugin-mars3d@3.1.3_rollup@2.79.2/node_modules/vite-plugin-mars3d/dist/index.js";
var vite_config_default = defineApplicationConfig({
overrides: {
optimizeDeps: {
include: [
"echarts/core",
"echarts/charts",
"echarts/components",
"echarts/renderers",
"qrcode",
"@iconify/iconify",
"ant-design-vue/es/locale/zh_CN",
"ant-design-vue/es/locale/en_US",
"@/../lib/vform/designer.umd.js"
]
},
build: {
/* 其他build生产打包配置省略 */
//...
target: "esnext",
commonjsOptions: {
include: [/node_modules|lib/, /node_modules|packages/]
//这里记得把lib目录加进来否则生产打包会报错
}
},
server: {
proxy: {
"/basic-api": {
target: "http://localhost:3000",
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/basic-api`), "")
// only https
// secure: false
},
"/upload": {
target: "http://localhost:3300/upload",
changeOrigin: true,
ws: true,
rewrite: (path) => path.replace(new RegExp(`^/upload`), "")
}
},
warmup: {
clientFiles: ["./index.html", "./src/{views,components}/*"]
}
},
define: {
"process.env": {
BASE_URL: "/"
}
},
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true
}
}
},
plugins: [mars3dPlugin()]
}
});
export {
vite_config_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJFOlxcXFxwcm9qZWN0c1xcXFxEaUtvbmdHYW5aaGlQaW5nVGFpXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJFOlxcXFxwcm9qZWN0c1xcXFxEaUtvbmdHYW5aaGlQaW5nVGFpXFxcXHZpdGUuY29uZmlnLnRzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9FOi9wcm9qZWN0cy9EaUtvbmdHYW5aaGlQaW5nVGFpL3ZpdGUuY29uZmlnLnRzXCI7aW1wb3J0IHsgZGVmaW5lQXBwbGljYXRpb25Db25maWcgfSBmcm9tICdAdmJlbi92aXRlLWNvbmZpZyc7XG5pbXBvcnQgeyBtYXJzM2RQbHVnaW4gfSBmcm9tICd2aXRlLXBsdWdpbi1tYXJzM2QnO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVBcHBsaWNhdGlvbkNvbmZpZyh7XG4gIG92ZXJyaWRlczoge1xuICAgIG9wdGltaXplRGVwczoge1xuICAgICAgaW5jbHVkZTogW1xuICAgICAgICAnZWNoYXJ0cy9jb3JlJyxcbiAgICAgICAgJ2VjaGFydHMvY2hhcnRzJyxcbiAgICAgICAgJ2VjaGFydHMvY29tcG9uZW50cycsXG4gICAgICAgICdlY2hhcnRzL3JlbmRlcmVycycsXG4gICAgICAgICdxcmNvZGUnLFxuICAgICAgICAnQGljb25pZnkvaWNvbmlmeScsXG4gICAgICAgICdhbnQtZGVzaWduLXZ1ZS9lcy9sb2NhbGUvemhfQ04nLFxuICAgICAgICAnYW50LWRlc2lnbi12dWUvZXMvbG9jYWxlL2VuX1VTJyxcbiAgICAgICAgJ0AvLi4vbGliL3Zmb3JtL2Rlc2lnbmVyLnVtZC5qcycsXG4gICAgICBdLFxuICAgIH0sXG4gICAgYnVpbGQ6IHtcbiAgICAgIC8qIFx1NTE3Nlx1NEVENmJ1aWxkXHU3NTFGXHU0RUE3XHU2MjUzXHU1MzA1XHU5MTREXHU3RjZFXHU3NzAxXHU3NTY1ICovXG4gICAgICAvLy4uLlxuICAgICAgdGFyZ2V0OiAnZXNuZXh0JyxcbiAgICAgIGNvbW1vbmpzT3B0aW9uczoge1xuICAgICAgICBpbmNsdWRlOiBbL25vZGVfbW9kdWxlc3xsaWIvLCAvbm9kZV9tb2R1bGVzfHBhY2thZ2VzL10sIC8vXHU4RkQ5XHU5MUNDXHU4QkIwXHU1Rjk3XHU2MjhBbGliXHU3NkVFXHU1RjU1XHU1MkEwXHU4RkRCXHU2NzY1XHVGRjBDXHU1NDI2XHU1MjE5XHU3NTFGXHU0RUE3XHU2MjUzXHU1MzA1XHU0RjFBXHU2MkE1XHU5NTE5XHVGRjAxXHVGRjAxXG4gICAgICB9LFxuICAgIH0sXG4gICAgc2VydmVyOiB7XG4gICAgICBwcm94eToge1xuICAgICAgICAnL2Jhc2ljLWFwaSc6IHtcbiAgICAgICAgICB0YXJnZXQ6ICdodHRwOi8vbG9jYWxob3N0OjMwMDAnLFxuICAgICAgICAgIGNoYW5nZU9yaWdpbjogdHJ1ZSxcbiAgICAgICAgICB3czogdHJ1ZSxcbiAgICAgICAgICByZXdyaXRlOiAocGF0aCkgPT4gcGF0aC5yZXBsYWNlKG5ldyBSZWdFeHAoYF4vYmFzaWMtYXBpYCksICcnKSxcbiAgICAgICAgICAvLyBvbmx5IGh0dHBzXG4gICAgICAgICAgLy8gc2VjdXJlOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICAnL3VwbG9hZCc6IHtcbiAgICAgICAgICB0YXJnZXQ6ICdodHRwOi8vbG9jYWxob3N0OjMzMDAvdXBsb2FkJyxcbiAgICAgICAgICBjaGFuZ2VPcmlnaW46IHRydWUsXG4gICAgICAgICAgd3M6IHRydWUsXG4gICAgICAgICAgcmV3cml0ZTogKHBhdGgpID0+IHBhdGgucmVwbGFjZShuZXcgUmVnRXhwKGBeL3VwbG9hZGApLCAnJyksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgd2FybXVwOiB7XG4gICAgICAgIGNsaWVudEZpbGVzOiBbJy4vaW5kZXguaHRtbCcsICcuL3NyYy97dmlld3MsY29tcG9uZW50c30vKiddLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlZmluZToge1xuICAgICAgJ3Byb2Nlc3MuZW52Jzoge1xuICAgICAgICBCQVNFX1VSTDogJy8nLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGNzczoge1xuICAgICAgcHJlcHJvY2Vzc29yT3B0aW9uczoge1xuICAgICAgICBsZXNzOiB7XG4gICAgICAgICAgamF2YXNjcmlwdEVuYWJsZWQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgcGx1Z2luczogW21hcnMzZFBsdWdpbigpXSxcbiAgfSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFxUixTQUFTLCtCQUErQjtBQUM3VCxTQUFTLG9CQUFvQjtBQUU3QixJQUFPLHNCQUFRLHdCQUF3QjtBQUFBLEVBQ3JDLFdBQVc7QUFBQSxJQUNULGNBQWM7QUFBQSxNQUNaLFNBQVM7QUFBQSxRQUNQO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLFFBQ0E7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0EsT0FBTztBQUFBO0FBQUE7QUFBQSxNQUdMLFFBQVE7QUFBQSxNQUNSLGlCQUFpQjtBQUFBLFFBQ2YsU0FBUyxDQUFDLG9CQUFvQix1QkFBdUI7QUFBQTtBQUFBLE1BQ3ZEO0FBQUEsSUFDRjtBQUFBLElBQ0EsUUFBUTtBQUFBLE1BQ04sT0FBTztBQUFBLFFBQ0wsY0FBYztBQUFBLFVBQ1osUUFBUTtBQUFBLFVBQ1IsY0FBYztBQUFBLFVBQ2QsSUFBSTtBQUFBLFVBQ0osU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRLElBQUksT0FBTyxhQUFhLEdBQUcsRUFBRTtBQUFBO0FBQUE7QUFBQSxRQUcvRDtBQUFBLFFBQ0EsV0FBVztBQUFBLFVBQ1QsUUFBUTtBQUFBLFVBQ1IsY0FBYztBQUFBLFVBQ2QsSUFBSTtBQUFBLFVBQ0osU0FBUyxDQUFDLFNBQVMsS0FBSyxRQUFRLElBQUksT0FBTyxVQUFVLEdBQUcsRUFBRTtBQUFBLFFBQzVEO0FBQUEsTUFDRjtBQUFBLE1BQ0EsUUFBUTtBQUFBLFFBQ04sYUFBYSxDQUFDLGdCQUFnQiw0QkFBNEI7QUFBQSxNQUM1RDtBQUFBLElBQ0Y7QUFBQSxJQUNBLFFBQVE7QUFBQSxNQUNOLGVBQWU7QUFBQSxRQUNiLFVBQVU7QUFBQSxNQUNaO0FBQUEsSUFDRjtBQUFBLElBQ0EsS0FBSztBQUFBLE1BQ0gscUJBQXFCO0FBQUEsUUFDbkIsTUFBTTtBQUFBLFVBQ0osbUJBQW1CO0FBQUEsUUFDckI7QUFBQSxNQUNGO0FBQUEsSUFDRjtBQUFBLElBQ0EsU0FBUyxDQUFDLGFBQWEsQ0FBQztBQUFBLEVBQzFCO0FBQ0YsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
Loading…
Cancel
Save