RulePackage.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <template>
  2. <div class="rule-package part-box part-box-pad">
  3. <h4 class="part-box-tips">卷袋贴字段配置:</h4>
  4. <el-form
  5. ref="modalFormComp"
  6. :model="modalForm"
  7. :rules="rules"
  8. label-width="170px"
  9. >
  10. <el-form-item prop="selectCodes" label="卷袋贴显示字段:">
  11. <rule-field-edit
  12. v-model="modalForm.selectCodes"
  13. :data="fieldSources"
  14. ></rule-field-edit>
  15. </el-form-item>
  16. <el-form-item>
  17. <el-button
  18. type="primary"
  19. :disabled="isSubmit"
  20. style="width: 140px"
  21. @click="submit"
  22. >保存</el-button
  23. >
  24. </el-form-item>
  25. </el-form>
  26. </div>
  27. </template>
  28. <script>
  29. import { examRuleDetail, saveExamRule } from "../api";
  30. import RuleFieldEdit from "./RuleFieldEdit.vue";
  31. export default {
  32. name: "rule-package",
  33. components: {
  34. RuleFieldEdit
  35. },
  36. data() {
  37. return {
  38. isSubmit: false,
  39. examRule: {},
  40. fieldSources: [],
  41. modalForm: {
  42. selectCodes: []
  43. },
  44. rules: {
  45. selectCodes: [
  46. {
  47. required: true,
  48. validator: (rule, value, callback) => {
  49. if (!value || !value.length) {
  50. return callback(new Error(`请选择卷袋贴显示字段`));
  51. }
  52. callback();
  53. },
  54. trigger: "change"
  55. }
  56. ]
  57. }
  58. };
  59. },
  60. methods: {
  61. async getFields() {
  62. const examRule = await examRuleDetail();
  63. this.examRule = examRule;
  64. let fields = [...JSON.parse(examRule.requiredFields)];
  65. if (!examRule.extendFields)
  66. fields.push(...JSON.parse(examRule.extendFields));
  67. this.fieldSources = fields
  68. .filter(item => item.enable)
  69. .map(item => {
  70. return {
  71. code: item.code,
  72. name: item.name
  73. };
  74. });
  75. this.modalForm.selectCodes = examRule.packageScope
  76. ? JSON.parse(examRule.packageScope).map(item => item.code)
  77. : [];
  78. },
  79. async submit() {
  80. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  81. if (!valid) return;
  82. if (this.isSubmit) return;
  83. this.isSubmit = true;
  84. const packageScope = this.fieldSources.filter(item =>
  85. this.modalForm.selectCodes.includes(item.code)
  86. );
  87. this.examRule.packageScope = JSON.stringify(packageScope);
  88. const data = await saveExamRule(this.examRule).catch(() => {});
  89. this.isSubmit = false;
  90. if (!data) return;
  91. this.$message.success("保存成功!");
  92. }
  93. }
  94. };
  95. </script>