balanceEdit.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <template>
  2. <div class="edit-popup">
  3. <popup
  4. ref="popupRef"
  5. :title="popupTitle"
  6. :async="true"
  7. width="550px"
  8. @confirm="handleSubmit"
  9. @close="handleClose"
  10. >
  11. <el-form ref="formRef" :model="formData" label-width="120px" :rules="formRules">
  12. <el-form-item label="当前余额">
  13. <span>{{ formData.currentAmount }}</span>
  14. </el-form-item>
  15. <el-form-item label="资金流向" prop="balanceFlow">
  16. <el-radio-group v-model="formData.balanceFlow" size="small">
  17. <el-radio label=1>流入(余额增加)</el-radio>
  18. <el-radio label=-1>流出(余额减少)</el-radio>
  19. </el-radio-group>
  20. </el-form-item>
  21. <el-form-item label="金额" prop="amount">
  22. <el-input
  23. type="number"
  24. v-model="formData.amount"
  25. placeholder="请输入金额"
  26. clearable
  27. />
  28. </el-form-item>
  29. <el-form-item label="备注" prop="remark">
  30. <el-input
  31. v-model="formData.remark"
  32. placeholder="请输入修改原因(可选)"
  33. clearable
  34. />
  35. </el-form-item>
  36. </el-form>
  37. </popup>
  38. </div>
  39. </template>
  40. <script lang="ts" setup>
  41. import type {FormInstance} from 'element-plus'
  42. import Popup from '@/components/popup/index.vue'
  43. import feedback from '@/utils/feedback'
  44. import {queryUserMemberInfo, saveBalanceRecord} from '@/api/membership'
  45. const emit = defineEmits(['success', 'close'])
  46. const formRef = shallowRef<FormInstance>()
  47. const popupRef = shallowRef<InstanceType<typeof Popup>>()
  48. const popupTitle = computed(() => {
  49. return '修改余额'
  50. })
  51. const formData = reactive({
  52. amount: null,
  53. currentAmount: 0,
  54. balanceFlow: null,
  55. bizScene: '余额修改',
  56. brandId: null,
  57. operator: '',
  58. remark: '',
  59. userId: null
  60. })
  61. const formRules = {
  62. amount: [
  63. {
  64. required: true,
  65. message: '请输入金额',
  66. trigger: ['blur']
  67. }
  68. ],
  69. balanceFlow: [
  70. {
  71. required: true,
  72. message: '请选择资金流向',
  73. trigger: ['blur']
  74. }
  75. ]
  76. }
  77. const handleSubmit = async () => {
  78. await formRef.value?.validate()
  79. formData.operator = localStorage.getItem('username') || ''
  80. formData.amount = Number(formData.amount || 0) * 100
  81. formData.balanceFlow = Number(formData.balanceFlow || 1)
  82. await saveBalanceRecord(formData)
  83. feedback.msgSuccess('操作成功')
  84. popupRef.value?.close()
  85. emit('success')
  86. }
  87. const open = () => {
  88. popupRef.value?.open()
  89. }
  90. const getDetail = async (row: Record<string, any>) => {
  91. const data = await queryUserMemberInfo({
  92. userId: row.userId,
  93. brandId: row.brandId,
  94. genQrCode: 0
  95. })
  96. formData.userId = data.single.userId
  97. formData.brandId = data.single.brandId
  98. formData.currentAmount = data.single.accountAmount
  99. }
  100. const handleClose = () => {
  101. emit('close')
  102. }
  103. defineExpose({
  104. open,
  105. getDetail
  106. })
  107. </script>