| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915 |
- <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)"
- >导入<input
- type="file"
- name="fileName"
- id="fileInput"
- 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雷克萨斯",
- },
- {
- informationId: "2021/03/04",
- publishDate: "雷克萨斯ES上市",
- carTypeName: "雷克萨斯ES",
- carPlatformName: "ES雷克萨斯",
- publishSourceName: "S雷克萨斯",
- projectTypeName: "东区2",
- contentTypeName: "雷克萨斯ES",
- mediaTitle: "ES雷克萨斯",
- mediaUrl: "S雷克萨斯",
- },
- {
- informationId: "",
- publishDate: "",
- carTypeName: "",
- carPlatformName: "",
- publishSourceName: "",
- projectTypeName: "",
- contentTypeName: "",
- mediaTitle: "",
- mediaUrl: "",
- }, */
- ],
- flag: true,
- operation: [
- {
- name: "编辑",
- function: () => {
- this.EditForm();
- },
- },
- {
- name: "删除",
- function: () => {
- this.showDetail();
- },
- },
- ],
- modalData: {}, //17:44
- emptyData: {
- accountId: "",
- carPlatformName: "",
- carTypeName: "",
- contentTypeName: "",
- endTime: null,
- id: "",
- informationId: "",
- localArea: "",
- mediaTitle: null,
- mediaTypeName: "",
- mediaUrl: "",
- projectTypeName: "",
- publishDate: "",
- publishPlatformName: "",
- publishSourceName: "",
- queryParams: null,
- startTime: null,
- },
- file: "",
- };
- },
- 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);
- })
- .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.tableData.push(data[0]);
- //Array.prototype.push.apply(this.tableData, data);
- //this.tableData.push(data[0]);
- for (
- let i = 0, j = 0;
- i < this.tableData.length && j < data.length;
- i++, j++
- ) {
- this.tableData.splice(i, 1, 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 () {
- 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;
- let fileDes = [];
- this.file.forEach((item) => {
- fileDes.push(item.name);
- });
- console.log(fileDes);
- this.submitRequest();
- },
- // 导入接口
- submitRequest: function () {
- let paramData = new FormData();
- //paramData.append("file", this.file);
- this.file.forEach((item)=>{
- paramData.append("file", item);
- })
- console.log(this.file);
- 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 = val;
- this.selectedPlatformId = obj.id;
- //获取可发布数量
- this.getReleaseQuantity(obj.id);
- //发布平台ID
- this.getDataList(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,
- },
- })
- .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]);
- len--;
- }
- console.log(this.tableData);
- console.log(this.tableData.length);
- }
- })
- .catch((err) => {
- 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 () {
- this.$http({
- //url: "/exportNoFactory",
- 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);
- });
- }); */
- },
- //导入
- /* importFile: function () {
- this.$http({
- url: "/importDealerFeedback",
- method: "get",
- params: "反馈链接上传导入表模板(经销商).xlsx",
- })
- .then((res) => {
- console.log(res);
- if (res.data.code === 200) {
- console.log(res.data);
- }
- })
- .catch((err) => {
- console.log(err);
- });
- }, */
- //导出
- /* outputFile: function () {
- this.$http({
- url: "/exportNoFactory",
- method: "get",
- params: "反馈链接上传导入表模板(经销商).xlsx",
- })
- .then((res) => {
- console.log(res);
- if (res.data.code === 200) {
- console.log(res.data);
- }
- })
- .catch((err) => {
- console.log(err);
- });
- }, */
- },
- mounted() {
- 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>
|