order-specified-discount.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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="90px"
  13. ref="formRef"
  14. :initKeys="form"
  15. ></SimpleForm>
  16. <template #footer>
  17. <el-button @click="handleCancel">关闭</el-button>
  18. <el-button type="primary" @click="handleSumbit">确定</el-button>
  19. </template>
  20. </ele-modal>
  21. </template>
  22. <script setup>
  23. import { ref, reactive, nextTick } from 'vue';
  24. import { Flag, ChatDotSquare } from '@element-plus/icons-vue';
  25. import orderTimeline from '@/views/recycleOrder/components/order-timeline.vue';
  26. import SimpleForm from '@/components/CommonPage/SimpleForm.vue';
  27. import validators from '@/utils/validators';
  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 = reactive({
  38. discount: '0.01'
  39. });
  40. /** 弹窗打开事件 */
  41. const handleOpen = () => {
  42. visible.value = true;
  43. nextTick(() => {
  44. formRef.value?.assignFields(form);
  45. });
  46. };
  47. const items = reactive([
  48. {
  49. label: '回收折扣',
  50. prop: 'discount',
  51. type: 'input',
  52. required: true,
  53. itemProps: {
  54. rules: [validators.decimalRange]
  55. }
  56. }
  57. ]);
  58. const formRef = ref();
  59. const handleSumbit = () => {
  60. formRef.value?.submitForm().then((data) => {
  61. visible.value = false;
  62. });
  63. };
  64. defineExpose({
  65. handleOpen
  66. });
  67. </script>