exportForm.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <template>
  2. <div class="">
  3. <el-dialog
  4. v-model="show"
  5. class="custom-export-indent-quote-dialog"
  6. title="导出"
  7. width="500px"
  8. :close-on-click-modal="false"
  9. :close-on-press-escape="false"
  10. :append-to-body="true"
  11. :before-close="close"
  12. >
  13. <el-form
  14. label-width="120px"
  15. :model="form"
  16. >
  17. <el-form-item label="Saleperson">
  18. <el-select
  19. v-model="form.saleperson"
  20. filterable
  21. >
  22. <el-option
  23. v-for="item in creatorOptions"
  24. :key="item.value"
  25. :label="item.label"
  26. :value="item.value"
  27. ></el-option>
  28. </el-select>
  29. </el-form-item>
  30. <el-form-item label="Export PDF City">
  31. <el-select
  32. v-model="form.pdf_city"
  33. filterable
  34. allow-create
  35. >
  36. <el-option
  37. v-for="item in cityList"
  38. :key="item"
  39. :label="item"
  40. :value="item"
  41. ></el-option>
  42. </el-select>
  43. </el-form-item>
  44. <el-form-item
  45. v-for="item in step3FormList"
  46. :key="item.tabLabel"
  47. :label="item.tabLabel"
  48. >
  49. <div class="flex items-center">
  50. <el-input v-model="form[`zdy_date_${item.typeNumber}_${item.number}`]"></el-input>
  51. &nbsp;
  52. <el-select v-model="form[`cycle_name_${item.typeNumber}_${item.number}`]">
  53. <el-option value="weeks">weeks</el-option>
  54. <el-option value="business days">business days</el-option>
  55. </el-select>
  56. </div>
  57. </el-form-item>
  58. <el-form-item label="Exchange">
  59. <el-input v-model="form.exchange"></el-input>
  60. </el-form-item>
  61. <el-form-item label="报价有效期">
  62. <el-input v-model="form.days">
  63. <template #append>Days</template>
  64. </el-input>
  65. </el-form-item>
  66. <el-form-item label="NOTES">
  67. <el-input
  68. v-model="form.notes"
  69. :rows="4"
  70. type="textarea"
  71. ></el-input>
  72. </el-form-item>
  73. <el-form-item label="备注">
  74. <el-input
  75. v-model="form.other_notes"
  76. :rows="4"
  77. type="textarea"
  78. ></el-input>
  79. </el-form-item>
  80. <el-form-item label="商品及服务税">
  81. <el-select v-model="form.gst_name">
  82. <el-option value=""></el-option>
  83. <el-option value="+GST">+GST</el-option>
  84. </el-select>
  85. </el-form-item>
  86. </el-form>
  87. <div class="flex justify-center items-center">
  88. <el-button
  89. size="small"
  90. type="primary"
  91. @click="save"
  92. >
  93. 确定
  94. </el-button>
  95. </div>
  96. </el-dialog>
  97. </div>
  98. </template>
  99. <script lang="ts" setup>
  100. import { defineComponent, ref, watch } from 'vue'
  101. import { ElButton, ElForm, ElFormItem, ElInput, ElSelect, ElDialog, ElOption } from 'element-plus'
  102. import cloneDeep from 'lodash.clonedeep'
  103. defineComponent({
  104. name: 'ComponentIndentExportForm',
  105. })
  106. const {
  107. visible = false,
  108. formData = {} as any,
  109. creatorOptions = [],
  110. step3FormList = [],
  111. cityList = [],
  112. } = defineProps<{
  113. visible: boolean
  114. formData: object
  115. creatorOptions: any[]
  116. step3FormList: any[]
  117. cityList?: any[]
  118. }>()
  119. const $emit = defineEmits(['update:visible', 'save'])
  120. const show = ref(false)
  121. const form = ref({} as any)
  122. watch(
  123. () => visible,
  124. () => {
  125. show.value = visible
  126. if (show.value) {
  127. form.value = cloneDeep(formData)
  128. }
  129. },
  130. )
  131. const save = () => {
  132. $emit('save', form.value)
  133. close()
  134. }
  135. const close = (done = {} as any) => {
  136. $emit('update:visible', false)
  137. if (typeof done === 'function') done()
  138. }
  139. </script>
  140. <style lang="scss">
  141. .custom-export-indent-quote-dialog {
  142. .el-dialog__body {
  143. min-height: 60vh;
  144. max-height: 80vh;
  145. overflow-y: scroll;
  146. overflow-x: auto;
  147. padding-top: 8px;
  148. padding-bottom: 8px;
  149. }
  150. }
  151. </style>