|
|
@@ -56,17 +56,30 @@
|
|
|
<el-table-column type="selection" width="55" align="center"/>
|
|
|
<el-table-column label="医生" align="center" prop="doctorName"/>
|
|
|
<el-table-column label="客户" align="center" prop="name"/>
|
|
|
-<!-- <el-table-column label="客户头像" align="center" prop="avatar" width="100px">-->
|
|
|
-<!-- <template slot-scope="scope">-->
|
|
|
-<!-- <el-popover-->
|
|
|
-<!-- placement="right"-->
|
|
|
-<!-- title=""-->
|
|
|
-<!-- trigger="hover">-->
|
|
|
-<!-- <img slot="reference" :src="scope.row.avatar" width="60px">-->
|
|
|
-<!-- <img :src="scope.row.avatar" style="max-width: 200px;">-->
|
|
|
-<!-- </el-popover>-->
|
|
|
-<!-- </template>-->
|
|
|
-<!-- </el-table-column>-->
|
|
|
+ <el-table-column label="电话" align="center" prop="phone">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <div style="display: flex; align-items: center; gap: 8px;">
|
|
|
+ <!-- 显示解密后的电话,或原始加密电话,或占位符 -->
|
|
|
+ <span class="detail-value">
|
|
|
+ {{ scope.row._decryptedPhone !== undefined
|
|
|
+ ? (scope.row._decryptedPhone || '—')
|
|
|
+ : (scope.row.phone ? '******' : '—') }}
|
|
|
+ </span>
|
|
|
+
|
|
|
+ <!-- 放大镜图标按钮 -->
|
|
|
+ <el-button
|
|
|
+ v-if="scope.row.id"
|
|
|
+ type="text"
|
|
|
+ icon="el-icon-search"
|
|
|
+ size="mini"
|
|
|
+ :loading="scope.row._phoneLoading"
|
|
|
+ @click="fetchDecryptedPhoneForRow(scope.row)"
|
|
|
+ title="点击查看真实号码"
|
|
|
+ style="padding: 0; margin-left: 0;"
|
|
|
+ ></el-button>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="升单类型" align="center" prop="type">
|
|
|
<template slot-scope="scope">
|
|
|
<dict-tag :options="typeOptions" :value="scope.row.type"/>
|
|
|
@@ -79,7 +92,6 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="派发时间" align="center" prop="createTime"/>
|
|
|
<el-table-column label="处理时间" align="center" prop="updateTime"/>
|
|
|
- <el-table-column label="处理耗时" align="center" prop="name"/>
|
|
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
|
|
<template slot-scope="scope">
|
|
|
<el-button
|
|
|
@@ -101,60 +113,6 @@
|
|
|
@pagination="getList"
|
|
|
/>
|
|
|
|
|
|
- <!-- 销售处理sop任务详情对话框 -->
|
|
|
- <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
|
|
|
- <el-form :model="form" label-width="100px" size="small">
|
|
|
- <el-row :gutter="20">
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="医生:">
|
|
|
- <span class="detail-value">{{ form.doctorName || '—' }}</span>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="客户:">
|
|
|
- <span class="detail-value">{{ form.name || '—' }}</span>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="客户电话:">
|
|
|
- <div style="display: flex; align-items: center; gap: 8px;">
|
|
|
- <span class="detail-value">
|
|
|
- {{ decryptedPhone || (form.phone ? '******' : '—') }}
|
|
|
- </span>
|
|
|
- <el-button
|
|
|
- v-if="form.id"
|
|
|
- type="text"
|
|
|
- icon="el-icon-search"
|
|
|
- size="mini"
|
|
|
- @click="fetchDecryptedPhone(form.id)"
|
|
|
- :loading="phoneLoading"
|
|
|
- title="点击查看真实号码"
|
|
|
- style="padding: 0; margin-left: 0;"
|
|
|
- ></el-button>
|
|
|
- </div>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="处理状态:">
|
|
|
- <dict-tag :options="statusOptions" :value="form.status"/>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
-
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item label="备注:">
|
|
|
- <span class="detail-value">{{ form.remark || '—' }}</span>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
-
|
|
|
- <div slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="cancel">关 闭</el-button>
|
|
|
- </div>
|
|
|
- </el-dialog>
|
|
|
-
|
|
|
<!-- 会员详情抽屉 -->
|
|
|
<el-drawer
|
|
|
:title="show.title"
|
|
|
@@ -205,10 +163,6 @@ export default {
|
|
|
open: false,
|
|
|
// 处理状态字典
|
|
|
statusOptions: [],
|
|
|
- // 用于存储解密后的电话
|
|
|
- decryptedPhone: '',
|
|
|
- // 电话加载状态
|
|
|
- phoneLoading: false,
|
|
|
// 会员详情抽屉
|
|
|
show: {
|
|
|
title: "会员详情",
|
|
|
@@ -252,7 +206,11 @@ export default {
|
|
|
getList() {
|
|
|
this.loading = true;
|
|
|
statsOverviewList(this.queryParams).then(response => {
|
|
|
- this.companyUserTaskList = response.rows;
|
|
|
+ // 清理每行的临时解密字段(避免旧数据显示)
|
|
|
+ this.companyUserTaskList = (response.rows || []).map(row => {
|
|
|
+ const { _decryptedPhone, _phoneLoading, ...cleanRow } = row; // 移除临时字段
|
|
|
+ return { ...cleanRow };
|
|
|
+ });
|
|
|
this.total = response.total;
|
|
|
this.loading = false;
|
|
|
});
|
|
|
@@ -310,18 +268,22 @@ export default {
|
|
|
this.queryParams.pageNum = 1; // 切换时重置页码
|
|
|
this.getList();
|
|
|
},
|
|
|
- /** 获取并显示解密后的电话 */
|
|
|
- async fetchDecryptedPhone(id) {
|
|
|
- if (!id) return;
|
|
|
- this.phoneLoading = true;
|
|
|
+ /** 获取并显示当前行解密后的电话 */
|
|
|
+ async fetchDecryptedPhoneForRow(row) {
|
|
|
+ if (!row.id || row._phoneLoading) return;
|
|
|
+
|
|
|
+ // 避免重复请求
|
|
|
+ this.$set(row, '_phoneLoading', true);
|
|
|
+
|
|
|
try {
|
|
|
- const response = await getUserPhone(id);
|
|
|
- this.decryptedPhone = response.userPhone || '—';
|
|
|
+ const response = await getUserPhone(row.id);
|
|
|
+ const phone = response.userPhone || '—';
|
|
|
+ this.$set(row, '_decryptedPhone', phone);
|
|
|
} catch (error) {
|
|
|
this.$message.error('获取电话失败');
|
|
|
- this.decryptedPhone = '获取失败';
|
|
|
+ this.$set(row, '_decryptedPhone', '获取失败');
|
|
|
} finally {
|
|
|
- this.phoneLoading = false;
|
|
|
+ this.$set(row, '_phoneLoading', false);
|
|
|
}
|
|
|
},
|
|
|
/** 会员详情按钮操作 */
|