<template>
  <div class="discountCodeList" v-if="isData">
    <Header />
    <Nav :title="$t('Key560')" />
    <div class="contentInner">
      <div class="search-form">
        <el-form :inline="true" ref="form" style="margin-left: 10px">
          <el-form-item>
            <!-- 优惠码 -->
            <el-form-item class="label-input" :label="$t('Key793')" style="margin-right: 30px">
              <!-- 输入生成激活码数量" -->
              <el-input
                :placeholder="$t('Key794')"
                v-model="discountNumber"
                type="number"
                :oninput="numberInput"
              ></el-input>
            </el-form-item>
            <el-button @click="onSubmit" size="medium" type="primary" :loading="loading">
              <!-- 生成 -->{{ $t('Key562') }}
            </el-button>
          </el-form-item>
        </el-form>
        <el-form :inline="true">
          <el-form-item class="label-input" :label="$t('Key563') + '：'" style="margin-right: 30px">
            <el-radio v-model="exportRadio" :label="-1"> <!-- 全部 -->{{ $t('Key110') }} </el-radio>
            <el-radio v-model="exportRadio" :label="1"> <!-- 已使用 -->{{ this.$t('Key564') }} </el-radio>
            <el-radio v-model="exportRadio" :label="0"> <!-- 未使用 -->{{ this.$t('Key565') }} </el-radio>
          </el-form-item>
          <el-button @click="onExport" size="medium" type="primary" :loading="exportLoading"
            >{{ this.$t('Key566') }} excel</el-button
          >
        </el-form>
      </div>
      <div class="table-box">
        <el-table :data="tableData" style="width: 100%" v-loading="tableloading">
          <!-- 优惠码 -->
          <el-table-column
            class="table-firstC"
            :label="$t('Key793')"
            prop="discount_code"
            width="150"
          ></el-table-column>
          <!-- 状态 -->
          <el-table-column :label="$t('Key164')" prop="is_used" width="150" :formatter="handleStatus"></el-table-column>
          <!-- 使用者 -->
          <el-table-column :label="$t('Key569')" prop="consumer_name" width="150"></el-table-column>
          <!-- 使用时间 -->
          <el-table-column :label="$t('Key568')" prop="use_time" width="200"></el-table-column>
          <!-- 使用者所属机构 -->
          <el-table-column :label="$t('Key567')" prop="consumer_org_name" width="250"></el-table-column>
          <!-- 创建时间 -->
          <el-table-column :label="$t('Key163')" prop="create_time" width="200"></el-table-column>
          <!-- 操作 -->
          <el-table-column fixed="right" :label="$t('Key166')" prop width="100">
            <template slot-scope="scope">
              <!-- 删除 -->
              <el-button @click="handleDel(scope.row)" type="text">{{ $t('Key172') }}</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>

      <el-pagination
        :current-page="currentPage"
        :page-size="10"
        :page-sizes="[1, 10, 20, 30, 40, 50]"
        :total="courseTotal"
        @current-change="handleCurrentChange"
        @size-change="handleSizeChange"
        layout="total, sizes, prev, pager, next, jumper"
      ></el-pagination>
    </div>
  </div>
</template>
<script>
import Header from '@/components/Header';
import Nav from '@/components/teacher-devEntering/Nav';
import { BookgetContent, LearnWebSI } from '@/api/api';
import { getToken } from '@/utils/auth';
import { encodeURL } from 'js-base64';
import { updateWordPack } from '@/utils/i18n';
export default {
  name: 'courselist',
  components: {
    Header,
    Nav,
  },
  data() {
    return {
      bookId: '',
      discountNumber: null, // 生成数量
      loading: false,
      tableData: [], // 数据内容
      currentPage: 1, // 当前页码
      page_capacity: 10, // 每页条数
      courseTotal: 0, // 数据总条数
      tableloading: true,
      usedStatus: null,
      exportRadio: -1,
      exportLoading: false,
      goods_type: null,
      isData: false,
    };
  },
  async created() {
    await updateWordPack({
      word_key_list: [
        'Key5',
        'Key8',
        'Key9',
        'Key39',
        'Key83',
        'Key94',
        'Key110',
        'Key164',
        'Key163',
        'Key166',
        'Key172',
        'Key232',
        'Key361',
        'Key532',
        'Key560',
        'Key561',
        'Key562',
        'Key563',
        'Key564',
        'Key565',
        'Key566',
        'Key567',
        'Key568',
        'Key569',
        'Key687',
        'Key689',
        'Key793',
        'Key794',
      ],
    });

    const _this = this;
    _this.usedStatus = {
      true: this.$t('Key564'), //"已使用",
      false: this.$t('Key565'), //"未使用",
    };
    _this.isData = true;
    _this.bookId = this.$route.query.bookId;
    _this.goods_type = this.$route.query.goods_type;
    this.getList();
  },
  methods: {
    numberInput() {
      this.discountNumber = this.discountNumber.replace(/[^0-9]/g, '');
    },
    // 切换每页条数
    handleSizeChange(val) {
      this.currentPage = 1;
      this.page_capacity = val;
      this.getList();
    },
    // 切换页码
    handleCurrentChange(val) {
      this.currentPage = val;
      this.getList();
    },
    // 生成数量
    onSubmit() {
      if (this.discountNumber) {
        this.loading = true;
        let MethodName = 'order-discount_manager-BatchCreateDiscountCodeFoGoods';
        let data = {
          goods_id: this.bookId,
          goods_type: this.goods_type * 1,
          count: Number(this.discountNumber),
        };
        LearnWebSI(MethodName, data)
          .then((res) => {
            this.$message.success(this.$t('Key687')); //操作成功
            this.discountNumber = null;
            this.loading = false;
            this.pageIndex = 1;
            this.getList();
          })
          .catch(() => {
            this.loading = false;
          });
      } else {
        this.$message(
          {
            type: 'warning',
            message: this.$t('Key561'), //"请输入生成激活码数量!",
          },
          2000,
        );
        return false;
      }
    },
    // 查询数据列表
    getList() {
      let MethodName = 'page_query-PageQueryGoodsDiscountCodeList';
      let data = {
        goods_id: this.bookId,
        page_capacity: this.page_capacity,
        cur_page: this.currentPage,
        use_status: -1,
        goods_type: this.goods_type * 1,
      };
      LearnWebSI(MethodName, data).then((res) => {
        let _this = this;
        _this.tableData = res.discount_code_list;
        _this.courseTotal = res.total_count;
        _this.tableloading = false;
      });
    },
    // 处理发布状态
    handleStatus(row) {
      if (row) {
        return this.usedStatus[row.is_used];
      }
    },
    // 删除书籍
    handleDel(row) {
      // 确定删除此优惠码吗？
      this.$confirm(this.$t('Key689'), this.$t('Key361'), {
        confirmButtonText: this.$t('Key94'), //"确定",
        cancelButtonText: this.$t('Key83'), //"取消",
        type: 'warning',
      })
        .then(() => {
          let MethodName = 'order-discount_manager-DeleteGoodsDiscountCode';
          let data = {
            discount_code_id: row.id,
            goods_id: this.bookId,
            goods_type: this.goods_type * 1,
          };
          LearnWebSI(MethodName, data)
            .then((res) => {
              this.currentPage = 1;
              this.getList();
              this.$message({
                type: 'success',
                message: this.$t('Key532'), //"删除成功!",
              });
            })
            .catch(() => {});
        })
        .catch(() => {});
    },
    // 导出
    onExport() {
      this.exportLoading = true;
      let userInfor = getToken() || sessionStorage.getItem('GCLS_Token_Tc');
      let UserCode = '',
        UserType = '',
        SessionID = '';
      if (userInfor) {
        let user = getToken() ? JSON.parse(getToken()) : JSON.parse(sessionStorage.getItem('GCLS_Token_Tc'));
        UserCode = user.user_code;
        UserType = user.user_type;
        SessionID = user.session_id;
      }
      let MethodName = 'data_export-ExportGoodsDiscountCodeList';
      let data = {
        use_status: this.exportRadio,
        goods_id: this.bookId,
        goods_type: this.goods_type * 1,
      };
      window.open(
        process.env.VUE_APP_BASE_API +
          `/GCLSLearnWebSI/ServiceInterface?MethodName=${MethodName}&UserCode=${UserCode}&UserType=${UserType}&SessionID=${SessionID}&Parameter=${encodeURIComponent(
            JSON.stringify(data),
          )}`,
      );
      this.exportLoading = false;
    },
  },
};
</script>
<style lang="scss" scoped>
.discountCodeList {
  width: 100%;
  background: #f5f5f5;
  .contentInner {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    height: auto;
    padding: 30px 0;
  }
  .search-form {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
}
</style>
