|
@@ -1,13 +1,13 @@
|
|
|
<script setup lang="ts">
|
|
|
import { computed, ref, watch } from "vue";
|
|
|
import { dayjs, ElForm, ElInput, ElMessage, UploadProps } from "element-plus";
|
|
|
-import { ticketFormItems } from "../config/_details";
|
|
|
-import { invoceRules, invoceRules_Electronics } from "../config/_rules";
|
|
|
import { useResponseHandle } from "/@/hooks/core/useAsync";
|
|
|
import { httpImageUpload, baseUrl } from "/@/api/other";
|
|
|
import { useUserStore } from "/@/store/modules/user";
|
|
|
-import { inv_type_list } from "/@/utils/status";
|
|
|
+import { ticketFormItems } from "../config/_details";
|
|
|
import { INPUT_MAX_LENGTH } from "/@/utils/global";
|
|
|
+import { inv_type_list } from "/@/utils/status";
|
|
|
+import { invoceRules } from "../config/_rules";
|
|
|
|
|
|
const emit = defineEmits(["change"]);
|
|
|
|
|
@@ -23,21 +23,14 @@ const rules = ref({ ...invoceRules });
|
|
|
const formRef = ref<InstanceType<typeof ElForm>>(null);
|
|
|
const showScanInput = computed(() => invType.value === "1");
|
|
|
const scanInputValue = ref("");
|
|
|
-
|
|
|
const formData = ref<Record<string, string>>({
|
|
|
currentValue: ""
|
|
|
});
|
|
|
|
|
|
const userStore = useUserStore();
|
|
|
const responseHandle = useResponseHandle();
|
|
|
-
|
|
|
-const formItems = computed(() => {
|
|
|
- if (is_Electronics.value) {
|
|
|
- return ticketFormItems["electronics"] || [];
|
|
|
- }
|
|
|
-
|
|
|
- return ticketFormItems[invType.value] || [];
|
|
|
-});
|
|
|
+const electronicsHiddens = ["invCode", "checkNumber"];
|
|
|
+const formItems = computed(() => ticketFormItems[invType.value] || []);
|
|
|
|
|
|
//图片上传前判断类型大小尺寸
|
|
|
const onBeforeReturnImageUpload: UploadProps["beforeUpload"] = ({
|
|
@@ -101,11 +94,8 @@ function handleScanKeydown(evt: KeyboardEvent) {
|
|
|
let [_, invoiceType, ...chunks] = scanInputValue.value.split(",");
|
|
|
const [invCode, invNumber, subtotal_amount, open_time, checkNumber] = chunks;
|
|
|
|
|
|
- const allInvState = ["01", "04", "20", "10"];
|
|
|
- const is_Electronics = !allInvState.includes(invoiceType);
|
|
|
-
|
|
|
- rules.value = is_Electronics ? invoceRules_Electronics : invoceRules;
|
|
|
- invoiceType = is_Electronics ? "electronics" : invoiceType;
|
|
|
+ // rules.value = is_Electronics ? invoceRules_Electronics : invoceRules;
|
|
|
+ // invoiceType = is_Electronics ? "electronics" : invoiceType;
|
|
|
|
|
|
let _open_time = "";
|
|
|
if (open_time) {
|
|
@@ -166,11 +156,9 @@ watch(
|
|
|
newVal => {
|
|
|
const newFormData: Record<string, string> = {};
|
|
|
newFormData.payNo = formData.value.payNo;
|
|
|
-
|
|
|
newVal.forEach(item => {
|
|
|
if (item.prop !== "payNo") newFormData[item.prop] = "";
|
|
|
});
|
|
|
-
|
|
|
formData.value = newFormData;
|
|
|
}
|
|
|
);
|
|
@@ -182,6 +170,8 @@ const disabledDate = time => {
|
|
|
defineExpose({
|
|
|
onDisplay: () => (visible.value = true)
|
|
|
});
|
|
|
+
|
|
|
+electronicsHiddens;
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
@@ -211,63 +201,72 @@ defineExpose({
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
|
|
|
- <el-form-item
|
|
|
- v-for="(item, index) in formItems"
|
|
|
- :label="item.label"
|
|
|
- :prop="item.prop"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <template v-if="item.prop === 'invoiceType'">
|
|
|
- <el-select
|
|
|
- v-model="formData[item.prop]"
|
|
|
- placeholder="请选择发票类型"
|
|
|
- w-750px
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="(type, index) in inv_type_list"
|
|
|
- :label="type.label"
|
|
|
- :value="type.hwy_value"
|
|
|
- :key="index"
|
|
|
- />
|
|
|
-
|
|
|
- <el-option label="电子发票(增值税专用发票)" value="31" />
|
|
|
- <el-option label="电子发票(增值税普通发票)" value="32" />
|
|
|
- </el-select>
|
|
|
- </template>
|
|
|
-
|
|
|
- <template v-else-if="item.prop === 'inv_img'">
|
|
|
- <div w-full>
|
|
|
- <el-upload
|
|
|
- class="upload-demo"
|
|
|
- v-model:file-list="fileList"
|
|
|
- :before-upload="onBeforeReturnImageUpload"
|
|
|
- :before-remove="handleRemove"
|
|
|
- :http-request="handleRequeset"
|
|
|
- multiple
|
|
|
- >
|
|
|
- <el-button type="primary">上传图片</el-button>
|
|
|
- </el-upload>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
-
|
|
|
- <template v-else-if="item.prop === 'open_time'">
|
|
|
- <el-date-picker
|
|
|
- v-model="formData[item.prop]"
|
|
|
- :disabled-date="disabledDate"
|
|
|
- value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
- placeholder="请输入开票日期"
|
|
|
- />
|
|
|
- </template>
|
|
|
-
|
|
|
- <template v-else>
|
|
|
- <el-input v-model="formData[item.prop]" v-bind="INPUT_MAX_LENGTH" />
|
|
|
- </template>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item class="justify-end flex w-full">
|
|
|
- <el-button type="primary" :loading="loading" @click="handleSave"
|
|
|
- >保存</el-button
|
|
|
+ <template v-for="(item, index) in formItems" :key="index">
|
|
|
+ <el-form-item
|
|
|
+ v-if="
|
|
|
+ !is_Electronics ||
|
|
|
+ (is_Electronics && !electronicsHiddens.includes(item.prop))
|
|
|
+ "
|
|
|
+ :label="
|
|
|
+ is_Electronics && item.prop === 'subtotal_amount'
|
|
|
+ ? '税后金额'
|
|
|
+ : item.label
|
|
|
+ "
|
|
|
+ :prop="item.prop"
|
|
|
>
|
|
|
+ <template v-if="item.prop === 'invoiceType'">
|
|
|
+ <el-select
|
|
|
+ v-model="formData[item.prop]"
|
|
|
+ placeholder="请选择发票类型"
|
|
|
+ w-750px
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="(type, index) in inv_type_list"
|
|
|
+ :label="type.label"
|
|
|
+ :value="type.hwy_value"
|
|
|
+ :key="index"
|
|
|
+ />
|
|
|
+ <el-option label="电子发票(增值税专用发票)" value="31" />
|
|
|
+ <el-option label="电子发票(增值税普通发票)" value="32" />
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-else-if="item.prop === 'inv_img'">
|
|
|
+ <div w-full>
|
|
|
+ <el-upload
|
|
|
+ class="upload-demo"
|
|
|
+ v-model:file-list="fileList"
|
|
|
+ :before-upload="onBeforeReturnImageUpload"
|
|
|
+ :before-remove="handleRemove"
|
|
|
+ :http-request="handleRequeset"
|
|
|
+ multiple
|
|
|
+ >
|
|
|
+ <el-button type="primary">上传图片</el-button>
|
|
|
+ </el-upload>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-else-if="item.prop === 'open_time'">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData[item.prop]"
|
|
|
+ :disabled-date="disabledDate"
|
|
|
+ value-format="YYYY-MM-DD HH:mm:ss"
|
|
|
+ placeholder="请输入开票日期"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <template v-else>
|
|
|
+ <el-input v-model="formData[item.prop]" v-bind="INPUT_MAX_LENGTH" />
|
|
|
+ </template>
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <el-form-item>
|
|
|
+ <div class="justify-end flex w-full">
|
|
|
+ <el-button type="primary" :loading="loading" @click="handleSave"
|
|
|
+ >保存</el-button
|
|
|
+ >
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</el-dialog>
|