modify-product-price.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <!-- 修改销售价格弹窗 -->
  2. <template>
  3. <ele-modal
  4. form
  5. :width="460"
  6. v-model="visible"
  7. title="修改销售价格"
  8. @open="handleOpen"
  9. >
  10. <SimpleForm
  11. :items="items"
  12. labelWidth="100px"
  13. ref="formRef"
  14. :initKeys="form"
  15. ></SimpleForm>
  16. <template #footer>
  17. <el-button @click="handleCancel">关闭</el-button>
  18. <el-button type="primary" @click="handleSubmit">确定</el-button>
  19. </template>
  20. </ele-modal>
  21. </template>
  22. <script setup>
  23. import { ref, reactive, nextTick } from 'vue';
  24. import SimpleForm from '@/components/CommonPage/SimpleForm.vue';
  25. import validators from '@/utils/validators';
  26. import request from '@/utils/request';
  27. import { ElMessage } from 'element-plus';
  28. /** 弹窗是否打开 */
  29. const visible = defineModel({ type: Boolean });
  30. /** 关闭弹窗 */
  31. const handleCancel = () => {
  32. visible.value = false;
  33. nextTick(() => {
  34. formRef.value?.resetForm();
  35. });
  36. };
  37. const form = ref({
  38. isbn: '',
  39. productPrice: ''
  40. });
  41. /** 弹窗打开事件 */
  42. const handleOpen = (data) => {
  43. visible.value = true;
  44. nextTick(() => {
  45. if (data?.isbn) {
  46. form.value.isbn = data.isbn;
  47. form.value.productPrice = data.productPrice || 0;
  48. formRef.value?.setData(form.value);
  49. }
  50. });
  51. };
  52. const items = reactive([
  53. {
  54. label: '销售价格',
  55. prop: 'productPrice',
  56. type: 'input',
  57. required: true,
  58. itemProps:{
  59. rules: [validators.money]
  60. }
  61. }
  62. ]);
  63. const formRef = ref();
  64. const emit = defineEmits(['refresh']);
  65. const handleSubmit = () => {
  66. formRef.value?.submitForm().then((data) => {
  67. data.isbn = form.value.isbn;
  68. request
  69. .post('/book/bookInfo/changeProductPrice', data)
  70. .then((res) => {
  71. if (res.data.code === 200) {
  72. visible.value = false;
  73. ElMessage.success('修改成功');
  74. emit('refresh', data.productPrice);
  75. } else {
  76. ElMessage.error(res.data.msg || '修改失败');
  77. }
  78. });
  79. });
  80. };
  81. defineExpose({
  82. handleOpen
  83. });
  84. </script>