| | |
| | | |
| | | <!-- 航线 --> |
| | | <a-form-item label="执行航线" :wrapperCol="{offset: 12}" name="fileId"> |
| | | <router-link |
| | | :to="{name: 'select-plan'}" |
| | | @click="selectRoute" |
| | | > |
| | | <router-link :to="{ name: 'select-plan' }" @click="selectRoute"> |
| | | 选择航线 |
| | | </router-link> |
| | | </a-form-item> |
| | |
| | | </a-tooltip> |
| | | </div> |
| | | <div class="ml10 mt5" style="color: hsla(0,0%,100%,0.65);"> |
| | | <span><RocketOutlined/></span> |
| | | <span> |
| | | <RocketOutlined /> |
| | | </span> |
| | | <span class="ml5">{{ |
| | | Object.keys(EDeviceType)[Object.values(EDeviceType).indexOf(wayline.drone_model_key)] |
| | | }}</span> |
| | | <span class="ml10"><CameraFilled style="border-top: 1px solid; padding-top: -3px;"/></span> |
| | | <span class="ml10"> |
| | | <CameraFilled style="border-top: 1px solid; padding-top: -3px;" /> |
| | | </span> |
| | | <span class="ml5" v-for="payload in wayline.payload_model_keys" :key="payload.id"> |
| | | {{ Object.keys(EDeviceType)[Object.values(EDeviceType).indexOf(payload)] }} |
| | | </span> |
| | |
| | | |
| | | <!-- 设备 --> |
| | | <a-form-item label="执行设备" :wrapperCol="{offset: 12}" v-model:value="planForm.dockSn" name="dockSn"> |
| | | <router-link |
| | | :to="{name: 'select-plan'}" |
| | | @click="selectDevice" |
| | | >选择设备 |
| | | <router-link :to="{ name: 'select-plan' }" @click="selectDevice">选择设备 |
| | | </router-link> |
| | | </a-form-item> |
| | | <a-form-item v-if="planForm.dockSn" style="margin-top: -15px;"> |
| | |
| | | </a-tooltip> |
| | | </div> |
| | | <div class="ml10 mt5" style="color: hsla(0,0%,100%,0.65);"> |
| | | <span><RocketOutlined/></span> |
| | | <span> |
| | | <RocketOutlined /> |
| | | </span> |
| | | <span class="ml5">{{ dock.children?.nickname ?? 'No drone' }}</span> |
| | | </div> |
| | | </div> |
| | |
| | | <!-- 任务策略 --> |
| | | <a-form-item label="任务策略" name="taskType" class="plan-timer-form-item" :labelCol="{span: 23}" > |
| | | <div style="white-space: nowrap;"> |
| | | <a-radio-group v-model:value="planForm.taskType" button-style="solid" @change="taskTypeChange"> |
| | | <a-radio-group class="group_radio" v-model:value="planForm.taskType" button-style="solid" |
| | | @change="taskTypeChange"> |
| | | <a-radio-button v-for="type in TaskTypeOptions" :value="type.value" :key="type.value">{{ |
| | | type.label |
| | | }} |
| | |
| | | <!-- 单次定时- --> |
| | | <a-form-item label="执行时间" v-if="planForm.taskType === TaskType.Timed" name="executeSingleTime" |
| | | :labelCol="{span: 23}"> |
| | | <a-date-picker |
| | | v-model:value="planForm.executeSingleTime" |
| | | format="YYYY-MM-DD HH:mm" |
| | | valueFormat="YYYY-MM-DD HH:mm" |
| | | show-time |
| | | placeholder="请选择日期" |
| | | /> |
| | | <a-date-picker v-model:value="planForm.executeSingleTime" format="YYYY-MM-DD HH:mm" |
| | | valueFormat="YYYY-MM-DD HH:mm" show-time placeholder="请选择日期" /> |
| | | </a-form-item> |
| | | |
| | | <!--重复定时--> |
| | |
| | | <a-form-item v-if="planForm.taskType ===TaskType.RepeatTimed" label="执行时间" name="repeatTimeArr" |
| | | :labelCol="{span: 23}"> |
| | | <div v-for="(item ,index) in repeatTimeArr" :key="index"> |
| | | <a-time-picker style="background: black" v-model:value="item.value" placeholder="请选择时间" |
| | | format="HH:mm" valueFormat="HH:mm"/> |
| | | <a-time-picker style="background: black" v-model:value="item.value" placeholder="请选择时间" format="HH:mm" |
| | | valueFormat="HH:mm" /> |
| | | |
| | | <a-button @click="addTime" type="default" shape="circle" :size="btnSize"> |
| | | <template #icon> |
| | |
| | | <a-form-item v-if="planForm.taskType ===TaskType.Continuous" label="执行时间" name="repeatTimeArr" |
| | | :labelCol="{span: 23}"> |
| | | <div v-for="(item ,index) in repeatTimeArr" :key="index"> |
| | | <a-time-picker style="background: black" v-model:value="item.value[0]" placeholder="请选择时间" |
| | | format="HH:mm" valueFormat="HH:mm"/> |
| | | <a-time-picker style="background: black" v-model:value="item.value[0]" placeholder="请选择时间" format="HH:mm" |
| | | valueFormat="HH:mm" /> |
| | | <div style="color: white">-</div> |
| | | <a-time-picker style="background: black" v-model:value="item.value[1]" placeholder="请选择时间" |
| | | format="HH:mm" valueFormat="HH:mm"/> |
| | | <a-time-picker style="background: black" v-model:value="item.value[1]" placeholder="请选择时间" format="HH:mm" |
| | | valueFormat="HH:mm" /> |
| | | |
| | | <a-button @click="addTime" type="default" shape="circle" :size="btnSize"> |
| | | <template #icon> |
| | |
| | | label="重复频率" name="frequencyValue" :labelCol="{span: 23}"> |
| | | <div> |
| | | <div style="color: white">每</div> |
| | | <a-input style="background-color: black;" placeholder="请输入计划名称" |
| | | v-model:value="planForm.frequencyValue"/> |
| | | <a-input style="background-color: black;" placeholder="请输入计划名称" v-model:value="planForm.frequencyValue" /> |
| | | <a-select v-model:value="planForm.frequencyType" style="width: 200px" |
| | | :options="FrequencyTypeOptions"></a-select> |
| | | </div> |
| | |
| | | <!-- 相对机场返航高度 --> |
| | | <a-form-item label="相对机场返航高度(ALT)" :labelCol="{span: 23}" name="rthAltitude"> |
| | | <div class="form-alt"> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-',100)" @click="calculate('-',100)">-100</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-',10)" @click="calculate('-',10)">-10</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-',1)" @click="calculate('-',1)">-1</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-', 100)" |
| | | @click="calculate('-', 100)">-100</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-', 10)" |
| | | @click="calculate('-', 10)">-10</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('-', 1)" |
| | | @click="calculate('-', 1)">-1</a-button> |
| | | |
| | | <a-input class="alt-input" v-model:value="planForm.rthAltitude" :min="20" :max="1500" required/> |
| | | |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+',1)" @click="calculate('+',1)">+1</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+',10)" @click="calculate('+',10)">+10</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+',100)" @click="calculate('+',100)"> +100</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+', 1)" |
| | | @click="calculate('+', 1)">+1</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+', 10)" |
| | | @click="calculate('+', 10)">+10</a-button> |
| | | <a-button class="alt-btn" type="primary" size="small" :disabled="calculateDisabled('+', 100)" |
| | | @click="calculate('+', 100)"> +100</a-button> |
| | | </div> |
| | | |
| | | </a-form-item> |
| | |
| | | <a-form-item label="航线飞行中失联" :labelCol="{span: 23}" name="outOfControl"> |
| | | <div class="form-outOfControl" style="white-space: nowrap;"> |
| | | <a-radio-group v-model:value="planForm.outOfControl" button-style="solid"> |
| | | <a-radio-button v-for="action in OutOfControlActionOptions" :value="action.value" :key="action.value"> |
| | | <a-radio-button v-for="(action, acIndex) in OutOfControlActionOptions " :value="action.value" |
| | | :key="action.value" :style="{ marginRight: ( acIndex === 0 ? '10px' : '0px' ) }"> |
| | | {{ action.label }} |
| | | </a-radio-button> |
| | | </a-radio-group> |
| | |
| | | </div> |
| | | </div> |
| | | <div v-if="drawerVisible" |
| | | style="position: absolute; left: 335px; width: 280px; height: 100vh; float: right; top: 0; z-index: 1000; color: white; background: #282828;"> |
| | | style="position: absolute; left: 370px; width: 280px; height: 100vh; float: right; top: 0; z-index: 1000; color: white; background: #282828;"> |
| | | <div> |
| | | <router-view :name="routeName"/> |
| | | </div> |
| | |
| | | margin: 10px; |
| | | } |
| | | |
| | | form label, input, .ant-input, .ant-calendar-range-picker-separator, |
| | | .ant-input:hover, .ant-time-picker .anticon, .ant-calendar-picker .anticon { |
| | | form label, |
| | | input, |
| | | .ant-input, |
| | | .ant-calendar-range-picker-separator, |
| | | .ant-input:hover, |
| | | .ant-time-picker .anticon, |
| | | .ant-calendar-picker .anticon { |
| | | background-color: #232323; |
| | | color: #fff; |
| | | } |
| | |
| | | color: #fff; |
| | | width: 23%; |
| | | text-align: center; |
| | | padding: 0; |
| | | |
| | | &.ant-radio-button-wrapper-checked { |
| | | background-color: #1890ff; |
| | | } |
| | | } |
| | | |
| | | .group_radio { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | } |
| | | } |
| | | } |
| | |
| | | .alt-btn{ |
| | | margin: 0 2px 0 2px ; |
| | | width: 45px; |
| | | padding: 0 4px; |
| | | } |
| | | |
| | | .alt-input{ |
| | | width: 50px; |
| | | padding: 0; |
| | | text-align: center; |
| | | } |
| | | } |
| | | |