config.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434
  1. <template>
  2. <div class="app-container">
  3. <el-tabs v-model="activeName" @tab-click="handleClick" >
  4. <el-tab-pane label="商城配置" name="store.config">
  5. <el-form ref="form1" :model="form1" :rules="rules1" label-width="180px">
  6. <el-form-item label="搜索关键字" prop="hotSearch">
  7. <el-input v-model="form1.hotSearch" label="请输入搜索关键字,多个用,号分隔"></el-input>
  8. </el-form-item>
  9. <el-form-item label="资质证明" prop="certs">
  10. <Material v-model="photoArr" type="image" :num="10" :width="150" :height="150" />
  11. </el-form-item>
  12. <el-form-item label="货到付款支付比例" prop="payRate">
  13. <el-tooltip class="item" effect="dark" content="货到付款支付比例(%)" placement="top-end">
  14. <el-input-number v-model="form1.payRate" ></el-input-number>
  15. </el-tooltip>
  16. </el-form-item>
  17. <el-form-item label="待支付订单取消时间" prop="unPayTime">
  18. <el-tooltip class="item" effect="dark" content="待支付订单取消时间(分钟)" placement="top-end">
  19. <el-input-number v-model="form1.unPayTime" :min="1" ></el-input-number>
  20. </el-tooltip>
  21. </el-form-item>
  22. <el-form-item label="公司推广佣金比例" prop="tuiMoneyRate">
  23. <el-tooltip class="item" effect="dark" content="公司推广佣金比例(%)" placement="top-end">
  24. <el-input-number v-model="form1.tuiMoneyRate" :min="1" :max="100" ></el-input-number>
  25. </el-tooltip>
  26. </el-form-item>
  27. <el-form-item label="服务费" prop="serviceFee">
  28. <el-tooltip class="item" effect="dark" content="服务费(元)" placement="top-end">
  29. <el-input-number v-model="form1.serviceFee" :min="0" ></el-input-number>
  30. </el-tooltip>
  31. </el-form-item>
  32. <el-form-item label="成本售价比例" prop="salesPriceRate">
  33. <el-tooltip class="item" effect="dark" content="成本售价比例(%)" placement="top-end">
  34. <el-input-number v-model="form1.salesPriceRate" :min="1" :max="300" ></el-input-number>
  35. </el-tooltip>
  36. </el-form-item>
  37. <el-form-item label="公司制单金额最低比例" prop="createMoneyRate">
  38. <el-tooltip class="item" effect="dark" content="公司制单金额最低比例(%)" placement="top-end">
  39. <el-input-number v-model="form1.createMoneyRate" :min="1" :max="100" ></el-input-number>
  40. </el-tooltip>
  41. </el-form-item>
  42. <el-form-item label="申请售后有效天数" prop="storeAfterSalesDay">
  43. <el-tooltip class="item" effect="dark" content="确认收货后申请售后天数" placement="top-end">
  44. <el-input-number v-model="form1.storeAfterSalesDay" :min="0" :max="100" ></el-input-number>
  45. </el-tooltip>
  46. </el-form-item>
  47. <el-form-item label="退货收货人" prop="refundConsignee">
  48. <el-tooltip class="item" effect="dark" content="退货收货人" placement="top-end">
  49. <el-input style="width:200px" v-model="form1.refundConsignee" ></el-input>
  50. </el-tooltip>
  51. </el-form-item>
  52. <el-form-item label="退货手机号" prop="refundPhoneNumber">
  53. <el-tooltip class="item" effect="dark" content="退货手机号" placement="top-end">
  54. <el-input style="width:200px" v-model="form1.refundPhoneNumber" ></el-input>
  55. </el-tooltip>
  56. </el-form-item>
  57. <el-form-item label="退货地址" prop="refundAddress">
  58. <el-tooltip class="item" effect="dark" content="退货地址" placement="top-end">
  59. <el-input v-model="form1.refundAddress" ></el-input>
  60. </el-tooltip>
  61. </el-form-item>
  62. <div class="footer">
  63. <el-button type="primary" @click="submitForm1">提 交</el-button>
  64. </div>
  65. </el-form>
  66. </el-tab-pane>
  67. <el-tab-pane label="OSS配置" name="sys.oss.cloudStorage">
  68. <el-form ref="form2" :model="form2" :rules="rules2" label-width="140px">
  69. <el-form-item label="类型" prop="type">
  70. <el-radio-group v-model="form2.type">
  71. <el-radio :label="1">七牛云</el-radio>
  72. <el-radio :label="2">阿里云</el-radio>
  73. <el-radio :label="3">腾讯云</el-radio>
  74. </el-radio-group>
  75. </el-form-item>
  76. <el-form-item v-if="form2.type==1" label="七牛绑定的域名" prop="qiniuDomain">
  77. <el-input v-model="form2.qiniuDomain" label="请输入七牛绑定的域名"></el-input>
  78. </el-form-item>
  79. <el-form-item v-if="form2.type==1" label="七牛路径前缀" prop="qiniuPrefix">
  80. <el-input v-model="form2.qiniuPrefix" label="请输入七牛路径前缀"></el-input>
  81. </el-form-item>
  82. <el-form-item v-if="form2.type==1" label="七牛ACCESS_KEY" prop="qiniuAccessKey">
  83. <el-input v-model="form2.qiniuAccessKey" label="请输入七牛ACCESS_KEY"></el-input>
  84. </el-form-item>
  85. <el-form-item v-if="form2.type==1" label="七牛SecretKey" prop="qiniuSecretKey">
  86. <el-input v-model="form2.qiniuSecretKey" label="七牛SecretKey不能为空"></el-input>
  87. </el-form-item>
  88. <el-form-item v-if="form2.type==1" label="七牛空间名" prop="qiniuBucketName">
  89. <el-input v-model="form2.qiniuBucketName" label="七牛空间名不能为空"></el-input>
  90. </el-form-item>
  91. <el-form-item v-if="form2.type==2" label="阿里云绑定的域名" prop="aliyunDomain">
  92. <el-input v-model="form2.aliyunDomain" label="阿里云绑定的域名不能为空"></el-input>
  93. </el-form-item>
  94. <el-form-item v-if="form2.type==2" label="阿里云路径前缀" prop="aliyunPrefix">
  95. <el-input v-model="form2.aliyunPrefix" label="阿里云路径前缀不能为空"></el-input>
  96. </el-form-item>
  97. <el-form-item v-if="form2.type==2" label="阿里云EndPoint" prop="aliyunEndPoint">
  98. <el-input v-model="form2.aliyunEndPoint" label="阿里云EndPoint不能为空"></el-input>
  99. </el-form-item>
  100. <el-form-item v-if="form2.type==2" label="阿里云AccessKeyId" prop="aliyunAccessKeyId">
  101. <el-input v-model="form2.aliyunAccessKeyId" label="阿里云AccessKeyId不能为空"></el-input>
  102. </el-form-item>
  103. <el-form-item v-if="form2.type==2" label="阿里云AccessKeySecret" prop="aliyunAccessKeySecret">
  104. <el-input v-model="form2.aliyunAccessKeySecret" label="阿里云AccessKeySecret不能为空"></el-input>
  105. </el-form-item>
  106. <el-form-item v-if="form2.type==2" label="阿里云BucketName" prop="aliyunBucketName">
  107. <el-input v-model="form2.aliyunBucketName" label="阿里云BucketName不能为空"></el-input>
  108. </el-form-item>
  109. <el-form-item v-if="form2.type==3" label="腾讯云绑定的域名" prop="qcloudDomain">
  110. <el-input v-model="form2.qcloudDomain" label="腾讯云绑定的域名格式不正确"></el-input>
  111. </el-form-item>
  112. <el-form-item v-if="form2.type==3" label="腾讯云前缀" prop="qcloudPrefix">
  113. <el-input v-model="form2.qcloudPrefix" label="腾讯云前缀不能为空"></el-input>
  114. </el-form-item>
  115. <el-form-item v-if="form2.type==3" label="腾讯云SecretId" prop="qcloudSecretId">
  116. <el-input v-model="form2.qcloudSecretId" label="腾讯云SecretId不能为空"></el-input>
  117. </el-form-item>
  118. <el-form-item v-if="form2.type==3" label="腾讯云SecretKey" prop="qcloudSecretKey">
  119. <el-input v-model="form2.qcloudSecretKey" label="腾讯云SecretKey不能为空"></el-input>
  120. </el-form-item>
  121. <el-form-item v-if="form2.type==3" label="腾讯云BucketName" prop="qcloudBucketName">
  122. <el-input v-model="form2.qcloudBucketName" label="腾讯云BucketName不能为空"></el-input>
  123. </el-form-item>
  124. <el-form-item v-if="form2.type==3" label="所属地区" prop="qcloudRegion">
  125. <el-input v-model="form2.qcloudRegion" label="所属地区不能为空"></el-input>
  126. </el-form-item>
  127. <div class="footer">
  128. <el-button type="primary" @click="submitForm2">提 交</el-button>
  129. </div>
  130. </el-form>
  131. </el-tab-pane>
  132. <el-tab-pane label="积分配置" name="store.integral">
  133. <el-form ref="form3" :model="form3" :rules="rules3" label-width="160px">
  134. <el-form-item label="积分抵用比例" prop="integralRatio">
  135. <el-tooltip class="item" effect="dark" content="1积分抵多少金额" placement="top-end">
  136. <el-input-number v-model="form3.integralRatio" ></el-input-number>
  137. </el-tooltip>
  138. </el-form-item>
  139. <el-form-item label="满多少可以抵扣" prop="integralFull">
  140. <el-tooltip class="item" effect="dark" content="消费必须满一定额度才可使用,0代表无限制" placement="top-end">
  141. <el-input-number v-model="form3.integralFull" ></el-input-number>
  142. </el-tooltip>
  143. </el-form-item>
  144. <el-form-item label="单次最大抵扣积分" prop="integralMax">
  145. <el-tooltip class="item" effect="dark" content="限制一次只能使用多少积分,0代表无限制" placement="top-end">
  146. <el-input-number v-model="form3.integralMax" ></el-input-number>
  147. </el-tooltip>
  148. </el-form-item>
  149. <div class="footer">
  150. <el-button type="primary" @click="submitForm3">提 交</el-button>
  151. </div>
  152. </el-form>
  153. </el-tab-pane>
  154. <el-tab-pane label="签到配置" name="store.sign">
  155. <el-form ref="form4" :model="form4" label-width="160px">
  156. <el-table
  157. border
  158. :data="form4.sign"
  159. style="width: 100%">
  160. <el-table-column
  161. prop="day"
  162. label="名称"
  163. >
  164. </el-table-column>
  165. <el-table-column
  166. prop="signNum"
  167. label="获得积分"
  168. >
  169. </el-table-column>
  170. <el-table-column
  171. prop="sort"
  172. label="排序"
  173. >
  174. </el-table-column>
  175. <el-table-column
  176. label="操作"
  177. width="100">
  178. <template slot-scope="scope">
  179. <el-button type="text" size="small" @click="handleSignEdit(scope.row)">编辑</el-button>
  180. </template>
  181. </el-table-column>
  182. </el-table>
  183. <div class="footer" style="margin-top:10px;">
  184. <el-button type="primary" @click="submitForm4">提 交</el-button>
  185. </div>
  186. </el-form>
  187. </el-tab-pane>
  188. <el-tab-pane label="用户协议" name="store.agreement">
  189. <el-form ref="form5" :model="form5" :rules="rules5" label-width="100px">
  190. <el-form-item label="用户协议" prop="userAgreement">
  191. <editor ref="myeditor1" @on-text-change="updateText1" />
  192. </el-form-item>
  193. <el-form-item label="隐私政策" prop="privacyPolicy">
  194. <editor ref="myeditor2" @on-text-change="updateText2" />
  195. </el-form-item>
  196. <div class="footer">
  197. <el-button type="primary" @click="submitForm5">提 交</el-button>
  198. </div>
  199. </el-form>
  200. </el-tab-pane>
  201. </el-tabs>
  202. <el-dialog :title="sign.title" :visible.sync="sign.open" width="500px" append-to-body>
  203. <el-form ref="signform" :model="signform" label-width="80px">
  204. <el-form-item label="名称" prop="day">
  205. <el-input v-model="signform.day" placeholder="请输入名称" />
  206. </el-form-item>
  207. <el-form-item label="获得积分" prop="signNum">
  208. <el-input-number v-model="signform.signNum" placeholder="请输入获得积分" />
  209. </el-form-item>
  210. <el-form-item label="排序" prop="sort">
  211. <el-input-number v-model="signform.sort" placeholder="请输入排序" />
  212. </el-form-item>
  213. </el-form>
  214. <div slot="footer" class="dialog-footer">
  215. <el-button type="primary" @click="submitSignForm">确 定</el-button>
  216. </div>
  217. </el-dialog>
  218. </div>
  219. </template>
  220. <script>
  221. import Editor from '@/components/Editor/wang';
  222. import { getConfigByKey,updateConfigByKey, clearCache } from "@/api/system/config";
  223. import Material from '@/components/Material'
  224. export default {
  225. name: "Config",
  226. components: {
  227. Material,
  228. Editor
  229. },
  230. watch: {
  231. photoArr: function(val) {
  232. this.form1.certs = val.join(',')
  233. }
  234. },
  235. data() {
  236. return {
  237. sign:{
  238. title:"修改签到",
  239. open:false,
  240. },
  241. signform: {
  242. },
  243. photoArr:[],
  244. activeName:"store.config",
  245. configId:null,
  246. configKey:null,
  247. // 表单参数
  248. form1: {
  249. hotSearch:"",
  250. },
  251. // 表单校验
  252. rules1: {
  253. },
  254. form2: {
  255. },
  256. // 表单校验
  257. rules2: {
  258. },
  259. form3: {
  260. },
  261. // 表单校验
  262. rules3: {
  263. },
  264. form4: {
  265. sign:[],
  266. },
  267. // 表单校验
  268. rules4: {
  269. },
  270. form5: {
  271. },
  272. // 表单校验
  273. rules5: {
  274. }
  275. };
  276. },
  277. created() {
  278. this.getConfigByKey(this.activeName);
  279. },
  280. methods: {
  281. handleSignEdit(item){
  282. this.signform=item;
  283. this.sign.open=true;
  284. },
  285. submitSignForm(){
  286. this.sign.open=false;
  287. },
  288. updateText1(text){
  289. this.form5.userAgreement=text
  290. },
  291. updateText2(text){
  292. this.form5.privacyPolicy=text
  293. },
  294. handleClick(tab, event){
  295. console.log(tab.name)
  296. this.getConfigByKey(tab.name);
  297. },
  298. getConfigByKey(key){
  299. getConfigByKey(key).then(response => {
  300. console.log(response)
  301. if(key=="store.config"){
  302. this.configId=response.data.configId;
  303. this.configKey=response.data.configKey;
  304. this.form1 =JSON.parse(response.data.configValue);
  305. if(this.form1.certs!=null){
  306. this.photoArr=this.form1.certs.split(",");
  307. }
  308. }
  309. else if(key=="store.integral"){
  310. this.configId=response.data.configId;
  311. this.configKey=response.data.configKey;
  312. console.log(response.data.configValue)
  313. this.form3 =JSON.parse(response.data.configValue);
  314. console.log(this.form3.sign)
  315. }
  316. else if(key=="store.sign"){
  317. this.configId=response.data.configId;
  318. this.configKey=response.data.configKey;
  319. this.form4.sign =JSON.parse(response.data.configValue);
  320. console.log(this.form4.sign)
  321. }
  322. else if(key=="store.agreement"){
  323. this.configId=response.data.configId;
  324. this.configKey=response.data.configKey;
  325. this.form5 =JSON.parse(response.data.configValue);
  326. this.$refs.myeditor1.setText(this.form5.userAgreement);
  327. this.$refs.myeditor2.setText(this.form5.privacyPolicy);
  328. }
  329. else if(key=="sys.oss.cloudStorage"){
  330. this.configId=response.data.configId;
  331. this.configKey=response.data.configKey;
  332. this.form2 =JSON.parse(response.data.configValue);
  333. }
  334. });
  335. },
  336. /** 提交按钮 */
  337. submitForm1: function() {
  338. this.$refs["form1"].validate(valid => {
  339. if (valid) {
  340. var param={configId:this.configId,configKey:this.configKey,configValue:JSON.stringify(this.form1)}
  341. updateConfigByKey(param).then(response => {
  342. if (response.code === 200) {
  343. this.msgSuccess("修改成功");
  344. }
  345. });
  346. }
  347. });
  348. },
  349. submitForm2: function() {
  350. this.$refs["form2"].validate(valid => {
  351. if (valid) {
  352. var param={configId:this.configId,configKey:this.configKey,configValue:JSON.stringify(this.form2)}
  353. updateConfigByKey(param).then(response => {
  354. if (response.code === 200) {
  355. this.msgSuccess("修改成功");
  356. }
  357. });
  358. }
  359. });
  360. },
  361. submitForm3: function() {
  362. this.$refs["form3"].validate(valid => {
  363. if (valid) {
  364. var param={configId:this.configId,configKey:this.configKey,configValue:JSON.stringify(this.form3)}
  365. updateConfigByKey(param).then(response => {
  366. if (response.code === 200) {
  367. this.msgSuccess("修改成功");
  368. }
  369. });
  370. }
  371. });
  372. },
  373. submitForm4: function() {
  374. this.$refs["form4"].validate(valid => {
  375. if (valid) {
  376. var param={configId:this.configId,configKey:this.configKey,configValue:JSON.stringify(this.form4.sign)}
  377. updateConfigByKey(param).then(response => {
  378. if (response.code === 200) {
  379. this.msgSuccess("修改成功");
  380. }
  381. });
  382. }
  383. });
  384. },
  385. submitForm5: function() {
  386. this.$refs["form5"].validate(valid => {
  387. if (valid) {
  388. var param={configId:this.configId,configKey:this.configKey,configValue:JSON.stringify(this.form5)}
  389. updateConfigByKey(param).then(response => {
  390. if (response.code === 200) {
  391. this.msgSuccess("修改成功");
  392. }
  393. });
  394. }
  395. });
  396. },
  397. /** 清理缓存按钮操作 */
  398. handleClearCache() {
  399. clearCache().then(response => {
  400. if (response.code === 200) {
  401. this.msgSuccess("清理成功");
  402. }
  403. });
  404. }
  405. }
  406. };
  407. </script>
  408. <style scoped>
  409. .footer{
  410. width: 100%;
  411. display: flex;
  412. align-items: flex-end;
  413. justify-content: flex-end;
  414. }
  415. </style>