Quellcode durchsuchen

feat: #初步会员等级页面

loki vor 3 Jahren
Ursprung
Commit
db50a6e4ab

+ 10 - 0
src/api/member/level.js

@@ -0,0 +1,10 @@
+import api from '@/utils/request';
+
+export const getList = params =>
+	api.post(`/yxl-back-end/admin/vip/level/page`, params);
+export const getItem = ({ id, params }) =>
+	api.get(`/yxl-back-end/admin/vip/level/${id}`, params);
+export const saveItem = params =>
+	api.post(`/yxl-back-end/admin/vip/level/save`, params);
+export const delItem = ({ id, params }) =>
+	api.del(`/yxl-back-end/admin/vip/level/${id}`, params);

+ 1 - 0
src/components/RichText.vue

@@ -27,6 +27,7 @@ export default {
     return {
       intance: null,
       config: {
+        serverUrl: '//ueditor.szcloudplus.com/cos',
         // 你的UEditor资源存放的路径,相对于打包后的index.html
         UEDITOR_HOME_URL: './static/UE/',
         // 编辑器不自动被内容撑高

+ 0 - 2
src/containers/issueType/IssueTypeSelect.vue

@@ -77,8 +77,6 @@ export default {
       if (success) {
         let result = resetList(data.data);
         this.options = checkList(result);
-      } else {
-        this.$error(msg);
       }
     }
   }

+ 5 - 0
src/main.js

@@ -61,6 +61,11 @@ Vue.prototype.$success = message.success;
 Vue.prototype.$error = message.error;
 Vue.prototype.$warning = message.warning;
 
+// window.UEDITOR_CONFIG = `${process.env.VUE_APP_BASE_API}/oss/ueditor/ueditor-action`;
+// window.UEDITOR_SERVER_URL = `${process.env.VUE_APP_BASE_API}/oss/ueditor/ueditor-action`;
+window.UEDITOR_CONFIG = `https://ex.by-health.com/baby-institute-back-end/oss/ueditor/ueditor-action`;
+window.UEDITOR_SERVER_URL = `https://ex.by-health.com/baby-institute-back-end/oss/ueditor/ueditor-action`;
+
 new Vue({
   el: '#app',
   router,

+ 8 - 0
src/utils/dialog-helper.js

@@ -5,6 +5,7 @@ import IssueTypeItem from 'views/helpInfo/issueType/modal/ItemModal.vue';
 import InformationItem from 'views/helpInfo/information/modal/ItemModal.vue';
 import BannerItem from 'views/baseManagement/bannerManagement/modal/ItemModal.vue';
 import InfoItem from 'views/baseManagement/infoManagement/modal/ItemModal.vue';
+import MemberLeverItem from 'views/memberManagement/memberLever/modal/ItemModal.vue';
 
 const modal = (Component, props) => {
   let _component = null;
@@ -61,3 +62,10 @@ let InfoItemModal = data => {
 Vue.prototype.$InfoItemModal = params => {
   InfoItemModal(params);
 };
+
+let MemberLeverItemModal = data => {
+  modal(MemberLeverItem, data);
+};
+Vue.prototype.$MemberLeverItemModal = params => {
+  MemberLeverItemModal(params);
+};

+ 0 - 2
src/views/baseManagement/bannerManagement/index.vue

@@ -149,8 +149,6 @@ export default {
       });
       if (success) {
         this.$success('删除成功!');
-      } else {
-        this.$error(msg);
       }
     }
   }

+ 0 - 2
src/views/baseManagement/bannerManagement/modal/ItemModal.vue

@@ -123,8 +123,6 @@ export default {
       });
       if (success) {
         this.form = data;
-      } else {
-        this.$error(msg);
       }
     },
 

+ 0 - 2
src/views/baseManagement/infoManagement/index.vue

@@ -132,8 +132,6 @@ export default {
       });
       if (success) {
         this.$success('删除成功!');
-      } else {
-        this.$error(msg);
       }
     }
   }

+ 0 - 2
src/views/baseManagement/infoManagement/modal/ItemModal.vue

@@ -105,8 +105,6 @@ export default {
       });
       if (success) {
         this.form = data;
-      } else {
-        this.$error(msg);
       }
     },
 

+ 1 - 2
src/views/helpInfo/information/index.vue

@@ -129,8 +129,7 @@ export default {
       });
       if (success) {
         this.$success('删除成功!');
-      } else {
-        this.$error(msg);
+        this.$g_emit('information_reload');
       }
     }
   }

+ 0 - 2
src/views/helpInfo/information/modal/ItemModal.vue

@@ -107,8 +107,6 @@ export default {
       });
       if (success) {
         this.form = data;
-      } else {
-        this.$error(msg);
       }
     },
 

+ 1 - 1
src/views/helpInfo/information/toolbar.vue

@@ -14,7 +14,7 @@ export default {
         {
           type: 'text',
           name: 'title',
-          label: '分类名称'
+          label: '标题'
         },
         {
           type: 'issueTypeSelect',

+ 1 - 2
src/views/helpInfo/issueType/index.vue

@@ -149,8 +149,7 @@ export default {
       });
       if (success) {
         this.$success('删除成功!');
-      } else {
-        this.$error(msg);
+        this.$g_emit('issue_type_reload');
       }
     }
   }

+ 0 - 2
src/views/helpInfo/issueType/modal/ItemModal.vue

@@ -96,8 +96,6 @@ export default {
       });
       if (success) {
         this.form = data;
-      } else {
-        this.$error(msg);
       }
     },
 

+ 0 - 2
src/views/login/index.vue

@@ -180,8 +180,6 @@ export default {
       if (success) {
         this.$success('短信已发出请稍等...');
         this.dialogVisible = false;
-      } else {
-        this.$error(msg);
       }
     }
   }

+ 82 - 14
src/views/memberManagement/memberLever/index.vue

@@ -1,9 +1,9 @@
 <template>
   <div class="">
-    <toolbar @onSearch="filterData" />
+    <toolbar @on-filter="filterData" @on-reset="filterData" />
 
     <div class="m-10 bg-w p-20 br-10">
-      <el-button type="primary" icon="el-icon-plus" @click="handleSubmit"
+      <el-button type="primary" icon="el-icon-plus" @click="handleAdd"
         >新增</el-button
       >
       <base-table
@@ -19,6 +19,7 @@
 <script>
 import toolbar from './toolbar';
 import mxFilterList from '@/mixins/filterList';
+import { getList, delItem } from '@/api/member/level';
 
 export default {
   name: 'MemberLever',
@@ -27,7 +28,7 @@ export default {
 
   mixins: [
     mxFilterList({
-      // fetchList: iGetList // 在下方data再声明一个 fetchList: iGetList 同等效果
+      fetchList: getList // 在下方data再声明一个 fetchList: iGetList 同等效果
     })
   ],
 
@@ -40,37 +41,104 @@ export default {
           width: '60'
         },
         {
-          key: 'photo',
+          key: 'name',
           name: '等级名称',
-          width: '240'
+          minWidth: '240'
         },
         {
-          key: 'region',
+          key: 'yearPrice',
           name: '会员年费',
-          minWidth: '120'
+          minWidth: '120',
+          render: (h, { row }) => h('span', `¥${row.yearPrice}`)
         },
         {
-          key: 'region',
+          key: 'monthPrice',
           name: '会员月费',
-          minWidth: '180'
+          minWidth: '120',
+          render: (h, { row }) => h('span', `¥${row.monthPrice}`)
         },
         {
-          key: 'region',
+          key: 'sale',
           name: '商品优惠折扣',
-          minWidth: '240'
+          minWidth: '120',
+          render: (h, { row }) => h('span', `¥${row.sale}`)
         },
         {
-          key: 'region',
+          key: 'isShow',
           name: '状态',
-          width: '80'
+          width: '80',
+          fetchTagType: val => (val ? 'success' : 'info'),
+          tagName: row => (row.isShow ? '显示' : '隐藏')
         },
         {
           key: 'action',
           name: '操作',
-          width: '120'
+          width: '180',
+          render: (h, { row }) => {
+            const action = [];
+            action.push(
+              h(
+                'el-button',
+                {
+                  props: {
+                    type: 'text'
+                  },
+                  on: {
+                    click: () =>
+                      this.$MemberLeverItemModal({
+                        id: row.id
+                      })
+                  }
+                },
+                '编辑'
+              )
+            );
+            action.push(
+              h(
+                'BaseBtn',
+                {
+                  props: {
+                    popip: true,
+                    txt: '删除',
+                    type: 'text'
+                  },
+                  class: 'ml-10',
+                  on: {
+                    ok: () => this.handleDelItem(row)
+                  }
+                },
+                '删除'
+              )
+            );
+
+            return h('div', action);
+          }
         }
       ]
     };
+  },
+
+  created() {
+    this.$g_on('member_lever_reload', this.reload);
+  },
+
+  beforeDestroy() {
+    this.$g_off('member_lever_reload', this.reload);
+  },
+
+  methods: {
+    handleAdd() {
+      this.$MemberLeverItemModal();
+    },
+    async handleDelItem(item) {
+      const { success, msg } = await delItem({
+        id: item.id
+      });
+      if (success) {
+        this.$success('删除成功!');
+        this.$g_emit('member_lever_reload');
+      }
+    }
   }
 };
 </script>

+ 174 - 0
src/views/memberManagement/memberLever/modal/ItemModal.vue

@@ -0,0 +1,174 @@
+<template>
+  <el-dialog
+    :title="title"
+    :visible.sync="modal"
+    width="500px"
+    :close-on-click-modal="false"
+    @close="
+      res => {
+        $emit('cancel');
+      }
+    "
+  >
+    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
+      <el-form-item label="等级名称" prop="name">
+        <el-input v-model="form.name"></el-input>
+      </el-form-item>
+      <el-form-item label="年费" prop="yearPrice">
+        <el-input-number
+          v-model="form.yearPrice"
+          class="w-80"
+          :precision="2"
+          :step="0.1"
+          :max="999999"
+        ></el-input-number>
+      </el-form-item>
+      <el-form-item label="月费" prop="monthPrice">
+        <el-input-number
+          v-model="form.monthPrice"
+          class="w-80"
+          :precision="2"
+          :step="0.1"
+          :max="999999"
+        ></el-input-number>
+      </el-form-item>
+      <el-form-item label="商品优惠折扣" prop="sale">
+        <el-input-number
+          v-model="form.sale"
+          class="w-80"
+          :precision="2"
+          :step="0.1"
+          :max="999999"
+        ></el-input-number>
+      </el-form-item>
+      <el-form-item label="状态">
+        <el-radio-group v-model="form.isShow" prop="isShow">
+          <el-radio :label="true">显示</el-radio>
+          <el-radio :label="false">隐藏</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <el-form-item label="排序" prop="sort">
+        <el-input-number
+          v-model="form.sort"
+          :min="1"
+          :max="9999"
+          label="序号"
+        ></el-input-number>
+      </el-form-item>
+    </el-form>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="modal = false">取消</el-button>
+      <el-button type="primary" @click="handleConfirm">确定</el-button>
+    </span>
+  </el-dialog>
+</template>
+
+<script>
+import { getItem, saveItem } from '@/api/member/level';
+
+export default {
+  name: 'MemberLeverItemModal',
+
+  props: {
+    id: {
+      type: String,
+      default: ''
+    }
+  },
+
+  data() {
+    return {
+      modal: true,
+
+      form: {
+        name: '',
+        yearPrice: 0,
+        monthPrice: 0,
+        sale: 0,
+        isShow: false,
+        sort: 1
+      },
+      rules: {
+        name: [{ required: true, message: '请输入等级名称', trigger: 'blur' }],
+        yearPrice: [
+          {
+            type: 'number',
+            required: true,
+            message: '请输入正确的年费价格',
+            trigger: 'change'
+          }
+        ],
+        monthPrice: [
+          {
+            type: 'number',
+            required: true,
+            message: '请输入正确的月费价格',
+            trigger: 'change'
+          }
+        ],
+        sale: [
+          {
+            type: 'number',
+            required: true,
+            message: '请输入正确的商品优惠折扣',
+            trigger: 'change'
+          }
+        ]
+      }
+    };
+  },
+
+  computed: {
+    title() {
+      if (this.id) {
+        return '编辑会员等级';
+      } else {
+        return '新增会员等级';
+      }
+    }
+  },
+
+  watch: {
+    id: {
+      handler(id) {
+        id && this.loadData();
+      },
+      immediate: true
+    }
+  },
+
+  mounted() {},
+
+  methods: {
+    async loadData() {
+      const { success, data, msg } = await getItem({
+        id: this.id
+      });
+      if (success) {
+        this.form = data;
+      }
+    },
+
+    handleConfirm() {
+      this.$refs.form.validate(async valid => {
+        if (valid) {
+          const params = Object.assign({}, this.form);
+          if (this.id) params.id = this.id;
+          const { success, msg } = await saveItem(params);
+          if (success) {
+            this.$success('保存成功!');
+            this.modal = false;
+            this.$g_emit('member_lever_reload');
+          }
+        }
+      });
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.w-80 {
+  width: 80%;
+}
+</style>