无人机管理后台前端(已迁走)
chenyao
2025-07-14 4bb904fc27caf0576ed7dbf46d5909a7b1f778c0
src/views/device/airport.vue
@@ -1,5 +1,5 @@
<template>
  <basic-container>
  <basic-main-content>
    <avue-crud
      :option="option"
      :table-loading="loading"
@@ -185,6 +185,7 @@
    </el-dialog>
    <el-drawer
      class="ztzf-drawer-body-basic-container"
      title="机场授权管理"
      size="60%"
      append-to-body
@@ -202,7 +203,7 @@
      >
      </DockControlPanel>
    </el-drawer>
  </basic-container>
  </basic-main-content>
</template>
<script>
@@ -270,8 +271,7 @@
      option: {
        lazy: true,
        tree: true,
        height: '460',
        calcHeight: 32,
        dialogWidth: 1050,
        tip: false,
        searchShow: true,
@@ -284,6 +284,10 @@
        addBtn: false,
        dialogClickModal: false,
        grid: false,
        height: 'auto',
        calcHeight: 180,
        column: [
          {
            label: '设备型号',
@@ -428,10 +432,20 @@
          },
          {
            label: '行政区划',
            prop: 'area_name',
            hide: true,
            editDisplay: false, //编辑显示
            viewDisplay: true, //查看显示
            labelWidth: 130,
          },
          {
            label: '行政区划',
            prop: 'area_code',
            type: 'cascader',
            labelWidth: 130,
            hide: true,
            editDisplay: true,
            viewDisplay: false,
            props: {
              label: 'title',
              value: 'value',
@@ -494,6 +508,26 @@
              }
            },
          },
          {
            hide: true,
            label: '保险有效期',
            prop: 'duration_of_insurance',
            labelWidth: 130,
            type: 'daterange',
            format: 'YYYY-MM-DD',
            valueFormat: 'YYYY-MM-DD HH:mm:ss',
            startPlaceholder: '保险开始日期',
            endPlaceholder: '保险结束日期',
            rules: [
              {
                required: true,
                message: '请选择保险有效期',
                trigger: 'blur',
              },
            ],
          },
          {
            label: '在线时间',
            prop: 'login_time',
@@ -513,14 +547,25 @@
              },
            ],
          },
           {
            label: '在线状态',
            prop: 'cnstatus',
            hide: true,
            addDisplay: false,
            editDisplay: false,
            viewDisplay: true,
            labelWidth: 130,
          },
          {
            label: '在线状态',
            prop: 'status',
            addDisplay: false,
            editDisplay: false,
             viewDisplay: false,
            labelWidth: 130,
            slot: true,
            width: 100,
            rules: [
              {
                required: true,
@@ -531,12 +576,24 @@
          },
          {
            label: '机场状态',
            prop: 'mode_code',
            prop: 'cnmode_code',
            hide: true,
            addDisplay: false,
            editDisplay: false,
            viewDisplay: true,
            labelWidth: 130,
          },
          {
            label: '机场状态',
            prop: 'mode_code',
            addDisplay: false,
            editDisplay: false,
            viewDisplay: false,
            labelWidth: 130,
            slot: true,
            width: 100,
            rules: [
              {
                required: true,
@@ -566,10 +623,10 @@
    ...mapGetters(['permission']),
    permissionList() {
      return {
        addBtn: this.validData(this.permission.airport_add, true),
        viewBtn: this.validData(this.permission.airport_view, true),
        delBtn: this.validData(this.permission.airport_delete, true),
        editBtn: this.validData(this.permission.airport_edit, true),
        addBtn: this.validData(this.permission.air_add, true),
        viewBtn: this.validData(this.permission.air_view, true),
        delBtn: this.validData(this.permission.air_delete, true),
        editBtn: this.validData(this.permission.air_edit, true),
      };
    },
    ids() {
@@ -967,7 +1024,11 @@
      const submitData = {
        ...row,
        area_code: row.area_code.split(',').pop(),
        insure_start_time: row.duration_of_insurance[0],
        insure_expired_time: row.duration_of_insurance[1],
      };
      delete submitData.duration_of_insurance;
      update(submitData).then(
        () => {
@@ -1065,10 +1126,16 @@
          this.form = {
            ...data,
            area_code: this.getFullAreaCode(data.area_code),
            area_name: this.form.area_name,
            cnmode_code: this.getDockModeText(this.form.mode_code),
            cnstatus:this.form.status === false ? '离线':'在线',
            duration_of_insurance: [data?.insure_start_time || '', data?.insure_expired_time || ''],
          };
          console.log('this.form', this.form);
          done();
        });
      }
      done();
    },
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
@@ -1129,40 +1196,48 @@
  color: #40cb8b;
  font-size: 13px;
}
.status1 {
  float: right;
  color: #8492a6;
  font-size: 13px;
}
.online {
  margin-left: 5px;
}
.onlineStatus1 {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.onlineStatus {
  display: flex;
  flex-direction: row;
  align-items: center;
}
.onlineStatus-dot {
  width: 15px;
  height: 15px;
  background-color: #40cb8b;
  border-radius: 50%;
}
.onlineStatus-dot1 {
  width: 15px;
  height: 15px;
  background-color: #de5e5e;
  border-radius: 50%;
}
.firmware_status {
  background-color: aqua;
  border-radius: 4px;
}
.firmware_status:hover {
  cursor: pointer;
  /* color: aqua; */
@@ -1170,6 +1245,7 @@
.active-element {
  cursor: pointer;
  &:hover {
    background-color: #409eff;
    border-color: #409eff;