<template>
  <div>
    <div class="dialog-h-content scroll-h">

      <el-form ref="ref_form"
               :inline="true"
               :model="formData"
               :rules="dataRule"
               :disabled="formType === 'detail'"
               class="form">

        <el-form-item label="分队名称"
                      label-width="150px"
                      prop="teamName">
          <el-input v-model="formData.teamName"
                    class="item_width_1"
                    clearable
                    placeholder="请输入分队名称">
          </el-input>
        </el-form-item>

        <el-form-item label="负责区域"
                      prop="gridIdArray"
                      label-width="150px"
                      style="display: block">
          <el-select class="item_width_1"
                     v-model="formData.gridIdArray"
                     placeholder="全部"
                     multiple
                     clearable>
            <el-option v-for="item in gridList"
                       :key="item.value"
                       :label="item.label"
                       :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>

        <el-form-item label="负责场所类型"
                      prop="ninePlaceArray"
                      label-width="150px"
                      style="display: block">
          <el-checkbox-group class="item_width_1"
                             style="display:flex;flex-wrap:wrap"
                             v-model="formData.ninePlaceArray">
            <el-checkbox v-for="item in placeTypeList"
                         :key="item.value"
                         :label="item.value">{{item.label}}</el-checkbox>

          </el-checkbox-group>

        </el-form-item>

        <el-form-item label="巡查计划"
                      prop="plan"
                      label-width="150px"
                      style="display: block">
          <el-input class="item_width_1"
                    type="textarea"
                    maxlength="500"
                    show-word-limit
                    :rows="3"
                    placeholder="请输入备注，不超过500字"
                    v-model="formData.plan"></el-input>
        </el-form-item>

        <el-form-item label="创建时间"
                      style="display: block"
                      prop="time"
                      label-width="150px">
          <el-date-picker v-model="formData.time"
                          value-format="yyyy-MM-dd HH:mm:ss"
                          type="date"
                          placeholder="选择日期">
          </el-date-picker>
        </el-form-item>

        <el-form-item label="负责人"
                      label-width="150px"
                      prop="personInCharge">
          <el-input v-model="formData.personInCharge"
                    class="item_width_1"
                    clearable
                    placeholder="请输入负责人姓名">
          </el-input>

        </el-form-item>
        <el-form-item label="联系电话"
                      label-width="150px"
                      prop="mobile">
          <el-input v-model="formData.mobile"
                    class="item_width_1"
                    type='number'
                    clearable
                    placeholder="请输入电话">
          </el-input>

        </el-form-item>

        <el-form-item label="成员"
                      label-width="150px"
                      prop="member">
          <el-button v-if="formType != 'detail'"
                     type="primary"
                     size="mini"
                     icon="el-icon-plus"
                     @click="handleAddPerson"></el-button>
          <div v-for="(item,index) in memberList"
               :key="index"
               class="div_person_list"
               :class="[{'margin10':formType !== 'detail'}]">
            <span class="div_person_list_title">姓名</span>
            <el-input v-if="item.isSet"
                      v-model="item.name"
                      class="item_width_3"
                      clearable
                      placeholder="请输入姓名">
            </el-input>
            <span class="item_width_span_3"
                  v-else>{{item.name}}</span>

            <span class="div_person_list_title2">联系电话</span>
            <el-input v-if="item.isSet"
                      v-model="item.mobile"
                      class="item_width_4"
                      clearable
                      placeholder="请输入电话">
            </el-input>
            <span class="item_width_span_4"
                  v-else>{{item.mobile}}</span>

            <el-button v-if="formType !== 'detail'"
                       style="margin-left:30px"
                       type="red"
                       size="mini"
                       @click="handleDelPerson(index)">删除</el-button>
          </div>

        </el-form-item>
      </el-form>

    </div>
    <div class="div_btn">
      <el-button size="small"
                 @click="handleCancle">取 消</el-button>
      <el-button size="small"
                 v-if="formType != 'detail'"
                 type="primary"
                 :disabled="btnDisable"
                 @click="handleComfirm">确 定</el-button>
    </div>
  </div>
</template>

<script>
import { mapGetters } from 'vuex'
import { Loading } from 'element-ui' // 引入Loading服务
import { requestPost } from '@/js/dai/request'


let loading // 加载动画
export default {
  data () {
    return {
      formType: 'add', //表单操作类型 add新增，edit编辑，detail详情

      btnDisable: false,

      teamId: '',
      formData: {
        agencyId: '',//组织Id
        teamName: '',//分队名称	
        gridIds: '',//负责区域，多个值逗号分隔	
        ninePlaceArray: [],
        ninePlaceVals: '',//负责场所类型，多个值逗号分隔	
        gridIdArray: [],
        plan: '',//巡查计划	
        time: '',//时间
        personInCharge: '',//负责人	
        mobile: '',//联系电话	
        memberList: [],//成员信息集合	
        member: '1'//成员信息集合	
      },

      memberList: [],

    }
  },
  components: {},
  mounted () {

  },

  methods: {

    async initForm (type, teamId, agencyId) {
      this.$refs.ref_form.resetFields();
      this.formData.agencyId = agencyId
      this.formType = type
      if (teamId) {
        this.teamId = teamId
        this.formData.teamId = teamId
        await this.loadFormData()
      }

    },

    //加载组织
    async loadFormData () {
      const url = '/gov/org/placepatrolteam/detail'
      // const url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/detail'
      let params = {
        teamId: this.teamId
      }

      const { data, code, msg } = await requestPost(url, params)

      if (code === 0) {

        data.ninePlaceArray = data.ninePlaceVals.split(',')
        data.gridIdArray = data.gridIds.split(',')
        data.member = '1'
        this.formData = { ...data }

        this.memberList = this.formData.memberList

        this.memberList.forEach(item => {
          item.isSet = false
        });

      } else {
        this.$message.error(msg)
      }
    },

    async handleComfirm () {

      this.btnDisable = true
      setTimeout(() => {
        this.btnDisable = false
      }, 10000)
      this.$refs['ref_form'].validate((valid, messageObj) => {
        if (!valid) {
          app.util.validateRule(messageObj)
          this.btnDisable = false
        } else {
          this.addTeam()
        }

      })


    },
    handleAddPerson () {
      let obj = {
        name: '',
        mobile: '',
        isSet: true
      }

      this.memberList.push(obj)
    },
    handleDelPerson (index) {
      this.memberList.splice(index, 1)
    },
    async addTeam () {
      const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码
      if (regPhone.test(this.formData.mobile) === false) {
        this.btnDisable = false
        this.$message({
          type: 'warning',
          message: '请输入正确的手机号码'
        })
        return false;
      }
      if (this.formData.gridIdArray.length > 0) {
        this.formData.gridIds = this.formData.gridIdArray.join(',')
      } else {
        return false
      }
      if (this.formData.ninePlaceArray.length > 0) {
        this.formData.ninePlaceVals = this.formData.ninePlaceArray.join(',')
      } else {
        return false
      }

      let msgMember = this.validataMemeberList()
      if (msgMember) {
        this.$message({
          type: 'warning',
          message: msgMember
        })
        this.btnDisable = false
        return false
      }

      this.formData.memberList = this.memberList

      let url = ''

      if (this.formType === 'edit') {
        url = '/gov/org/placepatrolteam/edit'
        // url = 'http://yapi.elinkservice.cn/mock/245/gov/org/placeorg/edit'

      } else {
        url = "/gov/org/placepatrolteam/add"
        // url = "http://yapi.elinkservice.cn/mock/245/gov/org/placepatrolteam/add"
      }

      const { data, code, msg } = await requestPost(url, this.formData)

      if (code === 0) {
        this.$message({
          type: 'success',
          message: '操作成功'
        })
        this.resetData()
        this.$emit('dialogOk')
        this.btnDisable = false
      } else {
        this.btnDisable = false
        this.$message.error(msg)
      }

    },

    validataMemeberList () {
      if (this.memberList.length === 0) {
        return '成员列表不能为空'
      }

      for (let item of this.memberList) {
        if (!item.mobile || !item.name) {
          return '成员的姓名和电话不能为空'
        } else {
          const regPhone = /^1(3|4|5|6|7|8|9)\d{9}$/; //手机号码
          if (regPhone.test(item.mobile) === false) {
            return '请输入正确的手机号码';
          }
        }
      }

      return ''
    },

    handleCancle () {

      this.resetData()
      this.$emit('dialogCancle')

    },

    resetData () {
      this.teamId = ''
      this.formData = {
        agencyId: '',//组织Id
        teamName: '',//分队名称	
        gridIds: '',//负责区域，多个值逗号分隔	
        gridIdArray: [],
        ninePlaceVals: '',//负责场所类型，多个值逗号分隔	
        ninePlaceArray: [],
        plan: '',//巡查计划	
        time: '',//时间
        personInCharge: '',//负责人	
        mobile: '',//联系电话	
        member: '1'//成员信息集合	
      }
      this.memberList = []
    },
    // 开启加载动画
    startLoading () {
      loading = Loading.service({
        lock: true, // 是否锁定
        text: '正在加载……', // 加载中需要显示的文字
        background: 'rgba(0,0,0,.7)' // 背景颜色
      })
    },
    // 结束加载动画
    endLoading () {
      // clearTimeout(timer);
      if (loading) {
        loading.close()
      }
    }
  },
  computed: {
    dataRule () {
      return {
        teamName: [
          { required: true, message: '分队名称不能为空', trigger: 'blur' }
        ],
        gridIdArray: [
          { required: true, message: '负责区域不能为空', trigger: 'blur' },
        ],
        ninePlaceArray: [
          { required: true, message: '场所类型不能为空', trigger: 'blur' }
        ],

        plan: [
          { required: true, message: '巡查计划	不能为空', trigger: 'blur' }
        ],
        personInCharge: [
          { required: true, message: '负责人不能为空', trigger: 'blur' }
        ],
        mobile: [
          { required: true, message: '联系电话不能为空', trigger: 'blur' }
        ],
        member: [
          { required: true, message: '成员不能为空', trigger: 'blur' }
        ]
      }
    },

  },
  props: {
    gridList: {
      type: Array,
      default: []
    },

    placeTypeList: {
      type: Array,
      default: []
    },
  }
}
</script>

<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManageForm.scss";
</style>

<style lang="scss"  scoped>
@import "@/assets/scss/buttonstyle.scss";
.item_width_1 {
  width: 500px;
}
.item_width_2 {
  width: 400px;
}
.item_width_3 {
  margin-left: 10px;
  width: 120px;
}
.item_width_4 {
  margin-left: 10px;
  width: 150px;
}
.item_width_span_3 {
  margin-left: 10px;
  width: 160px;
}
.item_width_span_4 {
  margin-left: 10px;
  width: 150px;
}
.margin10 {
  margin-top: 10px;
}

.div_person_list {
  width: 500px;
  display: flex;

  .div_person_list_title {
    width: 40px;
    font-weight: bold;
  }

  .div_person_list_title2 {
    width: 90px;
    font-weight: bold;
    margin-left: 20px;
  }
}
</style>

<style lang="scss" scoped >
@import "@/assets/scss/modules/visual/communityManageForm.scss";
</style>
