Jelajahi Sumber

资金认领/单款票确认导出

xiaodai2022 2 tahun lalu
induk
melakukan
6fbe0c9853

File diff ditekan karena terlalu besar
+ 0 - 0
dist/index.html


TEMPAT SAMPAH
dist/static/css/chunk-52c1f9c4.b7c0baaf.css.gz


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/css/chunk-a081bf92.0cf1dd46.css


TEMPAT SAMPAH
dist/static/css/chunk-a081bf92.0cf1dd46.css.gz


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/app.4b8bc3c1.js


TEMPAT SAMPAH
dist/static/js/app.e2007c15.js.gz → dist/static/js/app.4b8bc3c1.js.gz


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-52c1f9c4.cb425b24.js


TEMPAT SAMPAH
dist/static/js/chunk-52c1f9c4.cb425b24.js.gz


File diff ditekan karena terlalu besar
+ 0 - 0
dist/static/js/chunk-a081bf92.d6850aa8.js


TEMPAT SAMPAH
dist/static/js/chunk-a081bf92.d6850aa8.js.gz


+ 214 - 95
src/views/InvoiceSales/capitalClaim/index.vue

@@ -1,10 +1,30 @@
 <template>
   <div class="capitalClaim pagePadding">
-    <div
-      v-if="powers && powers.length > 0 && powers.some((item) => item == '001')"
-    >
+    <div v-if="powers && powers.length > 0 && powers.some((item) => item == '001')">
       <el-row :gutter="10" style="padding-bottom: 10px">
-        <el-col :span="8" style="width: 440px">
+        <el-col :span="7" style="width: 145px">
+          <el-select
+            style="width: 100%"
+            :size="searchSize"
+            v-model="parmValue.status"
+            clearable
+            placeholder="认领状态"
+            @change="
+              pageInfo.curr = 1;
+              parmValue.page = 1;
+              searchList();
+            "
+          >
+            <el-option
+              v-for="item in capitalFlowType"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            >
+            </el-option>
+          </el-select>
+        </el-col>
+        <el-col :span="8" style="width: 460px">
           <el-select
             v-model="code"
             multiple
@@ -27,68 +47,33 @@
             />
           </el-select>
         </el-col>
-        <el-col :span="8" style="width: 312px">
-          <el-input :size="searchSize" v-model="input" placeholder="关键字">
-            <el-select
-              style="width: 103px"
-              v-model="select"
-              slot="prepend"
-              placeholder="请选择"
-            >
-              <el-option label="资金编码" value="1"></el-option>
-              <el-option label="付款方" value="2"></el-option>
-            </el-select>
-            <!-- <el-button
-              slot="append"
-              icon="el-icon-search"
-              @click="searchList"
-            ></el-button> -->
-          </el-input>
-        </el-col>
-        <el-col :span="3" style="width: 216px" class="fr tr">
+
+        <el-col :span="4" style="width: 226px" class="fr tr">
           <el-button
-            v-if="powers.some((item) => item == '023')"
-            :size="searchSize"
             type="primary"
-            :disabled="downLoading"
-            @click="dlTemplate"
+            :size="searchSize"
+            icon="el-icon-search"
+            @click="searchList"
+          />
+          <el-button
+            type="warning"
+            v-if="powers.some((item) => item == '024')"
+            :size="searchSize"
+            @click="restSearch"
           >
-            下载模板
+            重置
           </el-button>
           <el-button
-            v-if="powers.some((item) => item == '038')"
+            v-if="powers.some((item) => item == '002')"
             :size="searchSize"
             type="primary"
-            @click="importshowModel = true"
+            @click="searchList"
           >
-            导入数据
+            刷新
           </el-button>
         </el-col>
       </el-row>
       <el-row :gutter="10" style="padding-bottom: 10px">
-        <el-col :span="7" style="width: 138px">
-          <el-select
-            style="width: 100%"
-            :size="searchSize"
-            v-model="parmValue.status"
-            clearable
-            placeholder="认领状态"
-            @change="
-              pageInfo.curr = 1;
-              parmValue.page = 1;
-              searchList();
-            "
-          >
-            <el-option
-              v-for="item in capitalFlowType"
-              :key="item.code"
-              :label="item.name"
-              :value="item.code"
-            >
-            </el-option>
-          </el-select>
-        </el-col>
-
         <el-col :span="6" style="width: 302px">
           <period-date-picker
             :start="parmValue.start"
@@ -110,51 +95,92 @@
             @numReturned="numReturned($event, 0)"
           />
         </el-col>
-
-        <el-col :span="4" style="width: 226px" class="fr tr">
-          <el-button
-            type="primary"
-            :size="searchSize"
-            icon="el-icon-search"
-            @click="searchList"
-          />
-          <el-button
-            type="warning"
-            v-if="powers.some((item) => item == '024')"
-            :size="searchSize"
-            @click="restSearch"
-          >
-            重置
-          </el-button>
+        <el-col
+          :span="3"
+          v-if="powers.some((item) => item == '023')"
+          style="width: 90px"
+          class="fr"
+        >
           <el-button
-            v-if="powers.some((item) => item == '002')"
             :size="searchSize"
             type="primary"
-            @click="searchList"
+            :disabled="downLoading"
+            @click="dlTemplate"
           >
-            刷新
+            下载模板
+          </el-button>
+        </el-col>
+        <el-col
+          :span="3"
+          style="width: 90px"
+          v-if="powers.some((item) => item == '038')"
+          class="fr"
+        >
+          <el-button :size="searchSize" type="primary" @click="importshowModel = true">
+            导入数据
           </el-button>
         </el-col>
       </el-row>
+      <el-row :gutter="10" style="padding-bottom: 10px">
+        <el-col :span="8" style="width: 470px">
+          <el-input :size="searchSize" v-model="input" placeholder="关键字">
+            <el-select
+              style="width: 103px"
+              v-model="select"
+              slot="prepend"
+              placeholder="请选择"
+            >
+              <el-option label="资金编码" value="1"></el-option>
+              <el-option label="付款方" value="2"></el-option>
+            </el-select>
+            <!-- <el-button
+              slot="append"
+              icon="el-icon-search"
+              @click="searchList"
+            ></el-button> -->
+          </el-input>
+        </el-col>
+
+        <el-col :span="4" style="width: 108px" class="fr">
+          <el-button
+            type="primary"
+            class="fr"
+            icon="el-icon-download"
+            :size="searchSize"
+            @click="batchExport()"
+            >批量导出</el-button
+          ></el-col
+        >
+      </el-row>
       <el-table
         :data="tableData"
         v-loading="loading"
+        ref="multipleTable"
         border
         :size="size"
         row-key="traNo"
         stripe
         style="width: 100%"
         :default-expand-all="false"
+        @selection-change="handleSelectionChange"
         :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
       >
+        <el-table-column type="selection" width="45" show-overflow-tooltip>
+        </el-table-column>
         <el-table-column
           label="资金编号"
           prop="traNo"
           width="220px"
           fixed="left"
+          show-overflow-tooltip
         />
 
-        <el-table-column label="收入/支出" prop="trade_type" width="80px">
+        <el-table-column
+          label="收入/支出"
+          prop="trade_type"
+          width="80px"
+          show-overflow-tooltip
+        >
           <template slot-scope="scope">
             <el-tag
               :type="scope.row.trade_type === '0' ? 'success' : 'warning'"
@@ -164,7 +190,12 @@
           </template>
         </el-table-column>
 
-        <el-table-column label="认领状态" prop="status" width="90px">
+        <el-table-column
+          label="认领状态"
+          prop="status"
+          width="90px"
+          show-overflow-tooltip
+        >
           <template slot-scope="scope">
             <el-tag
               :type="scope.row.status_type"
@@ -173,16 +204,30 @@
             ></el-tag>
           </template>
         </el-table-column>
-        <el-table-column label="记录总金额" prop="total_fee" width="120px" />
-        <el-table-column label="已认领金额" prop="amount" width="120px" />
-        <el-table-column label="认领企业编码" prop="companyNo" width="130px" />
+        <el-table-column
+          label="记录总金额"
+          prop="total_fee"
+          width="120px"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="已认领金额"
+          prop="amount"
+          width="120px"
+          show-overflow-tooltip
+        />
+        <el-table-column
+          label="认领企业编码"
+          prop="companyNo"
+          width="130px"
+          show-overflow-tooltip
+        />
         <el-table-column
           label="认领企业"
           show-overflow-tooltip
           prop="companyName"
           min-width="170px"
         />
-        
 
         <el-table-column
           label="对方公司"
@@ -210,8 +255,13 @@
           width="180px"
         />
 
-        <el-table-column label="交易时间" prop="trade_time" width="145px" />
-        <el-table-column fixed="right" label="操作" width="85px">
+        <el-table-column
+          label="交易时间"
+          prop="trade_time"
+          width="145px"
+          show-overflow-tooltip
+        />
+        <el-table-column fixed="right" label="操作" width="85px" show-overflow-tooltip>
           <template slot-scope="scope">
             <el-tooltip
               v-if="
@@ -224,7 +274,6 @@
                   scope.row.status === '6' &&
                   parseInt(scope.row.balance) !== 0)
               "
-               
               effect="dark"
               content="资金认领"
               placement="top"
@@ -249,7 +298,6 @@
                 scope.row.logNo !== scope.row.traNo &&
                 scope.row.status === '2'
               "
-               
               effect="dark"
               content="认领审核"
               placement="top"
@@ -276,15 +324,11 @@
                   scope.row.logNo !== scope.row.traNo &&
                   scope.row.status === '4')
               "
-               
               effect="dark"
               content="取消认领申请"
               placement="top"
             >
-              <i
-                class="el-icon-error tb-icon"
-                @click="changeStatus(scope.row.traNo)"
-              ></i>
+              <i class="el-icon-error tb-icon" @click="changeStatus(scope.row.traNo)"></i>
             </el-tooltip>
           </template>
         </el-table-column>
@@ -337,6 +381,7 @@ import numberRange from "@/components/numberRange";
 import { invoiceType, orderType, capitalFlowType } from "@/assets/js/linkType";
 import { timestampToTime } from "@/utils/validate";
 import resToken from "@/mixins/resToken";
+import { formatJson } from "@/utils/publicMethods";
 export default {
   name: "capitalClaim",
   mixins: [mixinPage, resToken],
@@ -352,9 +397,8 @@ export default {
     ...mapGetters(["tablebtnSize", "searchSize", "size"]),
     powers() {
       let tran =
-        this.$store.getters.btnList.find(
-          (item) => item.menu_route == "capitalClaim"
-        ) || {};
+        this.$store.getters.btnList.find((item) => item.menu_route == "capitalClaim") ||
+        {};
       if (tran && tran.action && tran.action.length > 0) {
         return tran.action;
       } else {
@@ -364,6 +408,7 @@ export default {
   },
   data() {
     return {
+      multipleSelection: [],
       select: "1",
       sname: "",
       stype: "",
@@ -410,6 +455,9 @@ export default {
     this.searchList();
   },
   methods: {
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
     restSearch() {
       this.code = [];
       // 表格 - 分页
@@ -432,6 +480,79 @@ export default {
       };
       this.searchList();
     },
+    /**
+     *  批量导出
+     * @param {Array} selection 当前选择项
+     */
+    batchExport() {
+      if (!this.loading) {
+        if (this.multipleSelection.length == 0) {
+          this.$message.warning("请至少选择一条数据!");
+          return;
+        }
+        let selection = [];
+        this.multipleSelection.forEach((e) => {
+          selection.push(e);
+          if (e.children && e.children.length > 0) {
+            e.children.forEach((si) => {
+              selection.push(si);
+            });
+          }
+        });
+        console.log(selection);
+
+        this.loading = true;
+        let data = [].concat(...selection);
+        let list = [];
+        data.forEach((item) => {
+          let model = Object.assign({}, item);
+          model.trade_type = model.trade_type === "0" ? "收入" : "支出";
+          list.push(model);
+        });
+        console.log(list);
+        const xlsName = `资金认领数据批量导出`;
+        import("@/vendor/Export2Excel").then((excel) => {
+          const tHeader = [
+            "资金编号",
+            "收入/支出",
+            "认领状态",
+            "记录总金额",
+            "已认领金额",
+            "认领企业编码",
+            "认领企业",
+            "对方公司",
+            "对方账号",
+            "付款备注",
+            "驳回原因",
+            "交易时间",
+          ];
+          const filterVal = [
+            "traNo",
+            "trade_type",
+            "statusName",
+            "total_fee",
+            "amount",
+            "companyNo",
+            "companyName",
+            "trade_out",
+            "trade_account",
+            "trade_used",
+            "exam_remark",
+            "trade_time",
+          ];
+          const data = formatJson(filterVal, list);
+          excel.export_json_to_excel({
+            header: tHeader,
+            data,
+            filename: `${xlsName}`,
+          });
+          this.$message.success("资金认领数据批量导出成功!");
+          setTimeout(() => {
+            this.loading = false;
+          }, 500);
+        });
+      }
+    },
     // 新建/编辑/详情
     openModal(id, logNo, isDetail, exam_remark, status, trade_type) {
       console.log(trade_type);
@@ -642,8 +763,7 @@ export default {
       if (!this.downLoading) {
         this.downLoading = true;
         let elemIF = document.createElement("iframe");
-        elemIF.src =
-          this.fileUrl + "?time=" + timestampToTime(new Date().valueOf());
+        elemIF.src = this.fileUrl + "?time=" + timestampToTime(new Date().valueOf());
         elemIF.style.display = "none";
         document.body.appendChild(elemIF);
         this.$message.success(`资金模板下载成功!`);
@@ -656,5 +776,4 @@ export default {
 };
 </script>
 
-<style lang="scss" scoped>
-</style>
+<style lang="scss" scoped></style>

+ 94 - 53
src/views/InvoiceSales/relation/index.vue

@@ -30,7 +30,7 @@
         searchList();
       "
     >
-      <template #table-header="{}">
+      <template #table-header="{ selection }">
         <div style="width: 100%">
           <el-row :gutter="10" style="padding: 0 0 10px 80px">
             <el-col :span="7" style="width: 180px">
@@ -119,7 +119,7 @@
             </el-col>
           </el-row>
           <el-row :gutter="10">
-            <el-col :span="6" style="width: 470px">
+            <el-col :span="6" style="width: 430px">
               <el-select
                 v-model="code"
                 multiple
@@ -164,6 +164,17 @@
                 </el-select>
               </el-input>
             </el-col>
+            <el-col :span="4" style="width: 88px; float: right">
+              <el-button
+                type="primary"
+                class="fr"
+                :size="searchSize"
+                :disabled="loading"
+                @click="batchExport(selection)"
+              >
+                页面导出
+              </el-button>
+            </el-col>
             <el-col :span="4" style="width: 66px" class="fr">
               <el-button
                 v-if="powers.some((item) => item == '003')"
@@ -208,12 +219,7 @@
             <span style="display: inline-block; vertical-align: top">{{
               scope.row.orderNo
             }}</span
-            ><span
-              style="
-                display: inline-block;
-                vertical-align: top;
-                padding: 0 0 0 2px;
-              "
+            ><span style="display: inline-block; vertical-align: top; padding: 0 0 0 2px"
               ><i
                 class="el-icon-more"
                 style="
@@ -259,12 +265,7 @@
             <span style="display: inline-block; vertical-align: top">{{
               scope.row.traNo
             }}</span
-            ><span
-              style="
-                display: inline-block;
-                vertical-align: top;
-                padding: 0 0 0 2px;
-              "
+            ><span style="display: inline-block; vertical-align: top; padding: 0 0 0 2px"
               ><i
                 class="el-icon-more"
                 style="
@@ -308,12 +309,7 @@
             <span style="display: inline-block; vertical-align: top">{{
               scope.row.invNo
             }}</span
-            ><span
-              style="
-                display: inline-block;
-                vertical-align: top;
-                padding: 0 0 0 2px;
-              "
+            ><span style="display: inline-block; vertical-align: top; padding: 0 0 0 2px"
               ><i
                 class="el-icon-more"
                 style="
@@ -333,8 +329,7 @@
           size="mini"
           :type="''"
           v-text="
-            (RQList.find((item) => item.code == scope.row.rela_form) || {})
-              .name || '--'
+            (RQList.find((item) => item.code == scope.row.rela_form) || {}).name || '--'
           "
         ></el-tag>
       </template>
@@ -342,15 +337,11 @@
         <el-tag
           size="mini"
           :type="
-            scope.row.status == '3'
-              ? 'success'
-              : scope.row.status == '2'
-              ? 'warning'
-              : ''
+            scope.row.status == '3' ? 'success' : scope.row.status == '2' ? 'warning' : ''
           "
           v-text="
-            (relationType.find((item) => item.code == scope.row.status) || {})
-              .name || '--'
+            (relationType.find((item) => item.code == scope.row.status) || {}).name ||
+            '--'
           "
         ></el-tag>
       </template>
@@ -358,20 +349,14 @@
       <template #operation="{ scope }">
         <el-tooltip
           v-if="
-            (powers.some((item) => item == '007') &&
-              scope.row.rela_form === '2') ||
-            (powers.some((item) => item == '007') &&
-              scope.row.rela_form === '3')
+            (powers.some((item) => item == '007') && scope.row.rela_form === '2') ||
+            (powers.some((item) => item == '007') && scope.row.rela_form === '3')
           "
-           
           effect="dark"
           content="详情"
           placement="top"
         >
-          <i
-            class="el-icon-view tb-icon"
-            @click="openModal(scope.row.id, '007')"
-          ></i>
+          <i class="el-icon-view tb-icon" @click="openModal(scope.row.id, '007')"></i>
         </el-tooltip>
         <el-tooltip
           v-if="
@@ -382,15 +367,11 @@
               scope.row.status !== '3' &&
               scope.row.rela_form === '3')
           "
-           
           effect="dark"
           content="申请取消"
           placement="top"
         >
-          <i
-            class="el-icon-video-pause tb-icon"
-            @click="changeStatus(scope.row.id)"
-          ></i>
+          <i class="el-icon-video-pause tb-icon" @click="changeStatus(scope.row.id)"></i>
         </el-tooltip>
         <el-tooltip
           v-if="
@@ -401,15 +382,11 @@
               scope.row.status === '1' &&
               scope.row.rela_form === '3')
           "
-           
           effect="dark"
           content="财务审核"
           placement="top"
         >
-          <i
-            class="el-icon-s-check tb-icon"
-            @click="openModal(scope.row.id, '029')"
-          ></i>
+          <i class="el-icon-s-check tb-icon" @click="openModal(scope.row.id, '029')"></i>
         </el-tooltip>
       </template>
     </ex-table>
@@ -425,6 +402,7 @@ import { mapGetters } from "vuex";
 import { relationType, RQList } from "@/assets/js/linkType";
 import PeriodDatePicker from "@/components/PeriodDatePicker";
 import resToken from "@/mixins/resToken";
+import { formatJson } from "@/utils/publicMethods";
 export default {
   name: "relation",
   mixins: [mixinPage, resToken],
@@ -438,9 +416,7 @@ export default {
     ...mapGetters(["tablebtnSize", "searchSize", "size"]),
     powers() {
       let tran =
-        this.$store.getters.btnList.find(
-          (item) => item.menu_route == "relation"
-        ) || {};
+        this.$store.getters.btnList.find((item) => item.menu_route == "relation") || {};
       if (tran && tran.action && tran.action.length > 0) {
         return tran.action;
       } else {
@@ -466,7 +442,7 @@ export default {
       ],
       newTime: 0,
       code: [],
-      relationType: relationType,
+      relationType,
       RQList: RQList,
       selectLoading: false,
       activeOptions: [],
@@ -503,6 +479,7 @@ export default {
       },
       // 表格 - 列参数
       columns: [
+        { type: "selection", fixed: "left", _noset_: true },
         {
           prop: "id",
           label: "ID",
@@ -658,7 +635,6 @@ export default {
         this.tableData = res.data.list;
         this.tableData.map((v1) => {
           let arr1 = v1.orderNo.split(",");
-          console.log(arr1);
           v1.orderNo = arr1[0];
           v1.orderNo_length = arr1.length;
           // v1.orderNo_show = false;
@@ -678,6 +654,7 @@ export default {
 
           return v1;
         });
+        console.log(this.tableData);
         this.pageInfo.total = Number(res.data.count);
       } else if (res && res.code >= 100 && res.code <= 104) {
         await this.logout();
@@ -688,6 +665,70 @@ export default {
       this.loading = false;
     },
 
+    /**
+     *  批量导出
+     * @param {Array} selection 当前选择项
+     */
+    batchExport(selection) {
+      if (!this.loading) {
+        if (selection.length == 0) {
+          this.$message.warning("请至少选择一条数据!");
+          return;
+        }
+
+        this.loading = true;
+        let data = [].concat(...selection);
+        let list = [];
+        data.forEach((item) => {
+          let model = Object.assign({}, item);
+          model.orderNo = model.orderNo_showMain.toString();
+          model.traNo = model.traNo_showMain.toString();
+          model.invNo = model.invNo_showMain.toString();
+          model.rela_form =
+            (this.RQList.find((v) => v.code == item.rela_form) || {}).name || "--";
+          model.status =
+            (this.relationType.find((v) => v.code == item.status) || {}).name || "--";
+          list.push(model);
+        });
+        const xlsName = `单款票确认数据批量导出`;
+        import("@/vendor/Export2Excel").then((excel) => {
+          const tHeader = [
+            "ID",
+            "公司编码",
+            "公司名称",
+            "核销额度",
+            "关联类型",
+            "订单编号",
+            "资金编号",
+            "发票编号",
+            "状态",
+            "创建时间",
+          ];
+          const filterVal = [
+            "id",
+            "companyNo",
+            "companyName",
+            "cancel_total",
+            "rela_form",
+            "orderNo",
+            "traNo",
+            "invNo",
+            "status",
+            "addtime",
+          ];
+          const data = formatJson(filterVal, list);
+          excel.export_json_to_excel({
+            header: tHeader,
+            data,
+            filename: `${xlsName}`,
+          });
+          this.$message.success("单款票确认数据导出成功!");
+          setTimeout(() => {
+            this.loading = false;
+          }, 500);
+        });
+      }
+    },
     async remoteMethod(query) {
       this.selectLoading = true;
       if (query !== "") {

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini