OrderAdjustAddressForm.vue 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <Dialog v-model="dialogVisible" title="修改订单收货地址" width="35%">
  3. <el-form ref="formRef" v-loading="formLoading" :model="formData" label-width="120px">
  4. <el-form-item label="收件人名称">
  5. <el-input v-model="formData.receiverName" />
  6. </el-form-item>
  7. <el-form-item label="收件人手机">
  8. <el-input v-model="formData.receiverMobile" />
  9. </el-form-item>
  10. <!-- TODO @puhui999:应该是个地区下拉框,可以看下 UserForm 所在地 -->
  11. <el-form-item label="收件人地区编号">
  12. <el-input v-model="formData.receiverAreaId" />
  13. </el-form-item>
  14. <el-form-item label="收件人详细地址">
  15. <el-input v-model="formData.receiverDetailAddress" />
  16. </el-form-item>
  17. </el-form>
  18. <template #footer>
  19. <el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button>
  20. <el-button @click="dialogVisible = false">取 消</el-button>
  21. </template>
  22. </Dialog>
  23. </template>
  24. <script lang="ts" setup>
  25. import * as TradeOrderApi from '@/api/mall/trade/order'
  26. import { copyValueToTarget } from '@/utils'
  27. // TODO @puhui999:OrderAdjustAddressForm 改成 OrderUpdateAddressForm 更新哈,保持统一;
  28. defineOptions({ name: 'OrderAdjustAddressForm' })
  29. const { t } = useI18n() // 国际化
  30. const message = useMessage() // 消息弹窗
  31. const dialogVisible = ref(false) // 弹窗的是否展示
  32. const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
  33. const formData = ref({
  34. id: 0, // 订单编号
  35. receiverName: '', // 收件人名称
  36. receiverMobile: '', // 收件人手机
  37. receiverAreaId: null, //收件人地区编号
  38. receiverDetailAddress: '' //收件人详细地址
  39. })
  40. const formRef = ref() // 表单 Ref
  41. /** 打开弹窗 */
  42. const open = async (row: TradeOrderApi.OrderVO) => {
  43. resetForm()
  44. // 设置数据
  45. copyValueToTarget(formData.value, row)
  46. dialogVisible.value = true
  47. }
  48. defineExpose({ open }) // 提供 open 方法,用于打开弹窗
  49. /** 提交表单 */
  50. const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
  51. const submitForm = async () => {
  52. // 提交请求
  53. formLoading.value = true
  54. try {
  55. const data = unref(formData)
  56. await TradeOrderApi.adjustAddress(data)
  57. message.success(t('common.updateSuccess'))
  58. dialogVisible.value = false
  59. // 发送操作成功的事件
  60. emit('success', true)
  61. } finally {
  62. formLoading.value = false
  63. }
  64. }
  65. /** 重置表单 */
  66. const resetForm = () => {
  67. formData.value = {
  68. id: 0, // 订单编号
  69. receiverName: '', // 收件人名称
  70. receiverMobile: '', // 收件人手机
  71. receiverAreaId: null, //收件人地区编号
  72. receiverDetailAddress: '' //收件人详细地址
  73. }
  74. formRef.value?.resetFields()
  75. }
  76. </script>