xiangpei
2024-03-13 1168b0243adb3330a252c4594fc23a4e1173a1bc
点位优化
2个文件已修改
152 ■■■■ 已修改文件
src/api/platform/point.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/point/index.vue 142 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/platform/point.js
@@ -44,6 +44,16 @@
  })
}
// 批量修改运维点位
export function batchEdit(data) {
  return request({
    url: '/yw-point/batch',
    method: 'put',
    data: data
  })
}
// 删除运维点位
export function delPoint(id) {
  return request({
src/views/system/point/index.vue
@@ -65,11 +65,19 @@
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
          icon="el-icon-top"
          size="mini"
          @click="handleExport"
          v-hasPermi="['x:point:export']"
        >导出</el-button>
          @click="handleImportPoint"
        >导入点位</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="danger"
          plain
          icon="el-icon-receiving"
          size="mini"
          @click="handleEditBatch"
        >批量修改</el-button>
      </el-col>
      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
    </el-row>
@@ -125,13 +133,30 @@
    />
    <!-- 添加运维点位对话框 -->
    <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
      <el-form ref="form" :model="form" :rules="rules" label-width="120px">
        <el-form-item label="点位名称" prop="pointName">
          <el-input v-model="form.pointName" placeholder="请输入点位名称" />
        </el-form-item>
        <el-form-item label="点位所在地" prop="region">
          <el-cascader v-model="form.region" :options="regionList" placeholder="点位所在地" :props="props" collapse-tags></el-cascader>
        </el-form-item>
        <el-form-item label="设备类型" prop="category">
          <el-select v-model="form.category"  placeholder="设备类型">
            <el-option label="人脸识别" value="2"/>
            <el-option label="视频监控" value="1"/>
            <el-option label="车辆监控" value="3"/>
          </el-select>
        </el-form-item>
        <el-form-item label="监管部门" prop="category">
          <el-select v-model="form.deptName"  placeholder="监管部门">
            <el-option label="省厅" value="省厅"/>
            <el-option label="自贡荣县公安局" value="自贡荣县公安局"/>
            <el-option label="自贡富顺公安局" value="自贡富顺公安局"/>
          </el-select>
        </el-form-item>
        <el-form-item label="运维单位" prop="unitId">
          <el-select :disabled="title === '修改运维点位'" v-model="form.unitId"  placeholder="运维单位">
          <el-select v-model="form.unitId"  placeholder="运维单位">
            <el-option
              v-for="item in unitList"
              :key="item.id"
@@ -142,7 +167,6 @@
        </el-form-item>
        <el-form-item label="点位时区" prop="timezone">
          <el-date-picker
            :disabled="title === '修改运维点位'"
            @change="dateChange"
            v-model="form.timezone"
            type="daterange"
@@ -154,21 +178,6 @@
          >
          </el-date-picker>
        </el-form-item>
        <el-form-item>
          <div style="display: flex;flex-direction: row-reverse">
            <el-button @click="nextAdd" type="primary" plain>添加点位</el-button>
          </div>
        </el-form-item>
        <el-row style="min-height: 200px;max-height: 400px; overflow-y: auto">
          <el-col class="col-item" v-for="(point) in tempFormList" :span="8">
            <div style="margin-right: 5px">
              <el-cascader v-model="point.region" :options="regionList" placeholder="请选择区域" :show-all-levels="false"></el-cascader>
            </div>
            <div v-if="title === '修改运维点位'">
              <el-button @click="removeRegion(point)" type="danger" icon="el-icon-delete" circle></el-button>
            </div>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -176,11 +185,47 @@
      </div>
    </el-dialog>
    <!-- 批量修改运维单位 -->
    <el-dialog title="批量修改运维单位" :visible.sync="batchOpen" width="600px" append-to-body>
      <el-form ref="form" :model="batchEditForm" :rules="batchRules" label-width="120px">
        <el-form-item label="点位选择" prop="ids">
          <el-cascader @change="cos" v-model="batchEditForm.ids" :options="regionList" placeholder="请选择区域" :props="props" collapse-tags></el-cascader>
        </el-form-item>
        <el-form-item label="运维单位" prop="unitId">
          <el-select v-model="batchEditForm.unitId"  placeholder="选择运维单位">
            <el-option
              v-for="item in unitList"
              :key="item.id"
              :label="item.value"
              :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="运维时间段" prop="timezone">
          <el-date-picker
            @change="dateChange"
            v-model="batchEditForm.timezone"
            type="daterange"
            align="right"
            unlink-panels
            range-separator="至"
            start-placeholder="开始日期"
            end-placeholder="结束日期"
          >
          </el-date-picker>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitBatchEdit">确 定</el-button>
        <el-button @click="cancelBatchEdit">取 消</el-button>
      </div>
    </el-dialog>
  </div>
</template>
<script>
import { listPoint, getPoint, delPoint, addPoint, addPointBatch, updatePoint } from "@/api/platform/point";
import { listPoint, getPoint, delPoint, addPoint, batchEdit, updatePoint } from "@/api/platform/point";
import { unitSelect } from "@/api/platform/unit";
import { getCascader } from '../../../api/platform/region'
@@ -188,6 +233,17 @@
  name: "Point",
  data() {
    return {
      // 批量修改表单
      batchEditForm: {
        ids: [],
        unitId: null,
        timezone: null,
        startTime: null,
        endTime: null
      },
      // 批量修改弹窗
      batchOpen: false,
      props: { multiple: true },
      regionList: [],
      // 正在修改第几个
      editingIndex: null,
@@ -238,12 +294,21 @@
        pointName: [
          { required: true, message: "点位名称不能为空", trigger: "blur" }
        ],
        timezone: [
          { required: true, message: "点位时区不能为空", trigger: "blur" }
        region: [
          { required: true, message: "点位所在地不能为空", trigger: "change" }
        ],
        unitId: [
          { required: true, message: "运维单位不能为空", trigger: "change" }
        deptName: [
          { required: true, message: "监管部门不能为空", trigger: "change" }
        ],
        category: [
          { required: true, message: "设备类型", trigger: "change" }
        ],
      },
      // 批量表单校验
      batchRules: {
        ids: [
          { required: true, message: "请选择点位", trigger: "change" }
        ]
      }
    };
  },
@@ -253,6 +318,29 @@
    this.getCascader();
  },
  methods: {
    // 点位导入
    handleImportPoint() {
    },
    cos(value) {
      console.log(value)
    },
    // 提交批量修改
    submitBatchEdit() {
      this.batchEditForm.ids = this.batchEditForm.ids.map(array => array[array.length - 1]);
      if (this.batchEditForm.timezone) {
        this.batchEditForm.startTime = this.batchEditForm.timezone[0];
        this.batchEditForm.endTime = this.batchEditForm.timezone[1];
      }
    },
    // 取消批量修改
    cancelBatchEdit() {
      this.batchOpen = false;
    },
    // 批量修改
    handleEditBatch() {
      this.batchOpen = true;
    },
    removeRegion(item) {
      this.tempFormList = this.tempFormList.filter(data => data !== item)
    },