Bladeren bron

详情列表

1
mo 3 jaren geleden
bovenliggende
commit
439a761e2a

+ 13 - 0
src/store/modules/permission.js

@@ -650,6 +650,19 @@ function setDetailRoute(accessedRoutes) {
             id: 'xx19'
           }
         },
+        {
+          name: '2021doubleDetail',
+          path: '2021doubleDetail',
+          component: () => import('@/views/activityScheduling/2021doubleDetail'),
+          hidden: true,
+          meta: {
+            noCache: '1',
+            title: '2021双十一活动详情',
+            belongTopMenu: "/operateManager",
+            activeMenu: '/activeMarketing',
+            id: 'xx19'
+          }
+        },
 
       ])
     }

+ 1 - 1
src/views/2021memeberActionManager/memberActiveDetail.vue

@@ -253,7 +253,7 @@ export default {
     },
     onCancel() {
       this.$store.dispatch("delVisitedViews", this.$route);
-      this.$router.push("/operateManager/2021memeberActionManager");
+      this.$router.push("/2021memeberActionManager");
     },
     async onExport() {
       let obj = {

+ 135 - 199
src/views/activityScheduling/2021double11List.vue

@@ -3,7 +3,7 @@
   <div class="m-container">
     <el-page-header
       @back="onCancel"
-      :content="'2021十一活动'"
+      :content="'2021十一活动'"
     ></el-page-header>
     <!-- <h2>
       <div class="squrt"></div>
@@ -43,20 +43,20 @@
           >
         </el-form-item>
         <el-form-item>
-          <auth auths="export/countCloudTeacherActive">
+          <auth auths="export/organDoubleEleven2021Statis">
             <el-button type="primary" @click="onExport">导出</el-button>
           </auth>
         </el-form-item>
       </save-form>
       <!-- <div style="font-size: 14px; color: #f85043; padding-bottom: 10px"> -->
-        <!-- 应收总金额:{{ totalExpectAmount }}元 &nbsp;&nbsp;&nbsp;&nbsp;
+      <!-- 应收总金额:{{ totalExpectAmount }}元 &nbsp;&nbsp;&nbsp;&nbsp;
         现金实收总额:{{ totalActualAmount }}元 &nbsp;&nbsp;&nbsp;&nbsp;
         余额实收总额:{{ Number((totalExpectAmount - totalActualAmount).toFixed(2)) }}元 -->
-        <!-- 营收金额=2-3
+      <!-- 营收金额=2-3
         实收金额=应收总额(包含余额支付)
         预收金额=充值总额(发生消费,记负数)
         预收余额=充值总余额 -->
-        <!-- 总金额:{{ head.buyAmount | moneyFormat }}元<i
+      <!-- 总金额:{{ head.buyAmount | moneyFormat }}元<i
           style="width: 10px; display: inline-block"
         ></i>
         目标总金额:{{ head.targetAmount | moneyFormat }}元<i
@@ -79,209 +79,146 @@
           style="width: 10px; display: inline-block"
         ></i> -->
 
-        <!-- 购买总金额:{{ head.buyAmount | moneyFormat }}元<i
+      <!-- 购买总金额:{{ head.buyAmount | moneyFormat }}元<i
           style="width: 10px; display: inline-block"
         ></i> -->
 
-        <!-- 购买率:{{ head.buyScale }}%
+      <!-- 购买率:{{ head.buyScale }}%
         <i style="width: 10px; display: inline-block"></i> -->
 
-        <!-- 总人数:{{ head.totalNum }}元<i
+      <!-- 总人数:{{ head.totalNum }}元<i
           style="width: 10px; display: inline-block"
         ></i> -->
-      </div>
-      <div class="tableWrap">
-        <el-table
-          style="width: 100%"
-          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
-          :data="tableList"
-          @sort-change="sortChang"
-
-        >
-        <!--   :default-sort="{
-            prop: 'targetFinishScale',
+    </div>
+    <div class="tableWrap">
+      <el-table
+        style="width: 100%"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        :data="tableList"
+        @sort-change="sortChang"
+        :default-sort="{
+            prop: 'totalBuyAmount',
             order: 'descending',
-          }" -->
-          <!-- <el-table-column
+          }"
+      >
+
+        <!-- <el-table-column
             align="center"
             prop="targetNum"
             label="排名"
           ></el-table-column> -->
-          <el-table-column align="center" label="排名" type="index" width="50">
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="organName"
-            label="分部"
-            width="170px"
-          ></el-table-column>
-          <el-table-column align="center" prop="buyAmount" label="总金额">
-            <template slot-scope="scope">
-              <div>{{ scope.row.buyAmount | moneyFormat }}元</div>
-            </template></el-table-column
-          >
-          <el-table-column
-            align="center"
-            prop="targetAmount"
-            sortable="custom"
-            label="目标金额"
-            width="150px"
-          >
-            <template slot-scope="scope">
-              <div>{{ scope.row.targetAmount | moneyFormat }}元</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="targetAmountFinishScale"
-            sortable="custom"
-            width="170px"
-          >
-            <template slot="header" slot-scope="slot">
-              <div class="titleCell">
-                <span>目标金额达成率</span>
-                <el-tooltip placement="top" popper-class="mTooltip">
-                  <div slot="content">总成交额/目标总额*100%</div>
-                  <i
-                    class="el-icon-question micon el-tooltip"
-                    style="
-                      font-size: 18px;
-                      color: #f56c6c;
-                      top: 2px;
-                      position: relative;
-                    "
-                  ></i>
-                </el-tooltip>
-              </div>
-            </template>
-            <template slot-scope="scope">
-              <div>{{ scope.row.targetAmountFinishScale }}%</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="buyNum"
-            sortable="custom"
-            width="150px"
-          >
-            <template slot="header" slot-scope="slot">
-              <div class="titleCell">
-                <span>购买人数</span>
-                <el-tooltip placement="top" popper-class="mTooltip">
-                  <div slot="content">本次活动交易成功总人数(去重)</div>
-                  <i
-                    class="el-icon-question micon el-tooltip"
-                    style="
-                      font-size: 18px;
-                      color: #f56c6c;
-                      top: 2px;
-                      position: relative;
-                    "
-                  ></i>
-                </el-tooltip>
-              </div>
-            </template>
-            <template slot-scope="scope">
-              <div>{{ scope.row.buyNum }}人</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="avgBuyAmount"
-            sortable="custom"
-            width="150px"
-          >
-            <template slot="header" slot-scope="slot">
-              <div class="titleCell">
-                <span>人均购买金额</span>
-                <el-tooltip placement="top" popper-class="mTooltip">
-                  <div slot="content">总金额 / 购买人数</div>
-                  <i
-                    class="el-icon-question micon el-tooltip"
-                    style="
-                      font-size: 18px;
-                      color: #f56c6c;
-                      top: 2px;
-                      position: relative;
-                    "
-                  ></i>
-                </el-tooltip>
-              </div>
-            </template>
-            <template slot-scope="scope">
-              <div>{{ scope.row.avgBuyAmount }}元</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="targetNum"
-            sortable="custom"
-            width="150px"
-          >
-            <template slot="header" slot-scope="slot">
-              <div class="titleCell">
-                <span>目标人数</span>
-                <el-tooltip placement="top" popper-class="mTooltip">
-                  <div slot="content">
-                    进行中非会员乐团-已上乐团课小于等于4节学员-非本活动购买会员-弦乐声部学员
-                  </div>
-                  <i
-                    class="el-icon-question micon el-tooltip"
-                    style="
-                      font-size: 18px;
-                      color: #f56c6c;
-                      top: 2px;
-                      position: relative;
-                    "
-                  ></i>
-                </el-tooltip>
-              </div>
-            </template>
-            <template slot-scope="scope">
-              <div>{{ scope.row.targetNum }}人</div>
-            </template>
-          </el-table-column>
-          <el-table-column
-            align="center"
-            prop="targetFinishScale"
-            sortable="custom"
-            width="150px"
-          >
-            <template slot="header" slot-scope="slot">
-              <div class="titleCell">
-                <span>目标达成率</span>
-                <el-tooltip placement="top" popper-class="mTooltip">
-                  <div slot="content">
-                    该分部实际交易成功人数 / 目标人数*100%
-                  </div>
-                  <i
-                    class="el-icon-question micon el-tooltip"
-                    style="
-                      font-size: 18px;
-                      color: #f56c6c;
-                      top: 2px;
-                      position: relative;
-                    "
-                  ></i>
-                </el-tooltip>
-              </div>
-            </template>
-            <template slot-scope="scope">
-              <div>{{ scope.row.targetFinishScale }}%</div>
-            </template>
-          </el-table-column>
+        <el-table-column align="center" label="排名" type="index" width="50">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="organName"
+          label="分部"
+          width="170px"
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          prop="totalBuyAmount"
+          label="总成交金额"
+          sortable="custom"
+        >
+          <template slot-scope="scope">
+            <div>{{ scope.row.totalBuyAmount | moneyFormat }}元</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="avgBuyAmount"
+          label="人均购买金额"
+          sortable="custom"
+        >
+          <template slot-scope="scope">
+            <div>{{ scope.row.avgBuyAmount | moneyFormat }}元</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="targetAmount"
+          label="20节1v1成交金额/人数"
+          width="150px"
+        >
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.vip1V120Amount| moneyFormat  }}元/{{ scope.row.vip1V120Num }}人
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="targetAmount"
+          label="40节1v1成交金额/人数"
+          width="150px"
+        >
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.vip1V140Amount| moneyFormat  }}元/{{ scope.row.vip1V140Num }}人
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="targetAmount"
+          label="20节1v2成交金额/人数"
+          width="150px"
+        >
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.vip1V220Amount| moneyFormat  }}元/{{ scope.row.vip1V220Num }}人
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="targetAmount"
+          label="40节1v2成交金额/人数"
+          width="150px"
+        >
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.vip1V240Amount| moneyFormat  }}元/{{ scope.row.vip1V240Num }}人
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="targetAmount"
+          label="乐理课成交金额/人数"
+          width="150px"
+        >
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.musicTheoryAmount | moneyFormat }}元/{{ scope.row.musicTheoryNum }}人
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="giveMemberNum"
+          label="赠送会员人数"
+          width="150px"
+        >
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.giveMemberNum }}人
+            </div>
+          </template>
+        </el-table-column>
 
-          <el-table-column label="详情" align="left">
-            <template slot-scope="scope">
-              <div>
-                <el-button type="text" @click="gotoDetail(scope.row)"
-                  >详情</el-button
-                >
-              </div>
-            </template>
-          </el-table-column>
-        </el-table>
-        <!-- <pagination
+        <el-table-column label="详情" align="left">
+          <template slot-scope="scope">
+            <div>
+              <el-button type="text" @click="gotoDetail(scope.row)"
+                >详情</el-button
+              >
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <!-- <pagination
           sync
           :total.sync="rules.total"
           :page.sync="rules.page"
@@ -312,7 +249,7 @@ export default {
       searchForm: {
         organId: null,
       },
-      searchList: { sort: "targetFinishScale", order: "DESC" },
+      searchList: { sort: "totalBuyAmount", order: "DESC" },
       head: {
         avgBuyAmount: null,
         buyAmount: null,
@@ -352,10 +289,9 @@ export default {
       try {
         const res = await getDoubleElevenList({
           organId: this.searchForm.organId,
-
         });
         //   ...this.searchList,
-        this.tableList = res.data.resultList;
+        this.tableList = res.data;
         // this.head = res.data.head;
       } catch (e) {
         console.log(e);
@@ -391,7 +327,7 @@ export default {
     gotoDetail(row) {
       // console.log('跳转详情')
       this.$router.push({
-        path: "/operateManager/memberActiveDetail",
+        path: "/operateManager/2021doubleDetail",
         query: { organId: row.organId, organName: row.organName },
       });
     },

+ 259 - 0
src/views/activityScheduling/2021doubleDetail.vue

@@ -0,0 +1,259 @@
+<!--  -->
+<template>
+  <div class="m-container">
+    <el-page-header @back="onCancel" :content="title"></el-page-header>
+    <div class="m-core">
+      <save-form
+        :inline="true"
+        :model="searchForm"
+        @submit="search"
+        @reset="onReSet"
+      >
+        <el-form-item prop="search">
+          <el-input v-model="searchForm.search" placeholder="学员编号/姓名/订单号" clearable> </el-input>
+        </el-form-item>
+
+        <!-- <el-form-item prop="organId">
+          <el-select
+            class="multiple"
+            style="width: 180px !important"
+            v-model.trim="searchForm.organId"
+            filterable
+            clearable
+            placeholder="请选择分部"
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item> -->
+        <el-form-item prop="type">
+          <el-select
+            v-model.trim="searchForm.type"
+            filterable
+            clearable
+            placeholder="购买课程"
+          >
+            <el-option
+              v-for="item in typeList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="giveMemberFlag">
+          <el-select
+            class="multiple"
+            style="width: 180px !important"
+            v-model.trim="searchForm.giveMemberFlag"
+            filterable
+            clearable
+            placeholder="是否赠送会员"
+          >
+            <el-option label="是" value="true"></el-option>
+            <el-option label="否" value="false"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="getTime">
+          <el-date-picker
+            style="width: 100%"
+            v-model="searchForm.getTime"
+            :picker-options="{ firstDayOfWeek: 1 }"
+            type="datetimerange"
+            :default-time="['00:00:00', '23:59:59']"
+            range-separator="-"
+            start-placeholder="交易开始日期"
+            end-placeholder="交易结束日期"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button native-type="submit" type="primary">搜索</el-button>
+          <el-button native-type="reset" type="danger">重置</el-button>
+          <auth auths="export/doubleEleven2021OrderDetail"></auth>
+          <el-button type="primary" @click="onExport">导出</el-button>
+        </el-form-item>
+      </save-form>
+      <div class="tableWrap">
+        <el-table
+          style="width: 100%"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          :data="tableList"
+        >
+          <el-table-column
+            align="center"
+            prop="studentId"
+            label="学生姓名(编号)"
+          >
+            <template slot-scope="scope">
+              <div>{{ scope.row.username }}({{ scope.row.userId }})</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="orderNo"
+            label="订单号"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="payTime"
+            label="交易时间"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="type"
+            label="购买课程"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="giveMember"
+            label="是否赠送会员"
+          >
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.giveMember?'是':'否'}}
+            </div>
+          </template></el-table-column>
+        </el-table>
+        <pagination
+          sync
+          :total.sync="rules.total"
+          :page.sync="rules.page"
+          :limit.sync="rules.limit"
+          :page-sizes="rules.page_size"
+          @pagination="getList"
+        />
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import axios from "axios";
+import { getToken } from "@/utils/auth";
+import pagination from "@/components/Pagination/index";
+import load from "@/utils/loading";
+import {courseViewTypeList } from "@/utils/searchArray";
+import { getDoubleElevenDetail,  } from "./api";
+import { Export } from "@/utils/downLoadFile";
+import cleanDeep from "clean-deep";
+import { getTimes } from "@/utils";
+import qs from "qs";
+const typeList = [
+  { value: 1, label: "1v1 20节" },
+  { value: 2, label: "1v1 40节" },
+  { value: 3, label: "1v2 20节" },
+  { value: 4, label: "1v2 40节" },
+  { value: 5, label: "乐理课" },
+];
+export default {
+  components: { pagination },
+  data() {
+    return {
+      searchForm: {
+        search: null,
+        getTime: [],
+        giveMemberFlag: null,
+        type: null,
+      },
+      courseViewTypeList,
+      tableList: [],
+      organList: [],
+      typeList: typeList,
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      organId: "",
+      title: "",
+      gradeList: {},
+    };
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {},
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  async mounted() {
+    this.organId = this.$route.query.organId;
+    if (this.$route.query.organName) {
+      this.title = `${this.$route.query.organName}双十一活动详情`;
+    } else {
+      this.title = `分部会员活动详情`;
+    }
+    // await this.$store.dispatch("setBranchs");
+    await this.$store.dispatch("setSubjects");
+
+    this.init();
+  },
+  methods: {
+    init() {
+      this.getList();
+    },
+    async getList() {
+      let { getTime, ...rest } = this.searchForm;
+      let params = {
+        ...rest,
+        page: this.rules.page,
+        rows: this.rules.limit,
+        ...getTimes(getTime, ["startTime", "endTime"],'YYYY-MM-DD HH:mm:ss'),
+      };
+      try {
+        const res = await getDoubleElevenDetail({
+          organId: this.organId,
+          ...params,
+          page: this.rules.page,
+          rows: this.rules.limit,
+        });
+        this.tableList = res.data.rows;
+        this.rules.total = res.data.total;
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    search() {
+      this.rules.page = 1;
+      this.getList();
+    },
+    onReSet() {
+      this.$nextTick(() => {
+        this.search();
+      });
+    },
+    onCancel() {
+      this.$store.dispatch("delVisitedViews", this.$route);
+      this.$router.push("/2021double11List");
+    },
+    async onExport() {
+        let { getTime, ...rest } = this.searchForm;
+      let params = {
+        ...rest,
+        page: this.rules.page,
+        rows: this.rules.limit,
+        ...getTimes(getTime, ["startTime", "endTime"]),
+      };
+      let obj = {
+        organId: this.organId,
+        ...params,
+      };
+      await Export(
+        this,
+        {
+          url: "/api-web/export/doubleEleven2021OrderDetail",
+          fileName: "2021双十一活动.xls",
+          method: "post",
+          params: qs.stringify(cleanDeep(obj)),
+        },
+        "您确定导出双十一活动详情列表?"
+      );
+    },
+  },
+};
+</script>
+<style lang='scss' scoped>
+</style>

+ 8 - 0
src/views/activityScheduling/api.js

@@ -42,3 +42,11 @@ export function getDoubleElevenList (data) {
       params: data
   })
 }
+// 双十一分部详情列表
+export function getDoubleElevenDetail (data) {
+  return request({
+      url: '/api-web/vipGroupActivity/doubleEleven2021OrderDetail',
+      method: 'get',
+      params: data
+  })
+}