From a222801f6776b0a6a010aacccb383de6ed7f2720 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 30 九月 2025 14:38:34 +0800
Subject: [PATCH] 规则

---
 manager/src/api/prize-ruler.js                   |   17 ++
 manager/src/views/activity-prize/prize-ruler.vue |  332 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 349 insertions(+), 0 deletions(-)

diff --git a/manager/src/api/prize-ruler.js b/manager/src/api/prize-ruler.js
new file mode 100644
index 0000000..408a031
--- /dev/null
+++ b/manager/src/api/prize-ruler.js
@@ -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
+  })
+}
diff --git a/manager/src/views/activity-prize/prize-ruler.vue b/manager/src/views/activity-prize/prize-ruler.vue
new file mode 100644
index 0000000..e19a1c9
--- /dev/null
+++ b/manager/src/views/activity-prize/prize-ruler.vue
@@ -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>

--
Gitblit v1.8.0