<template>
  <div class="information">
    <el-tabs v-if="tabList.length > 0" v-model="infoType">
      <el-tab-pane v-for="(item,index) in tabList" :key="index" :name="item.value" :label="item.title " />
    </el-tabs>
    <div v-if="merModel" class="business-msg" style="min-height: 600px;">
      <div v-if="infoType == '1'" class="user-msg">
        <div class="basic-information">
          <span class="basic-label">商户名称:</span>
          {{ merData.mer_name }}
        </div>
        <div class="basic-information">
          <span class="basic-label">商户负责人手机号:</span>
          {{ merData.mer_phone }}
        </div>
        <div v-if="merData.merchantCategory.category_name" class="basic-information">
          <span class="basic-label">商户分类:</span>
          {{ merData.merchantCategory.category_name || "" }}
        </div>
        <div v-if="merData.merchantType" class="basic-information">
          <span class="basic-label"> 商户类型:</span>
          {{ merData.merchantType.type_name }}
        </div>
        <div v-if="merData.merchantCategory.category_name" class="basic-information">
          <span class="basic-label"> 商户类别:</span>
          {{ merData.is_trader ? "自营" : "非自营" }}
        </div>
        <div class="basic-information">
          <span class="basic-label"> 商户负责人姓名:</span>
          {{ merData.real_name }}
        </div>
        <div class="basic-information">
          <span class="basic-label"> 商户入驻时间:</span>
          {{ merData.create_time }}
        </div>
        <div v-if="merData.sub_mchid" class="basic-information">
          <span class="basic-label"> 商户入驻时间:</span>
          {{ merData.create_time }}
        </div>
        <div v-if="merData.sub_mchid && merData.merchantType" class="basic-information">
          <span class="basic-label"> 店铺类型:</span>
          {{ merData.merchantType.type_name }}
        </div>
        <div class="basic-information">
          <div>
            <span class="basic-label">是否开启商户:</span>
            <el-tooltip v-if="merData.is_margin == 1 && merData.mer_state == 0" class="item" effect="dark" content="请先支付店铺保证金!" placement="top-start">
              <el-switch v-model="merData.mer_state" disabled :width="55" active-text="开启" inactive-text="关闭" :active-value="1" :inactive-value="0" />
            </el-tooltip>
            <el-switch v-else v-model="merData.mer_state" active-text="开启" inactive-text="关闭" :active-value="1" :inactive-value="0" :width="55" />
            <span class="trip">开启,店铺即可展示在移动端</span>
          </div>
        </div>
        <div class="basic-information">
          <div v-if="merData.is_margin != 0">
            <!--未支付-->
            <div v-if="merData.is_margin == 1">
              <span class="basic-label">店铺保证金:</span>
              <span class="font_red">{{ merData.margin }}元</span>
              <div class="margin_count" @mouseenter="getCode('all')">
                <el-button type="text" size="small" class="mr10 pay_btn">去支付保证金</el-button>
                <!--支付二维码-->
                <div class="erweima">
                  <div class="pay_title">支付保证金</div>
                  <div>
                    <vue-qr class="bicode" :text="goodsQrcode" :size="310" />
                    <div class="pay_type">请使用微信扫码支付</div>
                    <div class="pay_price">¥{{ marginPrice }}元</div>
                    <div class="pay_time">支付码过期时间: {{ qrEndTime }}</div>
                  </div>
                </div>
              </div>
            </div>
            <!--产品服务费-->
            <div v-if="merData.is_service == 1">
              <span class="basic-label">产品服务费:</span>
              <span class="font_red">{{ merData.service_cost }}元</span>
              <div class="margin_count" @mouseenter="getCode('service')">
                <el-button type="text" size="small" class="mr10 pay_btn">去支付产品服务费</el-button>
                <!--支付二维码-->
                <div class="erweima">
                  <div class="pay_title">支付保证金</div>
                  <div>
                    <vue-qr class="bicode" :text="serviceQrCode" :size="310" />
                    <div class="pay_type">请使用微信扫码支付</div>
                    <div class="pay_price">¥{{ servicePrice }}元</div>
                    <div class="pay_time">支付码过期时间: {{ serviceQrEndTime }}</div>
                  </div>
                </div>
              </div>
            </div>
            <!--商品上架费-->
            <div v-if="merData.is_goods == 1">
              <span class="basic-label">上架费:</span>
              <span class="font_red">{{ merData.goods_cost }}元</span>
              <div class="margin_count" @mouseenter="getCode('goods')">
                <el-button type="text" size="small" class="mr10 pay_btn">去支付上架费</el-button>
                <!--支付二维码-->
                <div class="erweima">
                  <div class="pay_title">支付保证金</div>
                  <div>
                    <vue-qr class="bicode" :text="qrCode" :size="310" />
                    <div class="pay_type">请使用微信扫码支付</div>
                    <div class="pay_price">¥{{ goodsPrice }}元</div>
                    <div class="pay_time">支付码过期时间: {{ goodsQrEndTime }}</div>
                  </div>
                </div>
              </div>
            </div>
            <!--已支付-->
            <div v-if="merData.is_margin == 10 " class="margin_main">
              <span class="basic-label">店铺保证金:</span>
              <span class="margin_price">{{ merData.margin }}元</span>
              <div class="margin_count">
                <span class="mr10 spanBtn" @click="viewRecords">查看保证金记录</span>
                <!--保证金弹窗-->
                <div class="margin_modal" @mouseleave="supplyPay=false">
                  <div>
                    <img src="@/assets/images/margin03.png">
                    <div class="alic">
                      <span class="text_g">剩余保证金¥{{ merData.margin }}元</span>
                      <el-button v-if="merData.margin>0" type="primary" size="small" @click="applyReturn">申请退回保证金</el-button>
                    </div>
                  </div>
                </div>
              </div>
              <div v-if="merData.marginStatus" style="display: inline-block;">
                <div class="margin_count" @mouseenter="getCode('all')">
                  <el-button type="text" size="small" class="mr10 pay_btn">去补缴保证金</el-button>
                  <!--支付二维码-->
                  <div class="erweima">
                    <div class="pay_title">支付保证金</div>
                    <div>
                      <vue-qr class="bicode" :text="qrCode" :size="310" />
                      <div class="pay_type">请使用微信扫码支付</div>
                      <div class="pay_price">¥{{ marginPrice }}元</div>
                      <div class="pay_time">支付码过期时间: {{ qrEndTime }}</div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div v-if="merData.is_margin == -10 || merData.is_margin == -1" class="margin_main">
              <span class="basic-label">店铺保证金:</span>
              <span class="margin_price">{{ merData.margin }}元</span>
              <div class="margin_count">
                <span class="mr10 spanBtn" @click="viewRecords">查看保证金记录</span>
                <!--保证金弹窗-->
                <div class="margin_modal" @mouseleave="goPay=false">
                  <div>
                    <img v-if="merData.is_margin == -10" src="@/assets/images/margin01.png">
                    <img v-if="merData.is_margin == -1" src="@/assets/images/margin02.png">
                    <img v-if="merData.is_margin == 10" src="@/assets/images/margin03.png">
                    <div v-if="merData.is_margin == 10" class="alic">
                      <span class="text_g">剩余保证金¥{{ merData.margin }}元</span>
                      <el-button v-if="merData.margin>0" type="primary" size="small" @click="applyReturn">申请退回保证金</el-button>
                    </div>
                    <div v-if="merData.is_margin == -1" class="alic">
                      <span class="text_b b01"> 审核中</span>
                      <div class="margin_refused">您申请退回保证金,正在审核中…</div>
                    </div>
                    <div v-if="merData.is_margin == -10" class="alic">
                      <span class="text_b b02">审核未通过</span>
                      <div class="margin_refused">未通过原因:<span>{{ merData.refundMarginOrder.refusal }}</span></div>
                      <el-button type="primary" size="small" @click="applyReturn">再次申请</el-button>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!--申请退回保障金银行信息弹窗-->
      <el-dialog
        v-if="modalBank"
        v-model="modalBank"
        :visible.sync="modalBank"
        title="申请退回保证金"
        width="600px"
        close-on-click-modal
        custom-class="dialog-scustom"
      >
        <div class="bank-container">
          <div class="item">说明: <span class="red">申请退回保证金则视为关闭店铺,请谨慎操作!</span></div>
          <div class="item">
            <div v-if="online > 0">线上支付的保证金 <span class="red">{{ online }}元</span>会原路返回</div>

            <div v-if="offline > 0">
              线下支付的保证金<span class="red">{{ offline }}元,</span>会通过下方账号信息返回,请务必确认下方您的收款信息真实有效,以确保资金可顺利退回,感谢配合!
            </div>
          </div>
          <div class="title">账号信息:</div>
          <el-form ref="bankValidate" :model="bankValidate" :rules="bankRules" label-width="100px" @submit.native.prevent>
            <el-form-item label="真实姓名:" prop="name">
              <el-input v-model="bankValidate.name" type="text" placeholder="请输入真实姓名" />
            </el-form-item>
            <el-form-item label="开户银行:" prop="code">
              <el-input v-model="bankValidate.code" type="text" placeholder="请输入开户银行" />
            </el-form-item>
            <el-form-item v-if="bankValidate.type == 1" label="银行卡号:" prop="pic">
              <el-input v-model="bankValidate.pic" type="number" placeholder="请输入银行卡号" />
            </el-form-item>
            <el-form-item v-if="bankValidate.type == 2" label="收款二维码:">
              <img v-if="bankValidate.pic" :src="bankValidate.pic" style="width: 120px;height: 120px;">
              <div v-else class="red">
                请前往财务-收款方式页面填写收款信息
              </div>
            </el-form-item>
          </el-form>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button type="primary" size="small" @click="bankConfirm('bankValidate')">确定</el-button>
        </span>
      </el-dialog>
      <div v-if="infoType == '2'" class="business-msg">
        <div class="form-data">
          <el-form ref="ruleForm" :model="merData" :rules="rules" label-width="150px" class="demo-ruleForm">
            <el-form-item class="form-item" label="店铺背景图:" prop="mer_banner">
              <div class="upLoadPicBox" @click="modalPicTap('1')">
                <div v-if="merData.mer_banner" class="pictrue">
                  <img :src="merData.mer_banner">
                </div>
                <div v-else class="upLoad">
                  <i class="el-icon-camera cameraIconfont" />
                </div>
                <div class="trip">建议尺寸:710*200px</div>
              </div>
            </el-form-item>
            <el-form-item class="form-item" label="店铺头像:" prop="mer_avatar">
              <div class="upLoadPicBox" @click="modalPicTap('2')">
                <div v-if="merData.mer_avatar" class="pictrue">
                  <img :src="merData.mer_avatar">
                </div>
                <div v-else class="upLoad">
                  <i class="el-icon-camera cameraIconfont" />
                </div>
                <div class="trip">建议尺寸:120*120px</div>
              </div>
            </el-form-item>
            <el-form-item class="form-item" label="店铺街背景图:">
              <div class="upLoadPicBox" @click="modalPicTap('3')">
                <div v-if="merData.mini_banner" class="pictrue">
                  <img :src="merData.mini_banner">
                </div>
                <div v-else class="upLoad">
                  <i class="el-icon-camera cameraIconfont" />
                </div>
                <div class="trip">建议尺寸:710*134px或710*460px(请根据平台要求选择尺寸,此图如未上传默认展示店铺背景图)</div>
              </div>
            </el-form-item>
            <el-form-item class="form-item" label="店铺资质:" :prop="merData.sys_bases_status == 1 ? 'uploadedqualifications' : ''">
              <div class="upLoadPicBox_qualification">
                <div v-for="(item, index) in uploadedQualifications" :key="index" class="uploadpicBox_list">
                  <div class="uploadpicBox_list_image">
                    <el-image ref="elImage" :src="item.url" :preview-src-list="[item.url]" />
                  </div>
                  <div class="uploadpicBox_list_method">
                    <i class="el-icon-delete" @click="deldetQualificationsList(index)" />
                    <i class="el-icon-view" @click="viewImage(item, index)" />
                  </div>
                </div>
                <el-upload :action="fileUrl" :show-file-list="false" list-type="picture-card" multiple :headers="myHeaders" :on-success="setQualificationsList" :before-upload="beforeUploadQualification">
                  <i class="el-icon-plus" />
                </el-upload>
              </div>
            </el-form-item>
            <el-form-item label="配送方式:" prop="delivery_way">
              <el-checkbox-group v-model="merData.delivery_way">
                <el-checkbox v-for="item in deliveryList" :key="item.value" :label="item.value">
                  {{ item.name }}
                </el-checkbox>
              </el-checkbox-group> <span class="trip">只选择一种配送方式时,会自动修改店铺所有商品的配送方式</span>
            </el-form-item>
            <el-row v-if="(merData.delivery_way.length == 1 && merData.delivery_way[0] == '1') || (merData.delivery_way.length == 2)" :gutter="24">
              <el-col :span="24">
                <el-form-item label="提货点名称:" prop="mer_take_name">
                  <el-input v-model="merData.mer_take_name" maxlength="30" placeholder="请输入提货点名称" />
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item label="提货点电话:" prop="mer_take_phone">
                  <el-input
                    v-model="merData.mer_take_phone"
                    placeholder="请输入提货点电话"
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row v-if="(merData.delivery_way.length == 1 && merData.delivery_way[0] == '1') || (merData.delivery_way.length == 2)">
              <el-col :span="24">
                <el-form-item label="详细地址:" prop="mer_take_address">
                  <el-input v-model="merData.mer_take_address" placeholder="请输入详细地址" />
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item label="经纬度:" prop="mer_take_location">
                  <el-input
                    v-model="merData.mer_take_location"
                    enter-button="查找位置"
                    placeholder="请查找位置"
                    readonly
                  >
                    <el-button
                      slot="append"
                      type="primary"
                      @click="onSearchs"
                    >查找位置</el-button>
                  </el-input>
                  <div slot="content">请点击查找位置选择位置</div>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row v-if="(merData.delivery_way.length == 1 && merData.delivery_way[0] == '1') || (merData.delivery_way.length == 2)">
              <el-col :span="24">
                <el-form-item label="提货点营业日期:" prop="mer_take_day">
                  <el-select
                    v-model="merData.mer_take_day"
                    filterable
                    multiple
                    placeholder="请选择营业时间"
                  >
                    <el-option
                      v-for="item in date"
                      :key="item.date_id"
                      :label="item.date_name"
                      :value="item.date_id"
                    />
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item label="提货点营业时间:" required>
                  <el-time-picker
                    v-model="value1"
                    placeholder="开始时间"
                    value-format="HH:mm"
                    @change="onchangeTime1"
                  />
                  <el-time-picker
                    v-model="value2"
                    placeholder="结束时间"
                    value-format="HH:mm"
                    @change="onchangeTime2"
                  />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="商户简介:" prop="mer_info">
                  <el-input v-model="merData.mer_info" type="textarea" placeholder="文字简介,200字以内" />
                </el-form-item>
              </el-col>
              <el-col :span="24">
                <el-form-item label="商户关键字:" prop="mer_keyword">
                  <div class="tip-form">
                    <el-input v-model="merData.mer_keyword" class="pageWidth" placeholder="用户在搜索该关键字时,可搜索到本店铺" />
                  </div>
                </el-form-item>
                <el-form-item label="联系客服方式:">
                  <el-radio-group
                    v-model="merData.services_type"
                  >
                    <el-radio :label="0" class="radio">线上客服</el-radio>
                    <el-radio :label="1">拨打电话</el-radio>
                  </el-radio-group>
                </el-form-item>
                <el-form-item label="客服电话:">
                  <el-input v-model="merData.service_phone" type="number" />
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="24">
                <el-form-item label="商户地址:" prop="mer_address">
                  <el-input v-model="merData.mer_address" enter-button="查找位置" placeholder="请输入商户地址(地址中请包含城市名称,否则会影响搜索精度)">
                    <el-button slot="append" type="primary" @click="onSearch">查找位置</el-button>
                  </el-input>
                </el-form-item>
              </el-col>
            </el-row>
            <div style="width: 460px;margin-left: 150px;">
              <Maps v-if="mapKey" ref="mapChild" class="map-sty" :map-key="mapKey" :lat="Number(merData.lat || 34.34127)" :lon="Number(merData.long || 108.93984)" :address="merData.mer_address" @getCoordinates="getCoordinates" />
            </div>
            <el-form-item />
          </el-form>
        </div>
      </div>
      <div v-if="infoType == '3'" class="user-msg">
        <div class="basic-information">
          <span class="basic-label"> 商户手续费:</span>
          {{ Number(merData.commission_rate) > 0 ? (parseFloat(merData.commission_rate)).toFixed(2) : (parseFloat(merData.merchantCategory.commission_rate * 100)).toFixed(2) }}%
        </div>
        <div class="basic-information">
          <span class="basic-label"> 添加商品:</span>
          {{ merData.is_audit ? "需平台审核" : "平台免审核" }}
        </div>
        <div class="basic-information">
          <span class="basic-label"> 开启直播间:</span>
          {{ merData.is_bro_room ? "需平台审核" : "平台免审核" }}
        </div>
        <div class="basic-information">
          <span class="basic-label"> 添加直播商品:</span>
          {{ merData.is_bro_goods ? "需平台审核" : "平台免审核" }}
        </div>
        <div class="basic-information">
          <span class="basic-label"> 平台首页推荐商户:</span>
          {{ merData.is_best ? "是" : "否" }}
        </div>
      </div>
      <div v-if="infoType != 3" class="submit-button">
        <el-button type="primary" :loading="submitLoading" @click="submitForm('ruleForm')">提交</el-button>
      </div>
    </div>
    <el-dialog
      v-if="modalMap"
      v-model="modalMap"
      :visible.sync="modalMap"
      title="选择位置"
      close-on-click-modal
      class="mapBox"
      custom-class="dialog-scustom"
    >
      <iframe id="mapPage" width="100%" height="500px" frameborder="0" :src="keyUrl" />
    </el-dialog>
    <!--保证金记录-->
    <el-dialog
      v-if="modalRecord"
      :visible.sync="modalRecord"
      title="操作记录"
      width="800px"
      close-on-click-modal
      class="mapBox"
      custom-class="dialog-scustom"
    >
      <el-table :data="tableData.data" :loading="loading" size="small">
        <el-table-column label="序号" min-width="50">
          <template scope="scope">
            <span>{{ scope.$index+(tableFrom.page - 1) * tableFrom.limit + 1 }}</span>
          </template>
        </el-table-column>
        <el-table-column label="标题" min-width="90" prop="title" />
        <el-table-column prop="number" label="金额" min-width="60">
          <template scope="scope">
            <span v-if="scope.row.pm == 1" style="color:#13ce66">+{{ scope.row.number }}</span>
            <span v-else style="color:rgb(237, 64, 20)">-{{ scope.row.number }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="balance" label="保证金结余" min-width="100" />
        <el-table-column label="备注" min-width="150" prop="mark" />
        <el-table-column prop="create_time" label="操作时间" min-width="120" />
      </el-table>
      <div class="acea-row row-right page">
        <el-pagination
          :page-size="tableFrom.limit"
          :current-page="tableFrom.page"
          layout="prev, pager, next, jumper"
          :total="tableData.total"
          @size-change="handleSizeChange"
          @current-change="pageChange"
        />
      </div>
    </el-dialog>
  </div>
</template>

<script>
// +----------------------------------------------------------------------
// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
// +----------------------------------------------------------------------
// | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
// +----------------------------------------------------------------------
// | Author: CRMEB Team <admin@crmeb.com>
// +----------------------------------------------------------------------
import { serviceCodeApi,goodsCodeApi,storeGetInfoApi, marginCode, marginMakeCode, marginRecordLst, marginRefund, marginRefundApply } from '@/api/setting'
import { getBaseInfo, merchantUpdate } from '@/api/user.js'
import Maps from '@/components/map/map.vue'

import { mapState } from 'vuex'
import { getToken } from '@/utils/auth'
import SettingMer from '@/libs/settingMer'
import { roterPre } from '@/settings'
// 二维码组件
import VueQr from 'vue-qr'
export default {
  name: 'Information',
  components: { Maps, VueQr },
  data() {
    var checkPhone = (rule, value, callback) => {
      if (value === '') {
        callback(new Error('请输入客服电话'))
      } else {
        let regPone = null
        const mobile = /^1(3|4|5|6|7|8|9)\d{9}$/ // 最新16手机正则
        const tel = /^(0[0-9]{2,3}\-)([2-9][0-9]{4,7})+(\-[0-9]{1,4})?$/ // 座机
        const tels = /^400-[016789]\d{2}-\d{4}$/
        if (value.charAt(0) == 0) {
          // charAt查找第一个字符方法,用来判断输入的是座机还是手机号
          regPone = tel
        } else if (value.charAt(0) == 4) {
          regPone = tels
        } else {
          regPone = mobile
        }
        if (!regPone.test(value)) {
          return callback(new Error("请填写客服电话(座机格式'区号-座机号码'),400格式:400-XXX-XXXX"))
        }
        callback()
      }
    }

    // const checkPhone= (rule, value, callback) =>{
    //     const phoneExp = /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
    //     setTimeout(()=>{
    //       if(value !== undefined && value !==''){
    //         if ((!phoneExp.test(value)) && value !== '') {
    //           callback(new Error('请输入正确的格式!'));
    //         } else {
    //           callback();
    //         }
    //       }else{
    //         callback()
    //       }
    //     },100)
    //   }

    // var checkPhone = (rule, value, callback) => {
    //       if (value === '') {
    //         callback(new Error('请输入电话号码'))
    //       }
    //       if (value.length !== 11) {
    //         callback(new Error('请输入正确电话号码'))
    //       }
    //       if (value.length !== 11) {
    //         callback(new Error('请输入正确电话号码'))
    //       }
    //       // 验证电话号码手机号码,包含至今所有号段? ?
    //       var ab = /^[1][3,4,5,7,8][0-9]{9}$/
    //       if (ab.test(value) === false) {
    //         callback(new Error('请输入正确电话号码'))
    //       }
    //       callback()
    //     }

    const validatePhone = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('请填写手机号'))
      } else if (!/^1[3456789]\d{9}$/.test(value)) {
        callback(new Error('手机号格式不正确!'))
      } else {
        callback()
      }
    }
    return {
      merModel: false,
      modalMap: false,
      modalBank: false,
      modalRecord: false,
      loading: false,
      roterPre: roterPre,
      qrCode: '',
      serviceQrCode:'',
      goodsQrcode:'',
      qrEndTime: '',
      serviceQrEndTime: '',
      goodsQrEndTime: '',
      supplyPay: false,
      goPay: false,
      tableFrom: {
        page: 1,
        limit: 20
      },
      tableData: {
        total: 0,
        data: []
      },
      value1: '',
      value2: '',
      marginPrice: 0,
      servicePrice:0,
      goodsPrice:0,
      merData: {
        delivery_way: [],
        mer_take_name: '',
        mer_take_phone: '',
        mer_take_address: '',
        mer_take_time: ['', ''],
        mer_take_day: [],
        mer_take_location: '',
        id: 0,
        mer_take_status: 0 }, // 默认数据
      myHeaders: { 'X-Token': getToken() },
      uploadedQualifications: [], // 资质图片列表
      mapKey: '', // 地图key
      address: '',
      key: '',
      date: [
        { date_name: '周一', date_id: 1 },
        { date_name: '周二', date_id: 2 },
        { date_name: '周三', date_id: 3 },
        { date_name: '周四', date_id: 4 },
        { date_name: '周五', date_id: 5 },
        { date_name: '周六', date_id: 6 },
        { date_name: '周日', date_id: 7 }
      ],
      submitLoading: false, // 提交loading
      deliveryList: [
        // { value: '1', name: '到店自提' },
        { value: '2', name: '快递配送' }
      ],
      rules: {
        mer_banner: [{ required: true, message: '请上传店铺banner' }],
        mer_avatar: [{ required: true, message: '请上传店铺头像' }],
        mer_info: [{ required: true, message: '请输入商户简介', trigger: 'blur' },
          { min: 3, max: 200, message: '长度在 3 到 200 个字符', trigger: 'blur' }
        ],
        mer_keyword: [{ required: false, message: '请输入商户关键字', trigger: 'blur' }],
        mer_address: [{ required: true, message: '请输入商户地址', trigger: 'blur' }],
        uploadedqualifications: [{ required: true, message: '请上传商户资质', trigger: 'blur' }],
        delivery_way: [{ required: true, message: '请选择送货方式', trigger: 'change' }],
        mer_take_name: [{ required: true, message: '请输入提货点名称', trigger: 'blur' }],
        mer_take_day: [{ required: true, type: 'array', message: '请选择提货点营业日期', trigger: 'change' }],
        mer_take_time: [{ required: true, message: '请选择提货点营业时间', trigger: 'change' }],
        mer_take_phone: [{ required: true, validator: validatePhone, trigger: 'blur' }],
        mer_take_address: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
        mer_take_location: [{ required: true, message: '请选择经纬度', trigger: 'blur' }]
      },
      bankValidate: {
        code: '',
        name: '',
        type: 1,
        pic: ''
      },
      bankRules: {
        code: [{ required: true, message: '请输入开户银行', trigger: 'blur' }],
        pic: [
          { required: true, message: '请输入银行卡号', trigger: 'blur' },
          { pattern: /\d{10,19}/, message: '请输入正确的银行账号', trigger: 'blur' }
        ],
        name: [{ required: true, message: '请输入真实姓名', trigger: 'blur' }]
      },
      offline: '',
      online: '',
      keyUrl: '',
      infoType: '1',
      tabList: [
        { value: '1', title: '基本信息' },
        { value: '2', title: '店铺信息' },
        { value: '3', title: '功能信息' }
      ]
    }
  },
  computed: {
    fileUrl() {
      return SettingMer.https + `/upload/certificate`
    }
  },
  watch: {
    uploadedQualifications(val) {
      // 由于 uploadedqualifications 字段未被添加到 merData 对象中,因此,使用 1 或 '' 作为符号表示 merData 中的 uploadedqualifications 图片列表是否添加完毕
      if (val.length) {
        this.merData.uploadedqualifications = 1
      } else {
        this.merData.uploadedqualifications = ''
      }
    }
  },
  created() {
    this.getMapInfo()
  },
  mounted: function() {
    window.addEventListener(
      'message',
      function(event) {
        // 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息
        var loc = event.data
        if (loc && loc.module === 'locationPicker') {
          // 防止其他应用也会向该页面post信息,需判断module是否为'locationPicker'
          window.parent.selectAdderss(loc)
        }
      },
      false
    )
    window.selectAdderss = this.selectAdderss
    this.getInfo()
  },
  methods: {
    // 营业时间
    onchangeTime1(e) {
      this.value1 = e
      this.merData.mer_take_time[0] = e
    },
    onchangeTime2(e) {
      this.value2 = e
      this.merData.mer_take_time[1] = e
    },
    // 选择经纬度
    selectAdderss(data) {
      this.merData.mer_take_location = data.latlng.lat + ',' + data.latlng.lng
      this.modalMap = false
    },
    onSearchs() {
      if (!this.key || this.key == '') { this.$message.error('平台未配置腾讯地图KEY') } else this.modalMap = true
    },
    // 地图信息获取
    getCoordinates(data) {
      // this.merData.mer_address = data.address;
      this.merData.lat = data.location.lat || 34.34127
      this.merData.long = data.location.lng || 108.93984
      console.log(data)
    },
    // 获取历史信息
    getInfo() {
      const that = this
      that.merModel = false
      getBaseInfo().then((res) => {
        that.merData = res.data
        that.$set(that.merData, 'uploadedqualifications', '') // 资质图片列表
        that.$set(that.merData, 'delivery_way', res.data.delivery_way && res.data.delivery_way.length ? res.data.delivery_way.map(String) : [])
        that.key = res.data.tx_map_key
        const keys = res.data.tx_map_key
        that.keyUrl = `https://apis.map.qq.com/tools/locpicker?type=1&key=${keys}&referer=myapp`
        const info = res.data || null
        that.value1 = info.mer_take_time[0] || ''
        that.value2 = info.mer_take_time[1] || ''
        that.merData.mer_take_time = info.mer_take_time || ['', '']
        that.merData.mer_take_day = info.mer_take_day || []
        that.merData.mer_take_phone = info.mer_take_phone
        that.merData.mer_take_name = info.mer_take_name
        that.merData.mer_take_address = info.mer_take_address
        that.marginPrice = info.is_margin
        that.merData.margin = info.margin
        that.merData.mer_take_location =
            info.mer_take_location && info.mer_take_location.length
              ? info.mer_take_location[0] + ',' + info.mer_take_location[1]
              : ''
        that.merData.mer_take_status = info.mer_take_status || 0
        that.merData.refundMarginOrder = info.refundMarginOrder
        that.merData.marginStatus = info.ot_margin > info.margin
        this.merModel = true
        if (res.data.mer_certificate instanceof Array) {
          res.data.mer_certificate.forEach((item) => {
            that.uploadedQualifications.push({ url: item })
          })
        } else {
          that.uploadedQualifications = []
        }
        if (that.merData.is_margin == 1)(this.getCode('all'))
      })
    },
    // 提交线下转账信息
    bankConfirm(name) {
      this.$refs[name].validate(valid => {
        if (valid) {
          marginRefundApply(this.bankValidate)
            .then((res) => {
              this.$message.success(res.message)
              this.modalBank = false
              this.getInfo()
            })
            .catch((res) => {
              this.$message.error(res.message)
            })
        } else {
          this.$message.error('请完善信息后再进行提交')
          return false
        }
      })
    },
    // 提交/修改
    submitForm(formName) {
      if (this.infoType == 2) {
        this.$refs[formName].validate(valid => {
          if (valid) {
            const dataKey = Object.keys(this.rules)
            const reqData = {};
            [...dataKey, 'mer_state', 'long', 'lat', 'mini_banner', 'services_type', 'service_phone'].map(item => {
              reqData[item] = this.merData[item]
            })
            reqData.type = this.infoType
            reqData.mer_certificate = this.uploadedQualifications.map(item => item.response ? item.response.data.src : item.url)
            const location = this.merData.mer_take_location
              ? [
                this.merData.mer_take_location.split(',')[0],
                this.merData.mer_take_location.split(',')[1]
              ] : []
            reqData.mer_take_location = location
            this.submitLoading = true
            merchantUpdate(reqData)
              .then((res) => {
                console.log(res)
                this.submitLoading = false
                this.$message.success('提交成功')
              })
              .catch((rej) => {
                this.submitLoading = false
                this.$message.error(rej.data.message)
              })
          } else {
            this.$message.error('请完善信息后再进行提交')
            this.submitLoading = false
            return false
          }
        })
      } else {
        const data = {
          mer_state: this.merData.mer_state,
          type: this.infoType
        }
        merchantUpdate(data)
          .then((res) => {
            console.log(res)
            this.submitLoading = false
            this.$message.success('提交成功')
          })
          .catch((rej) => {
            this.submitLoading = false
            this.$message.error(rej.data.message)
          })
      }
    },
    // 获取支付二维码
    getCode(type) {
      const that = this
      // 产品服务费
      if(type == 'service' && this.merData.is_service){
        return serviceCodeApi().then((res) => {
          console.log(res);
          that.serviceQrCode = res.data.config
          that.serviceQrEndTime = res.data.endtime
          that.servicePrice = res.data.price
        }).catch(function(res) {
            that.$message.error(res.message)
          })
      }
      // 上架费
      if(type == 'goods' && this.merData.is_goods){
        return goodsCodeApi().then((res) => {
          console.log(res);
          that.goodsQrCode = res.data.config
          that.goodsQrEndTime = res.data.endtime
          that.goodsPrice = res.data.price
        }).catch(function(res) {
            that.$message.error(res.message)
          })
      }
      if (type =='all' && this.merData.marginStatus) {
        return marginMakeCode()
          .then((res) => {
            that.qrCode = res.data.config
            that.qrEndTime = res.data.endtime
            that.marginPrice = res.data.price
          })
          .catch(function(res) {
            that.$message.error(res.message)
          })
      } else {
        return marginCode()
          .then((res) => {
            that.qrCode = res.data.config
            that.qrEndTime = res.data.endtime
            that.marginPrice = res.data.price
          })
          .catch(function(res) {
            that.$message.error(res.message)
          })
      }
    },
    // 查看保证金记录
    viewRecords() {
      this.tableFrom.page = 1
      this.modalRecord = true
      this.getRecordList()
    },
    // 保证金记录列表
    getRecordList() {
      const that = this
      that.loading = true
      marginRecordLst(that.tableFrom).then(async(res) => {
        that.tableData.data = res.data.list
        that.tableData.total = res.data.count
        that.loading = false
      }).catch((res) => {
        that.loading = false
        that.$message.error(res.message)
      })
    },
    pageChange(page) {
      this.tableFrom.page = page
      this.getRecordList()
    },
    handleSizeChange(val) {
      this.tableFrom.limit = val
      this.getRecordList()
    },
    // 申请退回保证金
    applyReturn() {
      const that = this
      that.$confirm('申请退回保证金则视为关闭店铺,请谨慎操作!您是否确定继续操作?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        marginRefund()
          .then((res) => {
            that.bankValidate = res.data.info
            that.offline = res.data.offline
            that.online = res.data.online
            if (Number(res.data.offline) <= 0) {
              marginRefundApply(this.bankValidate)
                .then((res) => {
                  this.$message.success(res.message)
                  this.getInfo()
                })
                .catch((res) => {
                  this.$message.error(res.message)
                })
            } else {
              that.modalBank = true
            }
          })
          .catch(function(res) {
            that.$message.error(res.message)
          })
      })
    },
    // 查找位置
    onSearch() {
      console.log(this.$refs)
      this.$refs.mapChild.searchKeyword(this.merData.mer_address)
    },
    // 获取 map key
    getMapInfo() {
      const that = this
      storeGetInfoApi()
        .then((res) => {
          console.log(res)
          this.mapKey = res.data.tx_map_key
        })
        .catch(function(res) {
          that.$message.error(res.message)
        })
    },
    // 上传图片
    modalPicTap(tit, num, i) {
      const _this = this
      this.$modalUpload((img) => {
        if (tit === '1' && !num) {
          _this.merData.mer_banner = img[0]
        }
        if (tit === '2' && !num) {
          _this.merData.mer_avatar = img[0]
        }
        if (tit === '3' && !num) {
          _this.merData.mini_banner = img[0]
        }
      }, tit)
    },

    // 资质图片删除
    deldetQualificationsList(index) {
      this.uploadedQualifications.splice(index, 1)
    },
    // 上传文件之前的钩子函数
    beforeUploadQualification() {
      if (this.uploadedQualifications.length >= 5) {
        this.$message.error('上传文件最大数量为5张, 上传失败!')
        return false
      } else {
        return true
      }
    },
    // 上传成功
    setQualificationsList(response) {
      if (response.status === 200) {
        this.uploadedQualifications.push({ url: response.data.src })
      } else {
        this.$message.error(response.message)
      }
    },
    // 查看资质图片
    viewImage(item, index) {
      this.$refs.elImage[index].clickHandler()
    }
  }
}
</script>

<style lang="scss" scoped>
::v-deep .el-textarea__inner{
  height: 90px;
}
.information {
  width: 100%;
  padding: 10px 20px 80px 20px;
  background: #ffffff;
  h2 {
    text-align: center;
    color: #303133;
    font-weight: bold;
    font-size: 20px;
  }
  .lab-title {
    width: max-content;
    font-size: 14px;
    font-weight: bold;
    color: #303133;
    margin: 10px 10%;
    &::before{
      content: "";
      display: inline-block;
      width: 3px;
      height: 13px;
      background-color: var(--prev-color-primary);
      margin-right: 6px;
      position: relative;
      top: 1px;
    }
  }
  .user-msg {
    padding: 0 20px;
    margin-top: 20px;
  }
  .basic-information {
    padding: 0 100px;
    margin-bottom: 20px;
    font-size: 13px;
    text-rendering: optimizeLegibility;
    font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
    color: #606266;
    .basic-label{
      display: inline-block;
      text-align: right;
      width: 150px;
      margin-right: 10px;
    }
  }
  .trip {
    color: #999999;
    font-weight: normal;
    font-size: 12px;
  }
  .demo-ruleForm{
    overflow: hidden;
  }
  .form-data {
    padding: 30px 8%;
    .map-sty {
      width: 100%;
    }
    .pictrue img {
      border-radius: 4px;
      object-fit: cover;
    }
    .tip-form {
      display: flex;
      align-items: center;
      span {
        white-space: nowrap;
        padding-left: 10px;
        line-height: 20px;
      }
    }
  }
  .submit-button {
    display: flex;
    justify-content: center;
    // position: fixed;
    bottom: 20px;
    // left: 50%;
    width: 80%;
    padding: 10px 0;
    background-color: rgba(255, 255, 255, 0.7);
  }
}
.information ::v-deep .el-form-item__label{
  color: #303133;
}
.bank-container{
  padding: 0 20px;
  .item{
    margin-top: 10px;
    color: #282828;
    font-size: 13px;
    line-height: 26px;
  }
  .red{
    color:rgb(237, 64, 20);;
  }
  .title{
    color:#303133;
    margin: 15px 0;
    font-weight: bold;

  }
}
.font_red {
  color: red;
  margin-right: 5px;
}
.spanBtn{
  color:var(--prev-color-primary);
  font-size:12px;
  cursor: pointer;
}
.margin_main{
  position: relative;
  .margin_price{
    cursor: pointer;
  }
}
.margin_modal{
    position: absolute;
    left: -20px;
    top: 20px;
    border-radius: 8px;
    background: #fff;
    align-items: center;
    justify-content: center;
    z-index: 9;
    width: 250px;
    padding-bottom: 30px;
    box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);
    display: none;
    .alic{
      text-align: center;
    }
    img{
      display: block;
      width: 150px;
      height: 116px;
      margin: 20px auto 50px;
    }
    span{
      margin-bottom: 10px;
      display: block;
      font-weight: normal;
      text-align: center;
    }
    .text_g{
      font-size: 16px;
      color: #303133;
    }
    .text_b{
      color: #606266;
      font-size: 18px;
      font-weight: bold;
      margin-bottom: 14px;
      &.b02{
        color: #EF9B6F;
      }
      &.b01{
        color: #57D1A0;
      }
    }
    .el-button{
      margin-top: 25px;
    }
  }
  .margin_refused{
    display: block;
    margin-bottom: 10px;
    text-align: center;
    color: #606266;
    span{
      display: inline;
      // color: red;
    }
  }
.margin_count {
  position: relative;
  display: inline-block;
  padding-bottom: 10px;
  .pay_btn:hover + .erweima {
    display: block;
  }
  &:hover{
    .margin_modal{
      display: block;
    }
  }
  .erweima {
    position: absolute;
    left: 0;
    top: 30px;
    z-index: 9;
    display: none;
    width: 250px;
    height: 320px;
    text-align: center;
    background: #fff;
    border-radius: 8px;
    padding: 10px;
    box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);

    img{
      width: 160px;
      height: 160px;
      margin-top: 20px;
    }
    .pay_type{
      font-size: 16px;
      color: #303133;
      font-weight: normal;

    }
    .pay_price{
      font-size: 18px;
      color: #E57272;
      margin: 10px 0;
    }
    .pay_title{
      font-size: 16px;
      color: #303133;
      margin-top: 20px;
    }
    .pay_time{
      font-size: 12px;
      color: #6D7278;

    }
  }

}
::v-deep .el-upload--picture-card {
  width: 58px;
  height: 58px;
  line-height: 70px;
}

::v-deep .el-upload-list__item {
  width: 58px;
  height: 58px;
}

.upLoadPicBox_qualification {
  display: flex;
  flex-wrap: wrap;
  .uploadpicBox_list {
    position: relative;
    height: 58px;
    width: 58px;
    margin: 0 20px 20px 0;
    .uploadpicBox_list_image {
      position: absolute;
      top: 0;
      left: 0;
      width: 58px;
      height: 58px;
      border-radius: 4px;
      overflow: hidden;
      img {
        width: 100%;
        height: 100%;
      }
    }

    .uploadpicBox_list_method {
      position: absolute;
      top: 0;
      left: 0;
      font-size: 18px;
      font-weight: bold;
      color: #fff;
      display: flex;
      align-items: center;
      justify-content: space-around;
      background: rgba(0, 0, 0, 0.4);
      border-radius: 4px;
      opacity: 0;
      width: 100%;
      height: 100%;
      transition: 0.3s;
    }
  }
}
.uploadpicBox_list:hover .uploadpicBox_list_method {
  z-index: 11;
  opacity: 1;
}
</style>