SchoolSetSync.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <template>
  2. <div class="school-set-sync">
  3. <el-form
  4. v-if="fields.length"
  5. ref="modalFormComp"
  6. :model="modalForm"
  7. :rules="rules"
  8. label-width="140px"
  9. >
  10. <el-form-item
  11. v-for="field in fields"
  12. :key="field.code"
  13. :prop="field.prop"
  14. :label="field.name + ':'"
  15. >
  16. <template v-if="field.options">
  17. <el-radio-group v-model="field.value">
  18. <el-radio
  19. v-for="item in field.options"
  20. :key="item.value"
  21. :label="item.value"
  22. >{{ item.label }}</el-radio
  23. >
  24. </el-radio-group>
  25. </template>
  26. <template v-else>
  27. <el-radio-group v-model="field.enable" @change="resetVal(field)">
  28. <el-radio
  29. v-for="item in OPEN_STATUS"
  30. :key="item.value"
  31. :label="item.value"
  32. >{{ item.label }}</el-radio
  33. >
  34. </el-radio-group>
  35. <br />
  36. <el-input
  37. v-if="field.enable"
  38. v-model="field.value"
  39. placeholder="请输入调用地址"
  40. clearable
  41. >
  42. </el-input>
  43. </template>
  44. </el-form-item>
  45. <el-form-item>
  46. <el-button type="primary" :loading="loading" @click="confirm"
  47. >保存</el-button
  48. >
  49. </el-form-item>
  50. </el-form>
  51. </div>
  52. </template>
  53. <script>
  54. import { schoolSetSyncInfo, schoolSetSyncUpdate } from "../../api";
  55. import { OPEN_STATUS } from "../../../../constants/enumerate";
  56. export default {
  57. name: "school-set-sync",
  58. props: {
  59. school: {
  60. type: Object,
  61. default() {
  62. return {};
  63. }
  64. }
  65. },
  66. data() {
  67. return {
  68. loading: false,
  69. OPEN_STATUS,
  70. modalForm: {},
  71. fields: [],
  72. rules: {}
  73. };
  74. },
  75. mounted() {
  76. this.initData();
  77. },
  78. methods: {
  79. async initData() {
  80. const data = await schoolSetSyncInfo(this.school.id);
  81. this.fields = data.result || [];
  82. this.fields.forEach(field => {
  83. field.prop = field.code.split(".").join("_");
  84. this.$set(this.modalForm, field.prop, field.value);
  85. if (field.options) return;
  86. this.rules[field.prop] = [
  87. {
  88. validator: (rule, value, callback) => {
  89. if (!field.value && field.enable) {
  90. return callback(new Error(`请输入${field.name}请求地址`));
  91. }
  92. callback();
  93. },
  94. trigger: "change"
  95. }
  96. ];
  97. });
  98. },
  99. resetVal(field) {
  100. if (!field.enable) field.value = "";
  101. },
  102. async confirm() {
  103. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  104. if (!valid) return;
  105. if (this.loading) return;
  106. this.loading = true;
  107. const datas = { param: this.fields, schoolId: this.school.id };
  108. const res = await schoolSetSyncUpdate(datas).catch(() => {});
  109. this.loading = false;
  110. if (!res) return;
  111. this.$message.success("修改成功!");
  112. this.initData();
  113. }
  114. }
  115. };
  116. </script>