<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>
      <el-button @click="addusers" style="float: right; margin-top: -5px; margin-right: 10px" 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>
        <el-date-picker v-model="dateList" @change="(msg.pageIndex = 1), getList()" size="small" type="datetimerange"
          range-separator="至" value-format="yyyy-MM-dd HH:mm:ss" start-placeholder="开始日期" end-placeholder="结束日期">
        </el-date-picker>
      </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" />
            <img v-if="scope.row.Source == 2" style="width: 30px; height: 30px"
              src="../../assets/img/userman/alipay.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="PostName" label="职位"> </el-table-column>
        <el-table-column label="会员类型">
          <template slot-scope="scope">
            <span>{{ scope.row.MemberGradeName }}
              <span>
                <el-tag v-if="scope.row.UserPageTypeStr == '全部'" size="mini">{{ scope.row.UserPageTypeStr }}</el-tag>
                <el-tag v-if="scope.row.UserPageTypeStr == '商城'" type="success" size="mini">
                  {{ scope.row.UserPageTypeStr }}</el-tag>
                <el-tag v-if="scope.row.UserPageTypeStr == '校园'" type="danger" size="mini">
                  {{ scope.row.UserPageTypeStr }}</el-tag>
              </span>
            </span>
          </template>
        </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', { UserId: scope.row.Id })"
              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>
            <el-tooltip class="item" effect="dark" content="二维码" placement="top">
              <img @click="showQRcode(scope.row)" style="width: 32px; height: 32px"
                src="../../assets/img/userman/QRcode.png" alt="" />
            </el-tooltip>

            <el-tooltip class="item" effect="dark" content="查看详情" placement="top">
              <img @click="showDetail(scope.row)" style="width: 32px; height: 32px"
                src="../../assets/img/userman/icon-show.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="total,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>
    <!-- 充值积分 -->
    <el-dialog title="二维码" :visible.sync="qrshow" width="600px">
      <div style="display: flex; align-items: center; justify-content: center">
        <el-image style="width: 200px; height: 200px" :src="qrcodeImg"></el-image>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button size="small" @click="qrshow = false">关 闭</el-button>
      </span>
    </el-dialog>

    <el-dialog title="查看详情" :visible.sync="detailShow" width="600px">
      <detail :data="detailData" />
      <span slot="footer" class="dialog-footer">
        <el-button size="small" @click="detailShow = false">关 闭</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
  import ChooseImg from "@/components/global/ChooseImg.vue";
  import detail from "./components/seeDetail";
  export default {
    components: {
      ChooseImg,
      detail,
    },
    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: "",
          StartTime: "",
          EndTime: "",
        },
        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: "",
        dateList: [],
        qrcodeImg: "",
        qrshow: false,
        //查看详情
        detailData: {},
        detailShow: false,
      };
    },
    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",
          },
        });
      },
      addusers() {
        this.$router.push({
          name: "addUsers",
          query: {
            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 = "";
      },
      showQRcode(row) {
        this.apipost(
          "/api/user/GetWeiXinQRCodeForHT", {
            Path: "/pages/index/index?user_id=" + row.Id,
            With: 212
          },
          (res) => {
            if (res.data.resultCode == 1) {
              if (res.data.data) {
                this.qrcodeImg = this.domainManager().DomainUrl + res.data.data;
                this.qrshow = true;
              }
            } else {
              this.Error(res.data.message);
            }
          }
        );
      },
      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;
        }

        if (this.dateList && this.dateList.length > 0) {
          msg.StartTime = this.dateList[0];
          msg.EndTime = this.dateList[1];
          this.msg.StartTime = this.dateList[0];
          this.msg.EndTime = this.dateList[1];
        } else {
          msg.StartTime = "";
          msg.EndTime = "";
          this.msg.StartTime = "";
          this.msg.EndTime = "";
        }
        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();
      },
      //详情页
      showDetail(row) {
        let msg = {
          UserId: row.Id,
        };
        this.apipost("/api/Miai/GetMiAiBaseIfo", msg, (res) => {
          if (res.data.resultCode == 1) {
            this.detailData = res.data.data;
            this.detailData.RealName = row.Name
            this.detailShow = true
          } else {
            this.$message({
              message: res.data.message,
              type: "warning",
            });
          }
        });
      },
    },
    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>
