yumeng il y a 1 an
Parent
commit
b12d18f312

+ 285 - 223
src/api/goodsManagement/goods.js

@@ -2,104 +2,107 @@ import request from '@/utils/request'
 
 // 预览商品
 export function getItemPreview(query) {
-    return request({
-        url: '/item/getItemPreview',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/getItemPreview',
+    method: 'get',
+    params: query
+  })
 }
+
 // 商品解绑
 export function unbindingItem(query) {
-    return request({
-        url: '/item/unbindingItem',
-        method: 'delete',
-        params: query
-    })
+  return request({
+    url: '/item/unbindingItem',
+    method: 'delete',
+    params: query
+  })
 }
+
 // 商品批量审核
 export function batchItemProcess(query) {
-    return request({
-        url: '/item/batchItemProcess',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: '/item/batchItemProcess',
+    method: 'post',
+    data: query
+  })
 }
 
 // 获取商品列表
 export function getItemList(query) {
-    return request({
-        url: '/item/list',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/list',
+    method: 'get',
+    params: query
+  })
 }
 
 // 获取省
 export function getAreaList(query) {
-    return request({
-        url: '/item/getProvince',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/getProvince',
+    method: 'get',
+    params: query
+  })
 }
+
 // 获取市
 export function getCity(query) {
-    return request({
-        url: '/item/getCity',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/getCity',
+    method: 'get',
+    params: query
+  })
 }
 
 // 判断是否绑定
 export function checkItem(query) {
-    return request({
-        url: '/item/checkItem',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/checkItem',
+    method: 'get',
+    params: query
+  })
 }
 
 
 // 新增商品
 
 export function insertItem(query) {
-    return request({
-        url: '/item/insertItem',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: '/item/insertItem',
+    method: 'post',
+    data: query
+  })
 }
 
 
 // 修改商品
 
 export function editItem(query) {
-    return request({
-        url: '/item/edit',
-        method: 'put',
-        data: query
-    })
+  return request({
+    url: '/item/edit',
+    method: 'put',
+    data: query
+  })
 }
 
 // 品类下拉
 
 export function getCategoryIds(query) {
-    return request({
-        url: '/item/getCategoryIds',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/getCategoryIds',
+    method: 'get',
+    params: query
+  })
 }
 
 // 活动ID下拉
 
 export function getActivityIds(query) {
-    return request({
-        url: '/item/getActivityIds',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/getActivityIds',
+    method: 'get',
+    params: query
+  })
 }
 
 export function getRegimental(query) {
@@ -113,226 +116,225 @@ export function getRegimental(query) {
 //领样预览
 
 export function preview(query) {
-    return request({
-        url: '/itemCollectSamples/preview',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: '/itemCollectSamples/preview',
+    method: 'post',
+    data: query
+  })
 }
 
 //领样提交
 
 export function addPreview(query) {
-    return request({
-        url: '/itemCollectSamples/add',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: '/itemCollectSamples/add',
+    method: 'post',
+    data: query
+  })
 }
 
 //领样修改
 
 export function editPreview(query) {
-    return request({
-        url: '/itemCollectSamples/edit',
-        method: 'put',
-        data: query
-    })
+  return request({
+    url: '/itemCollectSamples/edit',
+    method: 'put',
+    data: query
+  })
 }
 
 //修改状态-直接跳到待上传作业
 
 export function toUpdateTask(query) {
-    return request({
-        url: '/itemCollectSamples/updateTask',
-        method: 'put',
-        data: query
-    })
+  return request({
+    url: '/itemCollectSamples/updateTask',
+    method: 'put',
+    data: query
+  })
 }
 
 
 //批量审核
 
 export function batchProcess(query) {
-    return request({
-        url: '/itemCollectSamples/batchProcess',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: '/itemCollectSamples/batchProcess',
+    method: 'post',
+    data: query
+  })
 }
 
 //领样人修改-查询人员列表
 export function getUserList(query) {
-    return request({
-        url: '/itemCollectSamples/getUserList',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/itemCollectSamples/getUserList',
+    method: 'get',
+    params: query
+  })
 }
 
 
-
 //领样作废
 
 export function removePreview(query) {
-    return request({
-        url: '/itemCollectSamples/remove',
-        method: 'delete',
-        params: query
-    })
+  return request({
+    url: '/itemCollectSamples/remove',
+    method: 'delete',
+    params: query
+  })
 }
 
 //详情编辑
 
 export function updatePreview(query) {
-    return request({
-        url: '/itemCollectSamples/update',
-        method: 'put',
-        data: query
-    })
+  return request({
+    url: '/itemCollectSamples/update',
+    method: 'put',
+    data: query
+  })
 }
 
 // 领样列表
 export function getList(query) {
-    return request({
-        url: '/itemCollectSamples/list',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/itemCollectSamples/list',
+    method: 'get',
+    params: query
+  })
 }
 
 
 // 获取快递公司
 export function getCompany(query) {
-    return request({
-        url: '/itemCollectSamples/getCompany',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/itemCollectSamples/getCompany',
+    method: 'get',
+    params: query
+  })
 }
+
 // 修改快递单号
 export function updateCourierNumber(query) {
-    return request({
-        url: '/itemCollectSamples/updateCourierNumber',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/itemCollectSamples/updateCourierNumber',
+    method: 'get',
+    params: query
+  })
 }
 
 
-
 //  详情
 export function getDetail(query) {
-    return request({
-        url: '/itemCollectSamples/detail',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/itemCollectSamples/detail',
+    method: 'get',
+    params: query
+  })
 }
 
 // 结算规则修改/新增绑定
 export function editRuleIdByItemId(query) {
-    return request({
-        url: 'item/editRuleIdByItemId',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: 'item/editRuleIdByItemId',
+    method: 'get',
+    params: query
+  })
 }
 
 // 删除关联商品
 export function removeRelateByItemId(query) {
-    return request({
-        url: 'item/removeRelateByItemId',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: 'item/removeRelateByItemId',
+    method: 'get',
+    params: query
+  })
 }
 
 
 //  达人详情
 export function getPromoterInfo(query) {
-    return request({
-        url: '/kuaishou/promoter/getPromoterInfo',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/kuaishou/promoter/getPromoterInfo',
+    method: 'get',
+    params: query
+  })
 }
 
 //  物流详情
 export function courierNumberInfo(query) {
-    return request({
-        url: '/itemCollectSamples/courierNumberInfo',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/itemCollectSamples/courierNumberInfo',
+    method: 'get',
+    params: query
+  })
 }
 
 
-
 //  达人详情
 export function copyInfo(query) {
-    return request({
-        url: '/itemCollectSamples/copyInfo',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/itemCollectSamples/copyInfo',
+    method: 'get',
+    params: query
+  })
 }
 
 
 //获取图片文字
 
 export function readImage(query) {
-    return request({
-        url: '/kuaishou/promoter/readImage',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: '/kuaishou/promoter/readImage',
+    method: 'post',
+    data: query
+  })
 }
 
 
 //获取图片文字
 
 export function getItemDetailByItemId(query) {
-    return request({
-        url: '/item/getItemDetailByItemId',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/getItemDetailByItemId',
+    method: 'get',
+    params: query
+  })
 }
 
 //添加关联商品
 export function editRelateByItemId(query) {
-    return request({
-        url: '/item/editRelateByItemId',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/editRelateByItemId',
+    method: 'get',
+    params: query
+  })
 }
+
 //查看关联商品列表
 export function getListByRelateId(query) {
-    return request({
-        url: '/item/getListByRelateId',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/item/getListByRelateId',
+    method: 'get',
+    params: query
+  })
 }
 
 //查看规则列表
 export function getRuleListNoPage(query) {
-    return request({
-        url: '/rules/getRuleListNoPage',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/rules/getRuleListNoPage',
+    method: 'get',
+    params: query
+  })
 }
 
 //查看规则列表-有分页
 export function getRuleList(query) {
-    return request({
-        url: '/rules/getRuleList',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/rules/getRuleList',
+    method: 'get',
+    params: query
+  })
 }
 
 export function getAllRuleList(query) {
@@ -345,90 +347,150 @@ export function getAllRuleList(query) {
 
 //新增规则
 export function addRule(query) {
-    return request({
-        url: '/rules/addRule',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: '/rules/addRule',
+    method: 'post',
+    data: query
+  })
 }
+
 //编辑规则名称
 export function editRule(query) {
-    return request({
-        url: '/rules/edit',
-        method: 'put',
-        data: query
-    })
+  return request({
+    url: '/rules/edit',
+    method: 'put',
+    data: query
+  })
 }
+
 //删除规则
 export function removeRule(query) {
-    return request({
-        url: '/rules/remove',
-        method: 'delete',
-        params: query
-    })
+  return request({
+    url: '/rules/remove',
+    method: 'delete',
+    params: query
+  })
 }
+
 //查看规则详情
 export function getRuleDetailByRuleId(query) {
-    return request({
-        url: '/rules/getRuleDetailByRuleId',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/rules/getRuleDetailByRuleId',
+    method: 'get',
+    params: query
+  })
 }
 
 //规则详情修改
 export function editDetail(query) {
-    return request({
-        url: '/detail/edit',
-        method: 'put',
-        data: query
-    })
+  return request({
+    url: '/detail/edit',
+    method: 'put',
+    data: query
+  })
 }
+
 //规则详情-单条添加
 export function addDetail(query) {
-    return request({
-        url: '/detail/add',
-        method: 'post',
-        data: query
-    })
+  return request({
+    url: '/detail/add',
+    method: 'post',
+    data: query
+  })
 }
 
 
 //基地结算列表
 export function getSettlementList(query) {
-    return request({
-        url: '/settlement/getSettlementList',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/settlement/getSettlementList',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getSettlementListV2(query) {
+  return request({
+    url: '/settlement/getSettlementListV2',
+    method: 'get',
+    params: query
+  })
 }
 
 //基地结算--修改状态
 export function updatePromoterStatus(query) {
-    return request({
-        url: '/settlement/edit',
-        method: 'put',
-        params: query
-    })
+  return request({
+    url: '/settlement/edit',
+    method: 'put',
+    params: query
+  })
+}
+
+
+export function updatePromoterStatusTotal(query) {
+  return request({
+    url: '/settlement/updatePromoterStatus',
+    method: 'get',
+    params: query
+  })
 }
 
 //基地结算--详情
 export function getPromoterSettlementDetail(query) {
-    return request({
-        url: '/settlement/getPromoterSettlementDetail',
-        method: 'get',
-        params: query
-    })
+  return request({
+    url: '/settlement/getPromoterSettlementDetail',
+    method: 'get',
+    params: query
+  })
 }
+
 //基地结算--详情结算
 export function editStatus(query) {
-    return request({
-        url: '/settlement/edit',
-        method: 'put',
-        data: query
-    })
+  return request({
+    url: '/settlement/edit',
+    method: 'put',
+    data: query
+  })
+}
+
+export function updateStatus(query) {
+  return request({
+    url: '/settlement/update',
+    method: 'put',
+    data: query
+  })
+}
+
+export function financialReviewList(query) {
+  return request({
+    url: '/financialReview/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function updateFinancialReviewStatusTotal(query) {
+  return request({
+    url: '/financialReview/updateFinancialReviewStatusTotal',
+    method: 'get',
+    params: query
+  })
 }
 
+export function detailList(query) {
+  return request({
+    url: '/financialReview/detailList',
+    method: 'get',
+    params: query
+  })
+}
+export function updateFinancialReviewDetails(query) {
+  return request({
+    url: '/financialReview/updateFinancialReviewDetails',
+    method: 'get',
+    params: query
+  })
+}
 
 
 

+ 8 - 0
src/api/jiaoyang/report.js

@@ -127,5 +127,13 @@ export function getTimeRatio(query) {
 }
 
 
+export function profitData(query) {
+  return request({
+    url: '/jy/report/profitData',
+    method: 'get',
+    params: query
+  })
+}
+
 
 

+ 324 - 0
src/views/goodsManagement/financialReview.vue

@@ -0,0 +1,324 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="100px"
+    >
+
+      <el-form-item label="达人ID" prop="promoterId">
+        <el-input
+          placeholder="请输入达人ID"
+          style="width: 240px"
+          v-model="queryParams.promoterId"
+        >
+        </el-input>
+      </el-form-item>
+      <el-form-item label="选择日期">
+        <el-date-picker
+          v-model="uploadDate"
+          style="width: 240px"
+          value-format="yyyy-MM-dd"
+          format="yyyy-MM-dd"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
+        >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          plain
+          size="mini"
+          @click="upload"
+          style="margin-bottom: 15px"
+        >导出</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-table v-loading="loading" :data="typeList" ref="multipleTable">
+      <el-table-column label="归属人" align="center" prop="userName"></el-table-column>
+
+      <el-table-column label="达人ID" align="center" prop="promoterId">
+        <template slot-scope="scope">
+          <a style="text-align: center" @click="toDetail(scope.row)"
+          >{{ scope.row.promoterId }}
+          </a>
+        </template>
+      </el-table-column>
+      <el-table-column label="达人名称" align="center" prop="promoterName">
+        <template slot-scope="scope">
+          <a style="text-align: center" @click="toDetail(scope.row)"
+          >{{ scope.row.promoterName }}
+          </a>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="达人激励" align="center" prop="anchorAmount">
+      </el-table-column>
+      <el-table-column label="推荐人激励" align="center" prop="referenceAmount">
+      </el-table-column>
+
+      <el-table-column label="操作" align="center" prop="action">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" :disabled="scope.row.waitAnchorAmount <= 0" @click="removeRule(scope.row)"
+          >结算
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+      :pageSizes="[10, 20, 30, 50]"
+    />
+
+
+  </div>
+</template>
+
+<script>
+  import { refreshCache } from "@/api/system/dict/type";
+  import { downFilePost } from "@/api/supplyChain/supplyChain";
+  import {
+    financialReviewList,
+    updateFinancialReviewStatusTotal,
+  } from "@/api/goodsManagement/goods";
+  export default {
+    name: "Rule-Config",
+    components: {},
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: null,
+        okIds: null,
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 字典表格数据
+        typeList: [],
+        //上传文件类型
+        fileType: [".doc", ".xls", ".xlsx", ".ppt", ".pdf", ".csv"],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        openFp: false,
+        formFp: {},
+        // 是否可编辑
+        edit: false,
+        // 分配销售
+        openAllocation: false,
+        // 选择的销售id
+        saleId: undefined,
+        // 销售列表
+        saleList: [],
+        // 分配销售确定loading
+        confirmLoadingSale: false,
+        // 日期范围
+        dateRange: [],
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          promoterId: undefined,
+          promoterName: undefined,
+        },
+        uploadDate: new Date(),
+        //页面所有的下拉数据
+        queryParamsList: {},
+        // 表单参数
+        form: {},
+        formBroadcast: {
+          ruleDetails: [],
+        },
+        //上传报表下拉数据
+        formList: {},
+        fileList: [],
+        accept: "",
+        //获取销售线索文件流
+        dateFile: new FormData(),
+        //销售线索上传loading
+        confirmLoading: false,
+        // 表单校验
+        rules: {},
+        rulesBroadcast: {
+
+
+        },
+        // 分配销售展示列表
+        ksInfo: null,
+        userId: null,
+      };
+    },
+    created() {
+      this.userId = this.$store.getters.userId;
+      let start = new Date();
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
+      let date = new Date(start);
+      let y = date.getFullYear();
+      let MM = date.getMonth() + 1;
+      MM = MM < 10 ? "0" + MM : MM;
+      let dd = date.getDate();
+      dd = dd < 10 ? "0" + dd : dd;
+      this.uploadDate = `${y}-${MM}-${dd}`;
+
+      this.getList();
+    },
+    filters: {},
+    methods: {
+      toDetail(item) {
+        this.$router.replace({
+          path: "/goodsManagement/financialReviewDetails",
+          query: {
+            statDate: this.uploadDate,
+            promoterId: item.promoterId,
+          },
+        });
+      },
+      removeRule(item) {
+        this.$modal
+          .confirm(`请确认是否结算此数据?`)
+          .then(() => {
+            var params = {};
+            params.promoterId = +item.promoterId;
+            params.statDate = this.uploadDate;
+            params.status = 2;
+            updateFinancialReviewStatusTotal(params)
+              .then((res) => {
+                this.getList();
+                this.$modal.msgSuccess("结算成功");
+              })
+              .catch(() => {});
+          })
+          .catch(() => {});
+      },
+      /** 查询字典类型列表 */
+      getList() {
+        this.loading = true;
+        this.typeList = [];
+        financialReviewList({ statDate: this.uploadDate, ...this.queryParams })
+          .then((response) => {
+            this.loading = false;
+            this.typeList = response.rows;
+            this.total = response.total;
+          })
+          .catch((err) => {
+            console.log(err);
+          });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.confirmLoading = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {};
+        this.dateFile = null;
+        this.resetForm("formBroadcast");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.dateRange = [];
+        let start = new Date();
+        start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
+        let date = new Date(start);
+        let y = date.getFullYear();
+        let MM = date.getMonth() + 1;
+        MM = MM < 10 ? "0" + MM : MM;
+        let dd = date.getDate();
+        dd = dd < 10 ? "0" + dd : dd;
+        this.uploadDate = `${y}-${MM}-${dd}`;
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      upload() {
+        downFilePost("/settlement/exportSettlementList", {
+          statDate: this.uploadDate,
+          ...this.queryParams,
+        }).then((res) => {
+          let blob = new Blob([res], {
+            type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+          });
+          let downloadElement = document.createElement("a");
+          let href = window.URL.createObjectURL(blob); //创建下载的链接
+          downloadElement.href = href;
+          downloadElement.download = "激励结算.xlsx"; //下载后文件名
+          document.body.appendChild(downloadElement);
+          downloadElement.click(); //点击下载
+          document.body.removeChild(downloadElement); //下载完成移除元素
+          window.URL.revokeObjectURL(href); //释放掉blob对象
+        });
+      },
+      addNew() {
+        this.openAllocation = true;
+        this.edit = false;
+        this.ids = null;
+        this.confirmLoading = false;
+        this.formBroadcast = {};
+        setTimeout(() => {
+          this.$refs.formBroadcast.clearValidate();
+        }, 0);
+        this.$set(this.formBroadcast, "ruleDetails", []);
+      },
+
+
+    },
+  };
+</script>
+<style lang="scss" scoped>
+  .entire-line {
+    width: 100%;
+  }
+
+  ::v-deep .entire-line .el-form-item__content {
+    width: 60%;
+  }
+
+  ::v-deep .el-form-item__label {
+    white-space: nowrap;
+  }
+</style>
+<style scoped lang="scss">
+  ::v-deep a {
+    color: #409eff;
+    display: block;
+    text-align: left;
+  }
+
+  .item-name-calss p {
+    margin: 0;
+    text-align: left;
+  }
+
+  .tableBox {
+    width: 100%;
+  }
+</style>

+ 309 - 0
src/views/goodsManagement/financialReviewDetails.vue

@@ -0,0 +1,309 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="100px"
+    >
+ <!--     <el-form-item label="结算状态" prop="settlementStatus">
+        <el-select
+          v-model="queryParams.settlementStatus"
+          placeholder="请选择结算状态"
+          clearable
+          style="width: 240px"
+        >
+          <el-option label="未达到结算条件" value="1"/>
+          <el-option label="待结算" value="2"/>
+          <el-option label="已结算" value="3"/>
+        </el-select>
+      </el-form-item>-->
+
+      <el-form-item label="商品ID" prop="itemId">
+        <el-input
+          placeholder="请输入商品ID"
+          style="width: 240px"
+          v-model="queryParams.itemId"
+        >
+        </el-input>
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          plain
+          size="mini"
+          @click="upload"
+          style="margin-bottom: 15px"
+          >导出</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-table v-loading="loading" :data="typeList" ref="multipleTable">
+
+      <el-table-column label="商品归属人" align="center" prop="itemCreateName"   width="150"></el-table-column>
+      <el-table-column label="达人归属人" align="center" prop="promoterCreateName"  width="150"></el-table-column>
+      <el-table-column label="商品名称" align="center" prop="itemName"  width="200"> </el-table-column>
+      <el-table-column label="商品ID" align="center" prop="itemIds"  width="200"> </el-table-column>
+      <el-table-column label="达人名称" align="center" prop="promoterName"  width="150"></el-table-column>
+      <el-table-column label="达人ID" align="center" prop="promoterId"  width="150"> </el-table-column>
+      <el-table-column label="达人激励金额" align="center" prop="anchorAmount"  width="150"> </el-table-column>
+      <el-table-column label="推荐人激励" align="center" prop="referenceAmount"  width="150"> </el-table-column>
+      <el-table-column label="备注" align="center" prop="remarks"  width="150"> </el-table-column>
+      <el-table-column   width="150" label="结算状态" align="center" prop="settlementStatusStr">
+      </el-table-column>
+      <el-table-column label="操作" align="center" prop="action"  width="100">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" :disabled="scope.row.settlementStatus == 2" @click="removeRule(scope.row)"
+           >付款
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+      :pageSizes="[10, 20, 30, 50]"
+    />
+
+    <!-- 添加直播 -->
+  </div>
+</template>
+
+<script>
+import { downFilePost } from "@/api/supplyChain/supplyChain";
+import {
+  detailList,
+  updateFinancialReviewDetails,
+} from "@/api/goodsManagement/goods";
+export default {
+  name: "Rule-Config",
+  components: {},
+  data() {
+    return {
+      consigneeEdit: false,
+
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: null,
+      okIds: null,
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 字典表格数据
+      typeList: [],
+      //上传文件类型
+      fileType: [".doc", ".xls", ".xlsx", ".ppt", ".pdf", ".csv"],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      openFp: false,
+      formFp: {},
+      // 是否可编辑
+      edit: false,
+      // 分配销售
+      openAllocation: false,
+      // 选择的销售id
+      saleId: undefined,
+      // 销售列表
+      saleList: [],
+      // 分配销售确定loading
+      confirmLoadingSale: false,
+      // 日期范围
+      dateRange: [],
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        settlementStatus:undefined
+      },
+      uploadDate: new Date(),
+      //页面所有的下拉数据
+      queryParamsList: {},
+      // 表单参数
+      form: {},
+      formBroadcast: {
+        ruleDetails: [],
+      },
+      //上传报表下拉数据
+      formList: {},
+      fileList: [],
+      accept: "",
+      //获取销售线索文件流
+      dateFile: new FormData(),
+      //销售线索上传loading
+      confirmLoading: false,
+      // 表单校验
+      rules: {},
+      rulesBroadcast: {
+        ruleName: {
+          required: true,
+          message: "规则名称必填",
+          trigger: "blur",
+        },
+        ruleType: {
+          required: true,
+          message: "规则类型必选",
+          trigger: "change",
+        },
+      },
+      // 分配销售展示列表
+      ksInfo: null,
+      userId: null,
+    };
+  },
+  created() {
+    this.userId = this.$store.getters.userId;
+
+    // let start = new Date();
+    // start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
+    // let date = new Date(start);
+    // let y = date.getFullYear();
+    // let MM = date.getMonth() + 1;
+    // MM = MM < 10 ? "0" + MM : MM;
+    // let dd = date.getDate();
+    // dd = dd < 10 ? "0" + dd : dd;
+    // this.uploadDate = `${y}-${MM}-${dd}`;
+
+    if (this.$route && this.$route.query.statDate && this.$route.query.promoterId) {
+      this.getList();
+    }
+  },
+  filters: {},
+  methods: {
+    removeRule(item) {
+      this.$modal
+        .confirm(`请确认是否结算此数据?`)
+        .then(() => {
+          var params = {};
+          params.id = +item.id;
+          params.status = 2;
+          updateFinancialReviewDetails(params)
+            .then((res) => {
+              this.getList();
+              this.$modal.msgSuccess("结算成功");
+            })
+            .catch(() => {});
+        })
+        .catch(() => {});
+    },
+
+    /** 查询字典类型列表 */
+    getList() {
+      this.loading = true;
+      this.typeList = [];
+      detailList({
+        statDate: this.$route.query.statDate,
+        promoterId: this.$route.query.promoterId,
+        ...this.queryParams,
+      })
+        .then((response) => {
+          this.loading = false;
+          this.typeList = response.rows;
+          this.total = response.total;
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.confirmLoading = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {};
+      this.dateFile = null;
+      this.resetForm("formBroadcast");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.dateRange = [];
+      let start = new Date();
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
+      let date = new Date(start);
+      let y = date.getFullYear();
+      let MM = date.getMonth() + 1;
+      MM = MM < 10 ? "0" + MM : MM;
+      let dd = date.getDate();
+      dd = dd < 10 ? "0" + dd : dd;
+      this.uploadDate = `${y}-${MM}-${dd}`;
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    upload() {
+      downFilePost("/settlement/exportPromoterSettlementDetail", {
+        statDate: this.$route.query.statDate,
+        promoterId: this.$route.query.promoterId,
+      }).then((res) => {
+        let blob = new Blob([res], {
+          type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+        });
+        let downloadElement = document.createElement("a");
+        let href = window.URL.createObjectURL(blob); //创建下载的链接
+        downloadElement.href = href;
+        downloadElement.download = "激励结算详情.xlsx"; //下载后文件名
+        document.body.appendChild(downloadElement);
+        downloadElement.click(); //点击下载
+        document.body.removeChild(downloadElement); //下载完成移除元素
+        window.URL.revokeObjectURL(href); //释放掉blob对象
+      });
+    },
+
+  },
+};
+</script>
+<style lang="scss" scoped>
+.entire-line {
+  width: 100%;
+}
+
+::v-deep .entire-line .el-form-item__content {
+  width: 60%;
+}
+
+::v-deep .el-form-item__label {
+  white-space: nowrap;
+}
+</style>
+<style scoped lang="scss">
+::v-deep a {
+  color: #409eff;
+  display: block;
+  text-align: left;
+}
+
+.item-name-calss p {
+  margin: 0;
+  text-align: left;
+}
+
+.tableBox {
+  width: 100%;
+}
+</style>

+ 60 - 380
src/views/goodsManagement/settlementDetails.vue

@@ -8,7 +8,7 @@
       v-show="showSearch"
       label-width="100px"
     >
-      <el-form-item label="结算状态" prop="settlementStatus">
+ <!--     <el-form-item label="结算状态" prop="settlementStatus">
         <el-select
           v-model="queryParams.settlementStatus"
           placeholder="请选择结算状态"
@@ -19,8 +19,17 @@
           <el-option label="待结算" value="2"/>
           <el-option label="已结算" value="3"/>
         </el-select>
+      </el-form-item>-->
+
+      <el-form-item label="商品ID" prop="itemId">
+        <el-input
+          placeholder="请输入商品ID"
+          style="width: 240px"
+          v-model="queryParams.itemId"
+        >
+        </el-input>
       </el-form-item>
-     
+
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
           >搜索</el-button
@@ -38,18 +47,14 @@
     </el-form>
 
     <el-table v-loading="loading" :data="typeList" ref="multipleTable">
+
+      <el-table-column label="商品归属人" align="center" prop="itemCreateName"   width="150"></el-table-column>
+      <el-table-column label="达人归属人" align="center" prop="promoterCreateName"  width="150"></el-table-column>
       <el-table-column label="规则名称" align="center" prop="ruleName"  width="150"> </el-table-column>
+      <el-table-column label="商品名称" align="center" prop="itemName"  width="200"> </el-table-column>
       <el-table-column label="商品ID" align="center" prop="itemIds"  width="200"> </el-table-column>
+      <el-table-column label="达人名称" align="center" prop="promoterName"  width="150"></el-table-column>
       <el-table-column label="达人ID" align="center" prop="promoterId"  width="150"> </el-table-column>
-      <el-table-column label="达人名称" align="center" prop="promoterName"  width="150">
-        <template slot-scope="scope">
-          <a style="text-align: center">{{ scope.row.promoterName }} </a>
-        </template>
-      </el-table-column>
-      <el-table-column label="商品归属人" align="center" prop="itemCreateName"   width="150">
-      </el-table-column>
-      <el-table-column label="达人归属人" align="center" prop="promoterCreateName"  width="150">
-      </el-table-column>
       <el-table-column label="单量" align="center" prop="orderNum"> </el-table-column>
       <el-table-column label="有效单量" align="center" prop="validOrderNum"  width="100">
       </el-table-column>
@@ -60,17 +65,45 @@
         prop="lastSettlementOrderNum"
       >
       </el-table-column>
-      <el-table-column  width="150" label="达人激励金额" align="center" prop="anchorAmount">
+      <el-table-column  width="150" label="达人激励金额" align="center" prop="anchorAmount" >
+        <template slot-scope="scope">
+          <el-input
+            v-model="scope.row.anchorAmount"
+            placeholder="请输入内容"
+          >
+          </el-input>
+        </template>
       </el-table-column>
 
-      <el-table-column   width="150" label="推荐人激励" align="center" prop="referenceAmount">
+      <el-table-column  width="150" label="推荐人激励" align="center" prop="referenceAmount" >
+        <template slot-scope="scope">
+          <el-input
+            v-model="scope.row.referenceAmount"
+            placeholder="请输入内容"
+          >
+          </el-input>
+        </template>
+      </el-table-column>
+
+
+      <el-table-column  width="200" label="备注" align="center" prop="remarks" >
+        <template slot-scope="scope">
+          <el-input
+            type="textarea"
+            v-model="scope.row.remarks"
+            placeholder="请输入内容"
+          >
+          </el-input>
+        </template>
       </el-table-column>
+
+
       <el-table-column   width="150" label="结算状态" align="center" prop="settlementStatusStr">
       </el-table-column>
       <el-table-column label="操作" align="center" prop="action"  width="100">
         <template slot-scope="scope">
-          <el-button size="mini" type="text" :disabled="scope.row.settlementStatus!=2" @click="removeRule(scope.row)"
-            >结算
+          <el-button size="mini" type="text" :disabled="scope.row.settlementStatus == 3" @click="removeRule(scope.row)"
+           >结算
           </el-button>
         </template>
       </el-table-column>
@@ -86,237 +119,22 @@
     />
 
     <!-- 添加直播 -->
-    <el-dialog
-      :title="!!ids ? '修改规则' : '新增规则'"
-      :visible.sync="openAllocation"
-      width="800px"
-      append-to-body
-      :close-on-click-modal="false"
-    >
-      <el-form
-        ref="formBroadcast"
-        :model="formBroadcast"
-        :rules="rulesBroadcast"
-        label-width="150px"
-        :inline="true"
-      >
-        <span
-          style="
-            color: red;
-            display: inline-block;
-            width: 100%;
-            text-align: center;
-            font-size: 18px;
-          "
-        >
-          新增完成后,子规则不可删除</span
-        >
-
-        <el-form-item label="创建人" prop="userName" style="width: 100%">
-          {{ $store.getters.name }}
-        </el-form-item>
-        <el-form-item
-          label="规则名称"
-          prop="ruleName"
-          style="width: 100%"
-          class="entire-line"
-        >
-          <el-input
-            placeholder="请输入规则名称"
-            style="width: 240px"
-            :disabled="!!ids"
-            v-model="formBroadcast.ruleName"
-          >
-          </el-input>
-        </el-form-item>
-        <el-form-item
-          label="规则类型"
-          prop="ruleType"
-          style="width: 100%"
-          class="entire-line"
-        >
-          <el-select
-            filterable
-            :disabled="!!ids"
-            v-model="formBroadcast.ruleType"
-            placeholder="请选择规则类型"
-            clearable
-            style="width: 240px"
-          >
-            <el-option label="常规规则" value="1"> </el-option>
-            <el-option label="冲量规则" value="2"> </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label=" " style="width: 100%" class="entire-line">
-          <el-button
-            type="primary"
-            plain
-            icon="el-icon-document-add"
-            size="mini"
-            @click="
-              formBroadcast.ruleDetails.push({
-                startItemCount: undefined,
-                endItemCount: undefined,
-                anchorAmount: undefined,
-                referenceAmount: undefined,
-              })
-            "
-            >子规则新增
-          </el-button>
-        </el-form-item>
-        <div
-          style="
-            height: 300px;
-            overflow-y: auto;
-            width: 100%;
-            overflow-x: hidden;
-            border: 2px solid #f2f2f2;
-            padding-top: 10px;
-          "
-          v-if="formBroadcast.ruleDetails.length > 0"
-        >
-          <div
-            v-for="(item, index) in formBroadcast.ruleDetails"
-            :key="index"
-            style="position: relative"
-          >
-            <div style="position: absolute; right: 25px">
-              <el-button
-                type="error"
-                plain
-                icon="el-icon-close"
-                size="mini"
-                v-if="!item.id"
-                @click="formBroadcast.ruleDetails.splice(index, 1)"
-                >删除</el-button
-              >
-              <el-button
-                type="error"
-                plain
-                size="mini"
-                @click="addOrEdit(item, index)"
-                v-if="!!ids"
-                >确定</el-button
-              >
-            </div>
-
-            <el-form-item
-              label="序号"
-              prop="sortCount"
-              style="width: 100%"
-              class="entire-line"
-            >
-              {{ index + 1 }}
-            </el-form-item>
-            <el-form-item
-              label="起始单数"
-              style="width: 100%"
-              class="entire-line"
-              :prop="'ruleDetails.' + index + '.startItemCount'"
-              :rules="{
-                required: true,
-                message: '起始单数不能为空',
-                trigger: 'blur',
-              }"
-            >
-              <el-input
-                placeholder="请输入起始单数"
-                style="width: 240px"
-                v-model.number="item.startItemCount"
-              >
-              </el-input>
-            </el-form-item>
-            <el-form-item
-              label="结束单数"
-              :prop="'ruleDetails.' + index + '.endItemCount'"
-              :rules="{
-                required: true,
-                message: '结束单数不能为空',
-                trigger: 'blur',
-              }"
-              style="width: 100%"
-              class="entire-line"
-            >
-              <el-input
-                placeholder="请输入结束单数"
-                style="width: 240px"
-                v-model.number="item.endItemCount"
-              >
-              </el-input>
-            </el-form-item>
-            <el-form-item
-              label="主播奖励金额"
-              :prop="'ruleDetails.' + index + '.anchorAmount'"
-              :rules="{
-                required: true,
-                message: '主播奖励金额不能为空',
-                trigger: 'blur',
-              }"
-              style="width: 100%"
-              class="entire-line"
-            >
-              <el-input-number
-                style="width: 240px"
-                v-model="item.anchorAmount"
-                :precision="2"
-                :step="0.1"
-                :min="0"
-                placeholder="请输入主播奖励金额"
-              ></el-input-number>
-            </el-form-item>
-            <el-form-item
-              label="推荐人奖励金额"
-              prop="referenceAmount"
-              style="width: 100%"
-              class="entire-line"
-            >
-              <el-input-number
-                style="width: 240px"
-                v-model="item.referenceAmount"
-                :precision="2"
-                :step="0.1"
-                :min="0"
-                placeholder="请输入推荐人奖励金额"
-              ></el-input-number>
-            </el-form-item>
-          </div>
-        </div>
-      </el-form>
-      <div slot="footer" class="dialog-footer" v-if="!ids">
-        <el-button type="primary" @click="submitFormBroadcast" :loading="confirmLoading"
-          >确 定</el-button
-        >
-        <el-button
-          @click="
-            confirmLoading = false;
-            openAllocation = false;
-            formBroadcast = {};
-          "
-          >取 消</el-button
-        >
-      </div>
-    </el-dialog>
   </div>
 </template>
 
 <script>
-import { refreshCache } from "@/api/system/dict/type";
 import { downFilePost } from "@/api/supplyChain/supplyChain";
 import {
   getPromoterSettlementDetail,
-  editStatus,
-  addRule,
-  editRule,
-  removeRule,
-  getRuleDetailByRuleId,
-  editDetail,
-  addDetail,
+  updateStatus,
 } from "@/api/goodsManagement/goods";
 export default {
   name: "Rule-Config",
   components: {},
   data() {
     return {
+      consigneeEdit: false,
+
       // 遮罩层
       loading: true,
       // 选中数组
@@ -395,69 +213,12 @@ export default {
   },
   created() {
     this.userId = this.$store.getters.userId;
-
-    // let start = new Date();
-    // start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
-    // let date = new Date(start);
-    // let y = date.getFullYear();
-    // let MM = date.getMonth() + 1;
-    // MM = MM < 10 ? "0" + MM : MM;
-    // let dd = date.getDate();
-    // dd = dd < 10 ? "0" + dd : dd;
-    // this.uploadDate = `${y}-${MM}-${dd}`;
-
     if (this.$route && this.$route.query.statDate && this.$route.query.promoterId) {
       this.getList();
     }
   },
   filters: {},
   methods: {
-    addOrEdit(item, index) {
-      if (item.id) {
-        console.log(item);
-        editDetail({
-          id: item.id,
-          ruleId: this.ids,
-          anchorAmount: item.anchorAmount,
-          endItemCount: item.endItemCount,
-          referenceAmount: item.referenceAmount,
-          sortCount: item.sortCount,
-          startItemCount: item.startItemCount,
-        }).then((res) => {
-          this.$message.success("修改成功");
-        });
-      } else {
-        addDetail({
-          ruleId: this.ids,
-          anchorAmount: item.anchorAmount,
-          endItemCount: item.endItemCount,
-          referenceAmount: item.referenceAmount,
-          sortCount: index,
-          startItemCount: item.startItemCount,
-        }).then((res) => {
-          this.$message.success("添加成功");
-        });
-      }
-    },
-    lookDetail(item) {
-      getRuleDetailByRuleId({ ruleId: item.id }).then((res) => {
-        this.ids = item.id;
-        this.edit = true;
-        this.openAllocation = true;
-        this.$set(this.formBroadcast, "ruleName", item.ruleName);
-        this.$set(this.formBroadcast, "ruleType", "" + item.ruleType);
-        this.$set(this.formBroadcast, "ruleDetails", res.data);
-      });
-    },
-    toDetail(item) {
-      this.$router.replace({
-        path: "/goodsManagement/settlementDetails",
-        query: {
-          statDate: this.uploadDate,
-          promoterId: item.promoterId,
-        },
-      });
-    },
     removeRule(item) {
       this.$modal
         .confirm(`请确认是否结算此数据?`)
@@ -465,7 +226,12 @@ export default {
           var params = {};
           params.id = +item.id;
           params.settlementStatus = 3;
-          editStatus(params)
+          params.anchorAmount = item.anchorAmount;
+          params.referenceAmount = item.referenceAmount;
+          params.itemIds = item.itemIds;
+          params.promoterId = item.promoterId;
+          params.remarks = item.remarks;
+          updateStatus(params)
             .then((res) => {
               this.getList();
               this.$modal.msgSuccess("结算成功");
@@ -474,21 +240,7 @@ export default {
         })
         .catch(() => {});
     },
-    editRuleName(item) {
-      if (!item.promoterPhoneEdit) {
-        item.promoterPhoneEdit = !item.promoterPhoneEdit;
-      } else {
-        if (!!item.ruleName) {
-          editRule({ ruleName: item.ruleName, id: item.id })
-            .then((res) => {
-              this.handleQuery();
-            })
-            .catch(() => {});
-        } else {
-          this.$message.error("规则名称不能不填");
-        }
-      }
-    },
+
     /** 查询字典类型列表 */
     getList() {
       this.loading = true;
@@ -557,80 +309,8 @@ export default {
         window.URL.revokeObjectURL(href); //释放掉blob对象
       });
     },
-    addNew() {
-      this.openAllocation = true;
-      this.edit = false;
-      this.ids = null;
-      this.confirmLoading = false;
-      this.formBroadcast = {};
-      setTimeout(() => {
-        this.$refs.formBroadcast.clearValidate();
-      }, 0);
-      this.$set(this.formBroadcast, "ruleDetails", []);
-    },
-    /** 编辑地址 新增达人*/
-    handleAddbroadcast(item) {
-      this.ids = item.id;
-      this.edit = true;
-      this.openAllocation = true;
-      this.$set(this.formBroadcast, "consignee", item.consignee);
-      this.$set(this.formBroadcast, "phone", item.phone);
-      this.$set(this.formBroadcast, "promoterAddress", item.promoterAddress);
-      this.$set(this.formBroadcast, "ruleName", item.ruleName);
-      this.$set(this.formBroadcast, "promoterId", item.promoterId);
-    },
-    /** 修改按钮操作 */
-    handleUpdate(row) {
-      this.reset();
-    },
-    /** 新增直播确定按钮 */
-    submitFormBroadcast: function () {
-      this.$refs["formBroadcast"].validate((valid) => {
-        if (valid) {
-          this.confirmLoading = true;
-          let formData = {
-            userId: this.userId,
-            userName: this.$store.getters.name,
-            ...this.formBroadcast,
-            ruleDetails: this.formBroadcast.ruleDetails.map((item, index) => {
-              return {
-                ...item,
-                sortCount: index + 1,
-              };
-            }),
-          };
-          console.log(formData);
-          if (!this.ids) {
-            addRule(formData)
-              .then((res) => {
-                this.confirmLoading = false;
-                this.$message.success("新增成功");
-                this.openAllocation = false;
-                this.ids = null;
-                this.cancel();
-                this.handleQuery();
-              })
-              .catch((err) => {
-                this.confirmLoading = false;
-              });
-          } else {
-            formData.id = this.ids;
-            editRule(formData)
-              .then((res) => {
-                this.confirmLoading = false;
-                this.$message.success("修改成功");
-                this.openAllocation = false;
-                this.ids = null;
-                this.cancel();
-                this.handleQuery();
-              })
-              .catch((err) => {
-                this.confirmLoading = false;
-              });
-          }
-        }
-      });
-    },
+
+
   },
 };
 </script>

+ 326 - 0
src/views/goodsManagement/settlementv2.vue

@@ -0,0 +1,326 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="100px"
+    >
+
+      <el-form-item label="达人ID" prop="promoterId">
+        <el-input
+          placeholder="请输入达人ID"
+          style="width: 240px"
+          v-model="queryParams.promoterId"
+        >
+        </el-input>
+      </el-form-item>
+      <el-form-item label="选择日期">
+        <el-date-picker
+          v-model="uploadDate"
+          style="width: 240px"
+          value-format="yyyy-MM-dd"
+          format="yyyy-MM-dd"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
+        >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          plain
+          size="mini"
+          @click="upload"
+          style="margin-bottom: 15px"
+        >导出</el-button
+        >
+      </el-form-item>
+    </el-form>
+
+    <el-table v-loading="loading" :data="typeList" ref="multipleTable">
+      <el-table-column label="归属人" align="center" prop="userName"></el-table-column>
+
+      <el-table-column label="达人ID" align="center" prop="promoterId">
+        <template slot-scope="scope">
+          <a style="text-align: center" @click="toDetail(scope.row)"
+          >{{ scope.row.promoterId }}
+          </a>
+        </template>
+      </el-table-column>
+      <el-table-column label="达人名称" align="center" prop="promoterName">
+        <template slot-scope="scope">
+          <a style="text-align: center" @click="toDetail(scope.row)"
+          >{{ scope.row.promoterName }}
+          </a>
+        </template>
+      </el-table-column>
+
+      <el-table-column label="达人激励" align="center" prop="anchorAmount">
+      </el-table-column>
+      <el-table-column label="推荐人激励" align="center" prop="referenceAmount">
+      </el-table-column>
+
+      <el-table-column label="操作" align="center" prop="action">
+        <template slot-scope="scope">
+          <el-button size="mini" type="text" :disabled="scope.row.waitAnchorAmount <= 0" @click="removeRule(scope.row)"
+          >结算
+          </el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total > 0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+      :pageSizes="[10, 20, 30, 50]"
+    />
+
+
+  </div>
+</template>
+
+<script>
+  import { refreshCache } from "@/api/system/dict/type";
+  import { downFilePost } from "@/api/supplyChain/supplyChain";
+  import {
+    getSettlementListV2,
+    updatePromoterStatusTotal,
+    addRule,
+    editRule,
+    getRuleDetailByRuleId,
+    editDetail,
+    addDetail,
+  } from "@/api/goodsManagement/goods";
+  export default {
+    name: "Rule-Config",
+    components: {},
+    data() {
+      return {
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: null,
+        okIds: null,
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 字典表格数据
+        typeList: [],
+        //上传文件类型
+        fileType: [".doc", ".xls", ".xlsx", ".ppt", ".pdf", ".csv"],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        openFp: false,
+        formFp: {},
+        // 是否可编辑
+        edit: false,
+        // 分配销售
+        openAllocation: false,
+        // 选择的销售id
+        saleId: undefined,
+        // 销售列表
+        saleList: [],
+        // 分配销售确定loading
+        confirmLoadingSale: false,
+        // 日期范围
+        dateRange: [],
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          promoterId: undefined,
+          promoterName: undefined,
+        },
+        uploadDate: new Date(),
+        //页面所有的下拉数据
+        queryParamsList: {},
+        // 表单参数
+        form: {},
+        formBroadcast: {
+          ruleDetails: [],
+        },
+        //上传报表下拉数据
+        formList: {},
+        fileList: [],
+        accept: "",
+        //获取销售线索文件流
+        dateFile: new FormData(),
+        //销售线索上传loading
+        confirmLoading: false,
+        // 表单校验
+        rules: {},
+        rulesBroadcast: {
+          ruleName: {
+            required: true,
+            message: "规则名称必填",
+            trigger: "blur",
+          },
+          ruleType: {
+            required: true,
+            message: "规则类型必选",
+            trigger: "change",
+          },
+        },
+        // 分配销售展示列表
+        ksInfo: null,
+        userId: null,
+      };
+    },
+    created() {
+      this.userId = this.$store.getters.userId;
+
+      let start = new Date();
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
+      let date = new Date(start);
+      let y = date.getFullYear();
+      let MM = date.getMonth() + 1;
+      MM = MM < 10 ? "0" + MM : MM;
+      let dd = date.getDate();
+      dd = dd < 10 ? "0" + dd : dd;
+      this.uploadDate = `${y}-${MM}-${dd}`;
+
+      this.getList();
+    },
+    filters: {},
+    methods: {
+      toDetail(item) {
+        this.$router.replace({
+          path: "/goodsManagement/settlementDetails",
+          query: {
+            statDate: this.uploadDate,
+            promoterId: item.promoterId,
+          },
+        });
+      },
+      removeRule(item) {
+        this.$modal
+          .confirm(`请确认是否结算此数据?`)
+          .then(() => {
+            var params = {};
+            params.promoterId = +item.promoterId;
+            params.statDate = this.uploadDate;
+            params.status = 3;
+            updatePromoterStatusTotal(params)
+              .then((res) => {
+                this.getList();
+                this.$modal.msgSuccess("结算成功");
+              })
+              .catch(() => {});
+          })
+          .catch(() => {});
+      },
+
+      /** 查询字典类型列表 */
+      getList() {
+        this.loading = true;
+        this.typeList = [];
+        getSettlementListV2({ statDate: this.uploadDate, ...this.queryParams })
+          .then((response) => {
+            this.loading = false;
+            this.typeList = response.rows;
+            this.total = response.total;
+          })
+          .catch((err) => {
+            console.log(err);
+          });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.confirmLoading = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {};
+        this.dateFile = null;
+        this.resetForm("formBroadcast");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.dateRange = [];
+        let start = new Date();
+        start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
+        let date = new Date(start);
+        let y = date.getFullYear();
+        let MM = date.getMonth() + 1;
+        MM = MM < 10 ? "0" + MM : MM;
+        let dd = date.getDate();
+        dd = dd < 10 ? "0" + dd : dd;
+        this.uploadDate = `${y}-${MM}-${dd}`;
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+      upload() {
+        downFilePost("/settlement/exportSettlementList", {
+          statDate: this.uploadDate,
+          ...this.queryParams,
+        }).then((res) => {
+          let blob = new Blob([res], {
+            type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+          });
+          let downloadElement = document.createElement("a");
+          let href = window.URL.createObjectURL(blob); //创建下载的链接
+          downloadElement.href = href;
+          downloadElement.download = "激励结算.xlsx"; //下载后文件名
+          document.body.appendChild(downloadElement);
+          downloadElement.click(); //点击下载
+          document.body.removeChild(downloadElement); //下载完成移除元素
+          window.URL.revokeObjectURL(href); //释放掉blob对象
+        });
+      },
+    },
+  };
+</script>
+<style lang="scss" scoped>
+  .entire-line {
+    width: 100%;
+  }
+
+  ::v-deep .entire-line .el-form-item__content {
+    width: 60%;
+  }
+
+  ::v-deep .el-form-item__label {
+    white-space: nowrap;
+  }
+</style>
+<style scoped lang="scss">
+  ::v-deep a {
+    color: #409eff;
+    display: block;
+    text-align: left;
+  }
+
+  .item-name-calss p {
+    margin: 0;
+    text-align: left;
+  }
+
+  .tableBox {
+    width: 100%;
+  }
+</style>

+ 254 - 0
src/views/jiaoyang/jyGrossMargin.vue

@@ -0,0 +1,254 @@
+<template>
+  <div class="app-container">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="100px"
+    >
+      <el-form-item label="选择日期">
+        <el-date-picker
+          v-model="uploadDate"
+          style="width: 240px"
+          value-format="yyyy-MM-dd"
+          format="yyyy-MM-dd"
+          range-separator="-"
+          start-placeholder="开始日期"
+          end-placeholder="结束日期"
+        ></el-date-picker>
+      </el-form-item>
+
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
+        >搜索
+        </el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <!-- <el-button
+           type="primary"
+           plain
+           size="mini"
+           @click="upload"
+           style="margin-bottom: 15px"
+         >导出
+         </el-button
+         >-->
+      </el-form-item>
+    </el-form>
+
+    <el-table v-loading="loading" :data="dayArray" ref="multipleTable">
+
+      <el-table-column label="时间" align="center" prop="date"></el-table-column>
+      <el-table-column label="总Gmv" align="center" prop="gmv"></el-table-column>
+      <el-table-column label="订单量" align="center" prop="orderNum"></el-table-column>
+      <el-table-column label="有效Gmv" align="center" prop="validGmv"></el-table-column>
+      <el-table-column label="有效订单" align="center" prop="validOrderNum"></el-table-column>
+      <el-table-column label="预估佣金收入" align="center" prop="mcnPromotionAmount"></el-table-column>
+      <el-table-column label="毛利率" align="center" prop="grossMargin">
+        <template slot-scope="scope" v-if="scope.row.grossMargin != null">
+          {{ scope.row.grossMargin + "%" }}
+        </template>
+      </el-table-column>
+
+
+    </el-table>
+
+  </div>
+</template>
+
+<script>
+  import {refreshCache} from "@/api/system/dict/type";
+  import {downFilePost} from "@/api/supplyChain/supplyChain";
+  import {
+    profitData
+  } from "@/api/jiaoyang/report";
+
+  export default {
+    name: "Rule-Config",
+    components: {},
+    data() {
+      return {
+
+        dayArray: [],
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: null,
+        okIds: null,
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 字典表格数据
+        //上传文件类型
+        fileType: [".doc", ".xls", ".xlsx", ".ppt", ".pdf", ".csv"],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        openFp: false,
+        formFp: {},
+        // 是否可编辑
+        edit: false,
+        // 分配销售
+        openAllocation: false,
+        // 选择的销售id
+        saleId: undefined,
+        // 销售列表
+        saleList: [],
+        // 分配销售确定loading
+        confirmLoadingSale: false,
+        // 日期范围
+        dateRange: [],
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          promoterId: undefined,
+          promoterName: undefined,
+        },
+        uploadDate: new Date(),
+        //页面所有的下拉数据
+        queryParamsList: {},
+        // 表单参数
+        form: {},
+        formBroadcast: {
+          ruleDetails: [],
+        },
+        //上传报表下拉数据
+        formList: {},
+        fileList: [],
+        accept: "",
+        //获取销售线索文件流
+        dateFile: new FormData(),
+        //销售线索上传loading
+        confirmLoading: false,
+        // 表单校验
+        rules: {},
+        rulesBroadcast: {
+          ruleName: {
+            required: true,
+            message: "规则名称必填",
+            trigger: "blur",
+          },
+          ruleType: {
+            required: true,
+            message: "规则类型必选",
+            trigger: "change",
+          },
+        },
+        // 分配销售展示列表
+        ksInfo: null,
+        userId: null,
+      };
+    },
+    created() {
+      this.userId = this.$store.getters.userId;
+
+      let start = new Date();
+      start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
+      let date = new Date(start);
+      let y = date.getFullYear();
+      let MM = date.getMonth() + 1;
+      MM = MM < 10 ? "0" + MM : MM;
+      let dd = date.getDate();
+      dd = dd < 10 ? "0" + dd : dd;
+      this.uploadDate = `${y}-${MM}-${dd}`;
+
+      this.getList();
+    },
+    filters: {},
+    methods: {
+
+
+      /** 查询字典类型列表 */
+      getList() {
+        this.dayArray = [];
+        this.loading = true;
+        profitData({date: this.uploadDate, ...this.queryParams})
+          .then((response) => {
+            console.log(response)
+            this.loading = false;
+            this.dayArray = response.dayArray;
+
+          })
+          .catch((err) => {
+            console.log(err);
+          });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.confirmLoading = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {};
+        this.dateFile = null;
+        this.resetForm("formBroadcast");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getList();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.dateRange = [];
+        let start = new Date();
+        start.setTime(start.getTime() - 3600 * 1000 * 24 * 1);
+        let date = new Date(start);
+        let y = date.getFullYear();
+        let MM = date.getMonth() + 1;
+        MM = MM < 10 ? "0" + MM : MM;
+        let dd = date.getDate();
+        dd = dd < 10 ? "0" + dd : dd;
+        this.uploadDate = `${y}-${MM}-${dd}`;
+        this.resetForm("queryForm");
+        this.handleQuery();
+      },
+
+
+      /** 修改按钮操作 */
+      handleUpdate(row) {
+        this.reset();
+      },
+    },
+  };
+</script>
+<style lang="scss" scoped>
+  .entire-line {
+    width: 100%;
+  }
+
+  ::v-deep .entire-line .el-form-item__content {
+    width: 60%;
+  }
+
+  ::v-deep .el-form-item__label {
+    white-space: nowrap;
+  }
+</style>
+<style scoped lang="scss">
+  ::v-deep a {
+    color: #409eff;
+    display: block;
+    text-align: left;
+  }
+
+  .item-name-calss p {
+    margin: 0;
+    text-align: left;
+  }
+
+  .tableBox {
+    width: 100%;
+  }
+</style>

+ 140 - 132
src/views/jiaoyang/jyPromoterReport.vue

@@ -89,150 +89,158 @@
       </el-form-item>
     </el-form>
     <div class="tableBox">
-    <el-table
-      v-loading="loading"
-      :data="typeList"
-      @selection-change="handleSelectionChange"
-      ref="multipleTable"
-    >
-      <!-- <el-table-column type="selection" width="55" align="center" /> -->
-      <el-table-column
-        label="达人信息"
-        align="center"
-        prop="itemTitle"
-        width="400"
+      <el-table
+        v-loading="loading"
+        :data="typeList"
+        @selection-change="handleSelectionChange"
+        ref="multipleTable"
       >
-        <template slot-scope="scope">
-          <div style="display: flex; width: 100%">
-            <div style="width: 40%">
-              <img
-                :src="scope.row.headImg"
-                alt=""
-                style="width: 90px; height: auto"
-              />
-            </div>
-            <div style="width: 60%" class="item-name-calss">
-              <a
-                @click="toPromoterDetail(scope.row)"
-                style="
+        <!-- <el-table-column type="selection" width="55" align="center" /> -->
+        <el-table-column
+          label="达人信息"
+          align="center"
+          prop="itemTitle"
+          width="260"
+        >
+          <template slot-scope="scope">
+            <div style="display: flex; width: 100%">
+              <div style="width: 40%">
+                <img
+                  :src="scope.row.headImg"
+                  alt=""
+                  style="width: 90px; height: auto"
+                />
+              </div>
+              <div style="width: 60%" class="item-name-calss">
+                <a
+                  @click="toPromoterDetail(scope.row)"
+                  style="
                     text-overflow: ellipsis;
                     white-space: nowrap;
                     overflow: hidden;
                     width: 100%;
                   "
-                :title="scope.row.promoterNickName"
-              >
-                {{ scope.row.promoterNickName }}
-              </a>
-              <p>达人Id: {{ scope.row.promoterId }}</p>
+                  :title="scope.row.promoterNickName"
+                >
+                  {{ scope.row.promoterNickName }}
+                </a>
+                <p>达人Id:{{ scope.row.promoterId }}</p>
+              </div>
             </div>
-          </div>
-        </template>
-      </el-table-column>
+          </template>
+        </el-table-column>
 
-      <el-table-column label="类型" align="center" prop="mediaId" width="120px">
-        <template slot-scope="scope">
-          <div v-if="!!scope.row.type">
-            {{ scope.row.type | typeStatusName }}
-          </div>
-          <div v-else>-</div>
-        </template>
-      </el-table-column>
-      <el-table-column
-        label="单数"
-        align="center"
-        prop="orderNum"
-        width="100"
-      >
-      </el-table-column>
-      <el-table-column
-        label="有效单数"
-        align="center"
-        prop="validOrderNUm"
-        width="120"
-      />
-      <el-table-column
-        label="有效率"
-        align="center"
-        prop="validRadio"
-        width="120"
-      >
-        <template slot-scope="scope">
-          {{
-          scope.row.validRadio
-          ? (scope.row.validRadio * 100).toFixed(2) + "%"
-          : "-"
-          }}
-        </template>
-      </el-table-column>
+        <el-table-column label="类型" align="center" prop="mediaId" >
+          <template slot-scope="scope">
+            <div v-if="!!scope.row.type">
+              {{ scope.row.type | typeStatusName }}
+            </div>
+            <div v-else>-</div>
+          </template>
+        </el-table-column>
+        <el-table-column label="绑定人" align="center" prop="userName">
+          <template slot-scope="scope">
+            {{
+            scope.row.userName
+            ? scope.row.userName
+            : "-"
+            }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="挂车数"
+          align="center"
+          prop="videoCount"
+        >
+        </el-table-column>
+        <el-table-column
+          label="曝光数"
+          align="center"
+          prop="videoShow"
+        >
+        </el-table-column>
+        <el-table-column
+          label="单数"
+          align="center"
+          prop="orderNum"
+        >
+        </el-table-column>
+        <el-table-column
+          label="有效单数"
+          align="center"
+          prop="validOrderNUm"
+        />
+        <el-table-column
+          label="有效率"
+          align="center"
+          prop="validRadio"
+        >
+          <template slot-scope="scope">
+            {{
+            scope.row.validRadio
+            ? (scope.row.validRadio * 100).toFixed(2) + "%"
+            : "-"
+            }}
+          </template>
+        </el-table-column>
 
-      <el-table-column label="GMV" align="center" prop="payAmount" width="100">
-        <template slot-scope="scope">
-          {{
-          scope.row.payAmount ? (scope.row.payAmount / 100).toFixed(2) : "-"
-          }}
-        </template>
-      </el-table-column>
+        <el-table-column label="GMV" align="center" prop="payAmount">
+          <template slot-scope="scope">
+            {{
+            scope.row.payAmount ? (scope.row.payAmount / 100).toFixed(2) : "-"
+            }}
+          </template>
+        </el-table-column>
 
-      <el-table-column label="GMV(有效)" align="center" prop="validPayAmount" width="150">
-        <template slot-scope="scope">
-          {{
-          scope.row.validPayAmount ? (scope.row.validPayAmount / 100).toFixed(2) : "-"
-          }}
-        </template>
-      </el-table-column>
+        <el-table-column label="GMV(有效)" align="center" prop="validPayAmount" width="100">
+          <template slot-scope="scope">
+            {{
+            scope.row.validPayAmount ? (scope.row.validPayAmount / 100).toFixed(2) : "-"
+            }}
+          </template>
+        </el-table-column>
+
+        <el-table-column
+          label="发货数"
+          align="center"
+          prop="deliveryNum"
+        >
+        </el-table-column>
+        <el-table-column
+          label="发货率"
+          align="center"
+          prop="deliveryRadio"
+        >
+          <template slot-scope="scope">
+            {{
+            scope.row.deliveryRadio
+            ? (scope.row.deliveryRadio * 100).toFixed(2) + "%"
+            : "-"
+            }}
+          </template>
+        </el-table-column>
+        <el-table-column label="未发货数" align="center" prop="notDeliveryNum">
+        </el-table-column>
 
-      <el-table-column
-        label="发货数"
-        align="center"
-        prop="deliveryNum"
-        width="90"
-      >
-      </el-table-column>
-      <el-table-column
-        label="发货率"
-        align="center"
-        prop="deliveryRadio"
-        width="110"
-      >
-        <template slot-scope="scope">
-          {{
-          scope.row.deliveryRadio
-          ? (scope.row.deliveryRadio * 100).toFixed(2) + "%"
-          : "-"
-          }}
-        </template>
-      </el-table-column>
-      <el-table-column label="未发货数" align="center" prop="notDeliveryNum" width="110">
-      </el-table-column>
-      <el-table-column label="绑定人" align="center" prop="userName" width="180">
-        <template slot-scope="scope">
-          {{
-          scope.row.userName
-          ? scope.row.userName
-          : "-"
-          }}
-        </template>
-      </el-table-column>
 
-      <!-- <el-table-column label="订单top3(订单数)" align="center" prop="topOrders">
-         <template slot-scope="scope">
-           <a
-             v-for="(item, index) in scope.row.topOrders"
-             :key="index"
-             @click="toDetail(item)"
-             style="text-align: left"
-           >
-             <img
-               :src="item.imageUrl"
-               alt=""
-               style="width: 50px; height: auto"
-             />
-             {{ item.itemTitle }}
-           </a>
-         </template>
-       </el-table-column>-->
-    </el-table>
+        <!-- <el-table-column label="订单top3(订单数)" align="center" prop="topOrders">
+           <template slot-scope="scope">
+             <a
+               v-for="(item, index) in scope.row.topOrders"
+               :key="index"
+               @click="toDetail(item)"
+               style="text-align: left"
+             >
+               <img
+                 :src="item.imageUrl"
+                 alt=""
+                 style="width: 50px; height: auto"
+               />
+               {{ item.itemTitle }}
+             </a>
+           </template>
+         </el-table-column>-->
+      </el-table>
     </div>
 
     <pagination

+ 22 - 0
src/views/supplyChain/goods.vue

@@ -221,9 +221,31 @@
           sortable="custom"
         >
         </el-table-column>
+
         <el-table-column
           label="发货率"
           align="center"
+          prop="shippingGreen"
+        >
+          <template slot-scope="scope">
+            {{
+            scope.row.shippingGreen
+            ? (scope.row.shippingGreen * 100).toFixed(2) + "%"
+            : "-"
+            }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="有效发货数"
+          align="center"
+          prop="effDeliveryNum"
+          sortable="custom"
+        >
+        </el-table-column>
+
+        <el-table-column
+          label="有效发货率"
+          align="center"
           prop="deliveryRadio"
           sortable="custom"
         >

+ 17 - 1
src/views/supplyChain/goodsDetails.vue

@@ -84,7 +84,23 @@
       </el-table-column>
       <el-table-column label="发货数" align="center" prop="deliveryNum">
       </el-table-column>
-      <el-table-column label="发货率" align="center" prop="deliveryRadio">
+      <el-table-column
+        label="发货率"
+        align="center"
+        prop="shippingGreen"
+      >
+        <template slot-scope="scope">
+          {{
+          scope.row.shippingGreen
+          ? (scope.row.shippingGreen * 100).toFixed(2) + "%"
+          : "-"
+          }}
+        </template>
+      </el-table-column>
+
+      <el-table-column label="有效发货数" align="center" prop="effDeliveryNum">
+      </el-table-column>
+      <el-table-column label="有效发货率" align="center" prop="deliveryRadio">
         <template slot-scope="scope">
           {{
             scope.row.deliveryRadio

+ 29 - 11
src/views/supplyChain/index.vue

@@ -82,7 +82,7 @@
         label="达人名称"
         align="center"
         prop="promoterNickName"
-        width="180"
+        width="210"
       >
         <template slot-scope="scope">
           <a @click="toIndexDetail(scope.row)">
@@ -95,20 +95,18 @@
         label="单数"
         align="center"
         prop="orderNum"
-        width="80"
       >
       </el-table-column>
       <el-table-column
         label="有效单数"
         align="center"
         prop="validOrderNUm"
-        width="100"
       />
       <el-table-column
         label="有效率"
         align="center"
         prop="validRadio"
-        width="70"
+
       >
         <template slot-scope="scope">
           {{
@@ -119,7 +117,7 @@
         </template>
       </el-table-column>
 
-      <el-table-column label="GMV" align="center" prop="payAmount" width="80">
+      <el-table-column label="GMV" align="center" prop="payAmount" >
         <template slot-scope="scope">
           {{
           scope.row.payAmount ? (scope.row.payAmount / 100).toFixed(2) : "-"
@@ -139,7 +137,7 @@
         label="服务费"
         align="center"
         prop="regimentalPromotionAmount"
-        width="80"
+
       >
         <template slot-scope="scope">
           {{
@@ -155,14 +153,34 @@
         label="发货数"
         align="center"
         prop="deliveryNum"
-        width="70"
+
       >
       </el-table-column>
       <el-table-column
         label="发货率"
         align="center"
+        prop="shippingGreen"
+      >
+        <template slot-scope="scope">
+          {{
+          scope.row.shippingGreen
+          ? (scope.row.shippingGreen * 100).toFixed(2) + "%"
+          : "-"
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="有效发货数"
+        align="center"
+        prop="effDeliveryNum"
+        width="100"
+      >
+      </el-table-column>
+      <el-table-column
+        label="有效发货率"
+        align="center"
         prop="deliveryRadio"
-        width="70"
+        width="100"
       >
         <template slot-scope="scope">
           {{
@@ -172,9 +190,9 @@
           }}
         </template>
       </el-table-column>
-      <el-table-column label="未发货数" align="center" prop="notDeliveryNum" width="80">
+      <el-table-column label="未发货数" align="center" prop="notDeliveryNum" >
       </el-table-column>
-      <el-table-column label="渠道" align="center" prop="userName" width="150">
+      <el-table-column label="渠道" align="center" prop="userName" width="180">
         <template slot-scope="scope">
           {{
           scope.row.userName
@@ -184,7 +202,7 @@
         </template>
       </el-table-column>
 
-      <el-table-column label="订单top3(订单数)" align="center" prop="topOrders">
+      <el-table-column label="订单top3(订单数)" align="center" prop="topOrders" width="500">
         <template slot-scope="scope">
           <a
             v-for="(item, index) in scope.row.topOrders"

+ 16 - 1
src/views/supplyChain/indexDetails.vue

@@ -94,7 +94,22 @@
       </el-table-column>
       <el-table-column label="发货数" align="center" prop="deliveryNum" width="100">
       </el-table-column>
-      <el-table-column label="发货率" align="center" prop="deliveryRadio" width="100">
+      <el-table-column
+        label="发货率"
+        align="center"
+        prop="shippingGreen"
+      >
+        <template slot-scope="scope">
+          {{
+          scope.row.shippingGreen
+          ? (scope.row.shippingGreen * 100).toFixed(2) + "%"
+          : "-"
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="有效发货数" align="center" prop="effDeliveryNum" width="100">
+      </el-table-column>
+      <el-table-column label="有效发货率" align="center" prop="deliveryRadio" width="100">
         <template slot-scope="scope">
           {{
             scope.row.deliveryRadio

+ 16 - 1
src/views/supplyChain/investment.vue

@@ -119,7 +119,22 @@
       </el-table-column>
       <el-table-column label="发货数" align="center" prop="deliveryNum">
       </el-table-column>
-      <el-table-column label="发货率" align="center" prop="deliveryRadio">
+      <el-table-column
+        label="发货率"
+        align="center"
+        prop="shippingGreen"
+      >
+        <template slot-scope="scope">
+          {{
+          scope.row.shippingGreen
+          ? (scope.row.shippingGreen * 100).toFixed(2) + "%"
+          : "-"
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="有效发货数" align="center" prop="deliveryNum">
+      </el-table-column>
+      <el-table-column label="有效发货率" align="center" prop="deliveryRadio">
         <template slot-scope="scope">
           {{
             scope.row.deliveryRadio

+ 384 - 356
src/views/supplyChain/investmentDetails.vue

@@ -1,12 +1,13 @@
 <style scoped lang="scss">
-::v-deep a {
-  color: #409eff;
-  display: block;
-}
-p {
-  text-align: left;
-  margin: 0;
-}
+  ::v-deep a {
+    color: #409eff;
+    display: block;
+  }
+
+  p {
+    text-align: left;
+    margin: 0;
+  }
 </style>
 <template>
   <div class="app-container">
@@ -52,7 +53,8 @@ p {
 
       <el-form-item>
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"
-          >搜索</el-button
+        >搜索
+        </el-button
         >
         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
         <el-button
@@ -62,7 +64,8 @@ p {
           size="mini"
           @click="handleExport"
           :loading="downLoadLoading"
-          >导出</el-button
+        >导出
+        </el-button
         >
       </el-form-item>
     </el-form>
@@ -149,7 +152,7 @@ p {
         <template slot-scope="scope">
           <div style="display: flex; width: 100%">
             <div style="width: 40%">
-              <img :src="scope.row.imageUrl" alt="" style="width: 70px; height: auto" />
+              <img :src="scope.row.imageUrl" alt="" style="width: 70px; height: auto"/>
             </div>
             <div style="width: 60%">
               <a
@@ -167,16 +170,16 @@ p {
               <p>
                 佣金率:
                 {{
-                  scope.row.itemCommissionRate
-                    ? scope.row.itemCommissionRate / 10 + "%"
-                    : "-"
+                scope.row.itemCommissionRate
+                ? scope.row.itemCommissionRate / 10 + "%"
+                : "-"
                 }}
               </p>
             </div>
           </div>
         </template>
       </el-table-column>
-      <el-table-column label="认领人" align="center" prop="userName"> </el-table-column>
+      <el-table-column label="认领人" align="center" prop="userName"></el-table-column>
       <el-table-column label="商品单价" align="center" prop="reservePrice">
         <template slot-scope="scope">
           <p
@@ -219,15 +222,37 @@ p {
       <el-table-column
         label="发货率"
         align="center"
+        prop="shippingGreen"
+      >
+        <template slot-scope="scope">
+          {{
+          scope.row.shippingGreen
+          ? (scope.row.shippingGreen * 100).toFixed(2) + "%"
+          : "-"
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="有效发货数"
+        align="center"
+        prop="effDeliveryNum"
+        width="100"
+        sortable="custom"
+      >
+      </el-table-column>
+
+      <el-table-column
+        label="有效发货率"
+        align="center"
         prop="deliveryRadio"
         width="100"
         sortable="custom"
       >
         <template slot-scope="scope">
           {{
-            scope.row.deliveryRadio
-              ? (scope.row.deliveryRadio * 100).toFixed(2) + "%"
-              : "-"
+          scope.row.deliveryRadio
+          ? (scope.row.deliveryRadio * 100).toFixed(2) + "%"
+          : "-"
           }}
         </template>
       </el-table-column>
@@ -242,9 +267,9 @@ p {
       <el-table-column label="服务费率" align="center" prop="regimentalPromotionRate">
         <template slot-scope="scope">
           {{
-            !!scope.row.regimentalPromotionRate
-              ? scope.row.regimentalPromotionRate / 10 + "%"
-              : "-"
+          !!scope.row.regimentalPromotionRate
+          ? scope.row.regimentalPromotionRate / 10 + "%"
+          : "-"
           }}
         </template>
       </el-table-column>
@@ -260,9 +285,9 @@ p {
       >
         <template slot-scope="scope">
           {{
-            scope.row.regimentalPromotionAmount
-              ? allMoney(scope.row.regimentalPromotionAmount / 100)
-              : "-"
+          scope.row.regimentalPromotionAmount
+          ? allMoney(scope.row.regimentalPromotionAmount / 100)
+          : "-"
           }}
         </template>
       </el-table-column>
@@ -273,9 +298,9 @@ p {
       >
         <template slot-scope="scope">
           {{
-            scope.row.totalRegimentalSettleAmount
-              ? allMoney(scope.row.totalRegimentalSettleAmount / 100)
-              : "-"
+          scope.row.totalRegimentalSettleAmount
+          ? allMoney(scope.row.totalRegimentalSettleAmount / 100)
+          : "-"
           }}
         </template>
       </el-table-column>
@@ -292,329 +317,86 @@ p {
 </template>
 
 <script>
-import {
-  listType,
-  getType,
-  delType,
-  addType,
-  updateType,
-  refreshCache,
-} from "@/api/system/dict/type";
-import {
-  getOrderList,
-  getItemDetail,
-  downFilePost,
-  getUserItemDetail,
-  getUserItemTotal,
-} from "@/api/supplyChain/supplyChain";
-var echarts = require("echarts");
-export default {
-  name: "ClaimOk",
-  dicts: ["sys_normal_disable"],
-  data() {
-    return {
-      downLoadLoading: false,
-      dialogTableVisible: false,
-      logPage: {
-        pageNum: 1,
-        pageSize: 10,
-      },
-      logData: [],
-      logTotal: 0,
-      logLoading: false,
-      // 遮罩层
-      loading: true,
-      // 选中数组
-      ids: [],
-      // 非单个禁用
-      single: true,
-      // 非多个禁用
-      multiple: true,
-      // 显示搜索条件
-      showSearch: true,
-      // 总条数
-      total: 0,
-      // 字典表格数据
-      typeList: [],
-      // 弹出层标题
-      title: "",
-      // 是否显示弹出层
-      open: false,
-      // 分配销售
-      openAllocation: false,
-      // 选择的销售id
-      saleId: undefined,
-      // 获取用户id
-      userId: undefined,
-      // 销售列表
-      saleList: [],
-      // 分配销售确定loading
-      confirmLoadingSale: false,
-      // 日期范围
-      dateRange: [],
-      // 查询参数
-      queryParams: {
-        pageNum: 1,
-        pageSize: 10,
-        itemId: undefined,
-        itemTitle: undefined,
-        orderStartDate: undefined,
-        orderEndDate: undefined,
-      },
-      uploadDate: [new Date(), new Date()],
-      //查询参数所用下拉数据
-      queryParamsList: {},
-      prop: "orderNum",
-      sort: "desc",
-      itemSummary: [],
-      loadingTotal: false,
-    };
-  },
-  created() {
-    if (
-      this.$route &&
-      this.$route.query.id &&
-      this.$route.query.orderStartDate &&
-      this.$route.query.orderEndDate
-    ) {
-      this.uploadDate = [
-        this.$route.query.orderStartDate,
-        this.$route.query.orderEndDate,
-      ];
-      this.getUserItemTotal();
-      this.getUserItemDetail();
-    } else {
-      let date = new Date();
-      let y = date.getFullYear();
-      let MM = date.getMonth() + 1;
-      MM = MM < 10 ? "0" + MM : MM;
-      let dd = date.getDate();
-      dd = dd < 10 ? "0" + dd : dd;
-      this.uploadDate = [`${y}-${MM}-${dd}`, `${y}-${MM}-${dd}`];
-      this.getUserItemTotal();
-      this.getUserItemDetail();
-    }
-  },
-  mounted() {
-    this.$nextTick(() => {});
-  },
-  methods: {
-    /** 导出按钮操作 */
-    handleExport() {
-      this.downLoadLoading = true;
-      downFilePost(
-        "/isv/supply_chain/exportUserItemDetail",
-        this.addDateRange(
-          {
-            ...this.queryParams,
-            userId: !!this.$route.query.id
-              ? this.$route.query.id
-              : this.$store.getters.roles[0] == "admin" ||
-                this.$store.getters.roles[0] == "supplyChainAdmin"
-              ? null
-              : this.$store.getters.userId,
-          },
-          this.uploadDate,
-          "orderStartDate",
-          "orderEndDate"
-        )
-      ).then((res) => {
-        let blob = new Blob([res], {
-          type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
-        });
-        let downloadElement = document.createElement("a");
-        let href = window.URL.createObjectURL(blob); //创建下载的链接
-        downloadElement.href = href;
-        downloadElement.download = `认领列表_${this.uploadDate[0]}-${this.uploadDate[1]}.xlsx`; //下载后文件名
-        document.body.appendChild(downloadElement);
-        downloadElement.click(); //点击下载
-        document.body.removeChild(downloadElement); //下载完成移除元素
-        window.URL.revokeObjectURL(href); //释放掉blob对象
-        this.downLoadLoading = false;
-      });
-    },
-    arraySpanMethod({ row, column, rowIndex, columnIndex }) {
-      if (rowIndex === 0) {
-        if (columnIndex === 0) {
-          return [0, 0];
-        } else if (columnIndex === 1) {
-          return [0, 0];
-        } else if (columnIndex === 2) {
-          return [1, 3];
-        }
-      }
-    },
-    getUserItemTotal() {
-      this.loadingTotal = true;
-      getUserItemTotal(
-        this.addDateRange(
-          {
-            userId: !!this.$route.query.id
-              ? this.$route.query.id
-              : this.$store.getters.roles[0] == "admin" ||
-                this.$store.getters.roles[0] == "supplyChainAdmin"
-              ? null
-              : this.$store.getters.userId,
-          },
-          this.uploadDate,
-          "orderStartDate",
-          "orderEndDate"
-        )
-      ).then((res) => {
-        this.loadingTotal = false;
-        this.itemSummary = [res].map((item) => {
-          return {
-            ...item,
-            itemTitle: "总计",
-            userName: "总计",
-            reservePrice: "总计",
-          };
-        });
-      });
-    },
-    sortChange(col, prop, order) {
-      this.prop = col.prop;
-      this.sort = !!col.order ? (col.order == "descending" ? "desc" : "asc") : "desc";
-      this.handleQuery();
-    },
-    toDetail(id) {},
-    toIndexDetail(item) {
-      this.$router.replace({
-        path: "/supplyChain/kuaishou/indexDetails",
-        query: {
-          id: item.promoterId,
-          name: item.promoterNickName,
-          orderStartDate: this.$route.query.orderStartDate,
-          orderEndDate: this.$route.query.orderEndDate,
-        },
-      });
-    },
-    getUserItemDetail() {
-      this.loading = true;
-      getUserItemDetail(
-        this.addDateRange(
-          {
-            ...this.queryParams,
-            fieId: this.prop,
-            sort: this.sort,
-            userId: !!this.$route.query.id
-              ? this.$route.query.id
-              : this.$store.getters.roles[0] == "admin" ||
-                this.$store.getters.roles[0] == "supplyChainAdmin"
-              ? null
-              : this.$store.getters.userId,
-          },
-          this.uploadDate,
-          "orderStartDate",
-          "orderEndDate"
-        )
-      ).then((response) => {
-        this.typeList = this.itemSummary.concat(response.rows);
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    getSummaries(param) {
-      console.log(param);
-      const { columns, data } = param;
-      const sums = [];
-      columns.forEach((column, index) => {
-        if (index === 0) {
-          sums[index] = "总计";
-          return;
-        } else if (index == 1) {
-          sums[index] = "N/A";
-          return;
-        } else if (index == 9) {
-          sums[index] = "-";
-          return;
-        } else if (index == 2) {
-          sums[index] = "-";
-          return;
-        }
+  import {
+    listType,
+    getType,
+    delType,
+    addType,
+    updateType,
+    refreshCache,
+  } from "@/api/system/dict/type";
+  import {
+    getOrderList,
+    getItemDetail,
+    downFilePost,
+    getUserItemDetail,
+    getUserItemTotal,
+  } from "@/api/supplyChain/supplyChain";
 
-        for (const key in this.itemSummary[0]) {
-          if (key == column.property) {
-            if (key == "validRadio" || key == "deliveryRadio") {
-              sums[index] = this.itemSummary[0][key]
-                ? (this.itemSummary[0][key] * 100).toFixed(2) + "%"
-                : "-";
-            } else if (
-              key == "payAmount" ||
-              key == "regimentalPromotionAmount" ||
-              key == "totalRegimentalSettleAmount"
-            ) {
-              sums[index] = this.itemSummary[0][key]
-                ? this.itemSummary[0][key] / 100
-                : "-";
-            } else {
-              sums[index] = this.itemSummary[0][key];
-            }
-          }
-        }
-
-        // const values = data.map((item) => Number(item[column.property]));
-        // console.log(values)
-        // if (!values.every((value) => isNaN(value))) {
-        //   sums[index] = values.reduce((prev, curr) => {
-        //     const value = Number(curr);
-        //     if (!isNaN(value)) {
-        //       return prev + curr;
-        //     } else {
-        //       return prev;
-        //     }
-        //   }, 0);
-        //   // sums[index] += " 元";
-        // } else {
-        //   sums[index] = "N/A";
-        // }
-      });
-
-      return sums;
-    },
-    /** 查询字典类型列表 */
-    getList() {
-      this.loading = true;
-      getOrderList(
-        this.addDateRange(
-          this.queryParams,
-          this.uploadDate,
-          "orderStartDate",
-          "orderEndDate"
-        )
-      ).then((response) => {
-        this.typeList = response.rows;
-        this.total = response.total;
-        this.loading = false;
-      });
-    },
-    // 取消按钮
-    cancel() {
-      this.open = false;
-      this.confirmLoading = false;
-      this.reset();
-    },
-    // 表单重置
-    reset() {
-      this.form = {};
-      this.dateFile = null;
-      this.resetForm("form");
-    },
-    /** 搜索按钮操作 */
-    handleQuery() {
-      this.queryParams.pageNum = 1;
-      this.getUserItemTotal();
-      this.getUserItemDetail();
+  var echarts = require("echarts");
+  export default {
+    name: "ClaimOk",
+    dicts: ["sys_normal_disable"],
+    data() {
+      return {
+        downLoadLoading: false,
+        dialogTableVisible: false,
+        logPage: {
+          pageNum: 1,
+          pageSize: 10,
+        },
+        logData: [],
+        logTotal: 0,
+        logLoading: false,
+        // 遮罩层
+        loading: true,
+        // 选中数组
+        ids: [],
+        // 非单个禁用
+        single: true,
+        // 非多个禁用
+        multiple: true,
+        // 显示搜索条件
+        showSearch: true,
+        // 总条数
+        total: 0,
+        // 字典表格数据
+        typeList: [],
+        // 弹出层标题
+        title: "",
+        // 是否显示弹出层
+        open: false,
+        // 分配销售
+        openAllocation: false,
+        // 选择的销售id
+        saleId: undefined,
+        // 获取用户id
+        userId: undefined,
+        // 销售列表
+        saleList: [],
+        // 分配销售确定loading
+        confirmLoadingSale: false,
+        // 日期范围
+        dateRange: [],
+        // 查询参数
+        queryParams: {
+          pageNum: 1,
+          pageSize: 10,
+          itemId: undefined,
+          itemTitle: undefined,
+          orderStartDate: undefined,
+          orderEndDate: undefined,
+        },
+        uploadDate: [new Date(), new Date()],
+        //查询参数所用下拉数据
+        queryParamsList: {},
+        prop: "orderNum",
+        sort: "desc",
+        itemSummary: [],
+        loadingTotal: false,
+      };
     },
-    /** 重置按钮操作 */
-    resetQuery() {
-      this.dateRange = [];
-      //   let date = new Date();
-      //   let y = date.getFullYear();
-      //   let MM = date.getMonth() + 1;
-      //   MM = MM < 10 ? "0" + MM : MM;
-      //   let dd = date.getDate();
-      //   dd = dd < 10 ? "0" + dd : dd;
+    created() {
       if (
         this.$route &&
         this.$route.query.id &&
@@ -625,6 +407,7 @@ export default {
           this.$route.query.orderStartDate,
           this.$route.query.orderEndDate,
         ];
+        this.getUserItemTotal();
         this.getUserItemDetail();
       } else {
         let date = new Date();
@@ -634,16 +417,261 @@ export default {
         let dd = date.getDate();
         dd = dd < 10 ? "0" + dd : dd;
         this.uploadDate = [`${y}-${MM}-${dd}`, `${y}-${MM}-${dd}`];
+        this.getUserItemTotal();
         this.getUserItemDetail();
       }
-      this.resetForm("queryForm");
-      this.queryParams.pageNum = 1;
-      this.handleQuery();
     },
-    // 多选框选中数据
-    handleSelectionChange(selection) {
-      this.ids = selection.map((item) => item.id);
+    mounted() {
+      this.$nextTick(() => {
+      });
+    },
+    methods: {
+      /** 导出按钮操作 */
+      handleExport() {
+        this.downLoadLoading = true;
+        downFilePost(
+          "/isv/supply_chain/exportUserItemDetail",
+          this.addDateRange(
+            {
+              ...this.queryParams,
+              userId: !!this.$route.query.id
+                ? this.$route.query.id
+                : this.$store.getters.roles[0] == "admin" ||
+                this.$store.getters.roles[0] == "supplyChainAdmin"
+                  ? null
+                  : this.$store.getters.userId,
+            },
+            this.uploadDate,
+            "orderStartDate",
+            "orderEndDate"
+          )
+        ).then((res) => {
+          let blob = new Blob([res], {
+            type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
+          });
+          let downloadElement = document.createElement("a");
+          let href = window.URL.createObjectURL(blob); //创建下载的链接
+          downloadElement.href = href;
+          downloadElement.download = `认领列表_${this.uploadDate[0]}-${this.uploadDate[1]}.xlsx`; //下载后文件名
+          document.body.appendChild(downloadElement);
+          downloadElement.click(); //点击下载
+          document.body.removeChild(downloadElement); //下载完成移除元素
+          window.URL.revokeObjectURL(href); //释放掉blob对象
+          this.downLoadLoading = false;
+        });
+      },
+      arraySpanMethod({row, column, rowIndex, columnIndex}) {
+        if (rowIndex === 0) {
+          if (columnIndex === 0) {
+            return [0, 0];
+          } else if (columnIndex === 1) {
+            return [0, 0];
+          } else if (columnIndex === 2) {
+            return [1, 3];
+          }
+        }
+      },
+      getUserItemTotal() {
+        this.loadingTotal = true;
+        getUserItemTotal(
+          this.addDateRange(
+            {
+              userId: !!this.$route.query.id
+                ? this.$route.query.id
+                : this.$store.getters.roles[0] == "admin" ||
+                this.$store.getters.roles[0] == "supplyChainAdmin"
+                  ? null
+                  : this.$store.getters.userId,
+            },
+            this.uploadDate,
+            "orderStartDate",
+            "orderEndDate"
+          )
+        ).then((res) => {
+          this.loadingTotal = false;
+          this.itemSummary = [res].map((item) => {
+            return {
+              ...item,
+              itemTitle: "总计",
+              userName: "总计",
+              reservePrice: "总计",
+            };
+          });
+        });
+      },
+      sortChange(col, prop, order) {
+        this.prop = col.prop;
+        this.sort = !!col.order ? (col.order == "descending" ? "desc" : "asc") : "desc";
+        this.handleQuery();
+      },
+      toDetail(id) {
+      },
+      toIndexDetail(item) {
+        this.$router.replace({
+          path: "/supplyChain/kuaishou/indexDetails",
+          query: {
+            id: item.promoterId,
+            name: item.promoterNickName,
+            orderStartDate: this.$route.query.orderStartDate,
+            orderEndDate: this.$route.query.orderEndDate,
+          },
+        });
+      },
+      getUserItemDetail() {
+        this.loading = true;
+        getUserItemDetail(
+          this.addDateRange(
+            {
+              ...this.queryParams,
+              fieId: this.prop,
+              sort: this.sort,
+              userId: !!this.$route.query.id
+                ? this.$route.query.id
+                : this.$store.getters.roles[0] == "admin" ||
+                this.$store.getters.roles[0] == "supplyChainAdmin"
+                  ? null
+                  : this.$store.getters.userId,
+            },
+            this.uploadDate,
+            "orderStartDate",
+            "orderEndDate"
+          )
+        ).then((response) => {
+          this.typeList = this.itemSummary.concat(response.rows);
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      getSummaries(param) {
+        console.log(param);
+        const {columns, data} = param;
+        const sums = [];
+        columns.forEach((column, index) => {
+          if (index === 0) {
+            sums[index] = "总计";
+            return;
+          } else if (index == 1) {
+            sums[index] = "N/A";
+            return;
+          } else if (index == 9) {
+            sums[index] = "-";
+            return;
+          } else if (index == 2) {
+            sums[index] = "-";
+            return;
+          }
+
+          for (const key in this.itemSummary[0]) {
+            if (key == column.property) {
+              if (key == "validRadio" || key == "deliveryRadio") {
+                sums[index] = this.itemSummary[0][key]
+                  ? (this.itemSummary[0][key] * 100).toFixed(2) + "%"
+                  : "-";
+              } else if (
+                key == "payAmount" ||
+                key == "regimentalPromotionAmount" ||
+                key == "totalRegimentalSettleAmount"
+              ) {
+                sums[index] = this.itemSummary[0][key]
+                  ? this.itemSummary[0][key] / 100
+                  : "-";
+              } else {
+                sums[index] = this.itemSummary[0][key];
+              }
+            }
+          }
+
+          // const values = data.map((item) => Number(item[column.property]));
+          // console.log(values)
+          // if (!values.every((value) => isNaN(value))) {
+          //   sums[index] = values.reduce((prev, curr) => {
+          //     const value = Number(curr);
+          //     if (!isNaN(value)) {
+          //       return prev + curr;
+          //     } else {
+          //       return prev;
+          //     }
+          //   }, 0);
+          //   // sums[index] += " 元";
+          // } else {
+          //   sums[index] = "N/A";
+          // }
+        });
+
+        return sums;
+      },
+      /** 查询字典类型列表 */
+      getList() {
+        this.loading = true;
+        getOrderList(
+          this.addDateRange(
+            this.queryParams,
+            this.uploadDate,
+            "orderStartDate",
+            "orderEndDate"
+          )
+        ).then((response) => {
+          this.typeList = response.rows;
+          this.total = response.total;
+          this.loading = false;
+        });
+      },
+      // 取消按钮
+      cancel() {
+        this.open = false;
+        this.confirmLoading = false;
+        this.reset();
+      },
+      // 表单重置
+      reset() {
+        this.form = {};
+        this.dateFile = null;
+        this.resetForm("form");
+      },
+      /** 搜索按钮操作 */
+      handleQuery() {
+        this.queryParams.pageNum = 1;
+        this.getUserItemTotal();
+        this.getUserItemDetail();
+      },
+      /** 重置按钮操作 */
+      resetQuery() {
+        this.dateRange = [];
+        //   let date = new Date();
+        //   let y = date.getFullYear();
+        //   let MM = date.getMonth() + 1;
+        //   MM = MM < 10 ? "0" + MM : MM;
+        //   let dd = date.getDate();
+        //   dd = dd < 10 ? "0" + dd : dd;
+        if (
+          this.$route &&
+          this.$route.query.id &&
+          this.$route.query.orderStartDate &&
+          this.$route.query.orderEndDate
+        ) {
+          this.uploadDate = [
+            this.$route.query.orderStartDate,
+            this.$route.query.orderEndDate,
+          ];
+          this.getUserItemDetail();
+        } else {
+          let date = new Date();
+          let y = date.getFullYear();
+          let MM = date.getMonth() + 1;
+          MM = MM < 10 ? "0" + MM : MM;
+          let dd = date.getDate();
+          dd = dd < 10 ? "0" + dd : dd;
+          this.uploadDate = [`${y}-${MM}-${dd}`, `${y}-${MM}-${dd}`];
+          this.getUserItemDetail();
+        }
+        this.resetForm("queryForm");
+        this.queryParams.pageNum = 1;
+        this.handleQuery();
+      },
+      // 多选框选中数据
+      handleSelectionChange(selection) {
+        this.ids = selection.map((item) => item.id);
+      },
     },
-  },
-};
+  };
 </script>

+ 16 - 1
src/views/supplyChain/service.vue

@@ -122,7 +122,22 @@ p {
       </el-table-column>
       <el-table-column label="发货数" align="center" prop="deliveryNum">
       </el-table-column>
-      <el-table-column label="发货率" align="center" prop="deliveryRadio">
+      <el-table-column
+        label="发货率"
+        align="center"
+        prop="shippingGreen"
+      >
+        <template slot-scope="scope">
+          {{
+          scope.row.shippingGreen
+          ? (scope.row.shippingGreen * 100).toFixed(2) + "%"
+          : "-"
+          }}
+        </template>
+      </el-table-column>
+      <el-table-column label="有效发货数" align="center" prop="effDeliveryNum">
+      </el-table-column>
+      <el-table-column label="有效发货率" align="center" prop="deliveryRadio">
         <template slot-scope="scope">
           {{
             scope.row.deliveryRadio