Преглед изворни кода

Merge branch 'sit' of http://120.46.155.214:3000/xiaodai2022/accout-vue3-ui into sit

xiaodai2017 пре 2 година
родитељ
комит
0543ac0201

+ 13 - 2
src/components/OrderRecordDetail/src/index.vue

@@ -13,9 +13,10 @@ import {
 
 const props = defineProps<{
   payNo: string;
+  isInv: boolean;
 }>();
 
-const hiddenColumns = [
+const hiddenInvColumns = [
   "inv_status",
   "remark",
   "ainv_fee",
@@ -24,8 +25,18 @@ const hiddenColumns = [
   "inv_tag_fee"
 ];
 
+const hiddenPayColumns = [
+  "inv_status",
+  "remark",
+  "pay_fee",
+  "wpay_fee",
+  "apay_fee"
+];
+
 const columns = RECONCILIATION_COLUMNS.filter(col => {
-  return !hiddenColumns.includes(col.field);
+  return props.isInv
+    ? !hiddenPayColumns.includes(col.field)
+    : !hiddenInvColumns.includes(col.field);
 });
 
 const { data: orderRecordDetail, run: orderRecordDetailRun } = useAsync({

+ 27 - 3
src/utils/details/inv-return.ts

@@ -55,6 +55,25 @@ const OPEN_TYPE = [
   }
 ];
 
+const RED_REASON = [
+  {
+    value: "1",
+    label: "销货退回"
+  },
+  {
+    value: "2",
+    label: "开票有误"
+  },
+  {
+    value: "3",
+    label: "服务终止"
+  },
+  {
+    value: "4",
+    label: "销售折让"
+  }
+];
+
 export const INV_RETURN_COLUMNS: DescriptionColumns = [
   {
     field: "returnCode",
@@ -66,14 +85,19 @@ export const INV_RETURN_COLUMNS: DescriptionColumns = [
   },
   {
     field: "return_reason",
-    label: "退票原因"
+    label: "红冲原因",
+    render(data) {
+      return h(ElTag, null, {
+        default: () => RED_REASON.find(t => t.value === data)?.label || "--"
+      });
+    }
   },
   {
     field: "return_type",
     label: "退票方式",
     render(data) {
       return h(ElTag, null, {
-        default: () => RETURN_TYPE.find(t => t.value === data)?.label
+        default: () => RETURN_TYPE.find(t => t.value === data)?.label || "--"
       });
     }
   },
@@ -86,7 +110,7 @@ export const INV_RETURN_COLUMNS: DescriptionColumns = [
     label: "退票状态",
     render(data) {
       return h(ElTag, null, {
-        default: () => RETURN_STATUS.find(t => t.value === data)?.label
+        default: () => RETURN_STATUS.find(t => t.value === data)?.label || "--"
       });
     }
   },

+ 8 - 8
src/utils/details/reconciliation.ts

@@ -44,10 +44,10 @@ export const RECONCILIATION_COLUMNS: DescriptionColumns = [
     label: "付款中"
   },
 
-  {
-    field: "pay_tag_fee",
-    label: "付款标签金额"
-  },
+  // {
+  //   field: "pay_tag_fee",
+  //   label: "付款标签金额"
+  // },
   {
     field: "wpay_fee",
     label: "未付款"
@@ -60,10 +60,10 @@ export const RECONCILIATION_COLUMNS: DescriptionColumns = [
     field: "inv_fee",
     label: "开票中"
   },
-  {
-    field: "inv_tag_fee",
-    label: "回票标签金额"
-  },
+  // {
+  //   field: "inv_tag_fee",
+  //   label: "回票标签金额"
+  // },
   {
     field: "winv_fee",
     label: "未开票"

+ 1 - 0
src/views/InvoiceSales/capitalClaim/components/basic-claim/sales-modal.vue

@@ -67,6 +67,7 @@ const search = (isReset?: boolean) => {
 defineExpose({
   onDisplay: (_list: Array<Record<string, string>>) => {
     visible.value = true;
+    reuquestSalelist();
   }
 });
 

+ 3 - 4
src/views/InvoiceSales/invoiceApply/components/add-edit-form/add-edit-form.vue

@@ -135,12 +135,12 @@ function handleAddOrder(list) {
   ruleForm.value.remark = "";
 
   list.forEach((item, index) => {
-    const { sequenceNo, winv_fee, goodNum, poCode } = item;
+    const { sequenceNo, winv_fee, winv_num, poCode } = item;
 
     if (!mapSequenceNoToInvfee.value[sequenceNo]) {
       mapSequenceNoToInvfee.value[sequenceNo] = {
         inv_fee: winv_fee,
-        num: goodNum
+        num: winv_num
       };
       orderList.value.push(item);
       ruleForm.value.remark += index === 0 ? poCode : ";" + poCode;
@@ -321,9 +321,8 @@ watch(
                 show-overflow-tooltip
                 width="200"
               />
-
+              <el-table-column prop="winv_num" label="未开票数量" width="120" />
               <el-table-column prop="winv_fee" label="未开票" width="120" />
-              <el-table-column prop="wsendNum" label="未发数量" width="120" />
 
               <el-table-column label="开票金额" width="110">
                 <template #="{ row }">{{

+ 6 - 10
src/views/InvoiceSales/invoiceApply/components/add-edit-form/columns.tsx

@@ -77,16 +77,8 @@ export function useColumns() {
       prop: "goodNum"
     },
     {
-      label: "退货数量",
-      prop: "th_fee",
-      width: 110,
-      showOverflowTooltip: true
-    },
-    {
-      label: "退货金额",
-      prop: "th_fee",
-      width: 110,
-      showOverflowTooltip: true
+      label: "未开票数量",
+      prop: "winv_num"
     },
     {
       label: "发票已核销",
@@ -151,6 +143,10 @@ export const order_detail_columns = [
     field: "goodNum",
     label: "商品数量"
   },
+  {
+    field: "winv_num",
+    label: "未开票数量"
+  },
   {
     field: "goodPrice",
     label: "商品单价"

+ 2 - 2
src/views/InvoiceSales/invoiceApply/components/add-edit-form/edit-order.vue

@@ -21,8 +21,8 @@ function handleSave() {
 }
 
 const totalNum = computed(() => {
-  const { winv_fee, goodPrice } = data.value as any;
-  return winv_fee / goodPrice;
+  const { winv_num } = data.value as any;
+  return winv_num;
 });
 
 watchEffect(() => {

+ 9 - 3
src/views/InvoiceSales/invoiceApply/components/add-edit-form/order-dialog.vue

@@ -71,10 +71,10 @@ function handleSelectionChange(val) {
 async function onSearch() {
   loading.value = true;
   const { code, data, message } = await httpOrderList({
+    companyNo: companyNo.value,
     cat_status: "1",
-    pay_status: "0",
     inv_status: "0",
-    companyNo: companyNo.value,
+    inv_is: "1",
     ...otherParams,
     ...ruleForm.value
   });
@@ -101,12 +101,18 @@ function handleConfirm() {
   //商品数量或开票金额为空
   const noConfirm = selectList.filter(o => o.winv_fee === "0.00");
 
-  console.log(noConfirm);
+  const noInvNum = selectList.filter(o => String(o.winv_num) === "0");
+
+  console.log(noInvNum);
 
   if (noConfirm.length !== 0) {
     return ElMessage.error(`销售单 ${noConfirm[0].sequenceNo} 开票金额为零`);
   }
 
+  if (noInvNum.length !== 0) {
+    return ElMessage.error(`销售单 ${noInvNum[0].sequenceNo} 开票数量为零`);
+  }
+
   emit("save-btn-click", selectList);
   showModel.value = false;
 }

+ 5 - 5
src/views/InvoiceSales/returnTicket/components/approval-process/approval-pending.vue

@@ -7,8 +7,8 @@ const emit = defineEmits(["changeStatus"]);
 const formData = reactive({
   return_type: "",
   return_reason: "",
-  status: "",
-  remark: ""
+  exam_remark: "",
+  status: ""
 });
 
 const rules = reactive({
@@ -72,7 +72,7 @@ const handlePaymentReceipt = () => {
     </el-form-item>
 
     <el-form-item label="红冲原因">
-      <el-select>
+      <el-select w-300px v-model="formData.return_reason">
         <el-option label="销货退回" value="1" />
         <el-option label="开票有误" value="2" />
         <el-option label="服务终止" value="3" />
@@ -80,8 +80,8 @@ const handlePaymentReceipt = () => {
       </el-select>
     </el-form-item>
 
-    <el-form-item label="备注" prop="remark" w-400px>
-      <el-input type="textarea" v-model="formData.remark" />
+    <el-form-item label="备注" prop="exam_remark" w-400px>
+      <el-input type="textarea" v-model="formData.exam_remark" />
     </el-form-item>
 
     <el-form-item w-full flex justify-end>

+ 4 - 2
src/views/InvoiceSales/returnTicket/components/create-return-ticket/capital-modal.vue

@@ -3,13 +3,15 @@ import { onMounted, reactive, ref, unref } from "vue";
 import { ElTable } from "element-plus";
 import { useResponseHandle } from "/@/hooks";
 import { httpList } from "/@/api/InvoiceSales/invoiceApply";
-import { inv_columns } from "./../../config/configs";
+import { inv_columns } from "../../config/configs";
+
 const paymentList = ref<Array<Record<string, string>>>([]);
 const selectOrder = ref<Array<Record<string, string>>>([]);
+
+const loading = ref(false);
 const visible = ref(false);
 
 const emit = defineEmits(["on-add-order"]);
-const loading = ref(false);
 const tableRef = ref<InstanceType<typeof ElTable>>(null);
 const responseHandle = useResponseHandle();
 

+ 9 - 5
src/views/InvoiceSales/returnTicket/components/create-return-ticket/index.vue

@@ -60,7 +60,6 @@ function handleCreate() {
   formRef.value.validate(async isValid => {
     if (!isValid) return;
 
-
     const { code, message } = await httpAdd(formData);
     responseHandle({
       code,
@@ -102,12 +101,17 @@ function handleCreate() {
 
     <Invoice mt-5 v-if="invNumber" :inv-number="invNumber" type="sale" />
 
-    <el-form-item label="退票原因" prop="return_reason" w-480px>
-      <el-input v-model="formData.return_reason" placeholder="请输入退票原因" />
+    <el-form-item label="红冲原因" prop="return_reason" w-480px>
+      <el-select w-300px v-model="formData.return_reason">
+        <el-option label="销货退回" value="1" />
+        <el-option label="开票有误" value="2" />
+        <el-option label="服务终止" value="3" />
+        <el-option label="销售折让" value="4" />
+      </el-select>
     </el-form-item>
 
-    <el-form-item label="备注" prop="remark" w-480px>
-      <el-input v-model="formData.remark" placeholder="请输入备注" />
+    <el-form-item label="发票备注" prop="remark" w-480px>
+      <el-input v-model="formData.remark" placeholder="请输入发票备注" />
     </el-form-item>
 
     <div flex w-full justify-end>

+ 0 - 7
src/views/InvoiceSales/returnTicket/config/search.config.ts

@@ -1,6 +1,5 @@
 import { RETURN_STATUS } from "/@/utils/details/inv-return";
 import { FormConfig } from "/@/components/PageSearch";
-import { INV_TYPE } from "/@/utils/details/inv-open";
 
 const searchFormConfig: FormConfig = {
   formItems: [
@@ -25,12 +24,6 @@ const searchFormConfig: FormConfig = {
       placeholder: "退票状态",
       options: RETURN_STATUS
     },
-    // {
-    //   field: "inv_type",
-    //   type: "select",
-    //   placeholder: "发票类型",
-    //   options: INV_TYPE
-    // },
     {
       field: "timer",
       type: "date_picker",

+ 1 - 1
src/views/InvoiceSales/returnTicket/index.vue

@@ -5,9 +5,9 @@ import { PageContent } from "/@/components/PageContent";
 import searchFormConfig from "./config/search.config";
 import modalConfig from "./config/modal.config";
 import contentConfig from "./config/content.config";
-import { useRouter } from "vue-router";
 import PagePower from "/@/components/PagePower/PagePower.vue";
 import { usePermission } from "/@/hooks";
+import { useRouter } from "vue-router";
 import dayjs from "dayjs";
 
 defineOptions({

+ 120 - 1
src/views/purchase/ticketReturn/components/create-ticket/index.vue

@@ -1,8 +1,127 @@
 <script setup lang="ts">
+import { ref } from "vue";
 import TicketForm from "./ticket-form.vue";
+import OrderRecordDetail from "/@/components/OrderRecordDetail";
+import PaymentTable from "./payment-table.vue";
+
+const ticketFormRef = ref<InstanceType<typeof TicketForm>>(null);
+const paymentTableRef = ref<InstanceType<typeof PaymentTable>>(null);
+
+const formData = ref({
+  payNo: "",
+  arr: []
+});
+
+function handleTicketChange(ticketInfo) {
+  Array.isArray(ticketInfo)
+    ? (formData.value.arr = [...formData.value.arr, ...ticketInfo])
+    : formData.value.arr.push(ticketInfo);
+}
+
+function handleDelete({ $index }) {
+  formData.value.arr.splice($index, 1);
+}
+
+function handleSave() {
+  console.log(formData.value);
+}
 </script>
 
 <template>
   <h1 text-xl font-bold mb-5>新建采购回票申请</h1>
-  <TicketForm />
+
+  <el-form :model="formData" label-width="100px">
+    <el-form-item
+      prop="payNo"
+      label="订单对账"
+      :rules="[
+        {
+          required: true,
+          message: '请选择一个订单',
+          trigger: 'change'
+        }
+      ]"
+    >
+      <div flex w-full justify-end>
+        <el-button
+          type="primary"
+          link
+          @click="() => paymentTableRef && paymentTableRef.onDisplay()"
+          >选择</el-button
+        >
+      </div>
+
+      <div w-full mt-5>
+        <OrderRecordDetail
+          is-inv
+          :pay-no="formData.payNo"
+          ref="orderRecordDetailRef"
+          v-if="formData.payNo"
+        />
+      </div>
+    </el-form-item>
+
+    <el-form-item label="发票">
+      <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-column
+          label="发票号码"
+          prop="invNumber"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="发票代码"
+          prop="invCode"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="校验码"
+          prop="checkNumber"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="发票名称"
+          prop="invName"
+          show-overflow-tooltip
+        />
+        <el-table-column label="发票图片" prop="inv_img" show-overflow-tooltip>
+          <template #="{ row }">
+            <el-image :src="row.inv_img" style="height: 30px" />
+          </template>
+        </el-table-column>
+        <el-table-column label="税前金额" prop="subtotal_amount" />
+
+        <el-table-column
+          label="开票日期"
+          prop="open_time"
+          show-overflow-tooltip
+        />
+
+        <el-table-column label="操作">
+          <template #="scope">
+            <el-button link type="primary" @click="() => handleDelete(scope)"
+              >删除</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-form-item>
+
+    <el-form-item>
+      <div flex w-full justify-end>
+        <el-button type="primary" @click="handleSave">保存</el-button>
+      </div>
+    </el-form-item>
+  </el-form>
+
+  <TicketForm ref="ticketFormRef" @change="handleTicketChange" />
+
+  <PaymentTable
+    ref="paymentTableRef"
+    @add-btn-click="({ payNo }) => (formData.payNo = payNo)"
+  />
 </template>

+ 121 - 120
src/views/purchase/ticketReturn/components/create-ticket/ticket-form.vue

@@ -2,22 +2,21 @@
 import { dayjs, ElForm, ElInput, ElMessage, UploadProps } from "element-plus";
 import { ticketFormItems, ticketAddRules } from "../../config/configs";
 import { computed, ref, watch } from "vue";
-import { httpAdd } from "/@/api/purchase/ticketReturn";
-import PaymentTable from "./payment-table.vue";
+// import { httpAdd } from "/@/api/purchase/ticketReturn";
 import { useResponseHandle } from "/@/hooks";
-import OrderRecordDetail from "/@/components/OrderRecordDetail";
 import { httpImageUpload, baseUrl } from "/@/api/other";
 import { useUserStore } from "/@/store/modules/user";
 import { inv_type_list } from "/@/utils/status";
 import { INPUT_MAX_LENGTH } from "/@/utils/global";
-import { useRouter } from "vue-router";
+
+const emit = defineEmits(["change"]);
 
 const visible = ref(false);
+const fileList = ref([]);
 
 //支持的图片格式
 const types = ["png", "jpg", "bmp", "jpeg"].map(format => "image/" + format);
-const paymentTableRef = ref<InstanceType<typeof PaymentTable>>(null);
-const { push } = useRouter();
+const imgs = ref([]);
 const invType = ref("");
 const loading = ref(false);
 const formData = ref<Record<string, string>>({
@@ -48,25 +47,35 @@ const onBeforeReturnImageUpload: UploadProps["beforeUpload"] = ({
   }
 };
 
+function handleClose() {
+  imgs.value = [];
+  fileList.value = [];
+  formData.value = {};
+}
+
 //保存采购回票
 function handleSave() {
   formRef.value.validate(async isValid => {
     if (!isValid) return;
     if (!invType.value) return ElMessage.error("请选择申请类型");
-    loading.value = true;
-
-    const { code, message } = await httpAdd({
-      invType: invType.value,
-      ...formData.value
-    });
 
-    responseHandle({
-      code,
-      message,
-      handler: () => push("/purchase/ticketReturn")
-    });
+    if (invType.value === "2") {
+      if (!imgs.value.length) return ElMessage.error("请选择上传的图片");
+      if (imgs.value.length > 100)
+        return ElMessage.error("上传图片不能超过100张");
+    }
 
-    loading.value = false;
+    emit(
+      "change",
+      invType.value === "2"
+        ? imgs.value
+        : {
+            ...formData.value,
+            invType: invType.value
+          }
+    );
+
+    visible.value = false;
   });
 }
 
@@ -111,13 +120,25 @@ const handleRequeset: UploadProps["httpRequest"] = async ({ file }) => {
     message,
     code,
     handler: () => {
-      const { url, name } = data[0];
-      formData.value.inv_img = baseUrl + "/" + url;
-      formData.value.invName = name;
+      data.forEach(({ url, name }) => {
+        imgs.value.push({
+          inv_img: baseUrl + "/" + url,
+          invName: name,
+          invType: "2"
+        });
+      });
     }
   });
 };
 
+const handleRemove = uploadFile => {
+  const delIndex = fileList.value.findIndex(
+    ({ uid }) => uid === uploadFile.uid
+  );
+  imgs.value.splice(delIndex, 1);
+  return true;
+};
+
 watch(
   () => formItems.value,
   newVal => {
@@ -144,111 +165,91 @@ defineExpose({
 </script>
 
 <template>
-  <el-form
-    label-width="100px"
-    :model="formData"
-    :rules="rules"
-    ref="formRef"
-    size="small"
-  >
-    <el-form-item label="订单对账" prop="payNo">
-      <div flex w-full justify-end>
-        <el-button
-          type="primary"
-          link
-          @click="() => paymentTableRef && paymentTableRef.onDisplay()"
-          >选择</el-button
-        >
-      </div>
-
-      <div w-full mt-5>
-        <OrderRecordDetail
-          :pay-no="formData.payNo"
-          ref="orderRecordDetailRef"
-          v-if="formData.payNo"
-        />
-      </div>
-    </el-form-item>
-
-    <el-form-item label="申请类型">
-      <el-select v-model="invType">
-        <el-option label="手工添加" value="1" />
-        <el-option label="ocr识别" value="2" />
-      </el-select>
-    </el-form-item>
-
-    <!-- 扫码枪识别 -->
-    <el-form-item label="扫码枪" v-if="showScanInput">
-      <el-input
-        type="textarea"
-        placeholder="请在扫码完成后手动回车"
-        @keydown="handleScanKeydown"
-        v-model="scanInputValue"
-        v-bind="INPUT_MAX_LENGTH"
-      />
-    </el-form-item>
-
-    <el-form-item
-      v-for="(item, index) in formItems"
-      :label="item.label"
-      :prop="item.prop"
-      :key="index"
+  <el-dialog v-model="visible" @close="handleClose">
+    <el-form
+      label-width="100px"
+      :model="formData"
+      :rules="rules"
+      ref="formRef"
+      size="small"
     >
-      <template v-if="item.prop === 'invName'">
-        <el-select v-model="formData[item.prop]" placeholder="请选择发票名称">
-          <el-option
-            v-for="(type, index) in inv_type_list"
-            :label="type.label"
-            :value="type.hwy_value"
-            :key="index"
-          />
+      <el-form-item label="申请方式">
+        <el-select v-model="invType">
+          <el-option label="手工添加" value="1" />
+          <el-option label="ocr识别" value="2" />
         </el-select>
-      </template>
-
-      <template v-else-if="item.prop === 'inv_img'">
-        <div>
-          <el-upload
-            class="upload"
-            :before-upload="onBeforeReturnImageUpload"
-            :http-request="handleRequeset"
-            :show-file-list="false"
-          >
-            <img
-              class="avatar"
-              :src="formData[item.prop]"
-              v-if="formData[item.prop]"
-            />
-            <div class="text" v-else>点击上传</div>
-          </el-upload>
-          <span>大小:小于1M; 尺寸:100*100; 类型:jpg.png.bmp.jpeg</span>
-        </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="请输入开票日期"
+      </el-form-item>
+
+      <!-- 扫码枪识别 -->
+      <el-form-item label="扫码枪" v-if="showScanInput">
+        <el-input
+          type="textarea"
+          placeholder="请在扫码完成后手动回车"
+          @keydown="handleScanKeydown"
+          v-model="scanInputValue"
+          v-bind="INPUT_MAX_LENGTH"
         />
-      </template>
-
-      <template v-else>
-        <el-input v-model="formData[item.prop]" v-bind="INPUT_MAX_LENGTH" />
-      </template>
-    </el-form-item>
+      </el-form-item>
 
-    <el-form-item justify-end flex w-full>
-      <el-button type="primary" :loading="loading" @click="handleSave"
-        >保存</el-button
+      <el-form-item
+        v-for="(item, index) in formItems"
+        :label="item.label"
+        :prop="item.prop"
+        :key="index"
       >
-    </el-form-item>
+        <template v-if="item.prop === 'invName'">
+          <el-select v-model="formData[item.prop]" placeholder="请选择发票名称">
+            <el-option
+              v-for="(type, index) in inv_type_list"
+              :label="type.label"
+              :value="type.hwy_value"
+              :key="index"
+            />
+          </el-select>
+        </template>
+
+        <template v-else-if="item.prop === 'inv_img'">
+          <!-- list-type="picture" -->
+          <div>
+            <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>
+              <template #tip>
+                <!-- <div class="el-upload__tip">
+                  jpg/png files with a size less than 500kb
+                </div> -->
+              </template>
+            </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>
 
-    <PaymentTable
-      ref="paymentTableRef"
-      @add-btn-click="({ payNo }) => (formData.payNo = payNo)"
-    />
-  </el-form>
+        <template v-else>
+          <el-input v-model="formData[item.prop]" v-bind="INPUT_MAX_LENGTH" />
+        </template>
+      </el-form-item>
+
+      <el-form-item justify-end flex w-full>
+        <el-button type="primary" :loading="loading" @click="handleSave"
+          >保存</el-button
+        >
+      </el-form-item>
+    </el-form>
+  </el-dialog>
 </template>
 
 <style lang="scss" scoped>

+ 2 - 9
src/views/purchase/ticketReturn/config/configs.ts

@@ -58,7 +58,7 @@ export const purchase_columns = [
 
 export const ticket_columns = [
   {
-    label: "发票申请类型",
+    label: "发票申请方式",
     prop: "invType",
     width: 180
   },
@@ -134,7 +134,7 @@ export const ticketAddRules: FormRules = {
   invType: [
     {
       trigger: "blur",
-      message: "请选择申请类型",
+      message: "请选择申请方式",
       required: true
     }
   ],
@@ -166,13 +166,6 @@ export const ticketAddRules: FormRules = {
       required: true
     }
   ],
-  inv_img: [
-    {
-      trigger: "blur",
-      message: "请上传开票图片",
-      required: true
-    }
-  ],
   invName: [
     {
       trigger: "blur",