index.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <template>
  2. <el-container>
  3. <el-main>
  4. <el-card shadow="never" header="系统设置" class="borderNone mt10">
  5. <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleClick">
  6. <el-tab-pane label="基础设置" name="service" v-loading="isLoading">
  7. <el-form :model="sys" :rules="rules" ref="form" label-position="top" @keyup.enter="saveForm">
  8. <el-form-item label="系统名称" prop="title" class="label-item">
  9. <el-input v-model="sys.title" placeholder="请输入" clearable />
  10. <div class="el-form-item-msg"></div>
  11. </el-form-item>
  12. <el-form-item label="客服联系电话" prop="tel" class="label-item">
  13. <el-input v-model="sys.tel" placeholder="请输入" clearable />
  14. <div class="el-form-item-msg"></div>
  15. </el-form-item>
  16. <el-form-item label="系统Logo" prop="logo">
  17. <sc-upload v-model="sys.logo"></sc-upload>
  18. </el-form-item>
  19. <el-form-item label="营业纸张" prop="license">
  20. <sc-upload v-model="sys.license"></sc-upload>
  21. </el-form-item>
  22. <el-form-item label="备案号" prop="miitbeian" class="label-item">
  23. <el-input v-model="sys.miitbeian" placeholder="请输入" clearable />
  24. <div class="el-form-item-msg">支持Html格式</div>
  25. </el-form-item>
  26. <el-form-item label="版权信息" prop="copyright" class="label-item">
  27. <el-input v-model="sys.copyright" placeholder="请输入" clearable />
  28. <div class="el-form-item-msg"></div>
  29. </el-form-item>
  30. <el-form-item label="隐私协议" prop="privacy" class="label-item">
  31. <sc-editor v-model="sys.privacy" placeholder="请输入" :height="400"></sc-editor>
  32. <div class="el-form-item-msg"></div>
  33. </el-form-item>
  34. <el-form-item label="服务协议" prop="agreements" class="label-item">
  35. <sc-editor v-model="sys.agreements" placeholder="请输入" :height="400"></sc-editor>
  36. <div class="el-form-item-msg"></div>
  37. </el-form-item>
  38. </el-form>
  39. </el-tab-pane>
  40. <el-tab-pane label="抖音设置" name="wechat" v-loading="isLoading">
  41. <el-form :model="sys" :rules="rules2" ref="form" label-position="top" @keyup.enter="saveForm" v-if="activeName=='wechat'">
  42. <el-row :gutter="15">
  43. <el-col :span="this.$store.state.global.ismobile?24:12">
  44. <fieldset>
  45. <legend><el-tag>小程序配置</el-tag></legend>
  46. <el-form-item label="AppId(小程序 APPID)" prop="mini_appid">
  47. <el-input v-model="sys.mini_appid" clearable placeholder="请输入"></el-input>
  48. <div class="el-form-item-msg">小程序后台获取</div>
  49. </el-form-item>
  50. <el-form-item label="AppSecret(小程序密钥)" prop="mini_secret">
  51. <el-input v-model="sys.mini_secret" show-password clearable placeholder="请输入"></el-input>
  52. <div class="el-form-item-msg">小程序后台获取</div>
  53. </el-form-item>
  54. <el-form-item label="应用公钥" prop="mini_public_key">
  55. <el-input v-model="sys.mini_public_key" type="textarea" rows="10" show-password clearable placeholder="请输入"></el-input>
  56. <div class="el-form-item-msg"></div>
  57. </el-form-item>
  58. <el-form-item label="应用私钥" prop="min_private_key">
  59. <el-input v-model="sys.min_private_key" type="textarea" rows="10" show-password clearable placeholder="请输入"></el-input>
  60. <div class="el-form-item-msg"></div>
  61. </el-form-item>
  62. </fieldset>
  63. </el-col>
  64. <el-col :span="this.$store.state.global.ismobile?24:12">
  65. <fieldset>
  66. <legend><el-tag>支付配置</el-tag></legend>
  67. <el-form-item label="MCH_ID(商户账号)" prop="mch_id">
  68. <el-input v-model="sys.mch_id" clearable placeholder="请输入"></el-input>
  69. <div class="el-form-item-msg">微信商户账号,需要在微信商户平台获取,MCH_ID 与 APPID 匹配</div>
  70. </el-form-item>
  71. <el-form-item label="Token(支付令牌)" prop="mch_token">
  72. <el-input v-model="sys.mch_token" show-password clearable placeholder="请输入"></el-input>
  73. <div class="el-form-item-msg"></div>
  74. </el-form-item>
  75. <el-form-item label="Salt(支付盐)" prop="mch_salt">
  76. <el-input v-model="sys.mch_salt" show-password clearable placeholder="请输入"></el-input>
  77. <div class="el-form-item-msg"></div>
  78. </el-form-item>
  79. <el-form-item label="应用公钥" prop="app_public_key">
  80. <el-input v-model="sys.app_public_key" type="textarea" rows="10" show-password clearable placeholder="请输入"></el-input>
  81. <div class="el-form-item-msg"></div>
  82. </el-form-item>
  83. <el-form-item label="平台公钥" prop="public_key">
  84. <el-input v-model="sys.public_key" type="textarea" rows="10" show-password clearable placeholder="请输入"></el-input>
  85. <div class="el-form-item-msg"></div>
  86. </el-form-item>
  87. </fieldset>
  88. </el-col>
  89. <el-col :span="this.$store.state.global.ismobile?24:12">
  90. <fieldset>
  91. <legend><el-tag>商家应用权限</el-tag></legend>
  92. <el-form-item label="应用名称" prop="name">
  93. <el-input v-model="sys.name" clearable placeholder="请输入"></el-input>
  94. <div class="el-form-item-msg">应用名称</div>
  95. </el-form-item>
  96. <el-form-item label="AppId(应用 APPID)" prop="appid">
  97. <el-input v-model="sys.appid" show-password clearable placeholder="请输入"></el-input>
  98. <div class="el-form-item-msg"></div>
  99. </el-form-item>
  100. <el-form-item label="AppSecret(应用 Secret)" prop="secret">
  101. <el-input v-model="sys.secret" show-password clearable placeholder="请输入"></el-input>
  102. <div class="el-form-item-msg"></div>
  103. </el-form-item>
  104. </fieldset>
  105. </el-col>
  106. </el-row>
  107. </el-form>
  108. </el-tab-pane>
  109. </el-tabs>
  110. </el-card>
  111. </el-main>
  112. <el-footer>
  113. <el-button type="primary" size="large" :loading="isSaveing" @click="saveForm">保存</el-button>
  114. </el-footer>
  115. </el-container>
  116. </template>
  117. <script>
  118. import { defineAsyncComponent } from 'vue';
  119. const scEditor = defineAsyncComponent(() => import('@/components/scEditor'));
  120. export default {
  121. components: {
  122. scEditor
  123. },
  124. data(){
  125. return {
  126. activeName:"wechat",
  127. isSaveing: false,
  128. sys: {},
  129. smsRegion:[],
  130. rules2:{
  131. name: [
  132. { required: true, message: '请输入' }
  133. ],
  134. appid: [
  135. { required: true, message: '请输入' }
  136. ],
  137. secret: [
  138. { required: true, message: '请输入' }
  139. ],
  140. mch_id: [
  141. { required: true, message: '请输入' }
  142. ],
  143. mch_token: [
  144. { required: true, message: '请输入' }
  145. ],
  146. mch_salt: [
  147. { required: true, message: '请输入' }
  148. ],
  149. mini_secret: [
  150. { required: true, message: '请输入' }
  151. ],
  152. mini_public_key: [
  153. { required: true, message: '请输入' }
  154. ],
  155. min_private_key: [
  156. { required: true, message: '请输入' }
  157. ],
  158. },
  159. rules: {
  160. title: [
  161. { required: true, message: '请输入' }
  162. ],
  163. tel: [
  164. { required: true, message: '请输入' }
  165. ],
  166. logo: [
  167. { required: true, message: '请选择', trigger:"change" }
  168. ],
  169. miitbeian: [
  170. { required: true, message: '请输入' }
  171. ],
  172. beian: [
  173. { required: true, message: '请输入' }
  174. ],
  175. copyright: [
  176. { required: true, message: '请输入' }
  177. ]
  178. },
  179. isLoading:false
  180. }
  181. },
  182. created() {
  183. this.getConfig();
  184. },
  185. methods: {
  186. handleClick(event){
  187. this.activeName = event;
  188. this.getConfig();
  189. },
  190. saveForm() {
  191. this.isSaveing = true;
  192. this.$refs.form.validate(async (valid) => {
  193. console.log(valid)
  194. if (valid) {
  195. var result = await this.$API.setting.configSave.post({type:this.activeName,data: this.sys });
  196. this.isSaveing = false;
  197. if(result.code == 0)
  198. {
  199. this.$message.error(result.msg);
  200. return false;
  201. }
  202. if (this.activeName == "service") {
  203. this.$TOOL.data.set("SERVICE", this.sys)
  204. }
  205. this.$message.success(result.msg);
  206. } else {
  207. this.isSaveing = false;
  208. return false;
  209. }
  210. })
  211. },
  212. async getConfig() {
  213. this.isLoading = true;
  214. var result = await this.$API.setting.config.get({ type: this.activeName });
  215. this.isLoading = false;
  216. if (result.code == 0) {
  217. this.$message.error(result.msg);
  218. return;
  219. }
  220. if (this.activeName == "sms") {
  221. this.smsRegion = result.data.channel
  222. }
  223. this.sys = result.data;
  224. },
  225. }
  226. }
  227. </script>