<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"
            />
            <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="PointNum" label="点数"></el-table-column>
        <el-table-column prop="name" label="是否绑定">
          <template slot-scope="scope">
              <el-tag  effect="dark" size="mini" v-if="scope.row.StudentId>0">绑定</el-tag>
              <el-tag type="danger" size="mini" effect="dark" v-if="scope.row.StudentId==0">未绑定</el-tag>
          </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: "studentListEdit",
        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/Education/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/Education/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/Education/GetEduUserExportEnumList", {}, (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>
