Explorar el Código

feat:平台业务管理发票抬头选择

snow hace 1 año
padre
commit
e3a23ab4a1

+ 2 - 1
src/components/search/src/customer.vue

@@ -6,6 +6,7 @@
     :remote-method="onFetch"
     :placeholder="placeholder || '请选择客户公司'"
     :loading="loading"
+    :disabled="disabled"
     reserve-keyword
     filterable
     clearable
@@ -24,7 +25,7 @@
 import asyncRequest from "@/apis/components/search"
 export default {
   name:'SearchCustomer',
-  props:['size', 'value' , 'placeholder', 'prop'],
+  props:['size', 'value' , 'placeholder', 'prop', 'disabled'],
   data(){
     return {
       loading: false,

+ 2 - 1
src/components/search/src/supplier.vue

@@ -6,6 +6,7 @@
     :remote-method="onFetch"
     :placeholder="placeholder || '请选择供应商公司'"
     :loading="loading"
+    :disabled="disabled"
     reserve-keyword
     filterable
     clearable
@@ -19,7 +20,7 @@
 import asyncRequest from "@/apis/components/search"
 export default {
   name:'SearchSupplier',
-  props:['size', 'value' , 'placeholder','prop'],
+  props:['size', 'value' , 'placeholder','prop', 'disabled'],
   data(){
     return {
       loading: false,

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

@@ -14,13 +14,11 @@ const listCol = [
     label: '开票申请编号',
     width: '105px'
   },
-
   {
     prop: 'reqCode',
     label: '需求订单编号',
     width: '185px'
   },
-
   {
     prop: 'companyName',
     label: '需求公司',
@@ -31,7 +29,6 @@ const listCol = [
     label: '申请金额',
     width: '120px'
   },
-
   {
     prop: 'invoice_type',
     label: '开票申请发票类型',
@@ -68,8 +65,8 @@ const listCol = [
   {
     prop: '',
     label: '操作',
-    fixed: 'right',
     _noset_: true,
+    fixed: 'right',
     _slot_: 'operation',
     width: 80
   }

+ 1 - 1
src/views/customerService/invoiceApply/components/createInvoiceApply.vue

@@ -66,7 +66,6 @@
               placeholder="请选择发票抬头" 
               @focus="titleVisible = true" 
             />
-          </el-form-item>
 
           <div style="display:flex;margin-bottom:10px"  v-if="invoiceInfo">
             <show-data-table 
@@ -92,6 +91,7 @@
                 />
               </el-tooltip>
           </div>
+          </el-form-item>
         </el-col>
       </el-row>
 

+ 9 - 5
src/views/customerService/invoiceApply/index.vue

@@ -10,20 +10,20 @@
         @page-curr-change="handlePageChange"
         @page-size-change="handlePageChange"
         @screen-reset="
-          pageInfo.curr = 1;
           parmValue.page = 1;
+          pageInfo.curr = 1;
           searchList();
         "
         @screen-submit="
-          pageInfo.curr = 1;
           parmValue.page = 1;
+          pageInfo.curr = 1;
           searchList();
         "
      >
-       <template #table-header="{}">
+       <template #table-header="{ }">
           <div style="width: 100%">
             <el-row style="padding: 0 0 0 80px">
-              <el-col :span="4" style="width: 301px; padding: 0 0 0px 0px">
+              <el-col :span="4" style="width: 301px; padding: 0px 0px 0px 0px">
                 <period-date-picker
                   :start="parmValue.createStart"
                   :end="parmValue.createEnd"
@@ -62,7 +62,11 @@
                   v-model="parmValue.customer_id"
                   clearable
                   placeholder="需求企业"
-                  @change="pageInfo.curr = 1;parmValue.page = 1;searchList();"
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
                 >
                   <el-option />
                 </el-select> -->

+ 7 - 5
src/views/customerService/invoiceApproval/index.vue

@@ -184,14 +184,16 @@
           <el-tag
             :size="tablebtnSize"
             :type="
-              (statusList.find((item) => item.id == scope.row.status) || {})
-                .type || ''
+              (statusList.find(
+                (item) => item.id == scope.row.status) || {}
+              ).type || ''
             "
             v-text="
-              (statusList.find((item) => item.id == scope.row.status) || {})
-                .label || '--'
+              (statusList.find(
+                (item) => item.id == scope.row.status) || {}
+              ).label || '--'
             "
-          ></el-tag>
+          />
         </template>
 
         <template #operation="{ scope }">

+ 9 - 9
src/views/operate/invoicing/addEdit.vue

@@ -59,13 +59,17 @@
                   <search-customer 
                     prop="companyNo"
                     placeholder="客户公司" 
+                    :disabled="isDetail"
                     :value.sync="ruleForm.companyNo"
                     style="width:100%" />
                 </el-form-item>
               </el-col>
               
               <el-col :span="24">
-                <el-form-item label="统一社会信用代码" prop="tax_no" label-width="140px">
+                <el-form-item 
+                  label="统一社会信用代码" 
+                  prop="tax_no" 
+                  label-width="140px">
                   <el-input
                     placeholder="统一社会信用代码"
                     :disabled="isDetail"
@@ -109,8 +113,8 @@
                   <el-input
                     :disabled="isDetail"
                     placeholder="联系电话"
-                    maxlength="100"
                     v-model="ruleForm.tel"
+                    maxlength="100"
                   >
                     <el-select
                       v-model="schange"
@@ -281,17 +285,13 @@ export default {
       ruleForm: {},
       rulesThis: this.rules,
       rules: {
-        title_type: [{ required: true, message: "请选择抬头类型", trigger: "change" }],
         title: [{ required: true, message: "请选择发票抬头", trigger: "change" }],
         tax_no: [{ required: true, validator: validateLicense, trigger: "blur" }],
         bank_name: [{ required: true, message: "请输入开户银行名称", trigger: "blur" }],
-        bank_account: [
-          { required: true, message: "请输入开户银行账号", trigger: "blur" },
-        ],
-        companyNo:[
-          { required:true, message:'请选择客户公司', trigger:'change' }
-        ],
+        title_type: [{ required: true, message: "请选择抬头类型", trigger: "change" }],
+        bank_account: [{ required: true, message: "请输入开户银行账号", trigger: "blur" }],
         address: [{ required: true, message: "请输入纳税登记地址", trigger: "blur" }],
+        companyNo:[{ required:true, message:'请选择客户公司', trigger:'change' }],
         tel: [{ required: true, validator: validatemobile, trigger: "blur" }],
       },
     };

+ 0 - 0
src/views/operate/invoicing/开票信息管理 → src/views/operate/invoicing/客户开票信息管理


+ 4 - 2
src/views/operate/supplierInvoice/addEdit.vue

@@ -60,6 +60,7 @@
                     prop="code"
                     placeholder="供应商公司" 
                     :value.sync="ruleForm.supplierNo"
+                    :disabled="isDetail"
                     style="width:100%" />
                 </el-form-item>
               </el-col>
@@ -125,8 +126,9 @@
                         :label="item.name"
                         :value="item.code"
                       />
-                    </el-select> </el-input
-                ></el-form-item>
+                    </el-select> 
+                    </el-input>
+                  </el-form-item>
               </el-col>
             </el-row>
 

+ 49 - 31
src/views/operate/supplierInvoice/index.vue

@@ -58,12 +58,19 @@
               </el-col>
 
               <el-col :span="3" class="fr" style="width: 66px; padding: 0 0 0 10px">
-                <el-button type="primary" :size="searchSize" @click="searchList">
+                <el-button 
+                  type="primary" 
+                  :size="searchSize" 
+                  @click="searchList">
                   刷新
                 </el-button>
               </el-col>
+
               <el-col :span="3" class="fr" style="width: 66px; padding: 0 0 0 10px">
-                <el-button type="warning" :size="searchSize" @click="restSearch">
+                <el-button 
+                  type="warning" 
+                  :size="searchSize" 
+                  @click="restSearch">
                   重置
                 </el-button>
               </el-col>
@@ -99,6 +106,7 @@
                   </el-select>
                 </el-input>
               </el-col>
+
               <el-col
                 :span="3"
                 class="fr"
@@ -106,8 +114,8 @@
                 v-if="powers.some((i) => i == '002')"
               >
                 <el-button
-                  :size="searchSize"
                   type="success"
+                  :size="searchSize"
                   style="float: right"
                   @click="openModal({ id: 'add' }, '002')"
                 >
@@ -132,38 +140,43 @@
             {{ ditem.name }}</el-tag
           >
         </template>
+
         <template #status="{ scope }">
           <el-tag
             :size="tablebtnSize"
             :type="scope.row.status + '' === '0' ? 'warning' : ''"
             v-text="
               (statusList.find((item) => item.code + '' == scope.row.status + '') || {})
-                .name || '--'
+              .name || '--'
             "
           ></el-tag>
         </template>
+
         <template #operation="{ scope }">
-          <el-tooltip effect="dark" content="详情" placement="top">
-            <i class="el-icon-view tb-icon" @click="openModal(scope.row, '007')"></i>
+          <el-tooltip 
+            effect="dark" 
+            content="详情" 
+            placement="top"
+          >
+            <i class="el-icon-view tb-icon"  @click="openModal(scope.row, '007')"  />
           </el-tooltip>
+         
           <el-tooltip
             v-if="powers.some((i) => i == '005')"
             effect="dark"
             content="修改"
             placement="top"
           >
-            <i class="el-icon-edit tb-icon" @click="openModal(scope.row, '005')"></i>
+            <i class="el-icon-edit tb-icon" @click="openModal(scope.row, '005')" />
           </el-tooltip>
+
           <el-tooltip
             v-if="powers.some((i) => i == '004') && scope.row.status + '' === '1'"
             effect="dark"
             content="禁用"
             placement="top"
           >
-            <i
-              class="el-icon-video-pause tb-icon"
-              @click="statusConfirm(scope.row.id, scope.row.status)"
-            ></i>
+            <i class="el-icon-video-pause tb-icon" @click="statusConfirm(scope.row.id, scope.row.status)" />
           </el-tooltip>
           <el-tooltip
             v-if="powers.some((i) => i == '003') && scope.row.status + '' === '0'"
@@ -186,32 +199,39 @@
           </el-tooltip>
         </template>
       </ex-table>
+
       <add-edit
         :id="modelId"
-        :show-model="showModel"
-        :is-detail="isDetail"
         :sitem="sitem"
+        :is-detail="isDetail"
         @refresh="searchList"
+        :show-model="showModel"
         @cancel="showModel = false"
       />
     </div>
   </div>
 </template>
 <script>
-import mixinPage from "@/mixins/elPaginationHandle";
 import asyncRequest from "@/apis/service/operate/invoicing";
-import addEdit from "./addEdit";
-import { mapGetters } from "vuex";
-import resToken from "@/mixins/resToken";
+import mixinPage from "@/mixins/elPaginationHandle";
 import { statusList } from "@/assets/js/statusList";
+import resToken from "@/mixins/resToken";
+import { mapGetters } from "vuex";
+import addEdit from "./addEdit";
+
 export default {
   name: "invoicing",
-  components: {
-    addEdit,
-  },
-  mixins: [mixinPage, resToken],
+  components: { addEdit },
+  mixins: [
+    mixinPage, 
+    resToken
+  ],
   computed: {
-    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    ...mapGetters([
+      "tablebtnSize", 
+      "searchSize", 
+      "size"
+    ]),
     powers() {
       const tran =
         this.$store.getters.btnList.find((item) => item.menu_route == "invoicing") || {};
@@ -238,8 +258,8 @@ export default {
         size: 15, // 每页显示条数
       },
       tableData: [],
-      passwordModel: false,
       passwordModelId: 0,
+      passwordModel: false,
       isPasswordDetail: false,
       // 表格 - 数据
       tableData: [],
@@ -371,9 +391,9 @@ export default {
             this.searchList();
           }
         })
-        .catch(() => {
-          console.log("取消");
-        });
+        .catch(
+          () => {console.log("取消");}
+        );
     },
     async searchList() {
       if (
@@ -388,11 +408,9 @@ export default {
       this.parmValue.tel = "";
       this.parmValue.title = "";
       this.parmValue[this.select] = this.sinput;
-      const model = {
-        ...this.parmValue,
-        limit: this.parmValue.size,
-      };
-      const { code, data } = await asyncRequest.list(model);
+      const model = { ...this.parmValue, limit: this.parmValue.size };
+      const { code, data } = await asyncRequest.list({ ...model });
+      
       if (code === 1) {
         const { list, total } = data;
         this.tableData = list;

+ 0 - 0
src/views/operate/supplierInvoice/开票信息管理 → src/views/operate/supplierInvoice/供应商开票信息管理


+ 3 - 5
src/views/platformService/invoice/columns.js

@@ -33,10 +33,9 @@ const listCol = [
   },
 
   {
-    prop: 'demandOrder',
+    prop: 'reqCode',
     label: '需求订单编号',
     width: '180px',
-    _slot_:'demandOrder'
   },
   // {
   //   prop: 'todo',
@@ -93,9 +92,8 @@ const listCol = [
     width:'125px'
   },
   {
-    prop:'todo',
-    label:'驳回原因',
-    required:true
+    prop:'remark',
+    label:'驳回原因'
   },
   // {
   //   prop: '',

+ 53 - 28
src/views/platformService/invoice/index.vue

@@ -39,9 +39,10 @@
               <el-col :span="3" style="margin-right:10px">
                 <el-input 
                   v-model="parmValue.reqCode" size="mini" placeholder="需求订单编号" style="width:100%"
-                  @change="pageInfo.curr = 1;
-                                parmValue.page = 1;
-                                searchList();"
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();"
                 />
               </el-col>
 
@@ -77,6 +78,7 @@
                   刷新
                 </el-button>
               </el-col>
+
               <el-col :span="4" class="fr" style="width: 66px">
                 <el-button
                   type="warning"
@@ -102,17 +104,25 @@
               </el-col>
 
               <el-col :span="4" style="margin-right:10px">
-                <el-input size="mini" placeholder="发票代码" v-model="parmValue.invoiceCode"
-                  @change=" pageInfo.curr = 1;
-                           parmValue.page = 1;
-                          searchList();"  />
+                <el-input 
+                  size="mini" 
+                  placeholder="发票代码"
+                  v-model="parmValue.invoiceCode"
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();"  />
               </el-col>
 
               <el-col :span="4">
-                <el-input size="mini" placeholder="发票号码" v-model="parmValue.invoiceNum"
-                  @change=" pageInfo.curr = 1;
-                           parmValue.page = 1;
-                          searchList();"
+                <el-input 
+                  size="mini" 
+                  placeholder="发票号码" 
+                  v-model="parmValue.invoiceNum"
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();"
                  />
               </el-col>
 
@@ -138,18 +148,19 @@
               </el-col>
             </el-row>
 
-            <el-row style="margin-top:10px">
+            <el-row style="margin-top: 10px">
               <el-col :span="4" style="margin-right:10px">
                 <el-select v-model="parmValue.invoice_type" size="mini" placeholder="发票类型" style="width:100%"
-                  @change="pageInfo.curr = 1;
+                  @change="
+                    pageInfo.curr = 1;
                           parmValue.page = 1;
                           searchList();"
                   >
                     <el-option
                       v-for="type in invoiceTypeList"
-                      :key="type.value"
                       :value="type.value"
                       :label="type.label"
+                      :key="type.value"
                      />
                   </el-select>
               </el-col>
@@ -165,24 +176,31 @@
           </div>
         </template>
 
-
-        <template #invType="{ scope }">
+        <template #invType="{
+          scope 
+        }">
           <el-tag size="mini">
             {{(openInvoiceTypeList.find(({value}) => value === scope.row.inv_type) || {}).label || '--'}}
           </el-tag>
         </template>
 
-        <template #invoiceType="{ scope }">
+        <template #invoiceType="{ 
+          scope
+        }">
           <el-tag size="mini">
             {{(invoiceTypeList.find(({value}) => value === scope.row.invoiceType) || {}).label || '--'}}
           </el-tag>
         </template>
 
-        <template #demandOrder="{ scope }">{{
+        <template #demandOrder="{ 
+          scope 
+        }">{{
             scope.row.platformsettle ? scope.row.platformsettle.reqCode : ""
           }}</template>
 
-        <template #status="{ scope }">
+        <template #status="{ 
+          scope 
+        }">
           <el-tag
             :size="tablebtnSize"
             :type="(statusList.find((item) => item.id == scope.row.status) || {}).type || ''"
@@ -298,10 +316,11 @@ export default {
         curr: 1,
         total: 0,
       },
+
       // 表格 - 列参数
       columns: listCol,
 
-      resultValue: "", //处理结果
+      resultValue: "", // 处理结果
     };
   },
   mounted() {
@@ -328,6 +347,7 @@ export default {
   },
   methods: {
     async handleBatchApprovalInvoice(data){
+      
       const { code } = await asyncRequest.batch({
         idArr:this.selected.map(({id}) => id),
         ...data
@@ -409,7 +429,9 @@ export default {
         return
       }
 
-      const ids = this.selected.map(({id}) => id)
+      const ids = this.selected.map(
+        ({id}) => id
+      )
     },
     handleSelectionChange(list) {
       this.selected = list
@@ -432,7 +454,10 @@ export default {
         };
         model.preModel = JSON.stringify(routerModel);
 
-        this.routeGoto(toRouter, model);
+        this.routeGoto(
+          toRouter, 
+          model
+        );
       } else {
         this.$message.warning("暂未找到相关流程!");
       }
@@ -447,12 +472,12 @@ export default {
         open_start:"", // 开票开始时间
         open_end:"", // 开票结束时间
         supplier:"", // 供应商企业
-        reqCode:"", // 需求订单编号
-        invoiceStatus:"", // 发票状态
-        invoiceCode:"", // 发票代码,
-        invoiceNum:"", // 发票号码,
-        invoice_type:"", // 发票类型
-        invNo:"", // 发票申请编号
+        reqCode: "", // 需求订单编号
+        invoiceStatus: "", // 发票状态
+        invoiceCode: "", // 发票代码,
+        invoiceNum: "", // 发票号码,
+        invoice_type: "", // 发票类型
+        invNo: "", // 发票申请编号
         page: 1, // 页码
         size: 15, // 每页显示条数
       }

+ 380 - 0
src/views/platformService/settlement/components/titleModal.vue

@@ -0,0 +1,380 @@
+<template>
+  <el-dialog 
+    :close-on-click-modal="false"
+    :visible="visible" 
+    title="选择发票抬头" 
+    width="1024px" 
+    top="60px" 
+    center
+    @close="handleClose" 
+  >
+    <div class="demand-order">
+      <ex-table
+        v-loading="loading"
+        :table="table"
+        :data="tableData"
+        :columns="columns"
+        :page="pageInfo"
+        :size="size"
+        @page-curr-change="handlePageChange"
+        @page-size-change="handleSizeChange"
+        @selection-change="list => selected = list"
+        @screen-reset="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+        @screen-submit="
+          pageInfo.curr = 1;
+          parmValue.page = 1;
+          searchList();
+        "
+      >
+        <template #table-header="{}">
+          <div style="width: 100%">
+            <el-row style="padding: 0 0 10px 80px">
+              <el-col :span="6" style="width: 300px">
+                <period-date-picker
+                  :type="1"
+                  :width="'135px'"
+                  :size="searchSize"
+                  :start="parmValue.start"
+                  :end="parmValue.end"
+                  @timeReturned="handleTime"
+                />
+              </el-col>
+              <el-col :span="4" style="width: 160px">
+                <el-select
+                  v-model="parmValue.status"
+                  filterable
+                  clearable
+                  :size="searchSize"
+                  placeholder="状态"
+                  style="width: 100%"
+                  @change="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                >
+                  <el-option
+                    v-for="item in statusList"
+                    :key="'status' + item.id"
+                    :label="item.label"
+                    :value="item.id"
+                  />
+                </el-select>
+              </el-col>
+
+              <el-col :span="3" class="fr" style="width: 66px; padding: 0 0 0 10px">
+                <el-button 
+                  type="primary" 
+                  :size="searchSize" 
+                  @click="searchList"
+                >
+                  刷新
+                </el-button>
+              </el-col>
+              <el-col :span="3" class="fr" style="width: 66px; padding: 0 0 0 10px">
+                <el-button type="warning" :size="searchList" @click="restSearch">
+                  重置
+                </el-button>
+              </el-col>
+            </el-row>
+            <el-row>
+              <el-col :span="4" style="width: 543px">
+                <el-input
+                  :size="searchSize"
+                  v-model="sinput"
+                  :maxlength="40"
+                  clearable
+                  @blur="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                  @clear="
+                    pageInfo.curr = 1;
+                    parmValue.page = 1;
+                    searchList();
+                  "
+                  placeholder="关键字"
+                >
+                  <el-select
+                    v-model="select"
+                    slot="prepend"
+                    style="width: 125px"
+                    placeholder="关键字类型"
+                  >
+                    <el-option label="抬头名称" value="title" />
+                    <el-option label="纳税人识别号" value="tax_no" />
+                    <el-option label="联系方式" value="tel" />
+                  </el-select>
+                </el-input>
+              </el-col>
+            </el-row>
+          </div>
+        </template>
+
+        <template #depart_info="{ scope }">
+          <el-tag
+            style="margin: 0 3px 0 0"
+            :size="tablebtnSize"
+            type="''"
+            v-for="(ditem, dindex) in scope.row.depart_info"
+            :key="ditem + dindex"
+          >
+            <span v-for="(cItem, cindex) in ditem" :key="cItem + dindex + cindex">
+              <span v-show="cindex > 0">/</span><span>{{ cItem }}</span>
+            </span>
+            {{ ditem.name }}</el-tag
+          >
+        </template>
+        <template #status="{ scope }">
+          <el-tag
+            :size="tablebtnSize"
+            :type="scope.row.status + '' === '0' ? 'warning' : ''"
+            v-text="
+              (statusList.find((item) => item.code + '' == scope.row.status + '') || {})
+                .name || '--'
+            "
+          ></el-tag>
+        </template>
+      </ex-table>
+    </div>
+
+       <div class="flex-end">
+        <el-button size="mini" type="primary"  @click="onConfirmDemand">
+          保存
+        </el-button>
+      </div>
+  </el-dialog>
+</template>
+
+<script>
+import pageInfo from "@/mixins/elPaginationHandle"
+import asyncRequest from "@/apis/service/customerService/demandOrder";
+import { mapGetters } from "vuex"
+
+export default {
+  name: "invoicing",
+  props:['visible'],
+  mixins: [pageInfo],
+  computed: {
+    ...mapGetters(["tablebtnSize", "searchSize", "size"]),
+    powers() {
+      const tran =
+        this.$store.getters.btnList.find((item) => item.menu_route == "invoicing") || {};
+      const { action } = tran ?? {};
+      return action ?? [];
+    },
+     _visible:{
+      get(){
+        return this.visible
+      },
+      set(value){
+        this.$emit('update:visible', value)
+      }
+    }
+  },
+  data() {
+    return {
+      select: "title",
+      sinput: "",
+      statusList:[
+        {code:0, name:'禁用'},
+        {code:1, name:'启用'},
+      ],
+       selected:[],
+      sitem: null,
+      loading: true,
+      showModel: false,
+      isDetail: false,
+      modelId: 0,
+      parmValue: {
+        name: "", // 业务员名字
+        username: "", // 账号
+        status: "", //
+        company_name: "", //创建人部门
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+      },
+      tableData: [],
+      passwordModel: false,
+      passwordModelId: 0,
+      isPasswordDetail: false,
+      // 表格 - 数据
+      tableData: [],
+      // 表格 - 参数
+      table: {
+        stripe: true,
+        border: true,
+        _defaultHeader_: ["setcol"],
+      },
+      // 表格 - 分页
+      pageInfo: {
+        size: 15,
+        curr: 1,
+        total: 0,
+      },
+      // 表格 - 列参数
+      columns: [
+        {
+          type:'selection',
+          fixed:'left'
+        },
+        {
+          prop: "title_type",
+          label: "抬头类型",
+        },
+        {
+          prop: "tax_no",
+          label: "统一社会信用代码",
+          width: "155px",
+        },
+        {
+          prop: "title",
+          label: "发票抬头",
+          "min-width": "150px",
+        },
+
+        {
+          prop: "tel",
+          label: "联系电话",
+          "min-width": "110px",
+        },
+        {
+          prop: "status",
+          label: "状态",
+          _slot_: "status",
+          width: "70px",
+        },
+        {
+          prop: "create_time",
+          label: "创建时间",
+          width: "140px",
+        },
+      ],
+    };
+  },
+  watch:{
+    visible(value){
+      if(!value) return
+      this.searchList()
+    }
+  },
+  methods: {
+    handleClose(){
+      this.pageInfo = {
+        curr: 1,
+        size: 10,
+        total: 0
+      }
+
+      this.parmValue = {
+        reqCode: "",
+        page: 1
+      }
+
+      this._visible = false
+    },
+    // 时间
+    async handleTime(e) {
+      this.parmValue.start = e.startTime || "";
+      this.parmValue.end = e.endTime || "";
+      if (
+        (this.parmValue.start !== "" && this.parmValue.end !== "") ||
+        (this.parmValue.start === "" && this.parmValue.end === "")
+      ) {
+        this.pageInfo.curr = 1;
+        this.parmValue.page = 1;
+        await this.searchList();
+      }
+    },
+    restSearch() {
+      this.select = "title";
+      this.sinput = "";
+      this.parmValue = {
+        name: "", // 业务员名字
+        username: "", // 账号
+        status: "", //
+        company_name: "", //创建人部门
+        page: 1, // 页码
+        size: 15, // 每页显示条数
+      };
+      // 表格 - 分页
+      this.pageInfo = {
+        size: 15,
+        curr: 1,
+        total: 0,
+      };
+      this.searchList();
+    },
+    openModal(row, type) {
+      const { status, id } = row;
+      // if (type === "005" && status + '' === "1") {
+      //   this.$message.warning("禁用后,才可以修改!");
+      //   return;
+      // }
+      this.showModel = true;
+      this.modelId = id;
+      this.isDetail = type === "007";
+      this.sitem = row;
+    },
+    openPasswordModal(id, isDetail) {
+      this.passwordModel = true;
+      this.passwordModelId = id;
+      this.isPasswordDetail = isDetail;
+    },
+      onConfirmDemand(){
+      if(this.selected.length === 0){
+        this.$message.warning('请选择一个发票抬头!')
+        return
+      }
+
+      if(this.selected.length > 1){
+        this.$message.warning('只能选择一个发票抬头!')
+        return
+      }
+
+      this.$emit('change', this.selected[0])
+      this._visible = false
+    },
+    async searchList() {
+      if (
+        (this.parmValue.start !== "" && this.parmValue.end === "") ||
+        (this.parmValue.start == "" && this.parmValue.end != "")
+      ) {
+        this.$message.warning("开始时间和结束时间不能为空");
+        return;
+      }
+      this.loading = true;
+      this.parmValue.tax_no = "";
+      this.parmValue.tel = "";
+      this.parmValue.title = "";
+      this.parmValue[this.select] = this.sinput;
+      const model = {
+        ...this.parmValue,
+        limit: this.parmValue.size,
+      };
+      const { code, data } = await asyncRequest.titleList(model);
+      if (code === 1) {
+        const { list, total } = data;
+        this.tableData = list;
+        this.pageInfo.total = Number(total);
+      } else {
+        this.tableData = [];
+        this.pageInfo.total = 0;
+      }
+      this.loading = false;
+    }
+  },
+};
+</script>
+<style lang="scss" scoped>
+.demand-order{
+  /deep/ .el-pagination{
+    float: left !important;
+  }
+}
+</style>

+ 57 - 23
src/views/platformService/settlement/components/waitSupplierUpload.vue

@@ -3,12 +3,16 @@
       <el-row gutter="20">
         <el-col :span="12">
           <el-form-item label="发票类型" prop="invoice_type">
-            <el-select v-model="ruleForm.invoice_type" style="width:100%" placeholder="发票类型">
+            <el-select 
+              v-model="ruleForm.invoice_type" 
+              placeholder="发票类型"
+              style="width:100%" 
+            >
               <el-option 
                 v-for="invoice in openInvoiceTypeList" 
-                :key="invoice.value" 
                 :value="invoice.value" 
                 :label="invoice.label"  
+                :key="invoice.value" 
               />
             </el-select>
           </el-form-item>
@@ -19,33 +23,49 @@
         </el-col>
 
         <el-col :span="12">
-          <el-form-item label="发票抬头" prop="invoice_id">
-            <search-invoice-title 
-              :value.sync="ruleForm.invoice_id" 
-              @change="_invoiceInfo => invoiceInfo = _invoiceInfo" 
-              style="width:100%"
+          <el-form-item 
+            label="发票抬头" 
+            prop="invoice_id"
+          >
+            <el-input 
+              v-if="!invoiceInfo"
               placeholder="请选择发票抬头" 
+              @focus="titleVisible = true" 
             />
-          </el-form-item>
 
-          <show-data-table 
-            v-if="invoiceInfo"
-            :sitem="invoiceInfo"
-            style="padding: -5px 0 10px 0"
-            :newTime="newTime"
-            :columns="invoiceColumns"
-          >
-            <template #tel>
-              {{invoiceInfo.address}} {{invoiceInfo.tel}}
-            </template>
+            <div style="display:flex;margin-bottom:10px"  v-if="invoiceApply">
+              <show-data-table 
+              :sitem="invoiceInfo"
+              style="padding: -5px 0 10px 0"
+              :newTime="newTime"
+              :columns="invoiceColumns"
+            >
+              <template #tel>
+                {{invoiceInfo.address}} {{invoiceInfo.tel}}
+              </template>
+
+              <template #bank>
+                {{invoiceInfo.bank_name}} {{invoiceInfo.bank_account}}
+              </template>
+            </show-data-table>
 
-            <template #bank>
-              {{invoiceInfo.bank_name}} {{invoiceInfo.bank_account}}
-            </template>
-          </show-data-table>
+            <el-tooltip placement="top" content="重新选择发票抬头">
+              <i 
+                class="el-icon-circle-close" 
+                style="font-size:18px;margin:0px 10px;cursor:pointer"
+                @click="handleTitleChange(null)" 
+              />
+            </el-tooltip>
+          </div>
+          </el-form-item>
         </el-col>
       </el-row>
 
+      <title-modal 
+        :visible.sync="titleVisible"
+        @change="handleTitleChange"
+      />
+
     <div style="display:flex;justify-content:flex-end;margin-bottom:10px">
       <el-button size="mini" type="primary" @click="onSubmit">保存</el-button>
     </div>
@@ -59,6 +79,8 @@ import {
   openInvoiceTypeList 
 } from '@/assets/js/statusList'
 
+import TitleModal from "./titleModal.vue"
+
 /** 
     @props
     req_id 需求订单
@@ -71,6 +93,7 @@ import {
 export default {
   name:'CreateInvoiceNode',
   props:['isApply'],  //isApply 是否为创建开票申请
+  components: { TitleModal },
   data(){
       return {
         loading: false,
@@ -79,7 +102,8 @@ export default {
         openInvoiceTypeList,
         demandInfo : null,
         invoiceInfo: null,
-        demandVisible:false,
+        titleVisible: false,
+        demandVisible: false,
           invoiceColumns:[
             {
               prop: 'title',
@@ -153,6 +177,16 @@ export default {
       }
   },
   methods:{
+    async handleTitleChange(invoiceInfo){
+      if(!invoiceInfo){
+        this.invoiceInfo = null
+        this.ruleForm.invoice_id = ""
+        return
+      }
+
+      this.invoiceInfo = invoiceInfo
+      this.ruleForm.invoice_id = invoiceInfo.id
+    },
     async onSubmit(){
       try {
         await this.$refs.ruleForm.validate()

+ 3 - 3
src/views/system/action/index.vue

@@ -314,7 +314,9 @@ export default {
             (finditem) => finditem === String(evitem.id)
           ) > -1
       );
-      this.$set(this.actionList, index, item);
+      this.$set(
+        this.actionList, index, item
+      );
     },
 
     // 单项复选框选中/不选中
@@ -411,8 +413,6 @@ export default {
         this.refreshRoleCheckAllStatus();
       } 
 
-      console.log(this.isBtnDisabled)
-
       this.isBtnDisabled = false;
     },
     // 初始化功能权限列表

+ 9 - 8
src/views/system/setMenu/index.vue

@@ -216,6 +216,7 @@ import addEdit from "@/views/system/setMenu/addEdit";
 import resToken from "@/mixins/resToken";
 import { mapGetters } from "vuex";
 import { statusList } from "@/assets/js/statusList";
+import { numberFields } from '../../../components/approval-node/src/uploadInvoice/_template';
 export default {
   name: "setMenu",
   components: {
@@ -265,19 +266,19 @@ export default {
     async load(row, treeNode, resolve) {
       // console.log(row)
       const { id: pid } = row;
-      this.loadMap.set(pid, { row, treeNode, resolve });
+      this.loadMap.set(Number(pid), { row, treeNode, resolve });
       const { code, data } = await asyncRequest.list({ pid });
       if (code === 1) resolve(data.map((item) => ({ ...item, hasChildren: false })));
     },
     reloadTree(pid) {
       pid = pid ? parseInt(pid) : 0;
-      if (pid === 0) return null;
-      const result = this.loadMap.get(pid);
+      if (Number(pid) === 0) return null;
+      const result = this.loadMap.get(Number(pid));
       if (!result) return null;
-      this.$refs.table.store.states.lazyTreeNodeMap[pid] = [];
+      this.$refs.table.store.states.lazyTreeNodeMap[Number(pid)] = [];
       const { row, treeNode, resolve } = result;
-      if (row.id === 0) {
-        row.pid = row.id;
+      if (Number(row.id) === 0) {
+        row.pid = Number(row.id);
         row.id = 0;
       }
       this.load(row, treeNode, resolve);
@@ -292,9 +293,9 @@ export default {
       this.formData = formData;
     },
     async submitRefresh(_1, _2, level, isAdd, parentIds) {
-      if (level === 0 && isAdd) {
+      if (Number(level) === 0 && isAdd) {
         this.reloadTree(parentIds);
-      } else if (level === 2) {
+      } else if (Number(level) === 2) {
         this.reloadTree(parentIds);
       } else {
         this.searchList();