xm-reverse-render.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <template>
  2. <div :class="$style.xmselinput">
  3. <a-input v-model="defaultValue" v-bind="$attrs" @blur="setinputvalue" />
  4. <a-button @click="reverseVal">反向</a-button>
  5. </div>
  6. </template>
  7. <script>
  8. import components from './_import-components/xm-reverse-render-import'
  9. export default {
  10. name: 'XmReverseRender',
  11. components,
  12. props: {
  13. reverseField: {
  14. type: String,
  15. default: '',
  16. },
  17. },
  18. data() {
  19. return {
  20. defaultValue: this.$attrs?.value || '',
  21. }
  22. },
  23. inject: {
  24. SdFormContext: { default: () => {} },
  25. },
  26. methods: {
  27. reverseVal() {
  28. const rval = this.SdFormContext.getFieldValue(this.reverseField)
  29. this.SdFormContext.setFieldValue(this.reverseField, this.defaultValue)
  30. this.defaultValue = rval
  31. this.$emit('input', rval)
  32. },
  33. setinputvalue(val) {
  34. if (this.defaultValue) {
  35. this.$emit('input', this.defaultValue)
  36. }
  37. },
  38. },
  39. }
  40. </script>
  41. <style module lang="scss">
  42. @use '@/common/design' as *;
  43. .xmselinput {
  44. :global .ant-input {
  45. width: 70%;
  46. margin-right: 10px;
  47. }
  48. :global .ant-btn {
  49. width: auto;
  50. padding: 0 10px;
  51. }
  52. }
  53. </style>