<template>
  <div class="usersList">
    <div class="head-title">
      用户管理
      <el-button @click="dialogVisible=true" style="float:right;margin-top: -5px;" size="small" type="primary">批量导出
      </el-button>
    </div>
    <div class="content">
      <div>
        <el-select class="w100" @change="msg.pageIndex=1,getList()" style="margin-right: 10px;" v-model="msg.MemberGrade" size="small"
          placeholder="请选择">
          <el-option label="全部会员" :value="0"></el-option>
          <el-option v-for="item in memberGradeList" :key="item.Id" :label="item.Name" :value="item.Id">
          </el-option>
        </el-select>
        <el-select class="w100" @change="msg.pageIndex=1,getList()" style="margin-right: 10px;" v-model="msg.Source" size="small"
          placeholder="请选择">
          <el-option label="全部平台" :value="0"></el-option>
          <el-option v-for="item in platList" :key="item.Id" :label="item.Name" :value="item.Id">
          </el-option>
        </el-select>
        <div class="searchInput" style="width:150px">
          <el-input @keyup.enter.native="msg.pageIndex=1,getList()" @clear="msg.pageIndex=1,getList()" style="display:inline-block;width:125px;height:30px" placeholder="请输入ID" v-model="msg.Id"
            size="small" clearable>
          </el-input>
          <span @click="msg.pageIndex=1,getList()" class="el-icon-search"
            style="color:#979dad;font-size:14px;position:relative;top:1px"></span>
        </div>
        <div class="searchInput" style="width:150px">
          <el-input @keyup.enter.native="msg.pageIndex=1,getList()" @clear="msg.pageIndex=1,getList()" style="display:inline-block;width:125px;height:30px" placeholder="请输入昵称" v-model="msg.Name"
            size="small" clearable>
          </el-input>
          <span @click="msg.pageIndex=1,getList()" class="el-icon-search"
            style="color:#979dad;font-size:14px;position:relative;top:1px"></span>
        </div>
        <div class="searchInput" style="width:150px">
          <el-input @keyup.enter.native="msg.pageIndex=1,getList()" @clear="msg.pageIndex=1,getList()" style="display:inline-block;width:125px;height:30px" placeholder="请输入手机号" v-model="msg.Moblie"
            size="small" clearable>
          </el-input>
          <span @click="msg.pageIndex=1,getList()" class="el-icon-search"
            style="color:#979dad;font-size:14px;position:relative;top:1px"></span>
        </div>
      </div>
      <el-table :data="tableData" v-loading="loading" border style="width: 100%;margin:20px 0">
        <el-table-column prop="Id" label="ID" width="100">
        </el-table-column>
        <el-table-column prop="address" width="280" label="头像">
          <template slot-scope="scope">
            <div class="app-image" :style="{backgroundImage:'url(' + scope.row.Photo + ')',backgroundSize:'cover'}">
            </div>
            <div flex="dir:left cross:center">
              {{scope.row.Name}}
              <span v-if="scope.row.AliasName && scope.row.AliasName!=''" class="remark_name">备注名：{{scope.row.AliasName}}</span>
            </div>
            <img v-if="scope.row.Source==1" style="width:24px;height:24px" src="../../assets/img/userman/wx.png" alt=""
              class="platform-img">
            <button type="button" class="el-button el-button--success" style="float: right; padding: 5px !important;">
              <span @click="ChangeOpenidState(scope.$index, scope.row)">显示OpenId</span>
            </button>
            <div v-show="scope.row.OpenIdState">{{scope.row.OpenId}}</div>
          </template>
        </el-table-column>
        <el-table-column prop="Moblie" label="手机号">
        </el-table-column>
        <el-table-column prop="MemberGradeName" label="会员类型">
        </el-table-column>
        <el-table-column prop="name" label="订单数">
          <template slot-scope="scope">
            <span @click="CommonJump('orderList',{TypeId:4,UserId:scope.row.Id})" class="blue point">{{scope.row.OrderNum}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="name" label="优惠券数量">
          <template slot-scope="scope">
            <span @click="CommonJump('usersCoupon')" class="blue point">{{scope.row.CouponsNum}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="name" label="卡券数量">
          <template slot-scope="scope">
            <span class="blue point">{{scope.row.CardVolumeNum}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="name" label="余额">
          <template slot-scope="scope">
            <span @click="CommonJump('balanceBudget')" class="blue point">{{scope.row.Balance}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="name" label="积分">
          <template slot-scope="scope">
            <span @click="CommonJump('IntegralRecord',{UserId:scope.row.Id})" class="blue point">{{scope.row.Integral}}</span>
          </template>
        </el-table-column>
        <el-table-column prop="CreateDate" width="150" label="加入时间">
        </el-table-column>
        <el-table-column prop="address" width="200" label="操作">
          <template slot-scope="scope">
            <el-tooltip class="item" effect="dark" content="编辑" placement="top">
              <img @click="EditgoUrl(scope.row)" style="width:32px;height:32px" src="../../assets/img/userman/edit.png"
              alt="">
            </el-tooltip>
            <el-tooltip class="item" effect="dark" content="充值积分" placement="top">
              <img @click="OpenczjfDig(scope.row,1)" style="width:32px;height:32px;margin:0 10px"
              src="../../assets/img/userman/integral.png" alt="">
            </el-tooltip>
            <el-tooltip class="item" effect="dark" content="充值余额" placement="top">
              <img @click="OpenczjfDig(scope.row,2)" style="width:32px;height:32px"
              src="../../assets/img/userman/balance.png" alt="">
            </el-tooltip>


          </template>
        </el-table-column>
      </el-table>
      <el-pagination style="text-align:right" background @current-change="handleCurrentChange" :page-size="msg.pageSize" :current-page.sync="msg.pageIndex"
        layout="prev, pager, next" :total="total">
      </el-pagination>
    </div>
    <!-- 选择导出信息 -->
    <el-dialog title="选择导出信息" :visible.sync="dialogVisible" width="960px">
      <el-form style="border: 1px solid #F0F2F7;" :model="addMsg" ref="addMsg" label-width="100px">
        <div
          style="box-sizing: border-box;background-color: #F3F5F6;width: 100%;padding-left: 20px;height: 50px;line-height: 50px;">
          <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选
          </el-checkbox>
        </div>
        <div style="margin: 15px 0;"></div>
        <div style="padding: 10px 25px 20px;">
          <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
            <el-checkbox style="margin-bottom:10px;width:135px" v-for="city in cities" :label="city.Id" :key="city.Name">
              {{city.Name}}</el-checkbox>
          </el-checkbox-group>
        </div>

      </el-form>
      <div style="text-align:right;margin-top:20px">
        <el-button size="small" type="primary" @click="Export">导出</el-button>
      </div>
    </el-dialog>
    <!-- 选择文件 -->
    <el-dialog title="选择文件" :visible.sync="changeState" width="1240px">
      <ChooseImg @SelectId="SelectId" ref="mychild"></ChooseImg>
    </el-dialog>
    <!-- 充值积分 -->
    <el-dialog title="充值" :visible.sync="czjfDig" width="600px">
      <el-form :model="addMsg" :rules="rules" ref="addMsg" label-width="100px">
        <el-form-item label="操作" prop="Type">
          <el-radio v-model="addMsg.Type" :label="1">充值</el-radio>
          <el-radio v-model="addMsg.Type" :label="2">扣除</el-radio>
        </el-form-item>
        <el-form-item v-if="czType==1" label="积分数" prop="Integral">
          <el-input @keyup.native="checkInteger(addMsg,'Integral')" size="small" v-model="addMsg.Integral"></el-input>
        </el-form-item>
        <el-form-item v-if="czType==2" label="充值金额" prop="Balance">
          <el-input @keyup.native="checkInteger(addMsg,'Balance')" size="small" v-model="addMsg.Balance"></el-input>
        </el-form-item>
        <el-form-item label="充值图片">
          <el-button @click="openChangeDig" size="small">选择文件</el-button>
          <div>
            <img v-if="imgurl==''" style="width:80px;height:80px" src="../../assets/img/default.png" alt="">
            <img v-else style="width:80px;height:80px" :src="imgurl" alt="">
          </div>
        </el-form-item>
        <el-form-item label="备注">
          <el-input size="small" v-model="addMsg.Description"></el-input>
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button size="small" @click="czjfDig = false">取 消</el-button>
        <el-button size="small" type="primary" @click="czsubmitForm('addMsg')">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
  import ChooseImg from "@/components/global/ChooseImg.vue";
  export default {
    components: {
      ChooseImg
    },
    data() {
      return {
        czType: 1,
        czjfDig: false,
        changeState: false,
        loading: false,
        checkAll: false,
        checkedCities: [],
        cities: [],
        cityOptions: [],
        isIndeterminate: false,
        addMsg: {},
        dialogVisible: false,
        value: '',
        options: [],
        tableData: [],
        msg: {
          pageIndex: 1,
          pageSize: 15,
          Name: '',
          Source: 0,
          MemberGrade: 0,
          Id: '',
          Moblie: ''
        },
        total: 0,
        platList: [],
        memberGradeList: [],
        rules: {
          Type: [{
            required: true,
            message: '请选择类型',
            trigger: 'change'
          }],
          Integral: [{
            required: true,
            message: '请输入积分',
            trigger: 'blur'
          }],
        },
        addMsg: {
          MallBaseId: 0,
          Type: 1,
          UserId: 0,
          Integral: 0,
          Image: '',
          Description: '',
        },
        imgurl: '',

      };
    },
    created() {
      this.getList();
      this.getplat();
      this.getDown();
      this.GetMemberGradeList();
      this.addMsg.MallBaseId = this.getLocalStorage().MallBaseId;
    },
    methods: {
      SelectId(msg) {
        this.changeState = false;
        this.addMsg.Image = msg.id;
        this.imgurl =this.getIconLink(msg.url);
      },
      EditgoUrl(row) {
        this.$router.push({
          name: 'usersListEdit',
          query: {
            UserId: row.Id,
            blank: "y"
          }
        });
      },
      czsubmitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            let cmd = "";
            if (this.czType == 1) {
              cmd = "/api/user/SetMemberIntegralInfo";
            } else {
              cmd = "/api/user/SetMemberBalanceInfo";
            }
            this.apipost(cmd, this.addMsg,
              res => {
                if (res.data.resultCode === 1) {
                  this.getList();
                  this.Success(res.data.message)
                  this.czjfDig = false;

                } else {
                  this.Error(res.data.message);
                }
              },
              null
            );
          } else {
            return false;
          }
        });
      },
      OpenczjfDig(row, index) {
        this.czType = index;
        this.czjfDig = true;
        this.addMsg = {
          MallBaseId: this.getLocalStorage().MallBaseId,
          Type: 1,
          UserId: row.Id,
          Integral: '',
          Image: '',
          Description: '',
          Balance: '',
        }
        this.imgurl = '';
      },
      openChangeDig() {
        this.changeState = true;
        setTimeout(() => {
          this.$refs.mychild.InitData(this.czType);
        }, 10)
      },
      Export() {
        this.msg.ExcelEnumIds = this.checkedCities;
        let msg = JSON.parse(JSON.stringify(this.msg));
        if(!msg.Id ||msg.Id==''){
          msg.Id=0;
        }
        this.GetLocalFile(
          "/api/user/GetMemberUserListToExcel",
          msg,
          "用户管理.xls"
        );
      },
      ChangeOpenidState(index, row) {
        this.tableData[index].OpenIdState = !this.tableData[index].OpenIdState;
      },
      getList() {
        this.loading = true;
        let msg=JSON.parse(JSON.stringify(this.msg));
        if(!msg.Id ||msg.Id==''){
          msg.Id=0;
        }
        this.apipost("/api/user/GetMemberUserPageList", msg, res => {
          this.loading = false;
          if (res.data.resultCode == 1) {
            this.total = res.data.data.count;
            let pageData = res.data.data.pageData;
            pageData.forEach(item => {
              item.OpenIdState = false;
            })
            this.tableData = pageData;
          }
        })
      },
      getDown() {
        this.cityOptions = [];
        this.apipost("/api/user/GetMemberUserExcelEnumList", {}, res => {
          this.cities = res.data.data;
          let data = res.data.data;
          data.forEach(item => {
            this.cityOptions.push(item.Id)
          })
        })
      },
      GetMemberGradeList() {
        let msg = {
          Grade: 0,
          Name: '',
          Enabled: 1,
        };
        this.apipost("/api/user/GetMemberGradeList", msg, res => {
          this.memberGradeList = res.data.data;
        })
      },
      getplat() {
        this.apipost("/api/user/GetMemberUserSourceEnumList", {}, res => {
          this.platList = res.data.data;
        })
      },
      handleCheckAllChange(val) {
        this.checkedCities = val ? this.cityOptions : [];
        this.isIndeterminate = false;
      },
      handleCheckedCitiesChange(value) {
        let checkedCount = value.length;
        this.checkAll = checkedCount === this.cities.length;
        this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
      },
      handleCurrentChange(val) {
        this.msg.pageIndex = val;
        this.getList();
      },
    },
    mounted() {
    }
  };
</script>
<style>
  .usersList .remark_name {
    color: #888888;
    font-size: 12px;
    margin-left: 10px;
    float: right;
  }

  .usersList .app-image {
    background-position: center center;
    width: 50px;
    height: 50px;
    border-radius: 0%;
    float: left;
    margin-right: 8px;
  }

  .usersList .blue {
    color: #409EFF;

  }

  .usersList .content .searchInput {
    border: 1px solid #DCDFE6;
    border-radius: 4px;
  }

  .usersList .content .searchInput .el-input__inner {
    border: none;
    outline: none;
    height: 30px;
    line-height: 30px;
  }

  .usersList .content .searchInput {
    line-height: normal;
    display: inline-table;
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    width: 250px;
    margin-right: 20px;
  }

  .usersList .content {
    background: #fff;
    margin-top: 10px;
    padding: 20px;
    box-sizing: border-box;
  }

</style>
