
<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="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="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 style="display:inline-block;width:125px;height:30px"
                placeholder="请输入ID"
                v-model="msg.Id"
                size="small"
                clearable>
                </el-input>
                <span @click="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 style="display:inline-block;width:125px;height:30px"
                placeholder="请输入昵称"
                v-model="msg.Name"
                size="small"
                clearable>
                </el-input>
                <span @click="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 style="display:inline-block;width:125px;height:30px"
                placeholder="请输入手机号"
                v-model="msg.Moblie"
                size="small"
                clearable>
                </el-input>
                <span @click="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">
            </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}}</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 class="blue">{{scope.row.OrderNum}}</span>
                </template>
            </el-table-column>
            <el-table-column
            prop="name"
            label="优惠券数量">
                <template slot-scope="scope">
                    <span class="blue">{{scope.row.CouponsNum}}</span>
                </template>
            </el-table-column>
            <el-table-column
            prop="name"
            label="卡券数量">
                <template slot-scope="scope">
                    <span class="blue">{{scope.row.CardVolumeNum}}</span>
                </template>
            </el-table-column>
            <el-table-column
            prop="name"
            label="余额">
                <template slot-scope="scope">
                    <span class="blue">{{scope.row.Balance}}</span>
                </template>
            </el-table-column>
            <el-table-column
            prop="name"
            label="积分">
                <template slot-scope="scope">
                    <span class="blue">{{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">
                <img @click="EditgoUrl(scope.row)" style="width:32px;height:32px" src="../../assets/img/userman/edit.png" alt="">
                <img @click="OpenczjfDig(scope.row,1)" style="width:32px;height:32px;margin:0 10px" src="../../assets/img/userman/integral.png" alt="">
                <img @click="OpenczjfDig(scope.row,2)" style="width:32px;height:32px" src="../../assets/img/userman/balance.png" alt="">
            </template>    
            </el-table-column>
        </el-table>
        <el-pagination style="text-align:right"
        background
        @current-change="handleCurrentChange"
        :page-size="msg.pageSize"
        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" 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></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 style="width:80px;height:80px" src="../../assets/img/default.png" alt="">
                <img style="width:80px;height:80px" :src="addMsg.Image" 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="dialogVisible = 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: true,
        addMsg:{},
        dialogVisible:false,
        value:'',
        options:[],
        tableData:[],
        msg:{
            pageIndex:1,
            pageSize:15,
            Name:'',
            Source:0,
            MemberGrade:0,
            Id:0,
            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:'',
        },
        
      };
    },
    created() {
        this.getList();
        this.getplat();
        this.getDown();
        this.GetMemberGradeList();
    },
    methods: {
        EditgoUrl(row){
            this.$router.push({
                name: 'usersListEdit',
                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:0,
                Type:1,
                UserId:row.Id,
                Integral:'',
                Image:'',
                Description:'',
                Balance:'',
            }
        },
        openChangeDig(){
            this.changeState=true;
        },
        Export(){
            this.msg.ExcelEnumIds=this.checkedCities;
            console.log("this.msg",this.msg)
            let msg = JSON.parse(JSON.stringify(this.msg));
            this.JavaGetLocalFile(
            "/api/user/GetMemberUserListToExcel",
            msg,
            "用户管理.xls"
            );
        },
        ChangeOpenidState(index,row){
            this.tableData[index].OpenIdState=!this.tableData[index].OpenIdState;
        },
        getList(){
            this.loading=true;
            this.apipost("/api/user/GetMemberUserPageList", this.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:0,
            };
            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 .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>
