deliveryModal.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <BasicModal
  3. v-bind="$attrs"
  4. @register="register"
  5. title="发货登记"
  6. @cancel="resetFields"
  7. :confirmLoading="loading"
  8. @ok="handleSubmit"
  9. >
  10. <div class="pt-2px pr-3px">
  11. <BasicForm @register="registerForm">
  12. <template #text="{ model, field }">
  13. {{ model[field] }}
  14. </template>
  15. </BasicForm>
  16. <div v-show="fileFlow.tips" style="padding-left: 120px">请确保取回后再做登记。</div>
  17. </div>
  18. </BasicModal>
  19. </template>
  20. <script lang="ts">
  21. import { defineComponent, onMounted, reactive, ref } from 'vue';
  22. import { BasicModal, useModalInner } from '/@/components/Modal';
  23. import { BasicForm, FormSchema, useForm } from '/@/components/Form/index';
  24. import { useMessage } from '/@/hooks/web/useMessage';
  25. import { sendRegister } from '/@/api/spares';
  26. import { useI18n } from '/@/hooks/web/useI18n';
  27. import { uploadApi } from '/@/api/product/index';
  28. const { t } = useI18n();
  29. export default defineComponent({
  30. components: { BasicModal, BasicForm },
  31. props: {
  32. userData: { type: Object },
  33. },
  34. emits: ['update', 'register'],
  35. setup(props, { emit }) {
  36. const fileFlow = reactive({
  37. file: null,
  38. type: 2, //2-普通发票,3-专用发票
  39. tips: false,
  40. });
  41. const loading = ref(false);
  42. const { createMessage } = useMessage();
  43. const schemas: FormSchema[] = [
  44. {
  45. field: 'repairId',
  46. slot: 'text',
  47. component: 'Input',
  48. label: '维修单号',
  49. },
  50. {
  51. field: 'deviceInfo',
  52. component: 'Input',
  53. label: '设备信息',
  54. slot: 'text',
  55. colProps: {
  56. span: 18,
  57. },
  58. },
  59. {
  60. field: 'getType',
  61. component: 'RadioGroup',
  62. label: '取回方式',
  63. defaultValue: 1,
  64. componentProps: {
  65. placeholder: '请填写姓名',
  66. options: [
  67. { label: '前台取回', value: 0 },
  68. { label: '快递寄回', value: 1 },
  69. ],
  70. onChange: (e) => {
  71. fileFlow.tips = e.target.value != 1;
  72. updateSchema({
  73. field: 'trackingNum',
  74. ifShow: e.target.value == 1,
  75. });
  76. },
  77. },
  78. },
  79. {
  80. field: 'trackingNum',
  81. component: 'Input',
  82. label: '快递单号',
  83. required: true,
  84. colProps: {
  85. span: 18,
  86. },
  87. },
  88. ];
  89. const [registerForm, { validate, resetFields, setFieldsValue, updateSchema }] = useForm({
  90. labelWidth: 120,
  91. schemas: schemas,
  92. showActionButtonGroup: false,
  93. actionColOptions: {
  94. span: 24,
  95. },
  96. });
  97. onMounted(() => {});
  98. let addListFunc = () => {};
  99. const [register, { closeModal }] = useModalInner((data) => {
  100. data && onDataReceive(data);
  101. });
  102. function onDataReceive(data) {
  103. resetFields();
  104. updateSchema({
  105. field: 'trackingNum',
  106. ifShow: true,
  107. });
  108. setFieldsValue({
  109. ...data,
  110. getType: 1,
  111. deviceInfo: t(`routes.scene.tableType.${data.cameraType}`) + data.cameraSnCode,
  112. });
  113. }
  114. const handleSubmit = async () => {
  115. loading.value = true;
  116. try {
  117. const params = await validate();
  118. await sendRegister(params);
  119. closeModal();
  120. resetFields();
  121. createMessage.success(t('common.optSuccess'));
  122. emit('update');
  123. loading.value = false;
  124. } catch (error) {
  125. loading.value = false;
  126. console.log('not passing', error);
  127. }
  128. };
  129. return {
  130. register,
  131. registerForm,
  132. fileFlow,
  133. handleSubmit,
  134. addListFunc,
  135. resetFields,
  136. loading,
  137. t,
  138. };
  139. },
  140. });
  141. </script>