6-27-中午提交,修改页面映射

This commit is contained in:
wsb1224 2026-06-27 15:54:15 +08:00
parent d67cdd6123
commit 506a5a4faa
9 changed files with 124 additions and 14 deletions

View File

@ -42,7 +42,7 @@
<td>
<div class="stack">
<strong>{{ row.fileName }}</strong>
<small>{{ row.bizType }} / {{ row.bizId }}</small>
<small>{{ row.bizType === 'sales_order' ? '销售订单' : row.bizType === 'logistics_task' ? '物流任务' : row.bizType }} / {{ row.bizId }}</small>
</div>
</td>
<td>

View File

@ -92,9 +92,9 @@
<div class="panel-header"><h3>操作审计日志</h3><span>记录审批配置与导出等关键动作</span></div>
<div class="timeline">
<div v-for="item in filteredLogs" :key="item.logId" class="timeline-item">
<strong>{{ item.operateType }}</strong>
<strong>{{ mapOperateType(item.operateType) }}</strong>
<p>{{ item.detail }}</p>
<small>{{ item.time }} · {{ item.bizType || '未知业务' }}</small>
<small>{{ item.time }} · {{ mapBizType(item.bizType) }}</small>
</div>
</div>
<PaginationBar v-model:currentPage="pagination.pageNo" v-model:pageSize="pagination.pageSize" :total="pagination.total" />
@ -150,6 +150,50 @@ const matrix = ref([
const logs = ref([]);
const pagination = reactive({ pageNo: 1, pageSize: 20, total: 0 });
/** 将操作类型码映射为中文 */
const operateTypeMap = {
order_submit: '订单提交',
order_update: '订单修改',
order_approve: '订单审批',
order_cancel: '订单取消',
order_cancel_approve: '取消审批',
order_settle: '订单结算',
order_supplier_text_confirm: '供应商确认',
logistics_task_create: '物流任务创建',
logistics_task_reassign: '物流任务改派',
logistics_task_cancel: '物流任务取消',
logistics_task_attachment_create: '物流附件上传',
driver_task_accepted: '司机接单',
driver_task_picked_up: '司机揽货',
driver_task_delivered: '司机送达',
tracking_update: '轨迹更新',
waybill_submit: '运单提交',
customer_create: '客户创建',
customer_update: '客户修改',
customer_import: '客户导入',
config_create: '配置创建',
config_update: '配置修改',
ai_recognize: 'AI识别',
ai_correct: 'AI修正',
attachment_create: '附件上传',
};
function mapOperateType(value) { return operateTypeMap[value] || value || '-'; }
/** 将业务类型码映射为中文 */
const bizTypeMap = {
sales_order: '销售订单',
logistics_task: '物流任务',
customer: '客户',
customer_arrears: '客户欠款',
config: '系统配置',
system_user: '系统用户',
system_role: '系统角色',
system_menu: '系统菜单',
file_attachment: '文件附件',
ai_recognition_log: 'AI识别记录',
};
function mapBizType(value) { return bizTypeMap[value] || value || '未知业务'; }
const visibleFields = computed(() => baseFields.map((field) => ({
label: field.label,
value: field[activeRole.value],

View File

@ -230,10 +230,11 @@ const validationItems = computed(() => {
//
const arrearsMode = cfgMap.arrears_generate_mode?.value;
const arrearsModeMap = { shipped: '发货后记账', delivered: '送达后记账' };
const modeOk = arrearsMode === 'shipped' || arrearsMode === 'delivered';
items.push({
name: '欠款模式校验',
detail: `当前模式:${arrearsMode || '未设置'}`,
detail: `当前模式:${arrearsModeMap[arrearsMode] || arrearsMode || '未设置'}`,
state: modeOk ? 'done' : 'todo',
stateText: modeOk ? '已对齐' : '待收口',
});

View File

@ -53,7 +53,7 @@
<div class="trace-card">
<div class="trace-time">{{ item.node_time }}</div>
<div class="trace-desc">{{ item.node_desc }}</div>
<span v-if="item.source_platform" class="trace-source badge">{{ item.source_platform }}</span>
<span v-if="item.source_platform" class="trace-source badge">{{ ({ driver: '司机上报', backend: '后台录入', kuaidi100: '快递100', third_party: '第三方', manual: '手动录入' })[item.source_platform] || item.source_platform }}</span>
<span v-if="item.remark" class="trace-location">{{ item.remark }}</span>
</div>
</div>

View File

@ -460,7 +460,7 @@
</div>
<div class="doc-field">
<label>任务状态</label>
<span>{{ detail.logistics.task_status || '-' }}</span>
<span>{{ mapLogisticsStatus(detail.logistics.status) }}</span>
</div>
</div>
<!-- 物流轨迹时间线 -->
@ -471,7 +471,7 @@
<div class="doc-trace-card">
<span class="doc-trace-time">{{ item.node_time }}</span>
<span class="doc-trace-desc">{{ item.node_desc }}</span>
<span v-if="item.source_platform" class="doc-trace-source">{{ item.source_platform }}</span>
<span v-if="item.source_platform" class="doc-trace-source">{{ mapSourcePlatform(item.source_platform) }}</span>
</div>
</div>
</div>
@ -1028,6 +1028,20 @@ const statusTextMap = {
pending_settle: '待结算', settled: '已结算',
};
/** 将物流轨迹来源平台映射为中文 */
const sourcePlatformMap = {
driver: '司机上报', backend: '后台录入', kuaidi100: '快递100',
third_party: '第三方', manual: '手动录入',
};
function mapSourcePlatform(value) { return sourcePlatformMap[value] || value || ''; }
/** 将物流任务状态映射为中文 */
const logisticsStatusMap = {
pending: '待接单', accepted: '已接单', picked_up: '已揽货',
delivered: '已送达', canceled: '已取消',
};
function mapLogisticsStatus(value) { return logisticsStatusMap[value] || value || '-'; }
// ==================== ====================
const isEditing = ref(false);
const editSaving = ref(false);

View File

@ -60,9 +60,9 @@
<tbody>
<tr v-for="row in paginatedReminders" :key="row.reminder_id">
<td>{{ row.title || '(无标题)' }}</td>
<td>{{ row.type }}</td>
<td>{{ row.biz_type }} / {{ row.biz_id }}</td>
<td><span class="status">{{ row.status }}</span></td>
<td>{{ mapReminderType(row.type) }}</td>
<td>{{ mapReminderBizType(row.biz_type) }} / {{ row.biz_id }}</td>
<td><span class="status">{{ mapReminderStatus(row.status) }}</span></td>
<td><button class="ghost-btn" @click="markRead(row)" :disabled="row.status === 'read'">标记已读</button></td>
</tr>
</tbody>
@ -96,6 +96,28 @@ import PaginationBar from '../components/PaginationBar.vue';
const toast = useToast();
/** 提醒列表数据 */
const reminders = ref([]);
/** 将提醒类型码映射为中文 */
const reminderTypeMap = {
logistics_timeout: '物流超时',
arrears: '欠款提醒',
inactive_customer: '长期未下单',
order_status: '订单状态变更',
};
function mapReminderType(value) { return reminderTypeMap[value] || value || '-'; }
/** 将提醒状态码映射为中文 */
const reminderStatusMap = { pending: '待处理', read: '已读' };
function mapReminderStatus(value) { return reminderStatusMap[value] || value || '-'; }
/** 将业务类型码映射为中文 */
const reminderBizTypeMap = {
sales_order: '销售订单',
logistics_task: '物流任务',
customer_arrears: '客户欠款',
customer: '客户',
};
function mapReminderBizType(value) { return reminderBizTypeMap[value] || value || '-'; }
/** 操作进行中标识 */
const loading = ref(false);
/** 筛选条件(状态和类型) */

View File

@ -195,7 +195,7 @@
<article>
<h4>文件信息</h4>
<p>文件名{{ lastExport.file_name }}</p>
<p>导出格式{{ lastExport.export_format }}</p>
<p>导出格式{{ lastExport.export_format === 'csv' ? 'CSV' : lastExport.export_format === 'xlsx' ? 'Excel' : lastExport.export_format }}</p>
<p>统计周期数{{ lastExport.total_periods }}</p>
</article>
<article class="full-width">

View File

@ -83,6 +83,26 @@ function mapOrderStatus(status) {
return statusMap[status] || status || "-";
}
/**
* 将审批类型码映射为中文文本
* @param {string} type - 审批类型码
* @returns {string} 中文类型名称
*/
function mapApproveType(type) {
const typeMap = { order: "订单审批", cancel_order: "取消审批" };
return typeMap[type] || type || "-";
}
/**
* 将审批结果码映射为中文文本
* @param {string} result - 审批结果码
* @returns {string} 中文结果名称
*/
function mapApproveResult(result) {
const resultMap = { pass: "通过", reject: "驳回", refuse: "驳回" };
return resultMap[result] || result || "-";
}
/**
* 手机号脱敏处理保留前 3 位和后 4
* @param {string} mobile - 原始手机号
@ -347,8 +367,8 @@ export async function fetchOrderDetail(orderId) {
approveLogs: (data.approve_logs || []).map((item) => ({
id: item.log_id,
approveTime: item.approve_time || "-",
approveType: item.approve_type || "-",
approveResult: item.approve_result || "-",
approveType: mapApproveType(item.approve_type),
approveResult: mapApproveResult(item.approve_result),
afterStatus: mapOrderStatus(item.after_status),
approveOpinion: item.approve_opinion || "-",
})),

View File

@ -102,7 +102,7 @@
<div v-else class="reminder-list">
<article v-for="item in pendingReminders" :key="item.reminder_id" class="reminder-row">
<span class="reminder-title">{{ item.title || '(无标题)' }}</span>
<span class="reminder-type">{{ item.type || "-" }}</span>
<span class="reminder-type">{{ mapReminderType(item.type) }}</span>
<span class="reminder-time">{{ item.created_at || "-" }}</span>
</article>
</div>
@ -131,6 +131,15 @@ import { fetchFlowOverview, fetchRemindersDashboard, fetchSalesmanDashboard, fet
import { salesStore } from "../store";
import { reminderWs } from "../utils/websocket";
/** 将提醒类型码映射为中文 */
const reminderTypeMap = {
arrears: "欠款提醒",
inactive_customer: "长期未下单",
logistics_timeout: "物流超时",
order_status: "订单状态变更",
};
function mapReminderType(value) { return reminderTypeMap[value] || value || "-"; }
/** 加载状态标识 */
const loading = ref(true);
/** 自定义日期范围 */