<template> 
 | 
  <GlobalWindow :title="title" :visible.sync="visible" :confirm-working="isWorking" @confirm="confirm"> 
 | 
    <el-form :model="form" ref="form" :rules="rules"> 
 | 
      <el-form-item label="线路名称" prop="name"> 
 | 
        <el-input v-model="form.name" placeholder="请输入线路名称" v-trim /> 
 | 
      </el-form-item> 
 | 
      <div class="head"> 
 | 
        <div class="title">巡检点</div> 
 | 
        <el-button type="primary" @click="openModal">添加巡检点</el-button> 
 | 
      </div> 
 | 
      <el-table v-loading="isWorking.search" :data="list" stripe> 
 | 
        <el-table-column prop="code" label="巡检点编码" min-width="100px"></el-table-column> 
 | 
        <el-table-column prop="pointName" label="巡检点名称" min-width="100px"></el-table-column> 
 | 
        <el-table-column prop="name" label="扫码打卡" min-width="100px"> 
 | 
          <template v-slot="scope"> 
 | 
            <el-switch v-model="scope.row.needScancode" @change="changeStatus" active-value="0" 
 | 
              inactive-value="1"></el-switch> 
 | 
          </template> 
 | 
        </el-table-column> 
 | 
        <el-table-column prop="name" label="排序码" min-width="100px"> 
 | 
          <template v-slot="scope"> 
 | 
            <el-input v-model="scope.row.sortnum" class="w100"></el-input> 
 | 
          </template> 
 | 
        </el-table-column> 
 | 
        <el-table-column prop="name" label="操作" min-width="100px"> 
 | 
          <template v-slot="scope"> 
 | 
            <span class="red cu" @click="handleDel(scope)">删除</span> 
 | 
          </template> 
 | 
        </el-table-column> 
 | 
      </el-table> 
 | 
  
 | 
  
 | 
    </el-form> 
 | 
    <!--  --> 
 | 
    <el-dialog title="添加巡检点" :close-on-click-modal="false" append-to-body :visible.sync="isShowModal" width="500px"> 
 | 
      <el-select class="w400" v-model="selPoint" clearable multiple filterable> 
 | 
        <el-option v-for="item in pointList" :value="item.id" :label="item.name"></el-option> 
 | 
      </el-select> 
 | 
      <span slot="footer" class="dialog-footer"> 
 | 
        <el-button @click="isShowModal = false">取 消</el-button> 
 | 
        <el-button type="primary" @click="subModal">确 定</el-button> 
 | 
      </span> 
 | 
    </el-dialog> 
 | 
  </GlobalWindow> 
 | 
</template> 
 | 
  
 | 
<script> 
 | 
import BaseOpera from '@/components/base/BaseOpera' 
 | 
import GlobalWindow from '@/components/common/GlobalWindow' 
 | 
import { getFetchList } from '@/api/Inspection/ywPatrolPoint' 
 | 
import { create,detailById } from '@/api/Inspection/ywPatrolLine' 
 | 
import { Message } from 'element-ui' 
 | 
export default { 
 | 
  name: 'OperaYwPatrolLineWindow', 
 | 
  extends: BaseOpera, 
 | 
  components: { GlobalWindow }, 
 | 
  data() { 
 | 
    return { 
 | 
      // 表单数据 
 | 
      form: { 
 | 
        name: '', 
 | 
      }, 
 | 
      selPoint: [], 
 | 
      pointList: [], 
 | 
      list: [], 
 | 
      isShowModal: false, 
 | 
      // 验证规则 
 | 
      rules: { 
 | 
        name: [{ required: true, message: '请输入' }], 
 | 
        selPoint: [{ type: 'array', required: true, message: '请输入' }], 
 | 
      } 
 | 
    } 
 | 
  }, 
 | 
  created() { 
 | 
    this.config({ 
 | 
      api: '/Inspection/ywPatrolLine', 
 | 
    }) 
 | 
  }, 
 | 
  methods: { 
 | 
    confirm() { 
 | 
      const { form, list } = this 
 | 
      if (list.length == 0) return Message.warning('请先选择巡检点') 
 | 
      form.linePointList = list 
 | 
      create({ ...form }).then(res => { 
 | 
        Message.success('保存成功') 
 | 
        this.$emit('success') 
 | 
        this.close() 
 | 
         
 | 
      }) 
 | 
    }, 
 | 
    getDetail(row) { 
 | 
      detailById(row.id).then(res => { 
 | 
        this.form = res 
 | 
        this.list = res.linePointList || [] 
 | 
      }) 
 | 
    }, 
 | 
    initData() { 
 | 
      this.list = [] 
 | 
  
 | 
      getFetchList({}).then(res => { 
 | 
        this.pointList = res || [] 
 | 
      }) 
 | 
    }, 
 | 
    handleDel(row) { 
 | 
      this.list.splice(row.$index, 1) 
 | 
  
 | 
    }, 
 | 
    changeStatus(row) { 
 | 
  
 | 
    }, 
 | 
    openModal() { 
 | 
      this.selPoint = this.list.map(i => i.id) 
 | 
      this.isShowModal = true 
 | 
    }, 
 | 
    subModal() { 
 | 
      const { selPoint, pointList, list } = this 
 | 
      if (selPoint.length == 0) return Message.warning('请先选择巡检点') 
 | 
      let arr = [] 
 | 
      // 取出选中列表 
 | 
      pointList.forEach(item => { 
 | 
        selPoint.forEach(item2 => { 
 | 
          if (item.id === item2) { 
 | 
            arr.push(item) 
 | 
          } 
 | 
        }) 
 | 
      }) 
 | 
      // 同list去重 
 | 
      list.forEach(item => { 
 | 
        arr.forEach((item2, i) => { 
 | 
          if (item.id === item2.id) { 
 | 
            arr.splice(i, 1) 
 | 
          } 
 | 
        }) 
 | 
      }) 
 | 
      // 添加 
 | 
      arr.forEach(i => { 
 | 
        this.list.push({ 
 | 
          needScancode: '1', 
 | 
          pointName: i.name, 
 | 
          pointId: i.id, 
 | 
          code: i.code 
 | 
        }) 
 | 
      }) 
 | 
      this.isShowModal = false 
 | 
    }, 
 | 
    close() { 
 | 
      this.visible = false 
 | 
      this.$emit('success') 
 | 
    } 
 | 
  } 
 | 
} 
 | 
</script> 
 | 
<style lang="scss" scoped> 
 | 
.head { 
 | 
  display: flex; 
 | 
  align-items: center; 
 | 
  justify-content: space-between; 
 | 
  margin-bottom: 20px; 
 | 
  
 | 
  div { 
 | 
    font-weight: 500; 
 | 
  } 
 | 
} 
 | 
</style> 
 |