linwenxin 8 місяців тому
батько
коміт
49d85b5704

+ 56 - 0
src/api/material-system/report.js

@@ -0,0 +1,56 @@
+import request from '@/utils/request'
+
+// 月度师傅采购类别
+export function getWorkerPurchaseCategorySum(params) {
+  return request({
+    url: '/websit/report/worker-purchase-category-sum',
+    method: 'post',
+    params
+  })
+}
+
+// -----------------------------------------------
+
+// 获取销售单按师傅手机号汇总
+export function getSaleSum(params) {
+  return request({
+    url: '/websit/report/worker/buy/sum',
+    method: 'post',
+    params
+  })
+}
+
+// -----------------------------------------------
+
+// 获取销售单按师傅手机号汇总明细
+export function getSaleSumDetail(params) {
+  return request({
+    url: '/websit/report/worker/buy/sum/detail',
+    method: 'post',
+    params
+  })
+}
+
+// -----------------------------------------------
+
+// 获取采购商品汇总
+export function getPurchaseGoodsSum(params) {
+  return request({
+    url: '/websit/report/purchase-goods-sum',
+    method: 'post',
+    params
+  })
+}
+
+// -----------------------------------------------
+
+// 月度网点采购类别
+export function getPurchaseCategorySum(params) {
+  return request({
+    url: '/websit/report/purchase-category-sum',
+    method: 'post',
+    params
+  })
+}
+
+// -----------------------------------------------

+ 26 - 37
src/utils/util.js

@@ -4,10 +4,10 @@ import { getToken } from '@/utils/auth'
 
 export function dateFormat2(format, date) {
   if (typeof date === 'string') {
-    date = new Date(date);
+    date = new Date(date)
   }
-  const we = date.getDay(); // 星期
-  const qut = Math.floor((date.getMonth() + 3) / 3).toString(); // 季度
+  const we = date.getDay() // 星期
+  const qut = Math.floor((date.getMonth() + 3) / 3).toString() // 季度
   const opt = {
     'Y+': date.getFullYear().toString(), // 年
     'm+': (date.getMonth() + 1).toString(), // 月(月份从0开始,要+1)
@@ -15,8 +15,8 @@ export function dateFormat2(format, date) {
     'H+': date.getHours().toString(), // 时
     'M+': date.getMinutes().toString(), // 分
     'S+': date.getSeconds().toString(), // 秒
-    'q+': qut, // 季度
-  };
+    'q+': qut // 季度
+  }
   const week = {
     // 中文数字 (星期)
     0: '日',
@@ -25,57 +25,47 @@ export function dateFormat2(format, date) {
     3: '三',
     4: '四',
     5: '五',
-    6: '六',
-  };
+    6: '六'
+  }
   const quarter = {
     // 中文数字(季度)
     1: '一',
     2: '二',
     3: '三',
-    4: '四',
-  };
+    4: '四'
+  }
   if (/(W+)/.test(format)) {
     format = format.replace(
       RegExp.$1,
-      RegExp.$1.length > 1
-        ? RegExp.$1.length > 2
-          ? '星期' + week[we]
-          : '周' + week[we]
-        : week[we]
-    );
+      RegExp.$1.length > 1 ? (RegExp.$1.length > 2 ? '星期' + week[we] : '周' + week[we]) : week[we]
+    )
   }
   if (/(Q+)/.test(format)) {
     // 输入一个Q,只输出一个中文数字,输入4个Q,则拼接上字符串
-    format = format.replace(
-      RegExp.$1,
-      RegExp.$1.length === 4 ? '第' + quarter[qut] + '季度' : quarter[qut]
-    );
+    format = format.replace(RegExp.$1, RegExp.$1.length === 4 ? '第' + quarter[qut] + '季度' : quarter[qut])
   }
   for (const k in opt) {
-    const r = new RegExp('(' + k + ')').exec(format);
+    const r = new RegExp('(' + k + ')').exec(format)
     if (r) {
       // 若输入的长度不为1,则前面补零
-      format = format.replace(
-        r[1],
-        RegExp.$1.length === 1 ? opt[k] : opt[k].padStart(RegExp.$1.length, '0')
-      );
+      format = format.replace(r[1], RegExp.$1.length === 1 ? opt[k] : opt[k].padStart(RegExp.$1.length, '0'))
     }
   }
-  return format;
+  return format
 }
 
 // 定义一个函数将树形数据转换为列表
-export function treeToList(tree, key = "children", list = []) {
+export function treeToList(tree, key = 'children', list = []) {
   // 将当前节点添加到列表中
-  list.push(...tree);
+  list.push(...tree)
   // 遍历当前节点的子节点
   tree?.forEach(item => {
     if (item?.[key]?.length) {
       // 递归调用,将子节点及其后代节点添加到列表中
-      treeToList(item?.[key], key, list);
+      treeToList(item?.[key], key, list)
     }
-  });
-  return list;
+  })
+  return list
 }
 
 /**
@@ -84,21 +74,21 @@ export function treeToList(tree, key = "children", list = []) {
  * @returns {Object}
  */
 export function deleteEmptyObj(obj) {
-  let newObj = obj;
+  let newObj = obj
   for (var key in newObj) {
     if (newObj[key] === '' || newObj[key] === null || newObj[key] === undefined) {
       delete newObj[key]
     }
   }
-  return newObj;
+  return newObj
 }
 
 /**
- * 
+ *
  * @param {*} array 要查询的数组
  * @param {*} attr 要查询的字段
  * @param {*} val 要查询的字段值
- * @returns 
+ * @returns
  */
 export function findElem(array, attr, val) {
   if (!array || !array.length) {
@@ -106,13 +96,12 @@ export function findElem(array, attr, val) {
   }
   for (var i = 0; i < array.length; i++) {
     if (array[i][attr] == val) {
-      return i; //返回当前索引值
+      return i //返回当前索引值
     }
   }
-  return -1;
+  return -1
 }
 
-
 /**
  * 生成带参数的链接
  * @param {String} url

+ 249 - 0
src/views/auxiliaryFittings/statement/purchase-category-sum/index.vue

@@ -0,0 +1,249 @@
+<template>
+  <div class="app-container">
+    <div class="screen-container">
+      <div class="top clearfix">
+        <div class="title fl">条件筛选</div>
+        <div class="fr">
+          <el-button size="mini" type="primary" @click="handlePurchaseCategorySumExport"
+            >导出月度网点采购类别</el-button
+          >
+        </div>
+      </div>
+      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="网点" prop="websitId">
+              <el-select v-model="screenForm.websitId" filterable placeholder="门店" size="small">
+                <el-option label="全部" value="" />
+                <el-option v-for="(item, index) in shopList" :key="index" :label="item.name" :value="item.websitId" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item
+              label="月份"
+              prop="yearMonth"
+              :rules="[{ required: true, message: '请输入月份', trigger: 'blur' }]"
+            >
+              <el-date-picker v-model="screenForm.yearMonth" type="month" placeholder="选择月" value-format="yyyy-MM" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="tr">
+            <el-form-item label="">
+              <el-button size="mini" type="primary" @click="submitScreenForm">查询</el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+    <div class="mymain-container">
+      <div class="btn-group clearfix">
+        <div class="fl" />
+        <div class="fr" />
+      </div>
+      <div class="table">
+        <el-table
+          v-loading="listLoading"
+          :data="dataList"
+          element-loading-text="Loading"
+          size="mini"
+          border
+          header-cell-class-name="headerRowColor"
+          highlight-current-row
+        >
+          <el-table-column align="center" label="年月" prop="yearMonth" />
+          <el-table-column align="center" label="网点编号" prop="websitId" />
+          <el-table-column align="center" label="网点名称" prop="shopName" width="220px" />
+          <el-table-column align="center" label="工单网点编号" prop="websiteNumber" width="120px" />
+          <el-table-column align="center" label="采购">
+            <el-table-column align="center" label="铜管(公斤)" prop="tgQty" width="110px" />
+            <el-table-column align="center" label="铜管总价" prop="tgVal" />
+            <el-table-column align="center" label="保温棉(条)" prop="bwmQty" width="110px" />
+            <el-table-column align="center" label="保温棉总价" prop="bwmVal" width="110px" />
+            <el-table-column align="center" label="电缆(米)" prop="dlQty" />
+            <el-table-column align="center" label="电缆总价" prop="dlVal" />
+            <el-table-column align="center" label="支架(付)" prop="zjQty" />
+            <el-table-column align="center" label="支架总价" prop="zjVal" />
+            <el-table-column align="center" label="冷媒(罐)" prop="lmQty" />
+            <el-table-column align="center" label="冷媒总价" prop="lmVal" />
+            <el-table-column align="center" label="五金" prop="wjQty" />
+            <el-table-column align="center" label="五金总价" prop="wjVal" />
+            <el-table-column align="center" label="其它" prop="jtQty" />
+            <el-table-column align="center" label="其它总价" prop="jtVal" />
+            <el-table-column align="center" label="开关" prop="kgQty" />
+            <el-table-column align="center" label="开关总价" prop="kgVal" />
+            <el-table-column align="center" label="包扎带" prop="bzdQty" width="110px" />
+            <el-table-column align="center" label="包扎带总价" prop="bzdVal" width="110px" />
+            <el-table-column align="center" label="总采购金额" prop="purchaseTotalVal" width="120px" />
+          </el-table-column>
+          <el-table-column align="center" label="上月库存金额" prop="lastMonthVal" width="120px" />
+          <el-table-column align="center" label="当月损溢数量" prop="totalLostQty" width="120px" />
+          <el-table-column align="center" label="当月损溢金额" prop="totalLostVal" width="120px" />
+          <el-table-column align="center" label="调拨">
+            <el-table-column align="center" label="铜管(公斤)" width="110px">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.tgQty }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="铜管总价">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.tgVal }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="保温棉(条)" width="110px">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.bwmQty }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="保温棉总价" width="110px">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.bwmVal }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="电缆(米)">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.dlQty }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="电缆总价">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.dlVal }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="支架(付)">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.zjQty }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="支架总价">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.zjVal }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="冷媒(罐)">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.lmQty }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="冷媒总价">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.lmVal }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="五金">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.wjQty }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="五金总价">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.wjVal }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="其它">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.jtQty }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="其它总价">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.jtVal }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="开关">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.kgQty }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="开关总价">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.kgVal }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="包扎带" width="110px">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.bzdQty }}
+              </template>
+            </el-table-column>
+            <el-table-column align="center" label="包扎带总价" width="110px">
+              <template slot-scope="{ row }">
+                {{ row.transferItemDetail.bzdVal }}
+              </template>
+            </el-table-column>
+          </el-table-column>
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { downloadFiles } from '@/utils/util'
+import { getPurchaseCategorySum } from '@/api/material-system/report'
+import { getWebsit } from '@/api/customerManagement.js'
+export default {
+  name: 'PurchaseCategorySum',
+  data() {
+    return {
+      listLoading: false,
+      dataList: [], // 列表
+      shopList: [], // 网点列表
+      screenForm: {
+        // 筛选表单数据
+        websitId: '', // 门店编号
+        yearMonth: '' // 年月
+      }
+    }
+  },
+  created() {
+    getWebsit({ status: true }).then(res => {
+      this.shopList = res.data
+      if (this.shopList && this.shopList.length === 1) {
+        this.screenForm.websitId = this.shopList[0].websitId
+      }
+    })
+  },
+  methods: {
+    // 查询列表
+    getList() {
+      this.$refs.screenForm.validate(valid => {
+        if (valid) {
+          this.listLoading = true
+          const params = {
+            websitId: this.screenForm.websitId, // 门店编号
+            month: this.screenForm.yearMonth // 年月
+          }
+          getPurchaseCategorySum(params).then(res => {
+            if (res.data) {
+              res.data.forEach(obj => {
+                obj.purchaseTotalVal = parseFloat(
+                  obj.tgVal + obj.bwmVal + obj.dlVal + obj.zjVal + obj.lmVal + obj.wjVal + obj.jtVal
+                ).toFixed(4)
+              })
+              this.dataList = res.data
+            }
+            this.listLoading = false
+          })
+        }
+      })
+    },
+    // 提交筛选表单
+    submitScreenForm() {
+      this.getList()
+    },
+    handlePurchaseCategorySumExport() {
+      this.$refs.screenForm.validate(valid => {
+        if (valid) {
+          const screenData = {
+            websitId: this.screenForm.websitId, // 门店编号
+            month: this.screenForm.yearMonth // 年月
+          }
+          downloadFiles('websit/report/export/purchase-category-sum', screenData)
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style scoped></style>

+ 154 - 0
src/views/auxiliaryFittings/statement/shop-purchase-sum/index.vue

@@ -0,0 +1,154 @@
+<template>
+  <div class="app-container">
+    <div class="screen-container">
+      <div class="top clearfix">
+        <div class="title fl">条件筛选</div>
+        <div class="fr">
+          <el-button size="mini" type="primary" @click="handleSumSaleDetailExport">导出汇总采购明细</el-button>
+          <!--          <el-button type="primary" size="mini" @click="isOpen = !isOpen">{{ isOpen ? '收起':'展开' }}<i class="el-icon&#45;&#45;right" :class="isOpen ? 'el-icon-arrow-up':'el-icon-arrow-down'" /></el-button>-->
+        </div>
+      </div>
+      <el-form
+        ref="screenForm"
+        :model="screenForm"
+        :rules="screenFormRules"
+        label-width="80px"
+        size="mini"
+        label-position="left"
+      >
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="网点" prop="websitId">
+              <el-select v-model="screenForm.websitId" filterable placeholder="门店" size="small">
+                <el-option label="全部" value="" />
+                <el-option v-for="(item, index) in shopList" :key="index" :label="item.name" :value="item.websitId" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="12">
+            <el-form-item label="入库时间" prop="stockInDate">
+              <el-date-picker
+                v-model="screenForm.stockInDate"
+                type="daterange"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                size="mini"
+                :default-time="['00:00:00', '23:59:59']"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="24" :lg="6" class="tr">
+            <el-form-item label="">
+              <el-button size="mini" @click="resetScreenForm">清空</el-button>
+              <el-button size="mini" type="primary" @click="submitScreenForm">查询</el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+
+    <div class="mymain-container">
+      <div class="table">
+        <el-table
+          v-loading="listLoading"
+          :data="dataList"
+          element-loading-text="Loading"
+          element-loading-spinner="el-icon-loading"
+          element-loading-background="rgba(0, 0, 0, 0.8)"
+          size="mini"
+          border
+          header-cell-class-name="headerRowColor"
+          highlight-current-row
+        >
+          <el-table-column align="center" label="网点名称" prop="shopName" min-width="160" />
+          <el-table-column align="center" label="供应商名称" prop="venderName" min-width="120" />
+          <el-table-column align="center" label="辅材名称" prop="goodsName" min-width="140" />
+          <el-table-column align="center" label="类别名称" prop="categoryName" />
+          <!--          <el-table-column align="center" label="采购数量" prop="purchaseQty" />-->
+          <el-table-column align="center" label="验收数量" prop="recQty" />
+          <el-table-column align="center" label="验收赠品数量" prop="recGiftQty" min-width="110" />
+          <el-table-column align="center" label="验收金额" prop="costValue" />
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { getPurchaseGoodsSum } from '@/api/material-system/report'
+import { downloadFiles } from '@/utils/util'
+import { getWebsit } from '@/api/customerManagement.js'
+export default {
+  name: 'ShopPurchaseSum',
+  data() {
+    return {
+      listLoading: false,
+      dataList: [], // 列表
+      shopList: [], // 网点列表
+      screenForm: {
+        // 筛选表单数据
+        websitId: '', // 门店编号
+        stockInDate: [] // 入库时间
+      },
+      screenFormRules: {
+        stockInDate: [{ required: true, message: '请选择入库日期', trigger: 'change' }]
+      },
+      isOpen: false // 是否展开条件筛选
+    }
+  },
+  created() {
+    getWebsit({ status: true }).then(res => {
+      this.shopList = res.data
+      if (this.shopList && this.shopList.length === 1) {
+        this.screenForm.websitId = this.shopList[0].websitId
+      }
+    })
+  },
+  methods: {
+    // 查询列表
+    getList() {
+      this.$refs.screenForm.validate(valid => {
+        if (valid) {
+          this.listLoading = true
+          const params = {
+            websitId: this.screenForm.websitId, // 门店编号
+            startTime: this.screenForm.stockInDate[0] ? this.screenForm.stockInDate[0] : '',
+            endTime: this.screenForm.stockInDate[1] ? this.screenForm.stockInDate[1] : ''
+          }
+          getPurchaseGoodsSum(params).then(res => {
+            this.dataList = res.data
+            this.listLoading = false
+          })
+        }
+      })
+    },
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields()
+      this.currentPage = 1
+      this.getList()
+    },
+    // 提交筛选表单
+    submitScreenForm() {
+      this.currentPage = 1
+      this.getList()
+    },
+    // 导出汇总销售明细
+    handleSumSaleDetailExport() {
+      this.$refs.screenForm.validate(valid => {
+        if (valid) {
+          const screenData = {
+            websitId: this.screenForm.websitId, // 门店编号
+            startTime: this.screenForm.stockInDate[0] ? this.screenForm.stockInDate[0] : '',
+            endTime: this.screenForm.stockInDate[1] ? this.screenForm.stockInDate[1] : ''
+          }
+          downloadFiles('websit/report/export/purchase-goods-sum', screenData)
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style scoped></style>

+ 292 - 0
src/views/auxiliaryFittings/statement/shop-sale-sum/index.vue

@@ -0,0 +1,292 @@
+<template>
+  <div class="app-container">
+    <div class="screen-container">
+      <div class="top clearfix">
+        <div class="title fl">条件筛选</div>
+        <div class="fr">
+          <el-button type="primary" size="mini" @click="isOpen = !isOpen"
+            >{{ isOpen ? '收起' : '展开'
+            }}<i class="el-icon--right" :class="isOpen ? 'el-icon-arrow-up' : 'el-icon-arrow-down'"
+          /></el-button>
+        </div>
+      </div>
+      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="7" :lg="7">
+            <el-form-item label="网点" prop="websitId">
+              <el-select v-model="screenForm.websitId" filterable placeholder="门店" size="small">
+                <el-option label="全部" value="" />
+                <el-option v-for="(item, index) in shopList" :key="index" :label="item.name" :value="item.websitId" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :xs="12" :sm="5" :lg="5">
+            <el-form-item label="日期类型" prop="dateType">
+              <el-select v-model="screenForm.dateType" filterable placeholder="日期类型" size="small">
+                <el-option v-for="(item, index) in dateTypes" :key="index" :label="item.label" :value="item.value" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col v-if="!screenForm.dateType" :xs="12" :sm="5" :lg="5">
+            <el-form-item prop="month" label-width="60">
+              <el-date-picker
+                v-model="screenForm.month"
+                type="month"
+                placeholder="请选择月份"
+                value-format="yyyy-MM"
+                size="small"
+                style="width: 150px"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col v-else :xs="24" :sm="8" :lg="8">
+            <el-form-item prop="dateTime">
+              <el-date-picker
+                v-model="screenForm.dateTime"
+                type="datetimerange"
+                value-format="yyyy-MM-dd HH:mm:ss"
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                :default-time="['00:00:00', '23:59:59']"
+                size="small"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row v-if="isOpen" :gutter="20" class="row-last">
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="工程师手机" prop="workerMobile">
+              <el-input v-model="screenForm.workerMobile" placeholder="工程师手机" size="small" />
+            </el-form-item>
+          </el-col>
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item label="工程师名称" prop="workerName">
+              <el-input v-model="screenForm.workerName" placeholder="名称(模糊)" size="small" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row :gutter="20">
+          <el-col :xs="12" :sm="12" :lg="12" class="tl">
+            <el-button size="mini" type="primary" @click="handleWorkerSaleSumExport">导出汇总工程师销售额</el-button>
+            <el-button size="mini" type="primary" @click="handleWorkerSaleSumDetailExport"
+              >导出汇总工程师销售明细</el-button
+            >
+            <el-button size="mini" type="primary" @click="handleSumSaleDetailExport">导出汇总销售明细</el-button>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="12" class="tr">
+            <el-button size="mini" @click="resetScreenForm">清空</el-button>
+            <el-button size="mini" type="primary" @click="submitScreenForm">查询</el-button>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+
+    <div class="mymain-container">
+      <div class="table">
+        <el-table
+          v-loading="listLoading"
+          :data="dataList"
+          element-loading-text="Loading"
+          size="mini"
+          border
+          header-cell-class-name="headerRowColor"
+          highlight-current-row
+        >
+          <el-table-column align="center" label="网点信息">
+            <el-table-column align="center" label="编号" prop="websitId" min-width="80" />
+            <el-table-column align="center" label="名称" prop="shopName" min-width="160" />
+          </el-table-column>
+          <el-table-column align="center" label="工程师信息">
+            <el-table-column align="center" label="手机" prop="mobile" min-width="120" />
+            <el-table-column align="center" label="名称" prop="workerName" min-width="140" />
+            <el-table-column align="center" label="归属" prop="websitName" min-width="160" />
+          </el-table-column>
+          <el-table-column align="center" label="销售金额">
+            <el-table-column align="center" label="合计" prop="totalSaleValue" />
+            <el-table-column align="center" label="微信" prop="wxSaleValue" />
+            <!--            <el-table-column align="center" label="支付宝" prop="aliSaleValue" />-->
+            <el-table-column align="center" label="通联" prop="allinpaySaleValue" />
+            <el-table-column align="center" label="现金" prop="cashSaleValue" />
+          </el-table-column>
+          <el-table-column align="center" label="支付次数">
+            <el-table-column align="center" label="微信" prop="wx" />
+            <!--            <el-table-column align="center" label="支付宝" prop="ali" />-->
+            <el-table-column align="center" label="通联" prop="allinpay" />
+            <el-table-column align="center" label="现金" prop="cash" />
+          </el-table-column>
+          <el-table-column align="center" label="赊账单数" prop="account" />
+          <el-table-column align="center" label="赊账金额" prop="accountSaleValue" />
+          <el-table-column align="center" label="退货金额" prop="retValue" />
+          <el-table-column fixed="right" align="center" label="">
+            <template slot-scope="scope">
+              <el-button type="text" @click="getDetail(scope.row)">查看</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+    </div>
+
+    <el-dialog :title="'销售明细'" :visible.sync="dialogVisible" width="80%">
+      <el-table :data="detailList" border highlight-current-row>
+        <el-table-column align="center" label="单号" prop="sheetId" min-width="190" />
+        <el-table-column align="center" label="商品名称" prop="goodsName" min-width="160" />
+        <el-table-column align="center" label="支付方式">
+          <template slot-scope="scope">
+            <div>{{ scope.row.payType | payTypeFilter }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="销售数量" prop="saleQty" />
+        <el-table-column align="center" label="售价" prop="price" />
+        <el-table-column align="center" label="售价金额" prop="saleValue" />
+        <el-table-column align="center" label="进价" prop="cost" />
+        <el-table-column align="center" label="进价金额" prop="costValue" />
+        <el-table-column align="center" label="支付时间" prop="payTime" min-width="160" />
+      </el-table>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { getSaleSum, getSaleSumDetail } from '@/api/material-system/report'
+import { downloadFiles } from '@/utils/util'
+import { getWebsit } from '@/api/customerManagement.js'
+export default {
+  name: 'ShopSaleSum',
+  data() {
+    return {
+      listLoading: false,
+      dataList: [], // 列表
+      detailList: [], // 明细列表
+      shopList: [], // 网点列表
+      screenForm: {
+        // 筛选表单数据
+        websitId: '', // 门店编号
+        workerMobile: '', // 工程师手机号
+        workerName: '', // 工程师名称
+        workerBelong: '', // 工程师归属
+        month: '', // 支付时间
+        dateType: 0,
+        dateTime: ''
+      },
+      dateTypes: [
+        { value: 0, label: '月份' },
+        { value: 1, label: '日期' }
+      ],
+      isOpen: false, // 是否展开条件筛选
+      dialogVisible: false
+    }
+  },
+  computed: {
+    generateMonth() {
+      const curDate = new Date()
+      const fullYear = curDate.getFullYear()
+      const month = curDate.getMonth() + 1 < 10 ? '0' + (curDate.getMonth() + 1) : '' + (curDate.getMonth() + 1)
+      return fullYear + '-' + month
+    }
+  },
+  created() {
+    this.screenForm.month = this.generateMonth
+    getWebsit({ status: true }).then(res => {
+      this.shopList = res.data
+      if (this.shopList && this.shopList.length === 1) {
+        this.screenForm.websitId = this.shopList[0].websitId
+      }
+    })
+  },
+  methods: {
+    // 查询列表
+    getList() {
+      this.listLoading = true
+      if (!this.screenForm.month) {
+        this.$errorMsg('请选择月份!')
+        return
+      }
+      const params = {
+        websitId: this.screenForm.websitId, // 门店编号
+        workerMobile: this.screenForm.workerMobile, // 工程师手机号
+        workerName: this.screenForm.workerName, // 工程师名称
+        workerBelong: this.screenForm.workerBelong, // 工程师归属
+        month: this.screenForm.dateType ? '' : this.screenForm.month,
+        startTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[0] : null,
+        endTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[1] : null
+      }
+      getSaleSum(params).then(res => {
+        this.dataList = res.data
+        this.listLoading = false
+      })
+    },
+    // 重置筛选表单
+    resetScreenForm() {
+      this.$refs.screenForm.resetFields()
+      this.screenForm.month = this.generateMonth
+      this.currentPage = 1
+      this.getList()
+    },
+    // 提交筛选表单
+    submitScreenForm() {
+      this.currentPage = 1
+      this.getList()
+    },
+    // 获取明细
+    getDetail(row) {
+      this.dialogVisible = true
+      const params = {
+        websitId: row.websitId,
+        workerMobile: row.mobile,
+        month: this.screenForm.dateType ? '' : this.screenForm.month,
+        startTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[0] : null,
+        endTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[1] : null
+      }
+      getSaleSumDetail(params).then(res => {
+        this.detailList = res.data
+      })
+    },
+    // 导出汇总工程师销售额
+    handleWorkerSaleSumExport() {
+      const screenData = {
+        websitId: this.screenForm.websitId, // 门店编号
+        workerMobile: this.screenForm.workerMobile, // 工程师手机号
+        workerName: this.screenForm.workerName, // 工程师名称
+        workerBelong: this.screenForm.workerBelong, // 工程师归属
+        month: this.screenForm.dateType ? '' : this.screenForm.month,
+        startTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[0] : null,
+        endTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[1] : null
+      }
+      downloadFiles('websit/report/export/worker/buy/sum', screenData)
+    },
+    // 导出汇总工程师销售明细
+    handleWorkerSaleSumDetailExport() {
+      const screenData = {
+        websitId: this.screenForm.websitId, // 门店编号
+        workerMobile: this.screenForm.workerMobile, // 工程师手机号
+        workerName: this.screenForm.workerName, // 工程师名称
+        workerBelong: this.screenForm.workerBelong, // 工程师归属
+        month: this.screenForm.dateType ? '' : this.screenForm.month,
+        startTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[0] : null,
+        endTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[1] : null
+      }
+      downloadFiles('websit/report/export/worker/buy/sum/Detail', screenData)
+    },
+    // 导出汇总销售明细
+    handleSumSaleDetailExport() {
+      const screenData = {
+        websitId: this.screenForm.websitId, // 门店编号
+        workerMobile: this.screenForm.workerMobile, // 工程师手机号
+        workerName: this.screenForm.workerName, // 工程师名称
+        workerBelong: this.screenForm.workerBelong, // 工程师归属
+        month: this.screenForm.dateType ? '' : this.screenForm.month,
+        startTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[0] : null,
+        endTime: this.screenForm.dateType && this.screenForm.dateTime ? this.screenForm.dateTime[1] : null
+      }
+      downloadFiles('websit/report/export/sum/buy/detail', screenData)
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .row-last .el-col:last-child .el-form-item__content {
+  margin-left: 90px !important;
+}
+</style>

+ 135 - 0
src/views/auxiliaryFittings/statement/worker-purchase-category-sum/index.vue

@@ -0,0 +1,135 @@
+<template>
+  <div class="app-container">
+    <div class="screen-container">
+      <div class="top clearfix">
+        <div class="title fl">条件筛选</div>
+        <div class="fr">
+          <el-button size="mini" type="primary" @click="handleWorkerPurchaseCategorySumExport"
+            >导出月度师傅采购类别</el-button
+          >
+        </div>
+      </div>
+      <el-form ref="screenForm" :model="screenForm" label-width="90px" size="mini" label-position="left">
+        <el-row :gutter="20">
+          <el-col :xs="24" :sm="12" :lg="6">
+            <el-form-item
+              label="月份"
+              prop="yearMonth"
+              :rules="[{ required: true, message: '请输入月份', trigger: 'blur' }]"
+            >
+              <el-date-picker v-model="screenForm.yearMonth" type="month" placeholder="选择月" value-format="yyyy-MM" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" class="tr">
+            <el-form-item label="">
+              <el-button size="mini" type="primary" @click="submitScreenForm">查询</el-button>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+    </div>
+    <div class="mymain-container">
+      <div class="btn-group clearfix">
+        <div class="fl" />
+        <div class="fr" />
+      </div>
+      <div class="table">
+        <el-table
+          v-loading="listLoading"
+          :data="dataList"
+          element-loading-text="Loading"
+          size="mini"
+          border
+          header-cell-class-name="headerRowColor"
+          highlight-current-row
+        >
+          <el-table-column align="center" label="年月" prop="yearMonth" />
+          <el-table-column align="center" label="工单网点编号" prop="websiteNumber" width="120px" />
+          <el-table-column align="center" label="工单网点名称" prop="websiteNumber" width="120px" />
+          <el-table-column align="center" label="工单师傅编号" prop="workerId" width="120px" />
+          <el-table-column align="center" label="工单师傅名称" prop="workerName" width="120px" />
+          <el-table-column align="center" label="铜管(公斤)" prop="tgQty" width="110px" />
+          <el-table-column align="center" label="铜管总价" prop="tgVal" />
+          <el-table-column align="center" label="保温棉(条)" prop="bwmQty" width="110px" />
+          <el-table-column align="center" label="保温棉总价" prop="bwmVal" width="110px" />
+          <el-table-column align="center" label="电缆(米)" prop="dlQty" />
+          <el-table-column align="center" label="电缆总价" prop="dlVal" />
+          <el-table-column align="center" label="支架(付)" prop="zjQty" />
+          <el-table-column align="center" label="支架总价" prop="zjVal" />
+          <el-table-column align="center" label="冷媒(罐)" prop="lmQty" />
+          <el-table-column align="center" label="冷媒总价" prop="lmVal" />
+          <el-table-column align="center" label="五金" prop="wjQty" />
+          <el-table-column align="center" label="五金总价" prop="wjVal" />
+          <el-table-column align="center" label="其它" prop="jtQty" />
+          <el-table-column align="center" label="其它总价" prop="jtVal" />
+          <el-table-column align="center" label="开关" prop="kgQty" />
+          <el-table-column align="center" label="开关总价" prop="kgVal" />
+          <el-table-column align="center" label="包扎带" prop="bzdQty" />
+          <el-table-column align="center" label="包扎带总价" prop="bzdVal" />
+          <el-table-column align="center" label="总采购金额" prop="purchaseTotalVal" width="120px" />
+        </el-table>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { downloadFiles } from '@/utils/util'
+import { getWorkerPurchaseCategorySum } from '@/api/material-system/report'
+
+export default {
+  name: 'WorkerPurchaseCategorySum',
+  data() {
+    return {
+      listLoading: false,
+      dataList: [], // 列表
+      shopList: [], // 网点列表
+      screenForm: {
+        // 筛选表单数据
+        yearMonth: '' // 年月
+      }
+    }
+  },
+  methods: {
+    // 查询列表
+    getList() {
+      this.$refs.screenForm.validate(valid => {
+        if (valid) {
+          this.listLoading = true
+          const params = {
+            month: this.screenForm.yearMonth // 年月
+          }
+          getWorkerPurchaseCategorySum(params).then(res => {
+            if (res.data) {
+              res.data.forEach(obj => {
+                obj.purchaseTotalVal = parseFloat(
+                  obj.tgVal + obj.bwmVal + obj.dlVal + obj.zjVal + obj.lmVal + obj.wjVal + obj.jtVal
+                ).toFixed(4)
+              })
+              this.dataList = res.data
+            }
+            this.listLoading = false
+            console.log(res)
+          })
+        }
+      })
+    },
+    // 提交筛选表单
+    submitScreenForm() {
+      this.getList()
+    },
+    handleWorkerPurchaseCategorySumExport() {
+      this.$refs.screenForm.validate(valid => {
+        if (valid) {
+          const screenData = {
+            month: this.screenForm.yearMonth // 年月
+          }
+          downloadFiles('websit/report/export/worker-purchase-category-sum', screenData)
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style scoped></style>