| | |
| | | |
| | | <div class="search-bar-box-item search-btn"> |
| | | <el-button type="primary" icon="el-icon-search" @click="handleSearch" |
| | | >搜索</el-button |
| | | >搜索</el-button |
| | | > |
| | | <el-button icon="el-icon-refresh" @click="handleReset">清空</el-button> |
| | | </div> |
| | |
| | | type="primary" |
| | | icon="el-icon-plus" |
| | | @click="handleAdd" |
| | | >新建工单</el-button |
| | | >新建工单</el-button |
| | | > |
| | | <el-button type="success" plain icon="el-icon-download" @click="exportData" |
| | | >导出</el-button |
| | | >导出</el-button |
| | | > |
| | | </template> |
| | | |
| | |
| | | type="text" |
| | | icon="el-icon-view" |
| | | @click="handleCheckDetail(row)" |
| | | >审核</el-button |
| | | >审核</el-button |
| | | > |
| | | </template> |
| | | <!-- v-if=" |
| | |
| | | icon="el-icon-warning" |
| | | v-if="hasRecallPaddingBtnPermission()" |
| | | @click="orderLogRecall(row.id)" |
| | | >撤回</el-button |
| | | >撤回</el-button |
| | | > |
| | | <!-- <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)">详情</el-button> --> |
| | | </template> |
| | | <!--已驳回--> |
| | | <template v-if="row.status == 2"> |
| | | <el-button type="text" icon="el-icon-warning" @click="rejectDetail(row.id)" |
| | | >驳回原因</el-button |
| | | >驳回原因</el-button |
| | | > |
| | | <el-button |
| | | v-if="userInfo.user_id == row.create_user" |
| | | type="text" |
| | | icon="el-icon-view" |
| | | @click="handleViewDetail(row)" |
| | | >编辑</el-button |
| | | >编辑</el-button |
| | | > |
| | | <el-button v-else type="text" icon="el-icon-view" @click="handleViewDetail(row)" |
| | | >详情</el-button |
| | | >详情</el-button |
| | | > |
| | | </template> |
| | | <!-- 已通过 --> |
| | | <template v-if="row.status == 3"> |
| | | <el-button type="text" icon="el-icon-view" @click="handleViewDetail(row)" |
| | | >详情</el-button |
| | | >详情</el-button |
| | | > |
| | | </template> |
| | | <!--草稿--> |
| | | <template v-if="row.status == 0"> |
| | | <el-button type="text" icon="el-icon-edit" @click="handleViewDetail(row)" |
| | | >编辑</el-button |
| | | >编辑</el-button |
| | | > |
| | | <el-button type="text" icon="el-icon-position" @click="userPublishPush(row.id)" |
| | | >发布</el-button |
| | | >发布</el-button |
| | | > |
| | | <el-button type="text" icon="el-icon-delete" @click="deleteOrderLog(row.id)" |
| | | >删除</el-button |
| | | >删除</el-button |
| | | > |
| | | </template> |
| | | </div> |
| | |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-col :span="6"> |
| | | <el-form-item label="关联航线" prop="file_id"> |
| | | <el-select |
| | | v-model="form.file_id" |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="6">--> |
| | | <!-- <el-form-item label="安全返航真高" prop="rth_altitude">--> |
| | | <!-- <el-input-number--> |
| | | <!-- v-model="form.rth_altitude"--> |
| | | <!-- :min="30"--> |
| | | <!-- :max="300"--> |
| | | <!-- ></el-input-number>--> |
| | | <!-- </el-form-item>--> |
| | | <!-- </el-col>--> |
| | | <el-col :span="6"> |
| | | <el-form-item label="安全返航真高" prop="rth_altitude"> |
| | | <el-input-number |
| | | v-model="form.rth_altitude" |
| | | :min="50" |
| | | :max="300" |
| | | ></el-input-number> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row :gutter="20"> |
| | | <el-col :span="12"> |
| | |
| | | </el-col> |
| | | </el-row> |
| | | |
| | | <!-- <el-row>--> |
| | | <!-- <div class="add-box-btns">--> |
| | | <!-- <el-button type="danger" @click="submitForm(1)">发起</el-button>--> |
| | | <!-- <el-button type="primary" @click="submitForm(0)">存草稿</el-button>--> |
| | | <!-- <el-button @click="dialogVisible = false">取消</el-button>--> |
| | | <!-- </div>--> |
| | | <!-- </el-row>--> |
| | | <!-- <el-row>--> |
| | | <!-- <div class="add-box-btns">--> |
| | | <!-- <el-button type="danger" @click="submitForm(1)">发起</el-button>--> |
| | | <!-- <el-button type="primary" @click="submitForm(0)">存草稿</el-button>--> |
| | | <!-- <el-button @click="dialogVisible = false">取消</el-button>--> |
| | | <!-- </div>--> |
| | | <!-- </el-row>--> |
| | | </el-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | |
| | | >驳回</el-button |
| | | > |
| | | </div> |
| | | </template> |
| | | </template> |
| | | </el-dialog> |
| | | |
| | | <!-- 工单详情 --> |
| | |
| | | |
| | | </el-form> |
| | | <template #footer> |
| | | <div class="dialog-footer"> |
| | | <el-button |
| | | type="danger" |
| | | v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)" |
| | | @click="submitForm(1)" |
| | | icon="el-icon-position" |
| | | >发布</el-button |
| | | > |
| | | <!-- <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user" |
| | | @click="submitForm(0)">保存</el-button> --> |
| | | <div class="dialog-footer"> |
| | | <el-button |
| | | type="danger" |
| | | v-if="form.status == 0 || (form.status == 2 && userInfo.user_id == form.create_user)" |
| | | @click="submitForm(1)" |
| | | icon="el-icon-position" |
| | | >发布</el-button |
| | | > |
| | | <!-- <el-button type="primary" v-if="form.status == 0 || userInfo.user_id == form.create_user" |
| | | @click="submitForm(0)">保存</el-button> --> |
| | | |
| | | <el-button |
| | | type="primary" |
| | | v-if="form.status == 1 && hasPaddingBtnPermission()" |
| | | @click="orderLogPass(form.id)" |
| | | icon="el-icon-check" |
| | | >通过</el-button |
| | | > |
| | | <el-button |
| | | type="danger" |
| | | v-if="form.status == 1 && hasRejectionBtnPermission()" |
| | | @click="orderLogReject(form.id)" |
| | | icon="el-icon-close" |
| | | >驳回</el-button |
| | | > |
| | | <el-button @click="detailVisibleCopy = false" icon="el-icon-circle-close">取消</el-button> |
| | | </div> |
| | | </template> |
| | | <el-button |
| | | type="primary" |
| | | v-if="form.status == 1 && hasPaddingBtnPermission()" |
| | | @click="orderLogPass(form.id)" |
| | | icon="el-icon-check" |
| | | >通过</el-button |
| | | > |
| | | <el-button |
| | | type="danger" |
| | | v-if="form.status == 1 && hasRejectionBtnPermission()" |
| | | @click="orderLogReject(form.id)" |
| | | icon="el-icon-close" |
| | | >驳回</el-button |
| | | > |
| | | <el-button @click="detailVisibleCopy = false" icon="el-icon-circle-close">取消</el-button> |
| | | </div> |
| | | </template> |
| | | </el-dialog> |
| | | </basic-container> |
| | | </template> |
| | |
| | | } from '@/api/tickets/orderLog'; |
| | | import { getTicketInfo } from '@/api/tickets/ticket'; |
| | | import { getDictionaryByCode } from '@/api/system/dictbiz'; |
| | | import { getWaylineFileListByArea } from '@/api/resource/wayline'; |
| | | import { getWaylineFileListByArea, newGetWorkspacesPage } from '@/api/resource/wayline'; |
| | | import { export_json_to_excel } from '@/utils/exportExcel'; |
| | | import { getFlyingNestBy } from '@/api/device/device'; |
| | | import { mapGetters } from 'vuex'; |
| | |
| | | import weekday from 'dayjs/plugin/weekday'; |
| | | import elTooltipCopy from '@/components/ElTooltipCopy.vue'; |
| | | import { CircleClose, Promotion, Select } from '@element-plus/icons-vue'; |
| | | |
| | | import { useStore } from 'vuex'; |
| | | import _ from 'lodash' |
| | | // const store = useStore() |
| | | dayjs.extend(weekday); |
| | | dayjs.locale('zh-cn'); |
| | | |
| | | // const lastHeight = computed(() => store.state.common.lastHeight) |
| | | |
| | | export default { |
| | | components: { elTooltipCopy }, |
| | |
| | | data() { |
| | | return { |
| | | activeTab: 'all', |
| | | |
| | | getlastHeight: 0, |
| | | tabs: [ |
| | | { label: '全部工单', name: 'all', value: null, count: 0 }, |
| | | { label: '待审核', name: 'WAIT_AUDIT', value: 1, count: 0 }, |
| | |
| | | indexLabel: '序号', |
| | | indexFixed: true, |
| | | |
| | | align: 'center', |
| | | align: 'left', |
| | | border: true, |
| | | stripe: false, |
| | | searchShow: true, |
| | |
| | | return CircleClose |
| | | }, |
| | | ...mapGetters(['userInfo', 'permission']), |
| | | lastHeight() { |
| | | const height = this.$store.state.common.lastHeight; |
| | | return Number(height) || 0; // 确保是数字类型 |
| | | }, |
| | | filteredTabs() { |
| | | // rejection_and_draft 权限控制“已驳回”和“草稿”tab |
| | | // console.log(this.permission, '权限信息') |
| | |
| | | return this.$message.warning('任务时间不能小于当前时间'); |
| | | } |
| | | } |
| | | const maxItem = this.device_sns.reduce((max, item) => { |
| | | return item.drone_height > max.drone_height ? item : max; |
| | | }); |
| | | console.log(maxItem, '高度') |
| | | let result = _.round((maxItem.drone_height + this.form.rth_altitude), 2) |
| | | |
| | | const submitData = { |
| | | ...this.form, |
| | | status: status, |
| | | ai_types: this.form.ai_types?.length ? this.form.ai_types : [], |
| | | }; |
| | | // 判断该值this.form.date_range[0] 周几 和rep_fre_type 是不是相等 |
| | | // if (this.form.deal_time) { |
| | | // const weekday = dayjs(this.form.date_range[0]).format('dddd'); |
| | | // console.log('444', weekday) |
| | | // // form.rep_fre_type |
| | | // const now = new Date() |
| | | // const today = now.toDateString() |
| | | // const selectedDate = new Date(this.form.date_range[0]).toDateString() |
| | | if (this.lastHeight > result) { |
| | | this.$confirm(`安全返航真高${result}米低于航线返航点高度${this.lastHeight}米,为确保返航路径安全,建议您进行调整后再发布`, '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning' |
| | | }).then(async () => { |
| | | const submitData = { |
| | | ...this.form, |
| | | status: status, |
| | | ai_types: this.form.ai_types?.length ? this.form.ai_types : [], |
| | | }; |
| | | await saveUpdateOrderLog(submitData); |
| | | let id = this.form.id; |
| | | if (id) { |
| | | this.$message.success('工单发布成功'); |
| | | } else { |
| | | this.$message.success('工单创建成功'); |
| | | } |
| | | this.dialogVisible = false; |
| | | this.detailVisible = false; |
| | | (this.device_sns = []), (this.wayLineList = []), this.fetchTableData(); |
| | | }).catch(() => { |
| | | |
| | | // if (today === selectedDate) { |
| | | // const [hours, minutes] = this.form.deal_time.split(':') |
| | | // const selectedTime = new Date() |
| | | // selectedTime.setHours(parseInt(hours), parseInt(minutes)) |
| | | |
| | | // if (selectedTime < now) { |
| | | // return this.$message.warning('任务时间不能小于当前时间') |
| | | |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | await saveUpdateOrderLog(submitData); |
| | | let id = this.form.id; |
| | | if (id) { |
| | | this.$message.success('工单发布成功'); |
| | | }); |
| | | } else { |
| | | this.$message.success('工单创建成功'); |
| | | const submitData = { |
| | | ...this.form, |
| | | status: status, |
| | | ai_types: this.form.ai_types?.length ? this.form.ai_types : [], |
| | | }; |
| | | await saveUpdateOrderLog(submitData); |
| | | let id = this.form.id; |
| | | if (id) { |
| | | this.$message.success('工单发布成功'); |
| | | } else { |
| | | this.$message.success('工单创建成功'); |
| | | } |
| | | this.dialogVisible = false; |
| | | this.detailVisible = false; |
| | | (this.device_sns = []), (this.wayLineList = []), this.fetchTableData(); |
| | | } |
| | | this.dialogVisible = false; |
| | | this.detailVisible = false; |
| | | (this.device_sns = []), (this.wayLineList = []), this.fetchTableData(); |
| | | } |
| | | }); |
| | | }, |
| | |
| | | |
| | | handleAdd() { |
| | | this.form = {}; |
| | | this.form.rth_altitude = 120; |
| | | this.dialogVisible = true; |
| | | |
| | | this.$nextTick(() => { |
| | |
| | | }, |
| | | //获取航线列表 |
| | | async asyncgetWaylineFileListByArea(name) { |
| | | var wayLineListResponse = await getWaylineFileListByArea(this.userInfo.detail.areaCode); |
| | | this.wayLineList = wayLineListResponse.data.data; |
| | | const formData = { |
| | | name: '', |
| | | waylineType: undefined, |
| | | current: 1, |
| | | size: 99999999, |
| | | descs: 'update_time', |
| | | } |
| | | var wayLineListResponse = await newGetWorkspacesPage(formData); |
| | | this.wayLineList = wayLineListResponse.data.data.records |
| | | |
| | | this.initMapLine(); |
| | | }, |
| | |
| | | |
| | | this.initMapLine({}, async polygon => { |
| | | const currentLine = that.wayLineList.find(item => item.wayline_id === waylineId); |
| | | |
| | | console.log(currentLine.wayline_type, '5555') |
| | | //按照航线来 |
| | | const params = { |
| | | type: [2, 4, 5].includes(currentLine.wayline_type) ? 2 : 0, |
| | | type: ['2', '4', '5'].includes(currentLine.wayline_type) ? 2 : 0, |
| | | wayline_id: waylineId, |
| | | polygon, |
| | | }; |
| | |
| | | }); |
| | | }, |
| | | }, |
| | | |
| | | watch: { |
| | | // lastHeight(newVal, oldVal) { |
| | | // console.log('lastHeight', newVal, oldVal); |
| | | // this.getlastHeight = newVal; |
| | | // }, |
| | | tableData: { |
| | | handler() { |
| | | // this.updateTabCounts() |