<template>

  <div>
    <el-dialog
      :title="brandName"
      :visible.sync="dialogVisible"
      width="1080px"
      :before-close="handleClose()">
      <el-tabs v-model="activeName">
        <el-tab-pane :label="$t('未授权客户')" name="first">
          <div class="brand">
            <el-radio-group v-model="productBrank.unauthChargingModel" @change="changeModel">
              <el-radio label="0">{{$t('统一收费标准')}}</el-radio>
              <el-radio label="1">{{$t('针对客户收费标准')}}</el-radio>
            </el-radio-group>
          </div>
         <div v-if="productBrank.unauthChargingModel==0" class="brand">
           <span>{{$t('针对所有未授权客户的收费模式')}}：</span>
           <el-select v-model="productBrank.unauthDefaultFeeType" :placeholder="$t('请选择')" size="small" style="margin-right: 10px;">
                <el-option
                  v-for="(item,index) in feeType"
                  :key="index"
                  :label="item.label"
                  :value="item.value">
                </el-option>
             </el-select>
             <el-button type="primary" @click="updateBrank">{{$t('确定修改')}}</el-button>
         </div>
          <el-form :inline="true" class="demo-form-inline">
            <el-form-item :label="$t('关键字')">
              <el-input v-model="list1QueryParams.customerKey" :placeholder="$t('请填入关键字')"></el-input>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="filterCustomer">{{$t('查询')}}</el-button>
            </el-form-item>
          </el-form>

          <el-table
            :data="list1"
            style="width: 100%">
            <el-table-column
              prop="customerName"
              :label="$t('客户名称')">
            </el-table-column>
            <el-table-column
              :label="$t('客户号码')">
                <template v-slot="{row}">
               <show-contacts :phone-string="row.phone" ></show-contacts>
                </template>
            </el-table-column>
            <el-table-column
              prop="feeScale"
              :label="$t('收费类型')">
              <template slot-scope="scope">
                <dict-tag
                  :type="DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL" :value="scope.row.feeScale" />
              </template>
            </el-table-column>
            <el-table-column
              width="200px"
              :label="$t('操作')">
              <template v-slot="{row}">
                <el-button type="primary" size="mini" @click="handleAdd(row)">{{$t('添加授权')}}</el-button>
                <el-button v-if="productBrank.unauthChargingModel=='1'" type="primary" size="mini" @click="editAdd(row)">{{$t('修改收费')}}</el-button>
              </template>

            </el-table-column>
          </el-table>

          <pagination v-show="total1 > 0" :total="total1" :page.sync="list1QueryParams.pageNo" :limit.sync="list1QueryParams.pageSize"
                      @pagination="getList1" style="height: 40px"/>
        </el-tab-pane>
        <el-tab-pane :label="$t('已授权客户')" name="second">
          <el-table
            :data="list2"
            style="width: 100%">
            <el-table-column
              prop="customerName"
              :label="$t('客户名称')">
            </el-table-column>
            <el-table-column
                    width="260"
              :label="$t('客户号码')">
                <template v-slot="{row}">
                    <show-contacts :phone-string="row.phone" ></show-contacts>
                </template>
            </el-table-column>
            <el-table-column
              prop="fileUrl"
              :label="$t('授权证明')">
              <template v-slot="{row}">
                <div v-if="!!row.fileUrl && row.fileUrl.length > 0">
                  <span v-for="(item, index) in row.fileUrl.split(',')">
                    <a :href="item" target="_blank">{{$t('附件')}}{{ index + 1 }}</a>,
                  </span>
                </div>
              </template>
            </el-table-column>

            <el-table-column
              prop="startTime"
              width="200px"
              :label="$t('授权时间')">
              <template v-slot="{row}">
                <span >{{row.startTime?(parseTime(row.startTime, '{y}-{m}-{d}') + ' - ' + parseTime(row.endTime, '{y}-{m}-{d}')):'永久'}}</span>
              </template>
            </el-table-column>
            <el-table-column
              prop="startTime"
              width="200px"
              :label="$t('添加时间')">
              <template v-slot="{row}">
                <span >{{parseTime(row.createTime)}}</span>
              </template>
            </el-table-column>
            <el-table-column
              prop="feeScale"
              :formatter="(row) => getDictDataLabel(DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL, row.feeScale)"
              :label="$t('收费标准')">
            </el-table-column>
            <el-table-column
              prop="createUsername"
              :label="$t('添加人')">
            </el-table-column>
            <el-table-column
              width="100px"
              :label="$t('操作')">
              <template v-slot="{row}">
                <el-button type="danger" size="mini" @click="handleDelete(row.id)">{{$t('删除')}}</el-button>
              </template>
            </el-table-column>
          </el-table>

          <pagination v-show="total2 > 0" :total="total2" :page.sync="list2QueryParams.pageNo" :limit.sync="list2QueryParams.pageSize"
                      @pagination="getList2" style="height: 40px"/>
        </el-tab-pane>
      </el-tabs>
    </el-dialog>

<!--  添加弹窗  -->
    <el-dialog
      :title="$t('添加')"
      :visible.sync="addDialog.dialogVisible"
      width="600px">

      <el-form ref="form" :model="addDialog.form" label-width="80px">
        <el-form-item :label="$t('客户名称')">{{ addDialog.form.customerName }}</el-form-item>
        <el-form-item :label="$t('授权类型')">
          <dict-selector v-model="addDialog.form.authType" :type="DICT_TYPE.ECW_AUTH_TYPE"></dict-selector>
        </el-form-item>
        <el-form-item :label="$t('授权时间')" v-if="addDialog.form.authType==1">
 <!--         <el-date-picker
            v-model="addDialog.dateRange"
            @chang="handleDatePick"
            type="daterange"
            range-separator="至"
            value-format="timestamp"
            start-placeholder="开始日期"
            end-placeholder="结束日期">
          </el-date-picker> -->
        <el-date-picker clearable v-model="addDialog.form.startTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" type="datetime" :placeholder="$t('请选择开始日期')" />
         <span style="margin: 0 8px;">{{$t('到')}}</span>
          <el-date-picker clearable v-model="addDialog.form.endTime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss" type="datetime" :placeholder="$t('请选择结束日期')" />
        </el-form-item>
        <el-form-item :label="$t('收费模式')">
          <dict-selector v-model="addDialog.form.feeScale" :type="DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL"></dict-selector>
        </el-form-item>
        <el-form-item :label="$t('授权证明')">
          <file-upload v-model="addDialog.form.fileUrl"></file-upload>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addDialog.dialogVisible = false">{{$t('取消')}}</el-button>
        <el-button type="primary" @click="handleAddSubmit">{{$t('确定')}}</el-button>
      </span>
    </el-dialog>
    <!--  添加弹窗  -->
        <el-dialog
          :title="$t('修改单个客户收费模式')"
          :visible.sync="editDialog.dialogVisible"
          width="500px">
          <el-form ref="form" :model="editDialog.form" label-width="80px">
            <el-form-item :label="$t('客户名称')">{{ editDialog.customerName }}</el-form-item>

            <el-form-item :label="$t('收费模式')">
              <el-select v-model="editDialog.form.feeScale" :placeholder="$t('请选择')" size="small" style="margin-right: 10px;">
                 <el-option
                   v-for="item in feeType"
                   :key="item.value"
                   :label="item.label"
                   :value="item.value">
                 </el-option>
                </el-select>
              <!-- <dict-selector v-model="editDialog.form.feeScale" :type="DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL"></dict-selector> -->
            </el-form-item>
          </el-form>
          <span slot="footer" class="dialog-footer">
            <el-button type="primary" @click="handleEditSubmit">{{$t('确定修改')}}</el-button>
            <el-button @click="editDialog.dialogVisible = false">{{$t('关闭窗口')}}</el-button>
          </span>
        </el-dialog>
  </div>
</template>

<script>
import {
  createProductBrandEmpower,
  deleteProductBrandEmpower,
  getProductBrandEmpowerPageAuth,
  getProductBrandEmpowerPageUnauth
} from "@/api/ecw/productBrandEmpower"
import {getProductBrank,changeFeeModel,setUnauthCustomerFeeType} from "@/api/ecw/productBrank";
import DictSelector from "@/components/DictSelector"
import { DICT_TYPE, getDictDataLabel } from '@/utils/dict'
import FileUpload from '@/components/FileUpload'
import { parseTime } from '@/utils/ruoyi'
import ShowContacts from "@/views/ecw/productBrank/Empower/components/showContacts.vue";

export default {
  name: "Empower",
  components: {
      ShowContacts,
    DictSelector,
    FileUpload
  },
  props: {
    id: {
      type: Number,
      default: 0
    },
    brandName: String,
    visible: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      DICT_TYPE,
      getDictDataLabel,
      parseTime,
      dialogVisible: false,
      activeName: 'first',
      total1: 0,
      total2: 0,
      list1: [],
      list2: [],
      feeType:[{
        label:this.$t('无牌价'),
        value:0
      },{
        label:this.$t('有牌价'),
        value:1
      },{
        label:this.$t('中性价'),
        value:2
      }],
      unauthChargingModel:0,
      list1QueryParams: {
        pageNo: 1,
        pageSize: 10,
        customerKey: undefined
      },
      list2QueryParams: {
        pageNo: 1,
        pageSize: 10,
      },
      productBrank:{},
      addDialog: {
        dialogVisible: false,
        customerName: '',
        form: {
          "customerContactsId": 0,
          "customerId": 0,
          "endTime": "",
          "feeScale": '0',
          "fileUrl": "",
          "productBrandId": null,
          "startTime": "",
          "status": 0,
          "authType":'0'
        },
        dateRange: []
      },
      editDialog: {
        dialogVisible: false,
        customerName: '',
        form: {
          "customerContactsId": 0,
          "customerId": 0,
          "feeScale":1,
          "productBrandId": null,
        }
      }
    }
  },
  mounted() {

  },
  methods: {
    getBrank(){
      getProductBrank(this.id).then(r => {
        this.productBrank = r.data
        if(this.productBrank.unauthDefaultFeeType){
          this.productBrank.unauthDefaultFeeType = parseInt(this.productBrank.unauthDefaultFeeType)
        }
        this.unauthChargingModel = this.productBrank.unauthChargingModel
      })
    },
    handleAddSubmit(){
      this.addDialog.form.productBrandId = this.id
      createProductBrandEmpower(this.addDialog.form).then(() => {
        this.addDialog.dialogVisible = false
        this.getList1()
        this.getList2()
        this.resetForm("form");
      })
    },
    handleEditSubmit(){
      var data = {}
      data = this.editDialog.form
      data.productBrandId = this.id
      setUnauthCustomerFeeType(data).then(() => {
        this.getList1()
        this.editDialog = {
          dialogVisible: false,
          customerName: '',
          form: {
            "customerContactsId": 0,
            "customerId": 0,
            "feeScale":1,
            "productBrandId": null,
          }
        }
      })
    },
    handleDatePick(e){
      console.log(e)
    },
    handleClose() {},
    filterCustomer() {
      this.list1QueryParams.pageNo = 1
      this.getList1()
    },
    updateBrank(){
      let params = {}
       if(this.productBrank.unauthChargingModel==1){
         params = {
             id:this.productBrank.id,
             unauthChargingModel:this.productBrank.unauthChargingModel,
           }
       }else{
         params = {
             id:this.productBrank.id,
             unauthChargingModel:this.productBrank.unauthChargingModel,
             unauthDefaultFeeType:this.productBrank.unauthDefaultFeeType
           }
       }
       console.log(params)
       changeFeeModel(params).then(r=>{
         this.getList1()
         this.getList2()
         this.getBrank()
         this.$modal.msgSuccess(this.$t("修改成功"));
       })
    },
    changeModel(){
      if(this.productBrank.unauthChargingModel==1&&this.unauthChargingModel != this.productBrank.unauthChargingModel){
        this.updateBrank()
      }
    },
    handleAdd(row) {
      this.addDialog.form.customerId = row.customerId
      this.addDialog.form.customerName = row.customerName
      this.addDialog.dialogVisible = true
    },
    editAdd(row){
      this.editDialog.form.customerId = row.customerId
      this.editDialog.form.feeScale = row.feeScale;
      if(row.customerContactsId){
          this.editDialog.form.customerContactsId = row.customerContactsId
      }
      this.editDialog.customerName = row.customerName
      this.editDialog.dialogVisible = true
    },
    handleDelete(id) {
      this.$confirm(this.$t('确认删除该用户的授权')+'?', this.$t('提示'), {
        confirmButtonText: this.$t('确定'),
        cancelButtonText: this.$t('取消'),
        type: 'warning'
      }).then(() => {
        deleteProductBrandEmpower(id).then(r => {
          this.getList1()
          this.getList2()
          this.$message({
            type: 'success',
            message: this.$t('撤销授权成功')
          });
        })
      }).catch(() => {
        this.$message({
          type: 'info',
          message: this.$t('已取消删除')
        });
      });
    },
    getList1(){
      getProductBrandEmpowerPageUnauth({...this.list1QueryParams, productBrandId: this.id}).then(r => {
        this.list1 = r.data.list
        this.total1 = r.data.total
      })
    },
    getList2() {
      getProductBrandEmpowerPageAuth({...this.list2QueryParams, productBrandId: this.id}).then(r => {
        this.list2 = r.data.list
      })
    }
  },
  watch: {
    visible(v){
      if (v){
        this.list1QueryParams.pageNo = 1
        this.list2QueryParams.pageNo = 1
        this.unauthDefaultFeeType = "1"
        this.list1QueryParams.customerKey = ''
        this.getList1()
        this.getList2()
        this.getBrank()
      }
      this.dialogVisible = v
    },
    dialogVisible(v) {
      this.$emit('update:visible', v)
    },

    'addDialog.dateRange'(v) {
      this.addDialog.form.startTime = v[0]
      this.addDialog.form.endTime = v[1]
    }
  }
}
</script>

<style scoped>
.brand{
  padding-bottom: 20px;
}
</style>
