소스 검색

积分调整功能

gqx 2 년 전
부모
커밋
25ae831c35

+ 6 - 0
src/utils/excloudHotelIdParamPath/MemeberController.js

@@ -0,0 +1,6 @@
+export default {
+    name: '会员管理模块',
+    excloudUrls: [
+        '/business/busMemberCard/list'
+    ]
+}

+ 39 - 10
src/views/markets/member.vue

@@ -179,14 +179,18 @@
                   <span class="chart-card-title">今日过生日的会员</span>
                 </div>
                 <div class="total" style="color: #ff5400">
-                  <span>{{ stat.birthdayCount||0 }}</span><span style="font-size: 15px">位</span>
+                  <span>{{ stat.birthdayCount || 0 }}</span
+                  ><span style="font-size: 15px">位</span>
                 </div>
               </div>
               <div class="chart-card-content">
                 <div class="content-fix">
                   <div>
                     <div style="margin-right: 16px">
-                      本月还有<span style="color: #ff5400">{{ stat.monthBirthdayCount||0 }}</span>位会员生日
+                      本月还有<span style="color: #ff5400">{{
+                        stat.monthBirthdayCount || 0
+                      }}</span
+                      >位会员生日
                     </div>
                   </div>
                 </div>
@@ -203,14 +207,18 @@
                   <span class="chart-card-title">会员总数</span>
                 </div>
                 <div class="total" style="color: #ff5400">
-                  <span>{{ stat.count||0 }}</span><span style="font-size: 15px">位</span>
+                  <span>{{ stat.count || 0 }}</span
+                  ><span style="font-size: 15px">位</span>
                 </div>
               </div>
               <div class="chart-card-content">
                 <div class="content-fix">
                   <div>
                     <div style="margin-right: 16px">
-                      今日新增<span style="color: #ff5400">{{ stat.dayCount||0 }}</span>位会员
+                      今日新增<span style="color: #ff5400">{{
+                        stat.dayCount || 0
+                      }}</span
+                      >位会员
                     </div>
                   </div>
                 </div>
@@ -317,6 +325,8 @@
         </template>
 
         <span slot="action" slot-scope="text, record">
+          <a @click="handlePointEdit(record)">积分调整</a>
+          <a-divider type="vertical" />
           <a @click="handleEdit(record)">编辑</a>
 
           <a-divider type="vertical" />
@@ -371,6 +381,10 @@
       ref="modalForm"
       @ok="modalFormOk"
     ></bus-member-card-modal>
+    <bus-member-point-log-modal
+      ref="modalMemberPointLogForm"
+      @ok="modalFormOk"
+    ></bus-member-point-log-modal>
   </a-card>
 </template>
 
@@ -380,12 +394,13 @@ import { mixinDevice } from "@/utils/mixin";
 import { JeecgListMixin } from "@/mixins/JeecgListMixin";
 import { httpAction } from "@/api/manage";
 import BusMemberCardModal from "./modules/memberCard/BusMemberCardModal";
-
+import BusMemberPointLogModal from "./modules/memberPoint/BusMemberPointLogModal";
 export default {
   name: "BusMemberCardList",
   mixins: [JeecgListMixin, mixinDevice],
   components: {
     BusMemberCardModal,
+    BusMemberPointLogModal,
   },
   data() {
     const hotelInfo = JSON.parse(localStorage.getItem("storeInfo"));
@@ -455,11 +470,17 @@ export default {
           title: "可用积分",
           align: "center",
           dataIndex: "integral",
+          customRender: function (text) {
+            return text || 0;
+          },
         },
         {
           title: "可用余额",
           align: "center",
           dataIndex: "balance",
+          customRender: function (text) {
+            return text || 0;
+          },
         },
         {
           title: "标签",
@@ -536,11 +557,7 @@ export default {
         this.labelList = res.result.records;
       }
     });
-    httpAction(
-      "/business/busMemberCard/stat",
-      {},
-      "get"
-    ).then((res) => {
+    httpAction("/business/busMemberCard/stat", {}, "get").then((res) => {
       if (res.success) {
         this.stat = res.result;
       }
@@ -552,6 +569,18 @@ export default {
     },
   },
   methods: {
+    handlePointEdit(item) {
+      this.$refs.modalMemberPointLogForm.add({
+        memberId: item.id,
+        hotelId: item.hotelId,
+        tenantId: item.tenantId,
+        integral: item.integral,
+        cardNo: item.cardNo,
+        name: item.name,
+      });
+      this.$refs.modalMemberPointLogForm.title = "积分调整";
+      this.$refs.modalMemberPointLogForm.disableSubmit = false;
+    },
     groupChange(e) {
       if (this.selectedRowKeys.length <= 0) {
         this.$message.warning("请选择一条记录!");

+ 170 - 0
src/views/markets/modules/memberPoint/BusMemberPointLogForm.vue

@@ -0,0 +1,170 @@
+<template>
+  <a-spin :spinning="confirmLoading">
+    <j-form-container :disabled="formDisabled">
+      <a-form-model
+        ref="form"
+        :model="model"
+        :rules="validatorRules"
+        slot="detail"
+      >
+        <a-row>
+          <a-col :span="24">
+            <a-form-model-item
+              label="姓名"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+            >
+              <span>{{ model.name }}</span>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item
+              label="卡号"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+            >
+              <span>{{ model.cardNo }}</span>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item
+              label="积分"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+            >
+              <span>{{ model.integral || 0 }}</span>
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item
+              label="类型"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+            >
+              <a-radio-group v-model="model.type">
+                <a-radio :value="1">充值</a-radio>
+                <a-radio :value="2">扣除</a-radio>
+                <a-radio :value="3">清空</a-radio>
+              </a-radio-group>
+            </a-form-model-item>
+          </a-col>
+
+          <a-col :span="24" v-if="model.type != 3">
+            <a-form-model-item
+              label="充值积分"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              prop="num"
+            >
+              <a-input-number v-model="model.num" style="width: 100%" :min="1" />
+            </a-form-model-item>
+          </a-col>
+          <a-col :span="24">
+            <a-form-model-item
+              label="备注"
+              :labelCol="labelCol"
+              :wrapperCol="wrapperCol"
+              prop="remarks"
+            >
+              <a-textarea
+                v-model="model.remarks"
+                rows="4"
+                placeholder="请输入备注"
+              />
+            </a-form-model-item>
+          </a-col>
+        </a-row>
+      </a-form-model>
+    </j-form-container>
+  </a-spin>
+</template>
+
+<script>
+import { httpAction, getAction } from "@/api/manage";
+import { validateDuplicateValue } from "@/utils/util";
+
+export default {
+  name: "BusMemberPointLogForm",
+  components: {},
+  props: {
+    //表单禁用
+    disabled: {
+      type: Boolean,
+      default: false,
+      required: false,
+    },
+  },
+  data() {
+    return {
+      model: { type: 1, num: 1 },
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 },
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 },
+      },
+      confirmLoading: false,
+      validatorRules: {
+        type: [{ required: true, message: "请输入类型!" }],
+        num: [{ required: true, message: "请输入积分数量!" }],
+      },
+      url: {
+        add: "/business/busMemberPointLog/add",
+        edit: "/business/busMemberPointLog/edit",
+        queryById: "/business/busMemberPointLog/queryById",
+      },
+    };
+  },
+  computed: {
+    formDisabled() {
+      return this.disabled;
+    },
+  },
+  created() {
+    //备份model原始值
+    this.modelDefault = JSON.parse(JSON.stringify(this.model));
+  },
+  methods: {
+    add(record) {
+      this.modelDefault = Object.assign({}, record,this.modelDefault);
+      this.edit(this.modelDefault);
+    },
+    edit(record) {
+      this.model = Object.assign({}, record);
+      this.visible = true;
+    },
+    submitForm() {
+      const that = this;
+      // 触发表单验证
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          that.confirmLoading = true;
+          let httpurl = "";
+          let method = "";
+          if (!this.model.id) {
+            httpurl += this.url.add;
+            method = "post";
+          } else {
+            httpurl += this.url.edit;
+            method = "put";
+          }
+          httpAction(httpurl, this.model, method)
+            .then((res) => {
+              if (res.success) {
+                that.$message.success(res.message);
+                that.$emit("ok");
+              } else {
+                that.$message.warning(res.message);
+              }
+            })
+            .finally(() => {
+              that.confirmLoading = false;
+            });
+        }
+      });
+    },
+  },
+};
+</script>

+ 84 - 0
src/views/markets/modules/memberPoint/BusMemberPointLogModal.Style#Drawer.vue

@@ -0,0 +1,84 @@
+<template>
+  <a-drawer
+    :title="title"
+    :width="width"
+    placement="right"
+    :closable="false"
+    @close="close"
+    destroyOnClose
+    :visible="visible">
+    <bus-member-point-log-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit" normal></bus-member-point-log-form>
+    <div class="drawer-footer">
+      <a-button @click="handleCancel" style="margin-bottom: 0;">关闭</a-button>
+      <a-button v-if="!disableSubmit"  @click="handleOk" type="primary" style="margin-bottom: 0;">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+
+  import BusMemberPointLogForm from './BusMemberPointLogForm'
+
+  export default {
+    name: 'BusMemberPointLogModal',
+    components: {
+      BusMemberPointLogForm
+    },
+    data () {
+      return {
+        title:"操作",
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add () {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add();
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        });
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+/** Button按钮间距 */
+  .ant-btn {
+    margin-left: 30px;
+    margin-bottom: 30px;
+    float: right;
+  }
+  .drawer-footer{
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 60 - 0
src/views/markets/modules/memberPoint/BusMemberPointLogModal.vue

@@ -0,0 +1,60 @@
+<template>
+  <j-modal
+    :title="title"
+    :width="width"
+    :visible="visible"
+    switchFullscreen
+    @ok="handleOk"
+    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
+    @cancel="handleCancel"
+    cancelText="关闭">
+    <bus-member-point-log-form ref="realForm" @ok="submitCallback" :disabled="disableSubmit"></bus-member-point-log-form>
+  </j-modal>
+</template>
+
+<script>
+
+  import BusMemberPointLogForm from './BusMemberPointLogForm'
+  export default {
+    name: 'BusMemberPointLogModal',
+    components: {
+      BusMemberPointLogForm
+    },
+    data () {
+      return {
+        title:'',
+        width:800,
+        visible: false,
+        disableSubmit: false
+      }
+    },
+    methods: {
+      add (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.add(record);
+        })
+      },
+      edit (record) {
+        this.visible=true
+        this.$nextTick(()=>{
+          this.$refs.realForm.edit(record);
+        })
+      },
+      close () {
+        this.$emit('close');
+        this.visible = false;
+      },
+      handleOk () {
+        this.$refs.realForm.submitForm();
+      },
+      submitCallback(){
+        this.$emit('ok');
+        this.visible = false;
+      },
+      handleCancel () {
+        this.close()
+      }
+    }
+  }
+</script>