zxl
昨天 a222801f6776b0a6a010aacccb383de6ed7f2720
规则
2个文件已添加
349 ■■■■■ 已修改文件
manager/src/api/prize-ruler.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager/src/views/activity-prize/prize-ruler.vue 332 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
manager/src/api/prize-ruler.js
New file
@@ -0,0 +1,17 @@
import service from "../libs/axios";
export const getPage = (params) =>{
  return service({
    url: "/lmk/prizeRuler",
    method: "GET",
    params: params
  })
}
export const updateById = (params) =>{
  return service({
    url: "/lmk/prizeRuler",
    method: "PUT",
    data: params
  })
}
manager/src/views/activity-prize/prize-ruler.vue
New file
@@ -0,0 +1,332 @@
<template>
  <div>
    <Card>
      <!-- 搜索表单 -->
<!--      <Form-->
<!--        ref="searchForm"-->
<!--        @keydown.enter.native="handleSearch"-->
<!--        :model="searchForm"-->
<!--        inline-->
<!--        :label-width="80"-->
<!--        class="search-form"-->
<!--      >-->
<!--        <FormItem label="规则名称" prop="ruleName">-->
<!--          <Input-->
<!--            type="text"-->
<!--            v-model="searchForm.ruleName"-->
<!--            placeholder="请输入规则名称"-->
<!--            clearable-->
<!--            @on-clear="handleSearch"-->
<!--            @on-change="handleSearch"-->
<!--            style="width: 180px"-->
<!--          />-->
<!--        </FormItem>-->
<!--        <FormItem label="规则编码" prop="ruleCode">-->
<!--          <Input-->
<!--            type="text"-->
<!--            v-model="searchForm.ruleCode"-->
<!--            placeholder="请输入规则编码"-->
<!--            clearable-->
<!--            @on-clear="handleSearch"-->
<!--            @on-change="handleSearch"-->
<!--            style="width: 180px"-->
<!--          />-->
<!--        </FormItem>-->
<!--        <Button-->
<!--          @click="handleSearch"-->
<!--          type="primary"-->
<!--          icon="ios-search"-->
<!--          class="search-btn"-->
<!--        >搜索</Button>-->
<!--        <Button-->
<!--          @click="resetSearch"-->
<!--          icon="md-refresh"-->
<!--          style="margin-left: 8px"-->
<!--        >重置</Button>-->
<!--      </Form>-->
      <!-- 奖品表格 -->
      <Table
        :loading="loading"
        border
        :columns="columns"
        :data="list"
        ref="table"
        class="table"
      >
        <!-- 操作按钮插槽 -->
        <template slot-scope="{ row }" slot="action">
          <div class="action-btns">
            <Button
              type="info"
              size="small"
              @click="openEdit(row)"
            >编辑</Button>
          </div>
        </template>
      </Table>
      <!-- 分页 -->
      <Row type="flex" justify="end" class="page-footer">
        <Page
          :current="searchForm.pageNumber"
          :total="total"
          :page-size="searchForm.pageSize"
          @on-change="changePage"
          @on-page-size-change="changePageSize"
          :page-size-opts="[10, 20, 50]"
          size="small"
          show-total
          show-elevator
          show-sizer
        ></Page>
      </Row>
      <!-- 奖品编辑/新增模态框 -->
      <Modal
        v-model="modelShow"
        :title="modelTitle"
        @on-cancel="modelClose"
        width="1200"
        :mask-closable="false"
      >
        <Form ref="form" :model="form" :label-width="100">
          <Row :gutter="16">
            <Col span="24" v-if="showRuleValue">
              <FormItem label="规则值" prop="ruleValue">
                <InputNumber
                  v-model="form.ruleValue"
                  placeholder="请输入规则值"
                  clearable
                  style="width: 180px"
                  :min="0"
                />
              </FormItem>
            </Col>
            <Col span="24">
              <FormItem label="增加次数" prop="addNum" :label-width="100">
                <InputNumber
                  v-model="form.addNum"
                  placeholder="请输入增加次数"
                  clearable
                  style="width: 180px"
                  :min="0"
                />
              </FormItem>
            </Col>
          </Row>
        </Form>
        <div slot="footer">
          <Button @click="modelClose">取消</Button>
          <Button type="primary" :loading="submitLoading" @click="update">提交</Button>
        </div>
      </Modal>
    </Card>
  </div>
</template>
<script>
import { getPage,updateById } from "@/api/prize-ruler.js";
export default {
  name: "prize-euler",
  data() {
    return {
      loading:false,
      columns:[
        {
          title: '规则名称',
          key: 'ruleName',
          align: 'center',
          minWidth: 200,
        },
        {
          title: '规则编码',
          key: 'ruleCode',
          minWidth: 100,
        },
        {
          title: '规则值',
          key: 'ruleValue',
          minWidth: 100,
        },
        {
          title: '增加次数',
          key: 'addNum',
          minWidth: 100,
        },
        {
          title:'操作',
          slot: 'action',
          width: 200,
          align:'center',
          fixed:'right'
        }
      ],
      total:0,
      list:[],
      submitLoading:false,
      modelShow:false,
      modelTitle:'',
      showRuleValue:false,
      form:{
        id:'',
        ruleName:'',
        ruleCode:'',
        ruleValue:0,
        addNum:0,
      },
      searchForm:{
        ruleName:'',
        ruleCode:'',
        pageSize:10,
        pageNumber:1,
      },
    }
  },
  mounted() {
    this.init();
  },
  methods: {
    resetSearch(){
      this.$refs.searchForm.resetFields()
      this.searchForm.pageNumber = 1
      this.getPage()
    },
    update(){
      //调用修改
      let state = false;
      if ("USER_BUY_SUM_PRICE" === this.form.ruleCode || "USER_STAY_TIME" === this.form.ruleCode){
        state = true;
        if (this.form.ruleValue === null || this.form.ruleValue === 0){
          this.$Message.error("请输入规则值且大于0")
          return
        }
      }
      if (this.form.addNum === 0){
        this.$Message.error("请输入增加次数且大于0")
        return;
      }
      if (!state){
        this.form.ruleValue = null
      }
      console.log(this.form)
      updateById(this.form).then(res =>{
        if (res.code === 200){
          this.$Message.success(res.msg)
        }else {
          this.$Message.error(res.msg)
        }
        this.getPage();
        this.modelShow = false;
      })
    },
    modelClose(){
      this.modelShow = false
      this.submitLoading = false
    },
    getPage(){
      this.loading = true;
      getPage(this.searchForm).then(res =>{
        this.loading = false;
        if (res.code === 200){
          this.list = res.data;
          this.total = res.total
        }else {
          this.$Message.error(res.msg)
        }
      })
    },
    detail(row){
      this.infoModalShow = true;
      this.detailData = {...row};
    },
    openEdit(row){
      this.showRuleValue = false;
      this.$refs.form.resetFields();
      this.modelTitle = "修改规则值";
      let form = {...row};
      form.ruleValue =Number(form.ruleValue);
      this.form = {...form};
      if ("USER_BUY_SUM_PRICE" === row.ruleCode){
        this.showRuleValue = true;
      }else if ("USER_STAY_TIME" === row.ruleCode){
        this.showRuleValue = true;
      }
      this.modelShow = true;
    },
    handleSearch(){
      this.getPage()
    },
    // 初始化数据
    init() {
      this.getPage()
    },
    changePage(){
      this.searchForm.pageNumber = 1
      this.searchForm.pageSize = pageSize
      this.getPage()
    },
    changePageSize(){
      this.searchForm.pageNumber = page
      this.getPage()
    },
  },
}
</script>
<style lang="scss" scoped>
.search-form {
  padding: 16px;
  background: #f8f8f9;
  border-radius: 4px;
  margin-bottom: 16px;
  .ivu-form-item {
    margin-bottom: 16px;
    margin-right: 16px;
  }
  .search-btn {
    margin-left: 8px;
  }
}
.table {
  .thumbnail {
    max-width: 100%;
    max-height: 100px;
    object-fit: contain;
    cursor: pointer;
    transition: all 0.3s;
    &:hover {
      transform: scale(1.05);
      box-shadow: 0 0 8px rgba(0, 0, 0, 0.2);
    }
  }
  .action-btns {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    .ivu-btn {
      margin: 4px;
      font-size: 12px;
      padding: 2px 6px;
      min-width: 60px;
    }
  }
}
</style>