소스 검색

会员积分针对代码格式、功能优化
1.优化todo建议
2.删除无用代码

xiaqing 1 년 전
부모
커밋
de941ec6ba

+ 0 - 26
src/api/point/record/index.ts

@@ -4,7 +4,6 @@ export interface RecordVO {
   id: number
   bizId: string
   bizType: string
-  type: string
   title: string
   description: string
   point: number
@@ -20,28 +19,3 @@ export interface RecordVO {
 export const getRecordPage = async (params) => {
   return await request.get({ url: `/point/record/page`, params })
 }
-
-// 查询用户积分记录详情
-export const getRecord = async (id: number) => {
-  return await request.get({ url: `/point/record/get?id=` + id })
-}
-
-// 新增用户积分记录
-export const createRecord = async (data: RecordVO) => {
-  return await request.post({ url: `/point/record/create`, data })
-}
-
-// 修改用户积分记录
-export const updateRecord = async (data: RecordVO) => {
-  return await request.put({ url: `/point/record/update`, data })
-}
-
-// 删除用户积分记录
-export const deleteRecord = async (id: number) => {
-  return await request.delete({ url: `/point/record/delete?id=` + id })
-}
-
-// 导出用户积分记录 Excel
-export const exportRecord = async (params) => {
-  return await request.download({ url: `/point/record/export-excel`, params })
-}

+ 29 - 8
src/views/member/point/config/index.vue

@@ -10,26 +10,36 @@
       <el-form-item label="hideId" v-show="false">
         <el-input v-model="formData.id" />
       </el-form-item>
-      <!-- TODO @xiaqing:展示给用户的字段名,可以和 crmeb 保持一直,然后每一个表单都有类似 crmeb 的 tip;例如说:积分抵用比例(1积分抵多少金额)单位:元 -->
-      <el-form-item label="积分抵扣" prop="tradeDeductEnable">
-        <el-switch v-model="formData.tradeDeductEnable" />
+      <el-form-item label="积分抵扣" prop="tradeDeductEnable" class="item-bottom">
+        <el-switch v-model="formData.tradeDeductEnable" style="user-select: none" />
+      </el-form-item>
+      <el-form-item>
+        <el-text class="mx-1" size="small" type="info">下单积分是否抵用订单金额</el-text>
       </el-form-item>
       <!-- TODO @xiaqing:用户看到的是元,最多 2 位;分是后端的存储哈 -->
-      <el-form-item label="抵扣单位(分)" prop="tradeDeductUnitPrice">
+      <el-form-item label="积分抵扣" prop="tradeDeductUnitPrice" class="item-bottom">
         <el-input-number
           v-model="formData.tradeDeductUnitPrice"
-          placeholder="请输入抵扣单位(分)"
+          placeholder="请输入积分抵扣金额"
           style="width: 300px"
         />
       </el-form-item>
-      <el-form-item label="积分抵扣最大值" prop="tradeDeductMaxPrice">
+      <el-form-item>
+        <el-text class="mx-1" size="small" type="info"
+          >积分抵用比例(1积分抵多少金额)单位:元
+        </el-text>
+      </el-form-item>
+      <el-form-item label="积分抵扣最大值" prop="tradeDeductMaxPrice" class="item-bottom">
         <el-input-number
           v-model="formData.tradeDeductMaxPrice"
           placeholder="请输入积分抵扣最大值"
           style="width: 300px"
         />
       </el-form-item>
-      <el-form-item label="1 元赠送多少分" prop="tradeGivePoint">
+      <el-form-item>
+        <el-text class="mx-1" size="small" type="info">单次下单积分使用上限,0不限制</el-text>
+      </el-form-item>
+      <el-form-item label="1 元赠送多少分" prop="tradeGivePoint" class="item-bottom">
         <el-input-number
           v-model="formData.tradeGivePoint"
           placeholder="请输入 1 元赠送多少积分"
@@ -37,7 +47,12 @@
         />
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" @click="onSubmit">提交</el-button>
+        <el-text class="mx-1" size="small" type="info"
+          >下单支付金额按比例赠送积分(实际支付1元赠送多少积分)</el-text
+        >
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" @click="onSubmit">保存</el-button>
       </el-form-item>
     </el-form>
   </ContentWrap>
@@ -91,3 +106,9 @@ onMounted(() => {
   getConfig()
 })
 </script>
+
+<style scoped>
+.item-bottom {
+  margin-bottom: 0px;
+}
+</style>

+ 0 - 180
src/views/member/point/record/RecordForm.vue

@@ -1,180 +0,0 @@
-<template>
-  <Dialog :title="dialogTitle" v-model="dialogVisible">
-    <el-form
-      ref="formRef"
-      :model="formData"
-      :rules="formRules"
-      label-width="120px"
-      v-loading="formLoading"
-    >
-      <el-form-item label="业务编码" prop="bizId">
-        <el-input v-model="formData.bizId" placeholder="请输入业务编码" />
-      </el-form-item>
-      <el-form-item label="业务类型" prop="bizType">
-        <el-select v-model="formData.bizType" placeholder="请选择业务类型">
-          <el-option
-            v-for="dict in getStrDictOptions(DICT_TYPE.MEMBER_POINT_BIZ_TYPE)"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="操作类型" prop="type">
-        <el-select v-model="formData.type" placeholder="操作类型">
-          <el-option label="增加" value="1" />
-          <el-option label="扣减" value="0" />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="积分标题" prop="title">
-        <el-input v-model="formData.title" placeholder="请输入积分标题" />
-      </el-form-item>
-      <el-form-item label="积分描述">
-        <Editor :model-value="formData.description" height="150px" />
-      </el-form-item>
-      <el-form-item label="积分" prop="point">
-        <el-input v-model="formData.point" placeholder="请输入积分" />
-      </el-form-item>
-      <el-form-item label="变动后的积分" prop="totalPoint">
-        <el-input v-model="formData.totalPoint" placeholder="请输入变动后的积分" />
-      </el-form-item>
-      <el-form-item label="积分状态" prop="status">
-        <el-select v-model="formData.status" placeholder="积分状态">
-          <el-option
-            v-for="dict in getIntDictOptions(DICT_TYPE.MEMBER_POINT_STATUS)"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value"
-          />
-        </el-select>
-      </el-form-item>
-      <el-form-item label="用户id" prop="userId">
-        <el-input v-model="formData.userId" placeholder="请输入用户id" />
-      </el-form-item>
-      <el-form-item label="冻结时间" prop="freezingTime">
-        <el-date-picker
-          v-model="formData.freezingTime"
-          type="date"
-          value-format="x"
-          placeholder="选择冻结时间"
-        />
-      </el-form-item>
-      <el-form-item label="解冻时间" prop="thawingTime">
-        <el-date-picker
-          v-model="formData.thawingTime"
-          type="date"
-          value-format="x"
-          placeholder="选择解冻时间"
-        />
-      </el-form-item>
-      <el-form-item label="发生时间" prop="createDate">
-        <el-date-picker
-          v-model="formData.createDate"
-          type="date"
-          value-format="x"
-          placeholder="选择发生时间"
-        />
-      </el-form-item>
-    </el-form>
-    <template #footer>
-      <el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
-      <el-button @click="dialogVisible = false">取 消</el-button>
-    </template>
-  </Dialog>
-</template>
-<script lang="ts" setup>
-import { DICT_TYPE, getStrDictOptions, getIntDictOptions } from '@/utils/dict'
-import * as RecordApi from '@/api/point/record'
-
-const { t } = useI18n() // 国际化
-const message = useMessage() // 消息弹窗
-
-const dialogVisible = ref(false) // 弹窗的是否展示
-const dialogTitle = ref('') // 弹窗的标题
-const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
-const formType = ref('') // 表单的类型:create - 新增;update - 修改
-const formData = ref({
-  id: undefined,
-  bizId: undefined,
-  bizType: undefined,
-  type: undefined,
-  title: undefined,
-  description: undefined,
-  point: undefined,
-  totalPoint: undefined,
-  status: undefined,
-  userId: undefined,
-  freezingTime: undefined,
-  thawingTime: undefined,
-  createDate: undefined
-})
-const formRules = reactive({
-  totalPoint: [{ required: true, message: '变动后的积分不能为空', trigger: 'blur' }]
-})
-const formRef = ref() // 表单 Ref
-
-/** 打开弹窗 */
-const open = async (type: string, id?: number) => {
-  dialogVisible.value = true
-  dialogTitle.value = t('action.' + type)
-  formType.value = type
-  resetForm()
-  // 修改时,设置数据
-  if (id) {
-    formLoading.value = true
-    try {
-      formData.value = await RecordApi.getRecord(id)
-    } finally {
-      formLoading.value = false
-    }
-  }
-}
-defineExpose({ open }) // 提供 open 方法,用于打开弹窗
-
-/** 提交表单 */
-const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
-const submitForm = async () => {
-  // 校验表单
-  if (!formRef) return
-  const valid = await formRef.value.validate()
-  if (!valid) return
-  // 提交请求
-  formLoading.value = true
-  try {
-    const data = formData.value as unknown as RecordApi.RecordVO
-    if (formType.value === 'create') {
-      await RecordApi.createRecord(data)
-      message.success(t('common.createSuccess'))
-    } else {
-      await RecordApi.updateRecord(data)
-      message.success(t('common.updateSuccess'))
-    }
-    dialogVisible.value = false
-    // 发送操作成功的事件
-    emit('success')
-  } finally {
-    formLoading.value = false
-  }
-}
-
-// TODO @xiaqing:不需要更新操作哇?
-/** 重置表单 */
-const resetForm = () => {
-  formData.value = {
-    id: undefined,
-    bizId: undefined,
-    bizType: undefined,
-    type: undefined,
-    title: undefined,
-    description: undefined,
-    point: undefined,
-    totalPoint: undefined,
-    status: undefined,
-    userId: undefined,
-    freezingTime: undefined,
-    thawingTime: undefined,
-    createDate: undefined
-  }
-  formRef.value?.resetFields()
-}
-</script>

+ 13 - 25
src/views/member/point/record/index.vue

@@ -8,10 +8,10 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="业务编码" prop="bizId">
+      <el-form-item label="用户" prop="nickName">
         <el-input
-          v-model="queryParams.bizId"
-          placeholder="请输入业务编码"
+          v-model="queryParams.nickName"
+          placeholder="请输入用户昵称"
           clearable
           @keyup.enter="handleQuery"
           class="!w-240px"
@@ -32,12 +32,6 @@
           />
         </el-select>
       </el-form-item>
-      <el-form-item label="操作类型" prop="type">
-        <el-select v-model="queryParams.type" placeholder="操作类型" clearable class="!w-240px">
-          <el-option label="增加" value="1" />
-          <el-option label="扣减" value="0" />
-        </el-select>
-      </el-form-item>
       <el-form-item label="积分标题" prop="title">
         <el-input
           v-model="queryParams.title"
@@ -85,8 +79,7 @@
   <ContentWrap>
     <el-table v-loading="loading" :data="list">
       <el-table-column label="编号" align="center" prop="id" />
-      <!-- TODO @xiaqing:展示用户的昵称哈; -->
-      <el-table-column label="用户" align="center" prop="userId" />
+      <el-table-column label="用户" align="center" prop="nickName" />
       <el-table-column label="积分标题" align="center" prop="title" />
       <el-table-column label="积分描述" align="center" prop="description" />
       <el-table-column
@@ -95,18 +88,14 @@
         prop="createDate"
         :formatter="dateFormatter"
       />
-      <!-- todo @xiaqing:可以参考 crmeb 的展示,把积分和增加减少放一起,用红色和绿色展示 -->
-      <el-table-column
-        label="操作类型"
-        align="center"
-        prop="type"
-        :formatter="
-          (_, __, c) => {
-            return c === '1' ? '增加' : '扣减'
-          }
-        "
-      />
-      <el-table-column label="积分" align="center" prop="point" />
+      <el-table-column label="积分" align="center" prop="point">
+        <template #default="scope">
+          <el-tag v-if="scope.row.point > 0" class="ml-2" type="success" effect="dark">
+            {{ scope.row.point }}
+          </el-tag>
+          <el-tag v-else class="ml-2" type="danger" effect="dark"> {{ scope.row.point }} </el-tag>
+        </template>
+      </el-table-column>
       <el-table-column label="变动后的积分" align="center" prop="totalPoint" />
       <el-table-column label="业务编码" align="center" prop="bizId" />
       <el-table-column label="业务类型" align="center" prop="bizType">
@@ -149,7 +138,6 @@
 import { DICT_TYPE, getStrDictOptions, getIntDictOptions } from '@/utils/dict'
 import { dateFormatter } from '@/utils/formatTime'
 import * as RecordApi from '@/api/point/record'
-import RecordForm from './RecordForm.vue'
 
 defineOptions({ name: 'PointRecord' })
 
@@ -159,7 +147,7 @@ const list = ref([]) // 列表的数据
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
-  bizId: null,
+  nickName: null,
   bizType: null,
   type: null,
   title: null,

+ 9 - 4
src/views/member/signin/record/index.vue

@@ -8,9 +8,9 @@
       :inline="true"
       label-width="68px"
     >
-      <el-form-item label="签到用户" prop="userId">
+      <el-form-item label="签到用户" prop="nickName">
         <el-input
-          v-model="queryParams.userId"
+          v-model="queryParams.nickName"
           placeholder="请输入签到用户"
           clearable
           @keyup.enter="handleQuery"
@@ -59,7 +59,12 @@
       <el-table-column label="编号" align="center" prop="id" />
       <!-- TODO @xiaqing:展示用户昵称  -->
       <el-table-column label="签到用户" align="center" prop="nickName" />
-      <el-table-column label="签到天数" align="center" prop="day" />
+      <el-table-column
+        label="签到天数"
+        align="center"
+        prop="day"
+        :formatter="(_, __, cellValue) => ['第', cellValue, '天'].join(' ')"
+      />
       <el-table-column label="获得积分" align="center" prop="point" />
       <el-table-column
         label="签到时间"
@@ -96,7 +101,7 @@ const list = ref([]) // 列表的数据
 const queryParams = reactive({
   pageNo: 1,
   pageSize: 10,
-  userId: null,
+  nickName: null,
   day: null,
   createTime: []
 })