panchengyong
2024-11-04 25b37721a113ad46b59e7d4d9d9e8dcf2f2a9b08
粉丝列表样式
1 files deleted
2 files added
5 files modified
799 ■■■■ changed files
src/assets/logo/logo-aijuke.png patch | view | raw | blame | history
src/assets/logo/logo-guimi.png patch | view | raw | blame | history
src/assets/logo/logo1.png patch | view | raw | blame | history
src/utils/nonTokenRequest.js 5 ●●●●● patch | view | raw | blame | history
src/views/engine/customerIndex.vue 6 ●●●● patch | view | raw | blame | history
src/views/engine/intentionFans.vue 769 ●●●● patch | view | raw | blame | history
src/views/engine/vuser/vUserInfoIndex.vue 10 ●●●● patch | view | raw | blame | history
vue.config.js 9 ●●●● patch | view | raw | blame | history
src/assets/logo/logo-aijuke.png
src/assets/logo/logo-guimi.png
src/assets/logo/logo1.png
Binary files differ
src/utils/nonTokenRequest.js
@@ -14,8 +14,9 @@
import {getTenantId} from "@/utils/auth";
export const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  // baseURL: "http://localhost:8091",
  baseURL: "http://111.229.137.199:8091",
  baseURL: "http://localhost:8091",
  // baseURL: "http://111.229.137.199:8091",
  // baseURL: "http://47.102.98.249:8091", //zerocode  47.102.98.249
  //baseURL: "http://47.120.7.97:8091",
  // 超时
  timeout: 1800000,
src/views/engine/customerIndex.vue
@@ -150,7 +150,7 @@
        <el-table-column prop="source" label="数据渠道"  min-width="80" />
        <el-table-column label="操作" min-width="120" fixed="right" align="center">
          <template slot-scope="scope">
            <div>
 <!--           <div>
            <el-button
              type="success"
              size="mini"
@@ -165,9 +165,9 @@
                title="扫二维码开始私信">
                <img :src="qrCodeData" alt="QR Code" v-if="qrCodeData"/>
              </el-dialog>
            </div>
            </div> -->
            <el-button
              type="warning"
              type="primary"
              size="mini"
              @click="viewHome(scope.row)"
              class="mt-[10px] mr10 mymr10"
src/views/engine/intentionFans.vue
@@ -12,474 +12,441 @@
            </el-form-item>
            <el-form-item label="状态:" prop="fansStatus">
              <el-select v-model="fansStatus" @change="selectChange" clearable placeholder="请选择">
                <el-option
                  v-for="item in options"
                  :key="item.fansStatus"
                  :label="item.label"
                  :value="item.fansStatus">
                <el-option v-for="item in options" :key="item.fansStatus" :label="item.label" :value="item.fansStatus">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="平台:" prop="platform">
              <el-select v-model="platform" @change="selectPlatformChange" clearable placeholder="请选择">
                <el-option
                  v-for="item in platformOption"
                  :key="item.platform"
                  :label="item.label"
                <el-option v-for="item in platformOption" :key="item.platform" :label="item.label"
                  :value="item.platform">
                </el-option>
              </el-select>
            </el-form-item>
          </el-form>
          <div class="btn-box">
            <el-button
              type="primary"
              class="search-btn style-btn"
              size="mini"
              @click="searchList"
            >查询</el-button
            >
            <el-button class="reset-btn reset-btn" size="mini" @click="handleReset"
            >重置</el-button
            >
            <el-button type="primary" class="search-btn style-btn" size="mini" @click="searchList">查询</el-button>
            <el-button class="reset-btn reset-btn" size="mini" @click="handleReset">重置</el-button>
          </div>
        </div>
        <div class="acea-row">
          <el-button size="small" type="info" @click="refreshList"><i class="el-icon-refresh"></i></el-button>
          <el-button size="small" type="danger" @click="handleDeleteAll" ><i class="el-icon-delete-solid"></i> 删除</el-button>
          <el-button size="small" type="primary" @click.stop="getUpload" ><i class="el-icon-upload"></i> 上传客户资源</el-button>
          <el-button size="small" type="primary" @click="exports" ><i class="el-icon-document-checked"></i> 导出全部</el-button>
<!--          <el-button size="small"  type="danger" @click="setContactStatus(0)" ><i class="el-icon-phone-outline"></i> 设置未联系</el-button>-->
<!--          <el-button size="small" type="danger" @click="setContactStatus(1)" ><i class="el-icon-phone"></i> 设置已联系</el-button>-->
          <el-button size="small" type="danger" @click="handleDeleteAll"><i class="el-icon-delete-solid"></i>
            删除</el-button>
          <el-button size="small" type="primary" @click.stop="getUpload"><i class="el-icon-upload"></i>
            上传客户资源</el-button>
          <el-button size="small" type="primary" @click="exports"><i class="el-icon-document-checked"></i>
            导出全部</el-button>
          <!--          <el-button size="small"  type="danger" @click="setContactStatus(0)" ><i class="el-icon-phone-outline"></i> 设置未联系</el-button>-->
          <!--          <el-button size="small" type="danger" @click="setContactStatus(1)" ><i class="el-icon-phone"></i> 设置已联系</el-button>-->
        </div>
      </div>
      <el-table
        ref="table"
        v-loading="listLoading"
        :data="tableData.data"
        style="width: 100%;"
        size="mini"
        highlight-current-row
        @selection-change="handleSelectionChange"
      >
      <el-table ref="table" v-loading="listLoading" :data="tableData.data" style="width: 100%;" size="mini"
        highlight-current-row @selection-change="handleSelectionChange">
        <el-table-column type="selection" width="55" />
<!--        <el-table-column prop="taskId" label="任务ID" min-width="60" />-->
        <!--        <el-table-column prop="taskId" label="任务ID" min-width="60" />-->
        <el-table-column prop="taskName" label="任务名" show-overflow-tooltip min-width="100">
          <template slot-scope="scope">
            <el-button type="text" size="small" @click="jumpGo(scope.row.taskName)">{{scope.row.taskName}}</el-button>
          </template>
        </el-table-column>
        <el-table-column label="帐号" prop="uniqueNo" show-overflow-tooltip min-width="150" />
        <el-table-column label="昵称" prop="nickname" show-overflow-tooltip  min-width="120" />
        <el-table-column prop="platform" label="平台" min-width="80" />
        <el-table-column prop="title" label="来源" show-overflow-tooltip min-width="100" >
        <el-table-column prop="platform" label="平台" min-width="60" />
        <el-table-column label="帐号" prop="uniqueNo" show-overflow-tooltip min-width="120" />
        <el-table-column label="昵称" show-overflow-tooltip min-width="120">
          <template slot-scope="scope">
            <el-button type="text" size="small" @click="hitDetail(scope.row)">{{scope.row.nickname}}</el-button>
          </template>
        </el-table-column>
        <el-table-column prop="title" label="来源" show-overflow-tooltip min-width="180">
          <template slot-scope="scope">
            <el-button type="text" size="small" @click="jumpVideo(scope.row.url)">{{scope.row.title}}</el-button>
          </template>
        </el-table-column>
        <el-table-column prop="content" label="内容" show-overflow-tooltip min-width="100" />
        <el-table-column prop="tel" label="手机" min-width="100" />
        <el-table-column prop="content" label="内容" show-overflow-tooltip min-width="200" />
        <el-table-column prop="gotWord" label="命中关键词" show-overflow-tooltip min-width="90" />
        <el-table-column prop="ip" label="IP" show-overflow-tooltip min-width="60" />
        <el-table-column prop="tel" label="手机" show-overflow-tooltip min-width="50" />
        <el-table-column prop="vx" label="VX" show-overflow-tooltip min-width="50" />
        <el-table-column prop="gotWord" label="命中关键词" min-width="100" />
        <el-table-column prop="userInfo" sortable label="粉 / 关 / 赞 / 视频" min-width="180" />
        <el-table-column prop="commentDatetime" sortable label="咨询时间" min-width="140" />
        <el-table-column prop="grabDatetime" sortable label="分析时间" min-width="140" />
        <el-table-column prop="status" label="状态"  min-width="80" >
        <el-table-column prop="userInfo" sortable label="粉/关/赞/作品" min-width="150" />
        <el-table-column prop="commentDatetime" sortable label="咨询时间" min-width="150" />
        <el-table-column prop="grabDatetime" sortable label="分析时间" min-width="150" />
        <el-table-column prop="status" label="状态" min-width="80">
          <template slot-scope="scope">
            <span v-if="(scope.row.status != null)">已私信</span>
            <span v-if="(scope.row.status != null)">{{ scope.row.status }}</span>
            <span v-if="(scope.row.status == null && scope.row.isFollow ==1)">已关注</span>
            <span v-if="(scope.row.isFollow == null && scope.row.isChat == null)">未联系</span>
            <span v-if="(scope.row.status == null && scope.row.isFollow == null && scope.row.isChat == null)">未联系</span>
          </template>
        </el-table-column>
        <el-table-column prop="deviceNo" label="互动设备" min-width="140" />
        <el-table-column prop="createTime" sortable label="互动时间" min-width="140" />
        <el-table-column prop="peerAccount" align="center" label="同行帐号" min-width="80">
          <template slot-scope="scope">
            <span v-if="(scope.row.peerAccount == null || scope.row.peerAccount == 0)">否</span>
            <span v-if="(scope.row.peerAccount == 1)"><el-button type="success" round>是</el-button></span>
          </template>
        </el-table-column>
        <el-table-column prop="intentionFans" align="center" label="意向粉丝" min-width="80">
          <template slot-scope="scope">
            <span v-if="(scope.row.intentionFans == null || scope.row.intentionFans == 0)">否</span>
            <span v-if="(scope.row.intentionFans == 1)"><el-button type="success" round>是</el-button></span>
          </template>
        </el-table-column>
        <el-table-column prop="source" label="数据渠道"  min-width="80" />
        <el-table-column prop="source" label="数据渠道" min-width="80" />
        <el-table-column label="操作" min-width="120" fixed="right" align="center">
          <template slot-scope="scope">
            <div>
              <el-button
                type="success"
                size="mini"
                @click="scanQRCode(scope.row)"
                class="mr10">扫码私信</el-button>
              <el-dialog
                :modal="false"
                :visible.sync="dialogVisible"
                :close-on-click-modal="true"
                width="25%"
                custom-class="prod-upload-dialog"
                title="扫二维码开始私信">
                <img :src="qrCodeData" alt="QR Code" v-if="qrCodeData"/>
              <el-button type="warning" size="mini" @click="scanQRCode(scope.row)" class="mr10">扫码私信</el-button>
              <el-dialog :modal="false" :visible.sync="dialogVisible" :close-on-click-modal="true" width="25%"
                custom-class="prod-upload-dialog" title="扫二维码开始私信">
                <img :src="qrCodeData" alt="QR Code" v-if="qrCodeData" />
              </el-dialog>
            </div>
            <el-button
              type="warning"
              size="mini"
              @click="viewHome(scope.row)"
              class="mt-[10px] mr10 mymr10"
            >访问主页</el-button>
            <el-button
              type="danger"
              size="mini"
              @click="hitDetail(scope.row)"
              class="mt-[10px] mr10 mymr10"
            >查看详情</el-button>
            <el-button type="primary" size="mini" @click="viewHome(scope.row)"
              class="mt-[10px] mr10 mymr10">访问主页</el-button>
            <!-- <el-button type="danger" size="mini" @click="hitDetail(scope.row)"
              class="mt-[10px] mr10 mymr10">查看详情</el-button> -->
          </template>
        </el-table-column>
      </el-table>
      <div class="block">
        <el-pagination
          :page-sizes="[20, 40, 60, 80]"
          :page-size="tableFrom.size"
          :current-page="tableFrom.current"
          layout="total, sizes, prev, pager, next, jumper"
          :total="tableData.total"
          @size-change="handleSizeChange"
          @current-change="pageChange"
        />
        <el-pagination :page-sizes="[20, 40, 60, 80]" :page-size="tableFrom.size" :current-page="tableFrom.current"
          layout="total, sizes, prev, pager, next, jumper" :total="tableData.total" @size-change="handleSizeChange"
          @current-change="pageChange" />
      </div>
    </el-card>
    <consumer-video-upload
      v-if="uploadVisible"
      ref="consumerVideoUpload"
      :isLoad="true"
      @refreshDataList="getWaitingConsignmentExcel"
    ></consumer-video-upload>
    <consumer-video-upload v-if="uploadVisible" ref="consumerVideoUpload" :isLoad="true"
      @refreshDataList="getWaitingConsignmentExcel"></consumer-video-upload>
    <!--    命中详情-->
    <hit-detail
      v-if="hitDetailVisible"
      ref="hitDetail"
      :isLoad="true"
    ></hit-detail>
    <hit-detail v-if="hitDetailVisible" ref="hitDetail" :isLoad="true"></hit-detail>
  </div>
</template>
<script>
import {
  engineCustomerListApi,
  customerListDeleteApi,
  exportCustomerListApi,
  setContactStatusApi, setIndustryAndFansApi
} from '@/api/engine/engine';
import ConsumerVideoUpload from "./consumer-video-upload";
import qrcode from "qrcode";
import HitDetail from "@/views/engine/hitDetail.vue";
export default {
  name: 'StoreAttr',
  data() {
    return {
      formDynamic: {
        ruleName: '',
        ruleValue: [],
      },
      tableFrom: {
        current: 1,
        size: 20,
        keywords: '',
        // 是否同行账号和意向粉丝数据
        clueAndIntention: true
      },
      tableData: {
        records: [],
        loading: false,
        total: 0,
      },
      listLoading: true,
      selectionList: [],
      multipleSelectionAll: [],
      idKey: 'id',
      nextPageFlag: false,
      uploadVisible: false,
      keyNum: 0,
      dialogVisible: false,
      qrCodeData:'',
      hitDetailVisible: false,
      options: [{
        fansStatus: 1,
        label: '已关注'
      }, {
        fansStatus: 2,
        label: '已私信'
      },
        {
          fansStatus: 3,
          label: '待私信'
        }
      ],
      platformOption: [{
        platform: 'DY',
        label: '抖音'
      }, {
        platform: 'KS',
        label: '快手'
      }, {
        platform: 'XHS',
        label: '小红书'
      }]
    };
  },
  components: {HitDetail, ConsumerVideoUpload},
  mounted() {
    this.getList();
  },
  methods: {
    searchList() {
      this.tableFrom.current = 1;
  import {
    engineCustomerListApi,
    customerListDeleteApi,
    exportCustomerListApi,
    setContactStatusApi,
    setIndustryAndFansApi
  } from '@/api/engine/engine';
  import ConsumerVideoUpload from "./consumer-video-upload";
  import qrcode from "qrcode";
  import HitDetail from "@/views/engine/hitDetail.vue";
  export default {
    name: 'StoreAttr',
    data() {
      return {
        formDynamic: {
          ruleName: '',
          ruleValue: [],
        },
        tableFrom: {
          current: 1,
          size: 20,
          keywords: '',
          // 是否同行账号和意向粉丝数据
          clueAndIntention: true
        },
        tableData: {
          records: [],
          loading: false,
          total: 0,
        },
        listLoading: true,
        selectionList: [],
        multipleSelectionAll: [],
        idKey: 'id',
        nextPageFlag: false,
        uploadVisible: false,
        keyNum: 0,
        dialogVisible: false,
        qrCodeData: '',
        hitDetailVisible: false,
        options: [{
            fansStatus: 1,
            label: '已关注'
          }, {
            fansStatus: 2,
            label: '已私信'
          },
          {
            fansStatus: 3,
            label: '待私信'
          }
        ],
        platformOption: [{
          platform: 'DY',
          label: '抖音'
        }, {
          platform: 'KS',
          label: '快手'
        }, {
          platform: 'XHS',
          label: '小红书'
        }]
      };
    },
    components: {
      HitDetail,
      ConsumerVideoUpload
    },
    mounted() {
      this.getList();
    },
    handleReset() {
      this.$refs.tableFrom.resetFields();
      this.fansStatus = ''
      this.platform = ''
      this.getList();
    },
    refreshList() {
      this.tableFrom.current = 1;
      this.tableFrom.keywords = '';
      this.getList();
    },
    handleSelectionChange(val) {
      this.selectionList = val;
      setTimeout(() => {
        this.changePageCoreRecordData();
      }, 50);
    },
    // 设置选中的方法
    setSelectRow() {
      if (!this.multipleSelectionAll || this.multipleSelectionAll.length <= 0) {
        return;
      }
      // 标识当前行的唯一键的名称
      const idKey = this.idKey;
      const selectAllIds = [];
      this.multipleSelectionAll.forEach((row) => {
        selectAllIds.push(row[idKey]);
      });
      this.$refs.table.clearSelection();
      for (var i = 0; i < this.tableData.data.length; i++) {
        if (selectAllIds.indexOf(this.tableData.data[i][idKey]) >= 0) {
          // 设置选中,记住table组件需要使用ref="table"
          this.$refs.table.toggleRowSelection(this.tableData.data[i], true);
    methods: {
      searchList() {
        this.tableFrom.current = 1;
        this.getList();
      },
      handleReset() {
        this.$refs.tableFrom.resetFields();
        this.fansStatus = ''
        this.platform = ''
        this.getList();
      },
      refreshList() {
        this.tableFrom.current = 1;
        this.tableFrom.keywords = '';
        this.getList();
      },
      handleSelectionChange(val) {
        this.selectionList = val;
        setTimeout(() => {
          this.changePageCoreRecordData();
        }, 50);
      },
      // 设置选中的方法
      setSelectRow() {
        if (!this.multipleSelectionAll || this.multipleSelectionAll.length <= 0) {
          return;
        }
      }
    },
    // 记忆选择核心方法
    changePageCoreRecordData() {
      // 标识当前行的唯一键的名称
      const idKey = this.idKey;
      const that = this;
      // 如果总记忆中还没有选择的数据,那么就直接取当前页选中的数据,不需要后面一系列计算
      if (this.multipleSelectionAll.length <= 0) {
        this.multipleSelectionAll = this.selectionList;
        return;
      }
      // 总选择里面的key集合
      const selectAllIds = [];
      this.multipleSelectionAll.forEach((row) => {
        selectAllIds.push(row[idKey]);
      });
      const selectIds = [];
      // 获取当前页选中的id
      this.selectionList.forEach((row) => {
        selectIds.push(row[idKey]);
        // 如果总选择里面不包含当前页选中的数据,那么就加入到总选择集合里
        if (selectAllIds.indexOf(row[idKey]) < 0) {
          that.multipleSelectionAll.push(row);
        // 标识当前行的唯一键的名称
        const idKey = this.idKey;
        const selectAllIds = [];
        this.multipleSelectionAll.forEach((row) => {
          selectAllIds.push(row[idKey]);
        });
        this.$refs.table.clearSelection();
        for (var i = 0; i < this.tableData.data.length; i++) {
          if (selectAllIds.indexOf(this.tableData.data[i][idKey]) >= 0) {
            // 设置选中,记住table组件需要使用ref="table"
            this.$refs.table.toggleRowSelection(this.tableData.data[i], true);
          }
        }
      });
      const noSelectIds = [];
      // 得到当前页没有选中的id
      this.tableData.data.forEach((row) => {
        if (selectIds.indexOf(row[idKey]) < 0) {
          noSelectIds.push(row[idKey]);
      },
      // 记忆选择核心方法
      changePageCoreRecordData() {
        // 标识当前行的唯一键的名称
        const idKey = this.idKey;
        const that = this;
        // 如果总记忆中还没有选择的数据,那么就直接取当前页选中的数据,不需要后面一系列计算
        if (this.multipleSelectionAll.length <= 0) {
          this.multipleSelectionAll = this.selectionList;
          return;
        }
      });
      noSelectIds.forEach((id) => {
        if (selectAllIds.indexOf(id) >= 0) {
          for (let i = 0; i < that.multipleSelectionAll.length; i++) {
            if (that.multipleSelectionAll[i][idKey] == id) {
              // 如果总选择中有未被选中的,那么就删除这条
              that.multipleSelectionAll.splice(i, 1);
              break;
        // 总选择里面的key集合
        const selectAllIds = [];
        this.multipleSelectionAll.forEach((row) => {
          selectAllIds.push(row[idKey]);
        });
        const selectIds = [];
        // 获取当前页选中的id
        this.selectionList.forEach((row) => {
          selectIds.push(row[idKey]);
          // 如果总选择里面不包含当前页选中的数据,那么就加入到总选择集合里
          if (selectAllIds.indexOf(row[idKey]) < 0) {
            that.multipleSelectionAll.push(row);
          }
        });
        const noSelectIds = [];
        // 得到当前页没有选中的id
        this.tableData.data.forEach((row) => {
          if (selectIds.indexOf(row[idKey]) < 0) {
            noSelectIds.push(row[idKey]);
          }
        });
        noSelectIds.forEach((id) => {
          if (selectAllIds.indexOf(id) >= 0) {
            for (let i = 0; i < that.multipleSelectionAll.length; i++) {
              if (that.multipleSelectionAll[i][idKey] == id) {
                // 如果总选择中有未被选中的,那么就删除这条
                that.multipleSelectionAll.splice(i, 1);
                break;
              }
            }
          }
        }
      });
    },
    handleAdd() {
      const _this = this;
      this.$modalAttr(
        Object.assign({}, this.formDynamic),
        function () {
          _this.getList();
        },
        (this.keyNum += 1),
      );
    },
    // 列表
    getList() {
      this.listLoading = true;
      engineCustomerListApi(this.tableFrom)
        .then((res) => {
          const list = res.records;
          this.tableData.data = list;
          this.tableData.total = res.total;
          for (var i = 0; i < list.length; i++) {
            list[i].ruleValue = JSON.parse(list[i].ruleValue);
          }
          this.$nextTick(function () {
            this.setSelectRow(); // 调用跨页选中方法
          });
          this.listLoading = false;
        })
        .catch(() => {
          this.listLoading = false;
        });
    },
      },
      handleAdd() {
        const _this = this;
        this.$modalAttr(
          Object.assign({}, this.formDynamic),
          function() {
            _this.getList();
          },
          (this.keyNum += 1),
        );
      },
      // 列表
      getList() {
        this.listLoading = true;
        engineCustomerListApi(this.tableFrom)
          .then((res) => {
            const list = res.records;
            this.tableData.data = list;
            this.tableData.total = res.total;
            for (var i = 0; i < list.length; i++) {
              list[i].ruleValue = JSON.parse(list[i].ruleValue);
            }
            this.$nextTick(function() {
              this.setSelectRow(); // 调用跨页选中方法
            });
            this.listLoading = false;
          })
          .catch(() => {
            this.listLoading = false;
          });
      },
    jumpVideo(url) {
      if (url !== '' && url !== null) {
        console.log("jumpVideo=>" + url)
        window.open(url, '_blank')
      }
    },
    // 导出
    exports() {
      const keywords = this.tableFrom.keywords;
      exportCustomerListApi(keywords).then((res) => {
       // window.open(res.fileName);
        alert("res =>" + JSON.stringify(res));
      }).catch((error) => {
        // console.error(error);
      });
    },
    pageChange(page) {
      this.changePageCoreRecordData();
      this.tableFrom.current = page;
      this.getList();
    },
    handleSizeChange(val) {
      this.changePageCoreRecordData();
      this.tableFrom.size = val;
      this.getList();
    },
    // 删除
    handleDelete(id, idx) {
      this.$modalSure()
        .then(() => {
          customerListDeleteApi(id).then(() => {
            this.$message.success('删除成功');
            if (this.tableData.data.length === 1 && this.tableFrom.page > 1)
              this.tableFrom.page = this.tableFrom.page - 1;
            this.getList();
          });
        })
        .catch(() => {});
    },
    handleDeleteAll() {
      if (!this.multipleSelectionAll.length) return this.$message.warning('请选择数据');
      const data = [];
      this.multipleSelectionAll.map((item) => {
        data.push(item.id);
      });
      this.ids = data.join(',');
      this.$confirm("是否删除,删除后不可恢复?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          customerListDeleteApi(this.ids).then(() => {
            this.$message.success('删除成功');
            this.getList();
          });
        })
        .catch(() => {});
    },
    // 扫描访问
    scanQRCode(val) {
      const params = val.userHomePageUrl;
      qrcode.toDataURL(params)
        .then(url => {
          this.qrCodeData = url;
          this.dialogVisible = true;
        })
        .catch(err => {
          console.error("scanQRCode: "+err);
      jumpVideo(url) {
        if (url !== '' && url !== null) {
          console.log("jumpVideo=>" + url)
          window.open(url, '_blank')
        }
      },
      // 导出
      exports() {
        const keywords = this.tableFrom.keywords;
        exportCustomerListApi(keywords).then((res) => {
          // window.open(res.fileName);
          alert("res =>" + JSON.stringify(res));
        }).catch((error) => {
          // console.error(error);
        });
    },
    viewHome(val) {
      const url = val.userHomePageUrl;
      if (url !== '' && url !== null) {
        console.log("jumpVideo=>" + url)
        window.open(url, '_blank')
      }
    },
    // 跳转至导入选择
    getUpload () {
      this.uploadVisible = true
      this.$nextTick(() => {
        this.$refs.consumerVideoUpload.init()
      })
    },
    // 刷新数据
    getWaitingConsignmentExcel () {
      // console.log("----------consumer----------------")
      // 关闭
      setTimeout(() => {
        this.refreshList()
      }, 1000)
    },
    // 页面跳转
    jumpGo(param) {
      // console.log("-------------->"+param)
      this.$router.push({path: '/taskManage/task', query: {keywords: param}})
    },
    // 命中详情
    hitDetail (data) {
      const keyword = data.gotWord;
      if (keyword) {
        this.hitDetailVisible = true
      },
      pageChange(page) {
        this.changePageCoreRecordData();
        this.tableFrom.current = page;
        this.getList();
      },
      handleSizeChange(val) {
        this.changePageCoreRecordData();
        this.tableFrom.size = val;
        this.getList();
      },
      // 删除
      handleDelete(id, idx) {
        this.$modalSure()
          .then(() => {
            customerListDeleteApi(id).then(() => {
              this.$message.success('删除成功');
              if (this.tableData.data.length === 1 && this.tableFrom.page > 1)
                this.tableFrom.page = this.tableFrom.page - 1;
              this.getList();
            });
          })
          .catch(() => {});
      },
      handleDeleteAll() {
        if (!this.multipleSelectionAll.length) return this.$message.warning('请选择数据');
        const data = [];
        this.multipleSelectionAll.map((item) => {
          data.push(item.id);
        });
        this.ids = data.join(',');
        this.$confirm("是否删除,删除后不可恢复?", "提示", {
            confirmButtonText: "确定",
            cancelButtonText: "取消",
            type: "warning",
          })
          .then(() => {
            customerListDeleteApi(this.ids).then(() => {
              this.$message.success('删除成功');
              this.getList();
            });
          })
          .catch(() => {});
      },
      // 扫描访问
      scanQRCode(val) {
        const params = val.userHomePageUrl;
        qrcode.toDataURL(params)
          .then(url => {
            this.qrCodeData = url;
            this.dialogVisible = true;
          })
          .catch(err => {
            console.error("scanQRCode: " + err);
          });
      },
      viewHome(val) {
        const url = val.userHomePageUrl;
        if (url !== '' && url !== null) {
          console.log("jumpVideo=>" + url)
          window.open(url, '_blank')
        }
      },
      // 跳转至导入选择
      getUpload() {
        this.uploadVisible = true
        this.$nextTick(() => {
          this.$refs.hitDetail.init();
          this.$refs.hitDetail.getHitDetail(data.taskId, data.id);
          this.$refs.consumerVideoUpload.init()
        })
      }
      },
      // 刷新数据
      getWaitingConsignmentExcel() {
        // console.log("----------consumer----------------")
        // 关闭
        setTimeout(() => {
          this.refreshList()
        }, 1000)
      },
      // 页面跳转
      jumpGo(param) {
        // console.log("-------------->"+param)
        this.$router.push({
          path: '/taskManage/task',
          query: {
            keywords: param
          }
        })
      },
      // 命中详情
      hitDetail(data) {
        const keyword = data.gotWord;
        if (keyword) {
          this.hitDetailVisible = true
          this.$nextTick(() => {
            this.$refs.hitDetail.init();
            this.$refs.hitDetail.getHitDetail(data.taskId, data.id);
          })
        }
      },
      selectChange(value) {
        this.tableFrom.fansStatus = value;
        this.getList();
      },
      selectPlatformChange(value) {
        this.tableFrom.platform = value;
        this.getList();
      },
    },
    selectChange(value){
      this.tableFrom.fansStatus = value;
      this.getList();
    },
    selectPlatformChange(value) {
      this.tableFrom.platform = value;
      this.getList();
    },
  },
};
  };
</script>
<style scoped lang="scss">
@import "list-header.scss";
.selWidth {
  width: 350px !important;
}
.seachTiele {
  line-height: 35px;
}
.fr {
  float: right;
}
.mymr10{
  margin-left: 0px;
  margin-top: 10px;
}
  @import "list-header.scss";
  .selWidth {
    width: 350px !important;
  }
  .seachTiele {
    line-height: 35px;
  }
  .fr {
    float: right;
  }
  .mymr10 {
    margin-left: 0px;
    margin-top: 10px;
  }
</style>
src/views/engine/vuser/vUserInfoIndex.vue
@@ -46,15 +46,15 @@
        size="mini"
        highlight-current-row
      >
        <el-table-column prop="url" label="主页地址" show-overflow-tooltip min-width="120">
        <el-table-column prop="url" label="主页地址" show-overflow-tooltip min-width="180">
          <template slot-scope="scope">
            <el-button type="text" size="small" @click="jumpGo(scope.row.url)">{{scope.row.url}}</el-button>
          </template>
        </el-table-column>
        <el-table-column prop="platform" label="平台" />
        <el-table-column prop="uniqueNo" label="账号" />
        <el-table-column prop="nickname" label="昵称" min-width="100"/>
        <el-table-column prop="avatar" label="头像" show-overflow-tooltip min-width="120">
        <el-table-column prop="platform" label="平台" min-width="60"/>
        <el-table-column prop="uniqueNo" label="账号" show-overflow-tooltip min-width="120" />
        <el-table-column prop="nickname" label="昵称" min-width="120"/>
        <el-table-column prop="avatar" label="头像" show-overflow-tooltip min-width="80">
          <template slot-scope="scope">
            <el-button type="text" size="small" @click="jumpGo(scope.row.url)"></el-button>
          </template>
vue.config.js
@@ -38,13 +38,8 @@
      // ['/prod-api']: {
      ['/prod-api/merchant-api']: {
        // target: `http://127.0.0.1:8080/`,
        // target: `http://matrix.tbt.ink/`,  // 生产环境地址
        // target: `http://47.120.7.97:8080/`,
        target: `http://111.229.137.199:8080/`,
        // target: `https://sj.cxlaike.com/`,  // 生产环境地址
        // target:`http://192.168.2.203:10302/`, //  开发环境 spug
        // target:`http://192.168.2.240:10241/`, //  测试环境 - 新的vmware
        // target:`http://39.174.173.115:20241`, //  测试环境 - 新的vmware - 外网
        target: `http://111.229.137.199:8080/`, // 生产环境地址
        // target: `http://47.102.98.249:8090/`, //Zerocode
        // target: `http://192.168.2.212:30241/`,  // 开发环境地址
        // target:`http://192.168.2.209:10243/`, //  演示环境