Prechádzať zdrojové kódy

Merge branch 'main'

xiaodai2017 1 rok pred
rodič
commit
cd823d9759

+ 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 {

+ 40 - 33
src/components/approval-node/src/uploadInvoice/index.vue

@@ -4,60 +4,61 @@
       <el-button size="mini" @click="onDownloadTemplate">下载发票模板</el-button>
       <el-button size="mini" type="primary" @click="xlsxVisible = true">上传发票信息</el-button>
     </div>
-    <el-table size="mini" style="margin-top:10px" border :data="tableData" height="400px">
+    <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="invoiceNo"></el-table-column> -->
-      <!-- <el-table-column label="发票状态" :prop="mapFields/invoiceStatus']"></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="操作">
+      
+      <el-table-column label="校验码" :prop="'check_code'">
         <template #header>
-          <div style="display:flex;justify-content:space-between;">
-            <span>操作</span>
-            <el-button size="mini" type="text" @click="onCreateItem">添加</el-button>
-          </div>
+          <span>校验码</span>
+          <el-button 
+            style="margin-left: 10px"
+            size="mini" 
+            type="text"
+            @click="manuallyVisible = true"
+          >添加</el-button>
         </template>
-
-        <template slot-scope="scope">
-          <el-button @click="deleteItem(scope.$index)" size="mini" type="text">删除</el-button>
-          <el-button @click="onUpdateItem(scope.$index)" size="mini" type="text">编辑</el-button>
-        </template>
-      </el-table-column> -->
+      </el-table-column> 
     </el-table>
 
-    <!-- <div style="display:flex;justify-content:flex-end;padding:10px 0px">
-      <el-button size="mini" type="primary" @click="onSave">
-        保存
-      </el-button>
-    </div> -->
-
     <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
@@ -75,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:{
@@ -106,10 +110,10 @@ export default {
       manuallyVisible: false,
       xlsxVisible: false,
       loading: false,
-      list: [],
       updateIndex: -1,
       updateItem:null,
-      tableData:[]
+      tableData:[],
+      list: []
     }
   },
   methods:{
@@ -131,7 +135,7 @@ export default {
       this.onSave()
     },
     handleModalChange({data}){
-      this.list.push(data)
+      this.list = data
       this.onSave()
     },
     async onSave(){
@@ -139,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()
@@ -158,12 +164,13 @@ export default {
       
       this.loading = false
       if(code !== 1) return
+
       this.tableData = data.list
     },
     onDownloadTemplate(){
       const workBook = utils.book_new()
       const workSheet = utils.json_to_sheet(template)
-      utils.book_append_sheet(workBook,workSheet,"sheet")
+      utils.book_append_sheet(workBook,workSheet, "sheet")
       writeFile(workBook,"开票模板.xlsx",{
         bookType:'xlsx'
       })

+ 93 - 66
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,76 +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
       }
+
+      const [
+         _,
+         iT, // 发票类型
+         iC, // 发票代码
+         iN, // 发票号码
+         bT, // 税前金额
+         oT, // 开票日期
+         cC  // 校验码
+        ] = chunks
+      let _oT = ""
       
-      const [_1,invoiceType,invCode,invNumber,subtotal_amount,open_time,checkNumber] = result
-      let _open_time = ""
-      
-      if(open_time){
-        const year = open_time.slice(0, 4);
-        const month = open_time.slice(4, 6);
-        const day = open_time.slice(6);
-        _open_time = dayjs(`${year}-${month}-${day}`).format("YYYY-MM-DD HH:mm:ss");
+      if(oT){
+        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 invoice = invoiceTypeList.find(({scanValue}) => scanValue === String(invoiceType))
-      
+      const _iT = invoiceTypeList.find(({sV}) => sV === String(iT))
 
-      console.log(invoice)
       this.scanValue = ""
-      // const { invoice } = mapPropertys
       this.ruleForm = {
-        [mapFields.invoiceType]:invoice ? invoice.value : "",
-        [mapFields.invoiceCode]:invCode,
-        [mapFields.beforeTax]:subtotal_amount,
-        [mapFields.openTime]: _open_time,
-        [mapFields.invoiceNumber]:invNumber,
-        [mapFields.checkNumber]:checkNumber
+        [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
     }
   }
 }

+ 3 - 3
src/layout/components/Navbar.vue

@@ -37,15 +37,15 @@
             </div>
           </template>
 
-          <template v-if="userInfo.nickname && userInfo.nickname.length > 3">
+          <template v-if="userInfo.username && userInfo.username.length > 3">
             <el-tooltip
               class="item"
               effect="dark"
-              :content="userInfo.nickname"
+              :content="userInfo.username"
               placement="left-start"
             >
               <div class="username">
-                {{ getUserName(userInfo.nickname) }}
+                {{ getUserName(userInfo.username) }}
                 <i class="el-icon-caret-bottom" />
               </div>
             </el-tooltip>

+ 56 - 27
src/views/customerService/demandOrder/detail.vue

@@ -8,15 +8,23 @@
              <demand-detail :sitem="sitem" @refresh="refresh" @switchNode="handleSwitchNode" />
            </el-collapse-item>
 
-           <el-collapse-item :title="Number(sitem.status) > 1 ? '评估预算函' :'评估预算函管理'" name="2" v-if="Number(sitem.status) >= 1">
-             <manage-budgeet-letter
+           <el-collapse-item 
+            name="2" 
+            v-if="Number(sitem.status) >= 1"
+            :title="Number(sitem.status) > 1 ? '评估预算函' :'评估预算函管理'" 
+          >
+             <manage-budget-letter
               :sitem="sitem" 
               :readonly="Number(sitem.status) > 1"
-              @selectedChange="handleSelectedChange($event,'budget')" 
+              @selectedChange="handleSelectedChange($event, 'budget')" 
             />
            </el-collapse-item> 
 
-           <el-collapse-item :title="Number(sitem.status) > 2  ? '活动方案' :'活动方案管理'" name="3" v-if="Number(sitem.status) >= 2">
+           <el-collapse-item 
+            name="3" 
+            v-if="Number(sitem.status) >= 2"
+            :title="Number(sitem.status) > 2  ? '活动方案' :'活动方案管理'"
+            >
              <manage-activity-scheme 
               :sitem="sitem" 
               :readonly="Number(sitem.status) > 2"
@@ -24,11 +32,14 @@
             />
            </el-collapse-item> 
            
-           <el-collapse-item :title="Number(sitem.status) > 3 ? '计划预算函' : '计划预算函管理'" name="10" v-if="Number(sitem.status) >= 3">
+           <el-collapse-item 
+            v-if="Number(sitem.status) >= 3"
+            :title="Number(sitem.status) > 3 ? '计划预算函' : '计划预算函管理'" name="10" 
+            >
              <manage-project-letter
               :sitem="sitem" 
               :readonly="Number(sitem.status) > 3"
-              @selectedChange="handleSelectedChange($event,'project')" 
+              @selectedChange="handleSelectedChange($event, 'project')" 
             />
            </el-collapse-item> 
            
@@ -40,12 +51,18 @@
             >
               <credentials-node
                 :readonly="Number(sitem.status) !== 4 && Number(sitem.status) !== 8"
-                :url="sitem.ReqProof ? sitem.ReqProof.filter(({user_type}) => user_type === 1).map(({proof_url}) => proof_url) : ''"
+                :url="sitem.ReqProof 
+                  ? sitem.ReqProof.filter(({user_type}) => user_type === 1).map(({proof_url}) => proof_url) 
+                  : ''"
                 @confirm="handleCustomerConfirm($event)" 
               />
            </el-collapse-item>
 
-           <el-collapse-item title="待平台审核执行凭证" name="5" v-if="Number(sitem.status) === 5">
+           <el-collapse-item
+            v-if="Number(sitem.status) === 5"
+            title="待平台审核执行凭证" 
+            name="5" 
+          >
              <wait-execute-certificate :sitem="sitem" @refresh="initData" />
            </el-collapse-item>
            
@@ -58,15 +75,19 @@
            </el-collapse-item>
            
           <el-collapse-item 
-            :title="Number(sitem.status) >= 9 && Number(sitem.status) !== 11 ? '结算函' : '待客户上传结算函'"
-             v-if="Number(sitem.status) >= 9"
-             name="8" 
+            :title="
+              Number(sitem.status) >= 9 && Number(sitem.status) !== 11 
+              ? '结算函' 
+              : '待客户上传结算函'
+            "
+            v-if="Number(sitem.status) >= 9"
+            name="8" 
           >
              <letter 
+              status="4"
+              ref="letter"
               :id="sitem.id" 
               type="settlement" 
-              ref="letter"
-              status="4"
               :readonly="Number(sitem.status) > 9 && Number(sitem.status) !== 11"
               :requsetMethod="handleUploadLetter" 
               @publish-ok="refresh"
@@ -74,7 +95,11 @@
             />
            </el-collapse-item> 
            
-           <el-collapse-item title="待客户确认结算函" name="9" v-if="Number(sitem.status) === 10">
+           <el-collapse-item 
+            v-if="Number(sitem.status) === 10"
+            title="待客户确认结算函" 
+            name="9" 
+          >
              <normal-node @confirm="handleConfirmSettlement" />
            </el-collapse-item>
           </el-collapse>
@@ -84,10 +109,9 @@
   </div>
 </template>
 <script>
-import asyncRequest from "@/apis/service/customerService/demandOrder";
-import privateField from '@/mixins/privateField'
 import DemandDetail from "./components/demandDetail/index.vue"
-import ManageBudgeetLetter from "./components/manageBudgetLetter.vue"
+import ManageBudgetLetter from "./components/manageBudgetLetter.vue"
+import asyncRequest from "@/apis/service/customerService/demandOrder"
 import ManageProjectLetter from "./components/manageProjectLetter.vue"
 import WaitSupplierConfirm from "./components/waitSupplierConfirm.vue"
 import WaitCustomerConfirm from "./components/waitCustomerConfirm.vue"
@@ -95,41 +119,46 @@ import SettlementLetter from "./components/settlementLetter/index.vue"
 import ManageActivityScheme from "./components/manageActivityScheme.vue"
 import WaitExecuteCertificate from "./components/waitExecuteCertificate.vue"
 
-import { mapGetters } from "vuex";
-import { statusList } from "./columns";
-import resToken from "@/mixins/resToken";
+import resToken from "@/mixins/resToken"
+import { statusList } from "./columns"
+import { mapGetters } from "vuex"
 
 export default {
   components: { 
     DemandDetail, 
     SettlementLetter,
     ManageProjectLetter,
-    ManageBudgeetLetter, 
+    ManageBudgetLetter, 
     WaitSupplierConfirm, 
     WaitCustomerConfirm, 
     ManageActivityScheme, 
     WaitExecuteCertificate
   },
   name: "demandOrderDetail",
-  mixins: [resToken, privateField],
+  mixins: [resToken],
   computed: {
     ...mapGetters([
       "tablebtnSize", 
-      "searchSize",
       "private_field", 
       "isSupertube",
-      "size",
+      "searchSize",
+      "size"
     ]),
     powers() {
       const { btnList } = this.$store.getters;
-      const tran = btnList.find((item) => item.menu_route == "demandOrderDetail") || {};
+
+      const tran = btnList.find(
+        (item) => item.menu_route == "demandOrderDetail"
+      ) || {};
+      
       const { action } = tran ?? {};
       return action ?? [];
     },
     ppowers() {
       const { roleProcess } = this.$store.getters;
-      const tran = roleProcess.find((i) => i.process_type === "YJD") || {};
+      const tran = roleProcess.find(RE => RE.process_type === "YJD") || {};
       const { action } = tran ?? {};
+      
       return action ?? [];
     },
   },
@@ -177,7 +206,7 @@ export default {
       await this.initData();
       this.loading = false;
     },
-    handleSelectedChange(val,key){
+    handleSelectedChange(val, key){
       this.selected[key] = val
       console.log(val)
     },

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

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

+ 28 - 14
src/views/customerService/invoiceApply/components/createInvoiceApply.vue

@@ -3,12 +3,20 @@
       <el-row>
         <el-col :span="24">
           <el-form-item label="需求订单" prop="req_id">
-            <el-input placeholder="请选择需求订单" @focus="demandVisible = true" v-if="!demandInfo"/>
+            <el-input 
+              v-if="!demandInfo"
+              placeholder="请选择需求订单" 
+              @focus="demandVisible = true" 
+            />
+
             <div style="display:flex" v-else>
               <demand-detail :id="demandInfo.id" />
-
               <el-tooltip placement="top" content="重新选择需求订单">
-                <i class="el-icon-circle-close" style="font-size:18px;margin:0px 10px;cursor:pointer" @click="handleDemandChange(null)" />
+                <i 
+                  class="el-icon-circle-close" 
+                  style="font-size:18px;margin:0px 10px;cursor:pointer"
+                  @click="handleDemandChange(null)" 
+                />
               </el-tooltip>
             </div>
           </el-form-item>
@@ -21,12 +29,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 +42,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"  
@@ -49,7 +57,10 @@
         </el-col>
 
         <el-col :span="12">
-          <el-form-item label="发票抬头" prop="invoice_id">
+          <el-form-item 
+            label="发票抬头" 
+            prop="invoice_id"
+          >
             <search-invoice-title 
               :value.sync="ruleForm.invoice_id" 
               @change="_invoiceInfo => invoiceInfo = _invoiceInfo" 
@@ -82,8 +93,10 @@
       <el-button size="mini" type="primary" @click="onSubmit">保存</el-button>
     </div>
 
-    <demand-modal :visible.sync="demandVisible" @change="handleDemandChange" />
-    
+    <demand-modal 
+      :visible.sync="demandVisible" 
+      @change="handleDemandChange" 
+    />
   </el-form>
 </template>
 
@@ -91,7 +104,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 +124,7 @@ export default {
       return {
         loading: false,
         demandStatusOptions,
+        openInvoiceTypeList,
         invoiceTypeList,
         demandInfo : null,
         invoiceInfo: null,
@@ -120,23 +134,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'
             }
           ],

+ 62 - 26
src/views/customerService/invoiceApply/components/demandModal.vue

@@ -1,5 +1,14 @@
 <template>
-  <el-dialog :visible="visible" title="选择需求订单" center width="1024px" top="60px" @close="handleClose" :close-on-click-modal="false">
+  <el-dialog 
+    :close-on-click-modal="false"
+    :visible="visible" 
+    title="选择需求订单" 
+    width="1024px" 
+    top="60px" 
+    center
+
+    @close="handleClose" 
+  >
     <div class="demand-order">
       <ex-table
         :table="table"
@@ -25,22 +34,37 @@
         <template #table-header>
           <el-row style="width:100%">
             <el-col :span="5">
-              <el-input v-model="parmValue.reqCode" size="mini" placeholder="需求订单编号" />
+              <el-input 
+                size="mini" 
+                v-model="parmValue.reqCode" 
+                placeholder="需求订单编号" 
+              />
             </el-col>
 
-            <el-col :span="3" style="width:125px" class="fr">
-              <el-button size="mini" type="warning" @click="reset">重置</el-button>
-              <el-button size="mini" type="primary" @click="searchList">搜索</el-button>
+            <el-col :span="3" style="width: 125px" class="fr">
+              <el-button 
+                size="mini" 
+                type="warning" 
+                @click="reset"
+                >重置</el-button>
+              <el-button 
+                size="mini" 
+                type="primary"
+                @click="searchList"
+              >搜索</el-button>
             </el-col>
           </el-row>
         </template>
         
-        <template #req_demand="{scope}">{{
-          scope.row.req_demand_name.map(({name}) => name).join("+") || '--'
-          }}</template>
+        <template #req_demand="{scope}">
+          <span v-if="scope.row.req_demand_name">
+            {{scope.row.req_demand_name.
+              map(({ name }) => name).join("+") || '--'}}
+          </span>
+        </template>
 
           <template #actTime="{ scope }">
-            {{getActTime(scope.row)}} , 共{{scope.row.act_day_count}}天
+            {{getActTime(scope.row)}} , 共{{scope.row.act_dat_count}}天
           </template>
 
           <template #participant="{ scope }">
@@ -56,15 +80,23 @@
         <template #status="{ scope }">
           <el-tag
             size="mini"
-            v-text="(demandStatusOptions.find((item) => item.value == String(scope.row.status)) || {}).label || '--'
+            v-text="
+              (demandStatusOptions.find((item) => item.value == String(scope.row.status)) || {}).label || '--'
             "
           />
         </template>
       </ex-table>
 
       <div class="flex-end">
-        <el-button type="primary" size="mini" @click="onConfirmDemand">保存</el-button>
+        <el-button 
+          size="mini" 
+          type="primary" 
+          @click="onConfirmDemand"
+        >
+          保存
+        </el-button>
       </div>
+
     </div>
   </el-dialog>
 </template>
@@ -75,6 +107,7 @@ import asyncRequest from "@/apis/service/customerService/demandOrder";
 import { demandStatusOptions } from '@/assets/js/statusList'
 import { columns } from "./_columns"
 import dayjs from 'dayjs';
+
 export default {
   props:['visible'],
   mixins:[ pageInfo ],
@@ -97,25 +130,18 @@ export default {
   data(){
     return {
       demandStatusOptions,
+      loading: false,
       columns,
       size: 'mini',
       parmValue: {
         reqCode: "",
         page:1
       },
-      loading: false,
       tableData: [],
       selected: [],
       table: {},
-      pageInfo: {
-        size:10,
-        curr:1,
-        total:0
-      },
-      table: {
-        stripe: true,
-        border: true,
-      }
+      pageInfo: { size: 10, curr: 1, total: 0 },
+      table: { stripe: true, border: true }
     }
   },
   methods:{
@@ -135,7 +161,7 @@ export default {
     },
     reset(){
       this.parmValue = {
-        reqCode:""
+        reqCode: ""
       }
 
       this.searchList()
@@ -162,9 +188,19 @@ export default {
       this.loading = false;
     },
     getActTime(item){
-      const { act_time, act_day_count } = item;
-      const end_time = dayjs(act_time).subtract(Number(act_day_count) - Number(act_day_count) * 2,'day').format('MM.DD')
-      return `${dayjs(act_time).format('MM.DD')} ~ ${end_time}`
+      const { 
+        act_time, 
+        act_day_count 
+      } = item;
+      
+      const end_time = dayjs(act_time)
+        .subtract(Number(act_day_count) - Number(act_day_count) * 2, 'day')
+        .format('MM.DD')
+      
+      return `
+        ${dayjs(act_time).format('MM.DD')} ~ 
+        ${end_time}
+      `
     },
     onConfirmDemand(){
       if(this.selected.length === 0){
@@ -177,7 +213,7 @@ export default {
         return
       }
 
-      this.$emit('change',this.selected[0])
+      this.$emit('change', this.selected[0])
       this._visible = false
     }
   }

+ 22 - 9
src/views/customerService/invoiceApply/detail.vue

@@ -4,7 +4,11 @@
       <el-tabs v-model="projectTabs" v-loading="loading">
         <el-tab-pane label="开票申请详情" name="1">
           <el-collapse v-model="activeNames" style="margin: -18px 0 0 0">
-            <el-collapse-item title="创建开票申请" name="2" v-if="id === 'add'">
+            <el-collapse-item 
+              v-if="id === 'add'"
+              title="创建开票申请" 
+              name="2" 
+            >
               <create-invoice-apply />
             </el-collapse-item>
 
@@ -20,7 +24,6 @@
                   <template #company>
                     <div style="display:flex">
                       <p style="margin-right:5px">{{sitem.companyName}}</p>
-
                       <el-tooltip :content="'客户公司编号 : ' + sitem.companyNo" placement="top">
                         <i class="el-icon-warning-outline" />
                       </el-tooltip>
@@ -28,13 +31,13 @@
                   </template>
 
                   <template #title>
-                    <div style="display:flex;height:23px">
+                    <div style="display: flex;height: 23px">
                       <p style="margin-right:5px">{{sitem.invoice_title}}</p>
 
                       <el-popover placement="top" trigger="hover">
                         <show-data-table 
                           :sitem="sitem"
-                          style="padding: -5px 0 10px 0"
+                          style="padding: -5px 0px 10px 0px"
                           :columns="invoiceColumns"
                         >
                           <template #tel>
@@ -63,21 +66,30 @@
 
                   <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>
               </el-collapse-item>
 
-              <el-collapse-item title="需求订单详情" name="3">
+              <el-collapse-item title="需求订单详情" name="3" v-if="sitem && sitem.req_id">
                 <demand-detail :id="sitem.req_id" />
               </el-collapse-item>
               
-              <el-collapse-item title="发票申请管理" name="5" v-if="Number(sitem.status) === 2 || Number(sitem.status) === 3">
+              <el-collapse-item 
+                v-if="sitem && (Number(sitem.status) === 2 || Number(sitem.status) === 3)"
+                title="发票申请管理" 
+                name="5" 
+              >
                 <upload-invoice-node 
+                  :isNormalType="String(sitem.invoice_type) === '1'"
                   :requestMethod="handleInvoiceUpload" 
-                  invType="1"
                   :code="sitem.invNo"
+                  invType="1"
                 />
               </el-collapse-item>
             </template>
@@ -94,8 +106,8 @@ import asyncRequest from "@/apis/service/customerService/invoiceApply";
 import resToken from "@/mixins/resToken";
 import { mapGetters } from "vuex";
 
+import { invoiceTypeList, openInvoiceTypeList } from '@/assets/js/statusList';
 import CreateInvoiceApply from "./components/createInvoiceApply.vue"
-import { invoiceTypeList } from '@/assets/js/statusList';
 
 export default {
   name: "invoiceApplyDetail",
@@ -122,6 +134,7 @@ export default {
 
   data() {
     return {
+      openInvoiceTypeList,
       invoiceTypeList,
       size: "small",
       eaxmList: [],

+ 17 - 11
src/views/customerService/invoiceApply/index.vue

@@ -141,7 +141,11 @@
               </el-col>
 
               <div class="fr">
-                <el-button type="success" size="mini" @click="linkToCreateInvoice">添加</el-button>
+                <el-button 
+                  size="mini" 
+                  type="success" 
+                  @click="linkToCreateInvoice">
+                  添加</el-button>
               </div>
             </el-row>
 
@@ -150,15 +154,13 @@
                 <el-select
                   style="width:100%"
                   :size="searchSize"
-                  v-model="parmValue.invoiceType"
+                  v-model="parmValue.invoice_type"
                   clearable
                   placeholder="发票类型"
                   @change="
                     pageInfo.curr = 1;
                     parmValue.page = 1;
-                    searchList();
-                  "
-                >
+                    searchList();">
                   <el-option />
                 </el-select>
               </el-col>
@@ -168,8 +170,12 @@
        <template #status="{ scope }">
           <el-tag
             :size="tablebtnSize"
-            :type="(statusList.find((item) => item.id == scope.row.status) || {}).type || ''"
-            v-text="(statusList.find((item) => item.id == scope.row.status) || {}).label || '--'"
+            :type="
+              (statusList.find((item) => item.id == scope.row.status) || {}).type || ''
+            "
+            v-text="
+              (statusList.find((item) => item.id == scope.row.status) || {}).label || '--'
+            "
           ></el-tag>
        </template>
 
@@ -213,7 +219,7 @@ import { mapGetters } from "vuex";
  createEnd //创建结束时间
  customer_id //需求企业
  invoiceNumber //发票号码
- invoiceType //发票类型
+ invoice_type //发票类型
  invNo //发票申请编号
  reqCode //需求订单编号
  status //申请状态
@@ -247,7 +253,7 @@ export default {
         createEnd:"", //创建结束时间
         customer_id:"", //需求企业
         invoiceNumber:"", //发票号码
-        invoiceType:"", //发票类型
+        invoice_type:"", //发票类型
         invNo:"", //发票申请编号
         reqCode:"", //需求订单编号
         status:"", //申请状态
@@ -265,8 +271,8 @@ export default {
       // 表格 - 分页
       pageInfo: {
         size: 15,
-        curr: 1,
         total: 0,
+        curr: 1
       },
       // 表格 - 列参数
       columns: listCol,
@@ -328,7 +334,7 @@ export default {
         createEnd:"", //创建结束时间
         customer_id:"", //需求企业
         invoiceNumber:"", //发票号码
-        invoiceType:"", //发票类型
+        invoice_type:"", //发票类型
         invNo:"", //发票申请编号
         reqCode:"", //需求订单编号
         status:"", //申请状态

+ 73 - 76
src/views/customerService/workbench/index.vue

@@ -4,40 +4,39 @@
         <div class="workbench-main__search">
           <div style="width: 100%">
             <el-row>
-              <!-- <el-col :span="4" style="width: 351px;"> -->
-                <!-- <period-date-picker
-                  :start="parmValue.addtime_start"
-                  :end="parmValue.addtime_end"
-                  :width="'160px'"
-                  :size="searchSize"
-                  placeholder="创建"
-                  @timeReturned="(evt) => handleTime(evt, 'create')"
-                /> -->
-              <!-- </el-col> -->
-
                <el-col :span="4" style="padding-right:10px">
-                <el-select v-model="parmValue.status" style="width:100%" size="mini" placeholder="订单状态" @change="
-                  pageInfo.curr = 1;
-                  parmValue.page = 1;
-                  searchList();
+                <el-select 
+                  v-model="parmValue.status" 
+                  style="width:100%" 
+                  size="mini" 
+                  placeholder="订单状态" 
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
                 ">
                   <el-option v-for="status in statusOptions" 
                     :key="status.value" 
                     :value="status.value" 
                     :label="status.label"
-                   />
+                  />
                 </el-select>
               </el-col>
 
              <el-col :span="4" style="padding-right:10px">
-                <search-activity-type style="width:100%" size="mini" :value.sync="parmValue.demandProject" placeholder="活动类型" @change="
+                <search-activity-type 
+                  style="width:100%" 
+                  size="mini" 
+                  :value.sync="parmValue.demandProject" 
+                  placeholder="活动类型" 
+                  @change="
                    pageInfo.curr = 1;
                    parmValue.page = 1;
                    searchList();
-                  " />
+                  " 
+                />
               </el-col>
 
-
               <el-col :span="4">
                 <search-people-number 
                   size="mini" 
@@ -45,10 +44,11 @@
                   :value.sync="parmValue.participant" 
                   placeholder="活动人数"  
                   @change="
-                  pageInfo.curr = 1;
-                  parmValue.page = 1;
-                  searchList();
-                " />
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  " 
+                />
               </el-col>
                             
               <el-col :span="3" style="width: 66px; float: right">
@@ -74,43 +74,25 @@
             </el-row>
 
             <el-row style="margin-top:10px">
-              <!-- <el-col :span="4" style="width: 341px;">
-                <period-date-picker
-                  :start="parmValue[act_start]"
-                  :end="parmValue[act_end]"
-                  :width="'154px'"
-                  :size="searchSize"
-                  @timeReturned="evt => handleTime(evt,'activity')"
-                  placeholder="活动"
-                />
-              </el-col> -->
-
-
               <el-col :span="4" style="padding-right:10px">
-                <el-input size="mini" placeholder="需求编号" v-model="parmValue.reqCode" @change="
-                pageInfo.curr = 1;
-                parmValue.page = 1;
-                searchList();
-               "/>
+                <el-input 
+                  size="mini" 
+                  placeholder="需求编号" 
+                  v-model="parmValue.reqCode" 
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                "/>
               </el-col>
 
               <el-col :span="4" style="padding-right:10px">
                 <el-input v-model="parmValue.req_tel" size="mini" placeholder="联系电话" @change="
-                pageInfo.curr = 1;
-                parmValue.page = 1;
-                searchList();
-               "/>
-              </el-col>
-
-
-
-              <!-- <el-col :span="4">
-                <search-demand style="width:100%" size="mini" :value.sync="parmValue.activityDemand"  @change="
                   pageInfo.curr = 1;
                   parmValue.page = 1;
                   searchList();
-                " />
-              </el-col> -->
+               "/>
+              </el-col>
             </el-row>
           </div>
         </div>
@@ -125,30 +107,45 @@
               :key="item"
              
             >
-              <div  @click="wantTo(item.id)">
-              <div class="task-card__header">
-                <h3>{{item.reqCode}}</h3>
-                <h3 style="margin-left:10px">{{item.shortname}}</h3>
-              </div>
-
-              <div class="task-card__header">
-                <span>{{getActTime(item)}} , 共{{item.act_day_count}}天</span>
-              </div>
-              <div class="task-card__content text-color">
-                {{item.req_demand_name.map(({name}) => name).join("+") || '--'}}
-              </div>
-
-              <div class="task-card__content text-color">
-                <span>{{item.require_item_name}} </span> ,
-                <span v-if="Number(item.participant_max) === 0">{{item.participant_min}}+人</span>
-                <span v-else>{{item.participant_min}} ~ {{item.participant_max}}人</span>
-              </div>
-
-              <div class="task-card__content">
-                <el-tag class="status" size="mini" style="font-size:12px" :type="statusOptions.find(_item => _item.value === String(item.status)).type">
-                  {{ statusOptions.find(_item => _item.value === String(item.status)).label }}
-                </el-tag>
-              </div>
+              <div @click="wantTo(item.id)">
+                <div class="task-card__header">
+                  <h3>
+                    {{item.reqCode}}
+                  </h3>
+                  <h3 style="margin-left:10px">
+                    {{item.shortname}}
+                  </h3>
+                </div>
+
+                <div class="task-card__header">
+                  <span>{{getActTime(item)}} , 共{{item.act_day_count}}天</span>
+                </div>
+                <div class="task-card__content text-color">
+                  {{item.req_demand_name.map(({name}) => name).join("+") || '--'}}
+                </div>
+
+                <div class="task-card__content text-color">
+                  <span>{{item.require_item_name}} </span> ,
+                  
+                  <span v-if="Number(item.participant_max) === 0">
+                    {{item.participant_min}}+人
+                  </span>
+                  
+                  <span v-else>
+                    {{item.participant_min}} ~ {{item.participant_max}}人
+                  </span>
+                </div>
+
+                <div class="task-card__content">
+                  <el-tag 
+                    class="status" 
+                    size="mini" 
+                    style="font-size:12px" 
+                    :type="statusOptions.find(_item => _item.value === String(item.status)).type"
+                  >
+                    {{ statusOptions.find(_item => _item.value === String(item.status)).label }}
+                  </el-tag>
+                </div>
               </div>
             </el-col>
 

+ 27 - 13
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"
@@ -133,16 +134,20 @@ import resToken from "@/mixins/resToken";
 export default {
   name: "Login",
   components: { Identify },
-  mixins: [resToken],
+  mixins: [ resToken ],
   data() {
-    const validateUsername = (rule, value, callback) => {
-      if (value === "") {
-        callback(new Error("用户名不能为空!"));
-      } else {
-        callback();
-      }
+    const validateUsername = (_, value, callback) => {
+     if (value === "") {
+          callback(new Error("手机号不能为空!"));
+        } else {
+          if (!isMobile(value)) {
+            callback(new Error("手机号格式不正确!"));
+          } else {
+            callback();
+          }
+       }
     };
-    const validatePassword = (rule, value, callback) => {
+    const validatePassword = (_, value, callback) => {
       if (value === "") {
         callback(new Error("密码不能为空!"));
       } else {
@@ -160,7 +165,7 @@ export default {
       }
     };
 
-    const validateCode = (rule, value, callback) => {
+    const validateCode = (_, value, callback) => {
       if (value === "") {
         callback(new Error("验证码不能为空!"));
       } else {
@@ -175,11 +180,12 @@ export default {
     return {
       ver: "",
       show: false,
+
       loginTitle: urlConfig.loginTitle,
       loginBeian: urlConfig.loginBeian,
       loginBeianUrl: urlConfig.loginBeianUrl,
       loginForm: {
-        username: "admin",
+        username: "17744520493",
         password: "admin123",
         code: "",
       },
@@ -265,8 +271,8 @@ export default {
       this.$nextTick(() => {
         this.$refs.password.focus();
       });
+
     },
-    // 生成随机数
     randomNum(min, max) {
       max = max + 1;
       return Math.floor(Math.random() * (max - min) + min);
@@ -286,7 +292,14 @@ export default {
     async handleLogin() {
       try {
         await this.$refs.loginForm.validate();
-        const response = await this.$store.dispatch("user/login", this.loginForm);
+
+        const { username, password } = this.loginForm
+        
+        const response = await this.$store.dispatch("user/login", {
+          username: username,
+          password
+        });
+
         const { code } = response;
         if (Number(code) === 1) this.getMenu();
         this.loading = false;
@@ -560,6 +573,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",