EditBarcode.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <div class="edit-barcode">
  3. <el-form
  4. ref="modalFormComp"
  5. :model="modalForm"
  6. :key="modalForm.id"
  7. :rules="rules"
  8. label-width="100px"
  9. >
  10. <el-form-item label="背景颜色:">
  11. <color-select
  12. v-model="modalForm.bgColor"
  13. show-empty
  14. :predefine="predefineColors"
  15. ></color-select>
  16. </el-form-item>
  17. <el-form-item label="边框颜色:">
  18. <color-select v-model="modalForm.color"></color-select>
  19. </el-form-item>
  20. <el-form-item label="边框粗细:">
  21. <line-width-select v-model="modalForm.bold"></line-width-select>
  22. </el-form-item>
  23. <el-form-item label="边框形状:">
  24. <line-style-select v-model="modalForm.style"></line-style-select>
  25. </el-form-item>
  26. <el-form-item label="方向:">
  27. <el-input-number
  28. v-model="modalForm.rotation"
  29. :max="180"
  30. :min="-180"
  31. :step="1"
  32. step-strictly
  33. :controls="false"
  34. ></el-input-number>
  35. </el-form-item>
  36. <el-form-item prop="field" label="变量:">
  37. <el-select
  38. v-model="modalForm.field"
  39. placeholder="请选择"
  40. style="width: 100%"
  41. >
  42. <el-option
  43. v-for="item in fieldList"
  44. :key="item.code"
  45. :label="item.name"
  46. :value="item.code"
  47. >
  48. </el-option>
  49. </el-select>
  50. </el-form-item>
  51. </el-form>
  52. </div>
  53. </template>
  54. <script>
  55. import ColorSelect from "../../components/common/ColorSelect";
  56. import LineStyleSelect from "../../components/common/LineStyleSelect";
  57. import LineWidthSelect from "../../components/common/LineWidthSelect";
  58. import { mapState } from "vuex";
  59. import { objAssign } from "../../plugins/utils";
  60. const initModalForm = {
  61. id: "",
  62. rotation: 0,
  63. bold: "1px",
  64. color: "#ffffff",
  65. bgColor: "#ffffff",
  66. style: "solid",
  67. field: ""
  68. };
  69. export default {
  70. name: "edit-barcode",
  71. components: { ColorSelect, LineStyleSelect, LineWidthSelect },
  72. props: {
  73. instance: {
  74. type: Object,
  75. default() {
  76. return {};
  77. }
  78. }
  79. },
  80. data() {
  81. return {
  82. modalForm: { ...initModalForm },
  83. predefineColors: ["#000000", "#666666", "#999999", "#ffffff"],
  84. fieldList: [],
  85. rules: {
  86. field: [
  87. {
  88. required: true,
  89. message: "请选择变量",
  90. trigger: "change"
  91. }
  92. ]
  93. }
  94. };
  95. },
  96. computed: {
  97. ...mapState("free", ["cardConfig"])
  98. },
  99. mounted() {
  100. this.initData(this.instance);
  101. },
  102. methods: {
  103. initData(val) {
  104. this.fieldList = [
  105. ...this.cardConfig.requiredFields,
  106. ...this.cardConfig.extendFields
  107. ].filter(item => item.enable);
  108. this.modalForm = objAssign(initModalForm, val);
  109. this.modalForm.field = val.fields[0] && val.fields[0].code;
  110. },
  111. async submit() {
  112. const valid = await this.$refs.modalFormComp.validate().catch(() => {});
  113. if (!valid) return;
  114. const data = { ...this.modalForm };
  115. data.fields = this.fieldList.filter(
  116. item => item.code === this.modalForm.field
  117. );
  118. const model = objAssign(this.instance, data);
  119. this.$emit("modified", model);
  120. }
  121. }
  122. };
  123. </script>