|
@@ -0,0 +1,821 @@
|
|
|
+<template>
|
|
|
+ <PermissionContainer
|
|
|
+ :jiBieArr="[2]"
|
|
|
+ :type="4"
|
|
|
+ :tipArr="[, '数据导入只对站点级别开放', '', , '']"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ :model="queryForm"
|
|
|
+ ref="queryForm"
|
|
|
+ :inline="true"
|
|
|
+ label-width="88px"
|
|
|
+ style="margin-top: 20px"
|
|
|
+ >
|
|
|
+ <el-form-item label="手机号" prop="phoneNumber">
|
|
|
+ <el-input
|
|
|
+ v-model="queryForm.phoneNumber"
|
|
|
+ placeholder="请输入手机号"
|
|
|
+ clearable
|
|
|
+ size="small"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item>
|
|
|
+ <el-button
|
|
|
+ type="cyan"
|
|
|
+ icon="el-icon-search"
|
|
|
+ size="mini"
|
|
|
+ @click="handleQuery"
|
|
|
+ >搜索</el-button
|
|
|
+ >
|
|
|
+
|
|
|
+ <el-button
|
|
|
+ type="info"
|
|
|
+ icon="el-icon-refresh"
|
|
|
+ size="mini"
|
|
|
+ @click="resetQuery"
|
|
|
+ >重置</el-button
|
|
|
+ >
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
+ <!--主要表格-->
|
|
|
+ <div>
|
|
|
+ <el-table
|
|
|
+ :data="importList"
|
|
|
+ class="mt-5"
|
|
|
+ >
|
|
|
+ <af-table-column
|
|
|
+ label="手机"
|
|
|
+ align="center"
|
|
|
+ prop="phoneNumber"
|
|
|
+ fixed="left"
|
|
|
+ />
|
|
|
+ <af-table-column label="积分" align="center" prop="integral" />
|
|
|
+ <af-table-column
|
|
|
+ label="电子卡类型"
|
|
|
+ align="center"
|
|
|
+ prop="memberGrade"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateCardToName(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+ <af-table-column label="电子卡余额" align="center" prop="balance" />
|
|
|
+ <af-table-column
|
|
|
+ label="会员等级"
|
|
|
+ align="center"
|
|
|
+ prop="memberGrade"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateGradeToName(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+ <af-table-column
|
|
|
+ label="标签"
|
|
|
+ align="center"
|
|
|
+ prop="labelId"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateLabelToName(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+ <af-table-column
|
|
|
+ label="优惠券领取方式"
|
|
|
+ align="center"
|
|
|
+ prop="couponIssueId"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateIssueToName(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+
|
|
|
+ </el-table>
|
|
|
+ <pagination
|
|
|
+ v-show="total > 1"
|
|
|
+ :total="total"
|
|
|
+ :pageSizes="[10, 50, 100, 200]"
|
|
|
+ :page.sync="queryForm.pageNum"
|
|
|
+ :limit.sync="queryForm.pageSize"
|
|
|
+ @pagination="getList"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!--拉入前提示框-->
|
|
|
+ <el-dialog
|
|
|
+ :title="'强拉入' + handleTypeName[handleType]"
|
|
|
+ :visible.sync="confirmDialog"
|
|
|
+ width="750px"
|
|
|
+ append-to-body
|
|
|
+ >
|
|
|
+ <div class="ml-5">
|
|
|
+ 无论当前用户此刻是否已经有{{ handleTypeName[handleType] }},
|
|
|
+ 点击确认按钮后,会立刻将选中用户拉入新的
|
|
|
+ {{ handleTypeName[handleType] }}~
|
|
|
+ </div>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="handleSubmitLable" size="small"
|
|
|
+ >确 定</el-button
|
|
|
+ >
|
|
|
+ <el-button @click="cancelSubmitLabel" size="small">取 消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ <!--导入 表格反馈-->
|
|
|
+ <el-dialog
|
|
|
+ :title="'结果反馈'"
|
|
|
+ :visible.sync="tipOpen"
|
|
|
+ width="600px"
|
|
|
+ append-to-body
|
|
|
+ status-icon
|
|
|
+ @close="getList"
|
|
|
+ >
|
|
|
+ <div v-html="tipContent">
|
|
|
+ {{ tipContent }}
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <!-- 新增单条导入 -->
|
|
|
+ <el-dialog
|
|
|
+ :title="title"
|
|
|
+ :visible.sync="open"
|
|
|
+ width="600px"
|
|
|
+ append-to-body
|
|
|
+ status-icon
|
|
|
+ >
|
|
|
+ <el-form ref="createForm" :model="createForm" label-width="180px">
|
|
|
+ <el-form-item
|
|
|
+ label="手机号"
|
|
|
+ prop="phoneNumber"
|
|
|
+ :rules="{
|
|
|
+ required: true,
|
|
|
+ message: '手机号不能为空',
|
|
|
+ trigger: 'blur',
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ <input
|
|
|
+ type="text"
|
|
|
+ class="form-control"
|
|
|
+ v-model="createForm.phoneNumber"
|
|
|
+ style="width: 180px"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="积分余额" prop="integral">
|
|
|
+ <input
|
|
|
+ type="text"
|
|
|
+ class="form-control"
|
|
|
+ v-model.number="createForm.integral"
|
|
|
+ style="width: 180px"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="电子卡类型" prop="cardType">
|
|
|
+ <el-radio-group v-model="createForm.cardType">
|
|
|
+ <div>
|
|
|
+ <el-radio label="1">汽油卡</el-radio>
|
|
|
+ <el-radio label="2">柴油卡</el-radio>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <el-radio label="3">LNG卡</el-radio>
|
|
|
+ <el-radio label="4">CNG卡</el-radio>
|
|
|
+ </div>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="电子卡余额" prop="balance">
|
|
|
+ <input
|
|
|
+ type="text"
|
|
|
+ class="form-control"
|
|
|
+ v-model.number="createForm.balance"
|
|
|
+ style="width: 180px"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="等级" prop="memberGrade">
|
|
|
+ <el-select v-model="createForm.memberGrade" placeholder="请选择">
|
|
|
+ <el-option :label="'暂不选择'" :value="''"> </el-option>
|
|
|
+ <el-option
|
|
|
+ v-for="ele in gradeList"
|
|
|
+ :key="ele.id"
|
|
|
+ :label="ele.grade"
|
|
|
+ :value="ele.id"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="标签" prop="labelId">
|
|
|
+ <el-select v-model="createForm.labelId" placeholder="请选择">
|
|
|
+ <el-option :label="'暂不选择'" :value="''"> </el-option>
|
|
|
+ <el-option
|
|
|
+ v-for="ele in labelList"
|
|
|
+ :key="ele.id"
|
|
|
+ :label="ele.labelName"
|
|
|
+ :value="ele.id"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="优惠券领取方式" prop="couponIssueId">
|
|
|
+ <el-select v-model="createForm.couponIssueId" placeholder="请选择">
|
|
|
+ <el-option :label="'暂不选择'" :value="''"> </el-option>
|
|
|
+ <el-option
|
|
|
+ v-for="ele in issueList"
|
|
|
+ :key="ele.id"
|
|
|
+ :label="ele.issueRemark"
|
|
|
+ :value="ele.id"
|
|
|
+ >
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
+ <el-button @click="cancel">取 消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+
|
|
|
+ <!--多条导入的弹窗-->
|
|
|
+ <el-dialog
|
|
|
+ title="由Excel导入的数据"
|
|
|
+ :visible.sync="tempImportDialog"
|
|
|
+ append-to-body
|
|
|
+ status-icon
|
|
|
+ width="80vw"
|
|
|
+ >
|
|
|
+ <el-table :data="tempImportList" class="mt-5" style="margin-bottom: 10px">
|
|
|
+ <af-table-column label="手机" align="center" prop="phoneNumber" />
|
|
|
+ <af-table-column
|
|
|
+ label="积分"
|
|
|
+ align="center"
|
|
|
+ prop="integral"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateIntegralToInt(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+ <af-table-column
|
|
|
+ label="电子卡类型"
|
|
|
+ align="center"
|
|
|
+ prop="memberGrade"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateCardToName(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+ <af-table-column label="电子卡余额" align="center" prop="balance" />
|
|
|
+ <af-table-column
|
|
|
+ label="电子卡余额"
|
|
|
+ align="center"
|
|
|
+ prop="balance"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateBalanceToFloat(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+ <af-table-column
|
|
|
+ label="会员等级"
|
|
|
+ align="center"
|
|
|
+ prop="memberGrade"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateGradeToName(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+ <af-table-column
|
|
|
+ label="标签"
|
|
|
+ align="center"
|
|
|
+ prop="labelId"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateLabelToName(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+
|
|
|
+ <af-table-column
|
|
|
+ label="优惠券领取方式"
|
|
|
+ align="center"
|
|
|
+ prop="couponIssueId"
|
|
|
+ width="160px"
|
|
|
+ >
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{ translateIssueToName(scope.row) }}
|
|
|
+ </template>
|
|
|
+ </af-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button type="primary" @click="submitExcel">确 定</el-button>
|
|
|
+ <el-button @click="cancelExcel">取 消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
+ </PermissionContainer>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import excel from "@/utils/excel";
|
|
|
+import {
|
|
|
+ getIssueList,
|
|
|
+ getGradeList,
|
|
|
+ getLabelList,
|
|
|
+ importExcel,
|
|
|
+ getImportList,
|
|
|
+ updateImportList,
|
|
|
+ delImportList,
|
|
|
+ upImport,
|
|
|
+} from "@/api/preData";
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: "PreData_ImportedData",
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ queryForm: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ phoneNumber: "",
|
|
|
+ importFlag:"1"
|
|
|
+ },
|
|
|
+ tipOpen: false,
|
|
|
+ tipContent: "",
|
|
|
+ title: "",
|
|
|
+ open: false,
|
|
|
+ // 总条数
|
|
|
+ total: 0,
|
|
|
+ importList: [],
|
|
|
+ tempImportList: [],
|
|
|
+ selectedImport: [],
|
|
|
+ confirmDialog: false,
|
|
|
+ tempImportDialog: false,
|
|
|
+ createForm: {
|
|
|
+ phoneNumber: "",
|
|
|
+ integral: 0,
|
|
|
+ cardType: "1",
|
|
|
+ balance: 0,
|
|
|
+ memberGrade: "",
|
|
|
+ labelId: "",
|
|
|
+ couponIssueId: "",
|
|
|
+ },
|
|
|
+ issueList: [],
|
|
|
+ labelList: [],
|
|
|
+ gradeList: [],
|
|
|
+ handleTypeName: ["等级", "标签", "优惠券领取方式"],
|
|
|
+ handleType: 1, // 0 等级 1 标签 2 优惠券领取方式
|
|
|
+ tempId: "",
|
|
|
+ tempArr: [],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {},
|
|
|
+ created() {
|
|
|
+ this.init();
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ init() {
|
|
|
+ this.getList();
|
|
|
+
|
|
|
+ getIssueList()
|
|
|
+ .then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ if (res.rows == null) {
|
|
|
+ this.issueList = [];
|
|
|
+ } else {
|
|
|
+ this.issueList = res.rows;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new Error("");
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.msgError("拉取优惠券领取方式失败~");
|
|
|
+ });
|
|
|
+ getLabelList()
|
|
|
+ .then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ if (res.rows == null) {
|
|
|
+ this.labelList = [];
|
|
|
+ } else {
|
|
|
+ this.labelList = res.rows;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new Error("");
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.msgError("拉取标签列表失败~");
|
|
|
+ });
|
|
|
+ getGradeList()
|
|
|
+ .then((res) => {
|
|
|
+ if (res.code == 200) {
|
|
|
+ if (res.rows == null) {
|
|
|
+ this.gradeList = [];
|
|
|
+ } else {
|
|
|
+ this.gradeList = res.rows;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ throw new Error("");
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.msgError("拉取等级列表失败~");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ translateIntegralToInt(row) {
|
|
|
+ const integral = parseInt(row.integral);
|
|
|
+ if (isNaN(integral)) {
|
|
|
+ row.integral = 0;
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ row.integral = integral;
|
|
|
+ return integral;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ translateBalanceToFloat(row) {
|
|
|
+ const balance = parseFloat(row.balance);
|
|
|
+ if (isNaN(balance)) {
|
|
|
+ row.balance = 0;
|
|
|
+ return 0;
|
|
|
+ } else {
|
|
|
+ row.balance = balance;
|
|
|
+ return balance;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ translateIssueToName(row) {
|
|
|
+ const id = row.couponIssueId;
|
|
|
+ const issue = this.issueList.find((ele) => {
|
|
|
+ return ele.id == id;
|
|
|
+ });
|
|
|
+ if (issue == undefined) {
|
|
|
+ row.couponIssueId = undefined;
|
|
|
+ return "----";
|
|
|
+ }
|
|
|
+ return issue.issueRemark;
|
|
|
+ },
|
|
|
+ translateGradeToName(row) {
|
|
|
+ const id = row.memberGrade;
|
|
|
+ const grade = this.gradeList.find((ele) => {
|
|
|
+ return ele.id == id;
|
|
|
+ });
|
|
|
+ if (grade == undefined) {
|
|
|
+ row.memberGrade = undefined;
|
|
|
+ return "----";
|
|
|
+ }
|
|
|
+ return grade.grade;
|
|
|
+ },
|
|
|
+ translateLabelToName(row) {
|
|
|
+ const id = row.labelId;
|
|
|
+ const label = this.labelList.find((ele) => {
|
|
|
+ return ele.id == id;
|
|
|
+ });
|
|
|
+ if (label == undefined) {
|
|
|
+ row.labelId = undefined;
|
|
|
+ return "----";
|
|
|
+ }
|
|
|
+ return label.labelName;
|
|
|
+ },
|
|
|
+ translateCardToName(row) {
|
|
|
+ const id = row.cardType;
|
|
|
+ const typeObj = {
|
|
|
+ 1: "汽油卡",
|
|
|
+ 2: "柴油卡",
|
|
|
+ 3: "LNG卡",
|
|
|
+ 4: "CNG卡",
|
|
|
+ };
|
|
|
+
|
|
|
+ const type = typeObj[id];
|
|
|
+ if (type == undefined) {
|
|
|
+ row.cardType = "";
|
|
|
+ return "----";
|
|
|
+ }
|
|
|
+ return type;
|
|
|
+ },
|
|
|
+ submitForm() {
|
|
|
+ this.$refs["createForm"].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ if (!this.createForm.excelId) {
|
|
|
+ importExcel([this.createForm])
|
|
|
+ .then((res) => {
|
|
|
+ this.open = false;
|
|
|
+ this.tipOpen = true;
|
|
|
+ this.tipContent = res.msg;
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.msgError("导入失败,请刷新重试~");
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ upImport(this.createForm).then((res) => {
|
|
|
+ this.open = false;
|
|
|
+ this.msgSuccess("修改成功");
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ cancel() {
|
|
|
+ this.open = false;
|
|
|
+ },
|
|
|
+ batchAdd() {
|
|
|
+ let upBut = document.getElementById("upload_file");
|
|
|
+ upBut.click();
|
|
|
+ },
|
|
|
+ handleAdd() {
|
|
|
+ this.title = "新增数据";
|
|
|
+ this.createForm = {
|
|
|
+ phoneNumber: "",
|
|
|
+ integral: 0,
|
|
|
+ cardType: "1",
|
|
|
+ balance: 0,
|
|
|
+ memberGrade: "",
|
|
|
+ labelId: "",
|
|
|
+ couponIssueId: "",
|
|
|
+ };
|
|
|
+ this.open = true;
|
|
|
+ },
|
|
|
+ handleSubmitLable() {
|
|
|
+ updateImportList({
|
|
|
+ type: this.handleType,
|
|
|
+ id: this.tempId,
|
|
|
+ phoneArr: this.tempArr,
|
|
|
+ })
|
|
|
+ .then((r) => {
|
|
|
+ this.getList();
|
|
|
+ this.confirmDialog = false;
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ this.msgError("操作失败,请刷新后重试~");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ cancelSubmitLabel() {
|
|
|
+ this.getList();
|
|
|
+ this.confirmDialog = false;
|
|
|
+ },
|
|
|
+ translationLabel(id) {
|
|
|
+ const label = this.labelList.find((ele) => {
|
|
|
+ return id == ele.id;
|
|
|
+ });
|
|
|
+ if (label == undefined) {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+ return label.labelName;
|
|
|
+ },
|
|
|
+ toUnGrade(phoneNumber) {
|
|
|
+ const delArr = [];
|
|
|
+ if (this.selectedImport.length == 0) {
|
|
|
+ delArr.push(phoneNumber);
|
|
|
+ } else {
|
|
|
+ this.selectedImport.map((ele) => {
|
|
|
+ if (!!ele.phoneNumber) {
|
|
|
+ delArr.push(ele.phoneNumber);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ this.handleType = 0;
|
|
|
+ this.tempArr = delArr;
|
|
|
+ this.delHandle();
|
|
|
+ },
|
|
|
+ toUnLabel(phone) {
|
|
|
+ const delArr = [];
|
|
|
+ if (this.selectedImport.length == 0) {
|
|
|
+ delArr.push(phone);
|
|
|
+ } else {
|
|
|
+ this.selectedImport.map((ele) => {
|
|
|
+ if (!!ele.phoneNumber) {
|
|
|
+ delArr.push(ele.phoneNumber);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ this.handleType = 1;
|
|
|
+ this.tempArr = delArr;
|
|
|
+ this.delHandle();
|
|
|
+ },
|
|
|
+ toUnIssue(phone) {
|
|
|
+ const delArr = [];
|
|
|
+ if (this.selectedImport.length == 0) {
|
|
|
+ delArr.push(phone);
|
|
|
+ } else {
|
|
|
+ this.selectedImport.map((ele) => {
|
|
|
+ if (!!ele.phoneNumber) {
|
|
|
+ delArr.push(ele.phoneNumber);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ this.handleType = 2;
|
|
|
+ this.tempArr = delArr;
|
|
|
+ this.delHandle();
|
|
|
+ },
|
|
|
+ upImport(row) {
|
|
|
+ this.createForm = row;
|
|
|
+ this.open = true;
|
|
|
+ },
|
|
|
+ delImport(row){
|
|
|
+ const delArr = [];
|
|
|
+ if (this.selectedImport.length == 0) {
|
|
|
+ delArr.push(row.excelId);
|
|
|
+ } else {
|
|
|
+ this.selectedImport.map((ele) => {
|
|
|
+ if (!!ele.excelId) {
|
|
|
+ delArr.push(ele.excelId);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ delImportList(delArr).then(res=>{
|
|
|
+ this.getList()
|
|
|
+ this.msgSuccess("删除成功!")
|
|
|
+ }).catch(err=>{
|
|
|
+ this.msgError("删除失败,请刷新后重试~")
|
|
|
+ })
|
|
|
+ },
|
|
|
+ delHandle() {
|
|
|
+ updateImportList({
|
|
|
+ type: this.handleType,
|
|
|
+ phoneArr: this.tempArr,
|
|
|
+ })
|
|
|
+ .then((r) => {
|
|
|
+ this.getList();
|
|
|
+ this.confirmDialog = false;
|
|
|
+ })
|
|
|
+ .catch((e) => {
|
|
|
+ this.msgError("操作失败,请刷新后重试~");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ selectionChange(selection) {
|
|
|
+ console.log("selectionChange", selection);
|
|
|
+
|
|
|
+ this.selectedImport = selection;
|
|
|
+ },
|
|
|
+ getList() {
|
|
|
+ getImportList(this.queryForm)
|
|
|
+ .then((res) => {
|
|
|
+ if (res.rows == null) {
|
|
|
+ this.importList = [];
|
|
|
+ this.total = 0;
|
|
|
+ } else {
|
|
|
+ this.importList = res.rows;
|
|
|
+ this.total = res.total;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ this.msgError("拉取导入的数据列表失败");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ submitExcel() {
|
|
|
+ importExcel(this.tempImportList)
|
|
|
+ .then((res) => {
|
|
|
+ this.tempImportDialog = false;
|
|
|
+ this.tipOpen = true;
|
|
|
+ this.tipContent = res.msg;
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.tempImportDialog = false;
|
|
|
+ this.msgError("导入失败,请刷新后重试");
|
|
|
+ });
|
|
|
+ },
|
|
|
+ cancelExcel() {
|
|
|
+ this.tempImportDialog = false;
|
|
|
+ },
|
|
|
+ handleQuery() {
|
|
|
+ this.queryForm.pageNum = 1;
|
|
|
+ this.getList();
|
|
|
+ },
|
|
|
+ /** 重置按钮操作 */
|
|
|
+ resetQuery() {
|
|
|
+ this.resetForm("queryForm");
|
|
|
+ this.handleQuery();
|
|
|
+ },
|
|
|
+ toGrade(phoneAndId) {
|
|
|
+ const phoneAndIdArr = phoneAndId.match(/\d{1,}/g);
|
|
|
+ const phone = phoneAndIdArr[0];
|
|
|
+ const id = phoneAndIdArr[1];
|
|
|
+
|
|
|
+ if (!id || !phone) {
|
|
|
+ this.msgError("强拉等级失败,刷新重试~");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.selectedImport.length == 0) {
|
|
|
+ this.tempArr = [phone];
|
|
|
+ } else {
|
|
|
+ this.tempArr = [];
|
|
|
+ this.selectedImport.map((ele) => {
|
|
|
+ this.tempArr.push(ele.phoneNumber);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ this.handleType = 0;
|
|
|
+ this.tempId = id;
|
|
|
+
|
|
|
+ this.confirmDialog = true;
|
|
|
+ },
|
|
|
+ toLabel(phoneAndId) {
|
|
|
+ const phoneAndIdArr = phoneAndId.match(/\d{1,}/g);
|
|
|
+ const phone = phoneAndIdArr[0];
|
|
|
+ const id = phoneAndIdArr[1];
|
|
|
+
|
|
|
+ if (!id || !phone) {
|
|
|
+ this.msgError("强拉标签失败,刷新重试~");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.selectedImport.length == 0) {
|
|
|
+ this.tempArr = [phone];
|
|
|
+ } else {
|
|
|
+ this.tempArr = [];
|
|
|
+ this.selectedImport.map((ele) => {
|
|
|
+ this.tempArr.push(ele.phoneNumber);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ this.handleType = 1;
|
|
|
+ this.tempId = id;
|
|
|
+
|
|
|
+ this.confirmDialog = true;
|
|
|
+ },
|
|
|
+ toIssue(phoneAndId) {
|
|
|
+ const phoneAndIdArr = phoneAndId.match(/\d{1,}/g);
|
|
|
+ const phone = phoneAndIdArr[0];
|
|
|
+ const id = phoneAndIdArr[1];
|
|
|
+
|
|
|
+ if (!id || !phone) {
|
|
|
+ this.msgError("强拉标签失败,刷新重试~");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (this.selectedImport.length == 0) {
|
|
|
+ this.tempArr = [phone];
|
|
|
+ } else {
|
|
|
+ this.tempArr = [];
|
|
|
+ this.selectedImport.map((ele) => {
|
|
|
+ this.tempArr.push(ele.phoneNumber);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ this.handleType = 2;
|
|
|
+ this.tempId = id;
|
|
|
+
|
|
|
+ this.confirmDialog = true;
|
|
|
+ },
|
|
|
+ handleUpload(e) {
|
|
|
+ const files = e.target.files;
|
|
|
+ let file = files[0];
|
|
|
+ if(!file){
|
|
|
+ document.getElementById("upload_file").value = null;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const fileExt = file.name.split(".").pop().toLocaleLowerCase();
|
|
|
+ if (fileExt === "xlsx" || fileExt === "xls") {
|
|
|
+ document.getElementById("upload_file").value = null;
|
|
|
+ this.readFile(file);
|
|
|
+ } else {
|
|
|
+ this.msgError("请选择后缀为.xlsx或者.xls的EXCEL文件");
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ readFile(file) {
|
|
|
+ const reader = new FileReader();
|
|
|
+ reader.readAsArrayBuffer(file);
|
|
|
+ reader.onloadstart = (e) => {
|
|
|
+ console.log("onloadstart");
|
|
|
+ };
|
|
|
+ reader.onprogress = (e) => {
|
|
|
+ console.log("onprogress");
|
|
|
+ this.progressPercent = Math.round((e.loaded / e.total) * 100);
|
|
|
+ };
|
|
|
+ reader.onerror = (e) => {
|
|
|
+ this.msgError("文件读取出错");
|
|
|
+ };
|
|
|
+ reader.onload = (e) => {
|
|
|
+ console.log("onload");
|
|
|
+ const data = e.target.result;
|
|
|
+ const { header, results } = excel.read(data, "array");
|
|
|
+ //验证excel导入的有效性
|
|
|
+ if (!header.includes("phoneNumber")) {
|
|
|
+ this.msgError("请使用官方Excel模板导入数据");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.tempImportList = results;
|
|
|
+ this.tempImportDialog = true;
|
|
|
+ };
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+</script>
|
|
|
+<style scoped lang="scss">
|
|
|
+.app-container {
|
|
|
+ .container {
|
|
|
+ .row {
|
|
|
+ margin-bottom: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.el-dropdown-link {
|
|
|
+ cursor: pointer;
|
|
|
+ color: #409eff;
|
|
|
+}
|
|
|
+.el-icon-arrow-down {
|
|
|
+ font-size: 12px;
|
|
|
+}
|
|
|
+</style>
|