فهرست منبع

积分规则初步完成

Joe 4 سال پیش
والد
کامیت
5d28562af5
2فایلهای تغییر یافته به همراه213 افزوده شده و 364 حذف شده
  1. 8 7
      src/api/integral/rule.js
  2. 205 357
      src/views/point/Point_Rule.vue

+ 8 - 7
src/api/integral/rule.js

@@ -41,13 +41,14 @@ export function oilNameList(query) {
 }
 
 // 查询油站对应的油品名称
-export function oilNameInfo(query) {
-  return request({
-    url: '/station/price/oilNameInfo',
-    method: 'get',
-    params: query
-  })
-}
+// export function oilNameInfo(query) {
+//   return request({
+//     url: '/station/price/oilNameInfo',
+//     method: 'get',
+//     params: query
+//   })
+// }
+
 // 查询油站,油品,对应的等级
 export function gradeList(query) {
   return request({

+ 205 - 357
src/views/point/Point_Rule.vue

@@ -2,16 +2,16 @@
   <div class="app-container">
     <el-form ref="form" :model="form" :rules="rules" label-width="120px">
       <el-form-item label="是否开启积分规则功能" label-width="160px">
-        <el-radio-group v-model="ruleForm.integralFlag">
+        <el-radio-group v-model="form.integralFlag">
           <el-radio label="0">关闭</el-radio>
           <el-radio label="1">开启</el-radio>
         </el-radio-group>
       </el-form-item>
       <el-form-item label="油品积分规则">
-        <div 
-          v-for="(item, index) in form.itemsDetail||[]" 
+        <div
+          v-for="(item, index) in form.itemsDetail || []"
           :key="index"
-          style="border:1px solid"
+          style="border: 1px solid"
         >
           <div>
             适用油品
@@ -20,7 +20,7 @@
               placeholder="请选择油品"
               clearable
               size="small"
-              @change="oilNameChang(index)"
+              @change="oilNameChang(item, index)"
             >
               <el-option
                 v-for="item in oilNameOptions"
@@ -30,7 +30,7 @@
               ></el-option>
             </el-select>
           </div>
-          <div>
+          <div v-if="item.oilType != 3">
             规则类型
             <el-select
               v-model="item.ruleType"
@@ -43,7 +43,7 @@
               <el-option label="以加油升数累计" value="3"></el-option>
             </el-select>
           </div>
-          <div>
+          <div v-if="item.oilType != 3">
             适用等级
             <el-select
               v-model="item.gread"
@@ -52,160 +52,62 @@
               size="small"
             >
               <el-option
-                v-for="item in gradeOptions[index]"
-                :key="item.grade"
-                :label="item.grade"
-                :value="item.grade"
+                v-for="ele in item.gradeList||[]"
+                :key="ele.id"
+                :label="ele.grade"
+                :value="ele.id.toString()"
               ></el-option>
+              <el-option key="0" label="所有人" value="0"></el-option>
             </el-select>
           </div>
           <div>
-            满<el-input-number v-model="item.ruleTerms" :min="0" size="small" />元(L) 开始积分
+            满<el-input-number
+              v-model="item.ruleTerms"
+              :min="0"
+              size="small"
+            />元(L) 开始积分
           </div>
           <div>
-            每消费<el-input-number v-model="item.saleAmt" size="small" :min="0" />元获得<el-input-number v-model="item.integral" size="small" :min="0" />积分
+            每消费<el-input-number
+              v-model="item.saleAmt"
+              size="small"
+              :min="0"
+            />元获得<el-input-number
+              v-model="item.integral"
+              size="small"
+              :min="0"
+            />积分
           </div>
           <div>
-              <el-button type="danger" @click="del(index)" size="small"
-                >删除</el-button
-              >
-              <el-button
-                v-show="index == rowsnum"
-                type="success"
-                @click="addItem()"
-                size="small"
-                >新增</el-button
-              >
+            <el-button type="danger" @click="del(index)" size="small"
+              >删除</el-button
+            >
+            <el-button
+              v-show="index == rowsnum"
+              type="success"
+              @click="addItem()"
+              size="small"
+              >新增</el-button
+            >
           </div>
         </div>
       </el-form-item>
 
-      <!-- <div>
-        <el-row
-          v-for="(item, index) in form.itemsDetail"
-          :key="index"
-          style="margin-left: 80px"
-        >
-          <el-form
-            :inline="true"
-            :model="form.itemsDetail[index]"
-            :rules="rules"
-            ref="ruleForms"
-            class="demo-form-inline"
-            size="small"
-          >
-            <el-form-item>
-              <el-select
-                v-model="item.oilName"
-                placeholder="请选择油品"
-                clearable
-                size="small"
-                @change="oilNameChang(index)"
-              >
-                <el-option
-                  v-for="item in oilNameOptions"
-                  :key="item.oilName"
-                  :label="item.oilName"
-                  :value="item.oilName"
-                ></el-option>
-              </el-select>
-              <span> 规则类型</span>
-              <el-select
-                v-model="item.ruleType"
-                placeholder="请选择规则"
-                clearable
-                size="small"
-              >
-                <el-option label="以订单实付累计" value="1"></el-option>
-                <el-option label="以订单应付累计" value="2"></el-option>
-                <el-option label="以加油升数累计" value="3"></el-option>
-              </el-select>
-              <span>满</span>
-              <el-input-number v-model="item.ruleTerms" :min="0" size="small" />
-              <span v-if="item.ruleType == '3'">L</span>
-              <span v-else>元</span>
-              <span>起累计 </span>
-
-              <el-select
-                v-model="item.gread"
-                placeholder="请选择等级"
-                clearable
-                size="small"
-              >
-                <el-option
-                  v-for="item in gradeOptions[index]"
-                  :key="item.grade"
-                  :label="item.grade"
-                  :value="item.grade"
-                ></el-option>
-              </el-select>
-              <span>每消费</span>
-              <el-input-number v-model="item.saleAmt" size="small" :min="0" />
-              <span v-if="item.ruleType == '3'">L</span>
-              <span v-else>元</span>
-              <el-input-number v-model="item.integral" size="small" :min="0" />
-              <span>积分</span>
-            </el-form-item>
-            <el-form-item>
-              <el-button type="danger" @click="del(index)" size="small"
-                >删除</el-button
-              >
-              <el-button
-                v-show="index == rowsnum"
-                type="success"
-                @click="addItem()"
-                size="small"
-                >新增</el-button
-              >
-            </el-form-item>
-          </el-form>
-        </el-row>
-      </div> -->
-      <el-form-item label="非油品积分规则"></el-form-item>
-      <div>
-        <el-row
-          v-for="(item, index) in form.notOilList"
-          :key="index"
-          style="margin-left: 80px"
-        >
-          <el-form
-            :inline="true"
-            :model="form.notOilList[index]"
-            :rules="rules"
-            ref="ruleForms"
-            class="demo-form-inline"
-            size="small"
-          >
-            <el-form-item>
-              <span>满</span>
-              <el-input-number v-model="item.ruleTerms" :min="0" size="small" />
-              <span></span>
-              <span>元 起累计 </span>
-              <span>每消费</span>
-              <el-input-number v-model="item.saleAmt" size="small" :min="0" />
-              <span>元</span>
-              <el-input-number v-model="item.integral" size="small" :min="0" />
-              <span>积分</span>
-            </el-form-item>
-            <el-button type="danger" @click="delNoil()" size="small"
-              >清空非油品积分规则</el-button
-            >
-          </el-form>
-        </el-row>
-      </div>
       <el-form-item label="积分有效期设置" prop="termDateManage">
         <el-radio-group v-model="form.integralTermSetting">
-          <el-radio :label="1"> 永久有效 </el-radio>
-          <el-radio :label="2"> 指定清空积分时间 </el-radio>
+          <el-radio label="1"> 永久有效 </el-radio>
+          <el-radio label="2"> 指定清空积分时间 </el-radio>
         </el-radio-group>
-        <el-date-picker
-          clearable
-          size="small"
-          style="width: 200px; margin-left: 10px"
-          v-model="form.integralEmptyTime"
-          type="datetime"
-        >
-        </el-date-picker>
+        <div v-show="form.integralTermSetting == 2">
+          <el-date-picker
+            clearable
+            size="small"
+            style="width: 200px; margin-left: 10px"
+            v-model="form.integralEmptyTime"
+            type="datetime"
+          >
+          </el-date-picker>
+        </div>
       </el-form-item>
 
       <el-form-item label="积分活动时限" prop="termDateManage">
@@ -213,15 +115,17 @@
           <el-radio label="1">不指定结束时间</el-radio>
           <el-radio label="2">指定结束时间</el-radio>
         </el-radio-group>
-        <el-date-picker
-          clearable
-          size="small"
-          style="width: 200px; margin-left: 10px"
-          v-model="form.emptyDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-        >
-        </el-date-picker>
+        <div v-show="form.termDateManage == 2">
+          <el-date-picker
+            clearable
+            size="small"
+            style="width: 200px; margin-left: 10px"
+            v-model="form.emptyDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+          >
+          </el-date-picker>
+        </div>
       </el-form-item>
       <el-form-item label="多倍积分活动">
         <el-radio-group v-model="form.integralActivity">
@@ -229,128 +133,92 @@
           <el-radio label="1">开启</el-radio>
         </el-radio-group>
       </el-form-item>
-      <el-row>
-        <el-col :span="8" style="">
-          <el-form-item label="周期类型" prop="datePicker">
-            <el-select
-              v-model="form.datePicker"
-              clearable
-              size="small"
-              @change="datePickerChang"
-            >
-              <el-option label="每周指定日" value="1"></el-option>
-              <el-option label="每月指定日" value="2"></el-option>
-              <el-option label="固定活动日" value="3"></el-option>
-            </el-select>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item v-show="workDaytrue">
-            <div
-              style="
-                display: flex;
-                flex-wrap: wrap;
-                border-style: solid;
-                border-color: #f5f7fa;
-              "
-            >
-              <div
-                v-for="(item, index) in workDay"
-                :key="index"
-                style="margin: 3px"
-              >
-                <div
-                  class="hover-style"
-                  style="
-                    border-radius: 5px;
-                    font-weight: bold;
-                    font-size: 12px;
-                    cursor: pointer;
-                  "
-                  @click="clickWorkDayCalendar(item, index)"
-                >
-                  <div>{{ item }}</div>
-                  <div
-                    v-if="collectClickWorkDay.indexOf(index) > -1"
-                    style="
-                      width: 4px;
-                      height: 4px;
-                      border-radius: 50%;
-                      background-color: red;
-                      position: relative;
-                      left: calc(50% - 2px);
-                    "
-                  ></div>
-                  <div v-else style="width: 4px; height: 4px"></div>
-                </div>
-              </div>
-            </div>
-          </el-form-item>
-          <el-form-item v-show="moonDaytrue">
+      <el-form-item
+        label="周期类型"
+        prop="datePicker"
+        v-show="form.integralActivity == 1"
+      >
+        <el-select
+          v-model="form.datePicker"
+          clearable
+          size="small"
+          @change="datePickerChang"
+        >
+          <el-option label="每周指定日" value="1"></el-option>
+          <el-option label="每月指定日" value="2"></el-option>
+          <el-option label="固定活动日" value="3"></el-option>
+        </el-select>
+        <div
+          v-show="form.datePicker != 3"
+          style="
+            display: flex;
+            flex-wrap: wrap;
+            border-style: solid;
+            border-color: #f5f7fa;
+          "
+        >
+          <div
+            v-for="(item, index) in timeSelect[form.datePicker]"
+            :key="index"
+            style="margin: 3px"
+          >
             <div
+              class="hover-style"
               style="
-                display: flex;
-                flex-wrap: wrap;
-                border-style: solid;
-                border-color: #f5f7fa;
+                border-radius: 5px;
+                font-weight: bold;
+                font-size: 12px;
+                cursor: pointer;
               "
+              @click="clickCalendar(item, index)"
             >
+              <div>{{ item }}</div>
               <div
-                v-for="(item, index) in moonEverDay"
-                :key="index"
-                style="margin: 3px"
-              >
-                <div
-                  class="hover-style"
-                  style="
-                    border-radius: 5px;
-                    font-weight: bold;
-                    font-size: 12px;
-                    cursor: pointer;
-                  "
-                  @click="clickCalendar(item, index)"
-                >
-                  <div>{{ item }}</div>
-                  <div
-                    v-if="collectClickCalendar.indexOf(index) > -1"
-                    style="
-                      width: 4px;
-                      height: 4px;
-                      border-radius: 50%;
-                      background-color: red;
-                      position: relative;
-                      left: calc(50% - 2px);
-                    "
-                  ></div>
-                  <div v-else style="width: 4px; height: 4px"></div>
-                </div>
-              </div>
+                v-if="collectClickCalendar.indexOf(index) > -1"
+                style="
+                  width: 4px;
+                  height: 4px;
+                  border-radius: 50%;
+                  background-color: red;
+                  position: relative;
+                  left: calc(50% - 2px);
+                "
+              ></div>
+              <div v-else style="width: 4px; height: 4px"></div>
             </div>
-          </el-form-item>
-          <el-form-item v-show="datetrue">
-            <el-date-picker
-              clearable
-              size="small"
-              style="margin-left: 10px; width: 200px"
-              v-model="pickerTime"
-              type="dates"
-              value-format="yyyy-MM-dd"
-              placeholder="选择提醒时间设置"
-            >
-            </el-date-picker>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="积分比例" prop="integralProportion">
-            <el-input-number
-              v-model="form.integralProportion"
-              style="width: 130px"
-              :min="1"
-              placeholder="请输入加倍比例"
-            />
-            <span>倍</span>
-          </el-form-item>
-        </el-col>
+          </div>
+        </div>
+      </el-form-item>
+      <el-form-item
+        label="积分比例"
+        prop="integralProportion"
+        v-show="form.integralActivity == 1"
+      >
+        <el-input-number
+          v-model="form.integralProportion"
+          style="width: 130px"
+          :min="1"
+          placeholder="请输入加倍比例"
+        />
+        <span>倍</span>
+      </el-form-item>
+      <el-form-item> </el-form-item>
+      <el-form-item v-show="datetrue">
+        <el-date-picker
+          clearable
+          size="small"
+          style="margin-left: 10px; width: 200px"
+          v-model="pickerTime"
+          type="dates"
+          value-format="yyyy-MM-dd"
+          placeholder="选择提醒时间设置"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-row v-show="form.integralActivity == 1">
+        <el-col :span="8" style=""> </el-col>
+
+        <el-col :span="8"> </el-col>
       </el-row>
       <el-form-item label="积分轮播图">
         <el-upload
@@ -389,11 +257,13 @@ import { getToken } from "@/utils/auth";
 import {
   addRule,
   updateRule,
-  oilNameInfo,
+  oilNameList,
   gradeList,
   listRuleOne,
 } from "@/api/integral/rule";
 import { getStationPay, updatePay } from "@/api/station/pay";
+import { queryOilType } from "@/utils/oil";
+
 export default {
   name: "Point_Rule",
   data() {
@@ -401,9 +271,6 @@ export default {
       oilNameOptions: [],
       gradeOptions: [],
       dialogImageUrl: "",
-      ruleForm: {
-        imgFileList: [],
-      },
       num: 0,
       pickerTime: "",
       dialogVisible: false,
@@ -431,40 +298,43 @@ export default {
       headers: { Authorization: "Bearer " + getToken() },
       collectClickCalendar: [], // 收集固定日期选择的日子
       collectClickWorkDay: [],
-      moonEverDay: [
-        "01",
-        "02",
-        "03",
-        "04",
-        "05",
-        "06",
-        "07",
-        "08",
-        "09",
-        "10",
-        "11",
-        "12",
-        "13",
-        "14",
-        "15",
-        "16",
-        "17",
-        "18",
-        "19",
-        "20",
-        "21",
-        "22",
-        "23",
-        "24",
-        "25",
-        "26",
-        "27",
-        "28",
-        "29",
-        "30",
-        "31",
+      timeSelect: [
+        ,
+        ["周天", "周一", "周二", "周三", "周四", "周五", "周六"],
+        [
+          "01",
+          "02",
+          "03",
+          "04",
+          "05",
+          "06",
+          "07",
+          "08",
+          "09",
+          "10",
+          "11",
+          "12",
+          "13",
+          "14",
+          "15",
+          "16",
+          "17",
+          "18",
+          "19",
+          "20",
+          "21",
+          "22",
+          "23",
+          "24",
+          "25",
+          "26",
+          "27",
+          "28",
+          "29",
+          "30",
+          "31",
+        ],
       ],
-      workDay: ["周天", "周一", "周二", "周三", "周四", "周五", "周六"],
       addressUrl:
         location.protocol +
         "//" +
@@ -475,6 +345,11 @@ export default {
   },
   created() {
     listRuleOne(this.queryParams).then((response) => {
+      console.log("拉取", response.data);
+      this.form = response.data;
+    });
+
+    listRuleOne(this.queryParams).then((response) => {
       console.log("response", response);
       if (response.hasOwnProperty("data")) {
         this.form = response.data;
@@ -484,7 +359,7 @@ export default {
             this.form.itemsDetail = [{}];
           } else {
             let itemDetail = this.form.itemsDetail;
-            this.sjfa(itemDetail);
+            this.initGrade(itemDetail);
             this.rowsnum = this.form.itemsDetail.length - 1;
           }
         } else {
@@ -515,60 +390,48 @@ export default {
         }
       }
     });
-    oilNameInfo(this.queryParams).then((response) => {
+    oilNameList(this.queryParams).then((response) => {
       this.oilNameOptions = response.rows;
-    });
-
-    //查看当前积分设置
-
-    getStationPay().then((response) => {
-      this.ruleForm = response.data;
-      if (this.ruleForm.integralFlag == "") {
-        this.ruleForm.integralFlag = "0";
-      }
+      console.log("油品名");
+      console.log(this.oilNameOptions);
     });
   },
   methods: {
-    async sjfa(itemDetail) {
+    async initGrade(itemDetail) {
       for (let j = 0; j < itemDetail.length; j++) {
-        const response = await gradeList({oilName:itemDetail[j].oilName});
-        response.rows.push({id:0, grade: "所有人" });
+        const response = await gradeList({ oilName: itemDetail[j].oilName });
+        console.log("12");
+        console.log(response);
+        response.rows.push({ id: 0, grade: "所有人" });
         this.gradeOptions.push(response.rows);
       }
     },
     //添加行
     addItem() {
-      this.form.itemsDetail.push({
-        ruleTerms: "",
-        oilName: "",
-        gread: "",
-        saleAmt: "",
-        integral: "",
-        ruleType: "",
-      });
+      this.form.itemsDetail.push({});
       this.rowsnum = this.form.itemsDetail.length - 1;
     },
     // 删除行
     del(index) {
       this.form.itemsDetail.splice(index, 1);
-      this.rowsnum = this.form.itemsDetail.length - 1;
-      if (this.form.itemsDetail.length <= 0) {
-        this.addItem();
+      if (this.form.itemsDetail.length <= 1){
+        this.form.itemsDetail= [{}];
       }
     },
     delNoil() {
       this.form.notOilList = [{}];
     },
-    oilNameChang(index) {
+    oilNameChang(item, index) {
       gradeList({
-        oilName: this.form.itemsDetail[index].oilName
+        oilName:item.oilName
       }).then((response) => {
-        console.log('response', response)
-        console.log("this.gradeOptions",this.gradeOptions);
-        const temp = [...this.gradeOptions];
-        response.rows.push({ grade: "所有人", id: 0});
-        temp[index] = response.rows;
-        this.gradeOptions = temp;
+        item.gradeList = response.rows
+        this.form = {...this.form}
+      });
+
+      queryOilType(item.oilName).then((res) => {
+        item.oilType = res;
+        this.form = { ...this.form };
       });
     },
 
@@ -603,22 +466,10 @@ export default {
     },
     /** 提交按钮 */
     submitForm() {
+      console.log("提交");
       this.$refs["form"].validate((valid) => {
         if (valid) {
           if (this.form.id != null) {
-            if (
-              this.form.notOilList != null &&
-              this.form.notOilList.length == 0
-            ) {
-            } else {
-              if (
-                this.form.notOilList[0].saleAmt == "" ||
-                this.form.notOilList[0].saleAmt == "0" ||
-                this.form.notOilList[0].saleAmt == "undefined"
-              ) {
-                this.form.notOilList = [{}];
-              }
-            }
             let datepicker = this.form.datePicker;
             if (datepicker == "1") {
               if (
@@ -805,9 +656,6 @@ export default {
           }
         }
       });
-      if (this.ruleForm.payId != null) {
-        updatePay(this.ruleForm).then((response) => {});
-      }
     },
 
     deleteItemFromArr(item) {