|
@@ -1,1707 +1,1863 @@
|
|
|
<template>
|
|
|
- <!-- 用户-用户列表 -->
|
|
|
- <div>
|
|
|
- <Card :bordered="false" dis-hover class="ivu-mt" :padding="0">
|
|
|
- <div class="padding-add">
|
|
|
- <!-- 筛选条件 -->
|
|
|
- <Form ref="userFrom" :model="userFrom" :label-width="labelWidth" :label-position="labelPosition"
|
|
|
- @submit.native.prevent>
|
|
|
- <Row :gutter="24">
|
|
|
- <Col span="18">
|
|
|
- <Row>
|
|
|
- <Col span="24">
|
|
|
- <Row>
|
|
|
- <Col>
|
|
|
- <FormItem label="用户搜索:" label-for="nickname">
|
|
|
- <Input v-model="userFrom.nickname" placeholder="请输入" element-id="nickname" clearable
|
|
|
- class="input-add">
|
|
|
- <Select v-model="field_key" slot="prepend" style="width: 80px">
|
|
|
- <Option value="all">全部</Option>
|
|
|
- <Option value="uid">UID</Option>
|
|
|
- <Option value="phone">手机号</Option>
|
|
|
- <Option value="nickname">用户昵称</Option>
|
|
|
- </Select>
|
|
|
- </Input>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- </Col>
|
|
|
- <template v-if="collapse">
|
|
|
- <Col span="18">
|
|
|
- <Row>
|
|
|
- <Col>
|
|
|
- <FormItem label="用户分组:" label-for="group_id">
|
|
|
- <Select v-model="userFrom.group_id" placeholder="请选择" element-id="group_id"
|
|
|
- clearable class="input-add">
|
|
|
- <!-- <Option value="">全部</Option>-->
|
|
|
- <Option :value="item.id" v-for="(item, index) in groupList" :key="index">
|
|
|
- {{ item.group_name }}</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- <Col>
|
|
|
- <FormItem label="用户标签:" label-for="label_id">
|
|
|
- <div class="labelInput acea-row row-between-wrapper input-add"
|
|
|
- @click="openLabelList">
|
|
|
- <div>
|
|
|
- <div v-if="dataLabel.length">
|
|
|
- <Tag closable v-for="(item, index) in dataLabel" :key="index"
|
|
|
- @on-close="closeLabel(item)">{{ item.label_name }}</Tag>
|
|
|
- </div>
|
|
|
- <span class="span" v-else>请选择</span>
|
|
|
- </div>
|
|
|
- <div class="iconfont iconxiayi"></div>
|
|
|
- </div>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- <Col>
|
|
|
- <FormItem label="性别:" label-for="sex">
|
|
|
- <Select v-model="userFrom.sex" placeholder="请选择" clearable class="input-add">
|
|
|
- <!-- <Option value="">全部</Option>-->
|
|
|
- <Option value="1">男</Option>
|
|
|
- <Option value="2">女</Option>
|
|
|
- <Option value="0">未知</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- </Col>
|
|
|
- <Col span="18">
|
|
|
- <Row>
|
|
|
- <Col>
|
|
|
- <FormItem label="会员等级:" label-for="level">
|
|
|
- <Select v-model="userFrom.level" placeholder="请选择" element-id="level" clearable
|
|
|
- class="input-add">
|
|
|
- <!-- <Option value="">全部</Option>-->
|
|
|
- <Option :value="item.id" v-for="(item, index) in levelList" :key="index">
|
|
|
- {{ item.name }}</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- <Col>
|
|
|
- <FormItem label="付费会员:" label-for="isMember">
|
|
|
- <Select v-model="userFrom.isMember" placeholder="请选择" clearable class="input-add">
|
|
|
- <!-- <Option value="">全部</Option>-->
|
|
|
- <Option value="1">是</Option>
|
|
|
- <Option value="0">否</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- <Col>
|
|
|
- <FormItem label="身份:">
|
|
|
- <Select v-model="userFrom.is_promoter" placeholder="请选择" clearable
|
|
|
- class="input-add">
|
|
|
- <!-- <Option value="">全部</Option>-->
|
|
|
- <Option value="1">推广员</Option>
|
|
|
- <Option value="0">普通用户</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- </Col>
|
|
|
+ <!-- 用户-用户列表 -->
|
|
|
+ <div>
|
|
|
+ <Card :bordered="false" dis-hover class="ivu-mt" :padding="0">
|
|
|
+ <div class="padding-add">
|
|
|
+ <!-- 筛选条件 -->
|
|
|
+ <Form
|
|
|
+ ref="userFrom"
|
|
|
+ :model="userFrom"
|
|
|
+ :label-width="labelWidth"
|
|
|
+ :label-position="labelPosition"
|
|
|
+ @submit.native.prevent
|
|
|
+ >
|
|
|
+ <Row :gutter="24">
|
|
|
+ <Col span="18">
|
|
|
+ <Row>
|
|
|
+ <Col span="24">
|
|
|
+ <Row>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="用户搜索:" label-for="nickname">
|
|
|
+ <Input
|
|
|
+ v-model="userFrom.nickname"
|
|
|
+ placeholder="请输入"
|
|
|
+ element-id="nickname"
|
|
|
+ clearable
|
|
|
+ class="input-add"
|
|
|
+ >
|
|
|
+ <Select
|
|
|
+ v-model="field_key"
|
|
|
+ slot="prepend"
|
|
|
+ style="width: 80px"
|
|
|
+ >
|
|
|
+ <Option value="all">全部</Option>
|
|
|
+ <Option value="uid">UID</Option>
|
|
|
+ <Option value="phone">手机号</Option>
|
|
|
+ <Option value="nickname">用户昵称</Option>
|
|
|
+ </Select>
|
|
|
+ </Input>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </Col>
|
|
|
+ <template v-if="collapse">
|
|
|
+ <Col span="18">
|
|
|
+ <Row>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="用户分组:" label-for="group_id">
|
|
|
+ <Select
|
|
|
+ v-model="userFrom.group_id"
|
|
|
+ placeholder="请选择"
|
|
|
+ element-id="group_id"
|
|
|
+ clearable
|
|
|
+ class="input-add"
|
|
|
+ >
|
|
|
+ <!-- <Option value="">全部</Option>-->
|
|
|
+ <Option
|
|
|
+ :value="item.id"
|
|
|
+ v-for="(item, index) in groupList"
|
|
|
+ :key="index"
|
|
|
+ >{{ item.group_name }}</Option
|
|
|
+ >
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="用户标签:" label-for="label_id">
|
|
|
+ <div
|
|
|
+ class="labelInput acea-row row-between-wrapper input-add"
|
|
|
+ @click="openLabelList"
|
|
|
+ >
|
|
|
+ <div>
|
|
|
+ <div v-if="dataLabel.length">
|
|
|
+ <Tag
|
|
|
+ closable
|
|
|
+ v-for="(item, index) in dataLabel"
|
|
|
+ :key="index"
|
|
|
+ @on-close="closeLabel(item)"
|
|
|
+ >{{ item.label_name }}</Tag
|
|
|
+ >
|
|
|
+ </div>
|
|
|
+ <span class="span" v-else>请选择</span>
|
|
|
+ </div>
|
|
|
+ <div class="iconfont iconxiayi"></div>
|
|
|
+ </div>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="性别:" label-for="sex">
|
|
|
+ <Select
|
|
|
+ v-model="userFrom.sex"
|
|
|
+ placeholder="请选择"
|
|
|
+ clearable
|
|
|
+ class="input-add"
|
|
|
+ >
|
|
|
+ <!-- <Option value="">全部</Option>-->
|
|
|
+ <Option value="1">男</Option>
|
|
|
+ <Option value="2">女</Option>
|
|
|
+ <Option value="0">未知</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </Col>
|
|
|
+ <Col span="18">
|
|
|
+ <Row>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="会员等级:" label-for="level">
|
|
|
+ <Select
|
|
|
+ v-model="userFrom.level"
|
|
|
+ placeholder="请选择"
|
|
|
+ element-id="level"
|
|
|
+ clearable
|
|
|
+ class="input-add"
|
|
|
+ >
|
|
|
+ <!-- <Option value="">全部</Option>-->
|
|
|
+ <Option
|
|
|
+ :value="item.id"
|
|
|
+ v-for="(item, index) in levelList"
|
|
|
+ :key="index"
|
|
|
+ >{{ item.name }}</Option
|
|
|
+ >
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="付费会员:" label-for="isMember">
|
|
|
+ <Select
|
|
|
+ v-model="userFrom.isMember"
|
|
|
+ placeholder="请选择"
|
|
|
+ clearable
|
|
|
+ class="input-add"
|
|
|
+ >
|
|
|
+ <!-- <Option value="">全部</Option>-->
|
|
|
+ <Option value="1">是</Option>
|
|
|
+ <Option value="0">否</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="身份:">
|
|
|
+ <Select
|
|
|
+ v-model="userFrom.is_promoter"
|
|
|
+ placeholder="请选择"
|
|
|
+ clearable
|
|
|
+ class="input-add"
|
|
|
+ >
|
|
|
+ <!-- <Option value="">全部</Option>-->
|
|
|
+ <Option value="1">推广员</Option>
|
|
|
+ <Option value="0">普通用户</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </Col>
|
|
|
|
|
|
- <Col span="18">
|
|
|
- <Row>
|
|
|
- <Col class="dateMedia">
|
|
|
- <FormItem label="访问时间:" label-for="user_time">
|
|
|
- <DatePicker :editable="false" @on-change="onchangeTime" :value="timeVal"
|
|
|
- format="yyyy/MM/dd" type="daterange" placement="bottom-start"
|
|
|
- placeholder="自定义时间" :options="options" class="input-add"></DatePicker>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- <Col>
|
|
|
- <FormItem label="访问情况:" label-for="user_time_type">
|
|
|
- <Select v-model="userFrom.user_time_type" placeholder="请选择"
|
|
|
- element-id="user_time_type" clearable class="input-add">
|
|
|
- <!-- <Option value="all">全部</Option>-->
|
|
|
- <Option value="visitno">时间段未访问</Option>
|
|
|
- <Option value="visit">时间段访问过</Option>
|
|
|
- <Option value="add_time">首次访问</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- <Col>
|
|
|
- <FormItem label="下单次数:" label-for="pay_count">
|
|
|
- <Select v-model="userFrom.pay_count" placeholder="请选择" element-id="pay_count"
|
|
|
- clearable class="input-add">
|
|
|
- <!-- <Option value="">全部</Option>-->
|
|
|
- <Option value="-1">0次</Option>
|
|
|
- <Option value="0">1次以上</Option>
|
|
|
- <Option value="1">2次以上</Option>
|
|
|
- <Option value="2">3次以上</Option>
|
|
|
- <Option value="3">4次以上</Option>
|
|
|
- <Option value="4">5次以上</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- </Col>
|
|
|
- <Col span="18">
|
|
|
- <Row>
|
|
|
- <Col>
|
|
|
- <FormItem label="国家:" label-for="country">
|
|
|
- <Select v-model="userFrom.country" placeholder="请选择" element-id="country" clearable
|
|
|
- @on-change="changeCountry" class="input-add">
|
|
|
- <!-- <Option value="">全部</Option>-->
|
|
|
- <Option value="domestic">中国</Option>
|
|
|
- <Option value="abroad">其他</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- <Col v-if="userFrom.country === 'domestic'">
|
|
|
- <FormItem label="省份:">
|
|
|
- <Cascader :data="addresData" change-on-select :value="address" v-model="address"
|
|
|
- @on-change="handleChange" class="input-add"></Cascader>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- </Col>
|
|
|
+ <Col span="18">
|
|
|
+ <Row>
|
|
|
+ <Col class="dateMedia">
|
|
|
+ <FormItem label="访问时间:" label-for="user_time">
|
|
|
+ <DatePicker
|
|
|
+ :editable="false"
|
|
|
+ @on-change="onchangeTime"
|
|
|
+ :value="timeVal"
|
|
|
+ format="yyyy/MM/dd"
|
|
|
+ type="daterange"
|
|
|
+ placement="bottom-start"
|
|
|
+ placeholder="自定义时间"
|
|
|
+ :options="options"
|
|
|
+ class="input-add"
|
|
|
+ ></DatePicker>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="访问情况:" label-for="user_time_type">
|
|
|
+ <Select
|
|
|
+ v-model="userFrom.user_time_type"
|
|
|
+ placeholder="请选择"
|
|
|
+ element-id="user_time_type"
|
|
|
+ clearable
|
|
|
+ class="input-add"
|
|
|
+ >
|
|
|
+ <!-- <Option value="all">全部</Option>-->
|
|
|
+ <Option value="visitno">时间段未访问</Option>
|
|
|
+ <Option value="visit">时间段访问过</Option>
|
|
|
+ <Option value="add_time">首次访问</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="下单次数:" label-for="pay_count">
|
|
|
+ <Select
|
|
|
+ v-model="userFrom.pay_count"
|
|
|
+ placeholder="请选择"
|
|
|
+ element-id="pay_count"
|
|
|
+ clearable
|
|
|
+ class="input-add"
|
|
|
+ >
|
|
|
+ <!-- <Option value="">全部</Option>-->
|
|
|
+ <Option value="-1">0次</Option>
|
|
|
+ <Option value="0">1次以上</Option>
|
|
|
+ <Option value="1">2次以上</Option>
|
|
|
+ <Option value="2">3次以上</Option>
|
|
|
+ <Option value="3">4次以上</Option>
|
|
|
+ <Option value="4">5次以上</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </Col>
|
|
|
+ <Col span="18">
|
|
|
+ <Row>
|
|
|
+ <Col>
|
|
|
+ <FormItem label="国家:" label-for="country">
|
|
|
+ <Select
|
|
|
+ v-model="userFrom.country"
|
|
|
+ placeholder="请选择"
|
|
|
+ element-id="country"
|
|
|
+ clearable
|
|
|
+ @on-change="changeCountry"
|
|
|
+ class="input-add"
|
|
|
+ >
|
|
|
+ <!-- <Option value="">全部</Option>-->
|
|
|
+ <Option value="domestic">中国</Option>
|
|
|
+ <Option value="abroad">其他</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ <Col v-if="userFrom.country === 'domestic'">
|
|
|
+ <FormItem label="省份:">
|
|
|
+ <Cascader
|
|
|
+ :data="addresData"
|
|
|
+ change-on-select
|
|
|
+ :value="address"
|
|
|
+ v-model="address"
|
|
|
+ @on-change="handleChange"
|
|
|
+ class="input-add"
|
|
|
+ ></Cascader>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </Col>
|
|
|
|
|
|
- </template>
|
|
|
- <Col span="6" class="ivu-text-right userFrom">
|
|
|
- <FormItem>
|
|
|
- <Button type="primary" label="default" class="mr15" @click="userSearchs">搜索</Button>
|
|
|
- <Button class="ResetSearch" @click="reset('userFrom')">重置</Button>
|
|
|
- <a v-font="14" class="ivu-ml-8" @click="collapse = !collapse">
|
|
|
- <template v-if="!collapse">
|
|
|
- 展开
|
|
|
- <Icon type="ios-arrow-down" />
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- 收起
|
|
|
- <Icon type="ios-arrow-up" />
|
|
|
- </template>
|
|
|
- </a>
|
|
|
- </FormItem>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- </Form>
|
|
|
- </div>
|
|
|
- </Card>
|
|
|
- <Card :bordered="false" dis-hover class="ivu-mt listbox">
|
|
|
- <div class="new_tab">
|
|
|
- <!-- Tab栏切换 -->
|
|
|
- <Tabs v-model="headeType" @on-click="onClickTab">
|
|
|
- <TabPane :label="item.name" :name="item.type" v-for="(item, index) in headeNum" :key="index" />
|
|
|
- </Tabs>
|
|
|
- </div>
|
|
|
- <Row type="flex" justify="space-between">
|
|
|
- <!-- 相关操作 -->
|
|
|
- <Col span="24">
|
|
|
- <Button v-auth="['admin-user-save']" type="primary" class="mr20" @click="save">添加用户</Button>
|
|
|
- <Tooltip content="本页至少选中一项" :disabled="!!checkUidList.length && isAll==0">
|
|
|
- <Button v-auth="['admin-user-coupon']" type="primary" class="mr20"
|
|
|
- :disabled="!checkUidList.length && isAll==0" @click="onSend">发送优惠券</Button>
|
|
|
- </Tooltip>
|
|
|
- <Tooltip content="本页至少选中一项" :disabled="!!checkUidList.length && isAll==0">
|
|
|
- <Button v-auth="['admin-wechat-news']" class="greens mr20" size="default"
|
|
|
- :disabled="!checkUidList.length && isAll==0" @click="onSendPic"
|
|
|
- v-if="userFrom.user_type === 'wechat'">
|
|
|
- <Icon type="md-list"></Icon>
|
|
|
- 发送图文消息
|
|
|
- </Button>
|
|
|
- </Tooltip>
|
|
|
- <Tooltip content="本页至少选中一项" :disabled="!!checkUidList.length && isAll==0">
|
|
|
- <Button v-auth="['admin-user-set_label']" class="mr20" :disabled="!checkUidList.length && isAll==0"
|
|
|
- @click="setBatch">批量设置</Button>
|
|
|
- </Tooltip>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- <!-- 用户列表表格 -->
|
|
|
- <vxe-table ref="xTable" class="mt25" :loading="loading" row-id="uid" :expand-config="{accordion: true}"
|
|
|
- :checkbox-config="{reserve: true}" @checkbox-all="checkboxAll" @checkbox-change="checkboxItem"
|
|
|
- :data="userLists">
|
|
|
- <vxe-column type="" width="0"></vxe-column>
|
|
|
- <vxe-column type="expand" width="35">
|
|
|
- <template #content="{ row }">
|
|
|
- <div class="tdinfo">
|
|
|
- <Row class="expand-row">
|
|
|
- <Col span="6">
|
|
|
- <span class="expand-key">首次访问:</span>
|
|
|
- <span class="expand-value"> {{row.add_time | formatDate}}</span>
|
|
|
- </Col>
|
|
|
- <Col span="6">
|
|
|
- <span class="expand-key">近次访问:</span>
|
|
|
- <span class="expand-value">{{row.last_time | formatDate}}</span>
|
|
|
- </Col>
|
|
|
- <Col span="6">
|
|
|
- <span class="expand-key">身份证号:</span>
|
|
|
- <span class="expand-value">{{row.card_id}}</span>
|
|
|
- </Col>
|
|
|
- <Col span="6">
|
|
|
- <span class="expand-key">真实姓名:</span>
|
|
|
- <span class="expand-value">{{row.real_name}}</span>
|
|
|
- </Col>
|
|
|
- <!-- <Col span="6">
|
|
|
+ </template>
|
|
|
+ <Col span="6" class="ivu-text-right userFrom">
|
|
|
+ <FormItem>
|
|
|
+ <Button
|
|
|
+ type="primary"
|
|
|
+ label="default"
|
|
|
+ class="mr15"
|
|
|
+ @click="userSearchs"
|
|
|
+ >搜索</Button
|
|
|
+ >
|
|
|
+ <Button class="ResetSearch" @click="reset('userFrom')"
|
|
|
+ >重置</Button
|
|
|
+ >
|
|
|
+ <a v-font="14" class="ivu-ml-8" @click="collapse = !collapse">
|
|
|
+ <template v-if="!collapse">
|
|
|
+ 展开 <Icon type="ios-arrow-down" />
|
|
|
+ </template>
|
|
|
+ <template v-else>
|
|
|
+ 收起 <Icon type="ios-arrow-up" />
|
|
|
+ </template>
|
|
|
+ </a>
|
|
|
+ </FormItem>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </Form>
|
|
|
+ </div>
|
|
|
+ </Card>
|
|
|
+ <Card :bordered="false" dis-hover class="ivu-mt listbox">
|
|
|
+ <div class="new_tab">
|
|
|
+ <!-- Tab栏切换 -->
|
|
|
+ <Tabs v-model="headeType" @on-click="onClickTab">
|
|
|
+ <TabPane
|
|
|
+ :label="item.name"
|
|
|
+ :name="item.type"
|
|
|
+ v-for="(item, index) in headeNum"
|
|
|
+ :key="index"
|
|
|
+ />
|
|
|
+ </Tabs>
|
|
|
+ </div>
|
|
|
+ <Row type="flex" justify="space-between">
|
|
|
+ <!-- 相关操作 -->
|
|
|
+ <Col span="24">
|
|
|
+ <Button
|
|
|
+ v-auth="['admin-user-save']"
|
|
|
+ type="primary"
|
|
|
+ class="mr20"
|
|
|
+ @click="save"
|
|
|
+ >添加用户</Button
|
|
|
+ >
|
|
|
+ <Tooltip
|
|
|
+ content="本页至少选中一项"
|
|
|
+ :disabled="!!checkUidList.length && isAll==0"
|
|
|
+ >
|
|
|
+ <Button
|
|
|
+ v-auth="['admin-user-coupon']"
|
|
|
+ type="primary"
|
|
|
+ class="mr20"
|
|
|
+ :disabled="!checkUidList.length && isAll==0"
|
|
|
+ @click="onSend"
|
|
|
+ >发送优惠券</Button
|
|
|
+ >
|
|
|
+ </Tooltip>
|
|
|
+ <Tooltip
|
|
|
+ content="本页至少选中一项"
|
|
|
+ :disabled="!!checkUidList.length && isAll==0"
|
|
|
+ >
|
|
|
+ <Button
|
|
|
+ v-auth="['admin-wechat-news']"
|
|
|
+ class="greens mr20"
|
|
|
+ size="default"
|
|
|
+ :disabled="!checkUidList.length && isAll==0"
|
|
|
+ @click="onSendPic"
|
|
|
+ v-if="userFrom.user_type === 'wechat'"
|
|
|
+ >
|
|
|
+ <Icon type="md-list"></Icon>
|
|
|
+ 发送图文消息
|
|
|
+ </Button>
|
|
|
+ </Tooltip>
|
|
|
+ <Tooltip
|
|
|
+ content="本页至少选中一项"
|
|
|
+ :disabled="!!checkUidList.length && isAll==0"
|
|
|
+ >
|
|
|
+ <Button
|
|
|
+ v-auth="['admin-user-set_label']"
|
|
|
+ class="mr20"
|
|
|
+ :disabled="!checkUidList.length && isAll==0"
|
|
|
+ @click="setBatch"
|
|
|
+ >批量设置</Button
|
|
|
+ >
|
|
|
+ </Tooltip>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ <!-- 用户列表表格 -->
|
|
|
+ <vxe-table
|
|
|
+ ref="xTable"
|
|
|
+ class="mt25"
|
|
|
+ :loading="loading"
|
|
|
+ row-id="uid"
|
|
|
+ :expand-config="{accordion: true}"
|
|
|
+ :checkbox-config="{reserve: true}"
|
|
|
+ @checkbox-all="checkboxAll"
|
|
|
+ @checkbox-change="checkboxItem"
|
|
|
+ :data="userLists">
|
|
|
+ <vxe-column type="" width="0"></vxe-column>
|
|
|
+ <vxe-column type="expand" width="35">
|
|
|
+ <template #content="{ row }">
|
|
|
+ <div class="tdinfo">
|
|
|
+ <Row class="expand-row">
|
|
|
+ <Col span="6">
|
|
|
+ <span class="expand-key">首次访问:</span>
|
|
|
+ <span class="expand-value"> {{row.add_time | formatDate}}</span>
|
|
|
+ </Col>
|
|
|
+ <Col span="6">
|
|
|
+ <span class="expand-key">近次访问:</span>
|
|
|
+ <span class="expand-value">{{row.last_time | formatDate}}</span>
|
|
|
+ </Col>
|
|
|
+ <Col span="6">
|
|
|
+ <span class="expand-key">身份证号:</span>
|
|
|
+ <span class="expand-value">{{row.card_id}}</span>
|
|
|
+ </Col>
|
|
|
+ <Col span="6">
|
|
|
+ <span class="expand-key">真实姓名:</span>
|
|
|
+ <span class="expand-value">{{row.real_name}}</span>
|
|
|
+ </Col>
|
|
|
+ <!-- <Col span="6">
|
|
|
<span class="expand-key">手机号:</span>
|
|
|
<span class="expand-value">{{row.phone}}</span>
|
|
|
</Col> -->
|
|
|
- </Row>
|
|
|
- <Row class="expand-row">
|
|
|
- <!-- <Col span="6">
|
|
|
+ </Row>
|
|
|
+ <Row class="expand-row">
|
|
|
+ <!-- <Col span="6">
|
|
|
<span class="expand-key">真实姓名:</span>
|
|
|
<span class="expand-value">{{row.real_name}}</span>
|
|
|
</Col> -->
|
|
|
- <Col span="6">
|
|
|
- <span class="expand-key">标签:</span>
|
|
|
- <span class="expand-value">{{row.labels}}</span>
|
|
|
- </Col>
|
|
|
- <Col span="6">
|
|
|
- <span class="expand-key">生日:</span>
|
|
|
- <span class="expand-value">{{row.birthday}}</span>
|
|
|
- </Col>
|
|
|
- <Col span="6">
|
|
|
- <span class="expand-key">地址:</span>
|
|
|
- <span class="expand-value">{{row.addres}}</span>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- <Row class="expand-row">
|
|
|
- <Col span="6">
|
|
|
- <span class="expand-key">备注:</span>
|
|
|
- <span class="expand-value">{{row.mark}}</span>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </vxe-column>
|
|
|
- <vxe-column type="checkbox" width="100">
|
|
|
- <template #header>
|
|
|
- <div>
|
|
|
- <Dropdown transfer @on-click="allPages">
|
|
|
- <a href="javascript:void(0)" class="acea-row row-middle">
|
|
|
- <span>全选({{isAll==1?(total-checkUidList.length):checkUidList.length}})</span>
|
|
|
- <Icon type="ios-arrow-down"></Icon>
|
|
|
- </a>
|
|
|
- <template #list>
|
|
|
- <DropdownMenu>
|
|
|
- <DropdownItem name="0">当前页</DropdownItem>
|
|
|
- <DropdownItem name="1">所有页</DropdownItem>
|
|
|
- </DropdownMenu>
|
|
|
- </template>
|
|
|
- </Dropdown>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </vxe-column>
|
|
|
- <vxe-column field="uid" title="UID" width="60"></vxe-column>
|
|
|
- <vxe-column field="avatars" title="头像" width="50">
|
|
|
- <template v-slot="{ row }">
|
|
|
- <viewer>
|
|
|
- <div class="tabBox_img">
|
|
|
- <img v-lazy="row.avatar" />
|
|
|
- </div>
|
|
|
- </viewer>
|
|
|
- </template>
|
|
|
- </vxe-column>
|
|
|
- <vxe-column field="nickname" title="昵称" min-width="150">
|
|
|
- <template v-slot="{ row }">
|
|
|
- <div class="acea-row">
|
|
|
- <Icon type="md-male" v-show="row.sex === '男'" color="#2db7f5" size="15" class="mr5" />
|
|
|
- <Icon type="md-female" v-show="row.sex === '女'" color="#ed4014" size="15" class="mr5" />
|
|
|
- <div v-if="row.delete_time != null" style="color:#ed4014;">{{row.nickname}} (已注销)</div>
|
|
|
- <div v-else v-text="row.nickname"></div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </vxe-column>
|
|
|
- <vxe-column field="isMember" title="付费会员" min-width="90">
|
|
|
- <template v-slot="{ row }">
|
|
|
- <div>{{ row.isMember ? "是" : "否" }}</div>
|
|
|
- </template>
|
|
|
- </vxe-column>
|
|
|
- <vxe-column field="level" title="用户等级" min-width="90"></vxe-column>
|
|
|
- <vxe-column field="group_id" title="分组" min-width="100"></vxe-column>
|
|
|
- <vxe-column field="phone" title="手机号" min-width="110"></vxe-column>
|
|
|
- <vxe-column field="user_type" title="用户类型" min-width="100"></vxe-column>
|
|
|
- <vxe-column field="spread_uid_nickname" title="推荐人" min-width="100"></vxe-column>
|
|
|
- <vxe-column field="now_money" title="余额" min-width="100"></vxe-column>
|
|
|
- <vxe-column field="action" title="操作" align="center" width="180" fixed="right">
|
|
|
- <template v-slot="{ row }">
|
|
|
- <a @click="lookJl(row)">奖励股权明细</a>
|
|
|
- <Divider type="vertical" />
|
|
|
- <span v-if="row.delete_time != null" style="color: #c5c8ce;">编辑</span>
|
|
|
- <a v-else @click="edit(row)">编辑</a>
|
|
|
- <Divider type="vertical" v-if="row.is_extend_info" />
|
|
|
-
|
|
|
- <a @click="extendInfo(row)" v-if="row.is_extend_info">信息补充</a>
|
|
|
- <Divider type="vertical" />
|
|
|
- <a @click="changeMenu(row, '1')">详情</a>
|
|
|
- </template>
|
|
|
- </vxe-column>
|
|
|
- </vxe-table>
|
|
|
- <vxe-pager class="mt20" border size="medium" :page-size="userFrom.limit" :current-page="userFrom.page"
|
|
|
- :total="total" :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Total']"
|
|
|
- @page-change="pageChange">
|
|
|
- </vxe-pager>
|
|
|
- </Card>
|
|
|
- <!-- 用户标签 -->
|
|
|
- <Modal v-model="labelListShow" scrollable title="选择用户标签" :closable="true" width="540" :footer-hide="true"
|
|
|
- :mask-closable="false">
|
|
|
- <labelList ref="labelList" @activeData="activeData" @close="labelListClose"></labelList>
|
|
|
- </Modal>
|
|
|
- <!-- 编辑表单 积分余额-->
|
|
|
- <edit-from ref="edits" :FromData="FromData" :userEdit="1" @submitFail="submitFail"></edit-from>
|
|
|
- <!-- 发送优惠券-->
|
|
|
- <send-from ref="sends" :is-all="isAll" :where="userFrom" :userIds="checkUidList.join(',')"></send-from>
|
|
|
- <!-- 会员详情-->
|
|
|
- <user-details ref="userDetails" :group-list="groupList"></user-details>
|
|
|
- <!--发送图文消息 -->
|
|
|
- <Modal v-model="modal13" scrollable title="发送消息" width="1200" height="800" footer-hide class="modelBox">
|
|
|
- <news-category v-if="modal13" :isShowSend="isShowSend" :is-all="isAll" :where="userFrom"
|
|
|
- :userIds="checkUidList.join(',')" :scrollerHeight="scrollerHeight" :contentTop="contentTop"
|
|
|
- :contentWidth="contentWidth" :maxCols="maxCols"></news-category>
|
|
|
- </Modal>
|
|
|
- <!--修改推广人-->
|
|
|
- <Modal v-model="promoterShow" scrollable title="修改推广人" class="order_box" :closable="false">
|
|
|
- <Form ref="formInline" :model="formInline" :label-width="100" @submit.native.prevent>
|
|
|
- <FormItem label="用户头像:" prop="image">
|
|
|
- <div class="picBox" @click="customer">
|
|
|
- <div class="pictrue" v-if="formInline.image">
|
|
|
- <img v-lazy="formInline.image" />
|
|
|
- </div>
|
|
|
- <div class="upLoad acea-row row-center-wrapper" v-else>
|
|
|
- <Icon type="ios-camera-outline" size="26" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </FormItem>
|
|
|
- </Form>
|
|
|
- <div slot="footer">
|
|
|
- <Button type="primary" @click="putSend('formInline')">提交</Button>
|
|
|
- <Button @click="cancel('formInline')">取消</Button>
|
|
|
- </div>
|
|
|
- </Modal>
|
|
|
- <Modal v-model="customerShow" scrollable title="请选择商城用户" :closable="false" width="900">
|
|
|
- <customerInfo v-if="customerShow" @imageObject="imageObject"></customerInfo>
|
|
|
- </Modal>
|
|
|
- <Modal v-model="labelShow" scrollable title="选择用户标签" :closable="true" width="540" :footer-hide="true">
|
|
|
- <userLabel :uid="labelActive.uid" @close="labelClose"></userLabel>
|
|
|
- </Modal>
|
|
|
- <!-- 批量设置 -->
|
|
|
- <Modal v-model="batchModal" title="批量设置" width="750" class-name="batch-modal"
|
|
|
- @on-visible-change="batchVisibleChange">
|
|
|
- <Alert show-icon>每次只能修改一项,如需修改多项,请多次操作。</Alert>
|
|
|
- <Row type="flex" align="middle">
|
|
|
- <Col span="4">
|
|
|
- <Menu :active-name="menuActive" width="auto" @on-select="menuSelect">
|
|
|
- <MenuItem :name="1">用户分组</MenuItem>
|
|
|
- <MenuItem :name="2">用户标签</MenuItem>
|
|
|
- <MenuItem :name="3">用户等级</MenuItem>
|
|
|
- <MenuItem :name="4">积分余额</MenuItem>
|
|
|
- <MenuItem :name="5">赠送会员</MenuItem>
|
|
|
- <MenuItem :name="6">上级推广人</MenuItem>
|
|
|
- </Menu>
|
|
|
- </Col>
|
|
|
- <Col span="20">
|
|
|
- <Form :model="batchData" :label-width="122">
|
|
|
- <FormItem v-if="menuActive === 1" label="用户分组:">
|
|
|
- <Select v-model="batchData.group_id">
|
|
|
- <Option v-for="item in groupList" :key="item.id" :value="item.id">{{ item.group_name }}
|
|
|
- </Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- <FormItem v-if="menuActive === 2" label="用户标签:">
|
|
|
- <div class="select-tag" @click="openLabelList">
|
|
|
- <div v-if="batchLabel.length">
|
|
|
- <Tag v-for="item in batchLabel" :key="item.id" closable @on-close="tagClose(item.id)">
|
|
|
- {{ item.label_name }}</Tag>
|
|
|
- </div>
|
|
|
- <span v-else class="placeholder">请选择</span>
|
|
|
- <Icon type="ios-arrow-down" />
|
|
|
- </div>
|
|
|
- </FormItem>
|
|
|
- <FormItem v-if="menuActive === 3" label="用户等级:">
|
|
|
- <Select v-model="batchData.level_id">
|
|
|
- <Option v-for="item in levelList" :key="item.id" :value="item.id">{{ item.name }}</Option>
|
|
|
- </Select>
|
|
|
- </FormItem>
|
|
|
- <FormItem v-if="menuActive === 4" label="修改余额:">
|
|
|
- <RadioGroup v-model="batchData.money_status">
|
|
|
- <Radio :label="1">增加</Radio>
|
|
|
- <Radio :label="2">减少</Radio>
|
|
|
- </RadioGroup>
|
|
|
- </FormItem>
|
|
|
- <FormItem v-if="menuActive === 4" label="余额:">
|
|
|
- <InputNumber v-model="batchData.money" :min="0" :max="999999"></InputNumber>
|
|
|
- </FormItem>
|
|
|
- <FormItem v-if="menuActive === 4" label="修改积分:">
|
|
|
- <RadioGroup v-model="batchData.integration_status">
|
|
|
- <Radio :label="1">增加</Radio>
|
|
|
- <Radio :label="2">减少</Radio>
|
|
|
- </RadioGroup>
|
|
|
- </FormItem>
|
|
|
- <FormItem v-if="menuActive === 4" label="积分:">
|
|
|
- <InputNumber v-model="batchData.integration" :min="0" :max="999999"></InputNumber>
|
|
|
- </FormItem>
|
|
|
- <FormItem v-if="menuActive === 5" label="修改时长:">
|
|
|
- <RadioGroup v-model="batchData.days_status">
|
|
|
- <Radio :label="1">增加</Radio>
|
|
|
- <Radio :label="2">减少</Radio>
|
|
|
- </RadioGroup>
|
|
|
- </FormItem>
|
|
|
- <FormItem v-if="menuActive === 5" label="修改时长(天):">
|
|
|
- <InputNumber v-model="batchData.day" :min="0" :max="999999"></InputNumber>
|
|
|
- </FormItem>
|
|
|
- <FormItem v-if="menuActive === 6" label="上级推广员:">
|
|
|
- <Input :value="spread_name" placeholder="请选择" icon="ios-arrow-down" @on-click="customer"
|
|
|
- @on-focus="customer"></Input>
|
|
|
- </FormItem>
|
|
|
- </Form>
|
|
|
- </Col>
|
|
|
- </Row>
|
|
|
- <div slot="footer">
|
|
|
- <Button @click="cancelBatch">取消</Button>
|
|
|
- <Button type="primary" @click="saveBatch">保存</Button>
|
|
|
- </div>
|
|
|
- </Modal>
|
|
|
- <user-jl ref="userJlList"></user-jl> >
|
|
|
- </div>
|
|
|
+ <Col span="6">
|
|
|
+ <span class="expand-key">标签:</span>
|
|
|
+ <span class="expand-value">{{row.labels}}</span>
|
|
|
+ </Col>
|
|
|
+ <Col span="6">
|
|
|
+ <span class="expand-key">生日:</span>
|
|
|
+ <span class="expand-value">{{row.birthday}}</span>
|
|
|
+ </Col>
|
|
|
+ <Col span="6">
|
|
|
+ <span class="expand-key">地址:</span>
|
|
|
+ <span class="expand-value">{{row.addres}}</span>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ <Row class="expand-row">
|
|
|
+ <Col span="6">
|
|
|
+ <span class="expand-key">备注:</span>
|
|
|
+ <span class="expand-value">{{row.mark}}</span>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </vxe-column>
|
|
|
+ <vxe-column type="checkbox" width="100">
|
|
|
+ <template #header>
|
|
|
+ <div>
|
|
|
+ <Dropdown transfer @on-click="allPages">
|
|
|
+ <a href="javascript:void(0)" class="acea-row row-middle">
|
|
|
+ <span>全选({{isAll==1?(total-checkUidList.length):checkUidList.length}})</span>
|
|
|
+ <Icon type="ios-arrow-down"></Icon>
|
|
|
+ </a>
|
|
|
+ <template #list>
|
|
|
+ <DropdownMenu>
|
|
|
+ <DropdownItem name="0">当前页</DropdownItem>
|
|
|
+ <DropdownItem name="1">所有页</DropdownItem>
|
|
|
+ </DropdownMenu>
|
|
|
+ </template>
|
|
|
+ </Dropdown>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </vxe-column>
|
|
|
+ <vxe-column field="uid" title="UID" width="60"></vxe-column>
|
|
|
+ <vxe-column field="avatars" title="头像" width="50">
|
|
|
+ <template v-slot="{ row }">
|
|
|
+ <viewer>
|
|
|
+ <div class="tabBox_img">
|
|
|
+ <img v-lazy="row.avatar" />
|
|
|
+ </div>
|
|
|
+ </viewer>
|
|
|
+ </template>
|
|
|
+ </vxe-column>
|
|
|
+ <vxe-column field="nickname" title="昵称" min-width="150">
|
|
|
+ <template v-slot="{ row }">
|
|
|
+ <div class="acea-row">
|
|
|
+ <Icon
|
|
|
+ type="md-male"
|
|
|
+ v-show="row.sex === '男'"
|
|
|
+ color="#2db7f5"
|
|
|
+ size="15"
|
|
|
+ class="mr5"
|
|
|
+ />
|
|
|
+ <Icon
|
|
|
+ type="md-female"
|
|
|
+ v-show="row.sex === '女'"
|
|
|
+ color="#ed4014"
|
|
|
+ size="15"
|
|
|
+ class="mr5"
|
|
|
+ />
|
|
|
+ <div v-if="row.delete_time != null" style="color:#ed4014;">{{row.nickname}} (已注销)</div>
|
|
|
+ <div v-else v-text="row.nickname"></div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </vxe-column>
|
|
|
+ <vxe-column field="isMember" title="付费会员" min-width="90">
|
|
|
+ <template v-slot="{ row }">
|
|
|
+ <div>{{ row.isMember ? "是" : "否" }}</div>
|
|
|
+ </template>
|
|
|
+ </vxe-column>
|
|
|
+ <vxe-column field="level" title="用户等级" min-width="90"></vxe-column>
|
|
|
+ <vxe-column field="group_id" title="分组" min-width="100"></vxe-column>
|
|
|
+ <vxe-column field="phone" title="手机号" min-width="110"></vxe-column>
|
|
|
+ <vxe-column field="user_type" title="用户类型" min-width="100"></vxe-column>
|
|
|
+ <vxe-column field="spread_uid_nickname" title="推荐人" min-width="100"></vxe-column>
|
|
|
+ <vxe-column field="now_money" title="余额" min-width="100"></vxe-column>
|
|
|
+ <vxe-column field="action" title="操作" align="center" width="180" fixed="right">
|
|
|
+ <template v-slot="{ row }">
|
|
|
+ <span v-if="row.delete_time != null" style="color: #c5c8ce;">编辑</span>
|
|
|
+ <a v-else @click="edit(row)">编辑</a>
|
|
|
+ <Divider type="vertical" v-if="row.is_extend_info"/>
|
|
|
+ <a @click="extendInfo(row)" v-if="row.is_extend_info">信息补充</a>
|
|
|
+ <Divider type="vertical" />
|
|
|
+ <a @click="changeMenu(row, '1')">详情</a>
|
|
|
+ </template>
|
|
|
+ </vxe-column>
|
|
|
+ </vxe-table>
|
|
|
+ <vxe-pager class="mt20" border size="medium" :page-size="userFrom.limit" :current-page="userFrom.page" :total="total"
|
|
|
+ :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Total']" @page-change="pageChange">
|
|
|
+ </vxe-pager>
|
|
|
+ </Card>
|
|
|
+ <!-- 用户标签 -->
|
|
|
+ <Modal
|
|
|
+ v-model="labelListShow"
|
|
|
+ scrollable
|
|
|
+ title="选择用户标签"
|
|
|
+ :closable="true"
|
|
|
+ width="540"
|
|
|
+ :footer-hide="true"
|
|
|
+ :mask-closable="false"
|
|
|
+ >
|
|
|
+ <labelList
|
|
|
+ ref="labelList"
|
|
|
+ @activeData="activeData"
|
|
|
+ @close="labelListClose"
|
|
|
+ ></labelList>
|
|
|
+ </Modal>
|
|
|
+ <!-- 编辑表单 积分余额-->
|
|
|
+ <edit-from
|
|
|
+ ref="edits"
|
|
|
+ :FromData="FromData"
|
|
|
+ :userEdit="1"
|
|
|
+ @submitFail="submitFail"
|
|
|
+ ></edit-from>
|
|
|
+ <!-- 发送优惠券-->
|
|
|
+ <send-from
|
|
|
+ ref="sends"
|
|
|
+ :is-all="isAll"
|
|
|
+ :where="userFrom"
|
|
|
+ :userIds="checkUidList.join(',')"
|
|
|
+ ></send-from>
|
|
|
+ <!-- 会员详情-->
|
|
|
+ <user-details ref="userDetails" :group-list="groupList"></user-details>
|
|
|
+ <!--发送图文消息 -->
|
|
|
+ <Modal
|
|
|
+ v-model="modal13"
|
|
|
+ scrollable
|
|
|
+ title="发送消息"
|
|
|
+ width="1200"
|
|
|
+ height="800"
|
|
|
+ footer-hide
|
|
|
+ class="modelBox"
|
|
|
+ >
|
|
|
+ <news-category
|
|
|
+ v-if="modal13"
|
|
|
+ :isShowSend="isShowSend"
|
|
|
+ :is-all="isAll"
|
|
|
+ :where="userFrom"
|
|
|
+ :userIds="checkUidList.join(',')"
|
|
|
+ :scrollerHeight="scrollerHeight"
|
|
|
+ :contentTop="contentTop"
|
|
|
+ :contentWidth="contentWidth"
|
|
|
+ :maxCols="maxCols"
|
|
|
+ ></news-category>
|
|
|
+ </Modal>
|
|
|
+ <!--修改推广人-->
|
|
|
+ <Modal
|
|
|
+ v-model="promoterShow"
|
|
|
+ scrollable
|
|
|
+ title="修改推广人"
|
|
|
+ class="order_box"
|
|
|
+ :closable="false"
|
|
|
+ >
|
|
|
+ <Form
|
|
|
+ ref="formInline"
|
|
|
+ :model="formInline"
|
|
|
+ :label-width="100"
|
|
|
+ @submit.native.prevent
|
|
|
+ >
|
|
|
+ <FormItem label="用户头像:" prop="image">
|
|
|
+ <div class="picBox" @click="customer">
|
|
|
+ <div class="pictrue" v-if="formInline.image">
|
|
|
+ <img v-lazy="formInline.image" />
|
|
|
+ </div>
|
|
|
+ <div class="upLoad acea-row row-center-wrapper" v-else>
|
|
|
+ <Icon type="ios-camera-outline" size="26" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </FormItem>
|
|
|
+ </Form>
|
|
|
+ <div slot="footer">
|
|
|
+ <Button type="primary" @click="putSend('formInline')">提交</Button>
|
|
|
+ <Button @click="cancel('formInline')">取消</Button>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ <Modal
|
|
|
+ v-model="customerShow"
|
|
|
+ scrollable
|
|
|
+ title="请选择商城用户"
|
|
|
+ :closable="false"
|
|
|
+ width="900"
|
|
|
+ >
|
|
|
+ <customerInfo
|
|
|
+ v-if="customerShow"
|
|
|
+ @imageObject="imageObject"
|
|
|
+ ></customerInfo>
|
|
|
+ </Modal>
|
|
|
+ <Modal
|
|
|
+ v-model="labelShow"
|
|
|
+ scrollable
|
|
|
+ title="选择用户标签"
|
|
|
+ :closable="true"
|
|
|
+ width="540"
|
|
|
+ :footer-hide="true"
|
|
|
+ >
|
|
|
+ <userLabel :uid="labelActive.uid" @close="labelClose"></userLabel>
|
|
|
+ </Modal>
|
|
|
+ <!-- 批量设置 -->
|
|
|
+ <Modal v-model="batchModal" title="批量设置" width="750" class-name="batch-modal" @on-visible-change="batchVisibleChange">
|
|
|
+ <Alert show-icon>每次只能修改一项,如需修改多项,请多次操作。</Alert>
|
|
|
+ <Row type="flex" align="middle">
|
|
|
+ <Col span="4">
|
|
|
+ <Menu :active-name="menuActive" width="auto" @on-select="menuSelect">
|
|
|
+ <MenuItem :name="1">用户分组</MenuItem>
|
|
|
+ <MenuItem :name="2">用户标签</MenuItem>
|
|
|
+ <MenuItem :name="3">用户等级</MenuItem>
|
|
|
+ <MenuItem :name="4">积分余额</MenuItem>
|
|
|
+ <MenuItem :name="5">赠送会员</MenuItem>
|
|
|
+ <MenuItem :name="6">上级推广人</MenuItem>
|
|
|
+ </Menu>
|
|
|
+ </Col>
|
|
|
+ <Col span="20">
|
|
|
+ <Form :model="batchData" :label-width="122">
|
|
|
+ <FormItem v-if="menuActive === 1" label="用户分组:">
|
|
|
+ <Select v-model="batchData.group_id">
|
|
|
+ <Option v-for="item in groupList" :key="item.id" :value="item.id">{{ item.group_name }}</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem v-if="menuActive === 2" label="用户标签:">
|
|
|
+ <div class="select-tag" @click="openLabelList">
|
|
|
+ <div v-if="batchLabel.length">
|
|
|
+ <Tag v-for="item in batchLabel" :key="item.id" closable @on-close="tagClose(item.id)">{{ item.label_name }}</Tag>
|
|
|
+ </div>
|
|
|
+ <span v-else class="placeholder">请选择</span>
|
|
|
+ <Icon type="ios-arrow-down" />
|
|
|
+ </div>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem v-if="menuActive === 3" label="用户等级:">
|
|
|
+ <Select v-model="batchData.level_id">
|
|
|
+ <Option v-for="item in levelList" :key="item.id" :value="item.id">{{ item.name }}</Option>
|
|
|
+ </Select>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem v-if="menuActive === 4" label="修改余额:">
|
|
|
+ <RadioGroup v-model="batchData.money_status">
|
|
|
+ <Radio :label="1">增加</Radio>
|
|
|
+ <Radio :label="2">减少</Radio>
|
|
|
+ </RadioGroup>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem v-if="menuActive === 4" label="余额:">
|
|
|
+ <InputNumber v-model="batchData.money" :min="0" :max="999999"></InputNumber>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem v-if="menuActive === 4" label="修改积分:">
|
|
|
+ <RadioGroup v-model="batchData.integration_status">
|
|
|
+ <Radio :label="1">增加</Radio>
|
|
|
+ <Radio :label="2">减少</Radio>
|
|
|
+ </RadioGroup>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem v-if="menuActive === 4" label="积分:">
|
|
|
+ <InputNumber v-model="batchData.integration" :min="0" :max="999999"></InputNumber>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem v-if="menuActive === 5" label="修改时长:">
|
|
|
+ <RadioGroup v-model="batchData.days_status">
|
|
|
+ <Radio :label="1">增加</Radio>
|
|
|
+ <Radio :label="2">减少</Radio>
|
|
|
+ </RadioGroup>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem v-if="menuActive === 5" label="修改时长(天):">
|
|
|
+ <InputNumber v-model="batchData.day" :min="0" :max="999999"></InputNumber>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem v-if="menuActive === 6" label="上级推广员:">
|
|
|
+ <Input :value="spread_name" placeholder="请选择" icon="ios-arrow-down" @on-click="customer" @on-focus="customer"></Input>
|
|
|
+ </FormItem>
|
|
|
+ </Form>
|
|
|
+ </Col>
|
|
|
+ </Row>
|
|
|
+ <div slot="footer">
|
|
|
+ <Button @click="cancelBatch">取消</Button>
|
|
|
+ <Button type="primary" @click="saveBatch">保存</Button>
|
|
|
+ </div>
|
|
|
+ </Modal>
|
|
|
+ </div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
- import {
|
|
|
- formatDate
|
|
|
- } from '@/utils/validate';
|
|
|
- import userLabel from "../../../components/userLabel";
|
|
|
- import labelList from "@/components/labelList";
|
|
|
- import {
|
|
|
- mapState
|
|
|
- } from "vuex";
|
|
|
- import expandRow from "./tableExpand.vue";
|
|
|
- import {
|
|
|
- userList,
|
|
|
- getUserData,
|
|
|
- isShowApi,
|
|
|
- editOtherApi,
|
|
|
- giveLevelApi,
|
|
|
- userSetGroup,
|
|
|
- userGroupApi,
|
|
|
- levelListApi,
|
|
|
- userSetLabelApi,
|
|
|
- userLabelApi,
|
|
|
- userSynchro,
|
|
|
- getUserSaveForm,
|
|
|
- giveLevelTimeApi,
|
|
|
- extendInfo,
|
|
|
- batchProcess
|
|
|
- } from "@/api/user";
|
|
|
- import {
|
|
|
- agentSpreadApi
|
|
|
- } from "@/api/agent";
|
|
|
- import editFrom from "../../../components/from/from";
|
|
|
- import sendFrom from "@/components/sendCoupons/index";
|
|
|
- import userDetails from "./handle/userDetails";
|
|
|
- import newsCategory from "@/components/newsCategory/index";
|
|
|
- import city from "@/utils/city";
|
|
|
- import customerInfo from "@/components/customerInfo";
|
|
|
- import userJl from "./handle/userJl.vue";
|
|
|
- export default {
|
|
|
- name: "user_list",
|
|
|
- filters: {
|
|
|
- formatDate(time) {
|
|
|
- if (time !== 0) {
|
|
|
- let date = new Date(time * 1000);
|
|
|
- return formatDate(date, 'yyyy-MM-dd hh:mm');
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- components: {
|
|
|
- userJl,
|
|
|
- expandRow,
|
|
|
- editFrom,
|
|
|
- sendFrom,
|
|
|
- userDetails,
|
|
|
- newsCategory,
|
|
|
- customerInfo,
|
|
|
- userLabel,
|
|
|
- labelList,
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- dataLabel: [],
|
|
|
- labelListShow: false,
|
|
|
- labelShow: false,
|
|
|
- customerShow: false,
|
|
|
- promoterShow: false,
|
|
|
- labelActive: {
|
|
|
- uid: 0,
|
|
|
- },
|
|
|
- formInline: {
|
|
|
- uid: 0,
|
|
|
- spread_uid: 0,
|
|
|
- image: "",
|
|
|
- },
|
|
|
- options: {
|
|
|
- shortcuts: [{
|
|
|
- text: "今天",
|
|
|
- value() {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- start.setTime(
|
|
|
- new Date(
|
|
|
- new Date().getFullYear(),
|
|
|
- new Date().getMonth(),
|
|
|
- new Date().getDate()
|
|
|
- )
|
|
|
- );
|
|
|
- return [start, end];
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- text: "昨天",
|
|
|
- value() {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- start.setTime(
|
|
|
- start.setTime(
|
|
|
- new Date(
|
|
|
- new Date().getFullYear(),
|
|
|
- new Date().getMonth(),
|
|
|
- new Date().getDate() - 1
|
|
|
- )
|
|
|
- )
|
|
|
- );
|
|
|
- end.setTime(
|
|
|
- end.setTime(
|
|
|
- new Date(
|
|
|
- new Date().getFullYear(),
|
|
|
- new Date().getMonth(),
|
|
|
- new Date().getDate() - 1
|
|
|
- )
|
|
|
- )
|
|
|
- );
|
|
|
- return [start, end];
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- text: "最近7天",
|
|
|
- value() {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- start.setTime(
|
|
|
- start.setTime(
|
|
|
- new Date(
|
|
|
- new Date().getFullYear(),
|
|
|
- new Date().getMonth(),
|
|
|
- new Date().getDate() - 6
|
|
|
- )
|
|
|
- )
|
|
|
- );
|
|
|
- return [start, end];
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- text: "最近30天",
|
|
|
- value() {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- start.setTime(
|
|
|
- start.setTime(
|
|
|
- new Date(
|
|
|
- new Date().getFullYear(),
|
|
|
- new Date().getMonth(),
|
|
|
- new Date().getDate() - 29
|
|
|
- )
|
|
|
- )
|
|
|
- );
|
|
|
- return [start, end];
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- text: "上月",
|
|
|
- value() {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- const day = new Date(start.getFullYear(), start.getMonth(), 0).getDate();
|
|
|
- start.setTime(
|
|
|
- start.setTime(
|
|
|
- new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1)
|
|
|
- )
|
|
|
- );
|
|
|
- end.setTime(
|
|
|
- end.setTime(
|
|
|
- new Date(new Date().getFullYear(), new Date().getMonth() - 1, day)
|
|
|
- )
|
|
|
- );
|
|
|
- return [start, end];
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- text: "本月",
|
|
|
- value() {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- start.setTime(
|
|
|
- start.setTime(
|
|
|
- new Date(new Date().getFullYear(), new Date().getMonth(), 1)
|
|
|
- )
|
|
|
- );
|
|
|
- return [start, end];
|
|
|
- },
|
|
|
- },
|
|
|
- {
|
|
|
- text: "本年",
|
|
|
- value() {
|
|
|
- const end = new Date();
|
|
|
- const start = new Date();
|
|
|
- start.setTime(
|
|
|
- start.setTime(new Date(new Date().getFullYear(), 0, 1))
|
|
|
- );
|
|
|
- return [start, end];
|
|
|
- },
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- collapse: false,
|
|
|
- headeType: "-1",
|
|
|
- headeNum: [{
|
|
|
- type: "-1",
|
|
|
- name: "全部"
|
|
|
- },
|
|
|
- {
|
|
|
- type: "wechat",
|
|
|
- name: "微信公众号"
|
|
|
- },
|
|
|
- {
|
|
|
- type: "routine",
|
|
|
- name: "微信小程序"
|
|
|
- },
|
|
|
- {
|
|
|
- type: "h5",
|
|
|
- name: "H5"
|
|
|
- },
|
|
|
- {
|
|
|
- type: "pc",
|
|
|
- name: "PC"
|
|
|
- },
|
|
|
- {
|
|
|
- type: "app",
|
|
|
- name: "APP"
|
|
|
- },
|
|
|
- ],
|
|
|
- address: [],
|
|
|
- addresData: city,
|
|
|
- isShowSend: true,
|
|
|
- modal13: false,
|
|
|
- maxCols: 4,
|
|
|
- scrollerHeight: "600",
|
|
|
- contentTop: "130",
|
|
|
- contentWidth: "98%",
|
|
|
- // grid: {
|
|
|
- // xl: 8,
|
|
|
- // lg: 8,
|
|
|
- // md: 12,
|
|
|
- // sm: 24,
|
|
|
- // xs: 24,
|
|
|
- // },
|
|
|
- grid2: {
|
|
|
- xl: 18,
|
|
|
- lg: 16,
|
|
|
- md: 12,
|
|
|
- sm: 24,
|
|
|
- xs: 24,
|
|
|
- },
|
|
|
- loading: false,
|
|
|
- total: 0,
|
|
|
- userFrom: {
|
|
|
- label_id: "",
|
|
|
- user_type: "",
|
|
|
- status: "",
|
|
|
- sex: "",
|
|
|
- is_promoter: "",
|
|
|
- country: "",
|
|
|
- isMember: "",
|
|
|
- pay_count: "",
|
|
|
- user_time_type: "",
|
|
|
- user_time: "",
|
|
|
- nickname: "",
|
|
|
- province: "",
|
|
|
- city: "",
|
|
|
- page: 1,
|
|
|
- limit: 15,
|
|
|
- level: "",
|
|
|
- group_id: "",
|
|
|
- field_key: "",
|
|
|
- },
|
|
|
- field_key: "",
|
|
|
- level: "",
|
|
|
- group_id: "",
|
|
|
- label_id: "",
|
|
|
- user_time_type: "",
|
|
|
- pay_count: "",
|
|
|
- userLists: [],
|
|
|
- FromData: null,
|
|
|
- selectionList: [],
|
|
|
- user_ids: "",
|
|
|
- selectedData: [],
|
|
|
- timeVal: [],
|
|
|
- array_ids: [],
|
|
|
- groupList: [],
|
|
|
- levelList: [],
|
|
|
- labelFrom: {
|
|
|
- page: 1,
|
|
|
- limit: "",
|
|
|
- },
|
|
|
- labelLists: [],
|
|
|
- display: "none",
|
|
|
- checkBox: false,
|
|
|
- selectionCopy: [],
|
|
|
- isCheckBox: false,
|
|
|
- isAll: 0,
|
|
|
- userId: 0,
|
|
|
- checkUidList: [],
|
|
|
- batchModal: false,
|
|
|
- menuActive: 1,
|
|
|
- batchLabel: [],
|
|
|
- batchData: {
|
|
|
- group_id: 0,
|
|
|
- label_id: [],
|
|
|
- level_id: 0,
|
|
|
- money_status: 0,
|
|
|
- money: 0,
|
|
|
- integration_status: 0,
|
|
|
- integration: 0,
|
|
|
- days_status: 1,
|
|
|
- day: 0,
|
|
|
- spread_uid: '',
|
|
|
- },
|
|
|
- spread_name: ''
|
|
|
- };
|
|
|
- },
|
|
|
- watch: {
|
|
|
- selectionList(value) {
|
|
|
- let arr = value.map((item) => item.uid);
|
|
|
- this.array_ids = arr;
|
|
|
- this.user_ids = arr.join();
|
|
|
- },
|
|
|
- userLists: {
|
|
|
- deep: true,
|
|
|
- handler(value) {
|
|
|
- value.forEach((item) => {
|
|
|
- this.selectionList.forEach((itm) => {
|
|
|
- if (itm.uid === item.uid) {
|
|
|
- item.checkBox = true;
|
|
|
- }
|
|
|
- });
|
|
|
- });
|
|
|
- const arr = this.userLists.filter((item) => item.checkBox);
|
|
|
- if (this.userLists.length) {
|
|
|
- this.checkBox = this.userLists.length === arr.length;
|
|
|
- } else {
|
|
|
- this.checkBox = false;
|
|
|
- }
|
|
|
- },
|
|
|
- },
|
|
|
- },
|
|
|
- computed: {
|
|
|
- ...mapState("admin/layout", ["isMobile"]),
|
|
|
- labelWidth() {
|
|
|
- return this.isMobile ? undefined : 100;
|
|
|
- },
|
|
|
- labelPosition() {
|
|
|
- return this.isMobile ? "top" : "right";
|
|
|
- },
|
|
|
- },
|
|
|
- created() {
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- mounted() {
|
|
|
- this.userGroup();
|
|
|
- this.levelLists();
|
|
|
- this.groupLists();
|
|
|
- },
|
|
|
- methods: {
|
|
|
- lookJl(row) {
|
|
|
- this.$refs.userJlList.modals = true;
|
|
|
- this.$refs.userJlList.getList(row);
|
|
|
- },
|
|
|
- checkboxItem(e) {
|
|
|
- let uid = parseInt(e.rowid);
|
|
|
- let index = this.checkUidList.indexOf(uid);
|
|
|
- if (index !== -1) {
|
|
|
- this.checkUidList = this.checkUidList.filter((item) => item !== uid);
|
|
|
- } else {
|
|
|
- this.checkUidList.push(uid);
|
|
|
- }
|
|
|
- },
|
|
|
- checkboxAll() {
|
|
|
- // 获取选中当前值
|
|
|
- let obj2 = this.$refs.xTable.getCheckboxRecords(true);
|
|
|
- // 获取之前选中值
|
|
|
+import { formatDate } from '@/utils/validate';
|
|
|
+import userLabel from "../../../components/userLabel";
|
|
|
+import labelList from "@/components/labelList";
|
|
|
+import { mapState } from "vuex";
|
|
|
+import expandRow from "./tableExpand.vue";
|
|
|
+import {
|
|
|
+ userList,
|
|
|
+ getUserData,
|
|
|
+ isShowApi,
|
|
|
+ editOtherApi,
|
|
|
+ giveLevelApi,
|
|
|
+ userSetGroup,
|
|
|
+ userGroupApi,
|
|
|
+ levelListApi,
|
|
|
+ userSetLabelApi,
|
|
|
+ userLabelApi,
|
|
|
+ userSynchro,
|
|
|
+ getUserSaveForm,
|
|
|
+ giveLevelTimeApi,
|
|
|
+ extendInfo,
|
|
|
+ batchProcess
|
|
|
+} from "@/api/user";
|
|
|
+import { agentSpreadApi } from "@/api/agent";
|
|
|
+import editFrom from "../../../components/from/from";
|
|
|
+import sendFrom from "@/components/sendCoupons/index";
|
|
|
+import userDetails from "./handle/userDetails";
|
|
|
+import newsCategory from "@/components/newsCategory/index";
|
|
|
+import city from "@/utils/city";
|
|
|
+import customerInfo from "@/components/customerInfo";
|
|
|
+export default {
|
|
|
+ name: "user_list",
|
|
|
+ filters: {
|
|
|
+ formatDate (time) {
|
|
|
+ if (time !== 0) {
|
|
|
+ let date = new Date(time * 1000);
|
|
|
+ return formatDate(date, 'yyyy-MM-dd hh:mm');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ expandRow,
|
|
|
+ editFrom,
|
|
|
+ sendFrom,
|
|
|
+ userDetails,
|
|
|
+ newsCategory,
|
|
|
+ customerInfo,
|
|
|
+ userLabel,
|
|
|
+ labelList,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ dataLabel: [],
|
|
|
+ labelListShow: false,
|
|
|
+ labelShow: false,
|
|
|
+ customerShow: false,
|
|
|
+ promoterShow: false,
|
|
|
+ labelActive: {
|
|
|
+ uid: 0,
|
|
|
+ },
|
|
|
+ formInline: {
|
|
|
+ uid: 0,
|
|
|
+ spread_uid: 0,
|
|
|
+ image: "",
|
|
|
+ },
|
|
|
+ options: {
|
|
|
+ shortcuts: [
|
|
|
+ {
|
|
|
+ text: "今天",
|
|
|
+ value() {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ start.setTime(
|
|
|
+ new Date(
|
|
|
+ new Date().getFullYear(),
|
|
|
+ new Date().getMonth(),
|
|
|
+ new Date().getDate()
|
|
|
+ )
|
|
|
+ );
|
|
|
+ return [start, end];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "昨天",
|
|
|
+ value() {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ start.setTime(
|
|
|
+ start.setTime(
|
|
|
+ new Date(
|
|
|
+ new Date().getFullYear(),
|
|
|
+ new Date().getMonth(),
|
|
|
+ new Date().getDate() - 1
|
|
|
+ )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ end.setTime(
|
|
|
+ end.setTime(
|
|
|
+ new Date(
|
|
|
+ new Date().getFullYear(),
|
|
|
+ new Date().getMonth(),
|
|
|
+ new Date().getDate() - 1
|
|
|
+ )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ return [start, end];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "最近7天",
|
|
|
+ value() {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ start.setTime(
|
|
|
+ start.setTime(
|
|
|
+ new Date(
|
|
|
+ new Date().getFullYear(),
|
|
|
+ new Date().getMonth(),
|
|
|
+ new Date().getDate() - 6
|
|
|
+ )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ return [start, end];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "最近30天",
|
|
|
+ value() {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ start.setTime(
|
|
|
+ start.setTime(
|
|
|
+ new Date(
|
|
|
+ new Date().getFullYear(),
|
|
|
+ new Date().getMonth(),
|
|
|
+ new Date().getDate() - 29
|
|
|
+ )
|
|
|
+ )
|
|
|
+ );
|
|
|
+ return [start, end];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "上月",
|
|
|
+ value() {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ const day = new Date(start.getFullYear(), start.getMonth(), 0).getDate();
|
|
|
+ start.setTime(
|
|
|
+ start.setTime(
|
|
|
+ new Date(new Date().getFullYear(), new Date().getMonth()-1, 1)
|
|
|
+ )
|
|
|
+ );
|
|
|
+ end.setTime(
|
|
|
+ end.setTime(
|
|
|
+ new Date(new Date().getFullYear(), new Date().getMonth()-1, day)
|
|
|
+ )
|
|
|
+ );
|
|
|
+ return [start, end];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "本月",
|
|
|
+ value() {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ start.setTime(
|
|
|
+ start.setTime(
|
|
|
+ new Date(new Date().getFullYear(), new Date().getMonth(), 1)
|
|
|
+ )
|
|
|
+ );
|
|
|
+ return [start, end];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ text: "本年",
|
|
|
+ value() {
|
|
|
+ const end = new Date();
|
|
|
+ const start = new Date();
|
|
|
+ start.setTime(
|
|
|
+ start.setTime(new Date(new Date().getFullYear(), 0, 1))
|
|
|
+ );
|
|
|
+ return [start, end];
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ collapse: false,
|
|
|
+ headeType: "-1",
|
|
|
+ headeNum: [
|
|
|
+ { type: "-1", name: "全部" },
|
|
|
+ { type: "wechat", name: "微信公众号" },
|
|
|
+ { type: "routine", name: "微信小程序" },
|
|
|
+ { type: "h5", name: "H5" },
|
|
|
+ { type: "pc", name: "PC" },
|
|
|
+ { type: "app", name: "APP" },
|
|
|
+ ],
|
|
|
+ address: [],
|
|
|
+ addresData: city,
|
|
|
+ isShowSend: true,
|
|
|
+ modal13: false,
|
|
|
+ maxCols: 4,
|
|
|
+ scrollerHeight: "600",
|
|
|
+ contentTop: "130",
|
|
|
+ contentWidth: "98%",
|
|
|
+ // grid: {
|
|
|
+ // xl: 8,
|
|
|
+ // lg: 8,
|
|
|
+ // md: 12,
|
|
|
+ // sm: 24,
|
|
|
+ // xs: 24,
|
|
|
+ // },
|
|
|
+ grid2: {
|
|
|
+ xl: 18,
|
|
|
+ lg: 16,
|
|
|
+ md: 12,
|
|
|
+ sm: 24,
|
|
|
+ xs: 24,
|
|
|
+ },
|
|
|
+ loading: false,
|
|
|
+ total: 0,
|
|
|
+ userFrom: {
|
|
|
+ label_id: "",
|
|
|
+ user_type: "",
|
|
|
+ status: "",
|
|
|
+ sex: "",
|
|
|
+ is_promoter: "",
|
|
|
+ country: "",
|
|
|
+ isMember: "",
|
|
|
+ pay_count: "",
|
|
|
+ user_time_type: "",
|
|
|
+ user_time: "",
|
|
|
+ nickname: "",
|
|
|
+ province: "",
|
|
|
+ city: "",
|
|
|
+ page: 1,
|
|
|
+ limit: 15,
|
|
|
+ level: "",
|
|
|
+ group_id: "",
|
|
|
+ field_key: "",
|
|
|
+ },
|
|
|
+ field_key: "",
|
|
|
+ level: "",
|
|
|
+ group_id: "",
|
|
|
+ label_id: "",
|
|
|
+ user_time_type: "",
|
|
|
+ pay_count: "",
|
|
|
+ userLists: [],
|
|
|
+ FromData: null,
|
|
|
+ selectionList: [],
|
|
|
+ user_ids: "",
|
|
|
+ selectedData: [],
|
|
|
+ timeVal: [],
|
|
|
+ array_ids: [],
|
|
|
+ groupList: [],
|
|
|
+ levelList: [],
|
|
|
+ labelFrom: {
|
|
|
+ page: 1,
|
|
|
+ limit: "",
|
|
|
+ },
|
|
|
+ labelLists: [],
|
|
|
+ display: "none",
|
|
|
+ checkBox: false,
|
|
|
+ selectionCopy: [],
|
|
|
+ isCheckBox: false,
|
|
|
+ isAll: 0,
|
|
|
+ userId: 0,
|
|
|
+ checkUidList:[],
|
|
|
+ batchModal: false,
|
|
|
+ menuActive: 1,
|
|
|
+ batchLabel: [],
|
|
|
+ batchData: {
|
|
|
+ group_id: 0,
|
|
|
+ label_id: [],
|
|
|
+ level_id: 0,
|
|
|
+ money_status: 0,
|
|
|
+ money: 0,
|
|
|
+ integration_status: 0,
|
|
|
+ integration: 0,
|
|
|
+ days_status: 1,
|
|
|
+ day: 0,
|
|
|
+ spread_uid: '',
|
|
|
+ },
|
|
|
+ spread_name: ''
|
|
|
+ };
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ selectionList(value) {
|
|
|
+ let arr = value.map((item) => item.uid);
|
|
|
+ this.array_ids = arr;
|
|
|
+ this.user_ids = arr.join();
|
|
|
+ },
|
|
|
+ userLists: {
|
|
|
+ deep: true,
|
|
|
+ handler(value) {
|
|
|
+ value.forEach((item) => {
|
|
|
+ this.selectionList.forEach((itm) => {
|
|
|
+ if (itm.uid === item.uid) {
|
|
|
+ item.checkBox = true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ });
|
|
|
+ const arr = this.userLists.filter((item) => item.checkBox);
|
|
|
+ if (this.userLists.length) {
|
|
|
+ this.checkBox = this.userLists.length === arr.length;
|
|
|
+ } else {
|
|
|
+ this.checkBox = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState("admin/layout", ["isMobile"]),
|
|
|
+ labelWidth() {
|
|
|
+ return this.isMobile ? undefined : 100;
|
|
|
+ },
|
|
|
+ labelPosition() {
|
|
|
+ return this.isMobile ? "top" : "right";
|
|
|
+ },
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.userGroup();
|
|
|
+ this.levelLists();
|
|
|
+ this.groupLists();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ checkboxItem(e){
|
|
|
+ let uid = parseInt(e.rowid);
|
|
|
+ let index = this.checkUidList.indexOf(uid);
|
|
|
+ if(index !== -1){
|
|
|
+ this.checkUidList = this.checkUidList.filter((item)=> item !== uid);
|
|
|
+ }else{
|
|
|
+ this.checkUidList.push(uid);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ checkboxAll(){
|
|
|
+ // 获取选中当前值
|
|
|
+ let obj2 = this.$refs.xTable.getCheckboxRecords(true);
|
|
|
+ // 获取之前选中值
|
|
|
+ let obj = this.$refs.xTable.getCheckboxReserveRecords(true);
|
|
|
+ if(this.isAll == 0 && this.checkUidList.length <= obj.length && !this.isCheckBox){
|
|
|
+ obj = [];
|
|
|
+ }
|
|
|
+ obj = obj.concat(obj2);
|
|
|
+ let uids = [];
|
|
|
+ obj.forEach((item)=>{
|
|
|
+ uids.push(parseInt(item.uid))
|
|
|
+ })
|
|
|
+ this.checkUidList = uids;
|
|
|
+ if(!obj2.length){
|
|
|
+ this.isCheckBox = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ allPages(e){
|
|
|
+ this.isAll = e;
|
|
|
+ if(e==0){
|
|
|
+ this.$refs.xTable.toggleAllCheckboxRow();
|
|
|
+ // this.checkboxAll();
|
|
|
+ }else{
|
|
|
+ if(!this.isCheckBox){
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(true);
|
|
|
+ this.isCheckBox = true;
|
|
|
+ this.isAll = 1;
|
|
|
+ }else{
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
+ this.isCheckBox = false;
|
|
|
+ this.isAll = 0;
|
|
|
+ }
|
|
|
+ this.checkUidList = []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ closeLabel(label) {
|
|
|
+ let index = this.dataLabel.indexOf(
|
|
|
+ this.dataLabel.filter((d) => d.id == label.id)[0]
|
|
|
+ );
|
|
|
+ this.dataLabel.splice(index, 1);
|
|
|
+ },
|
|
|
+ activeData(dataLabel) {
|
|
|
+ this.labelListShow = false;
|
|
|
+ if (this.batchModal && this.menuActive === 2) {
|
|
|
+ this.batchLabel = dataLabel;
|
|
|
+ this.batchData.label_id = dataLabel.map(item => item.id);
|
|
|
+ } else {
|
|
|
+ this.dataLabel = dataLabel;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ openLabelList(row) {
|
|
|
+ this.labelListShow = true;
|
|
|
+ let data = JSON.parse(JSON.stringify(this.dataLabel));
|
|
|
+ if (this.batchModal && this.menuActive === 2) {
|
|
|
+ data = JSON.parse(JSON.stringify(this.batchLabel));
|
|
|
+ }
|
|
|
+ this.$refs.labelList.userLabel(data);
|
|
|
+ },
|
|
|
+ // 标签弹窗关闭
|
|
|
+ labelListClose() {
|
|
|
+ this.labelListShow = false;
|
|
|
+ },
|
|
|
+ // 标签弹窗关闭
|
|
|
+ labelClose(e) {
|
|
|
+ if (!e) {
|
|
|
+ this.getList();
|
|
|
+ }
|
|
|
+ this.labelShow = false;
|
|
|
+ this.labelActive.uid = 0;
|
|
|
+ },
|
|
|
+ // 提交
|
|
|
+ putSend(name) {
|
|
|
+ this.$refs[name].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ if (!this.formInline.spread_uid) {
|
|
|
+ return this.$Message.error("请上传用户");
|
|
|
+ }
|
|
|
+ agentSpreadApi(this.formInline)
|
|
|
+ .then((res) => {
|
|
|
+ this.promoterShow = false;
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ this.getList();
|
|
|
+ this.$refs[name].resetFields();
|
|
|
+ })
|
|
|
+ .catch((res) => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ save() {
|
|
|
+ this.$modalForm(getUserSaveForm()).then(() => this.getList());
|
|
|
+ // getUserSaveForm().then(async (res) => {
|
|
|
+ // if(res.data.status === false){
|
|
|
+ // return this.$authLapse(res.data);
|
|
|
+ // }
|
|
|
+ // this.FromData = res.data;
|
|
|
+ // this.$refs.edits.modals = true;
|
|
|
+ // }).catch(err=>{
|
|
|
+ // this.$Message.error(err.msg);
|
|
|
+ // })
|
|
|
+ },
|
|
|
+ synchro() {
|
|
|
+ userSynchro()
|
|
|
+ .then((res) => {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.$Message.error(err.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 分组列表
|
|
|
+ groupLists() {
|
|
|
+ this.loading = true;
|
|
|
+ userLabelApi(this.labelFrom)
|
|
|
+ .then(async (res) => {
|
|
|
+ let data = res.data;
|
|
|
+ this.labelLists = data.list;
|
|
|
+ })
|
|
|
+ .catch((res) => {
|
|
|
+ this.loading = false;
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ onClickTab(type) {
|
|
|
+ this.isAll = 0;
|
|
|
+ this.isCheckBox = false;
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
+ this.checkUidList = [];
|
|
|
+ this.userFrom.page = 1;
|
|
|
+ this.userFrom.user_type = type==-1?'':type;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ userGroup() {
|
|
|
+ let data = {
|
|
|
+ page: 1,
|
|
|
+ limit: "",
|
|
|
+ };
|
|
|
+ userGroupApi(data).then((res) => {
|
|
|
+ this.groupList = res.data.list;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ levelLists() {
|
|
|
+ let data = {
|
|
|
+ page: 1,
|
|
|
+ limit: "",
|
|
|
+ title: "",
|
|
|
+ is_show: 1,
|
|
|
+ };
|
|
|
+ levelListApi(data).then((res) => {
|
|
|
+ this.levelList = res.data.list;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 批量设置分组;
|
|
|
+ setGroup() {
|
|
|
+ if (this.selectionList.length === 0) {
|
|
|
+ this.$Message.warning("请选择要设置分组的用户");
|
|
|
+ } else {
|
|
|
+ let uids = {
|
|
|
+ all: this.isAll,
|
|
|
+ uids: this.array_ids
|
|
|
+ };
|
|
|
+ if (this.isAll == 1) {
|
|
|
+ uids.where = this.userFrom;
|
|
|
+ uids.where = {
|
|
|
+ city: this.userFrom.city,
|
|
|
+ country: this.userFrom.country,
|
|
|
+ field_key: this.userFrom.field_key,
|
|
|
+ group_id: this.userFrom.group_id,
|
|
|
+ isMember: this.userFrom.isMember,
|
|
|
+ is_promoter: this.userFrom.is_promoter,
|
|
|
+ label_id: this.userFrom.label_id,
|
|
|
+ level: this.userFrom.level,
|
|
|
+ nickname: this.userFrom.nickname,
|
|
|
+ pay_count: this.userFrom.pay_count,
|
|
|
+ province: this.userFrom.province,
|
|
|
+ sex: this.userFrom.sex,
|
|
|
+ status: this.userFrom.status,
|
|
|
+ user_time: this.userFrom.user_time,
|
|
|
+ user_time_type: this.userFrom.user_time_type,
|
|
|
+ user_type: this.userFrom.user_type,
|
|
|
+ };
|
|
|
+ }
|
|
|
+ this.$modalForm(userSetGroup(uids)).then(() => this.getList());
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 批量设置标签;
|
|
|
+ setLabel() {
|
|
|
+ if (this.selectionList.length === 0) {
|
|
|
+ this.$Message.warning("请选择要设置标签的用户");
|
|
|
+ } else {
|
|
|
+ let uids = {
|
|
|
+ all: this.isAll,
|
|
|
+ uids: this.array_ids
|
|
|
+ };
|
|
|
+ if (this.isAll == 1) {
|
|
|
+ uids.where = {
|
|
|
+ city: this.userFrom.city,
|
|
|
+ country: this.userFrom.country,
|
|
|
+ field_key: this.userFrom.field_key,
|
|
|
+ group_id: this.userFrom.group_id,
|
|
|
+ isMember: this.userFrom.isMember,
|
|
|
+ is_promoter: this.userFrom.is_promoter,
|
|
|
+ label_id: this.userFrom.label_id,
|
|
|
+ level: this.userFrom.level,
|
|
|
+ nickname: this.userFrom.nickname,
|
|
|
+ pay_count: this.userFrom.pay_count,
|
|
|
+ province: this.userFrom.province,
|
|
|
+ sex: this.userFrom.sex,
|
|
|
+ status: this.userFrom.status,
|
|
|
+ user_time: this.userFrom.user_time,
|
|
|
+ user_time_type: this.userFrom.user_time_type,
|
|
|
+ user_type: this.userFrom.user_type,
|
|
|
+ };
|
|
|
+ }
|
|
|
+ this.labelShow = true;
|
|
|
+ this.labelActive.uid = uids;
|
|
|
+ // this.$modalForm(userSetLabelApi(uids)).then(() => this.getList());
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 是否为付费会员;
|
|
|
+ changeMember() {
|
|
|
+ this.userFrom.page = 1;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ // 选择国家
|
|
|
+ changeCountry() {
|
|
|
+ if (this.userFrom.country === "abroad" || !this.userFrom.country) {
|
|
|
+ this.selectedData = [];
|
|
|
+ this.userFrom.province = "";
|
|
|
+ this.userFrom.city = "";
|
|
|
+ this.address = [];
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 选择地址
|
|
|
+ handleChange(value, selectedData) {
|
|
|
+ this.selectedData = selectedData.map((o) => o.label);
|
|
|
+ this.userFrom.province = this.selectedData[0];
|
|
|
+ this.userFrom.city = this.selectedData[1];
|
|
|
+ },
|
|
|
+ // 具体日期
|
|
|
+ onchangeTime(e) {
|
|
|
+ this.timeVal = e;
|
|
|
+ this.userFrom.user_time = this.timeVal[0] ? this.timeVal.join("-") : "";
|
|
|
+ },
|
|
|
+ // 操作
|
|
|
+ changeMenu(row, name, index) {
|
|
|
+ this.userId = row.uid;
|
|
|
+ let uid = [];
|
|
|
+ uid.push(row.uid);
|
|
|
+ let uids = { uids: uid };
|
|
|
+ switch (name) {
|
|
|
+ case "1":
|
|
|
+ this.$refs.userDetails.modals = true;
|
|
|
+ this.$refs.userDetails.activeName = "info";
|
|
|
+ this.$refs.userDetails.getDetails(row.uid);
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ this.getOtherFrom(row.uid);
|
|
|
+ break;
|
|
|
+ case "3":
|
|
|
+ // this.giveLevel(row.uid);
|
|
|
+ this.giveLevelTime(row.uid);
|
|
|
+ break;
|
|
|
+ case "4":
|
|
|
+ this.del(
|
|
|
+ row,
|
|
|
+ "清除 【 " + row.nickname + " 】的会员等级",
|
|
|
+ index,
|
|
|
+ "user"
|
|
|
+ );
|
|
|
+ break;
|
|
|
+ case "5":
|
|
|
+ this.$modalForm(userSetGroup(uids)).then(() =>
|
|
|
+ this.$refs.sends.getList()
|
|
|
+ );
|
|
|
+ break;
|
|
|
+ case "6":
|
|
|
+ this.openLabel(row);
|
|
|
+ // this.$modalForm(userSetLabelApi(uids)).then(() => this.$refs.sends.getList());
|
|
|
+ break;
|
|
|
+ case "7":
|
|
|
+ this.editS(row);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ this.del(
|
|
|
+ row,
|
|
|
+ "解除【 " + row.nickname + " 】的上级推广人",
|
|
|
+ index,
|
|
|
+ "tuiguang"
|
|
|
+ );
|
|
|
+ break;
|
|
|
+ // this.del(row, '清除 【 ' + row.nickname + ' 】的会员等级', index)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ openLabel(row) {
|
|
|
+ this.labelShow = true;
|
|
|
+ this.labelActive.uid = row.uid;
|
|
|
+ },
|
|
|
+ editS(row) {
|
|
|
+ this.promoterShow = true;
|
|
|
+ this.formInline.uid = row.uid;
|
|
|
+ },
|
|
|
+ customer() {
|
|
|
+ this.customerShow = true;
|
|
|
+ },
|
|
|
+ imageObject(e) {
|
|
|
+ this.customerShow = false;
|
|
|
+ if (this.batchModal && this.menuActive === 6) {
|
|
|
+ this.batchData.spread_uid = e.uid;
|
|
|
+ this.spread_name = e.name;
|
|
|
+ } else {
|
|
|
+ this.formInline.spread_uid = e.uid;
|
|
|
+ this.formInline.image = e.image;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ cancel(name) {
|
|
|
+ this.promoterShow = false;
|
|
|
+ this.$refs[name].resetFields();
|
|
|
+ },
|
|
|
+ // 赠送会员等级
|
|
|
+ giveLevel(id) {
|
|
|
+ giveLevelApi(id)
|
|
|
+ .then(async (res) => {
|
|
|
+ if (res.data.status === false) {
|
|
|
+ return this.$authLapse(res.data);
|
|
|
+ }
|
|
|
+ this.FromData = res.data;
|
|
|
+ this.$refs.edits.modals = true;
|
|
|
+ })
|
|
|
+ .catch((res) => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 赠送会员等级
|
|
|
+ giveLevelTime(id) {
|
|
|
+ giveLevelTimeApi(id)
|
|
|
+ .then(async (res) => {
|
|
|
+ if (res.data.status === false) {
|
|
|
+ return this.$authLapse(res.data);
|
|
|
+ }
|
|
|
+ this.FromData = res.data;
|
|
|
+ this.$refs.edits.modals = true;
|
|
|
+ })
|
|
|
+ .catch((res) => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 删除
|
|
|
+ del(row, tit, num, name) {
|
|
|
+ let delfromData = {
|
|
|
+ title: tit,
|
|
|
+ num: num,
|
|
|
+ url:
|
|
|
+ name === "user"
|
|
|
+ ? `user/del_level/${row.uid}`
|
|
|
+ : `agent/stair/delete_spread/${row.uid}`,
|
|
|
+ method: name === "user" ? "DELETE" : "PUT",
|
|
|
+ // url: `user/del_level/${row.uid}`,
|
|
|
+ // method: 'DELETE',
|
|
|
+ ids: "",
|
|
|
+ };
|
|
|
+ this.$modalSure(delfromData)
|
|
|
+ .then((res) => {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ this.getList();
|
|
|
+ })
|
|
|
+ .catch((res) => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 清除会员删除成功
|
|
|
+ submitModel() {
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ // 会员列表
|
|
|
+ getList() {
|
|
|
+ this.loading = true;
|
|
|
+ let activeIds = [];
|
|
|
+ this.dataLabel.forEach((item) => {
|
|
|
+ activeIds.push(item.id);
|
|
|
+ });
|
|
|
+ this.userFrom.label_id = activeIds.join(",") || "";
|
|
|
+ this.userFrom.user_type = this.userFrom.user_type || "";
|
|
|
+ this.userFrom.status = this.userFrom.status || "";
|
|
|
+ this.userFrom.sex = this.userFrom.sex || "";
|
|
|
+ this.userFrom.is_promoter = this.userFrom.is_promoter || "";
|
|
|
+ this.userFrom.country = this.userFrom.country || "";
|
|
|
+ this.userFrom.user_time_type = this.userFrom.user_time_type || "";
|
|
|
+ this.userFrom.pay_count = this.userFrom.pay_count || "";
|
|
|
+ // this.userFrom.label_id = this.userFrom.label_id || "";
|
|
|
+ this.userFrom.field_key = this.field_key === "all" ? "" : this.field_key;
|
|
|
+ this.userFrom.level =
|
|
|
+ this.userFrom.level === "all" ? "" : this.userFrom.level;
|
|
|
+ this.userFrom.group_id =
|
|
|
+ this.userFrom.group_id === "all" ? "" : this.userFrom.group_id;
|
|
|
+ userList(this.userFrom)
|
|
|
+ .then(async (res) => {
|
|
|
+ let data = res.data;
|
|
|
+ data.list.forEach((item) => {
|
|
|
+ item.checkBox = false;
|
|
|
+ });
|
|
|
+ this.userLists = data.list;
|
|
|
+ this.total = data.count;
|
|
|
+ this.loading = false;
|
|
|
+ this.$nextTick(function(){
|
|
|
+ if (this.isAll == 1) {
|
|
|
+ this.selectionList = this.userLists;
|
|
|
+ if(this.isCheckBox){
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(true);
|
|
|
+ }else{
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
let obj = this.$refs.xTable.getCheckboxReserveRecords(true);
|
|
|
- if (this.isAll == 0 && this.checkUidList.length <= obj.length && !this.isCheckBox) {
|
|
|
- obj = [];
|
|
|
- }
|
|
|
- obj = obj.concat(obj2);
|
|
|
- let uids = [];
|
|
|
- obj.forEach((item) => {
|
|
|
- uids.push(parseInt(item.uid))
|
|
|
- })
|
|
|
- this.checkUidList = uids;
|
|
|
- if (!obj2.length) {
|
|
|
- this.isCheckBox = false;
|
|
|
- }
|
|
|
- },
|
|
|
- allPages(e) {
|
|
|
- this.isAll = e;
|
|
|
- if (e == 0) {
|
|
|
- this.$refs.xTable.toggleAllCheckboxRow();
|
|
|
- // this.checkboxAll();
|
|
|
- } else {
|
|
|
- if (!this.isCheckBox) {
|
|
|
- this.$refs.xTable.setAllCheckboxRow(true);
|
|
|
- this.isCheckBox = true;
|
|
|
- this.isAll = 1;
|
|
|
- } else {
|
|
|
- this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
- this.isCheckBox = false;
|
|
|
- this.isAll = 0;
|
|
|
- }
|
|
|
- this.checkUidList = []
|
|
|
- }
|
|
|
- },
|
|
|
- closeLabel(label) {
|
|
|
- let index = this.dataLabel.indexOf(
|
|
|
- this.dataLabel.filter((d) => d.id == label.id)[0]
|
|
|
- );
|
|
|
- this.dataLabel.splice(index, 1);
|
|
|
- },
|
|
|
- activeData(dataLabel) {
|
|
|
- this.labelListShow = false;
|
|
|
- if (this.batchModal && this.menuActive === 2) {
|
|
|
- this.batchLabel = dataLabel;
|
|
|
- this.batchData.label_id = dataLabel.map(item => item.id);
|
|
|
- } else {
|
|
|
- this.dataLabel = dataLabel;
|
|
|
- }
|
|
|
- },
|
|
|
- openLabelList(row) {
|
|
|
- this.labelListShow = true;
|
|
|
- let data = JSON.parse(JSON.stringify(this.dataLabel));
|
|
|
- if (this.batchModal && this.menuActive === 2) {
|
|
|
- data = JSON.parse(JSON.stringify(this.batchLabel));
|
|
|
- }
|
|
|
- this.$refs.labelList.userLabel(data);
|
|
|
- },
|
|
|
- // 标签弹窗关闭
|
|
|
- labelListClose() {
|
|
|
- this.labelListShow = false;
|
|
|
- },
|
|
|
- // 标签弹窗关闭
|
|
|
- labelClose(e) {
|
|
|
- if (!e) {
|
|
|
- this.getList();
|
|
|
+ if(!this.checkUidList.length || this.checkUidList.length <= obj.length){
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
}
|
|
|
- this.labelShow = false;
|
|
|
- this.labelActive.uid = 0;
|
|
|
- },
|
|
|
- // 提交
|
|
|
- putSend(name) {
|
|
|
- this.$refs[name].validate((valid) => {
|
|
|
- if (valid) {
|
|
|
- if (!this.formInline.spread_uid) {
|
|
|
- return this.$Message.error("请上传用户");
|
|
|
- }
|
|
|
- agentSpreadApi(this.formInline)
|
|
|
- .then((res) => {
|
|
|
- this.promoterShow = false;
|
|
|
- this.$Message.success(res.msg);
|
|
|
- this.getList();
|
|
|
- this.$refs[name].resetFields();
|
|
|
- })
|
|
|
- .catch((res) => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
- },
|
|
|
- save() {
|
|
|
- this.$modalForm(getUserSaveForm()).then(() => this.getList());
|
|
|
- // getUserSaveForm().then(async (res) => {
|
|
|
- // if(res.data.status === false){
|
|
|
- // return this.$authLapse(res.data);
|
|
|
- // }
|
|
|
- // this.FromData = res.data;
|
|
|
- // this.$refs.edits.modals = true;
|
|
|
- // }).catch(err=>{
|
|
|
- // this.$Message.error(err.msg);
|
|
|
- // })
|
|
|
- },
|
|
|
- synchro() {
|
|
|
- userSynchro()
|
|
|
- .then((res) => {
|
|
|
- this.$Message.success(res.msg);
|
|
|
- })
|
|
|
- .catch((err) => {
|
|
|
- this.$Message.error(err.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- // 分组列表
|
|
|
- groupLists() {
|
|
|
- this.loading = true;
|
|
|
- userLabelApi(this.labelFrom)
|
|
|
- .then(async (res) => {
|
|
|
- let data = res.data;
|
|
|
- this.labelLists = data.list;
|
|
|
- })
|
|
|
- .catch((res) => {
|
|
|
- this.loading = false;
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- onClickTab(type) {
|
|
|
- this.isAll = 0;
|
|
|
- this.isCheckBox = false;
|
|
|
- this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
- this.checkUidList = [];
|
|
|
- this.userFrom.page = 1;
|
|
|
- this.userFrom.user_type = type == -1 ? '' : type;
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- userGroup() {
|
|
|
- let data = {
|
|
|
- page: 1,
|
|
|
- limit: "",
|
|
|
- };
|
|
|
- userGroupApi(data).then((res) => {
|
|
|
- this.groupList = res.data.list;
|
|
|
- });
|
|
|
- },
|
|
|
- levelLists() {
|
|
|
- let data = {
|
|
|
- page: 1,
|
|
|
- limit: "",
|
|
|
- title: "",
|
|
|
- is_show: 1,
|
|
|
- };
|
|
|
- levelListApi(data).then((res) => {
|
|
|
- this.levelList = res.data.list;
|
|
|
- });
|
|
|
- },
|
|
|
- // 批量设置分组;
|
|
|
- setGroup() {
|
|
|
- if (this.selectionList.length === 0) {
|
|
|
- this.$Message.warning("请选择要设置分组的用户");
|
|
|
- } else {
|
|
|
- let uids = {
|
|
|
- all: this.isAll,
|
|
|
- uids: this.array_ids
|
|
|
- };
|
|
|
- if (this.isAll == 1) {
|
|
|
- uids.where = this.userFrom;
|
|
|
- uids.where = {
|
|
|
- city: this.userFrom.city,
|
|
|
- country: this.userFrom.country,
|
|
|
- field_key: this.userFrom.field_key,
|
|
|
- group_id: this.userFrom.group_id,
|
|
|
- isMember: this.userFrom.isMember,
|
|
|
- is_promoter: this.userFrom.is_promoter,
|
|
|
- label_id: this.userFrom.label_id,
|
|
|
- level: this.userFrom.level,
|
|
|
- nickname: this.userFrom.nickname,
|
|
|
- pay_count: this.userFrom.pay_count,
|
|
|
- province: this.userFrom.province,
|
|
|
- sex: this.userFrom.sex,
|
|
|
- status: this.userFrom.status,
|
|
|
- user_time: this.userFrom.user_time,
|
|
|
- user_time_type: this.userFrom.user_time_type,
|
|
|
- user_type: this.userFrom.user_type,
|
|
|
- };
|
|
|
- }
|
|
|
- this.$modalForm(userSetGroup(uids)).then(() => this.getList());
|
|
|
- }
|
|
|
- },
|
|
|
- // 批量设置标签;
|
|
|
- setLabel() {
|
|
|
- if (this.selectionList.length === 0) {
|
|
|
- this.$Message.warning("请选择要设置标签的用户");
|
|
|
- } else {
|
|
|
- let uids = {
|
|
|
- all: this.isAll,
|
|
|
- uids: this.array_ids
|
|
|
- };
|
|
|
- if (this.isAll == 1) {
|
|
|
- uids.where = {
|
|
|
- city: this.userFrom.city,
|
|
|
- country: this.userFrom.country,
|
|
|
- field_key: this.userFrom.field_key,
|
|
|
- group_id: this.userFrom.group_id,
|
|
|
- isMember: this.userFrom.isMember,
|
|
|
- is_promoter: this.userFrom.is_promoter,
|
|
|
- label_id: this.userFrom.label_id,
|
|
|
- level: this.userFrom.level,
|
|
|
- nickname: this.userFrom.nickname,
|
|
|
- pay_count: this.userFrom.pay_count,
|
|
|
- province: this.userFrom.province,
|
|
|
- sex: this.userFrom.sex,
|
|
|
- status: this.userFrom.status,
|
|
|
- user_time: this.userFrom.user_time,
|
|
|
- user_time_type: this.userFrom.user_time_type,
|
|
|
- user_type: this.userFrom.user_type,
|
|
|
- };
|
|
|
- }
|
|
|
- this.labelShow = true;
|
|
|
- this.labelActive.uid = uids;
|
|
|
- // this.$modalForm(userSetLabelApi(uids)).then(() => this.getList());
|
|
|
- }
|
|
|
- },
|
|
|
- // 是否为付费会员;
|
|
|
- changeMember() {
|
|
|
- this.userFrom.page = 1;
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- // 选择国家
|
|
|
- changeCountry() {
|
|
|
- if (this.userFrom.country === "abroad" || !this.userFrom.country) {
|
|
|
- this.selectedData = [];
|
|
|
- this.userFrom.province = "";
|
|
|
- this.userFrom.city = "";
|
|
|
- this.address = [];
|
|
|
- }
|
|
|
- },
|
|
|
- // 选择地址
|
|
|
- handleChange(value, selectedData) {
|
|
|
- this.selectedData = selectedData.map((o) => o.label);
|
|
|
- this.userFrom.province = this.selectedData[0];
|
|
|
- this.userFrom.city = this.selectedData[1];
|
|
|
- },
|
|
|
- // 具体日期
|
|
|
- onchangeTime(e) {
|
|
|
- this.timeVal = e;
|
|
|
- this.userFrom.user_time = this.timeVal[0] ? this.timeVal.join("-") : "";
|
|
|
- },
|
|
|
- // 操作
|
|
|
- changeMenu(row, name, index) {
|
|
|
- this.userId = row.uid;
|
|
|
- let uid = [];
|
|
|
- uid.push(row.uid);
|
|
|
- let uids = {
|
|
|
- uids: uid
|
|
|
- };
|
|
|
- switch (name) {
|
|
|
- case "1":
|
|
|
- this.$refs.userDetails.modals = true;
|
|
|
- this.$refs.userDetails.activeName = "info";
|
|
|
- this.$refs.userDetails.getDetails(row.uid);
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- this.getOtherFrom(row.uid);
|
|
|
- break;
|
|
|
- case "3":
|
|
|
- // this.giveLevel(row.uid);
|
|
|
- this.giveLevelTime(row.uid);
|
|
|
- break;
|
|
|
- case "4":
|
|
|
- this.del(
|
|
|
- row,
|
|
|
- "清除 【 " + row.nickname + " 】的会员等级",
|
|
|
- index,
|
|
|
- "user"
|
|
|
- );
|
|
|
- break;
|
|
|
- case "5":
|
|
|
- this.$modalForm(userSetGroup(uids)).then(() =>
|
|
|
- this.$refs.sends.getList()
|
|
|
- );
|
|
|
- break;
|
|
|
- case "6":
|
|
|
- this.openLabel(row);
|
|
|
- // this.$modalForm(userSetLabelApi(uids)).then(() => this.$refs.sends.getList());
|
|
|
- break;
|
|
|
- case "7":
|
|
|
- this.editS(row);
|
|
|
- break;
|
|
|
- default:
|
|
|
- this.del(
|
|
|
- row,
|
|
|
- "解除【 " + row.nickname + " 】的上级推广人",
|
|
|
- index,
|
|
|
- "tuiguang"
|
|
|
- );
|
|
|
- break;
|
|
|
- // this.del(row, '清除 【 ' + row.nickname + ' 】的会员等级', index)
|
|
|
- }
|
|
|
- },
|
|
|
- openLabel(row) {
|
|
|
- this.labelShow = true;
|
|
|
- this.labelActive.uid = row.uid;
|
|
|
- },
|
|
|
- editS(row) {
|
|
|
- this.promoterShow = true;
|
|
|
- this.formInline.uid = row.uid;
|
|
|
- },
|
|
|
- customer() {
|
|
|
- this.customerShow = true;
|
|
|
- },
|
|
|
- imageObject(e) {
|
|
|
- this.customerShow = false;
|
|
|
- if (this.batchModal && this.menuActive === 6) {
|
|
|
- this.batchData.spread_uid = e.uid;
|
|
|
- this.spread_name = e.name;
|
|
|
- } else {
|
|
|
- this.formInline.spread_uid = e.uid;
|
|
|
- this.formInline.image = e.image;
|
|
|
- }
|
|
|
- },
|
|
|
- cancel(name) {
|
|
|
- this.promoterShow = false;
|
|
|
- this.$refs[name].resetFields();
|
|
|
- },
|
|
|
- // 赠送会员等级
|
|
|
- giveLevel(id) {
|
|
|
- giveLevelApi(id)
|
|
|
- .then(async (res) => {
|
|
|
- if (res.data.status === false) {
|
|
|
- return this.$authLapse(res.data);
|
|
|
- }
|
|
|
- this.FromData = res.data;
|
|
|
- this.$refs.edits.modals = true;
|
|
|
- })
|
|
|
- .catch((res) => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- // 赠送会员等级
|
|
|
- giveLevelTime(id) {
|
|
|
- giveLevelTimeApi(id)
|
|
|
- .then(async (res) => {
|
|
|
- if (res.data.status === false) {
|
|
|
- return this.$authLapse(res.data);
|
|
|
- }
|
|
|
- this.FromData = res.data;
|
|
|
- this.$refs.edits.modals = true;
|
|
|
- })
|
|
|
- .catch((res) => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- // 删除
|
|
|
- del(row, tit, num, name) {
|
|
|
- let delfromData = {
|
|
|
- title: tit,
|
|
|
- num: num,
|
|
|
- url: name === "user" ?
|
|
|
- `user/del_level/${row.uid}` :
|
|
|
- `agent/stair/delete_spread/${row.uid}`,
|
|
|
- method: name === "user" ? "DELETE" : "PUT",
|
|
|
- // url: `user/del_level/${row.uid}`,
|
|
|
- // method: 'DELETE',
|
|
|
- ids: "",
|
|
|
- };
|
|
|
- this.$modalSure(delfromData)
|
|
|
- .then((res) => {
|
|
|
- this.$Message.success(res.msg);
|
|
|
- this.getList();
|
|
|
- })
|
|
|
- .catch((res) => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- // 清除会员删除成功
|
|
|
- submitModel() {
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- // 会员列表
|
|
|
- getList() {
|
|
|
- this.loading = true;
|
|
|
- let activeIds = [];
|
|
|
- this.dataLabel.forEach((item) => {
|
|
|
- activeIds.push(item.id);
|
|
|
- });
|
|
|
- this.userFrom.label_id = activeIds.join(",") || "";
|
|
|
- this.userFrom.user_type = this.userFrom.user_type || "";
|
|
|
- this.userFrom.status = this.userFrom.status || "";
|
|
|
- this.userFrom.sex = this.userFrom.sex || "";
|
|
|
- this.userFrom.is_promoter = this.userFrom.is_promoter || "";
|
|
|
- this.userFrom.country = this.userFrom.country || "";
|
|
|
- this.userFrom.user_time_type = this.userFrom.user_time_type || "";
|
|
|
- this.userFrom.pay_count = this.userFrom.pay_count || "";
|
|
|
- // this.userFrom.label_id = this.userFrom.label_id || "";
|
|
|
- this.userFrom.field_key = this.field_key === "all" ? "" : this.field_key;
|
|
|
- this.userFrom.level =
|
|
|
- this.userFrom.level === "all" ? "" : this.userFrom.level;
|
|
|
- this.userFrom.group_id =
|
|
|
- this.userFrom.group_id === "all" ? "" : this.userFrom.group_id;
|
|
|
- userList(this.userFrom)
|
|
|
- .then(async (res) => {
|
|
|
- let data = res.data;
|
|
|
- data.list.forEach((item) => {
|
|
|
- item.checkBox = false;
|
|
|
- });
|
|
|
- this.userLists = data.list;
|
|
|
- this.total = data.count;
|
|
|
- this.loading = false;
|
|
|
- this.$nextTick(function() {
|
|
|
- if (this.isAll == 1) {
|
|
|
- this.selectionList = this.userLists;
|
|
|
- if (this.isCheckBox) {
|
|
|
- this.$refs.xTable.setAllCheckboxRow(true);
|
|
|
- } else {
|
|
|
- this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
- }
|
|
|
- } else {
|
|
|
- let obj = this.$refs.xTable.getCheckboxReserveRecords(true);
|
|
|
- if (!this.checkUidList.length || this.checkUidList.length <= obj.length) {
|
|
|
- this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
- }
|
|
|
- }
|
|
|
- })
|
|
|
+ }
|
|
|
+ })
|
|
|
|
|
|
- })
|
|
|
- .catch((res) => {
|
|
|
- this.loading = false;
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- pageChange({
|
|
|
- currentPage,
|
|
|
- pageSize
|
|
|
- }) {
|
|
|
- this.userFrom.page = currentPage;
|
|
|
- this.userFrom.limit = pageSize;
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- // pageChange(index) {
|
|
|
- // this.userFrom.page = index;
|
|
|
- // this.getList();
|
|
|
- // },
|
|
|
- // 搜索
|
|
|
- userSearchs() {
|
|
|
- if (this.userFrom.user_time_type && !this.timeVal.length) {
|
|
|
- return this.$Message.error("请选择访问时间");
|
|
|
- }
|
|
|
- if (this.timeVal.length && !this.userFrom.user_time_type) {
|
|
|
- return this.$Message.error("请选择访问情况");
|
|
|
- }
|
|
|
- this.isAll = 0;
|
|
|
- this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
- this.checkUidList = [];
|
|
|
- this.userFrom.page = 1;
|
|
|
- this.selectionList = [];
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- // 重置
|
|
|
- reset(name) {
|
|
|
- this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
- this.checkUidList = []
|
|
|
- this.headeType = "-1";
|
|
|
- this.userFrom = {
|
|
|
- user_type: "",
|
|
|
- status: "",
|
|
|
- sex: "",
|
|
|
- is_promoter: "",
|
|
|
- country: "",
|
|
|
- pay_count: "",
|
|
|
- user_time_type: "",
|
|
|
- user_time: "",
|
|
|
- nickname: "",
|
|
|
- field_key: "",
|
|
|
- level: "",
|
|
|
- group_id: "",
|
|
|
- label_id: "",
|
|
|
- page: 1, // 当前页
|
|
|
- limit: 20, // 每页显示条数
|
|
|
- };
|
|
|
- this.field_key = "";
|
|
|
- this.level = "";
|
|
|
- this.group_id = "";
|
|
|
- this.label_id = "";
|
|
|
- this.user_time_type = "";
|
|
|
- this.pay_count = "";
|
|
|
- this.timeVal = [];
|
|
|
- this.selectionList = [];
|
|
|
- this.dataLabel = [];
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- // 获取编辑表单数据
|
|
|
- getUserFrom(id) {
|
|
|
- this.$modalForm(getUserData(id)).then(() => this.getList());
|
|
|
- // getUserData(id)
|
|
|
- // .then(async (res) => {
|
|
|
- // if (res.data.status === false) {
|
|
|
- // return this.$authLapse(res.data);
|
|
|
- // }
|
|
|
- // this.FromData = res.data;
|
|
|
- // this.$refs.edits.modals = true;
|
|
|
- // })
|
|
|
- // .catch((res) => {
|
|
|
- // this.$Message.error(res.msg);
|
|
|
- // });
|
|
|
- },
|
|
|
- // 获取积分余额表单
|
|
|
- getOtherFrom(id) {
|
|
|
- editOtherApi(id)
|
|
|
- .then(async (res) => {
|
|
|
- if (res.data.status === false) {
|
|
|
- return this.$authLapse(res.data);
|
|
|
- }
|
|
|
- res.data.rules[1].props.max = 999999;
|
|
|
- this.FromData = res.data;
|
|
|
- this.$refs.edits.modals = true;
|
|
|
- })
|
|
|
- .catch((res) => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- // 修改状态
|
|
|
- onchangeIsShow(row) {
|
|
|
- let data = {
|
|
|
- id: row.uid,
|
|
|
- status: row.status,
|
|
|
- };
|
|
|
- isShowApi(data)
|
|
|
- .then(async (res) => {
|
|
|
- this.$Message.success(res.msg);
|
|
|
- })
|
|
|
- .catch((res) => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- // 点击发送优惠券
|
|
|
- onSend() {
|
|
|
- if (this.checkUidList.length === 0 && this.isAll == 0) {
|
|
|
- return this.$Message.warning("请选择要发送优惠券的用户");
|
|
|
- }
|
|
|
- this.$refs.sends.modals = true;
|
|
|
- this.$refs.sends.getList();
|
|
|
- },
|
|
|
- // 发送图文消息
|
|
|
- onSendPic() {
|
|
|
- if (this.checkUidList.length === 0 && this.isAll == 0) {
|
|
|
- this.$Message.warning("请选择要发送图文消息的用户");
|
|
|
- } else {
|
|
|
- this.modal13 = true;
|
|
|
- }
|
|
|
- },
|
|
|
- // 编辑
|
|
|
- edit(row) {
|
|
|
- this.getUserFrom(row.uid);
|
|
|
- // this.$modalForm(getUserSaveForm(row.uid)).then(() => this.getList());
|
|
|
- },
|
|
|
- //信息补充
|
|
|
- extendInfo(row) {
|
|
|
- // this.$modalForm(extendInfo(row.uid)).then(() => this.getList());
|
|
|
- extendInfo(row.uid).then(async (res) => {
|
|
|
- if (res.data.status === false) {
|
|
|
- return this.$authLapse(res.data);
|
|
|
- }
|
|
|
- this.FromData = res.data;
|
|
|
- this.$refs.edits.modals = true;
|
|
|
- // this.getList()
|
|
|
- }).catch(err => {
|
|
|
- this.$Message.error(err.msg);
|
|
|
- })
|
|
|
- },
|
|
|
- // 修改成功
|
|
|
- submitFail(p) {
|
|
|
- // this.getList();
|
|
|
- if (this.$refs.userDetails.modals) {
|
|
|
- this.$refs.userDetails.getDetails(this.userId);
|
|
|
- }
|
|
|
- },
|
|
|
- // 排序
|
|
|
- // sortChanged(e) {
|
|
|
- // this.userFrom[e.key] = e.order;
|
|
|
- // this.getList();
|
|
|
- // },
|
|
|
- // onSelectCancel(selection, row) {},
|
|
|
- menuSelect(name) {
|
|
|
- this.menuActive = name;
|
|
|
- },
|
|
|
- setBatch() {
|
|
|
- this.batchModal = true;
|
|
|
- },
|
|
|
- tagClose(id) {
|
|
|
- let index = this.batchLabel.findIndex(item => item.id === id);
|
|
|
- this.batchLabel.splice(index, 1);
|
|
|
- },
|
|
|
- cancelBatch() {
|
|
|
- this.batchModal = false;
|
|
|
- },
|
|
|
- // 保存批量操作
|
|
|
- saveBatch() {
|
|
|
- batchProcess({
|
|
|
- type: this.menuActive,
|
|
|
- uids: this.checkUidList,
|
|
|
- all: this.isAll,
|
|
|
- where: this.userFrom,
|
|
|
- data: this.batchData
|
|
|
- }).then(res => {
|
|
|
- this.$Message.success(res.msg);
|
|
|
- this.batchModal = false;
|
|
|
- }).catch(res => {
|
|
|
- this.$Message.error(res.msg);
|
|
|
- });
|
|
|
- },
|
|
|
- batchVisibleChange() {
|
|
|
- this.batchData = {
|
|
|
- group_id: 0,
|
|
|
- label_id: [],
|
|
|
- level_id: 0,
|
|
|
- money_status: 0,
|
|
|
- money: 0,
|
|
|
- integration_status: 0,
|
|
|
- integration: 0,
|
|
|
- days_status: 1,
|
|
|
- day: 0,
|
|
|
- spread_uid: '',
|
|
|
- };
|
|
|
- this.batchLabel = [];
|
|
|
- this.spread_name = '';
|
|
|
- this.menuActive = 1;
|
|
|
- }
|
|
|
- },
|
|
|
- };
|
|
|
+ })
|
|
|
+ .catch((res) => {
|
|
|
+ this.loading = false;
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ pageChange({ currentPage, pageSize }) {
|
|
|
+ this.userFrom.page = currentPage;
|
|
|
+ this.userFrom.limit = pageSize;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ // pageChange(index) {
|
|
|
+ // this.userFrom.page = index;
|
|
|
+ // this.getList();
|
|
|
+ // },
|
|
|
+ // 搜索
|
|
|
+ userSearchs() {
|
|
|
+ if (this.userFrom.user_time_type && !this.timeVal.length) {
|
|
|
+ return this.$Message.error("请选择访问时间");
|
|
|
+ }
|
|
|
+ if (this.timeVal.length && !this.userFrom.user_time_type) {
|
|
|
+ return this.$Message.error("请选择访问情况");
|
|
|
+ }
|
|
|
+ this.isAll = 0;
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
+ this.checkUidList = [];
|
|
|
+ this.userFrom.page = 1;
|
|
|
+ this.selectionList = [];
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ // 重置
|
|
|
+ reset(name) {
|
|
|
+ this.$refs.xTable.setAllCheckboxRow(false);
|
|
|
+ this.checkUidList = []
|
|
|
+ this.headeType = "-1";
|
|
|
+ this.userFrom = {
|
|
|
+ user_type: "",
|
|
|
+ status: "",
|
|
|
+ sex: "",
|
|
|
+ is_promoter: "",
|
|
|
+ country: "",
|
|
|
+ pay_count: "",
|
|
|
+ user_time_type: "",
|
|
|
+ user_time: "",
|
|
|
+ nickname: "",
|
|
|
+ field_key: "",
|
|
|
+ level: "",
|
|
|
+ group_id: "",
|
|
|
+ label_id: "",
|
|
|
+ page: 1, // 当前页
|
|
|
+ limit: 20, // 每页显示条数
|
|
|
+ };
|
|
|
+ this.field_key = "";
|
|
|
+ this.level = "";
|
|
|
+ this.group_id = "";
|
|
|
+ this.label_id = "";
|
|
|
+ this.user_time_type = "";
|
|
|
+ this.pay_count = "";
|
|
|
+ this.timeVal = [];
|
|
|
+ this.selectionList = [];
|
|
|
+ this.dataLabel = [];
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ // 获取编辑表单数据
|
|
|
+ getUserFrom(id) {
|
|
|
+ this.$modalForm(getUserData(id)).then(() => this.getList());
|
|
|
+ // getUserData(id)
|
|
|
+ // .then(async (res) => {
|
|
|
+ // if (res.data.status === false) {
|
|
|
+ // return this.$authLapse(res.data);
|
|
|
+ // }
|
|
|
+ // this.FromData = res.data;
|
|
|
+ // this.$refs.edits.modals = true;
|
|
|
+ // })
|
|
|
+ // .catch((res) => {
|
|
|
+ // this.$Message.error(res.msg);
|
|
|
+ // });
|
|
|
+ },
|
|
|
+ // 获取积分余额表单
|
|
|
+ getOtherFrom(id) {
|
|
|
+ editOtherApi(id)
|
|
|
+ .then(async (res) => {
|
|
|
+ if (res.data.status === false) {
|
|
|
+ return this.$authLapse(res.data);
|
|
|
+ }
|
|
|
+ res.data.rules[1].props.max = 999999;
|
|
|
+ this.FromData = res.data;
|
|
|
+ this.$refs.edits.modals = true;
|
|
|
+ })
|
|
|
+ .catch((res) => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 修改状态
|
|
|
+ onchangeIsShow(row) {
|
|
|
+ let data = {
|
|
|
+ id: row.uid,
|
|
|
+ status: row.status,
|
|
|
+ };
|
|
|
+ isShowApi(data)
|
|
|
+ .then(async (res) => {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ })
|
|
|
+ .catch((res) => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ // 点击发送优惠券
|
|
|
+ onSend() {
|
|
|
+ if (this.checkUidList.length === 0 && this.isAll==0) {
|
|
|
+ return this.$Message.warning("请选择要发送优惠券的用户");
|
|
|
+ }
|
|
|
+ this.$refs.sends.modals = true;
|
|
|
+ this.$refs.sends.getList();
|
|
|
+ },
|
|
|
+ // 发送图文消息
|
|
|
+ onSendPic() {
|
|
|
+ if (this.checkUidList.length === 0 && this.isAll==0) {
|
|
|
+ this.$Message.warning("请选择要发送图文消息的用户");
|
|
|
+ } else {
|
|
|
+ this.modal13 = true;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 编辑
|
|
|
+ edit(row) {
|
|
|
+ this.getUserFrom(row.uid);
|
|
|
+ // this.$modalForm(getUserSaveForm(row.uid)).then(() => this.getList());
|
|
|
+ },
|
|
|
+ //信息补充
|
|
|
+ extendInfo(row) {
|
|
|
+ // this.$modalForm(extendInfo(row.uid)).then(() => this.getList());
|
|
|
+ extendInfo(row.uid).then(async (res) => {
|
|
|
+ if(res.data.status === false){
|
|
|
+ return this.$authLapse(res.data);
|
|
|
+ }
|
|
|
+ this.FromData = res.data;
|
|
|
+ this.$refs.edits.modals = true;
|
|
|
+ // this.getList()
|
|
|
+ }).catch(err=>{
|
|
|
+ this.$Message.error(err.msg);
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 修改成功
|
|
|
+ submitFail(p) {
|
|
|
+ // this.getList();
|
|
|
+ if (this.$refs.userDetails.modals) {
|
|
|
+ this.$refs.userDetails.getDetails(this.userId);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 排序
|
|
|
+ // sortChanged(e) {
|
|
|
+ // this.userFrom[e.key] = e.order;
|
|
|
+ // this.getList();
|
|
|
+ // },
|
|
|
+ // onSelectCancel(selection, row) {},
|
|
|
+ menuSelect(name) {
|
|
|
+ this.menuActive = name;
|
|
|
+ },
|
|
|
+ setBatch() {
|
|
|
+ this.batchModal = true;
|
|
|
+ },
|
|
|
+ tagClose(id) {
|
|
|
+ let index = this.batchLabel.findIndex(item => item.id === id);
|
|
|
+ this.batchLabel.splice(index, 1);
|
|
|
+ },
|
|
|
+ cancelBatch() {
|
|
|
+ this.batchModal = false;
|
|
|
+ },
|
|
|
+ // 保存批量操作
|
|
|
+ saveBatch() {
|
|
|
+ batchProcess({
|
|
|
+ type: this.menuActive,
|
|
|
+ uids: this.checkUidList,
|
|
|
+ all: this.isAll,
|
|
|
+ where: this.userFrom,
|
|
|
+ data: this.batchData
|
|
|
+ }).then(res => {
|
|
|
+ this.$Message.success(res.msg);
|
|
|
+ this.batchModal = false;
|
|
|
+ }).catch(res => {
|
|
|
+ this.$Message.error(res.msg);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ batchVisibleChange() {
|
|
|
+ this.batchData = {
|
|
|
+ group_id: 0,
|
|
|
+ label_id: [],
|
|
|
+ level_id: 0,
|
|
|
+ money_status: 0,
|
|
|
+ money: 0,
|
|
|
+ integration_status: 0,
|
|
|
+ integration: 0,
|
|
|
+ days_status: 1,
|
|
|
+ day: 0,
|
|
|
+ spread_uid: '',
|
|
|
+ };
|
|
|
+ this.batchLabel = [];
|
|
|
+ this.spread_name = '';
|
|
|
+ this.menuActive = 1;
|
|
|
+ }
|
|
|
+ },
|
|
|
+};
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="stylus">
|
|
|
- /deep/.ivu-dropdown-item {
|
|
|
- font-size: 12px !important;
|
|
|
- }
|
|
|
-
|
|
|
- /deep/.vxe-table--render-default .vxe-cell {
|
|
|
- font-size: 12px;
|
|
|
- }
|
|
|
-
|
|
|
- .expand-row {
|
|
|
- margin-bottom: 16px;
|
|
|
- font-size: 12px;
|
|
|
- }
|
|
|
-
|
|
|
- .tdinfo {
|
|
|
- margin-left: 88px;
|
|
|
- margin-top: 15px;
|
|
|
- }
|
|
|
-
|
|
|
- .padding-add {
|
|
|
- padding: 20px 20px 0;
|
|
|
- }
|
|
|
-
|
|
|
- .input-add {
|
|
|
- max-width: 250px;
|
|
|
- }
|
|
|
-
|
|
|
- .labelInput {
|
|
|
- max-width: 250px;
|
|
|
- border: 1px solid #dcdee2;
|
|
|
- padding: 0 5px;
|
|
|
- border-radius: 5px;
|
|
|
- min-height: 30px;
|
|
|
- cursor: pointer;
|
|
|
-
|
|
|
- .span {
|
|
|
- color: #c5c8ce;
|
|
|
- }
|
|
|
-
|
|
|
- .iconxiayi {
|
|
|
- font-size: 12px;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- .picBox {
|
|
|
- display: inline-block;
|
|
|
- cursor: pointer;
|
|
|
-
|
|
|
- .upLoad {
|
|
|
- width: 58px;
|
|
|
- height: 58px;
|
|
|
- line-height: 58px;
|
|
|
- border: 1px dotted rgba(0, 0, 0, 0.1);
|
|
|
- border-radius: 4px;
|
|
|
- background: rgba(0, 0, 0, 0.02);
|
|
|
- }
|
|
|
-
|
|
|
- .pictrue {
|
|
|
- width: 60px;
|
|
|
- height: 60px;
|
|
|
- border: 1px dotted rgba(0, 0, 0, 0.1);
|
|
|
- margin-right: 10px;
|
|
|
+/deep/.ivu-dropdown-item{
|
|
|
+ font-size: 12px!important;
|
|
|
+}
|
|
|
+/deep/.vxe-table--render-default .vxe-cell{
|
|
|
+ font-size: 12px;
|
|
|
+}
|
|
|
+.expand-row{
|
|
|
+ margin-bottom: 16px;
|
|
|
+ font-size: 12px;
|
|
|
+}
|
|
|
+.tdinfo {
|
|
|
+ margin-left: 88px;
|
|
|
+ margin-top: 15px;
|
|
|
+}
|
|
|
+.padding-add {
|
|
|
+ padding: 20px 20px 0;
|
|
|
+}
|
|
|
+.input-add {
|
|
|
+ max-width:250px;
|
|
|
+}
|
|
|
+.labelInput {
|
|
|
+ max-width:250px;
|
|
|
+ border: 1px solid #dcdee2;
|
|
|
+ padding: 0 5px;
|
|
|
+ border-radius: 5px;
|
|
|
+ min-height: 30px;
|
|
|
+ cursor: pointer;
|
|
|
|
|
|
- img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ .span {
|
|
|
+ color: #c5c8ce;
|
|
|
+ }
|
|
|
|
|
|
- .userFrom {
|
|
|
- >>>.ivu-form-item-content {
|
|
|
- margin-left: 0px !important;
|
|
|
- }
|
|
|
- }
|
|
|
+ .iconxiayi {
|
|
|
+ font-size: 12px;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- .userAlert {
|
|
|
- margin-top: 20px;
|
|
|
- }
|
|
|
+.picBox {
|
|
|
+ display: inline-block;
|
|
|
+ cursor: pointer;
|
|
|
|
|
|
- .userI {
|
|
|
- color: #1890FF;
|
|
|
- font-style: normal;
|
|
|
- }
|
|
|
+ .upLoad {
|
|
|
+ width: 58px;
|
|
|
+ height: 58px;
|
|
|
+ line-height: 58px;
|
|
|
+ border: 1px dotted rgba(0, 0, 0, 0.1);
|
|
|
+ border-radius: 4px;
|
|
|
+ background: rgba(0, 0, 0, 0.02);
|
|
|
+ }
|
|
|
|
|
|
- img {
|
|
|
- height: 36px;
|
|
|
- display: block;
|
|
|
- }
|
|
|
+ .pictrue {
|
|
|
+ width: 60px;
|
|
|
+ height: 60px;
|
|
|
+ border: 1px dotted rgba(0, 0, 0, 0.1);
|
|
|
+ margin-right: 10px;
|
|
|
|
|
|
- .tabBox_img {
|
|
|
- width: 36px;
|
|
|
- height: 36px;
|
|
|
- border-radius: 4px;
|
|
|
- cursor: pointer;
|
|
|
+ img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- img {
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- }
|
|
|
- }
|
|
|
+.userFrom {
|
|
|
+ >>> .ivu-form-item-content {
|
|
|
+ margin-left: 0px !important;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- .tabBox_tit {
|
|
|
- width: 60%;
|
|
|
- font-size: 12px !important;
|
|
|
- margin: 0 2px 0 10px;
|
|
|
- letter-spacing: 1px;
|
|
|
- padding: 5px 0;
|
|
|
- box-sizing: border-box;
|
|
|
- }
|
|
|
+.userAlert {
|
|
|
+ margin-top: 20px;
|
|
|
+}
|
|
|
|
|
|
- .modelBox {
|
|
|
- >>>.ivu-modal-body {
|
|
|
- padding: 0 16px 16px 16px !important;
|
|
|
- }
|
|
|
- }
|
|
|
+.userI {
|
|
|
+ color: #1890FF;
|
|
|
+ font-style: normal;
|
|
|
+}
|
|
|
|
|
|
- .vipName {
|
|
|
- color: #dab176;
|
|
|
- }
|
|
|
+img {
|
|
|
+ height: 36px;
|
|
|
+ display: block;
|
|
|
+}
|
|
|
|
|
|
- .listbox {
|
|
|
- >>>.ivu-divider-horizontal {
|
|
|
- margin: 0 !important;
|
|
|
- }
|
|
|
- }
|
|
|
+.tabBox_img {
|
|
|
+ width: 36px;
|
|
|
+ height: 36px;
|
|
|
+ border-radius: 4px;
|
|
|
+ cursor: pointer;
|
|
|
|
|
|
- /deep/.ivu-table-header {
|
|
|
- // overflow visible
|
|
|
- }
|
|
|
+ img {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- /deep/.ivu-table th {
|
|
|
- overflow: visible;
|
|
|
- }
|
|
|
+.tabBox_tit {
|
|
|
+ width: 60%;
|
|
|
+ font-size: 12px !important;
|
|
|
+ margin: 0 2px 0 10px;
|
|
|
+ letter-spacing: 1px;
|
|
|
+ padding: 5px 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
|
|
|
- /deep/.select-item:hover {
|
|
|
- background-color: #f3f3f3;
|
|
|
- }
|
|
|
+.modelBox {
|
|
|
+ >>> .ivu-modal-body {
|
|
|
+ padding: 0 16px 16px 16px !important;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- /deep/.select-on {
|
|
|
- display: block;
|
|
|
- }
|
|
|
+.vipName {
|
|
|
+ color: #dab176;
|
|
|
+}
|
|
|
|
|
|
- /deep/.select-item.on {
|
|
|
- /* background: #f3f3f3; */
|
|
|
- }
|
|
|
+.listbox {
|
|
|
+ >>>.ivu-divider-horizontal {
|
|
|
+ margin: 0 !important;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- .pane_pd {
|
|
|
- padding: 4px 16px 20px !important;
|
|
|
- font-weight: 500;
|
|
|
- }
|
|
|
+/deep/.ivu-table-header {
|
|
|
+ // overflow visible
|
|
|
+}
|
|
|
|
|
|
- .new_tab {
|
|
|
- >>>.ivu-tabs-nav .ivu-tabs-tab {
|
|
|
- padding: 4px 16px 20px !important;
|
|
|
- font-weight: 500;
|
|
|
- }
|
|
|
- }
|
|
|
+/deep/.ivu-table th {
|
|
|
+ overflow: visible;
|
|
|
+}
|
|
|
|
|
|
- .dateMedia {
|
|
|
- /deep/.ivu-form-item-content {
|
|
|
- max-width 250px;
|
|
|
+/deep/.select-item:hover {
|
|
|
+ background-color: #f3f3f3;
|
|
|
+}
|
|
|
|
|
|
- /deep/.ivu-date-picker {
|
|
|
- width 100%;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+/deep/.select-on {
|
|
|
+ display: block;
|
|
|
+}
|
|
|
|
|
|
- .select-tag {
|
|
|
- position: relative;
|
|
|
- min-height: 32px;
|
|
|
- padding: 0 24px 0 4px;
|
|
|
- border: 1px solid #dcdee2;
|
|
|
- border-radius: 4px;
|
|
|
- line-height: normal;
|
|
|
- user-select: none;
|
|
|
- cursor: pointer;
|
|
|
+/deep/.select-item.on {
|
|
|
+ /* background: #f3f3f3; */
|
|
|
+}
|
|
|
+.pane_pd{
|
|
|
+ padding:4px 16px 20px !important;
|
|
|
+ font-weight: 500;
|
|
|
+}
|
|
|
+.new_tab {
|
|
|
+ >>>.ivu-tabs-nav .ivu-tabs-tab{
|
|
|
+ padding:4px 16px 20px !important;
|
|
|
+ font-weight: 500;
|
|
|
+ }
|
|
|
+}
|
|
|
+.dateMedia{
|
|
|
+ /deep/.ivu-form-item-content{
|
|
|
+ max-width 250px;
|
|
|
+ /deep/.ivu-date-picker{
|
|
|
+ width 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.select-tag{
|
|
|
+ position: relative;
|
|
|
+ min-height: 32px;
|
|
|
+ padding: 0 24px 0 4px;
|
|
|
+ border: 1px solid #dcdee2;
|
|
|
+ border-radius: 4px;
|
|
|
+ line-height: normal;
|
|
|
+ user-select: none;
|
|
|
+ cursor: pointer;
|
|
|
|
|
|
- &:hover {
|
|
|
- border-color: #57a3f3;
|
|
|
- }
|
|
|
+ &:hover {
|
|
|
+ border-color: #57a3f3;
|
|
|
+ }
|
|
|
|
|
|
- .ivu-icon {
|
|
|
- position: absolute;
|
|
|
- top: 50%;
|
|
|
- right: 8px;
|
|
|
- line-height: 1;
|
|
|
- transform: translateY(-50%);
|
|
|
- font-size: 14px;
|
|
|
- color: #808695;
|
|
|
- transition: all .2s ease-in-out;
|
|
|
- }
|
|
|
+ .ivu-icon {
|
|
|
+ position: absolute;
|
|
|
+ top: 50%;
|
|
|
+ right: 8px;
|
|
|
+ line-height: 1;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ font-size: 14px;
|
|
|
+ color: #808695;
|
|
|
+ transition: all .2s ease-in-out;
|
|
|
+ }
|
|
|
|
|
|
- .ivu-tag {
|
|
|
- position: relative;
|
|
|
- max-width: 99%;
|
|
|
- height: 24px;
|
|
|
- margin: 3px 4px 3px 0;
|
|
|
- line-height: 22px;
|
|
|
- }
|
|
|
+ .ivu-tag {
|
|
|
+ position: relative;
|
|
|
+ max-width: 99%;
|
|
|
+ height: 24px;
|
|
|
+ margin: 3px 4px 3px 0;
|
|
|
+ line-height: 22px;
|
|
|
+ }
|
|
|
|
|
|
- .placeholder {
|
|
|
- display: block;
|
|
|
- height: 30px;
|
|
|
- line-height: 30px;
|
|
|
- color: #c5c8ce;
|
|
|
- font-size: 12px;
|
|
|
- overflow: hidden;
|
|
|
- text-overflow: ellipsis;
|
|
|
- white-space: nowrap;
|
|
|
- padding-left: 4px;
|
|
|
- padding-right: 22px;
|
|
|
- }
|
|
|
- }
|
|
|
+ .placeholder {
|
|
|
+ display: block;
|
|
|
+ height: 30px;
|
|
|
+ line-height: 30px;
|
|
|
+ color: #c5c8ce;
|
|
|
+ font-size: 12px;
|
|
|
+ overflow: hidden;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ white-space: nowrap;
|
|
|
+ padding-left: 4px;
|
|
|
+ padding-right: 22px;
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
- >>>.batch-modal {
|
|
|
- .ivu-modal-body {
|
|
|
- padding: 0;
|
|
|
- }
|
|
|
+>>> .batch-modal {
|
|
|
+ .ivu-modal-body {
|
|
|
+ padding: 0;
|
|
|
+ }
|
|
|
|
|
|
- .ivu-alert {
|
|
|
- margin: 12px 24px;
|
|
|
- }
|
|
|
+ .ivu-alert {
|
|
|
+ margin: 12px 24px;
|
|
|
+ }
|
|
|
|
|
|
- .ivu-col-span-4 {
|
|
|
- flex: none;
|
|
|
- width: 130px;
|
|
|
- }
|
|
|
+ .ivu-col-span-4 {
|
|
|
+ flex: none;
|
|
|
+ width: 130px;
|
|
|
+ }
|
|
|
|
|
|
- .ivu-col-span-20 {
|
|
|
- padding-right: 37px;
|
|
|
- }
|
|
|
+ .ivu-col-span-20 {
|
|
|
+ padding-right: 37px;
|
|
|
+ }
|
|
|
|
|
|
- .ivu-input-number {
|
|
|
- width: 100%;
|
|
|
- }
|
|
|
+ .ivu-input-number {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
|
|
|
- .ivu-menu-light.ivu-menu-vertical .ivu-menu-item-active:not(.ivu-menu-submenu) {
|
|
|
- z-index: auto;
|
|
|
- }
|
|
|
+ .ivu-menu-light.ivu-menu-vertical .ivu-menu-item-active:not(.ivu-menu-submenu) {
|
|
|
+ z-index: auto;
|
|
|
+ }
|
|
|
|
|
|
- .ivu-menu-light.ivu-menu-vertical .ivu-menu-item-active:not(.ivu-menu-submenu):after {
|
|
|
- right: auto;
|
|
|
- left: 0;
|
|
|
- }
|
|
|
+ .ivu-menu-light.ivu-menu-vertical .ivu-menu-item-active:not(.ivu-menu-submenu):after {
|
|
|
+ right: auto;
|
|
|
+ left: 0;
|
|
|
+ }
|
|
|
|
|
|
- .ivu-menu-item {
|
|
|
- padding-right: 0;
|
|
|
- }
|
|
|
- }
|
|
|
+ .ivu-menu-item {
|
|
|
+ padding-right: 0;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|