SystemSetting.vue 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <div class="system-setting">
  3. <div class="part-box part-box-pad">
  4. <el-form
  5. ref="modalFormComp"
  6. :model="modalForm"
  7. :rules="rules"
  8. label-width="200px"
  9. >
  10. <div v-for="(group, gindex) in setList" :key="gindex" class="form-part">
  11. <h2 class="form-part-title">{{ group.name }}</h2>
  12. <div class="form-part-body">
  13. <template v-for="field in group.data">
  14. <el-form-item
  15. v-if="field.enable"
  16. :key="field.code"
  17. :prop="field.code"
  18. :label="`${field.name}:`"
  19. >
  20. <el-radio-group
  21. v-if="field.options"
  22. v-model="modalForm[field.code]"
  23. >
  24. <el-radio
  25. v-for="item in field.options"
  26. :key="item.value"
  27. :label="item.value"
  28. >{{ item.name }}</el-radio
  29. >
  30. </el-radio-group>
  31. <el-input
  32. v-else
  33. v-model="modalForm[field.code]"
  34. placeholder="请输入"
  35. clearable
  36. ></el-input>
  37. <div
  38. v-if="field.remark"
  39. class="tips-info"
  40. v-html="getRemarkHtml(field.remark)"
  41. ></div>
  42. </el-form-item>
  43. </template>
  44. </div>
  45. </div>
  46. <el-form-item v-if="setList.length">
  47. <el-button type="primary" :disabled="isSubmit" @click="submit"
  48. >确认</el-button
  49. >
  50. <el-button type="primary" @click="freshCache">刷新缓存</el-button>
  51. </el-form-item>
  52. </el-form>
  53. </div>
  54. </div>
  55. </template>
  56. <script>
  57. import { systemSettingQuery, updateSystemSetting, flushCache } from "../api";
  58. export default {
  59. name: "system-setting",
  60. data() {
  61. return {
  62. modalForm: {},
  63. isSubmit: false,
  64. rules: {},
  65. setList: [],
  66. };
  67. },
  68. mounted() {
  69. this.getSysSet();
  70. },
  71. methods: {
  72. checkValueIsBoolean(val) {
  73. return ["true", "false"].includes(val);
  74. },
  75. getRemarkHtml(remark) {
  76. return remark
  77. .split("\n")
  78. .map((cont) => `<p>${cont}</p>`)
  79. .join("");
  80. },
  81. async getSysSet() {
  82. const data = await systemSettingQuery(this.$attrs.isSystem);
  83. this.setList = data;
  84. let modalForm = {},
  85. rules = {};
  86. data.forEach((item) => {
  87. item.data.forEach((field) => {
  88. modalForm[field.code] = field.value;
  89. // rules[field.code] = [
  90. // {
  91. // required: true,
  92. // message: `请设置${field.name}`,
  93. // trigger: "change",
  94. // },
  95. // ];
  96. });
  97. });
  98. this.modalForm = modalForm;
  99. this.rules = rules;
  100. },
  101. async submit() {
  102. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  103. if (!valid) return;
  104. if (this.isSubmit) return;
  105. this.isSubmit = true;
  106. this.setList.forEach((item) => {
  107. item.data.forEach((field) => {
  108. field.value = this.modalForm[field.code];
  109. });
  110. });
  111. const data = await updateSystemSetting(
  112. this.setList,
  113. this.$attrs.isSystem
  114. ).catch(() => {});
  115. this.isSubmit = false;
  116. if (!data) return;
  117. this.$message.success("设置成功!");
  118. },
  119. async freshCache() {
  120. const schoolId = this.$ls.get("schoolId");
  121. if (!schoolId) {
  122. await flushCache("SYS_SETTING_GLOBAL");
  123. } else {
  124. await flushCache("SYS_SETTING");
  125. }
  126. },
  127. },
  128. };
  129. </script>