Browse Source

微信配置

Baozhangchao 3 years ago
parent
commit
205d986368
4 changed files with 360 additions and 1 deletions
  1. 58
    0
      src/api/WeChatApi.js
  2. 24
    1
      src/router/index.js
  3. 179
    0
      src/views/WeChatConfig/Edit.vue
  4. 99
    0
      src/views/WeChatConfig/index.vue

+ 58
- 0
src/api/WeChatApi.js View File

@@ -0,0 +1,58 @@
1
+import request from '@/utils/request'
2
+
3
+/**
4
+* 配置列表
5
+* @param {*} data
6
+* @returns
7
+*/
8
+export const getConfigList = (data) => request({
9
+  url: '/admin/wx/config',
10
+  method: 'get',
11
+  data
12
+})
13
+
14
+/**
15
+* 保存配置
16
+* @param {*} data
17
+* @returns
18
+*/
19
+export const saveConfig = (data) => request({
20
+  url: '/admin/wx/config',
21
+  method: 'post',
22
+  data
23
+})
24
+
25
+/**
26
+* 详情配置
27
+* @param {*} 
28
+* @returns
29
+*/
30
+export const detailsConfig = (id) => request({
31
+  url: `admin/wx/config/${id}`,
32
+
33
+  method: 'get',
34
+})
35
+
36
+/**
37
+* 修改配置
38
+* @param {*} 
39
+* @returns
40
+*/
41
+export const ChangeConfig = (data, id) => request({
42
+  url: `admin/wx/config/${id}`,
43
+
44
+  method: 'put',
45
+  data
46
+})
47
+
48
+/**
49
+* 删除配置
50
+* @param {*} 
51
+* @returns
52
+*/
53
+export const DeleteConfig = (id) => request({
54
+  url: `admin/wx/config/${id}`,
55
+  method: 'delete',
56
+})
57
+
58
+

+ 24
- 1
src/router/index.js View File

@@ -93,6 +93,29 @@ export const constantRoutes = [
93 93
     ]
94 94
   },
95 95
 
96
+  //微信配置
97
+
98
+  {
99
+    path: '/WeChatConfig',
100
+    component: Layout,
101
+    meta: { title: '微信配置', icon: 'form' },
102
+    children: [
103
+      {
104
+        path: 'WeChatConfig',
105
+        name: 'WeChatConfig',
106
+        component: () => import('@/views/WeChatConfig/index'),
107
+        meta: { title: '微信配置', icon: 'app' }
108
+      },
109
+      {
110
+        hidden: true,
111
+        path: 'WeChatConfig/Edit',
112
+        name: '配置编辑',
113
+        component: () => import('@/views/WeChatConfig/Edit'),
114
+        meta: { title: '配置编辑', icon: 'form' }
115
+      }
116
+    ]
117
+  },
118
+
96 119
   {
97 120
     path: '/login',
98 121
     component: () => import('@/views/login/index'),
@@ -129,7 +152,7 @@ const createRouter = () => new Router({
129 152
 const router = createRouter()
130 153
 
131 154
 // Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
132
-export function resetRouter() {
155
+export function resetRouter () {
133 156
   const newRouter = createRouter()
134 157
   router.matcher = newRouter.matcher // reset router
135 158
 }

+ 179
- 0
src/views/WeChatConfig/Edit.vue View File

@@ -0,0 +1,179 @@
1
+<template>
2
+  <div>
3
+    <el-row :gutter="24">
4
+      <el-col :span="18">
5
+        <el-form
6
+          ref="ruleForm"
7
+          :model="ruleForm"
8
+          :rules="rules"
9
+          label-width="10vw"
10
+          class="demo-ruleForm"
11
+        >
12
+          <el-form-item label="配置名称" prop="appName" style="width:30vw">
13
+            <el-input v-model="ruleForm.appName" />
14
+          </el-form-item>
15
+          <el-form-item label="二维码" prop="qrCode">
16
+            <img
17
+              width="150"
18
+              alt="二维码"
19
+              src="https://cdn4.buysellads.net/uu/1/41334/1550855401-cc_light.png"
20
+            />
21
+          </el-form-item>
22
+          <el-form-item label="类型" prop="appType">
23
+            <el-select v-model="ruleForm.appType" placeholder="请选择类型">
24
+              <el-option label="小程序" value="ma" />
25
+              <el-option label="公众号" value="md" />
26
+            </el-select>
27
+          </el-form-item>
28
+          <el-form-item style="width:30vw" label="AppID" prop="appid">
29
+            <el-input v-model="ruleForm.appid" />
30
+          </el-form-item>
31
+          <el-form-item style="width:30vw" label="Secret" prop="secret">
32
+            <el-input v-model="ruleForm.secret" />
33
+          </el-form-item>
34
+          <el-form-item style="width:30vw" label="Token" prop="token">
35
+            <el-input v-model="ruleForm.token" />
36
+          </el-form-item>
37
+          <el-form-item style="width:30vw" label="AesKey" prop="aesKey">
38
+            <el-input v-model="ruleForm.aesKey" />
39
+          </el-form-item>
40
+          <el-form-item style="width:30vw" label="消息格式类型" prop="msgDataFormat">
41
+            <el-input v-model="ruleForm.msgDataFormat" />
42
+          </el-form-item>
43
+          <el-form-item style="width:30vw" label="接口代理地址" prop="httpPoxyHost">
44
+            <el-input v-model="ruleForm.httpPoxyHost" />
45
+          </el-form-item>
46
+          <el-form-item style="width:30vw" label="接口代理端口" prop="httpProxyPort">
47
+            <el-input v-model="ruleForm.httpProxyPort" type="Number" />
48
+          </el-form-item>
49
+          <el-form-item style="width:30vw" label="第三方接口地址" prop="apiUrl">
50
+            <el-input v-model="ruleForm.apiUrl" />
51
+          </el-form-item>
52
+          <el-form-item label="发布状态" prop="status">
53
+            <el-select v-model="ruleForm.status" placeholder="请选择状态">
54
+              <el-option label="发布" value="1" />
55
+              <el-option label="未发布" value="0" />
56
+            </el-select>
57
+          </el-form-item>
58
+
59
+          <el-form-item>
60
+            <el-button type="primary" @click="submitForm('ruleForm')">{{ !configId?'新建配置':'修改配置' }}</el-button>
61
+            <!-- <el-button type="primary" @click="submitForm('ruleForm')">应用配置</el-button> -->
62
+            <el-button @click="resetForm('ruleForm')">重置</el-button>
63
+          </el-form-item>
64
+        </el-form>
65
+      </el-col>
66
+    </el-row>
67
+  </div>
68
+</template>
69
+
70
+<script>
71
+import { saveConfig, detailsConfig, ChangeConfig } from '@/api/WeChatApi';
72
+
73
+export default {
74
+  data() {
75
+    return {
76
+      configId: '',
77
+      ruleForm: {
78
+        appName: '',
79
+        appid: '',
80
+        appType: '',
81
+        aesKey: '',
82
+        apiUrl: '',
83
+        resource: '',
84
+        httpPoxyHost: '',
85
+        msgDataFormat: 'Json',
86
+        secret: '',
87
+        token: '',
88
+        httpProxyPort: null,
89
+        status: null
90
+      },
91
+      rules: {
92
+        appName: [
93
+          { required: true, message: '请输入配置名称', trigger: 'blur' }
94
+        ],
95
+        appid: [{ required: true, message: '请输入AppID', trigger: 'blur' }],
96
+        appType: [{ required: true, message: '请选择类型', trigger: 'blur' }],
97
+        aesKey: [{ required: true, message: '请选择AesKey', trigger: 'blur' }],
98
+        apiUrl: [
99
+          { required: true, message: '请选择第三方接口地址', trigger: 'blur' }
100
+        ],
101
+        httpPoxyHost: [
102
+          { required: true, message: '请输入接口代理地址', trigger: 'blur' }
103
+        ],
104
+        httpProxyPort: [
105
+          { required: true, message: '请输入接口代理端口', trigger: 'blur' }
106
+        ],
107
+        msgDataFormat: [
108
+          { required: true, message: '请输入消息格式类型', trigger: 'blur' }
109
+        ],
110
+        secret: [{ required: true, message: '请输入Secret', trigger: 'blur' }],
111
+        token: [{ required: true, message: '请输入Token', trigger: 'blur' }],
112
+
113
+        status: [{ required: true, message: '请选择状态', trigger: 'blur' }]
114
+      }
115
+    };
116
+  },
117
+  watch: {
118
+    '$route.query.id'(val) {
119
+      this.configId = val;
120
+      detailsConfig(val)
121
+        .then((res) => {
122
+          this.ruleForm = res.data;
123
+        })
124
+        .catch((e) => {
125
+          this.$message.error('ID有误。');
126
+          this.$router.go(-1);
127
+        });
128
+    }
129
+  },
130
+  mounted() {
131
+    if (this.$route?.query.id) {
132
+      this.configId = this.$route.query.id;
133
+      detailsConfig(this.$route.query.id)
134
+        .then((res) => {
135
+          this.ruleForm = res.data;
136
+        })
137
+        .catch((e) => {
138
+          this.$message.error('ID有误。');
139
+          this.$router.go(-1);
140
+        });
141
+    }
142
+  },
143
+  methods: {
144
+    submitForm(formName) {
145
+      this.$refs[formName].validate((valid) => {
146
+        if (valid) {
147
+          if (this.configId == '') {
148
+            saveConfig(this.ruleForm)
149
+              .then((e) => {
150
+                this.$message.success('配置保存成功');
151
+                this.$router.go(-1);
152
+                console.log('保存字段', e);
153
+              })
154
+              .catch((e) => {
155
+                this.$message.error('保存失败', e);
156
+              });
157
+          } else {
158
+            ChangeConfig(this.ruleForm, this.configId).then((res) => {
159
+              this.$message.success('配置修改成功');
160
+              this.$router.go(-1);
161
+            });
162
+          }
163
+        } else {
164
+          return false;
165
+        }
166
+      });
167
+    },
168
+    resetForm(formName) {
169
+      this.$refs[formName].resetFields();
170
+    }
171
+  }
172
+};
173
+</script>
174
+
175
+<style scoped >
176
+.demo-ruleForm {
177
+  margin-top: 1em;
178
+}
179
+</style>

+ 99
- 0
src/views/WeChatConfig/index.vue View File

@@ -0,0 +1,99 @@
1
+<template>
2
+  <div class="body">
3
+    <el-card class="box-card">
4
+      配置名称:
5
+      <el-input v-model="appName" size="medium" style="width: 200px; margin-right: 20px" />
6
+
7
+      <el-button type="primary" @click="onSearch">查询</el-button>
8
+      <el-button @click="onReset">重置</el-button>
9
+    </el-card>
10
+    <el-card class="box-card">
11
+      <div slot="header" class="clearfix">
12
+        <el-button type="primary" style="float: right" @click="handleAdd">新建配置</el-button>
13
+      </div>
14
+      <div class="text item">
15
+        <el-table stripe :data="tableData" border style="width: 100%">
16
+          <el-table-column prop="appName" label="配置名称" />
17
+
18
+          <el-table-column prop="picture" label="二维码" align="center">
19
+            <template slot-scope="scope">
20
+              <img :src="scope.row.qrCode" min-width="70" height="70" />
21
+            </template>
22
+          </el-table-column>
23
+
24
+          <el-table-column prop="createDate" label="状态">
25
+            <template slot-scope="scope">
26
+              {{
27
+              scope.row.status==1?'发布':'未发布'
28
+              }}
29
+            </template>
30
+          </el-table-column>
31
+          <el-table-column fixed="right" label="操作">
32
+            <template slot-scope="scope">
33
+              <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
34
+              <el-popconfirm
35
+                icon="el-icon-info"
36
+                icon-color="red"
37
+                title="确定要删除该配置吗?"
38
+                @onConfirm="handleDelete(scope.row)"
39
+              >
40
+                <el-button slot="reference" type="text">删除</el-button>
41
+              </el-popconfirm>
42
+            </template>
43
+          </el-table-column>
44
+        </el-table>
45
+      </div>
46
+    </el-card>
47
+  </div>
48
+</template>
49
+<script>
50
+import { getConfigList, DeleteConfig } from '@/api/WeChatApi';
51
+
52
+export default {
53
+  data() {
54
+    return {
55
+      appName: undefined,
56
+      daterange: '',
57
+      tableData: [],
58
+      endDate: undefined,
59
+      startDate: undefined
60
+    };
61
+  },
62
+  mounted() {
63
+    this.onSearch();
64
+  },
65
+  methods: {
66
+    handleAdd() {
67
+      this.$router.push({ path: 'WeChatConfig/Edit' });
68
+    },
69
+    handleEdit(row) {
70
+      this.$router.push({
71
+        path: 'WeChatConfig/Edit',
72
+        query: { id: row.configId }
73
+      });
74
+    },
75
+    handleDelete(row) {
76
+      DeleteConfig(row.configId).then(() => {
77
+        this.onSearch();
78
+      });
79
+    },
80
+    onSearch() {
81
+      getConfigList({ appName: this.appName }).then((res) => {
82
+        console.log('🚀 ~ file: index.vue ~ line 98 ~ onSearch ~ res', res);
83
+        this.tableData = res.data.records;
84
+      });
85
+    },
86
+    onReset() {
87
+      this.appName = '';
88
+
89
+      this.onSearch();
90
+    },
91
+    dateChange(val) {
92
+      this.startDate = this.daterange[0];
93
+      this.endDate = this.daterange[1];
94
+    }
95
+  }
96
+};
97
+</script>
98
+<style>
99
+</style>