<template>
  <div class="upload_Link">
    <!--  <span><b>经销商</b></span> -->
    <span>针对论坛及其他平台链接上传</span>
    <div class="contentHead">
      <span>上传平台</span>
      <select name="" id="" v-model="platformVal" @change="choosePlatform">
        <!--  <option value="">请选择</option> -->
        <option
          v-for="(item, index) in platform"
          :key="index"
          :value="item.platformName"
        >
          {{ item.platformName }}
        </option>
      </select>
    </div>
    <div class="tableBox">
      <table class="feedbackTable">
        <thead class="theadStyle">
          <tr class="tableHeadStyle1">
            <td>论坛传播情况汇总</td>
          </tr>
          <tr class="tableHeadStyle2 tableHeadStyle3">
            <td v-for="(item, index) in tableHeader" :key="index">
              {{ item }}
            </td>
          </tr>
        </thead>
        <tbody class="bodyStyle">
          <tr
            class="bodyContent tableHeadStyle2"
            v-for="(obj, index) in tableData"
            :key="index"
            :class="{ table_gray: index % 2 === 0 }"
          >
            <td v-if="flag">{{ index + 1 }}</td>
            <td>{{ obj.publishDate }}</td>
            <!-- 发布日期 -->
            <td>{{ obj.informationName }}</td>
            <!-- 资料名称 -->
            <td>{{ obj.carTypeName }}</td>
            <!-- 车系 -->
            <td>{{ obj.carPlatformName }}</td>
            <!-- 车型 -->
            <td>{{ obj.publishSourceName }}</td>
            <!-- 发布版块 -->
            <td>{{ obj.projectTypeName }}</td>
            <!-- 项目分类 -->
            <td>{{ obj.contentTypeName }}</td>
            <!-- 内容分类 -->
            <td>{{ obj.contentTypeName }}</td>
            <!-- 内容分类 -->
            <td>{{ obj.mediaTitle }}</td>
            <!-- 稿件标题 -->
            <td>{{ obj.mediaUrl }}</td>
            <!-- 链接 -->
            <td class="operationStyle">
              <span @click="toggleModal(index)">编辑</span>
              <span @click="toggleModal2(index)">删除</span>
              <!-- 弹窗： 确定删除？ -->
              <deleteModal
                v-if="showModal2"
                @dataDel="toDel"
                @hide_modal="closeme2"
                :LinkData="modalData"
                :showModalFlag="showModal2"
                :chooseItemIndex="nowIndex"
              ></deleteModal>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
    <!-- 弹窗： 编辑表格内容 -->
    <Modal
      v-if="showModal"
      v-on:closeme="closeme"
      :LinkData="modalData"
      @update="editTitle"
      :selectedPlatform="selectedPlatform"
      :releasePlate="releasePlate"
    ></Modal>

    <div class="timeLimitStyle">
      <span>仅可对上传时间为{{ feedbackTimeLimit }}个月内的资料进行反馈</span>
    </div>
    <div class="pageBottom">
      <div class="fileOperation">
        <span class="operationStyle xiahuaxian" @click="importTemplate"
          >导入模板</span
        >
        <!--  <button @click="toggleModal3()">导入</button> -->
        <!-- <button @click="importDataList">导入</button> -->
        <label for="fileInput" @change="getFileInfo($event)" class="uploadFile"
          >导入<input
            type="file"
            name="fileName"
            id="fileInput"
            accept=".xlsx, .xls"
            multiple
        /></label>
        <!-- <button @click="toggleModal4()">导出</button> <input
            type="file"
            name="fileName"
            id="fileOutput"
            accept=".xlsx, .xls"
        />-->
        <label for="fileOutput" @click="onOutputExcel()">导出</label>
      </div>
      <TablePage
        :currentPage="currentPage"
        :totalPage="totalPage"
        @change_page="changePage"
        @jump_page="jumpPage"
        class="tablePageStyle"
      ></TablePage>
    </div>

    <!-- 弹窗： 上传链接超过剩余限制数量，请修改后重新导入 -->
    <div class="modal-backdrop" v-show="showModal3">
      <div class="modal">
        <div class="modal-body">
          <div class="bodyRow">上传链接超过剩余限制数量，请修改后重新导入</div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn-confirm" @click="closeme3()">
            确定
          </button>
          <button type="button" class="btn-close" @click="closeme3">
            取消
          </button>
        </div>
      </div>
    </div>
    <!-- 弹窗： 资料名称无法匹配，请修改后重新导入 -->
    <div class="modal-backdrop" v-show="showModal4">
      <div class="modal">
        <div class="modal-body">
          <div class="bodyRow">资料名称无法匹配，请修改后重新导入</div>
          <div class="bodyRow">成功{{ 1 }}条，失败{{ 1 }}条</div>
        </div>
        <div class="modal-footer" style="position: relative; top: 95px">
          <button type="button" class="btn-confirm" @click="closeme4()">
            确定
          </button>
          <button type="button" class="btn-close" @click="closeme4">
            取消
          </button>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import Modal from "../../components/Modal";
import TablePage from "../../components/TablePage";
import deleteModal from "../data/components/UploadLinkModalDelete";
export default {
  props: {
    isManufacturer: {
      type: String,
      default: "distributor",
    },
  },
  components: {
    Modal,
    TablePage,
    deleteModal,
  },
  data() {
    return {
      publishCount: "",
      platform: [],
      platformVal: "",

      releasePlate: [],
      selectedPlatform: "",
      selectedPlatformId: "",
      nowIndex: 0,
      /* modal */
      feedbackTimeLimit: 6,
      showModal: false,
      showModal2: false,
      showModal3: false,
      showModal4: false,
      // 表格配置
      sum: 20, // 一共有多少条数据
      pageSize: 20, // 每页展示的数据
      discolor: false, // false是隔行变色
      currentPage: 1,
      tableHeader: [
        "NO.",
        "发布日期",
        "资料名称",
        "车系",
        "车型",
        "发布版块",
        "项目分类",
        "内容分类1",
        "内容分类2",
        "标题",
        "链接",
        "操作",
      ],
      tableData: [
        /*  {
          informationId: "2021/03/04",
          publishDate: "雷克萨斯ES上市",
          carTypeName: "雷克萨斯ES",
          carPlatformName: "ES雷克萨斯",
          publishSourceName: "S雷克萨斯",
          projectTypeName: "东区1",
          contentTypeName: "雷克萨斯ES",
          mediaTitle: "ES雷克萨斯",
          mediaUrl: "S雷克萨斯",
        },*/
      ],
      flag: true,
      operation: [
        {
          name: "编辑",
          function: () => {
            this.EditForm();
          },
        },
        {
          name: "删除",
          function: () => {
            this.showDetail();
          },
        },
      ],
      modalData: {}, //17:44
      emptyData: {
        accountId: "",
        carPlatformName: "",
        carTypeName: "",
        contentTypeName: "",
        endTime: null,
        id: "",
        informationId: "",
        informationName: "",
        localArea: "",
        mediaTitle: null,
        mediaTypeName: "",
        mediaUrl: "",
        projectTypeName: "",
        publishDate: "",
        publishPlatformName: "",
        publishSourceName: "",
        queryParams: null,
        startTime: null,
      },
      file: "",
      dictList: [],
      onlineUrl: "http://8.136.230.133:8080",
      firmsDataCount: null,
    };
  },
  computed: {
    // 表格总页数
    totalPage() {
      return Math.ceil(this.sum / this.pageSize);
    },
  },
  methods: {
    EditForm: () => {
      alert("编辑");
    },
    showDetail: () => {
      alert("展示详情");
    },
    /*toggleModal：点击编辑后弹窗； toggleModal2：点击删除后弹窗； toggleModal3：点击导入后弹窗；  */
    toggleModal: function (i) {
      this.showModal = !this.showModal;
      this.modalData = this.tableData[i];
    },
    closeme: function () {
      this.showModal = !this.showModal;
    },
    //删除
    toggleModal2: function (i) {
      this.showModal2 = !this.showModal2;
      this.nowIndex = i;
      this.modalData = this.tableData[i];
      console.log("INtoggleModal2", this.modalData, this.nowIndex);
    },
    closeme2: function () {
      this.showModal2 = !this.showModal2;
    },
    toggleModal3: function () {
      this.showModal3 = !this.showModal3;
    },
    closeme3: function () {
      this.showModal3 = !this.showModal3;
    },
    toggleModal4: function () {
      this.showModal4 = !this.showModal4;
    },
    closeme4: function () {
      this.showModal4 = !this.showModal4;
    },
    /* 编辑内容，，Modal传参 */
    editTitle: function (val) {
      console.log("editTitle文件:", val);
      this.$http({
        url: val.url,
        method: "post",
        data: val.data,
      })
        .then((res) => {
          console.log(res);
          //更新数据
          this.choosePlatform();
        })
        .catch((err) => {
          console.log(err);
        });
    },

    toDel: function (n) {
      console.log("inToDel:", n);
      //清空数据
      /*  if (n == -2) {
        this.tableData = "";
      }
      //清空某一项数据
      {
        let obj = this.tableData[n];
        Object.keys(obj).forEach((key) => {
          obj[key] = "";
        });
      } */
      this.showModal2 = !this.showModal2;
      //更新数据

      this.choosePlatform();
    },
    /* 表格翻页 */
    changePage: function (page) {
      this.currentPage = page;
      console.log(page);
    },
    // 点击上一页，下一页，首页，尾页
    jumpPage: function (item) {
      switch (item) {
        case 1:
          this.currentPage = 1;
          break;
        case 2:
          this.currentPage = this.currentPage - 1;
          break;
        case 3:
          this.currentPage = this.currentPage + 1;
          break;
        case 4:
          this.currentPage = this.totalPage;
          break;
      }
      console.log(this.currentPage);
    },
    //获取资料列表
    getDataList: function (config) {
      let date = new Date();
      let m = date.getMonth() + 1;
      let y = date.getFullYear();
      let d = y + "/" + m;
      this.$http({
        url: "/firmsLinkUpload",
        method: "post",
        data: {
          month: d,
          publishPlatformId: config,
        },
      })
        .then((res) => {
          if (res.data.code === 200) {
            //this.tableData = [];
            let data = res.data.data;
            this.firmsDataCount = data.length;
            for (
              let i = 0, j = 0;
              i < this.tableData.length && j < data.length;
              i++, j++
            ) {
              this.$set(this.tableData, i, data[j]);
            }
            console.log(data.length, this.tableData.length);
            console.log(this.tableData);
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //导入经销商反馈信息  经销商反馈服务>导入经销商反馈信息
    /*   importDataList: function () {
      this.file = event.target.files;
      this.fileDes = [];
      this.file.forEach((item) => {
        this.fileDes.push(item.name);
      });

        this.$http({
        url: "/importDealerFeedback",
        method: "post",
        data: {},
      })
        .then((res) => {
          if (res.data.code === 200) {
            this.tableData = res.data.data;
          }
        })
        .catch((err) => {
          console.log(err);
        }); 
    }, */
    //导出excel
    onOutputExcel: function () {
      let url = this.onlineUrl + "/exportNoFactory";
      console.log("导出excel:", url);
      window.open(url);
      /*   this.$http({
        url: "/exportNoFactory",
        method: "get",
        params: {
          //id: this.selectedPlatformId //当期平台id
        },
      })
        .then((res) => {
          console.log(res);
          if (res.data.code === 200) {
            console.log(res.data);
          }
        })
        .catch((err) => {
          console.log(err);
        }); */
    },
    //导入excel
    /*   onImportExcel: function () {
      this.$http({
        url: "/importDealerFeedback",
        method: "get",
        params: {},
      })
        .then((res) => {
          console.log(res);
          if (res.data.code === 200) {
            console.log(res.data);
          }
        })
        .catch((err) => {
          console.log(err);
        });
    }, */
    // 获取文件
    getFileInfo: function (event) {
      this.file = event.target.files;
      console.log(this.file);
      let fileDes = [];
      this.file.forEach((item) => {
        fileDes.push(item.name);
      });
      console.log(fileDes);
      let remainCount = this.publishCount - this.firmsDataCount;
      console.log(remainCount,this.publishCount, this.firmsDataCount)
      if (remainCount >= this.file.length){
        this.submitRequest();
      }else if (remainCount < this.file.length){
        this.showModal3 = !this.showModal3;
      }
    },
    // 导入接口
    submitRequest: function () {
      let paramData = new FormData();
      this.file.forEach((item) => {
        paramData.append("file", item);
      });
      this.$http
        .uploadFile("/importDealerFeedback", paramData)
        .then((res) => {
          if (res.data && res.data.code === 200) {
            console.log("上传成功!");
          } else {
            alert("res.data || res.data.code !== 200");
            console.log(res);
          }
        })
        .catch((err) => {
          alert("上传失败，请重试");
          console.log(err);
        });
    },
    //获取平台列表
    getPlatform: function () {
      this.$http({
        url: "/base/publishPlatformManager/selectPublishPlatformList",
        method: "post",
        data: {},
      })
        .then((res) => {
          if (res.data.code === 200) {
            this.platform = res.data.data;
            this.platformVal = this.platform[0].platformName;
            this.choosePlatform();
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //下拉选择平台
    choosePlatform: function () {
      let obj = {};
      //所选平台名称
      let val = this.platformVal;
      obj = this.platform.find(function (item) {
        return item.platformName === val;
      });
      this.selectedPlatform = obj.platformName;
      this.selectedPlatformId = obj.id;

      //获取可发布数量
      this.getReleaseQuantity(obj.id);

      //获取发布版块
      this.chooseReleasePlate(obj.id);
    },
    //获取可发布数量
    getReleaseQuantity: function (val) {
      let date = new Date();
      let m = date.getMonth() + 1;
      let y = date.getFullYear();
      let d = y + "/" + m;
      this.$http({
        // url: "/base/mediaPublishManager/selectMediaPublishList",
        url: "/base/mediaPublishManager/selectMediaPublishListByMonth",
        method: "post",
        data: {
          //publishPlatformId: val,
          //publishMonth: d,
          //id: val,
          //month: d,
          publishMonth: d,
          publishPlatformId: val,
        },
      })
        .then((res) => {
          if (res.data.code === 200) {
            console.log(res);
            this.publishCount = res.data.data[0].publishCount;
            let len = this.publishCount;
            let l = this.tableData.length;
            console.log("获取可发布数量", len, l);
            this.tableData = [];
            while (len > 0) {
              //this.tableData.push([]);
              //Array.prototype.push.apply(this.tableData, [this.emptyData]);
              this.tableData.push(this.emptyData);
              len--;
            }
            console.log(this.tableData);
            console.log(this.tableData.length);
            //更新列表数据
            this.getDataList(this.selectedPlatformId);
          }
        })
        .catch((err) => {
          this.tableData = [];
          console.log(err);
        });
    },
    //发布版块
    chooseReleasePlate: function (val) {
      this.$http({
        url: "/base/publishPlatformManager/selectPublishPlatformList",
        method: "post",
        data: {
          parentId: val,
        },
      })
        .then((res) => {
          console.log(res);
          if (res.data.code === 200) {
            this.releasePlate = res.data.data;
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //导入模板
    importTemplate: function () {
      let str = "反馈链接上传导入表模板（经销商）.xlsx";
      let url = this.onlineUrl + "/downloadTemplate?templateName=" + str;
      console.log("下载导入模板:", url);
      window.open(url);
      /*   this.$http({
        url: "/downloadTemplate",
        method: "get",
        params: {
          templateName: "反馈链接上传导入表模板（经销商）.xlsx",
        },
      })
        .then((res) => {
          console.log(res);
          if (res.data.code === 200) {
            console.log(res.data);
          }
        })
        .catch((err) => {
          console.log(err);
        });
      /*    return new Promise((resolve, reject) => {
        this.$http({
          url: "/exportNoFactory",
          method: "get",
          params: "反馈链接上传导入表模板（经销商）.xlsx"
        })
          .then((res) => {
            console.log(res);
            resolve(res);
            let link = document.createElement("a");
            link.href = window.URL.createObjectURL(new Blob([res.data]));
            link.target = "_blank";
            //文件名和格式
            link.download = "文件模板.xlsx";
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
          })
          .catch((err) => {
            reject(err);
          });
        }); */
    },

    // 上传时间为xx个月内的资料进行反馈  获取内容分类、媒体平台、常用参数接口的标识，再调接口时需要用到
    selectSysDataDictList: function () {
      return new Promise((resolve, reject) => {
        this.$http({
          method: "post",
          url: "/sys/dataDict/selectSysDataDictList",
          data: {},
        })
          .then((res) => {
            if (res.data && res.data.code === 200) {
              this.dictList = res.data.data;
              resolve();
            } else {
              console.log(res);
              reject();
            }
          })
          .catch((err) => {
            console.log(err);
            reject();
          });
      });
    },
    // 获取列表数据   接口
    getDateList: function () {
      this.$http({
        method: "post",
        url: "/sys/dataDict/selectSysDataDictPage",
        data: {
          dictCode: this.dictList[0]["dictCode"],
          parentId: this.dictList[0]["id"],
        },
      })
        .then((res) => {
          if (res.data && res.data.code === 200) {
            //this.dictId = res.data.data[0]["id"];
            this.feedbackTimeLimit = res.data.data[0]["dictName"];
          } else {
            console.log(res);
          }
        })
        .catch((err) => {
          console.log(err);
        });
    },
  },
  mounted() {
    this.getPlatform();
  },
  created() {
    this.selectSysDataDictList()
      .then(() => {
        this.getDateList();
      })
      .catch((err) => {
        console.log(err);
      });
    //this.getPlatform();
  },
};
</script>

<style scoped lang="less">
.contentHead {
  height: 55px;
  display: flex;
  align-items: center;
}
.contentHead span {
  margin-right: 15px;
}
.tableBox {
  width: 1030px;
  overflow-y: hidden;
}
.tableBox {
  text-align: center;
  .table {
    table-layout: fixed;
    background-color: #fff;
    border-collapse: collapse;
    border: none;
    td {
      border: 1px solid #ccc;
    }
    span {
      &:hover {
        cursor: pointer;
      }
    }
  }
}
.table_gray td {
  background-color: #eeeeee;
}
.tableBox table {
  border-collapse: collapse;
  border: 0px;
}
.tableBox table td {
  border: 1px solid #ccc;
  border-right: 0px;
  border-bottom: 0px;
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}
// 表头样式
.theadStyle tr td {
  color: white;
}
.tableHeadStyle1 {
  background: #848484;
  height: 30px;
  color: #fff;
  display: flex;
  align-items: center;
}
.tableHeadStyle1 td {
  width: 100%;
  padding: 7px 5px;
}
.tableHeadStyle2 {
  // background: #848484;
  height: 30px;
  color: #fff;
  display: flex;
  align-items: center;
}
.tableHeadStyle2 td {
  width: 100px;
  padding: 7px 5px;
}
.tableHeadStyle3 td {
  background: #848484;
}
.tableHeadStyle2 td:nth-child(1) {
  width: 60px;
}
.tableHeadStyle2 td:nth-child(10) {
  width: 100px;
  padding: 7px 5px;
}
.tableHeadStyle2 td:nth-child(11) {
  width: 100px;
  padding: 7px 5px;
}
.tableHeadStyle2 td:nth-child(12) {
  width: 100px;
  padding: 7px 5px;
}
.tableHeadStyle2 td:nth-child(2) {
  width: 100px;
  padding: 7px 5px;
}
.tableHeadStyle2 td:nth-child(3) {
  width: 100px;
  padding: 7px 5px;
}
.bodyStyle {
  display: block;
  background-color: #fff;
}
.bodyStyle tr > td:nth-last-child(2) {
  color: #0000ff;
}
.bodyContent td {
  //background-color: #fff;
  height: 20px;
}
.operationStyle {
  color: #0000ff;
  display: flex;
  justify-content: space-around;
}
.xiahuaxian {
  text-decoration: underline;
}
.operationStyle span {
  color: #0000ff;
}
.fileOperation {
  display: flex;
  justify-content: flex-start;
  margin: 10px;
  align-items: center;
}
.fileOperation button {
  border-radius: 4px;
}
.fileOperation span {
  margin-right: 16px;
}
.fileOperation {
  border-radius: 4px;
  label {
    margin-right: 16px;
    height: 30px;
    line-height: 30px;
    width: 56px;
    background-color: #0056a0;
    color: #fff;
    text-align: center;
    font-size: 14px;
    input {
      display: none;
    }
  }
}

.timeLimitStyle {
  padding: 10px;
}

.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: rgba(0, 0, 0, 0.3);
  display: flex;
  justify-content: center;
  align-items: center;
}
.modal {
  background-color: #ffffff;
  box-shadow: 2px 2px 20px 1px;
  overflow-x: auto;
  display: flex;
  flex-direction: column;
  width: 500px;
  border-radius: 0px;
  height: 230px;
}
.modal-footer {
  border-top: 1px solid #eee;
  position: relative;
  top: 124px;
  left: 232px;
  width: 208px;
  display: flex;
  justify-content: space-between;
  padding: 0px;
}
.modal-footer button {
  border-radius: 4px;
  margin-left: 0px;
  width: 80px;
  font-size: 14px;
}

.modal-footer button:nth-child(1) {
  background-color: #0056a0;
}
.modal-footer button:nth-child(2) {
  background-color: #eeeeee;
}
.modal-body {
  position: relative;
  top: 64px;
  margin-left: 50px;
  padding: 0px;
}
.btn-close,
.btn-confirm {
  margin-left: 16px;
  width: 56px;
  height: 36px;
  border: none;
  cursor: pointer;
}
.btn-close {
  color: #313131;
  background-color: gray;
}
.btn-confirm {
  color: #fff;
  background-color: #2d8cf0;
}
.bodyRow {
  font-size: 16px;
  font-family: Arial;
}
/* .tablePageStyle{
  position: relative;
  left: 266px;
} */
.pageBottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
</style>
>>>>>>> bae6c489b4e688f713ae10f965a0bd6e0884dcd4
