Kaynağa Gözat

feat:开发票申请,上传发票校验修改

snow 1 yıl önce
ebeveyn
işleme
64fa7c4c77

+ 11 - 6
src/assets/js/statusList.js

@@ -15,12 +15,17 @@ export const demandStatusOptions = [
 ]
 
 export const invoiceTypeList = [
-  { value:'1', label:'增值税普通发票',scanValue: '04' },
-  { value:'2', label:'增值税专用发票',scanValue: '01' },
-  { value:'3', label:'增值税电子普通发票', scanValue: '10' },
-  { value:'4', label:'增值税电子专用发票', scanValue:' 20' },
-  { value:'5', label:'电子发票(增值税普通发票)',scanValue: '32' },
-  { value:'6', label:'电子发票(增值税专用发票)',scanValue: '31' },
+  { value:'1', label:'增值税普通发票',sV: '04', isNormal: true},
+  { value:'2', label:'增值税专用发票',sV: '01', isNormal: false},
+  { value:'3', label:'增值税电子普通发票', sV: '10', isNormal: true },
+  { value:'4', label:'增值税电子专用发票', sV:' 20', isNormal: false },
+  { value:'5', label:'电子发票(增值税普通发票)',sV: '32', isNormal: true},
+  { value:'6', label:'电子发票(增值税专用发票)',sV: '31', sNormal: false },
+]
+
+export const openInvoiceTypeList = [
+  { value: '1', label: "普通发票" },
+  { value: '2', label: '专用发票' }
 ]
 
 export const budgetStatusOptions = [

+ 1 - 0
src/components/addr-add-edit-modal/index.vue

@@ -77,6 +77,7 @@ import {
   hasSpace,
   isAddr,
 } from "@/utils/validate";
+
 import { province_list, city_list, county_list } from "@/assets/js/area-data";
 import asyncRequest from "@/apis/components/addr-add-edit-modal";
 export default {

+ 38 - 10
src/components/approval-node/src/uploadInvoice/index.vue

@@ -6,37 +6,59 @@
     </div>
     <el-table size="mini" style="margin-top:10px" border :data="tableData" max-height="400px">
       <el-table-column label="序号" :type="'index'" width="45px"></el-table-column>
+      
       <el-table-column label="发票类型" :prop="mapFields.invoiceType">
         <template slot-scope="scope">
           {{invoiceTypeList.find(({value}) => value === scope.row[mapFields.invoiceType]).label}}
         </template>
       </el-table-column>
+
       <el-table-column label="发票代码" :prop="mapFields.invoiceCode"></el-table-column>
       <el-table-column label="发票号码" :prop="mapFields.invoiceNumber"></el-table-column>
       <el-table-column label="开票日期" :prop="'open_date'"></el-table-column>
       <el-table-column label="税前金额" :prop="'subtotal_amount'"></el-table-column>
       <el-table-column label="税后金额" :prop="'total_amount'"></el-table-column>
-      <el-table-column label="校验码" :prop="'check_code'"></el-table-column> 
+      
+      <el-table-column label="校验码" :prop="'check_code'">
+        <template #header>
+          <span>校验码</span>
+          <el-button 
+            style="margin-left: 10px"
+            size="mini" 
+            type="text"
+            @click="manuallyVisible = true"
+          >添加</el-button>
+        </template>
+      </el-table-column> 
     </el-table>
 
     <manually-upload-modal 
       :visible.sync="manuallyVisible"
       :updateItem="updateItem"
       :updateIndex="updateIndex"
+      :isNormalType="isNormalType"
       @change="handleModalChange" 
+      :loading="loading"
+    />
+
+    <excel-upload-modal 
+      :visible.sync="xlsxVisible"
+      :isNormalType="isNormalType"
+      :loading="loading"
+      @change="handleUploadChange"
     />
-    <excel-upload-modal :visible.sync="xlsxVisible" @change="handleUploadChange" />
   </div>
 </template>
 
 
 <script>
 import ManuallyUploadModal from "./manuallyUploadModal.vue"
+import asyncRequest from "@/apis/components/uploadInvoice"
+import { invoiceTypeList } from '@/assets/js/statusList'
 import ExcelUploadModal from "./xlsxUploadModal.vue"
 import { template,mapFields } from "./_template"
-import { writeFile, utils } from "xlsx";
-import { invoiceTypeList } from '@/assets/js/statusList';
-import asyncRequest from "@/apis/components/uploadInvoice"
+import { writeFile, utils } from "xlsx"
+
 /***
  * @props
  * 发票申请编号 invoiceNo
@@ -54,14 +76,17 @@ import asyncRequest from "@/apis/components/uploadInvoice"
 export default {
   props:{
     requestMethod:{
-      type:Function
+      type: Function
     },
     invType:{
-      type:String,
-      default:'1'
+      type: String,
+      default: '1'
     },
     code:{
-      type:String
+      type: String
+    },
+    isNormalType:{
+      type: Boolean
     }
   },
   watch:{
@@ -110,7 +135,7 @@ export default {
       this.onSave()
     },
     handleModalChange({data}){
-      this.list.push(data)
+      this.list = data
       this.onSave()
     },
     async onSave(){
@@ -118,6 +143,8 @@ export default {
       const { code } = await this.requestMethod(this.list)
       this.loading = false
       if(code !== 1) return
+      this.manuallyVisible = false
+      this.xlsxVisible = false
       this.list = []
       this.$emit("refresh")
       this.searchList()
@@ -137,6 +164,7 @@ export default {
       
       this.loading = false
       if(code !== 1) return
+
       this.tableData = data.list
     },
     onDownloadTemplate(){

+ 90 - 68
src/components/approval-node/src/uploadInvoice/manuallyUploadModal.vue

@@ -6,7 +6,7 @@
       </el-form-item>
       <el-form-item label="发票类型" :prop="mapFields.invoiceType">
         <el-select v-model="ruleForm[mapFields.invoiceType]" style="width:100%" placeholder="发票类型">
-          <el-option v-for="type in invoiceTypeList" :key="type.value" :value="type.value" :label="type.label"/>
+          <el-option v-for="type in invTypes" :key="type.value" :value="type.value" :label="type.label"/>
         </el-select>
       </el-form-item>
       <el-form-item label="发票代码" :prop="mapFields.invoiceCode" v-if="!isAllelectric">
@@ -24,6 +24,7 @@
       <el-form-item label="校验码" :prop="mapFields.checkNumber" v-if="!isAllelectric">
         <el-input v-model="ruleForm[mapFields.checkNumber]"  placeholder="校验码" />
       </el-form-item>
+
       <el-form-item label="开票日期" :prop="mapFields.openTime">
         <el-date-picker 
           v-model="ruleForm[mapFields.openTime]"  
@@ -34,7 +35,7 @@
       </el-form-item>
 
       <el-form-item style="display:flex;justify-content:flex-end">
-        <el-button type="primary" @click="onSubmit">保存</el-button>
+        <el-button type="primary" @click="onSubmit" :loading="loading">保存</el-button>
       </el-form-item>
     </el-form>
   </el-dialog>
@@ -59,33 +60,52 @@ import { invoiceTypeList } from '@/assets/js/statusList'
  * 校验码 checkNumber
 */
 
+  const {
+    invoiceCode: IC,
+    invoiceType: IT,
+    beforeTax: BT,
+    openTime: OT,
+    invoiceNumber:IN,
+    checkNumber:CC
+  } = mapFields
+
 export default {
-  props:['visible','updateItem','updateIndex'],
+  props:[
+    'visible',
+    'updateItem', 
+    'updateIndex',
+    'isNormalType',
+    'loading'
+  ],
   computed:{
+    invTypes(){
+      const INT = this.isNormalType
+      const ITS = invoiceTypeList.filter(({isNormal}) => (INT && isNormal) || (!INT && !isNormal))
+      return ITS
+    },
     isAllelectric(){
       const invoiceType = this.ruleForm[mapFields.invoiceType]
       const allelectries = ['5','6']
-      return allelectries.includes(invoiceType)
+      return allelectries.includes(String(invoiceType))
     },
     isNormalTicket(){
       const invoiceType = this.ruleForm[mapFields.invoiceType]
       const specialTickets = ['1','3']
-      return specialTickets.includes(invoiceType)
+      return specialTickets.includes(String(invoiceType))
     },
     title(){
-      const base = '发票'
-      console.log(this.updateItem)
+      const baseTitle = '发票'
       const prefix = this.updateItem ? '编辑' : '上传'
-      return `${prefix}${base}`
+      return `${prefix}${baseTitle}`
     },
     rules(){
       const isNormalTicket = this.isNormalTicket
       return {
         ...manuallyUploadRules,
-        [mapFields.checkNumber]:[{
-          ...manuallyUploadRules[mapFields.checkNumber][0],
-          //普票必填校验码
-          required:isNormalTicket
+        [CC]:[{
+          ...manuallyUploadRules[CC][0],
+          // 普票必填校验码
+          required: isNormalTicket
         }]
       }
     },
@@ -104,21 +124,22 @@ export default {
         if(!visible) return
         this.$nextTick(() => this.initData())
       },
-      immediate:true
+      immediate: true
     }
   },
   data(){
+    
     return {
-      scanValue:"",
-      invoiceTypeList,
       mapFields,
+      scanValue: "",
+      invoiceTypeList,
       ruleForm:{
-        [mapFields.invoiceType]:"",
-        [mapFields.invoiceCode]:"",
-        [mapFields.beforeTax]:"",
-        [mapFields.openTime]: "",
-        [mapFields.invoiceNumber]:"",
-        [mapFields.checkNumber]:""
+        [IT]: "",
+        [IC]: "",
+        [BT]: "",
+        [OT]: "",
+        [IN]: "",
+        [CC]: ""
       }
     }
   },
@@ -126,81 +147,82 @@ export default {
     handleClose(){
       this.innerVisible = false
       this.ruleForm = {
-        [mapFields.invoiceType]:"",
-        [mapFields.invoiceCode]:"",
-        [mapFields.beforeTax]:"",
-        [mapFields.openTime]: "",
-        [mapFields.invoiceNumber]:"",
-        [mapFields.checkNumber]:""
+        [IT]: "", [IC]: "", [BT]: "",
+        [OT]: "", [IN]: "", [CC]: ""
       }
     },
-    handleEnterParse(evt){
+
+    handleEnterParse(){
+      const _sV = this.scanValue
+
       /* 校验是否有中文逗号 **/
-      if(this.scanValue.indexOf(',') >= 0){
+      if(_sV.indexOf(',') >= 0){
         this.scanValue = ""
         this.$message.error("不能包含中文逗号")
         return
       }
       
-      const result = this.scanValue.split(",")
-      if(result.length !== 8 && result.length !== 9){
+      const chunks = _sV.split(",")
+      const correctLength = [8,9]
+      
+      if(!correctLength.includes(chunks.length)){
         this.scanValue = ""
         this.$message.error("扫码枪识别数据格式不正确,请重新扫描")
+        return
       }
 
-      /**
-       * @param iT 发票类型
-       * @param iC 发票代码
-       * @param iN 发票号
-       * @param bT 税前金额
-       * @param oT 发票日期
-       * @param cC 校验码
-       * */     
-      const [ _, iT, iC, iN, bT, oT, cC ] = result
+      const [
+         _,
+         iT, // 发票类型
+         iC, // 发票代
+         iN, // 发票号码
+         bT, // 税前金额
+         oT, // 开票日期
+         cC  // 校验码
+        ] = chunks
       let _oT = ""
       
       if(oT){
-        const year = oT.slice(0, 4);
-        const month = oT.slice(4, 6);
-        const day = oT.slice(6);
-        _oT = dayjs(`${year}-${month}-${day}`).format("YYYY-MM-DD HH:mm:ss");
+        const yyyy = oT.slice(0, 4);
+        const mm = oT.slice(4, 6);
+        const dd = oT.slice(6);
+        _oT = dayjs(`${yyyy}-${mm}-${dd}`).format("YYYY-MM-DD HH:mm:ss");
       }
 
-      // 1,01,3,4,5,6,7,8,9
-
-      const _iT = invoiceTypeList.find(({scanValue}) => scanValue === String(iT))
+      const _iT = invoiceTypeList.find(({sV}) => sV === String(iT))
 
       this.scanValue = ""
       this.ruleForm = {
-        [mapFields.beforeTax]: bT,
-        [mapFields.openTime]: _oT,
-        [mapFields.invoiceCode]: iC,
-        [mapFields.checkNumber]: cC,
-        [mapFields.invoiceNumber]: iN,
-        [mapFields.invoiceType]: _iT ? _iT.value : "",
+        [BT]: bT,
+        [IC]: iC,
+        [CC]: cC,
+        [IN]: iN,
+        [OT]: _oT,
+        [IT]: _iT ? _iT.value : "",
       }
     },
     initData(){
-      const data = this.updateItem ? JSON.parse(JSON.stringify(this.updateItem)) :{
-        [mapFields.invoiceType]:"",
-        [mapFields.invoiceCode]:"",
-        [mapFields.beforeTax]:"",
-        [mapFields.openTime]: "",
-        [mapFields.invoiceNumber]:"",
-        [mapFields.checkNumber]:""
-      }
+      const data = this.updateItem 
+      ? JSON.parse(JSON.stringify(this.updateItem)) 
+      : { [IT]: "", [IC]: "", [BT]: "", [OT]: "", [IN]: "", [CC]: "" }
+
       this.ruleForm = data
     },
     async onSubmit(){
       try{
         await this.$refs.ruleForm.validate()
-        this.$emit("change",{
-          data:this.ruleForm,
-          index:this.updateIndex
-        })
-        this.handleClose()
-        // thiis
-      }catch(err){
+        const { invoiceType } = this.ruleForm
+        
+        if(!this.invTypes.map(({value}) => value).includes(invoiceType)){
+          this.$message.warning('上传发票的发票类型与申请发票的发票类型不一致')
+          return
+        }
+        
+        this.$emit("change", { data: this.ruleForm, index: this.updateIndex })
+        // this.handleClose()
+      }
+        catch(err)
+      {
         console.log(err)
       }
     }

+ 18 - 9
src/components/approval-node/src/uploadInvoice/xlsxUploadModal.vue

@@ -9,7 +9,7 @@
   >
     <div v-if="tableData && tableData.length > 0" class="tr" style="padding: 10px 0 0 0">
       <el-button :size="'mini'" @click="() => tableData = []">取消</el-button>
-      <el-button type="primary" :size="'mini'" @click="onSubmit">提交</el-button>
+      <el-button type="primary" :size="'mini'" @click="onSubmit" :loading="loading">提交</el-button>
     </div>
     <div v-else>
       <upload-excel :on-success="onSuccess" :before-upload="beforeUpload" />
@@ -37,11 +37,10 @@ import {
   mapFields,
 } from './_template'
 import { invoiceTypeList } from '@/assets/js/statusList'
-import dayjs from 'dayjs'
 
 export default {
   mixins: [companyHelper],
-  props: ['visible'],
+  props: ['visible','loading', 'isNormalType'],
   data() {
     return {
       columns,
@@ -55,6 +54,11 @@ export default {
     }
   },
   computed: {
+    invTypes(){
+      const INT = this.isNormalType
+      const ITS = invoiceTypeList.filter(({isNormal}) => (INT && isNormal) || (!INT && !isNormal))
+      return ITS
+    },
     innerVisible: {
       get() {
         return this.visible
@@ -110,21 +114,26 @@ export default {
 
           //发票相关校验
           if(property === mapFields.invoiceType){
-            const invoiceType = invoiceTypeList.find(({label}) => label === tableItem[property])
-            
+            const ITS = invoiceTypeList.find(({label}) => label === tableItem[property])
+
             //类型校验
-            if(!invoiceType){
+            if(!ITS){
               this.$message.warning(`第 ${line} 行 : ${getColumn(property).label} 必须为 ${invoiceTypeList.map(({label}) => label).join('、')}`)
               return false
             }
 
+            //校验申请发票类型和开票是否一致
+            if(!this.invTypes.map(({value}) => String(value)).includes(String(ITS.value))){
+              this.$message.warning(`第 ${line} 行 : 上传发票的发票类型与申请发票的发票类型不一致`)
+             return
+            }
+
             //普通发票校验验证码
-            if(["1","3"].includes(invoiceType.value) && tableItem[mapFields.checkNumber] === ""){
+            if(["1","3"].includes(ITS.value) && tableItem[mapFields.checkNumber] === ""){
               this.$message.warning(`第 ${line} 行 : 发票类型为普通发票时必须上传校验码`)
               return false
             }
 
-            console.log(invoiceType.value)
           }
         }
       }
@@ -201,7 +210,7 @@ export default {
 
 
       this.$emit("change",list)
-      this.innerVisible = false
+      // this.innerVisible = false
     }
   }
 }

+ 1 - 1
src/views/customerService/invoiceApply/columns.js

@@ -89,7 +89,7 @@ const invoiceApplyColumns = [
   },
   {
     prop:'invoice_type',
-    label:'发票类型',
+    label:'发票申请类型',
     span: 8,
     _slot_:'invoice_type'
   },

+ 9 - 8
src/views/customerService/invoiceApply/components/createInvoiceApply.vue

@@ -21,12 +21,12 @@
             <digital-input
               :values="ruleForm.total_amount"
               :placeholder="'采购毛利率'"
-              :min="0"
               :position="'right'"
+              :controls="false"
               :precision="2"
               :size="'mini'"
-              :controls="false"
               :append="'元'"
+              :min="0"
               @reschange="number_change($event)"
             />
           </el-form-item>
@@ -34,7 +34,7 @@
           <el-form-item label="发票类型" prop="invoice_type">
             <el-select v-model="ruleForm.invoice_type" style="width:100%" placeholder="发票类型">
               <el-option 
-                v-for="invoice in invoiceTypeList" 
+                v-for="invoice in openInvoiceTypeList" 
                 :key="invoice.value" 
                 :value="invoice.value" 
                 :label="invoice.label"  
@@ -91,7 +91,7 @@
 import DemandModal from "./demandModal.vue"
 import { demandDetailColumns } from "./_columns"
 import demandRequest from "@/apis/service/customerService/demandOrder";
-import { demandStatusOptions, invoiceTypeList } from '@/assets/js/statusList'
+import { demandStatusOptions, invoiceTypeList, openInvoiceTypeList } from '@/assets/js/statusList'
 import asyncRequest from "@/apis/service/customerService/invoiceApply";
 
   /** 
@@ -111,6 +111,7 @@ export default {
       return {
         loading: false,
         demandStatusOptions,
+        openInvoiceTypeList,
         invoiceTypeList,
         demandInfo : null,
         invoiceInfo: null,
@@ -120,23 +121,23 @@ export default {
             {
               prop: 'title',
               label: '抬头',
-              span:24
+              span: 24
             },
             {
               prop: 'tax_no',
               label: '纳税人识别号',
-              span:24
+              span: 24
             },
             {
               prop: 'tel',
               label: '地址、电话',
-              span:24,
+              span: 24,
               _slot_: 'tel'
             },
             {
               prop: 'bank_account',
               label: '开户行及账号',
-              span:24,
+              span: 24,
               _slot_:'bank'
             }
           ],

+ 5 - 3
src/views/customerService/invoiceApply/detail.vue

@@ -63,7 +63,7 @@
 
                   <template #invoice_type>
                     <el-tag size="mini">
-                      {{(invoiceTypeList.find(({value}) => value === String(sitem.invoice_type)) || {}).label || '--'}}
+                      {{(openInvoiceTypeList.find(({value}) => value === sitem.invoice_type) || {}).label || '--'}}
                     </el-tag>
                   </template>
                 </show-data-table>
@@ -76,8 +76,9 @@
               <el-collapse-item title="发票申请管理" name="5" v-if="Number(sitem.status) === 2 || Number(sitem.status) === 3">
                 <upload-invoice-node 
                   :requestMethod="handleInvoiceUpload" 
-                  invType="1"
                   :code="sitem.invNo"
+                  invType="1"
+                  :isNormalType="String(sitem.invoice_type) === '1'"
                 />
               </el-collapse-item>
             </template>
@@ -95,7 +96,7 @@ import resToken from "@/mixins/resToken";
 import { mapGetters } from "vuex";
 
 import CreateInvoiceApply from "./components/createInvoiceApply.vue"
-import { invoiceTypeList } from '@/assets/js/statusList';
+import { invoiceTypeList, openInvoiceTypeList } from '@/assets/js/statusList';
 
 export default {
   name: "invoiceApplyDetail",
@@ -122,6 +123,7 @@ export default {
 
   data() {
     return {
+      openInvoiceTypeList,
       invoiceTypeList,
       size: "small",
       eaxmList: [],

+ 4 - 4
src/views/customerService/invoiceApply/index.vue

@@ -150,7 +150,7 @@
                 <el-select
                   style="width:100%"
                   :size="searchSize"
-                  v-model="parmValue.invoiceType"
+                  v-model="parmValue.invoice_type"
                   clearable
                   placeholder="发票类型"
                   @change="
@@ -213,7 +213,7 @@ import { mapGetters } from "vuex";
  createEnd //创建结束时间
  customer_id //需求企业
  invoiceNumber //发票号码
- invoiceType //发票类型
+ invoice_type //发票类型
  invNo //发票申请编号
  reqCode //需求订单编号
  status //申请状态
@@ -247,7 +247,7 @@ export default {
         createEnd:"", //创建结束时间
         customer_id:"", //需求企业
         invoiceNumber:"", //发票号码
-        invoiceType:"", //发票类型
+        invoice_type:"", //发票类型
         invNo:"", //发票申请编号
         reqCode:"", //需求订单编号
         status:"", //申请状态
@@ -328,7 +328,7 @@ export default {
         createEnd:"", //创建结束时间
         customer_id:"", //需求企业
         invoiceNumber:"", //发票号码
-        invoiceType:"", //发票类型
+        invoice_type:"", //发票类型
         invNo:"", //发票申请编号
         reqCode:"", //需求订单编号
         status:"", //申请状态

+ 13 - 7
src/views/login/index.vue

@@ -18,7 +18,8 @@
 
         <el-form-item prop="username">
           <span class="svg-container">
-            <i class="el-icon-user" />
+            <!-- <i class="el-icon-user" /> -->
+            <i class="el-icon-mobile-phone" />
           </span>
           <el-input
             ref="username"
@@ -136,11 +137,15 @@ export default {
   mixins: [resToken],
   data() {
     const validateUsername = (rule, value, callback) => {
-      if (value === "") {
-        callback(new Error("用户名不能为空!"));
-      } else {
-        callback();
-      }
+     if (value === "") {
+          callback(new Error("手机号不能为空!"));
+        } else {
+          if (!isMobile(value)) {
+            callback(new Error("手机号格式不正确!"));
+          } else {
+            callback();
+          }
+       }
     };
     const validatePassword = (rule, value, callback) => {
       if (value === "") {
@@ -184,7 +189,7 @@ export default {
         code: "",
       },
       loginRules: {
-        username: [{ required: true, trigger: "blur", validator: validateUsername }],
+        // username: [{ required: true, trigger: "blur", validator: validateUsername }],
         password: [{ required: true, trigger: "blur", validator: validatePassword }],
         code: [{ required: true, trigger: "blur", validator: validateCode }],
       },
@@ -560,6 +565,7 @@ $light_gray: #f2f2f2;
 
 .el-icon-key,
 .el-icon-user,
+.el-icon-mobile-phone,
 .el-icon-unlock {
   color: #087af5 !important;
   font-weight: 700;

+ 7 - 1
src/views/platformService/settlement/columns.js

@@ -78,6 +78,12 @@ const editColumns = [
     _slot_:'pz',
     span:8
   },
+  {
+    label:'发票申请类型',
+    prop:'invoice_type',
+    _slot_:'invoice_type',
+    span:8,
+  },
   {
     label:'收款银行账号',
     _slot_:'bank',
@@ -86,7 +92,7 @@ const editColumns = [
   {
     label:'收款银行账号',
     _slot_:'bank_account',
-    span:16
+    span:8
   }
 ]
 

+ 7 - 3
src/views/platformService/settlement/components/waitSupplierUpload.vue

@@ -5,7 +5,7 @@
           <el-form-item label="发票类型" prop="invoice_type">
             <el-select v-model="ruleForm.invoice_type" style="width:100%" placeholder="发票类型">
               <el-option 
-                v-for="invoice in invoiceTypeList" 
+                v-for="invoice in openInvoiceTypeList" 
                 :key="invoice.value" 
                 :value="invoice.value" 
                 :label="invoice.label"  
@@ -13,7 +13,6 @@
             </el-select>
           </el-form-item>
 
-
           <el-form-item label="备注" prop="remark">
             <el-input placeholder="备注" v-model="ruleForm.remark" style="width:100%" type="textarea" />
           </el-form-item>
@@ -54,7 +53,11 @@
 </template>
 
 <script>
-import { demandStatusOptions, invoiceTypeList } from '@/assets/js/statusList'
+import {
+  demandStatusOptions, 
+  invoiceTypeList, 
+  openInvoiceTypeList 
+} from '@/assets/js/statusList'
 
 /** 
     @props
@@ -73,6 +76,7 @@ export default {
         loading: false,
         demandStatusOptions,
         invoiceTypeList,
+        openInvoiceTypeList,
         demandInfo : null,
         invoiceInfo: null,
         demandVisible:false,

+ 33 - 6
src/views/platformService/settlement/detail.vue

@@ -24,6 +24,12 @@
                    </div>
                 </template>
 
+                <template #invoice_type>
+                  <el-tag size="mini">
+                    {{(openInvoiceTypeList.find(({value}) => value === sitem.invoice_type) || {}).label || '--'}}
+                  </el-tag>
+                </template>
+
 
                 <template #invoice_title>
                     <div style="display:flex;height:23px">
@@ -74,6 +80,7 @@
             </el-collapse-item>
 
             <el-collapse-item 
+              name="2"
               v-loading="Statusloading"
               v-if="Number(sitem.status) === 1" 
               :title="'待供应商上传凭证'" 
@@ -83,17 +90,34 @@
               />
             </el-collapse-item>
 
-            <el-collapse-item title="待平台审核付款凭证" name="3" v-if="Number(sitem.status) === 2" v-loading="Statusloading">
-              <normal-node   @confirm="handlePlatformPay" />
+            <el-collapse-item 
+              name="3" 
+              title="待平台审核付款凭证" 
+              v-loading="Statusloading"
+              v-if="Number(sitem.status) === 2" 
+            >
+              <normal-node @confirm="handlePlatformPay" />
             </el-collapse-item>
 
-            <el-collapse-item title="待供应商上传发票要求" name="4" v-if="Number(sitem.status) === 4" v-loading="Statusloading">
-              <wait-supplier-upload  @confirm="handleUploadInvoiceReq" />
+            <el-collapse-item 
+              name="4" 
+              title="待供应商上传发票要求" 
+              v-loading="Statusloading"
+              v-if="Number(sitem.status) === 4"
+            >
+              <wait-supplier-upload 
+                @confirm="handleUploadInvoiceReq" 
+              />
             </el-collapse-item>
 
-            <el-collapse-item title="发票管理" name="5" v-if="Number(sitem.status) === 5">
+            <el-collapse-item 
+              name="5" 
+              title="发票管理"
+              v-if="Number(sitem.status) === 5"
+            >
               <upload-invoice-node 
                 :requestMethod="handleUploadInvoce"
+                :isNormalType="String(sitem.invoice_type) === '1'"
                 :code="sitem.settle_code"
                 :invType="2"
               />
@@ -111,11 +135,13 @@ import WaitSupplierUpload from "./components/waitSupplierUpload.vue"
 import resToken from "@/mixins/resToken";
 import { mapGetters } from "vuex";
 
+
 import {
   statusList,
   editColumns,
-  demandOrderColumns
+  demandOrderColumns,
 } from "./columns";
+import { openInvoiceTypeList } from '@/assets/js/statusList';
 
 export default {
   components: {
@@ -144,6 +170,7 @@ export default {
       size: "small",
       eaxmList: [],
       editColumns,
+      openInvoiceTypeList,
       demandOrderColumns,
       statusList,
       projectTabs: "1",