index.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  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="miitbeian" class="label-item">
  20. <el-input v-model="sys.miitbeian" placeholder="请输入" clearable />
  21. <div class="el-form-item-msg">支持Html格式</div>
  22. </el-form-item>
  23. <el-form-item label="公安安备号" prop="beian" class="label-item">
  24. <el-input v-model="sys.beian" placeholder="请输入" clearable />
  25. <div class="el-form-item-msg">网站备案号和公安备案号可以在<a href="https://beian.miit.gov.cn/" target="_blank">备案管理中心</a>查询并获取,网站上线时必需配置备案号,备案号会链接到信息备案管理系统 ~</div>
  26. </el-form-item>
  27. <el-form-item label="版权信息" prop="copyright" class="label-item">
  28. <el-input v-model="sys.copyright" placeholder="请输入" clearable />
  29. <div class="el-form-item-msg"></div>
  30. </el-form-item>
  31. <el-form-item label="隐私协议" prop="privacy" class="label-item">
  32. <sc-editor v-model="sys.privacy" placeholder="请输入" :height="400"></sc-editor>
  33. <div class="el-form-item-msg"></div>
  34. </el-form-item>
  35. <el-form-item label="服务协议" prop="agreements" class="label-item">
  36. <sc-editor v-model="sys.agreements" placeholder="请输入" :height="400"></sc-editor>
  37. <div class="el-form-item-msg"></div>
  38. </el-form-item>
  39. </el-form>
  40. </el-tab-pane>
  41. <el-tab-pane label="短信设置(非代理)" name="sms" v-loading="isLoading">
  42. <el-form :model="sys" :rules="rules2" ref="form" label-position="top" @keyup.enter="saveForm" v-if="activeName=='sms'">
  43. <el-form-item label="短信平台" prop="sms_type" class="label-item">
  44. <el-select v-model="sys.sms_type" style="width: 100%;" placeholder="请选择渠道" size="large">
  45. <el-option
  46. v-for="(item, index) in smsRegion"
  47. :key="index"
  48. :label="item.name"
  49. :value="item.type"
  50. />
  51. </el-select>
  52. <div class="el-form-item-msg"></div>
  53. </el-form-item>
  54. <div v-if="sys.sms_type == 'aliyun'">
  55. <el-form-item label="AccessKeyId" prop="AccessKeyId" class="label-item">
  56. <el-input v-model="sys.AccessKeyId" placeholder="请输入" clearable />
  57. <div class="el-form-item-msg"></div>
  58. </el-form-item>
  59. <el-form-item label="AccessKeySecret" prop="AccessKeySecret" class="label-item">
  60. <el-input v-model="sys.AccessKeySecret" placeholder="请输入" clearable />
  61. <div class="el-form-item-msg"></div>
  62. </el-form-item>
  63. <el-form-item label="短信签名 Sign" prop="sign" class="label-item">
  64. <el-input v-model="sys.sign" placeholder="请输入" clearable />
  65. <div class="el-form-item-msg"></div>
  66. </el-form-item>
  67. </div>
  68. <div v-if="sys.sms_type == 'qcloud'">
  69. <el-form-item label="SdkAppID" prop="SdkAppID" class="label-item">
  70. <el-input v-model="sys.SdkAppID" placeholder="请输入" clearable />
  71. <div class="el-form-item-msg"></div>
  72. </el-form-item>
  73. <el-form-item label="AccessKeyId" prop="AccessKeyId" class="label-item">
  74. <el-input v-model="sys.AccessKeyId" placeholder="请输入" clearable />
  75. <div class="el-form-item-msg"></div>
  76. </el-form-item>
  77. <el-form-item label="AccessKeySecret" prop="AccessKeySecret" class="label-item">
  78. <el-input v-model="sys.AccessKeySecret" placeholder="请输入" clearable />
  79. <div class="el-form-item-msg"></div>
  80. </el-form-item>
  81. <el-form-item label="短信签名 Sign" prop="sign" class="label-item">
  82. <el-input v-model="sys.sign" placeholder="请输入" clearable />
  83. <div class="el-form-item-msg"></div>
  84. </el-form-item>
  85. </div>
  86. <div v-if="sys.sms_type == 'qiniu'">
  87. <el-form-item label="AccessKeyId" prop="AccessKeyId" class="label-item">
  88. <el-input v-model="sys.AccessKeyId" placeholder="请输入" clearable />
  89. <div class="el-form-item-msg"></div>
  90. </el-form-item>
  91. <el-form-item label="SecretKey" prop="AccessKeySecret" class="label-item">
  92. <el-input v-model="sys.AccessKeySecret" placeholder="请输入" clearable />
  93. <div class="el-form-item-msg"></div>
  94. </el-form-item>
  95. </div>
  96. <el-divider content-position="left">模板通知 (验证码)</el-divider>
  97. <el-form-item label="模板内容" class="label-item">
  98. <el-input placeholder="请输入" v-model="sys.login_sms" disabled>
  99. <template #prepend>
  100. <el-button text icon="el-icon-document-copy" v-copy="sys.login_sms"></el-button>
  101. </template>
  102. </el-input>
  103. <div class="el-form-item-msg">按照该内容向供应商申请</div>
  104. </el-form-item>
  105. <el-form-item label="模板ID/Code" prop="login" class="label-item">
  106. <el-input v-model="sys.login" placeholder="请输入" clearable />
  107. <div class="el-form-item-msg">例如:SMS_139800030</div>
  108. </el-form-item>
  109. </el-form>
  110. </el-tab-pane>
  111. </el-tabs>
  112. </el-card>
  113. </el-main>
  114. <el-footer style="text-align: right;">
  115. <el-button type="primary" :loading="isSaveing" @click="saveForm">保存</el-button>
  116. </el-footer>
  117. </el-container>
  118. </template>
  119. <script>
  120. import { defineAsyncComponent } from 'vue';
  121. const scEditor = defineAsyncComponent(() => import('@/components/scEditor'));
  122. export default {
  123. components: {
  124. scEditor
  125. },
  126. data(){
  127. return {
  128. activeName:"service",
  129. isSaveing: false,
  130. sys: {},
  131. smsRegion:[],
  132. rules2:{
  133. sms_type: [
  134. { required: true, message: '请选择' }
  135. ],
  136. login: [
  137. { required: true, message: '请输入' }
  138. ],
  139. },
  140. rules: {
  141. title: [
  142. { required: true, message: '请输入' }
  143. ],
  144. tel: [
  145. { required: true, message: '请输入' }
  146. ],
  147. logo: [
  148. { required: true, message: '请选择', trigger:"change" }
  149. ],
  150. miitbeian: [
  151. { required: true, message: '请输入' }
  152. ],
  153. beian: [
  154. { required: true, message: '请输入' }
  155. ],
  156. copyright: [
  157. { required: true, message: '请输入' }
  158. ]
  159. },
  160. isLoading:false
  161. }
  162. },
  163. created() {
  164. this.getConfig();
  165. },
  166. methods: {
  167. handleClick(event){
  168. this.activeName = event;
  169. this.getConfig();
  170. },
  171. saveForm() {
  172. this.isSaveing = true;
  173. this.$refs.form.validate(async (valid) => {
  174. console.log(valid)
  175. if (valid) {
  176. var result = await this.$API.setting.configSave.post({type:this.activeName,data: this.sys });
  177. this.isSaveing = false;
  178. if(result.code == 0)
  179. {
  180. this.$message.error(result.msg);
  181. return false;
  182. }
  183. if (this.activeName == "service") {
  184. this.$TOOL.data.set("SERVICE", this.sys)
  185. }
  186. this.$message.success(result.msg);
  187. } else {
  188. this.isSaveing = false;
  189. return false;
  190. }
  191. })
  192. },
  193. async getConfig() {
  194. this.isLoading = true;
  195. var result = await this.$API.setting.config.get({ type: this.activeName });
  196. this.isLoading = false;
  197. if (result.code == 0) {
  198. this.$message.error(result.msg);
  199. return;
  200. }
  201. if (this.activeName == "sms") {
  202. this.smsRegion = result.data.channel
  203. }
  204. this.sys = result.data;
  205. },
  206. }
  207. }
  208. </script>