<template>
  <a-spin :spinning="confirmLoading">
    <div class="title-top">
      <h3>{{title}}</h3>
      <div class="button"><a-button @click="toReturn">返回</a-button>
        <a-button type="primary" @click="submitForm" v-if="pageType == 'add' ">保存</a-button>
        <a-button type="danger" @click="onExamine(2)" v-if="pageType == 'audit'">审核驳回</a-button>
        <a-button type="primary" @click="onExamine(1)" v-if="pageType == 'audit'">审核通过</a-button>
      </div>
    </div>

    <j-form-container :disabled="pageType!='add'">
      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
        <a-card title="绑定商铺基本信息">
          <a-row>
            <a-col :span="12">
              <a-form-model-item label="选择小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityName">
                <a-input v-model="model.communityName" placeholder="请选择小区" read-only>
                  <a-icon slot="addonAfter" type="search" @click="chooseCommunity()" />
                </a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="12">
              <a-form-model-item label="选择商铺" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="shopName">
                <a-input v-model="model.shopName" placeholder="请选择商铺" read-only>
                  <a-icon slot="addonAfter" type="search" @click="chooseShops()" />
                </a-input>
              </a-form-model-item>
            </a-col>

            <a-col :span="12">
              <a-form-model-item label="关联房屋" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-input v-model="shopsInfo.roomName" placeholder="请选择关联房屋" disabled></a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="12">
              <a-form-model-item label="统一信用代码" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-input v-model="shopsInfo.creditCode" placeholder="请输入统一信用代码" disabled></a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="12">
              <a-form-model-item label="联系人" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-input v-model="shopsInfo.contactName" placeholder="请输入联系人" disabled></a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="12">
              <a-form-model-item label="联系人电话" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-input v-model="shopsInfo.contactPhone" placeholder="请输入联系人电话" disabled></a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="12">
              <a-form-model-item label="法人姓名" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-input v-model="shopsInfo.legalName" placeholder="请输入法人姓名" disabled></a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="12">
              <a-form-model-item label="注册地址" :labelCol="labelCol" :wrapperCol="wrapperCol">
                <a-input v-model="shopsInfo.registAdress" placeholder="注册地址" disabled></a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="24">
              <a-form-model-item label="详细地址" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol">
                <a-input v-model="shopsInfo.addressInfo" placeholder="请输入详细地址" disabled></a-input>
              </a-form-model-item>
            </a-col>
            <a-col :span="24">
              <a-form-model-item label="" :offset="3" :pull="3" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }">
                <div class="hhh">
                  <div id="container" style="width:100%;height:200px" disabled></div>
                </div>
              </a-form-model-item>
            </a-col>
            <a-col :span="24">
              <a-form-model-item label="商铺介绍" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol">
                <a-textarea v-model="shopsInfo.shopContent" placeholder="请输入集团介绍"
                  :auto-size="{ minRows: 3, maxRows: 5 }" disabled />
              </a-form-model-item>
            </a-col>
          </a-row>
        </a-card>
        <a-card title="合同附件" style="margin-top: 10px;">
          <a-row>
            <a-col :span="24">
              <a-form-model-item label="合同附件" :labelCol="{ xs:{ span: 24 }, sm:{ span: 3 } }" :wrapperCol="wrapperCol">
                <j-upload v-model="shopsInfo.contractUrl" disabled></j-upload>
              </a-form-model-item>
            </a-col>
          </a-row>
        </a-card>
      </a-form-model>
    </j-form-container>
    <a-card title="商铺收款二维码" v-if="codeImg" style="margin-top: 10px;">
      <a-row>
        <a-col :span="24">
          <img style="width: 300px; height: auto;" :src="codeImg">
        </a-col>
      </a-row>
    </a-card>
    <a-card title="操作信息" v-if="recordList.length > 0" style="margin-top: 10px;">
      <a-table ref="table" size="middle" :scroll="{x:true}" bordered rowKey="id" :columns="columns"
        :dataSource="recordList" :pagination="false" :loading="loading" class="j-table-force-nowrap">
      </a-table>
    </a-card>
    <Select-Community-Modal ref="selectCommunityModal" @selectFinished="selectCommunityOK"></Select-Community-Modal>
    <Select-Shops-Modal ref="selectShopsModal" @selectFinished="selectShopsOK"></Select-Shops-Modal>

  </a-spin>
</template>

<script>
const mapZoom = [5, 8, 10, 12]
let timer = null
import { partnersShopByDepId, partnersShopAudit, getQrCode } from '@/api/api'
import { httpAction, getAction } from '@/api/manage'
import { axios } from '@/utils/request'
import SelectCommunityModal from './modules/SelectCommunityModal'
import SelectShopsModal from './modules/SelectShopsModal'

export default {
  name: 'ShopsDetails',
  inject: ['closeCurrent'],
  components: {
    SelectCommunityModal,
    SelectShopsModal,
  },
  data() {
    return {
      title: '',
      loading: false,
      pageType: '',
      model: {
        communityName: '',
        communityCode: '',
        shopName: '',
        shopCode: '',
      },
      shopsInfo: {},
      codeImg: '',
      labelCol: {
        xs: { span: 24 },
        sm: { span: 6 },
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 16 },
      },
      confirmLoading: false,
      validatorRules: {
        communityName: [{ required: true, message: '请选择小区', trigger: 'change' }],
        shopName: [{ required: true, message: '请选择商铺', trigger: 'change' }],
      },
      url: {
        add: '/property-central/partners/partnersShop/add',
      },
      mapRef: null,
      recordList: [],
      columns: [
        {
          title: '操作人',
          dataIndex: 'createBy',
          key: 'createBy',
          align: 'center',
        },
        {
          title: '部门',
          dataIndex: 'departName',
          key: 'departName',
          align: 'center',
        },
        {
          title: '操作类型',
          dataIndex: 'operateType',
          key: 'operateType',
          align: 'center',
        },
        {
          title: '审核状态',
          dataIndex: 'auditStatus',
          key: 'auditStatus',
          align: 'center',
        },
        {
          title: '操作时间',
          dataIndex: 'createTime',
          key: 'createTime',
          align: 'center',
        },
      ],
    }
  },
  computed: {},
  created() {
    this.pageType = this.$route.query.type
    if (this.$route.query.type == 'add') {
      this.title = '新增'
    } else if (this.$route.query.type == 'edit') {
      this.title = '编辑'
    } else if (this.$route.query.type == 'audit') {
      this.title = '审核'
    } else if (this.$route.query.type == 'detail') {
      this.title = '详情'
    }
    if (this.$route.query.id) {
      this.getPageDetail()
    }
  },
  mounted() {
    this.mapRef = new BMapGL.Map('container') // 创建地图实例
    var point = new BMapGL.Point(108.5525, 34.3237) // 创建点坐标
    this.mapRef.centerAndZoom(point, mapZoom[0])
    // var zoomCtrl = new BMapGL.ZoomControl();  // 添加缩放控件
    // this.mapRef.addControl(zoomCtrl);
    this.mapRef.enableScrollWheelZoom(true) //开启鼠标滚轮缩放
    //this.mapRef.addEventListener('click', (e) => this.getAddress(e))
  },
  methods: {
    async getPageDetail() {
      let { result } = await partnersShopByDepId({ id: this.$route.query.id })
      this.recordList = result.recordList
      this.model = Object.assign({}, result.partnersShop)
      this.shopsInfo = Object.assign({}, result.shopInfo)
      if (this.shopsInfo && this.shopsInfo.shopCode) {
        this.getQrCode(this.shopsInfo.shopCode)
      }
      this.shopsInfo.registAdress = result.shopInfo.provinceName + result.shopInfo.cityName + result.shopInfo.countyName
      if (this.shopsInfo.provinceName) {
        this.getLongitude(
          this.shopsInfo.provinceName,
          this.shopsInfo.provinceName +
            this.shopsInfo.cityName +
            this.shopsInfo.countyName +
            this.shopsInfo.addressInfo,
          mapZoom[3]
        )
      }
    },
    getQrCode(shopCode) {
      axios('/property-central/shop/shopInfo/getQrCode?shopCode=' + shopCode + '&platformType=partner', {
        responseType: 'blob',
      }).then((res) => {
        this.codeImg = window.URL.createObjectURL(new Blob([res]))
      })
    },
    toReturn() {
      this.closeCurrent()
      this.$router.go(-1)
    },
    //选择小区
    chooseCommunity() {
      this.$refs.selectCommunityModal.visible = true
    },
    selectCommunityOK(data) {
      this.model.communityName = data.communityName
      this.model.communityCode = data.communityCode
    },
    //选择商铺
    chooseShops() {
      if (this.model.communityName && this.model.communityCode) {
        let communityCode = this.model.communityCode
        this.$refs.selectShopsModal.show(communityCode)
      } else {
        this.$message.warning('请先选择小区')
      }
    },
    selectShopsOK(data) {
      console.log(data)
      this.model.shopName = data.shopName
      this.model.shopCode = data.shopCode
      this.shopsInfo = data.shopInfo
      this.shopsInfo.registAdress = data.shopInfo.provinceName + data.shopInfo.cityName + data.shopInfo.countyName
      if (data.shopInfo.provinceName) {
        this.getLongitude(
          data.shopInfo.provinceName,
          data.shopInfo.provinceName + data.shopInfo.cityName + data.shopInfo.countyName + data.shopInfo.addressInfo,
          mapZoom[3]
        )
      }
    },
    onExamine(type) {
      const that = this
      if (type == 1) {
        return partnersShopAudit({
          id: this.$route.query.id,
          auditStatus: 'auditPass',
        }).then((res) => {
          that.$message.success('审核通过成功')
          that.$emit('ok')
          this.toReturn()
        })
      } else if (type == 2) {
        return partnersShopAudit({
          id: this.$route.query.id,
          auditStatus: 'refuse',
        }).then((res) => {
          that.$message.success('审核驳回成功')
          this.toReturn()
        })
      }
    },
    positionMap(mapCenterLng, mapCenterLat, mapzoom, address) {
      var point = new BMapGL.Point(mapCenterLng, mapCenterLat) // 创建点坐标
      this.mapRef.centerAndZoom(point, mapzoom)
      var marker = new BMapGL.Marker(point, { title: address }) // 创建标注
      this.mapRef.addOverlay(marker) // 将标注添加到地图中
      let _this = this
      // marker.addEventListener("click", function(){
      var label = new BMapGL.Label(address, {
        // 创建文本标注
        position: point, // 设置标注的地理位置
        offset: new BMapGL.Size(0, -55), // 设置标注的偏移量
      })
      _this.mapRef.addOverlay(label) // 将标注添加到地图中
      label.setStyle({
        // 设置label的样式
        color: '#333',
        fontSize: '14px',
        padding: '4px 10px',
        border: '1px solid #1E90FF',
        borderRadius: '4px',
        transform: 'translateX(-40%)',
      })
      // });
    },
    getLongitude(city, address, zoom) {
      let _this = this
      var myGeo = new BMapGL.Geocoder()
      myGeo.getPoint(
        address,
        function (point) {
          if (point) {
            _this.mapRef.clearOverlays()
            _this.model.longitude = point.lng
            _this.model.latitude = point.lat
            _this.positionMap(point.lng, point.lat, zoom, address)
          } else {
            console.log('您选择的地址没有解析到结果！')
          }
        },
        city
      )
    },
    submitForm() {
      const that = this
      // 触发表单验证
      this.$refs.form.validate((valid) => {
        if (valid) {
          that.confirmLoading = true
          let httpurl = ''
          let method = ''
          if (!this.model.id) {
            httpurl += this.url.add
            method = 'post'
          }
          // else {
          //   httpurl += this.url.edit
          //   method = 'put'
          // }
          //this.model.registAdress = undefined
          httpAction(httpurl, this.model, method)
            .then((res) => {
              if (res.success) {
                that.$message.success(res.message)
                that.$emit('ok')
                this.toReturn()
              } else {
                that.$message.warning(res.message)
              }
            })
            .finally(() => {
              that.confirmLoading = false
            })
        }
      })
    },
  },
}
</script>
<style lang="less" scoped>
.title-top {
  background: #fff;
  padding: 0 25px;
  line-height: 50px;
  height: 50px;
  margin-bottom: 5px;
  h3 {
    font-weight: bold;
    display: inline-block;
  }
  .button {
    float: right;
    .ant-btn {
      margin-left: 15px;
    }
  }
}
</style>
<style>
.area-select {
  width: 100% !important;
}
.anchorBL {
  visibility: hidden;
}
</style>