ElementPropEdit.vue 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <el-dialog
  3. class="element-prop-edit edit-dialog"
  4. :visible.sync="openElementEditDialog"
  5. :title="title"
  6. top="10vh"
  7. width="640px"
  8. :close-on-click-modal="false"
  9. :close-on-press-escape="false"
  10. :before-close="cancel"
  11. append-to-body
  12. >
  13. <component
  14. :is="curEditComponent"
  15. :instance="curElement"
  16. @modified="modified"
  17. :key="curElement.id"
  18. ref="ComponentForm"
  19. ></component>
  20. <div slot="footer">
  21. <el-button type="primary" @click="submit">确认</el-button>
  22. <el-button @click="cancel">取消</el-button>
  23. </div>
  24. </el-dialog>
  25. </template>
  26. <script>
  27. import { mapState, mapMutations, mapActions } from "vuex";
  28. import { getElementName, getElementDesc } from "../elements/model";
  29. import EditFillLine from "../elements/fill-line/EditFillLine";
  30. import EditFillQuestion from "../elements/fill-question/EditFillQuestion";
  31. import EditText from "../../../elements/text/EditText";
  32. import EditImage from "../../../elements/image/EditImage";
  33. import EditLine from "../../../elements/line/EditLine";
  34. import EditLines from "../../../elements/lines/EditLines";
  35. import EditGrids from "../../../elements/grids/EditGrids";
  36. import EditPane from "../../../elements/pane/EditPane";
  37. import EditBarcode from "../../../elements/barcode/EditBarcode";
  38. import EditFillNumber from "../../../elements/fill-number/EditFillNumber";
  39. import EditFillField from "../../../elements/fill-field/EditFillField";
  40. import EditFillTable from "../../../elements/fill-table/EditFillTable";
  41. import EditFillPane from "../../../elements/fill-pane/EditFillPane";
  42. export default {
  43. name: "element-prop-edit",
  44. components: {
  45. EditFillLine,
  46. EditFillQuestion,
  47. EditFillNumber,
  48. EditFillField,
  49. EditFillTable,
  50. EditFillPane,
  51. EditText,
  52. EditImage,
  53. EditLine,
  54. EditLines,
  55. EditGrids,
  56. EditPane,
  57. EditBarcode
  58. },
  59. data() {
  60. return {};
  61. },
  62. computed: {
  63. ...mapState("free", ["curElement", "openElementEditDialog"]),
  64. title() {
  65. return this.curElement.type
  66. ? getElementName(this.curElement.type)
  67. : "属性编辑";
  68. },
  69. curEditComponent() {
  70. if (!this.curElement.type) return;
  71. let type = this.curElement.type.toLowerCase().replace("_", "-");
  72. if (type.indexOf("line-") === 0) type = "line";
  73. return `edit-${type}`;
  74. }
  75. },
  76. methods: {
  77. ...mapMutations("free", ["setOpenElementEditDialog"]),
  78. ...mapActions("free", ["modifyElement"]),
  79. cancel() {
  80. this.setOpenElementEditDialog(false);
  81. },
  82. open() {
  83. this.setOpenElementEditDialog(true);
  84. },
  85. submit() {
  86. this.$refs.ComponentForm.submit();
  87. },
  88. modified(element) {
  89. element.desc = getElementDesc(element);
  90. this.modifyElement(element);
  91. this.cancel();
  92. }
  93. }
  94. };
  95. </script>