Browse Source

:sparkles: 添加新特性。支持公众号菜单保存、发布

冷冷 6 years ago
parent
commit
fc6773baac
3 changed files with 103 additions and 93 deletions
  1. 6 7
      src/components/wechat/index.vue
  2. 0 11
      src/router/page/index.js
  3. 97 75
      src/views/mp/wxmenu/index.vue

+ 6 - 7
src/components/wechat/index.vue

@@ -537,11 +537,8 @@
       </div>
     </div>
     <div class="tool_bar tc js_editBox">
-      <span id="pubBt"
-            class="btn btn_input btn_primary"
-            style="display: block;"
-            @click="saveData()"><button>保存并发布</button></span>
-      <!--<a href="javascript:void(0);" class="btn btn_default" id="viewBt" style="display: block;">预览</a>-->
+      <el-button type="primary" @click="saveData()">保存菜单</el-button>
+      <el-button type="success" @click="pubData()">发布菜单</el-button>
     </div>
   </div>
 </template>
@@ -633,7 +630,6 @@
       saveData: function () {
         //补全数据,无数据也要为空
         this.menu_data_completing();
-        console.log(this.menu);
         for (let i = 0; i < this.menu.button.length; i++) {
           if (this.menu.button[i].sub_button.length > 0) {
             const _sub_button = [];
@@ -698,7 +694,10 @@
             }
           }
         }
-        this.$emit("submit", this.new_menu);
+        this.$emit("saveData", this.new_menu);
+      },
+      pubData: function () {
+        this.$emit("pubData", this.new_menu);
       },
       menu_selected: function (name, index) {
         this.showDelBtnType = 1;

+ 0 - 11
src/router/page/index.js

@@ -87,16 +87,5 @@ export default [{
       isTab: false,
       isAuth: false
     }
-  },
-  {
-    path: '/wechat',
-    name: '微信',
-    component: () =>
-      import( /* webpackChunkName: "page" */ '@/views/mp/wxstatistics'),
-    meta: {
-      keepAlive: true,
-      isTab: false,
-      isAuth: false
-    }
   }
 ]

+ 97 - 75
src/views/mp/wxmenu/index.vue

@@ -1,86 +1,108 @@
 <template>
-    <basic-container>
-        <el-row :span="24">
-            <el-col :md="4">
-                <avue-tree :option="treeOption"
-                           :data="treeData"
-                           @node-click="nodeClick"/>
-            </el-col>
-            <el-col :md="20">
-                <wechat :data="data"
-                        @submit="submit"/>
-            </el-col>
-        </el-row>
-    </basic-container>
+  <basic-container>
+    <el-row :span="24">
+      <el-col :md="4">
+        <avue-tree :option="treeOption"
+                   :data="treeData"
+                   @node-click="nodeClick"/>
+      </el-col>
+      <el-col :md="20">
+        <wechat :data="data"
+                @pubData="pubData"
+                @saveData="saveData"/>
+      </el-col>
+    </el-row>
+  </basic-container>
 </template>
 
 <script>
-    import wechat from "@/components/wechat/"
-    import {addObj, getObj, putObj} from '@/api/mp/wxmenu'
-    import {fetchAccountList} from '@/api/mp/wxaccount'
-    import {mapGetters} from 'vuex'
+  import wechat from "@/components/wechat/"
+  import {addObj, getObj, putObj} from '@/api/mp/wxmenu'
+  import {fetchAccountList} from '@/api/mp/wxaccount'
+  import {mapGetters} from 'vuex'
 
-    export default {
-        components: {
-            wechat
+  export default {
+    components: {
+      wechat
+    },
+    data() {
+      return {
+        data: {
+          button: []
         },
-        data() {
-            return {
-                data: {
-                    button: []
-                },
-                treeOption: {
-                    nodeKey: 'id',
-                    addBtn: false,
-                    menu: false,
-                    props: {
-                        labelText: '标题',
-                        label: 'name',
-                        value: 'appid',
-                        children: 'children'
-                    }
-                },
-                treeData: [],
-                checkAppId: undefined
-            };
+        treeOption: {
+          nodeKey: 'id',
+          addBtn: false,
+          menu: false,
+          props: {
+            labelText: '标题',
+            label: 'name',
+            value: 'appid',
+            children: 'children'
+          }
         },
-        created() {
-            this.getAccountList()
-        },
-        computed: {
-            ...mapGetters(['permissions'])
-        },
-        methods: {
-            submit(form) {
-                if (this.permissions.mp_wxmenu_add) {
-                    addObj(this.checkAppId, form).then(data => {
-                        this.$message.success("保存成功")
-                    })
-                } else {
-                    this.$message.error("权限不足,不能保存");
-                }
-            },
-            getAccountMenu() {
-                getObj(this.checkAppId).then(response => {
-                    if (response.data.data) {
-                        this.data = JSON.parse(response.data.data)
-                    } else {
-                        this.data.button = []
-                    }
-                })
-            },
-            nodeClick(data) {
-                this.checkAppId = data.appid
-                this.data.button = []
-                this.getAccountMenu()
-            },
-            getAccountList() {
-                fetchAccountList().then(response => {
-                    this.treeData = response.data.data
-                })
-            },
+        treeData: [],
+        checkAppId: undefined
+      };
+    },
+    created() {
+      this.getAccountList()
+    },
+    computed: {
+      ...mapGetters(['permissions'])
+    },
+    methods: {
+      saveData(form) {
+        if (this.validatenull(this.checkAppId)) {
+          this.$message.error("请先选择公众号");
+          return false;
+        }
+        if (this.permissions.mp_wxmenu_add) {
+          addObj(this.checkAppId, form).then(data => {
+            this.$message.success("保存成功")
+          })
+        } else {
+          this.$message.error("权限不足,不能保存");
+        }
+      },
+      pubData(form) {
+        if (this.validatenull(this.checkAppId)) {
+          this.$message.error("请先选择公众号");
+          return false;
+        }
+        if (this.data.button.length === 0) {
+          this.$message.error("菜单配置不合法");
+          return false;
+        }
+        if (this.permissions.mp_wxmenu_add) {
+          putObj(this.checkAppId).then(response => {
+            this.$message.success("发布成功")
+          })
+        } else {
+          this.$message.error("权限不足,不能保存");
         }
-    };
+      },
+      getAccountMenu() {
+        getObj(this.checkAppId).then(response => {
+          if (response.data.data) {
+            this.data = JSON.parse(response.data.data)
+          } else {
+            this.data.button = []
+          }
+        })
+      },
+      nodeClick(data) {
+        this.checkAppId = data.appid
+        this.data.button = []
+        this.getAccountMenu()
+      },
+      getAccountList() {
+        fetchAccountList().then(response => {
+          this.treeData = response.data.data
+        })
+      },
+    }
+  };
 </script>
 
 <style>