250 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			250 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
<template>
 | 
						|
  <div>
 | 
						|
    <Card>
 | 
						|
 | 
						|
      <Tabs v-model="searchForm.status">
 | 
						|
        <!-- 标签栏 -->
 | 
						|
        <TabPane v-for="(item,index) in tabs" :key="index" :name="item.status" :label="item.title">
 | 
						|
 | 
						|
        </TabPane>
 | 
						|
 | 
						|
      </Tabs>
 | 
						|
      <Table :columns="liveColumns" :data="liveData"></Table>
 | 
						|
      <Row type="flex" style="margin:20px;" justify="end" class="page">
 | 
						|
        <Page :current="searchForm.pageNumber" :total="total" :page-size="searchForm.pageSize" @on-change="changePageNumber" @on-page-size-change="changePageSize" :page-size-opts="[10, 20, 50]"
 | 
						|
          size="small" show-total show-elevator show-sizer></Page>
 | 
						|
      </Row>
 | 
						|
 | 
						|
    </Card>
 | 
						|
  </div>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
import { getLiveList, whetherStar } from "@/api/promotion.js";
 | 
						|
export default {
 | 
						|
  data() {
 | 
						|
    return {
 | 
						|
      // 查询数据的总数
 | 
						|
      total: "",
 | 
						|
      // 查询的form
 | 
						|
      searchForm: {
 | 
						|
        pageSize: 10,
 | 
						|
        pageNumber: 1,
 | 
						|
        status: "NEW",
 | 
						|
      },
 | 
						|
      // 直播tab选项栏
 | 
						|
      tabs: [
 | 
						|
        {
 | 
						|
          title: "直播中",
 | 
						|
          status: "START",
 | 
						|
        },
 | 
						|
        {
 | 
						|
          title: "未开始",
 | 
						|
          status: "NEW",
 | 
						|
        },
 | 
						|
        {
 | 
						|
          title: "已结束",
 | 
						|
          status: "END",
 | 
						|
        },
 | 
						|
      ],
 | 
						|
      liveColumns: [
 | 
						|
        {
 | 
						|
          title: "直播标题",
 | 
						|
          key: "name",
 | 
						|
        },
 | 
						|
        {
 | 
						|
          title: "主播昵称",
 | 
						|
          key: "anchorName",
 | 
						|
        },
 | 
						|
        {
 | 
						|
          title: "直播开始时间",
 | 
						|
          key: "createTime",
 | 
						|
          render: (h, params) => {
 | 
						|
            return h(
 | 
						|
              "span",
 | 
						|
              this.$options.filters.unixToDate(params.row.startTime)
 | 
						|
            );
 | 
						|
          },
 | 
						|
        },
 | 
						|
        {
 | 
						|
          title: "直播结束时间",
 | 
						|
          key: "endTime",
 | 
						|
          render: (h, params) => {
 | 
						|
            return h(
 | 
						|
              "span",
 | 
						|
 | 
						|
              this.$options.filters.unixToDate(params.row.endTime)
 | 
						|
            );
 | 
						|
          },
 | 
						|
        },
 | 
						|
        {
 | 
						|
          title: "是否推荐",
 | 
						|
          align: "center",
 | 
						|
          render: (h, params) => {
 | 
						|
            return h("div", [
 | 
						|
              h(
 | 
						|
                "i-switch",
 | 
						|
                {
 | 
						|
                  // 数据库0 enabled,1 disabled
 | 
						|
                  props: {
 | 
						|
                    type: "primary",
 | 
						|
                    size: "large",
 | 
						|
                    value: params.row.recommend == true,
 | 
						|
                  },
 | 
						|
                  on: {
 | 
						|
                    "on-change": () => {
 | 
						|
                      this.star(params.row,params.index);
 | 
						|
                    },
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                [
 | 
						|
                  h("span", {
 | 
						|
                    slot: "open",
 | 
						|
                    domProps: {
 | 
						|
                      innerHTML: "是",
 | 
						|
                    },
 | 
						|
                  }),
 | 
						|
                  h("span", {
 | 
						|
                    slot: "close",
 | 
						|
                    domProps: {
 | 
						|
                      innerHTML: "否",
 | 
						|
                    },
 | 
						|
                  }),
 | 
						|
                ]
 | 
						|
              ),
 | 
						|
            ]);
 | 
						|
          },
 | 
						|
        },
 | 
						|
 | 
						|
        {
 | 
						|
          title: "直播状态",
 | 
						|
          render: (h, params) => {
 | 
						|
            return h(
 | 
						|
              "span",
 | 
						|
              params.row.status == "NEW"
 | 
						|
                ? "未开始"
 | 
						|
                : params.row.status == "START"
 | 
						|
                ? "直播中"
 | 
						|
                : "已结束"
 | 
						|
            );
 | 
						|
          },
 | 
						|
        },
 | 
						|
        {
 | 
						|
          title: "操作",
 | 
						|
          key: "action",
 | 
						|
          render: (h, params) => {
 | 
						|
            return h(
 | 
						|
              "div",
 | 
						|
              {
 | 
						|
                style: {
 | 
						|
                  display: "flex",
 | 
						|
                },
 | 
						|
              },
 | 
						|
              [
 | 
						|
                h(
 | 
						|
                  "Button",
 | 
						|
                  {
 | 
						|
                    props: {
 | 
						|
                      type: "error",
 | 
						|
                      size: "small",
 | 
						|
                    },
 | 
						|
                    style: {
 | 
						|
                      marginRight: "5px",
 | 
						|
                    },
 | 
						|
                    on: {
 | 
						|
                      click: () => {
 | 
						|
                        this.getLiveDetail(params.row);
 | 
						|
                      },
 | 
						|
                    },
 | 
						|
                  },
 | 
						|
                  "查看"
 | 
						|
                ),
 | 
						|
              ]
 | 
						|
            );
 | 
						|
          },
 | 
						|
        },
 | 
						|
      ], //table中显示的title
 | 
						|
      liveData: [], //table中显示的直播数据
 | 
						|
    };
 | 
						|
  },
 | 
						|
  watch: {
 | 
						|
    "searchForm.status": {
 | 
						|
      handler() {
 | 
						|
        this.liveData = [];
 | 
						|
        this.getStoreLives();
 | 
						|
      },
 | 
						|
      deep: true,
 | 
						|
    },
 | 
						|
  },
 | 
						|
  mounted() {
 | 
						|
    this.getStoreLives();
 | 
						|
  },
 | 
						|
  methods: {
 | 
						|
    /**
 | 
						|
     * 是否推荐
 | 
						|
     */
 | 
						|
    async star(val,index) {
 | 
						|
      let switched
 | 
						|
      if(this.liveData[index].recommend){
 | 
						|
        this.$set(this.liveData[index],'recommend',false)
 | 
						|
        switched = false
 | 
						|
      }
 | 
						|
      else{
 | 
						|
 | 
						|
        this.$set(this.liveData[index],'recommend',true)
 | 
						|
        switched = true
 | 
						|
      }
 | 
						|
 | 
						|
       await whetherStar({id:val.id,recommend:switched});
 | 
						|
    },
 | 
						|
 | 
						|
    /**
 | 
						|
     * 页面数据大小分页回调
 | 
						|
     */
 | 
						|
    changePageSize(val) {
 | 
						|
      this.searchForm.pageSize = val;
 | 
						|
      this.getStoreLives();
 | 
						|
    },
 | 
						|
    /**
 | 
						|
     * 分页回调
 | 
						|
     */
 | 
						|
    changePageNumber(val) {
 | 
						|
      this.searchForm.pageNumber = val;
 | 
						|
      this.getStoreLives();
 | 
						|
    },
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取店铺直播间列表
 | 
						|
     */
 | 
						|
    async getStoreLives() {
 | 
						|
      let result = await getLiveList(this.searchForm);
 | 
						|
      if (result.success) {
 | 
						|
        this.liveData = result.result.records;
 | 
						|
        this.total = result.result.total;
 | 
						|
      }
 | 
						|
    },
 | 
						|
 | 
						|
    /**
 | 
						|
     * 获取直播间详情
 | 
						|
     */
 | 
						|
    getLiveDetail(val) {
 | 
						|
      this.$router.push({
 | 
						|
        path: "/liveDetail",
 | 
						|
        query: { ...val, liveStatus: this.searchForm.status },
 | 
						|
      });
 | 
						|
    },
 | 
						|
  },
 | 
						|
};
 | 
						|
</script>
 | 
						|
 | 
						|
<style lang="scss" scoped>
 | 
						|
@import "@/styles/table-common.scss";
 | 
						|
.btns {
 | 
						|
  margin-bottom: 10px;
 | 
						|
  margin-top: 10px;
 | 
						|
}
 | 
						|
.page {
 | 
						|
  margin-top: 20px;
 | 
						|
}
 | 
						|
</style>
 |