|
@@ -1,47 +1,70 @@
|
|
|
<script setup lang="ts">
|
|
|
import { ref } from "vue";
|
|
|
+import { ElForm, FormRules } from "element-plus";
|
|
|
import TicketForm from "./ticket-form.vue";
|
|
|
import OrderRecordDetail from "/@/components/OrderRecordDetail";
|
|
|
+import { httpAdd } from "/@/api/purchase/ticketReturn";
|
|
|
+import { useRouter } from "vue-router";
|
|
|
+import { useResponseHandle } from "/@/hooks";
|
|
|
import PaymentTable from "./payment-table.vue";
|
|
|
+import { inv_type } from "./../../config/configs";
|
|
|
|
|
|
const ticketFormRef = ref<InstanceType<typeof TicketForm>>(null);
|
|
|
const paymentTableRef = ref<InstanceType<typeof PaymentTable>>(null);
|
|
|
+const formRef = ref<InstanceType<typeof ElForm>>(null);
|
|
|
+const responseHandle = useResponseHandle();
|
|
|
+const { push } = useRouter();
|
|
|
|
|
|
const formData = ref({
|
|
|
payNo: "",
|
|
|
- arr: []
|
|
|
+ invArr: []
|
|
|
});
|
|
|
|
|
|
+const rules: FormRules = {
|
|
|
+ payNo: {
|
|
|
+ trigger: "change",
|
|
|
+ required: true,
|
|
|
+ message: "请选择订单"
|
|
|
+ },
|
|
|
+ invArr: {
|
|
|
+ required: true,
|
|
|
+ message: "请上传发票",
|
|
|
+ validator(_, value: Array<any>) {
|
|
|
+ return value.length !== 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
function handleTicketChange(ticketInfo) {
|
|
|
Array.isArray(ticketInfo)
|
|
|
- ? (formData.value.arr = [...formData.value.arr, ...ticketInfo])
|
|
|
- : formData.value.arr.push(ticketInfo);
|
|
|
+ ? (formData.value.invArr = [...formData.value.invArr, ...ticketInfo])
|
|
|
+ : formData.value.invArr.push(ticketInfo);
|
|
|
}
|
|
|
|
|
|
function handleDelete({ $index }) {
|
|
|
- formData.value.arr.splice($index, 1);
|
|
|
+ formData.value.invArr.splice($index, 1);
|
|
|
}
|
|
|
|
|
|
function handleSave() {
|
|
|
- console.log(formData.value);
|
|
|
+ formRef.value.validate(async isValid => {
|
|
|
+ if (!isValid) return;
|
|
|
+
|
|
|
+ const { code, message } = await httpAdd(formData.value);
|
|
|
+
|
|
|
+ responseHandle({
|
|
|
+ code,
|
|
|
+ message,
|
|
|
+ handler: () => push("/purchase/ticketReturn")
|
|
|
+ });
|
|
|
+ });
|
|
|
}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
<h1 text-xl font-bold mb-5>新建采购回票申请</h1>
|
|
|
|
|
|
- <el-form :model="formData" label-width="100px">
|
|
|
- <el-form-item
|
|
|
- prop="payNo"
|
|
|
- label="订单对账"
|
|
|
- :rules="[
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: '请选择一个订单',
|
|
|
- trigger: 'change'
|
|
|
- }
|
|
|
- ]"
|
|
|
- >
|
|
|
+ <el-form :model="formData" label-width="100px" ref="formRef" :rules="rules">
|
|
|
+ <el-form-item prop="payNo" label="订单对账">
|
|
|
<div flex w-full justify-end>
|
|
|
<el-button
|
|
|
type="primary"
|
|
@@ -61,13 +84,23 @@ function handleSave() {
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item label="发票">
|
|
|
+ <el-form-item label="发票" prop="invArr">
|
|
|
<div flex w-full justify-end mb-5>
|
|
|
<el-button type="primary" link @click="() => ticketFormRef.onDisplay()"
|
|
|
>添加</el-button
|
|
|
>
|
|
|
</div>
|
|
|
- <el-table size="small" :data="formData.arr" border>
|
|
|
+ <el-table size="small" :data="formData.invArr" border>
|
|
|
+ <el-table-column type="index" width="50" />
|
|
|
+
|
|
|
+ <el-table-column label="上传方式" prop="invType" show-overflow-tooltip>
|
|
|
+ <template #="{ row }">
|
|
|
+ <el-tag>{{
|
|
|
+ inv_type.find(t => t.value === row.invType)?.label
|
|
|
+ }}</el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+
|
|
|
<el-table-column
|
|
|
label="发票号码"
|
|
|
prop="invNumber"
|
|
@@ -90,7 +123,12 @@ function handleSave() {
|
|
|
/>
|
|
|
<el-table-column label="发票图片" prop="inv_img" show-overflow-tooltip>
|
|
|
<template #="{ row }">
|
|
|
- <el-image :src="row.inv_img" style="height: 30px" />
|
|
|
+ <el-image
|
|
|
+ :src="row.inv_img"
|
|
|
+ :preview-src-list="[row.inv_img]"
|
|
|
+ style="height: 30px"
|
|
|
+ preview-teleported
|
|
|
+ />
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
<el-table-column label="税前金额" prop="subtotal_amount" />
|
|
@@ -101,7 +139,7 @@ function handleSave() {
|
|
|
show-overflow-tooltip
|
|
|
/>
|
|
|
|
|
|
- <el-table-column label="操作">
|
|
|
+ <el-table-column label="操作" width="60px">
|
|
|
<template #="scope">
|
|
|
<el-button link type="primary" @click="() => handleDelete(scope)"
|
|
|
>删除</el-button
|