SystemSetting.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  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="checkValueIsBoolean(field.value)"
  22. v-model="modalForm[field.code]"
  23. >
  24. <el-radio
  25. v-for="item in BOOLEAN_STATUS"
  26. :key="item.value"
  27. :label="item.value"
  28. >{{ item.label }}</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. </el-form-item>
  38. </template>
  39. </div>
  40. </div>
  41. <el-form-item v-if="setList.length">
  42. <el-button type="primary" :disabled="isSubmit" @click="submit"
  43. >确认</el-button
  44. >
  45. </el-form-item>
  46. </el-form>
  47. </div>
  48. </div>
  49. </template>
  50. <script>
  51. import { systemSettingQuery, updateSystemSetting } from "../api";
  52. export default {
  53. name: "system-setting",
  54. data() {
  55. return {
  56. modalForm: {},
  57. isSubmit: false,
  58. BOOLEAN_STATUS: [
  59. {
  60. label: "开启",
  61. value: "true"
  62. },
  63. {
  64. label: "关闭",
  65. value: "false"
  66. }
  67. ],
  68. rules: {},
  69. setList: []
  70. };
  71. },
  72. mounted() {
  73. this.getSysSet();
  74. },
  75. methods: {
  76. checkValueIsBoolean(val) {
  77. return ["true", "false"].includes(val);
  78. },
  79. async getSysSet() {
  80. const data = await systemSettingQuery(this.$attrs.isSystem);
  81. this.setList = data;
  82. let modalForm = {},
  83. rules = {};
  84. data.forEach(item => {
  85. item.data.forEach(field => {
  86. modalForm[field.code] = field.value;
  87. rules[field.code] = [
  88. {
  89. required: true,
  90. message: `请设置${field.name}`,
  91. trigger: "change"
  92. }
  93. ];
  94. });
  95. });
  96. this.modalForm = modalForm;
  97. this.rules = rules;
  98. },
  99. async submit() {
  100. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  101. if (!valid) return;
  102. if (this.isSubmit) return;
  103. this.isSubmit = true;
  104. this.setList.forEach(item => {
  105. item.data.forEach(field => {
  106. field.value = this.modalForm[field.code];
  107. });
  108. });
  109. const data = await updateSystemSetting(
  110. this.setList,
  111. this.$attrs.isSystem
  112. ).catch(() => {});
  113. this.isSubmit = false;
  114. if (!data) return;
  115. this.$message.success("设置成功!");
  116. }
  117. }
  118. };
  119. </script>