invoice.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <template>
  2. <div class="invoice defbb" :class="{ 'read-only': isReadOnly }">
  3. <div class="gray-color s-fz">[ 说明:用于发票补充展示 ]</div>
  4. <el-form
  5. ref="form"
  6. :model="formData"
  7. :rules="rules"
  8. size="mini"
  9. label-width="110px"
  10. label-position="left"
  11. :disabled="$props.disabled"
  12. class="p-spac pb-spacd4"
  13. >
  14. <div class="flex">
  15. <el-form-item prop="addr" label="购方地址:" label-width="85px" class="mr-spac">
  16. <el-input v-model="formData.addr" v-empty="emptyArgs"></el-input>
  17. </el-form-item>
  18. <el-form-item prop="bank" label="购方开户银行:">
  19. <el-input v-model="formData.bank" v-empty="emptyArgs"></el-input>
  20. </el-form-item>
  21. </div>
  22. <div class="flex">
  23. <el-form-item prop="addr" label="购方电话:" label-width="85px" class="mr-spac">
  24. <el-input v-model="formData.addr" v-empty="emptyArgs"></el-input>
  25. </el-form-item>
  26. <el-form-item prop="bank" label="购方银行账号:">
  27. <el-input v-model="formData.bank" v-empty="emptyArgs"></el-input>
  28. </el-form-item>
  29. <div class="ml-spac pt-spac" v-if="!$props.disabled">
  30. <template v-if="isReadOnly">
  31. <el-button type="text" @click="isEdit=true">修改</el-button>
  32. </template>
  33. <template v-else>
  34. <el-button type="text" @click="save()">保存</el-button>
  35. <el-button type="text" @click="cancel()">取消</el-button>
  36. </template>
  37. </div>
  38. </div>
  39. </el-form>
  40. </div>
  41. </template>
  42. <script>
  43. const staticData = {
  44. formDataRaw: {}
  45. }
  46. export default {
  47. name: 'invoice',
  48. data() {
  49. return {
  50. formData: {
  51. addr: '',
  52. bank: '66'
  53. },
  54. rules: {
  55. },
  56. isEdit: false
  57. }
  58. },
  59. props: {
  60. readOnly: {
  61. type: Boolean,
  62. default: false
  63. },
  64. disabled: {
  65. type: Boolean,
  66. default: false
  67. }
  68. },
  69. computed: {
  70. isReadOnly() {
  71. return this.readOnly || !this.isEdit
  72. },
  73. emptyArgs() {
  74. return { open: this.isReadOnly, text: '[ 暂无内容 ]' }
  75. }
  76. },
  77. watch: {
  78. isEdit(val) {
  79. if (val) {
  80. staticData.formDataRaw = { ...this.formData }
  81. }
  82. }
  83. },
  84. created() {
  85. this.isEdit = !Object.keys(this.formData).some(key => this.formData[key])
  86. },
  87. methods: {
  88. save() {
  89. this.isEdit = false
  90. },
  91. cancel() {
  92. this.formData = staticData.formDataRaw
  93. this.isEdit = false
  94. }
  95. }
  96. }
  97. </script>
  98. <style lang="scss" scoped>
  99. .el-input {
  100. width: 300px;
  101. }
  102. .el-form-item--mini.el-form-item {
  103. margin-bottom: 6px;
  104. }
  105. .read-only {
  106. ::v-deep input {
  107. padding: 0;
  108. border:0;
  109. pointer-events: none;
  110. }
  111. }
  112. </style>