Ver Fonte

供应链

yumeng há 7 meses atrás
pai
commit
f79b6d5342

+ 60 - 0
src/api/goodsManagement/financeData.js

@@ -0,0 +1,60 @@
+import request from '@/utils/request'
+
+// 查询【请填写功能名称】列表
+export function listInfo(query) {
+  return request({
+    url: '/finance/reward/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getTotal(query) {
+  return request({
+    url: '/finance/reward/getTotal',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询【请填写功能名称】详细
+export function getInfo(id) {
+  return request({
+    url: '/finance/reward/' + id,
+    method: 'get'
+  })
+}
+
+// 新增【请填写功能名称】
+export function addInfo(data) {
+  return request({
+    url: '/finance/reward/add',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改【请填写功能名称】
+export function updateInfo(data) {
+  return request({
+    url: '/finance/reward',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除【请填写功能名称】
+export function delInfo(id) {
+  return request({
+    url: '/finance/reward/' + id,
+    method: 'delete'
+  })
+}
+
+export function importData(query) {
+  return request({
+    url: '/isv/supply_chain/insertRewardBaseInfoByExcel',
+    method: 'post',
+    data: query
+  })
+}

+ 73 - 0
src/api/industry/item.js

@@ -0,0 +1,73 @@
+import request from '@/utils/request'
+
+// 查询【请填写功能名称】列表
+export function listInfo(query) {
+  return request({
+    url: '/kwaixiaodian/item/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getShopList(query) {
+  return request({
+    url: '/kwaixiaodian/item/getShopList',
+    method: 'get',
+    params: query
+  })
+}
+
+export function getCourtshipPurchaseIds(query) {
+  return request({
+    url: '/kwaixiaodian/item/getCourtshipPurchaseIds',
+    method: 'get',
+    params: query
+  })
+}
+
+export function addInfo(data) {
+  return request({
+    url: '/kwaixiaodian/item/querykwaiItmInfo',
+    method: 'post',
+    data: data
+  })
+}
+
+
+export function delInfo(id) {
+  return request({
+    url: '/kwaixiaodian/item/' + id,
+    method: 'delete'
+  })
+}
+
+
+export function queryItemReport(query) {
+  return request({
+    url: '/kwaixiaodian/item/queryItemReport',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询【请填写功能名称】详细
+export function getInfo(id) {
+  return request({
+    url: '/kwaixiaodian/item/' + id,
+    method: 'get'
+  })
+}
+
+
+export function updateInfo(data) {
+  return request({
+    url: '/kwaixiaodian/item',
+    method: 'put',
+    data: data
+  })
+}
+
+
+
+
+

+ 593 - 0
src/views/goodsManagement/financeData.vue

@@ -0,0 +1,593 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="达人名称" prop="promoterName">
+        <el-input
+          v-model="queryParams.promoterName"
+          placeholder="请输入达人名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="达人ID" prop="promoterId">
+        <el-input
+          v-model="queryParams.promoterId"
+          placeholder="请输入达人ID"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="商品名称" prop="itemTitle">
+        <el-input
+          v-model="queryParams.itemTitle"
+          placeholder="请输入商品名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="商品id" prop="itemId">
+        <el-input
+          v-model="queryParams.itemId"
+          placeholder="请输入商品id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+
+      <el-form-item label="日期" prop="statDate">
+
+        <el-date-picker
+          style="width: 180px"
+          v-model="queryParams.statDate"
+          value-format="yyyy-MM-dd"
+          format="yyyy-MM-dd"
+          range-separator="-"
+          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-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+        >新增
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+        >修改
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+        >删除
+        </el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-document-add"
+          size="mini"
+          @click="importData"
+        >导入结算
+        </el-button
+        >
+      </el-col>
+      <!--      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
+    </el-row>
+
+    <el-table v-loading="loading" :data="infoList" @selection-change="handleSelectionChange"
+
+
+    >
+      <el-table-column type="selection" width="55" align="center"/>
+
+      <el-table-column label="达人名称" align="center" prop="promoterName" width="120px">
+        <template slot-scope="scope">
+          <div style="display: flex; width: 100%">
+            <div style="width: 100%" class="item-name-calss">
+              <a
+                style="
+                      text-overflow: ellipsis;
+                      white-space: nowrap;
+                      overflow: hidden;
+                      width: 100%;
+                    "
+                :title="scope.row.promoterName"
+              >
+                {{ scope.row.promoterName }}
+              </a>
+
+            </div>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="达人ID" align="center" prop="promoterId" width="100px"/>
+      <el-table-column label="渠道" align="center" prop="promoterCreateName"/>
+      <el-table-column label="商品名称" align="center" prop="itemTitle" width="280px">
+        <template slot-scope="scope">
+          <div style="display: flex; width: 100%">
+            <div style="width: 100%" class="item-name-calss">
+              <a
+                style="
+                      text-overflow: ellipsis;
+                      white-space: nowrap;
+                      overflow: hidden;
+                      width: 100%;
+                    "
+                :title="scope.row.itemTitle"
+              >
+                {{ scope.row.itemTitle }}
+              </a>
+
+            </div>
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column label="商品id" align="center" prop="itemId" width="140px"/>
+      <el-table-column label="招商" align="center" prop="itemCreateName"/>
+      <el-table-column label="日期" align="center" prop="statDate" width="100px"/>
+
+      <el-table-column label="累计结算单量" align="center" prop="totalSettlementNum"/>
+      <el-table-column label="本次结算单量" align="center" prop="currentSettlementNum"/>
+      <el-table-column label="结算单价" align="center" prop="settlementPrice"/>
+      <el-table-column label="主播奖励金额" align="center" prop="anchorAmount"/>
+      <el-table-column label="推荐人奖励金额" align="center" prop="referenceAmount"/>
+      <el-table-column label="合计金额" align="center" prop="totalAmount"/>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(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"
+    />
+
+    <!-- 添加或修改【请填写功能名称】对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body :close-on-click-modal="false">
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px" :inline="true">
+        <el-form-item label="日期:" prop="statDate" style="width: 100%">
+          <el-date-picker
+            style="width: 180px"
+            v-model="uploadDate"
+            value-format="yyyy-MM-dd"
+            format="yyyy-MM-dd"
+            range-separator="-"
+            placeholder="请输入日期"
+          ></el-date-picker>
+
+        </el-form-item>
+
+
+        <el-form-item label="商品id:" prop="itemId">
+          <el-input v-model="form.itemId" placeholder="请输入商品id"/>
+        </el-form-item>
+        <el-form-item label="达人ID:" prop="promoterId">
+          <el-input v-model="form.promoterId" placeholder="请输入达人ID"/>
+        </el-form-item>
+        <el-form-item label="当前单量:" prop="currentSettlementNum">
+          <el-input v-model="form.currentSettlementNum" placeholder="请输入当前结算单量"/>
+        </el-form-item>
+        <el-form-item label="累计单量:" prop="totalSettlementNum">
+          <el-input v-model="form.totalSettlementNum" placeholder="请输入累计结算单量"/>
+        </el-form-item>
+        <el-form-item label="结算单价:" prop="settlementPrice">
+          <el-input v-model="form.settlementPrice" placeholder="请输入结算单价"/>
+        </el-form-item>
+        <el-form-item label="主播金额:" prop="anchorAmount">
+          <el-input v-model="form.anchorAmount" placeholder="请输入主播奖励金额"/>
+        </el-form-item>
+        <el-form-item label="推荐人金额:" prop="referenceAmount">
+          <el-input v-model="form.referenceAmount" placeholder="请输入推荐人奖励金额"/>
+        </el-form-item>
+        <el-form-item label="累计结算金额:" prop="totalAmount">
+          <el-input v-model="form.totalAmount" placeholder="请输入累计结算金额"/>
+        </el-form-item>
+
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+
+    <el-dialog :title="importTitle" :visible.sync="importOpen" width="500px" append-to-body>
+
+      <el-form ref="importForm" :model="form" :rules="rules" label-width="80px">
+        <el-upload
+          class="upload-demo"
+          action="http://192.168.1.181:9003/isv/supply_chain/insertRewardBaseInfoByExcel"
+          :before-upload="handleBeforeUpload"
+          :on-preview="handlePreview"
+          :on-remove="handleRemove"
+          :before-remove="beforeRemove"
+          accept=""
+          :on-exceed="handleExceed"
+          :file-list="fileList"
+          :show-file-list="false"
+        >
+          <el-button size="small" icon="el-icon-upload">点击上传</el-button>
+          <div slot="tip" class="el-upload__tip">
+            只能上传.csv .xlsx .xls文件
+            <br/>
+            <span v-if="!!dateFile">{{ dateFile.name }}</span>
+          </div>
+        </el-upload>
+
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitFile" :loading="confirmLoading"
+        >确 定
+        </el-button
+        >
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import {listInfo, getInfo, delInfo, addInfo, updateInfo, getTotal, importData} from "@/api/goodsManagement/financeData";
+
+
+
+export default {
+  name: "FinanceData",
+  data() {
+    return {
+      confirmLoading: false,
+      dateFile: null,
+      fileList: [],
+      importOpen: false,
+      uploadDate: new Date(),
+      userId: null,
+      // 遮罩层
+      loading: false,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 【请填写功能名称】表格数据
+      infoList: [],
+      // 弹出层标题
+      title: "",
+      importTitle: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        itemId: null,
+        itemTitle: null,
+        promoterId: null,
+        promoterName: null,
+        statDate: null
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {}
+    };
+  },
+  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();
+    this.getListTotal();
+  },
+  methods: {
+
+    importData() {
+      this.reset();
+      this.importOpen = true;
+      this.importTitle = "导入激励";
+
+    },
+
+    submitFile() {
+      console.log(this.dateFile)
+      this.$refs["importForm"].validate((valid) => {
+        if (valid) {
+          if (this.dateFile) {
+            this.confirmLoading = true;
+            let formData = new FormData();
+            formData.append("file", this.dateFile);
+            //   formData.append("salesLeadsType", this.form.salesLeadsType);
+
+            importData(formData)
+              .then((res) => {
+                this.confirmLoading = false;
+                this.$message.success("上传成功");
+                this.cancel();
+                this.handleQuery();
+              })
+              .catch((err) => {
+                this.confirmLoading = false;
+              });
+          } else {
+            this.$message.error("请上传文件");
+          }
+
+          // if (this.form.dictId != undefined) {
+          //   updateType(this.form).then((response) => {
+          //     this.$modal.msgSuccess("修改成功");
+          //     this.open = false;
+          //     this.getList();
+          //   });
+          // } else {
+          //   addType(this.form).then((response) => {
+          //     this.$modal.msgSuccess("新增成功");
+          //     this.open = false;
+          //     this.getList();
+          //   });
+          // }
+        }
+      });
+    },
+
+
+    handleExceed(files, fileList) {
+      this.$message.warning(
+        `当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
+          files.length + fileList.length
+        } 个文件`
+      );
+    },
+
+    beforeRemove(file, fileList) {
+      return false;
+    },
+
+    /** 删除文件 */
+    handleRemove(file, fileList) {
+      console.log(file, fileList);
+    },
+
+    /** 上传文件 */
+    handlePreview(file) {
+      console.log(file);
+    },
+    /** 上传文件前验证 */
+    handleBeforeUpload(file) {
+      console.log(file);
+      const fileSuffix = ["xlsx", "xls", "csv"];
+      const fileName = file.name;
+      const fileStrArr = fileName.split(".");
+      const suffix = fileStrArr[fileStrArr.length - 1];
+
+      let result = fileSuffix.some((item) => {
+        return item === suffix;
+      });
+
+      if (!result) {
+        this.$message.error("不支持该文件类型");
+        this.loadDisabled = false;
+        return false;
+      }
+      this.dateFile = file;
+      return false;
+    },
+
+
+    /** 查询【请填写功能名称】列表 */
+    getList() {
+      this.loading = true;
+      listInfo(this.queryParams).then(response => {
+        // this.infoList = response.rows;
+        this.infoList = this.itemSummary.concat(response.rows);
+        this.total = response.total;
+
+      });
+      this.loading = false;
+    },
+
+
+    getListTotal() {
+      getTotal(
+        this.queryParams
+      ).then((res) => {
+        this.itemSummary = [res].map((item) => {
+          return {
+            ...item,
+            itemTitle: "总计",
+            userName: "总计"
+          };
+        });
+      });
+    },
+
+
+    getUploadDate() {
+      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}`;
+    },
+
+
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.importOpen = false;
+      this.reset();
+    },
+
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        itemId: null,
+        itemTitle: null,
+        promoterId: null,
+        promoterName: null,
+        itemCreateId: null,
+        itemCreateName: null,
+        promoterCreateId: null,
+        promoterCreateName: null,
+        statDate: null,
+        currentSettlementNum: null,
+        totalSettlementNum: null,
+        settlementPrice: null,
+        anchorAmount: null,
+        referenceAmount: null,
+        totalAmount: null,
+        remarks: null,
+        createTime: null,
+        updateTime: null
+      };
+      this.dateFile = null;
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+      this.getListTotal();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length !== 1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "新增激励";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getInfo(id).then(response => {
+        this.form = response.data;
+        this.uploadDate = response.data.statDate;
+        this.open = true;
+        this.title = "修改激励";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            this.form.statDate = this.uploadDate;
+            updateInfo(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getUploadDate();
+              this.getList();
+              this.getListTotal();
+            });
+          } else {
+            this.form.statDate = this.uploadDate;
+            addInfo(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getUploadDate();
+              this.getList();
+              this.getListTotal();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除所选的数据项?').then(function () {
+        return delInfo(ids);
+      }).then(() => {
+        this.getListTotal()
+        this.getList();
+        this.getUploadDate();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/info/export', {
+        ...this.queryParams
+      }, `info_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+
+</script>

+ 13 - 1
src/views/index.vue

@@ -368,6 +368,7 @@
     <staging v-else-if="showOld == 2"/>
     <operationHome v-else-if="showOld == 3"/>
     <jiaoyang v-else-if="showOld == 4"/>
+    <industry v-else-if="showOld == 5"/>
   </div>
 </template>
 
@@ -383,6 +384,7 @@ import {
 } from "@/api/index";
 import staging from "./staging.vue";
 import jiaoyang from "./jiaoyang/jyDingPan.vue";
+import industry from "./industry/industryHome.vue";
 import operationHome from "./report/operationHome.vue";
 
 var echarts = require("echarts");
@@ -391,7 +393,8 @@ export default {
   components: {
     staging,
     operationHome,
-    jiaoyang
+    jiaoyang,
+    industry,
   },
   data() {
     return {
@@ -574,6 +577,15 @@ export default {
           this.$store.getters.roles[0] == "jy_expert_business" ||
           this.$store.getters.roles[0] == "jy_expert_mentor"
             ? 4
+            : this.$store.getters.roles[0] == "industry_sale_manager" ||
+            this.$store.getters.roles[0] == "industry_sale" ||
+            this.$store.getters.roles[0] == "industry_purchase" ||
+            this.$store.getters.roles[0] == "industry_courtship_manager" ||
+            this.$store.getters.roles[0] == "industry_courtship" ||
+            this.$store.getters.roles[0] == "industry_purchase_manager" ||
+            this.$store.getters.roles[0] == "industry_admin"
+              ? 5
+
             : 1;
   },
   mounted() {

+ 7 - 0
src/views/industry/industryHome.vue

@@ -0,0 +1,7 @@
+<template>
+  <div class="app-container">
+    敬请期待!!!
+  </div>
+</template>
+<script>
+</script>

+ 469 - 0
src/views/industry/industryItemList.vue

@@ -0,0 +1,469 @@
+<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="itemType">
+        <el-select
+          filterable
+          v-model="queryParams.itemType"
+          placeholder="请选择选品类型"
+          clearable
+          style="width: 240px"
+        >
+          <el-option
+            v-for="item in queryParamsList.itemTypeList"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="商品ID:" prop="itemId">
+        <el-input
+          v-model="queryParams.itemId"
+          placeholder="请输入商品id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+
+      <el-form-item label="商品名称:" prop="itemTitle">
+        <el-input
+          v-model="queryParams.itemTitle"
+          placeholder="请输入商品名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </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-form-item>
+    </el-form>
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+        >新增
+        </el-button>
+      </el-col>
+    </el-row>
+
+    <el-table v-loading="isLoading" :data="infoList">
+      <el-table-column type="selection" width="55" align="center"/>
+      <el-table-column
+        label="商品信息"
+        align="center"
+        prop="itemTitle"
+        width="300"
+        fixed="left"
+      >
+        <template slot-scope="scope">
+          <div style="display: flex; width: 100%">
+            <div style="width: 40%">
+              <img
+                :src="scope.row.imageUrl"
+                alt=""
+                style="width: 80px; height: auto"
+              />
+            </div>
+            <div style="width: 60%" class="item-name-calss">
+              <a
+                style="
+                      text-overflow: ellipsis;
+                      white-space: nowrap;
+                      overflow: hidden;
+                      width: 100%;
+                    "
+                :title="scope.row.title"
+              >
+                {{ scope.row.title }}
+              </a>
+              <p align="left">Id: {{ scope.row.itemId }}</p>
+              <p align="left">价格: {{ scope.row.skuPrice }}</p>
+
+            </div>
+          </div>
+        </template>
+      </el-table-column>
+
+      <el-table-column
+        label="类型"
+        align="center"
+        prop="activityItemStatus"
+      >
+        <template slot-scope="scope">
+          <div v-if="!!scope.row.itemType">
+            {{ scope.row.itemType | itemTypeName }}
+          </div>
+          <div v-else>-</div>
+        </template>
+      </el-table-column>
+      <el-table-column label="绑定人" align="center" prop="userName"/>
+      <el-table-column label="招商/采购" align="center" prop="courtshipPurchaseName"/>
+      <el-table-column label="绑定日期" align="center" prop="dataCreateTime"/>
+      <el-table-column label="一级类目" align="center" prop="parentCategoryName"/>
+      <el-table-column label="所属类目" align="center" prop="categoryName"/>
+      <el-table-column
+        label="审核状态"
+        align="center"
+        prop="activityItemStatus"
+      >
+        <template slot-scope="scope">
+          <div v-if="!!scope.row.auditStatus">
+            {{ scope.row.auditStatus | auditStatusName }}
+          </div>
+          <div v-else>-</div>
+        </template>
+      </el-table-column>
+
+
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+          >修改
+          </el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(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"
+    />
+
+    <!-- 添加或修改【请填写功能名称】对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body :close-on-click-modal="false">
+
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px" :inline="true ">
+        <el-form-item label="创建人:" prop="userName" style="width: 100%">
+          {{ userName }}
+        </el-form-item>
+
+        <el-form-item label="选择小店:" prop="shopId" style="width: 100%">
+          <el-select
+            filterable
+            v-model="form.shopId"
+            placeholder="请选择商品所属小店"
+            clearable
+            style="width: 350px"
+          >
+            <el-option
+              v-for="item in shopList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="选品方式:" prop="itemType" class="entire-line" style="width: 100%">
+          <el-radio-group v-model="form.itemType">
+            <el-radio :label="1">自选品</el-radio>
+            <el-radio :label="2">推品</el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="招商/采购:" prop="courtshipPurchaseId" style="width: 100%">
+          <el-select
+            filterable
+            v-model="form.courtshipPurchaseId"
+            placeholder="请选择招商或采购"
+            clearable
+            style="width: 350px"
+          >
+            <el-option
+              v-for="item in courtshipPurchaseIds"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            >
+            </el-option>
+          </el-select>
+        </el-form-item>
+
+
+        <el-form-item label="商品id:" prop="itemId">
+          <el-input style="width: 350px" v-model="form.itemId" placeholder="请输入商品id"/>
+        </el-form-item>
+      </el-form>
+
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm" :loading="addLoading">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
+
+  </div>
+</template>
+
+<script>
+import {
+  listInfo,
+  getInfo,
+  delInfo,
+  addInfo,
+  updateInfo,
+  getShopList,
+  getCourtshipPurchaseIds
+} from "@/api/industry/item";
+
+
+export default {
+  name: "IndustryItemList",
+  data() {
+    return {
+      shopList: [],
+      courtshipPurchaseIds: [],
+      userName: null,
+      dateFile: null,
+      fileList: [],
+      uploadDate: new Date(),
+      userId: null,
+      addLoading: false,
+      isLoading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 【请填写功能名称】表格数据
+      infoList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        itemId: null,
+        itemTitle: null,
+        promoterId: null,
+        promoterName: null,
+        statDate: null,
+        userId: null,
+      },
+      queryParamsList: {
+        itemTypeList: [
+          {value: 1, label: "自选品"},
+          {value: 2, label: "推品"},
+        ],
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {}
+    };
+  },
+  created() {
+    this.userId = this.$store.getters.userId;
+    this.userName = this.$store.getters.name;
+    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: {
+    itemTypeName(type) {
+      const statusMap = {
+        1: "自选品",
+        2: "推品"
+      };
+      return statusMap[type];
+    },
+
+    auditStatusName(type) {
+      const statusMap = {
+        0: "待审核",
+        1: "审核待修改",
+        2: "审核通过",
+        3: "审核拒绝",
+      };
+      return statusMap[type];
+    },
+  },
+
+  methods: {
+    getShopList() {
+      getShopList({userId: this.userId}).then((res) => {
+        this.shopList = res.data.map((item) => {
+          return {
+            label: item.shopId + '(' + item.shopName + ')',
+            value: item.shopId,
+          };
+        });
+      });
+    },
+
+    getCourtshipPurchaseIds() {
+      getCourtshipPurchaseIds({userId: this.userId}).then((res) => {
+        this.courtshipPurchaseIds = res.data.map((item) => {
+          return {
+            label: item.userId + '(' + item.userName + ')',
+            value: item.userId,
+          };
+        });
+      });
+    },
+
+    getList() {
+      this.isLoading = true;
+      this.queryParams.userId = this.userId;
+      listInfo(this.queryParams).then(response => {
+        this.infoList = response.rows;
+        this.total = response.total;
+        this.isLoading = false;
+      });
+    },
+
+
+    getUploadDate() {
+      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}`;
+    },
+
+
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+
+    // 表单重置
+    reset() {
+      this.form = {};
+      this.resetForm("form");
+      this.userId = this.$store.getters.userId;
+      this.userName = this.$store.getters.name;
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "商品绑定";
+      this.getShopList();
+      this.getCourtshipPurchaseIds();
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      this.getShopList();
+      this.getCourtshipPurchaseIds();
+      const id = row.id || this.ids
+      getInfo(id).then(response => {
+        this.form = response.data;
+        this.userName = response.data.userName;
+        this.open = true;
+        this.title = "商品信息编辑";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          this.addLoading = true;
+          if (this.form.id != null) {
+            this.form.statDate = this.uploadDate;
+            updateInfo(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.addLoading = false;
+              this.cancel();
+              this.getList();
+            }).catch((err) => {
+              this.addLoading = false;
+            });
+            ;
+          } else {
+            this.form.userId = this.userId
+            addInfo(this.form).then(response => {
+              this.addLoading = false;
+              this.$modal.msgSuccess("新增成功");
+              this.cancel();
+              this.getList();
+            }).catch((err) => {
+              this.addLoading = false;
+            });
+          }
+        }
+      });
+
+
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除所选的数据项?').then(function () {
+        return delInfo(ids);
+      }).then(() => {
+        this.getList();
+        this.getUploadDate();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {
+      });
+    },
+
+  }
+};
+
+</script>

+ 493 - 0
src/views/industry/industryItemReport.vue

@@ -0,0 +1,493 @@
+<style scoped lang="scss">
+::v-deep a {
+  color: #409eff;
+  display: block;
+}
+
+.item-name-calss p {
+  margin: 0;
+  text-align: left;
+}
+
+.tableBox {
+  width: 100%;
+}
+
+::v-deep .el-table {
+
+  height: calc(100vh - 280px);
+}
+</style>
+<template>
+  <div class="app-container" style="height: 100%">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="100px"
+    >
+
+      <el-form-item label="选择小店" prop="shopId">
+        <el-select
+          filterable
+          v-model="queryParams.shopId"
+          placeholder="请选择商品所属小店"
+          clearable
+          style="width: 240px"
+        >
+          <el-option
+            v-for="item in shopList"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="选品类型" prop="itemType">
+        <el-select
+          filterable
+          v-model="queryParams.itemType"
+          placeholder="请选择选品类型"
+          clearable
+          style="width: 240px"
+        >
+          <el-option
+            v-for="item in queryParamsList.itemTypeList"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+          />
+        </el-select>
+      </el-form-item>
+
+
+      <el-form-item label="商品Id" prop="itemId">
+        <el-input
+          v-model.number="queryParams.itemId"
+          placeholder="请输入商品Id"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="商品名称" prop="itemTitle">
+        <el-input
+          v-model="queryParams.itemTitle"
+          placeholder="请输入商品名称"
+          clearable
+          style="width: 240px"
+          @keyup.enter.native="handleQuery"
+        />
+      </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"
+          type="daterange"
+          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="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          :loading="downLoadLoading"
+        >导出
+        </el-button>
+      </el-form-item>
+    </el-form>
+
+    <div class="tableBox">
+      <el-table
+        v-loading="loading"
+        :data="typeList"
+        @selection-change="handleSelectionChange"
+        ref="multipleTable"
+
+        height="calc(100vh - 100px);"
+      >
+        <el-table-column
+          label="商品名称"
+          align="center"
+          prop="itemTitle"
+          width="300"
+        >
+          <template slot-scope="scope">
+            <div style="display: flex; width: 100%">
+              <div style="width: 40%">
+                <img
+                  :src="scope.row.itemPicUrl"
+                  alt=""
+                  style="width: 70px; height: auto"
+                />
+              </div>
+              <div style="width: 60%" class="item-name-calss">
+                <a
+
+                  style="
+                    text-overflow: ellipsis;
+                    white-space: nowrap;
+                    overflow: hidden;
+                    width: 100%;
+                  "
+                  :title="scope.row.itemTitle"
+                >
+                  {{ scope.row.itemTitle }}
+                </a>
+                <p>商品Id:{{ scope.row.itemId }}</p>
+                <p>商品单价:{{ scope.row.price }}</p>
+              </div>
+            </div>
+          </template>
+        </el-table-column>
+
+        <el-table-column
+          label="类型"
+          align="center"
+          prop="itemType"
+        >
+          <template slot-scope="scope">
+            {{ scope.row.itemType }}
+          </template>
+        </el-table-column>
+
+        <el-table-column
+          label="单数"
+          align="center"
+          prop="orderNum"
+        >
+        </el-table-column>
+        <el-table-column
+          label="环比"
+          align="center"
+          prop="orderNumRate"
+          width="90px"
+        >
+          <template slot-scope="scope">
+            <i v-if="scope.row.orderNumRate" :style=" scope.row.orderNumRate > 0 ? 'color:red' : 'color:green'"
+            >{{ (scope.row.orderNumRate) + "%" }} </i>
+            <i v-else>
+              -
+            </i>
+
+          </template>
+        </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 + "%"
+                : "-"
+            }}
+          </template>
+        </el-table-column>
+
+        <el-table-column
+          label="退单数"
+          align="center"
+          prop="effOrderNum"
+        >
+        </el-table-column>
+
+        <el-table-column
+          label="GMV"
+          align="center"
+          prop="totalFee"
+        >
+        </el-table-column>
+
+
+        <el-table-column
+          label="有效GMV"
+          align="center"
+          prop="validTotalFee"
+        >
+        </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.deliveryRate
+                ? (scope.row.deliveryRate) + "%"
+                : "-"
+            }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="未发货数"
+          align="center"
+          prop="notDeliveryNum"
+        >
+        </el-table-column>
+
+        <el-table-column
+          label="运费"
+          align="center"
+          prop="expressFee"
+        >
+        </el-table-column>
+
+        <el-table-column
+          label="绑定人"
+          align="center"
+          prop="userName"
+        >
+        </el-table-column>
+
+        <el-table-column
+          label="招商/采购"
+          align="center"
+          prop="courtshipPurchaseName"
+        >
+        </el-table-column>
+
+      </el-table>
+
+      <pagination
+        v-show="total > 0"
+        :total="total"
+        :page.sync="queryParams.pageNum"
+        :limit.sync="queryParams.pageSize"
+        @pagination="getList"
+      />
+    </div>
+  </div>
+</template>
+
+<script>
+
+import {getShopList, queryItemReport,} from "@/api/industry/item";
+import {downFile} from "@/api/bytedance/bytedance";
+
+export default {
+  name: "IndustryItemReport",
+  dicts: ["sys_normal_disable"],
+  data() {
+    return {
+      shopList: [],
+      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,
+        shopId: undefined,
+        itemType: undefined,
+        userId: undefined,
+        itemId: undefined,
+        itemTitle: undefined,
+        startDate: undefined,
+        endDate: undefined,
+      },
+      uploadDate: [new Date(), new Date()],
+      //查询参数所用下拉数据
+      queryParamsList: {
+        itemTypeList: [
+          {value: 1, label: "自选品"},
+          {value: 2, label: "推品"},
+        ],
+      },
+      videoTag: [],
+      videoVisibleChange: undefined,
+      prop: "orderNum",
+      sort: "desc",
+    };
+  },
+  created() {
+    this.userId = this.$store.getters.userId;
+    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.getShopList();
+  },
+  filters: {},
+  mounted() {
+    this.$nextTick(() => {
+      this.getList();
+    });
+  },
+  methods: {
+    /** 导出按钮操作 */
+    handleExport() {
+      this.downLoadLoading = true;
+      this.queryParams.userId = this.userId;
+      downFile(
+        "/kwaixiaodian/item/exportItemReport",
+        this.addDateRange(
+          {
+            ...this.queryParams
+
+          },
+          this.uploadDate,
+          "startDate",
+          "endDate"
+        )
+      ).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;
+      });
+    },
+
+
+    getShopList() {
+      getShopList({userId: this.userId}).then((res) => {
+        this.shopList = res.data.map((item) => {
+          return {
+            label: item.shopId + '(' + item.shopName + ')',
+            value: item.shopId,
+          };
+        });
+      });
+    },
+
+
+    /** 查询字典类型列表 */
+    getList() {
+      this.loading = true;
+      this.queryParams.userId = this.userId
+      queryItemReport(
+        this.addDateRange(
+          {...this.queryParams},
+          this.uploadDate,
+          "startDate",
+          "endDate"
+        )
+      ).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.getList();
+    },
+    /** 重置按钮操作 */
+    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;
+      this.uploadDate = [`${y}-${MM}-${dd}`, `${y}-${MM}-${dd}`];
+      this.resetForm("queryForm");
+      this.queryParams.pageNum = 1;
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map((item) => item.id);
+    },
+  },
+};
+</script>

+ 40 - 4
src/views/supplyChain/shopList.vue

@@ -94,8 +94,20 @@
         >
           <template slot-scope="scope">
             <div style="width: 100%" class="item-name-calss">
-              <p>
-                {{ scope.row.sellerId }}</p>
+              <p class="item-name-calss">
+                <a
+                  @click="toShopDetail(scope.row)"
+                  style="
+                    text-overflow: ellipsis;
+                    white-space: nowrap;
+                    overflow: hidden;
+                    width: 100%;
+                  "
+                >
+                  {{ scope.row.sellerId }}
+                </a>
+
+              </p>
               <p class="item-name-calss">
 
                 <a
@@ -117,14 +129,14 @@
 
 
         <el-table-column
-          label="单数"
+          label="单数"
           align="center"
           prop="orderNum"
           sortable="custom"
         >
         </el-table-column>
         <el-table-column
-          label="有效单数"
+          label="有效单数"
           align="center"
           prop="validOrderNUm"
           sortable="custom"
@@ -143,6 +155,30 @@
             }}
           </template>
         </el-table-column>
+
+        <el-table-column
+          label="已结单数"
+          align="center"
+          prop="settledOrderNUm"
+          sortable="custom"
+        />
+
+
+        <el-table-column
+          label="已结率"
+          align="center"
+          prop="settledOrderRate"
+          sortable="custom"
+        >
+          <template slot-scope="scope">
+            {{
+              scope.row.settledOrderRate
+                ? scope.row.settledOrderRate + "%"
+                : "-"
+            }}
+          </template>
+        </el-table-column>
+
         <el-table-column
           label="订单金额"
           align="center"