EditFillNumber.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <template>
  2. <div class="edit-fill-number">
  3. <el-form
  4. ref="modalFormComp"
  5. :model="modalForm"
  6. :rules="rules"
  7. :key="modalForm.id"
  8. label-width="100px"
  9. >
  10. <el-form-item prop="name" label="名称:">
  11. <el-input
  12. v-model="modalForm.name"
  13. placeholder="请输入名称"
  14. clearable
  15. ></el-input>
  16. </el-form-item>
  17. <el-form-item prop="numberCount" label="号码数量:">
  18. <el-input-number
  19. v-model="modalForm.numberCount"
  20. :max="20"
  21. :min="1"
  22. :step="1"
  23. step-strictly
  24. :controls="false"
  25. ></el-input-number>
  26. </el-form-item>
  27. </el-form>
  28. </div>
  29. </template>
  30. <script>
  31. import { objAssign } from "../../plugins/utils";
  32. const initModalForm = {
  33. id: "",
  34. name: "",
  35. numberCount: 13
  36. };
  37. export default {
  38. name: "edit-fill-number",
  39. props: {
  40. instance: {
  41. type: Object,
  42. default() {
  43. return {};
  44. }
  45. }
  46. },
  47. data() {
  48. const numberValidater = (rule, value, callback) => {
  49. if (!this.modalForm.numberCount) {
  50. return callback(new Error("请输入号码数量"));
  51. }
  52. callback();
  53. };
  54. return {
  55. modalForm: { ...initModalForm },
  56. rules: {
  57. name: [{ required: true, message: "请输入名称", trigger: "change" }],
  58. numberCount: [
  59. {
  60. required: true,
  61. validator: numberValidater,
  62. trigger: "change"
  63. }
  64. ]
  65. }
  66. };
  67. },
  68. mounted() {
  69. this.initData(this.instance);
  70. },
  71. methods: {
  72. initData(val) {
  73. this.modalForm = objAssign(initModalForm, val);
  74. },
  75. async submit() {
  76. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  77. if (!valid) return;
  78. this.$emit("modified", objAssign(this.instance, this.modalForm));
  79. }
  80. }
  81. };
  82. </script>