edit.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. <?php
  2. /**
  3. * @link:http://www.gdqijianshi.com/
  4. * @copyright: Copyright (c) 2020 广东七件事集团
  5. * Created by PhpStorm
  6. * Author: ganxiaohao
  7. * Date: 2020-04-20
  8. * Time: 15:38
  9. */
  10. use common\helpers\ComponentHelper;
  11. ComponentHelper::loadComponentView('com-image');
  12. ComponentHelper::loadComponentView('com-attachment');
  13. ComponentHelper::loadComponentView('com-upload');
  14. ?>
  15. <div id="app" v-cloak>
  16. <el-card v-loading="dataLoading" class="box-card" shadow="never"
  17. style="border:0" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  18. <div slot="header">
  19. <span>公众号设置</span>
  20. <div style="float: right; margin: -5px 0">
  21. <el-button class="button-item" :loading="btnLoading" type="primary" @click="submit('ruleForm')" size="small">
  22. 保存
  23. </el-button>
  24. </div>
  25. </div>
  26. <div class="form-body">
  27. <el-form :model="ruleForm" :rules="rules" size="small" ref="ruleForm" label-width="150px" style="width: 800px;">
  28. <el-row>
  29. <el-col :span="24">
  30. <el-form-item label="公众号名称" prop="name">
  31. <el-input v-model="ruleForm.name"></el-input>
  32. </el-form-item>
  33. <el-form-item label="原始ID" prop="original_id">
  34. <el-input v-model="ruleForm.original_id"></el-input>
  35. </el-form-item>
  36. <el-form-item label="开发者ID(AppID)" prop="app_id">
  37. <el-input v-model="ruleForm.app_id"></el-input>
  38. </el-form-item>
  39. <el-form-item label="开发者密码(AppSecret)" prop="secret">
  40. <el-input v-model="ruleForm.secret"></el-input>
  41. </el-form-item>
  42. <el-form-item label="服务器地址(URL)" prop="web_url" width="200">
  43. {{web_url}}
  44. </el-form-item>
  45. <el-form-item label="令牌(ToKen)" prop="token">
  46. <el-input v-model="ruleForm.token"></el-input>
  47. </el-form-item>
  48. <el-form-item label="消息加解密密钥(EncodingAESKey)" prop="aes_key">
  49. <el-input v-model="ruleForm.aes_key"></el-input>
  50. </el-form-item>
  51. <el-form-item label="公众号二维码" prop="pic_url">
  52. <com-attachment :multiple="false" :max="1" @selected="qrcodePicUrl">
  53. <el-tooltip class="item" effect="dark" content="建议尺寸44*44" placement="top">
  54. <el-button size="mini">选择文件</el-button>
  55. </el-tooltip>
  56. </com-attachment>
  57. <com-image width="80px" height="80px" mode="aspectFill" :src="ruleForm.qrcode"></com-image>
  58. </el-form-item>
  59. <el-form-item label="公众号校验文件">
  60. <el-col :span="10">
  61. <el-input v-model="ruleForm.wechat_js" placeholder="请上传微信校验JS文件" :disabled="true"></el-input>
  62. </el-col>
  63. <el-col :span="4">
  64. <input ref="wechat_js_file" type="file" accept=".txt" :multiple="multiple" style="display: none"
  65. @change="handleChange">
  66. <el-button size="small" @click="uploadPem('wechat_js_file')">上传文件</el-button>
  67. </el-col>
  68. </el-form-item>
  69. <el-form-item label="公众号授权清除">
  70. <el-button size="small" @click="clearAuth">执行</el-button>
  71. </el-form-item>
  72. </el-col>
  73. </el-row>
  74. </el-form>
  75. </div>
  76. </el-card>
  77. </div>
  78. <script>
  79. new Vue({
  80. el: '#app',
  81. data() {
  82. return {
  83. dataLoading: false,
  84. rules: {
  85. name: [
  86. {required: true, message: '请输入公众号名称', trigger: 'change'},
  87. ],
  88. app_id: [
  89. {required: true, message: '请输入APPID', trigger: 'change'},
  90. ],
  91. secret: [
  92. {required: true, message: '请输入密钥', trigger: 'change'},
  93. ],
  94. token: [
  95. {required: true, message: '请输入token', trigger: 'change'},
  96. ],
  97. },
  98. multiple: Boolean,
  99. wechat: null,
  100. btnLoading: false,
  101. web_url : '',
  102. ruleForm: {
  103. name: '',
  104. app_id: '',
  105. secret: '',
  106. token: '',
  107. aes_key: '',
  108. qrcode: '',
  109. wechat_js: '',
  110. },
  111. };
  112. },
  113. created() {
  114. this.loadData();
  115. },
  116. methods: {
  117. loadData() {
  118. this.loading = true;
  119. request({
  120. params: {
  121. r: 'mall/wechat/edit',
  122. },
  123. }).then(e => {
  124. this.loading = false;
  125. if (e.data.code === 0) {
  126. if (!isEmpty(e.data.data.wechat)) {
  127. let wechat = e.data.data.wechat
  128. for (let key in this.ruleForm) {
  129. if (!isEmpty(wechat[key])) {
  130. this.ruleForm[key] = wechat[key]
  131. }
  132. }
  133. }
  134. this.web_url = e.data.data.web_url;
  135. } else {
  136. this.$message.error(e.data.msg);
  137. }
  138. }).catch(e => {
  139. });
  140. },
  141. qrcodePicUrl(e) {
  142. if (e.length) {
  143. this.ruleForm.qrcode = e[0].url;
  144. }
  145. },
  146. submit(formName) {
  147. this.$refs[formName].validate((valid) => {
  148. let self = this;
  149. if (valid) {
  150. self.btnLoading = true;
  151. request({
  152. params: {
  153. r: 'mall/wechat/edit'
  154. },
  155. method: 'post',
  156. data: {
  157. form: self.ruleForm,
  158. }
  159. }).then(e => {
  160. self.btnLoading = false;
  161. if (e.data.code === 0) {
  162. self.$message.success(e.data.msg);
  163. } else {
  164. self.$message.error(e.data.msg);
  165. }
  166. }).catch(e => {
  167. self.$message.error(e.data.msg);
  168. self.btnLoading = false;
  169. });
  170. } else {
  171. console.log('error submit!!');
  172. return false;
  173. }
  174. });
  175. },
  176. uploadPem(key) {
  177. this.$refs[key].value = null;
  178. this.$refs[key].click();
  179. },
  180. handleChange(e){
  181. var rawFiles = e.target.files;
  182. if (rawFiles.length > 1) {
  183. this.$message.error('最多一次只能上传一个文件。')
  184. return;
  185. }
  186. let file = {
  187. _complete: false,
  188. response: null,
  189. rawFile: rawFiles[0],
  190. };
  191. let formData = new FormData();
  192. const params = {};
  193. params['r'] = 'mall/file/wechat-js';
  194. for (let i in this.params) {
  195. params[i] = this.params[i];
  196. }
  197. for (let i in this.fields) {
  198. formData.append(i, this.fields[i]);
  199. }
  200. formData.append('file', file.rawFile, file.rawFile.name);
  201. this.$request({
  202. headers: {'Content-Type': 'multipart/form-data'},
  203. params: params,
  204. method: 'post',
  205. data: formData,
  206. }).then(e => {
  207. if (e.data.code === 0) {
  208. this.ruleForm.wechat_js = e.data.data.path;
  209. this.$message.success('上传成功');
  210. } else {
  211. this.$message.error(e.data.msg);
  212. }
  213. }).catch(e => {
  214. this.$message.error('上传失败');
  215. });
  216. },
  217. // 清除微信授权
  218. clearAuth(){
  219. this.$confirm('此操作不能恢复,确定执行吗?', '提示', {
  220. confirmButtonText: '确定',
  221. cancelButtonText: '取消',
  222. type: 'warning'
  223. }).then(() => {
  224. request({
  225. params: {
  226. r: 'mall/user/clear-auth'
  227. },
  228. method: 'post',
  229. data: {
  230. platform: 'wechat',
  231. }
  232. }).then(res => {
  233. this.$message.success("清除成功");
  234. }).catch(e => {
  235. this.$message.error("清除失败");
  236. });
  237. })
  238. },
  239. }
  240. });
  241. </script>