invoice-table.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <script setup lang="ts">
  2. import { ref, unref } from "vue";
  3. import { invTypeOptions } from "../config/_opitons";
  4. import InvoceForm from "./invoice-form.vue";
  5. const emit = defineEmits(["change"]);
  6. const invArr = ref<string[]>([]);
  7. const invoceFormRef = ref<InstanceType<typeof InvoceForm>>(null);
  8. function handleChange(data) {
  9. invArr.value = [...invArr.value, ...(Array.isArray(data) ? data : [data])];
  10. emit("change", unref(invArr));
  11. }
  12. function handleDelete({ $index }) {
  13. invArr.value.splice($index, 1);
  14. emit("change", unref(invArr));
  15. }
  16. </script>
  17. <template>
  18. <div flex w-full justify-end mb-5>
  19. <el-button type="primary" link @click="() => invoceFormRef.onDisplay()"
  20. >添加</el-button
  21. >
  22. </div>
  23. <el-table size="small" :data="invArr" border>
  24. <el-table-column type="index" width="50" />
  25. <el-table-column label="发票上传方式" prop="invType" show-overflow-tooltip>
  26. <template #="{ row }">
  27. <el-tag>{{
  28. invTypeOptions.find(t => t.value === row.invType)?.label
  29. }}</el-tag>
  30. </template>
  31. </el-table-column>
  32. <el-table-column label="发票号码" prop="invNumber" show-overflow-tooltip />
  33. <el-table-column label="发票代码" prop="invCode" show-overflow-tooltip />
  34. <el-table-column label="校验码" prop="checkNumber" show-overflow-tooltip />
  35. <el-table-column label="发票名称" prop="invName" show-overflow-tooltip />
  36. <el-table-column label="发票图片" prop="inv_img" show-overflow-tooltip>
  37. <template #="{ row }">
  38. <el-image
  39. :src="row.inv_img"
  40. :preview-src-list="[row.inv_img]"
  41. style="height: 30px"
  42. preview-teleported
  43. />
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="税前金额" prop="subtotal_amount" />
  47. <el-table-column label="开票日期" prop="open_time" show-overflow-tooltip />
  48. <el-table-column label="操作" width="60px">
  49. <template #="scope">
  50. <el-button link type="primary" @click="() => handleDelete(scope)"
  51. >删除</el-button
  52. >
  53. </template>
  54. </el-table-column>
  55. </el-table>
  56. <InvoceForm ref="invoceFormRef" @change="handleChange" />
  57. </template>