index.vue 10 KB
Newer Older
1
<template>
2
  <div class="app-container">
3
    <el-form :model="queryParams" ref="queryForm" size="small" v-show="showSearch" :inline="true" label-width="120px">
4
      <el-form-item :label="$t('关键词')">
5
        <el-input style="width: 300px" v-model.trim="queryParams.key" :placeholder="$t('请输入会员名称/会员编号/手机号')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" />
6
      </el-form-item>
chenwei's avatar
chenwei committed
7
      <el-form-item :label="$t('积分来源')">
8
        <dict-selector clearable :type="DICT_TYPE.MEMBER_SCORE_SOURCE" v-model="queryParams.sourceType" @change="handleQuery"> </dict-selector>
9 10
      </el-form-item>
      <el-form-item :label="$t('标题')">
11
        <el-input style="width: 300px" v-model.trim="queryParams.ruleTitle" :placeholder="$t('请输入关键词查找')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" />
12 13
      </el-form-item>
      <el-form-item :label="$t('规则说明')">
14
        <el-input style="width: 300px" v-model.trim="queryParams.ruleDesc" :placeholder="$t('请输入关键词查找')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" />
15 16 17 18 19
      </el-form-item>

      <el-form-item :label="$t('当前积分')">
        <el-row :gutter="10" style="width: 300px">
          <el-col :span="10">
20
            <dict-selector clearable :type="DICT_TYPE.QUANTITATIVE_RELATION_SYMBOL" v-model="queryParams.scoreCountOperate" @change="handleQuery"> </dict-selector>
21 22
          </el-col>
          <el-col :span="14">
23
            <el-input v-model.trim="queryParams.scoreCount" :placeholder="$t('请输入数字')" clearable @keyup.enter.native="handleQuery" onkeyup="this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')" />
24 25 26 27
          </el-col>
        </el-row>
      </el-form-item>
      <el-form-item :label="$t('时间')">
28
        <el-date-picker type="datetimerange" clearable placement="bottom-start" v-model="dateRangeCreateTime" style="width: 240px" value-format="yyyy-MM-dd HH:mm:ss" range-separator="-" :start-placeholder="$t('开始日期')" :end-placeholder="$t('结束日期')" />
29 30
      </el-form-item>
      <el-form-item>
31 32
        <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t("搜索") }}</el-button>
        <el-button icon="el-icon-refresh" @click="resetQuery">{{ $t("重置") }}</el-button>
33 34
      </el-form-item>
    </el-form>
35
    <el-row class="mb8">
36
      <right-toolbar :showSearch.sync="showSearch" @queryTable="handleQueryPagination"></right-toolbar>
37
    </el-row>
38
    <el-table ref="multipleTable" v-loading="loading" :data="memberList">
39
      <el-table-column width="140" :label="$t('积分记录ID')" align="center" prop="id"></el-table-column>
chenwei's avatar
chenwei committed
40 41
      <el-table-column :label="$t('会员名称')" align="center">
        <template v-slot="{ row }">
42
          <el-button type="text" @click="$router.push('/member/member/member-details/' + row.memberId)">{{ isChinese ? row.memberNameZh : row.memberNameEn }}</el-button>
chenwei's avatar
chenwei committed
43 44
        </template>
      </el-table-column>
45

46
      <el-table-column width="140" :label="$t('封面图片')" align="center" prop="mobile">
47
        <template slot-scope="scope">
48
          <el-image :src="isChinese ? scope.row.coverImageZh : scope.row.coverImageEn" style="width: 50px; height: 50px">{{ $t("") }}</el-image>
49 50
        </template>
      </el-table-column>
51
      <el-table-column width="140" align="center" :label="$t('分值')" prop="scoreCount"></el-table-column>
52 53
      <el-table-column :label="$t('类别')" align="center">
        <template slot-scope="scope">
54
          {{ isChinese ? handleholdScoreStatus(scope.row.operateType).label : handleholdScoreStatus(scope.row.operateType).labelEn }}
55 56 57 58 59
        </template>
      </el-table-column>

      <el-table-column :label="$t('积分来源')" align="center">
        <template slot-scope="scope">
60
          {{ isChinese ? handleSourceType(scope.row.sourceType).label : handleSourceType(scope.row.sourceType).labelEn }}
61 62
        </template>
      </el-table-column>
63 64
      <el-table-column :label="$t('规则标题')" align="center" :prop="isChinese ? 'ruleTitleZh' : 'ruleTitleEn'"> </el-table-column>
      <el-table-column :label="$t('规则说明')" align="center" :prop="isChinese ? 'ruleDescZh' : 'ruleDescEn'"> </el-table-column>
65 66

      <el-table-column :label="$t('操作积分时间')" align="center">
67
        <template v-slot="{ row }"> {{ parseTime(row.createTime) || "/" }}</template>
68
      </el-table-column>
69
      <el-table-column :label="$t('积分到期时间')" align="center">
70
        <template v-slot="{ row }"> {{ parseTime(row.expireTime) || "/" }}</template>
71
      </el-table-column>
72

chenwei's avatar
chenwei committed
73
      <el-table-column width="300" :label="$t('详细信息')" align="center">
chenwei's avatar
chenwei committed
74 75
        <template v-slot="{ row }">
          <!--  人工操作-->
76
          <span v-if="row.sourceType == '1'">{{ row.extParamJson.comment || "-" }}</span>
chenwei's avatar
chenwei committed
77 78 79 80 81 82
          <!-- 兑换礼品2  兑换礼品撤销4  跳转兑换记录详情-->
          <el-button
            v-if="row.sourceType == '2' || row.sourceType == '4'"
            type="text"
            @click="
              $router.push({
chenwei's avatar
chenwei committed
83
                path: '/member/memberManagement/exchangeRecordOperation',
chenwei's avatar
chenwei committed
84 85
                query: {
                  pageStatus: 'view',
86 87
                  exchangeRewardID: row.extParamJson.redeemId
                }
chenwei's avatar
chenwei committed
88 89
              })
            "
90
            >{{ `${$t("记录ID")}:${row.extParamJson.redemptionNumber}` }}</el-button
chenwei's avatar
chenwei committed
91 92 93 94 95 96 97 98 99 100 101
          >
          <!-- 系统过期  sourceType = 3 不展示 -->
          <span v-if="row.sourceType == '3'"> -</span>
          <!-- 订单V:  sourceType = 5 , extParamJson中取 orderId 跳转订单详情 -->
          <el-button
            v-if="row.sourceType == '5'"
            type="text"
            @click="
              $router.push({
                path: '/order/detail',
                query: {
102 103
                  orderId: row.extParamJson.orderId
                }
chenwei's avatar
chenwei committed
104 105 106 107 108 109
              })
            "
            >{{ `${$t("订单ID")}:${row.extParamJson.orderId}` }}</el-button
          >
          <!-- 注册sourceType = 6 , extParamJson中取 userIduserNameZh,userNameZh,phone 展示会员名+手机号(手机号脱敏处理)
推荐 :  sourceType = 7 , extParamJson中取 userIduserNameZh,userNameZh,phone 展示会员名+手机号(手机号脱敏处理) -->
110
          <span v-if="row.sourceType == '6' || row.sourceType == '7'"> {{ `${isChinese ? row.extParamJson.userNameZh : row.extParamJson.userNameEn}(${row.extParamJson.phone})` }}</span>
chenwei's avatar
chenwei committed
111 112 113 114 115 116
          <!--  sourceType = 8 , extParamJson中取 scoreRuleId 跳转活动详情   -->
          <el-button
            v-if="row.sourceType == '8'"
            type="text"
            @click="
              $router.push({
chenwei's avatar
chenwei committed
117
                path: '/member/memberManagement/addIntegrationRuleOperation',
chenwei's avatar
chenwei committed
118 119
                query: {
                  id: row.extParamJson.scoreRuleId,
120 121
                  pageStatus: 'view'
                }
chenwei's avatar
chenwei committed
122 123 124 125 126
              })
            "
            >{{ `${$t("活动ID")}:${row.extParamJson.scoreRuleId}` }}</el-button
          >
        </template>
127 128 129
      </el-table-column>
    </el-table>
    <!-- //分页列表 -->
130
    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" @pagination="handleQueryPagination" />
131
  </div>
132
</template>
133
<script>
134 135
import { getDictDatas, DICT_TYPE } from "@/utils/dict"
import { queryMemberScoreRecord } from "@/api/ecw/memberManagement"
136 137

export default {
138
  name: "EcwMembermanagementIntegralrecord",
139 140
  props: {
    memberCode: [String, Number]
141
  },
142 143 144 145 146
  data() {
    return {
      dateRangeCreateTime: [],
      total: 0,
      loading: true,
147 148
      // 显示搜索条件
      showSearch: true,
149 150 151 152 153 154 155 156 157 158 159
      memberList: [],
      queryParams: {
        ruleTitle: "",
        ruleDesc: "",
        key: "",
        sourceType: "",
        scoreCount: "",
        scoreCountOperate: "",
        endTime: "",
        pageNo: 1,
        pageSize: 10,
160 161 162
        startTime: ""
      }
    }
163 164 165
  },
  computed: {
    isChinese() {
166 167
      return this.$i18n.locale === "zh_CN"
    }
168
  },
169 170
  watch: {
    memberCode: {
171
      handler: function (newVal, oldVal) {
172 173
        if (newVal) {
          this.queryParams.memberId = newVal
174 175
        }
      },
176
      immediate: true
177
    },
chenwei's avatar
chenwei committed
178 179
    $route: {
      handler: function (route) {
180
        const query = route.query
chenwei's avatar
chenwei committed
181 182 183 184
        if (query.memberCode) {
          this.queryParams.key = this.$route.query.memberCode
        }
      },
185 186
      immediate: true
    }
187
  },
188
  created() {
189
    this.handleQuery()
190 191
  },
  activated() {
192
    this.handleQuery()
193 194 195 196
  },
  methods: {
    //积分来源
    handleSourceType(id) {
197
      return this.getDictDatas(DICT_TYPE.MEMBER_SCORE_SOURCE).filter((item) => item.value == id)[0]
198 199
    },
    handleholdScoreStatus(id) {
200
      return this.getDictDatas(DICT_TYPE.MEMBER_SCORE_OPERATE_TYPE).filter((item) => item.value == id)[0]
201 202
    },
    handleQuery() {
203 204
      this.queryParams.pageNo = 1
      let params = { ...this.queryParams }
205

chenwei's avatar
chenwei committed
206
      if (this.dateRangeCreateTime) {
207 208
        params.startTime = this.dateRangeCreateTime[0]
        params.endTime = this.dateRangeCreateTime[1]
209 210
      }
      queryMemberScoreRecord(params).then((res) => {
211 212 213 214
        this.loading = false
        this.memberList = res.data.list
        this.total = res.data.total
      })
215 216
    },
    handleQueryPagination() {
217
      let params = { ...this.queryParams }
chenwei's avatar
chenwei committed
218
      if (this.dateRangeCreateTime) {
219 220
        params.startTime = this.dateRangeCreateTime[0]
        params.endTime = this.dateRangeCreateTime[1]
221 222
      }
      queryMemberScoreRecord(params).then((res) => {
223 224 225 226
        this.loading = false
        this.memberList = res.data.list
        this.total = res.data.total
      })
227 228
    },
    resetQuery() {
229 230
      this.loading = true
      this.dateRangeCreateTime = []
231 232 233 234 235 236 237 238 239 240
      this.queryParams = {
        ruleTitle: "",
        ruleDesc: "",
        key: "",
        sourceType: "",
        scoreCount: "",
        scoreCountOperate: "",
        endTime: "",
        pageNo: 1,
        pageSize: 10,
241 242 243 244 245 246
        startTime: ""
      }
      this.handleQuery()
    }
  }
}
247
</script>