修复内容
This commit is contained in:
@@ -200,57 +200,24 @@
|
||||
<div class="chart-card">
|
||||
<div class="chart-title">当月目标完成率</div>
|
||||
<div style="margin-bottom: 20px;">
|
||||
<div style="font-size: 14px; color: #666; margin-bottom: 10px;">本月销售目标: <span style="color: #4A70F4; font-weight: bold;">10万</span></div>
|
||||
<div style="font-size: 14px; color: #666; margin-bottom: 10px;">
|
||||
本月销售目标:
|
||||
<span style="color: #4A70F4; font-weight: bold;" id="monthly-target-text">--</span>
|
||||
</div>
|
||||
<div class="progress-item">
|
||||
<div class="progress-label">
|
||||
<span>总体完成率</span>
|
||||
<span style="color: #4A70F4; font-weight: bold;">84%</span>
|
||||
<span style="color: #4A70F4; font-weight: bold;" id="overall-completion-text">--</span>
|
||||
</div>
|
||||
<div class="progress-bar-container">
|
||||
<div class="progress-bar" style="width: 84%;"></div>
|
||||
<div class="progress-bar" id="overall-completion-bar" style="width: 0%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="margin-top: 30px;">
|
||||
<div class="chart-title" style="font-size: 14px; margin-bottom: 15px;">客服目标完成率(N个客服的目标陈列)</div>
|
||||
<div id="staff-progress-list">
|
||||
<!-- 客服进度条列表 -->
|
||||
<div class="progress-item">
|
||||
<div class="progress-label">
|
||||
<span>啦啦</span>
|
||||
<span>销售额: XXX | 百分比: xx% | 同比: xx%</span>
|
||||
</div>
|
||||
<div class="progress-bar-container">
|
||||
<div class="progress-bar" style="width: 0%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-item">
|
||||
<div class="progress-label">
|
||||
<span>小喵</span>
|
||||
<span>销售额: XXX | 百分比: xx% | 同比: xx%</span>
|
||||
</div>
|
||||
<div class="progress-bar-container">
|
||||
<div class="progress-bar" style="width: 0%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-item">
|
||||
<div class="progress-label">
|
||||
<span>哆哆</span>
|
||||
<span>销售额: XXX | 百分比: xx% | 同比: xx%</span>
|
||||
</div>
|
||||
<div class="progress-bar-container">
|
||||
<div class="progress-bar" style="width: 0%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="progress-item">
|
||||
<div class="progress-label">
|
||||
<span>大猫</span>
|
||||
<span>销售额: XXX | 百分比: xx% | 同比: xx%</span>
|
||||
</div>
|
||||
<div class="progress-bar-container">
|
||||
<div class="progress-bar" style="width: 0%;"></div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 客服进度条列表(JS 根据数据库数据渲染) -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -263,8 +230,8 @@
|
||||
<div class="layui-col-md6">
|
||||
<div class="chart-card">
|
||||
<div class="chart-title">每日销售趋势</div>
|
||||
<div style="text-align: right; margin-bottom: 10px; color: #f56c6c; font-size: 14px;">
|
||||
▼ 29.23% 上月同比
|
||||
<div id="trend-compare-text" style="text-align: right; margin-bottom: 10px; color: #f56c6c; font-size: 14px;">
|
||||
--
|
||||
</div>
|
||||
<div class="chart-container-large" id="daily-sales-trend-chart"></div>
|
||||
</div>
|
||||
@@ -296,52 +263,8 @@
|
||||
<th>渠道</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>总额</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>年卡</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>次卡</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>单次服务</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>其他服务</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tbody id="channel-month-table-body">
|
||||
<!-- JS 动态渲染渠道月销售详情 -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -365,52 +288,8 @@
|
||||
<th>龙里</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>总额</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>年卡</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>次卡</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>单次服务</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>其他服务</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
<td class="empty-data">-</td>
|
||||
</tr>
|
||||
<tbody id="region-month-table-body">
|
||||
<!-- JS 动态渲染区域月销售详情 -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -441,6 +320,10 @@ layui.config({
|
||||
newCustomers: parseInt('{$newCustomers|default=0}') || 0
|
||||
};
|
||||
|
||||
// 仪表盘其它统计数据(目标、客服进度、渠道、趋势、区域等)
|
||||
// 这里直接输出后端已经 json_encode 好的字符串,避免模板语法冲突
|
||||
var dashboardData = {$dashboardData|raw} || {};
|
||||
|
||||
// 渲染统计数据
|
||||
renderStatistics();
|
||||
|
||||
@@ -451,8 +334,13 @@ layui.config({
|
||||
format: 'yyyy-MM-dd'
|
||||
});
|
||||
|
||||
// 初始化所有图表(仅样式,不填充数据)
|
||||
// 初始化所有图表(使用数据库数据渲染)
|
||||
initCharts();
|
||||
|
||||
// 渲染目标完成率和客服进度条
|
||||
renderTargetsAndStaff();
|
||||
// 渲染渠道与区域明细表格
|
||||
renderChannelAndRegionTables();
|
||||
|
||||
// 渲染统计数据
|
||||
function renderStatistics() {
|
||||
@@ -486,6 +374,99 @@ layui.config({
|
||||
$('#customers-compare').html(formatCompare(statisticsData.customersCompare));
|
||||
}
|
||||
|
||||
// 渲染销售目标、总体完成率和客服进度条
|
||||
function renderTargetsAndStaff() {
|
||||
if (!dashboardData) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 销售目标与总体完成率
|
||||
var target = dashboardData.monthlyTarget || 0;
|
||||
var completion = dashboardData.overallCompletion || 0;
|
||||
|
||||
$('#monthly-target-text').text(target > 0 ? (target / 10000).toFixed(2) + ' 万' : '--');
|
||||
$('#overall-completion-text').text(completion.toFixed ? completion.toFixed(2) + '%' : (completion + '%'));
|
||||
$('#overall-completion-bar').css('width', (completion > 100 ? 100 : completion) + '%');
|
||||
|
||||
// 客服进度条
|
||||
var list = $('#staff-progress-list');
|
||||
list.empty();
|
||||
if (dashboardData.staffProgress && dashboardData.staffProgress.length) {
|
||||
dashboardData.staffProgress.forEach(function (item) {
|
||||
var percentText = (item.percent || 0).toFixed(2) + '%';
|
||||
var yoy = item.yoy || 0;
|
||||
var yoyHtml;
|
||||
if (yoy > 0) {
|
||||
yoyHtml = '同比: <span style="color:#52c41a;">↑ ' + yoy.toFixed(2) + '%</span>';
|
||||
} else if (yoy < 0) {
|
||||
yoyHtml = '同比: <span style="color:#ff4d4f;">↓ ' + Math.abs(yoy).toFixed(2) + '%</span>';
|
||||
} else {
|
||||
yoyHtml = '同比: <span style="color:#999;">持平</span>';
|
||||
}
|
||||
var html = ''
|
||||
+ '<div class="progress-item">'
|
||||
+ ' <div class="progress-label">'
|
||||
+ ' <span>' + (item.name || '未分配') + '</span>'
|
||||
+ ' <span>销售额: ' + (item.sales || 0) + ' | 百分比: ' + percentText + ' | ' + yoyHtml + '</span>'
|
||||
+ ' </div>'
|
||||
+ ' <div class="progress-bar-container">'
|
||||
+ ' <div class="progress-bar" style="width:' + (item.percent || 0) + '%;"></div>'
|
||||
+ ' </div>'
|
||||
+ '</div>';
|
||||
list.append(html);
|
||||
});
|
||||
} else {
|
||||
list.append('<div style="color:#999;font-size:12px;">暂无客服统计数据</div>');
|
||||
}
|
||||
}
|
||||
|
||||
// 渠道&区域月销售明细表格渲染(只处理“总额”这一行)
|
||||
function renderChannelAndRegionTables() {
|
||||
if (!dashboardData) {
|
||||
return;
|
||||
}
|
||||
|
||||
// ===== 渠道月销售详情(总额 / 年卡 / 次卡 / 单次 / 其它) =====
|
||||
var channelBody = $('#channel-month-table-body');
|
||||
channelBody.empty();
|
||||
var channelHeaders = ['美团','公众号','抖音','员工','异业','渠道'];
|
||||
var rowLabels = [
|
||||
{key: 'total', text: '总额'},
|
||||
{key: 'year', text: '年卡'},
|
||||
{key: 'times', text: '次卡'},
|
||||
{key: 'single',text: '单次服务'},
|
||||
{key: 'other', text: '其他服务'}
|
||||
];
|
||||
var keyToCol = ['meituan','gzh','douyin','staff','yeye','other'];
|
||||
rowLabels.forEach(function (row) {
|
||||
var data = (dashboardData.channelDetail && dashboardData.channelDetail[row.key]) || {};
|
||||
var tr = '<tr><td>' + row.text + '</td>';
|
||||
keyToCol.forEach(function (colKey) {
|
||||
var v = parseFloat(data[colKey] || 0).toFixed(2);
|
||||
tr += '<td>' + v + '</td>';
|
||||
});
|
||||
tr += '</tr>';
|
||||
channelBody.append(tr);
|
||||
});
|
||||
|
||||
// ===== 区域月销售详情(总额 / 年卡 / 次卡 / 单次 / 其它) =====
|
||||
var regionBody = $('#region-month-table-body');
|
||||
regionBody.empty();
|
||||
if (dashboardData.regions && dashboardData.regions.length) {
|
||||
var regionNames = dashboardData.regions;
|
||||
rowLabels.forEach(function (row) {
|
||||
var rowData = (dashboardData.regionDetail && dashboardData.regionDetail[row.key]) || {};
|
||||
var tr2 = '<tr><td>' + row.text + '</td>';
|
||||
regionNames.forEach(function (rName) {
|
||||
var val = parseFloat(rowData[rName] || 0).toFixed(2);
|
||||
tr2 += '<td>' + val + '</td>';
|
||||
});
|
||||
tr2 += '</tr>';
|
||||
regionBody.append(tr2);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function initCharts() {
|
||||
// 月客户分析 - 饼图
|
||||
var customerChart = echarts.init(document.getElementById('customer-analysis-chart'));
|
||||
@@ -519,7 +500,7 @@ layui.config({
|
||||
}]
|
||||
});
|
||||
|
||||
// 月销售情况 - 饼图
|
||||
// 月销售情况 - 饼图(使用数据库汇总结果)
|
||||
var salesChart = echarts.init(document.getElementById('sales-situation-chart'));
|
||||
salesChart.setOption({
|
||||
tooltip: {
|
||||
@@ -544,16 +525,18 @@ layui.config({
|
||||
show: true,
|
||||
formatter: '{b}: {c}'
|
||||
},
|
||||
data: [
|
||||
{value: 8.2, name: '年卡销售', itemStyle: {color: '#4A70F4'}},
|
||||
{value: 3.2, name: '次卡销售', itemStyle: {color: '#6DD047'}},
|
||||
{value: 1.4, name: '单次服务', itemStyle: {color: '#F6A23F'}},
|
||||
{value: 1.2, name: '其他服务', itemStyle: {color: '#87CEEB'}}
|
||||
]
|
||||
data: (dashboardData.salesSituation && dashboardData.salesSituation.length)
|
||||
? dashboardData.salesSituation
|
||||
: [
|
||||
{value: 0, name: '单次服务', itemStyle: {color: '#F6A23F'}},
|
||||
{value: 0, name: '年卡销量', itemStyle: {color: '#4A70F4'}},
|
||||
{value: 0, name: '次卡销量', itemStyle: {color: '#6DD047'}},
|
||||
{value: 0, name: '其它服务', itemStyle: {color: '#87CEEB'}}
|
||||
]
|
||||
}]
|
||||
});
|
||||
|
||||
// 当月客户渠道分析 - 环形图
|
||||
// 当月客户渠道分析 - 环形图(使用数据库统计的渠道订单数)
|
||||
var channelChart = echarts.init(document.getElementById('channel-analysis-chart'));
|
||||
channelChart.setOption({
|
||||
tooltip: {
|
||||
@@ -578,19 +561,13 @@ layui.config({
|
||||
show: true,
|
||||
formatter: '{b}: {d}%'
|
||||
},
|
||||
data: [
|
||||
{value: 0, name: '美团'},
|
||||
{value: 24, name: '公众号-企业客户'},
|
||||
{value: 0, name: '抖音'},
|
||||
{value: 0, name: '渠道'},
|
||||
{value: 0, name: '员工'},
|
||||
{value: 0, name: '异业'},
|
||||
{value: 0, name: '普通客户'}
|
||||
]
|
||||
data: (dashboardData.channelPie && dashboardData.channelPie.length)
|
||||
? dashboardData.channelPie
|
||||
: []
|
||||
}]
|
||||
});
|
||||
|
||||
// 每日销售趋势 - 折线图
|
||||
// 每日销售趋势 - 折线图(使用数据库按天汇总的数据)
|
||||
var trendChart = echarts.init(document.getElementById('daily-sales-trend-chart'));
|
||||
trendChart.setOption({
|
||||
tooltip: {
|
||||
@@ -605,7 +582,7 @@ layui.config({
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: []
|
||||
data: dashboardData.trendDates || []
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
@@ -635,11 +612,21 @@ layui.config({
|
||||
itemStyle: {
|
||||
color: '#4A70F4'
|
||||
},
|
||||
data: []
|
||||
data: dashboardData.trendValues || []
|
||||
}]
|
||||
});
|
||||
// 渲染“上月同比”文字
|
||||
var trendCompare = dashboardData.trendCompare || 0;
|
||||
var trendTextDom = $('#trend-compare-text');
|
||||
if (trendCompare > 0) {
|
||||
trendTextDom.css('color', '#52c41a').html('▲ ' + trendCompare.toFixed(2) + '% 上月同比');
|
||||
} else if (trendCompare < 0) {
|
||||
trendTextDom.css('color', '#f56c6c').html('▼ ' + Math.abs(trendCompare).toFixed(2) + '% 上月同比');
|
||||
} else {
|
||||
trendTextDom.css('color', '#999').html('持平 上月同比');
|
||||
}
|
||||
|
||||
// 区域月销售额 - 柱状图
|
||||
// 区域月销售额 - 柱状图(根据地址简单按区域统计)
|
||||
var regionalChart = echarts.init(document.getElementById('regional-sales-chart'));
|
||||
regionalChart.setOption({
|
||||
tooltip: {
|
||||
@@ -656,7 +643,7 @@ layui.config({
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: ['区域1', '区域2', '区域3', '区域4', '区域5', '区域6', '区域7', '区域8']
|
||||
data: dashboardData.regions || []
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
@@ -668,7 +655,7 @@ layui.config({
|
||||
itemStyle: {
|
||||
color: '#4A70F4'
|
||||
},
|
||||
data: [4668, 3775, 2912, 2200, 1259, 700, 403, 0]
|
||||
data: dashboardData.regionTotals || []
|
||||
}]
|
||||
});
|
||||
|
||||
|
||||
@@ -298,43 +298,86 @@
|
||||
|
||||
setSelectFirst();
|
||||
function setSelectFirst(default_id) {
|
||||
console.log('setSelectFirst 被调用,default_id:', default_id);
|
||||
var category_select_html = '<option value="">请选择分类</option>';
|
||||
var foundMatch = false;
|
||||
for (var i in categorys) {
|
||||
if (categorys[i]['level'] == 1) {
|
||||
category_select_html += '<option value="' + categorys[i]['id'] + '">' + categorys[i]['name'] + '</option>';
|
||||
var selected = '';
|
||||
if (default_id && String(categorys[i]['id']) == String(default_id)) {
|
||||
selected = ' selected';
|
||||
foundMatch = true;
|
||||
console.log('找到匹配的省份:', categorys[i]['name'], 'ID:', categorys[i]['id']);
|
||||
}
|
||||
category_select_html += '<option value="' + categorys[i]['id'] + '"' + selected + '>' + categorys[i]['name'] + '</option>';
|
||||
}
|
||||
}
|
||||
$('select[name="first_category_id"]').html(category_select_html);
|
||||
$('select[name="first_category_id"]').val(default_id);
|
||||
if (default_id) {
|
||||
$('select[name="first_category_id"]').val(String(default_id));
|
||||
console.log('设置省份值:', String(default_id), '是否找到匹配:', foundMatch);
|
||||
}
|
||||
form.render('select');
|
||||
}
|
||||
function setSelectSecond(default_id, parent_id) {
|
||||
console.log('setSelectSecond 被调用,default_id:', default_id, 'parent_id:', parent_id);
|
||||
parent_id = parent_id === undefined ? $('select[name="first_category_id"]').val() : parent_id;
|
||||
if (!parent_id) {
|
||||
console.log('setSelectSecond: parent_id 为空,返回');
|
||||
return;
|
||||
}
|
||||
parent_id = String(parent_id);
|
||||
$('select[name="second_category_id"]').html('<option value="">请选择分类</option>');
|
||||
$('select[name="third_category_id"]').html('<option value="">请选择分类</option>');
|
||||
var category_select_html = '<option value="">请选择分类</option>';
|
||||
var foundMatch = false;
|
||||
|
||||
for (var i in categorys) {
|
||||
if (categorys[i]['parent_id'] == parent_id) {
|
||||
category_select_html += '<option value="' + categorys[i]['id'] + '">' + categorys[i]['name'] + '</option>';
|
||||
if (String(categorys[i]['parent_id']) == parent_id) {
|
||||
var selected = '';
|
||||
if (default_id && String(categorys[i]['id']) == String(default_id)) {
|
||||
selected = ' selected';
|
||||
foundMatch = true;
|
||||
console.log('找到匹配的城市:', categorys[i]['name'], 'ID:', categorys[i]['id']);
|
||||
}
|
||||
category_select_html += '<option value="' + categorys[i]['id'] + '"' + selected + '>' + categorys[i]['name'] + '</option>';
|
||||
}
|
||||
}
|
||||
$('select[name="second_category_id"]').html(category_select_html);
|
||||
$('select[name="second_category_id"]').val(default_id);
|
||||
if (default_id) {
|
||||
$('select[name="second_category_id"]').val(String(default_id));
|
||||
console.log('设置城市值:', String(default_id), '是否找到匹配:', foundMatch);
|
||||
}
|
||||
form.render('select');
|
||||
}
|
||||
function setSelectThird(default_id, parent_id) {
|
||||
console.log('setSelectThird 被调用,default_id:', default_id, 'parent_id:', parent_id);
|
||||
parent_id = parent_id === undefined ? $('select[name="second_category_id"]').val() : parent_id;
|
||||
if (!parent_id) {
|
||||
console.log('setSelectThird: parent_id 为空,返回');
|
||||
return;
|
||||
}
|
||||
parent_id = String(parent_id);
|
||||
$('select[name="third_category_id"]').html('<option value="">请选择分类</option>');
|
||||
var first_category_id = $('select[name="first_category_id"]').val();
|
||||
var category_select_html = '<option value="">请选择分类</option>';
|
||||
var foundMatch = false;
|
||||
|
||||
for (var i in categorys) {
|
||||
if (categorys[i]['parent_id'] == parent_id) {
|
||||
category_select_html += '<option value="' + categorys[i]['id'] + '">' + categorys[i]['name'] + '</option>';
|
||||
if (String(categorys[i]['parent_id']) == parent_id) {
|
||||
var selected = '';
|
||||
if (default_id && String(categorys[i]['id']) == String(default_id)) {
|
||||
selected = ' selected';
|
||||
foundMatch = true;
|
||||
console.log('找到匹配的区县:', categorys[i]['name'], 'ID:', categorys[i]['id']);
|
||||
}
|
||||
category_select_html += '<option value="' + categorys[i]['id'] + '"' + selected + '>' + categorys[i]['name'] + '</option>';
|
||||
}
|
||||
}
|
||||
$('select[name="third_category_id"]').html(category_select_html);
|
||||
$('select[name="third_category_id"]').val(default_id);
|
||||
if (default_id) {
|
||||
$('select[name="third_category_id"]').val(String(default_id));
|
||||
console.log('设置区县值:', String(default_id), '是否找到匹配:', foundMatch);
|
||||
}
|
||||
form.render('select');
|
||||
}
|
||||
|
||||
@@ -465,7 +508,7 @@
|
||||
}
|
||||
{notempty name='info'}
|
||||
var goods_info= {$info|raw|default=''};
|
||||
console.log(goods_info);
|
||||
console.log('订单数据:', goods_info);
|
||||
$('input[name="id"]').val(goods_info['id']);
|
||||
$('input[name="address"]').val(goods_info['address']);
|
||||
$('input[name="total_amount"]').val(goods_info['total_amount']);
|
||||
@@ -474,9 +517,89 @@
|
||||
$('input[name="phone"]').val(goods_info['mobile']);
|
||||
$('input[name="store_latitude"]').val(goods_info['lng']);
|
||||
$('input[name="store_longitude"]').val(goods_info['lat']);
|
||||
setSelectFirst(goods_info['province']);
|
||||
setSelectSecond(goods_info['city']);
|
||||
setSelectThird(goods_info['district']);
|
||||
|
||||
// 设置地区选择器,根据返回的 province、city、district 字段
|
||||
// 注意:需要检查值是否存在,包括0的情况(0是有效的ID值)
|
||||
var province_id = '';
|
||||
var city_id = '';
|
||||
var district_id = '';
|
||||
|
||||
// 检查province字段(包括0值)
|
||||
if (goods_info['province'] !== undefined && goods_info['province'] !== null && goods_info['province'] !== '') {
|
||||
province_id = goods_info['province'];
|
||||
}
|
||||
// 检查city字段(包括0值)
|
||||
if (goods_info['city'] !== undefined && goods_info['city'] !== null && goods_info['city'] !== '') {
|
||||
city_id = goods_info['city'];
|
||||
}
|
||||
// 检查district字段(包括0值)
|
||||
if (goods_info['district'] !== undefined && goods_info['district'] !== null && goods_info['district'] !== '') {
|
||||
district_id = goods_info['district'];
|
||||
}
|
||||
|
||||
console.log('地区数据:', {
|
||||
province: goods_info['province'],
|
||||
city: goods_info['city'],
|
||||
district: goods_info['district'],
|
||||
province_id: province_id,
|
||||
city_id: city_id,
|
||||
district_id: district_id
|
||||
});
|
||||
|
||||
// 初始化地区选择器的函数
|
||||
function initRegionSelectors() {
|
||||
if (province_id !== '') {
|
||||
// 转换为字符串,确保类型匹配
|
||||
province_id = String(province_id);
|
||||
|
||||
// 先设置省份
|
||||
setSelectFirst(province_id);
|
||||
|
||||
// 等待省份选择器渲染完成后再设置城市
|
||||
setTimeout(function() {
|
||||
// 验证省份值是否设置成功
|
||||
var selectedProvince = $('select[name="first_category_id"]').val();
|
||||
console.log('已选省份ID:', selectedProvince, '期望:', province_id);
|
||||
|
||||
if (city_id !== '' && selectedProvince == province_id) {
|
||||
city_id = String(city_id);
|
||||
setSelectSecond(city_id, province_id);
|
||||
|
||||
// 等待城市选择器渲染完成后再设置区县
|
||||
setTimeout(function() {
|
||||
// 验证城市值是否设置成功
|
||||
var selectedCity = $('select[name="second_category_id"]').val();
|
||||
console.log('已选城市ID:', selectedCity, '期望:', city_id);
|
||||
|
||||
if (district_id !== '' && selectedCity == city_id) {
|
||||
district_id = String(district_id);
|
||||
setSelectThird(district_id, city_id);
|
||||
|
||||
setTimeout(function() {
|
||||
var selectedDistrict = $('select[name="third_category_id"]').val();
|
||||
console.log('已选区县ID:', selectedDistrict, '期望:', district_id);
|
||||
// 最后重新渲染一次,确保所有选择器都正确显示
|
||||
form.render('select');
|
||||
}, 100);
|
||||
} else {
|
||||
form.render('select');
|
||||
}
|
||||
}, 300);
|
||||
} else {
|
||||
form.render('select');
|
||||
}
|
||||
}, 300);
|
||||
} else {
|
||||
form.render('select');
|
||||
}
|
||||
}
|
||||
|
||||
// 延迟执行,确保页面完全加载和选择器初始化完成
|
||||
setTimeout(function() {
|
||||
console.log('开始初始化地区选择器...');
|
||||
initRegionSelectors();
|
||||
}, 200);
|
||||
|
||||
setBrand(goods_info['channel_id']); //部门的修改
|
||||
setBrandss(goods_info['gord_id']); //部门的修改
|
||||
|
||||
|
||||
@@ -73,12 +73,19 @@
|
||||
height: 62px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
/* 退款状态标红样式 */
|
||||
.refund-status-row {
|
||||
background-color: #ffebee !important;
|
||||
/* 退款中状态绿色背景 */
|
||||
.refunding-row {
|
||||
background-color: #c8e6c9 !important;
|
||||
}
|
||||
.refund-status-row:hover {
|
||||
background-color: #ffcdd2 !important;
|
||||
.refunding-row:hover {
|
||||
background-color: #a5d6a7 !important;
|
||||
}
|
||||
/* 同意退款后淡绿色背景 */
|
||||
.order-status-4-row {
|
||||
background-color: #e8f5e9 !important;
|
||||
}
|
||||
.order-status-4-row:hover {
|
||||
background-color: #c8e6c9 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -206,6 +213,7 @@
|
||||
<li data-type="1">已支付</li>
|
||||
<li data-type="2">已退款</li>
|
||||
<li data-type="3">拒退款</li>
|
||||
<li data-type="66">已删除</li>
|
||||
</ul>
|
||||
|
||||
<div class="layui-tab-item layui-show">
|
||||
@@ -338,7 +346,11 @@
|
||||
<a class="layui-btn-primary layui-btn-sm" lay-event="channel" style="display: inline-block;">渠道</a>
|
||||
<a class="layui-btn layui-btn-primary layui-btn-sm operation-btn" lay-event="remarks">备注</a>
|
||||
<a class="layui-btn-primary layui-btn-sm" style="display: inline-block;" lay-event="allocation"> 分配</a>
|
||||
{{# if(d.del == 0){ }}
|
||||
<a class="layui-btn layui-btn-primary layui-btn-sm operation-btn" style="display: inline-block;background-color:#fd4634;color:#fff" lay-event="cancel">删除</a>
|
||||
{{# } else { }}
|
||||
<a class="layui-btn layui-btn-primary layui-btn-sm operation-btn" style="display: inline-block;background-color:#1E9FFF;color:#fff" lay-event="recover">恢复</a>
|
||||
{{# } }}
|
||||
{{# if(d.order_status == 1){ }}
|
||||
<a class="layui-btn-primary layui-btn-sm" style="display: inline-block;" lay-event="delivery">发货</a>
|
||||
{{# } }}
|
||||
@@ -637,19 +649,36 @@
|
||||
$($(".layui-table-fixed-r .layui-table-body tbody tr")[index]).height($(val).height());
|
||||
});
|
||||
|
||||
// 如果 refund_status > 0,整行标红显示
|
||||
// 如果 order_status == 4(同意退款),整行淡绿色显示
|
||||
// 如果 refund_status > 0 但 order_status != 4(退款中),整行绿色显示
|
||||
if (res && res.data && res.data.length > 0) {
|
||||
res.data.forEach(function(item, index) {
|
||||
if (item.refund_status && parseInt(item.refund_status) > 0) {
|
||||
// 给主表格行添加红色背景
|
||||
var orderStatus = item.order_status ? parseInt(item.order_status) : 0;
|
||||
var refundStatus = item.refund_status ? parseInt(item.refund_status) : 0;
|
||||
|
||||
// 同意退款后,order_status == 4,显示淡绿色
|
||||
if (orderStatus == 4) {
|
||||
// 给主表格行添加淡绿色背景
|
||||
var $mainRow = $(".layui-table-main tbody tr").eq(index);
|
||||
$mainRow.addClass('refund-status-row');
|
||||
$mainRow.addClass('order-status-4-row');
|
||||
|
||||
// 给固定列的行也添加红色背景
|
||||
// 给固定列的行也添加淡绿色背景
|
||||
var $fixedLeftRow = $(".layui-table-fixed-l .layui-table-body tbody tr").eq(index);
|
||||
var $fixedRightRow = $(".layui-table-fixed-r .layui-table-body tbody tr").eq(index);
|
||||
$fixedLeftRow.addClass('refund-status-row');
|
||||
$fixedRightRow.addClass('refund-status-row');
|
||||
$fixedLeftRow.addClass('order-status-4-row');
|
||||
$fixedRightRow.addClass('order-status-4-row');
|
||||
}
|
||||
// 退款中,refund_status > 0 但 order_status != 4,显示绿色
|
||||
else if (refundStatus > 0) {
|
||||
// 给主表格行添加绿色背景
|
||||
var $mainRow = $(".layui-table-main tbody tr").eq(index);
|
||||
$mainRow.addClass('refunding-row');
|
||||
|
||||
// 给固定列的行也添加绿色背景
|
||||
var $fixedLeftRow = $(".layui-table-fixed-l .layui-table-body tbody tr").eq(index);
|
||||
var $fixedRightRow = $(".layui-table-fixed-r .layui-table-body tbody tr").eq(index);
|
||||
$fixedLeftRow.addClass('refunding-row');
|
||||
$fixedRightRow.addClass('refunding-row');
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -835,7 +864,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
//取消订单
|
||||
// 退款订单
|
||||
if(obj.event === 'cancelss'){
|
||||
layer.confirm('确认订单退款吗?', {
|
||||
btn: ['确认','取消'] //按钮
|
||||
@@ -860,7 +889,7 @@
|
||||
}
|
||||
|
||||
|
||||
//取消订单
|
||||
// 删除订单(逻辑删除,del 设置为 1)
|
||||
if(obj.event === 'cancel'){
|
||||
layer.confirm('确定删除订单的数据?', {
|
||||
btn: ['确认','取消'] //按钮
|
||||
@@ -882,6 +911,35 @@
|
||||
});
|
||||
}
|
||||
|
||||
// 恢复订单(del 设置为 0)
|
||||
if(obj.event === 'recover'){
|
||||
layer.confirm('确定恢复该订单吗?', {
|
||||
btn: ['确认','取消'] //按钮
|
||||
}, function(){
|
||||
like.ajax({
|
||||
url: '{:url("order/recover")}?id='+id
|
||||
, type: 'get'
|
||||
, success: function (res) {
|
||||
if (res.code == 1) {
|
||||
layui.layer.msg(res.msg, {
|
||||
offset: '15px'
|
||||
, icon: 1
|
||||
, time: 1000
|
||||
},function () {
|
||||
table.reload('order-lists');
|
||||
});
|
||||
} else {
|
||||
layui.layer.msg(res.msg || '恢复失败', {
|
||||
offset: '15px'
|
||||
, icon: 2
|
||||
, time: 1500
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
//商家备注
|
||||
if(obj.event === 'remarks') {
|
||||
like.ajax({
|
||||
|
||||
@@ -90,7 +90,9 @@
|
||||
<button class="layui-btn layui-btn-sm layuiadmin-btn-ad layui-btn-primary " lay-submit
|
||||
lay-filter="user-clear-search">清空查询
|
||||
</button>
|
||||
|
||||
<button class="layui-btn layui-btn-sm layuiadmin-btn-ad layui-btn-normal" lay-submit
|
||||
lay-filter="export-file">导出
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -161,7 +163,7 @@
|
||||
form.on('submit(export-file)', function(data){
|
||||
var field = data.field;
|
||||
$.ajax({
|
||||
url: '{:url("order/exportFile")}?type=' + listType,
|
||||
url: '{:url("staff/exportWages")}',
|
||||
type: 'get',
|
||||
data: field,
|
||||
dataType: 'json',
|
||||
@@ -171,7 +173,7 @@
|
||||
success: function(res) {
|
||||
table.exportFile(res.data.exportTitle,res.data.exportData, res.data.exportExt, res.data.exportName);
|
||||
},
|
||||
timeout: 15000
|
||||
timeout: 60000
|
||||
});
|
||||
layer.msg('导出中请耐心等待~');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user