You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
468 lines
24 KiB
468 lines
24 KiB
{extend name="public/layout" /}
|
|
{block name="header"}
|
|
{/block}
|
|
{block name="body"}
|
|
<div class="layui-card">
|
|
<div class="layui-card-header layui-card-header-auto layui-form">
|
|
<div id="task-model-add" class="layui-form">
|
|
<div class="layui-form-item active">
|
|
<label class="layui-form-label" style="width: 140px;">任务类型</label>
|
|
<div class="layui-input-block">
|
|
<input type="radio" lay-filter="task_type" name="task_type" value="1" title="导入处理" checked>
|
|
<input type="radio" lay-filter="task_type" name="task_type" value="2" title="导出处理">
|
|
<input type="radio" lay-filter="task_type" name="task_type" value="3" title="重复电话处理">
|
|
<input type="radio" lay-filter="task_type" name="task_type" value="4" title="重复车架处理">
|
|
<input type="radio" lay-filter="task_type" name="task_type" value="5" title="更新数据">
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item task-param active" id="task-import">
|
|
<label class="layui-form-label" style="width: 140px;">上传文件</label>
|
|
<div class="layui-input-inline" style="width: 405px;">
|
|
<input type="text" name="original_filename" id="original_filename" class="layui-input" readonly>
|
|
<input type="hidden" name="filename" id="filename" autocomplete="off" class="layui-input">
|
|
</div>
|
|
<div class="layui-input-inline" style="width: 200px;">
|
|
<button type="button" class="layui-btn" id="upload">
|
|
<i class="layui-icon"></i>上传CSV文件
|
|
</button>
|
|
</div>
|
|
<a href="/static/tpl.xlsx" download="车辆信息导入模板.xlsx" style="color: #009688;">[下载车辆信息导入模板]</a>
|
|
<div class="layui-inline task-param" id="export-queue-name" style="display: none;">
|
|
<label class="layui-form-label" style="width: 80px;">导出名</label>
|
|
<div class="layui-input-inline" style="width: 375px;">
|
|
<input type="text" name="queue" class="layui-input">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="task-param" id="task-export" style="display: none;">
|
|
<div class="layui-form-item">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">初登日期</label>
|
|
<div class="layui-input-inline" style="width: 100px;">
|
|
<input type="text" name="export_date1" class="layui-input export-date1">
|
|
</div>
|
|
<div class="layui-form-mid">-</div>
|
|
<div class="layui-input-inline" style="width: 100px;">
|
|
<input type="text" name="export_date2" class="layui-input export-date2">
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">保险日期</label>
|
|
<div class="layui-input-inline">
|
|
<input type="text" name="insurer_month1" class="layui-input" style="display: inline-block; width: 60px;"> 月
|
|
<input type="text" name="insurer_day1" class="layui-input" style="display: inline-block; width: 60px;"> 日
|
|
</div>
|
|
<div class="layui-form-mid">-</div>
|
|
<div class="layui-input-inline">
|
|
<input type="text" name="insurer_month2" class="layui-input" style="display: inline-block; width: 60px;"> 月
|
|
<input type="text" name="insurer_day2" class="layui-input" style="display: inline-block; width: 60px;"> 日
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">标签</label>
|
|
<div class="layui-input-inline" style="width: 200px;">
|
|
<input type="text" name="tag" class="layui-input">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">导出类型</label>
|
|
<div class="layui-input-inline" style="width: 520px;">
|
|
<input type="radio" lay-filter="export_type" name="export_type" value="bhx" class="layui-input" title="清洗" checked>
|
|
<input type="radio" lay-filter="export_type" name="export_type" value="failed" class="layui-input" title="清洗失败">
|
|
<input type="radio" lay-filter="export_type" name="export_type" value="bmc" class="layui-input" title="清洗成功至上传">
|
|
<input type="radio" lay-filter="export_type" name="export_type" value="success_bmc" class="layui-input" title="清洗成功再次清洗">
|
|
<input type="radio" lay-filter="export_type" name="export_type" value="repeat_delete" class="layui-input" title="重复删除车架">
|
|
<!-- <input type="radio" lay-filter="export_type" name="export_type" value="failed_bmc" class="layui-input" title="导出清洗失败至上传">
|
|
<input type="radio" lay-filter="export_type" name="export_type" value="none_bmc" class="layui-input" title="导出未处理至上传">
|
|
-->
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline" id="update_no" style="display: none;">
|
|
<label class="layui-form-label" style="width: 60px;">更新序号</label>
|
|
<div class="layui-input-inline" style="width: 210px;">
|
|
<input type="text" name="update_no" class="layui-input" value="">
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline" id="sub_export_type">
|
|
<label class="layui-form-label" style="width: 60px;padding: 15px 15px 0 0;">导出字段</label>
|
|
<div class="layui-input-inline" style="width: 185px;">
|
|
<input type="checkbox" name="export_field[]" lay-filter="export_field" value="car_no" title="车牌">
|
|
<input type="checkbox" name="export_field[]" lay-filter="export_field" value="car_frame_no" title="车架" checked>
|
|
</div>
|
|
<label class="layui-form-label" style="width: 60px;padding: 15px 15px 0 0;">保险日期</label>
|
|
<div class="layui-inline">
|
|
<div class="layui-input-inline" style="width:auto;">
|
|
<input type="text" name="insurer_date1" class="layui-input export-date1" style="display: inline-block; width: 90px;">
|
|
</div>
|
|
<div class="layui-form-mid">-</div>
|
|
<div class="layui-input-inline" style="width:auto;">
|
|
<input type="text" name="insurer_date2" class="layui-input export-date2" style="display: inline-block; width: 90px;">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">导出数量</label>
|
|
<div class="layui-input-inline">
|
|
<input type="text" name="export_limit" class="layui-input">
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 100px;">导出文件名</label>
|
|
<div class="layui-input-inline" style="width: 450px;">
|
|
<input type="text" name="queue" id="queue-name" class="layui-input" style="display:inline-block; width: 325px;">
|
|
<button type="button" class="layui-btn" onclick="getExportName(event)">生成文件名</button>
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label">导出总计:</label>
|
|
<div class="layui-input-inline" style="width: 120px;">
|
|
<input type="text" name="num" id="count" class="layui-input" disabled>
|
|
</div>
|
|
<div class="layui-input-inline">
|
|
<button type="button" class="layui-btn" onclick="export_num(event)">获取总数</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">新车购置价</label>
|
|
<div class="layui-input-inline" style="width: auto;">
|
|
<input type="text" name="price1" class="layui-input" style="display: inline-block; width: 60px;"> 万
|
|
</div>
|
|
<div class="layui-form-mid">-</div>
|
|
<div class="layui-input-inline" style="width: auto;">
|
|
<input type="text" name="price2" class="layui-input" style="display: inline-block; width: 60px;"> 万
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">空电话检测</label>
|
|
<div class="layui-input-inline" style="width: 80px;">
|
|
<input type="checkbox" name="empty_phone_check" lay-skin="switch" lay-filter="empty_phone_check" value="yes" lay-text="开启|关闭" checked>
|
|
</div>
|
|
</div>
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">是否EXCEL</label>
|
|
<div class="layui-input-inline" style="width: 80px;">
|
|
<input type="checkbox" name="is_excel" lay-skin="switch" value="yes" lay-text="开启|关闭" checked>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="task-param" id="task-peer-phone" style="display: none;">
|
|
<div class="layui-form-item">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">个人电话重复次数</label>
|
|
<div class="layui-input-inline">
|
|
<input type="number" name="peer_phone_number" required lay-verify="required" class="layui-input">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="task-param" id="task-repeat_frame" style="display: none;">
|
|
<div class="layui-form-item">
|
|
<div class="layui-inline">
|
|
<label class="layui-form-label" style="width: 140px;">初登日期</label>
|
|
<div class="layui-input-inline" style="width: 200px;">
|
|
<input type="text" name="export_date1" class="layui-input export-date1">
|
|
</div>
|
|
<div class="layui-form-mid">-</div>
|
|
<div class="layui-input-inline" style="width: 200px;">
|
|
<input type="text" name="export_date2" class="layui-input export-date2">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-form-item" style="margin:24px 0 -15px;">
|
|
<div class="layui-inline" style="float: left;position: relative;z-index: 999;">
|
|
<label class="layui-form-label" style="width: 65px;"></label>
|
|
<div class="layui-input-inline" style="width: 405px">
|
|
<input type="text" name="queue" id="queue" class="layui-input">
|
|
</div>
|
|
<div class="layui-input-inline" style="">
|
|
<button type="button" class="layui-btn" onclick="search(event)">查询</button>
|
|
</div>
|
|
</div>
|
|
<div class="layui-input-block layui-text-right">
|
|
<button type="button" class="layui-btn" onclick="task_add()">立即提交</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="layui-card-body layui-form">
|
|
<table class="layui-hide" id="task-info" lay-filter="task-info"></table>
|
|
</div>
|
|
</div>
|
|
{/block}
|
|
{block name="script"}
|
|
<!--Core Javascript -->
|
|
<script type="text/html" id="table-bar">
|
|
{{#
|
|
var payload = JSON.parse(d.payload);
|
|
var export_date1 = payload['data']['params']['export_date1'];
|
|
var export_date2 = payload['data']['params']['export_date2'];
|
|
var ext = d.remark.split('.')[1];
|
|
}}
|
|
{{# if(d.type == 2){ }}
|
|
{{# if(payload['data']['params']['export_limit'] > 0){ }}
|
|
{{#
|
|
var arrParam = [];
|
|
var exportUrlParam = '';
|
|
exportUrlParam += 'export_date1=' + export_date1 + '&';
|
|
exportUrlParam += 'export_date2=' + export_date2 + '&';
|
|
exportUrlParam += 'insurer_month1=' + payload['data']['params']['insurer_month1'] + '&';
|
|
exportUrlParam += 'insurer_day1=' + payload['data']['params']['insurer_day1'] + '&';
|
|
exportUrlParam += 'insurer_month2=' + payload['data']['params']['insurer_month2'] + '&';
|
|
exportUrlParam += 'insurer_day2=' + payload['data']['params']['insurer_day2'] + '&';
|
|
exportUrlParam += 'is_export_' + payload['data']['params']['export_type'] + '=' + d.id;
|
|
}}
|
|
<a class="layui-btn layui-btn-xs" href="/index/index.html?{{exportUrlParam}}">查看</a>
|
|
{{# } }}
|
|
{{# if(d.download_times > 0){ }}
|
|
<buton class="layui-btn layui-btn-xs" onclick="layer.confirm('已下载过,是否继续',function(index){layer.close(index);window.open('{:url(\'task/download\')}?id={{d.id}}');window.location.reload();});">下载文件</buton>
|
|
{{# }else { }}
|
|
<buton class="layui-btn layui-btn-xs" onclick="window.open('{:url(\'task/download\')}?id={{d.id}}');window.location.reload();">下载文件</buton>
|
|
{{# } }}
|
|
{{# }else if(d.type == 3){ }}
|
|
<a class="layui-btn layui-btn-xs" href="/index/index.html?is_check_peer_phone={{d.id}}">查看</a>
|
|
{{# if(d.info_num > 0){ }}
|
|
<button type="button" class="layui-btn layui-btn-xs" onclick="task_create(2,{{d.id}})">导出</button>
|
|
<button type="button" class="layui-btn layui-btn-xs layui-btn-danger" onclick="task_create(6,{{d.id}})">清除重复</button>
|
|
{{# } }}
|
|
{{# }else if(d.type == 4){ }}
|
|
<!-- <a class="layui-btn layui-btn-xs" href="/index/index.html?is_check_repeat_frame={{d.id}}">查看</a>-->
|
|
{{# if(d.info_num > 0){ }}
|
|
<button type="button" class="layui-btn layui-btn-xs" onclick="task_create(2,{{d.id}})">导出</button>
|
|
<button type="button" class="layui-btn layui-btn-xs layui-btn-danger" onclick="task_create(7,{{d.id}})">删除重复</button>
|
|
{{# } }}
|
|
{{# }else if(d.type == 5){ }}
|
|
<a class="layui-btn layui-btn-xs" href="/index/index.html?is_update_bhx={{d.id}}">查看</a>
|
|
{{# }else if(d.type == 7){ }}
|
|
<a class="layui-btn layui-btn-xs" href="/repeat/index.html?is_delete_frame={{d.id}}">查看</a>
|
|
{{# }else if(d.type == 1){ }}
|
|
<a class="layui-btn layui-btn-xs" href="/index/index.html?source={{d.id}}">查看</a>
|
|
{{# } }}
|
|
</script>
|
|
<script type="text/html" id="process-tpl">
|
|
<div class="layui-progress layui-progress-big" lay-filter="process-{{d.id}}" lay-showPercent="yes">
|
|
<div class="layui-progress-bar layui-bg-green" lay-percent="{{d.process}}%"></div>
|
|
</div>
|
|
</script>
|
|
<script>
|
|
layui.form.on('radio(task_type)', function(data){
|
|
$('#task-model-add').find('.task-param').removeClass('active').hide();
|
|
switch (+data.value) {
|
|
case 1:
|
|
$('#task-import').addClass('active').show();
|
|
break;
|
|
case 2:
|
|
$('#task-export').addClass('active').show();
|
|
break;
|
|
case 3:
|
|
$('#task-peer-phone').addClass('active').show();
|
|
break;
|
|
case 4:
|
|
// $('#task-repeat_frame').addClass('active').show();
|
|
break;
|
|
case 5:
|
|
$('#task-import').addClass('active').show();
|
|
$('#export-queue-name').addClass('active').show();
|
|
break;
|
|
}
|
|
});
|
|
|
|
layui.form.on('radio(export_type)', function(data){
|
|
if(['bmc','failed_bmc','none_bmc'].indexOf(data.value) != -1){
|
|
$('#sub_export_type').hide();
|
|
$('#sub_export_type').find(':input').attr('disabled',true);
|
|
}else {
|
|
$('#sub_export_type').show();
|
|
$('#sub_export_type').find(':input').removeAttr('disabled');
|
|
}
|
|
|
|
if(data.value == 'bmc'){
|
|
$('#update_no').show();
|
|
$('#update_no').find(':input').removeAttr('disabled');
|
|
} else {
|
|
$('#update_no').hide();
|
|
$('#update_no').find(':input').attr('disabled',true);
|
|
}
|
|
});
|
|
|
|
var tableIns = layui.table.render({
|
|
id: 'taskInfo',
|
|
elem: '#task-info',
|
|
title:'车辆信息',
|
|
url: '{:url("/task/taskInfo/")}', //数据接口
|
|
page: true, //开启分页
|
|
limit: 20,
|
|
loading: true,
|
|
cols: [[ //表头
|
|
// {type: 'checkbox', fixed: 'left'},
|
|
{field: 'id', title: '序号', fixed: 'left', width: 100},
|
|
{field: 'type_txt', title: '任务名称', sort: true, width: 400},
|
|
{field: 'process', title: '处理进度', templet: '#process-tpl'},
|
|
{field: 'remark', title: '任务结果', sort: true},
|
|
{field: 'create_timestamp', title: '创建时间', sort: true, width: 200},
|
|
{field: 'status', title: '任务状态', sort: true, width: 100},
|
|
{field: 'download_times', title: '下载次数', sort: true, width: 100},
|
|
{fixed: 'right', width: 240, align:'center', toolbar: '#table-bar'}
|
|
]],
|
|
done: function (res, curr, count) {
|
|
layui.element.render();
|
|
var timer = setInterval(function(){
|
|
$.get('{:url("task/process")}', function (ret) {
|
|
if(!ret.data || ret.data.length == 0 ){
|
|
clearInterval(timer);
|
|
delete timer;
|
|
}else {
|
|
$.each(ret.data,function(i,d){
|
|
d.process = d.process > 100 ? 100 : d.process;
|
|
layui.element.progress('process-' + d.id, +d.process + '%');
|
|
if(d.process >= 100){
|
|
layui.table.reload('taskInfo');
|
|
}
|
|
})
|
|
}
|
|
});
|
|
},3000)
|
|
}
|
|
});
|
|
|
|
//监听行工具事件
|
|
layui.table.on('tool(task-info)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
|
|
var data = obj.data, //获得当前行数据
|
|
layEvent = obj.event; //获得 lay-event 对应的值
|
|
if(layEvent === 'detail'){
|
|
layer.confirm('确定要清楚此项手机吗', function(index){
|
|
layer.close(index);
|
|
index = layer.load();
|
|
$.post('{:url("index/clearPhone")}', {id: data.id}, function (res) {
|
|
layer.close(index);
|
|
layer.msg(res.msg,function () {
|
|
layui.table.reload('taskInfo');
|
|
});
|
|
})
|
|
});
|
|
}
|
|
});
|
|
|
|
layui.upload.render({
|
|
elem: '#upload', //绑定元素
|
|
accept: 'file',
|
|
url: '{:url("task/upload")}', //上传接口
|
|
data: {
|
|
task_type: function () {
|
|
return $("input[name='task_type']:checked").val();
|
|
}
|
|
},
|
|
done: function (res) {
|
|
if (res.code == -1) {
|
|
$('#lock-screen').css('display', 'flex');
|
|
} else if (res.code == 0) {
|
|
layer.alert(res.msg);
|
|
} else if (res.code == 1) {
|
|
$('#original_filename').val(res.original_filename);
|
|
$('#filename').val(res.filename);
|
|
return true;
|
|
}
|
|
},
|
|
error: function (res) {
|
|
//请求异常回调
|
|
layer.alert(res.msg);
|
|
}
|
|
});
|
|
|
|
$(function(){
|
|
$('.export-date1,.export-date2').each(function (i, d) {
|
|
layui.laydate.render({
|
|
elem: d,
|
|
});
|
|
});
|
|
});
|
|
|
|
function export_num(){
|
|
if($('[name="export_date1"]').val() == '' && $('[name="export_date1"]').val() == ''){
|
|
layer.msg('请先填写初登日期');
|
|
return false;
|
|
}
|
|
$.post('{:url("task/exportNum")}', $('#task-export').find(':input').serialize(), function (ret) {
|
|
layer.msg(ret['msg']);
|
|
$('#count').val(ret.data);
|
|
});
|
|
}
|
|
|
|
function task_create(type,id = 0){
|
|
$.post('{:url("task/save")}', {task_type: type,source_id: id}, function (ret) {
|
|
layer.msg(ret['msg'],function(){
|
|
layui.table.reload('taskInfo');
|
|
});
|
|
});
|
|
}
|
|
|
|
function task_add() {
|
|
var task_type = $('[name="task_type"]:checked').val();
|
|
if (task_type == 5 || task_type == 2 || task_type == 1) {
|
|
var name = task_type == 2 ? $('#queue-name').val() : $('#original_filename').val();
|
|
var type = task_type == 2 ? 'export' : 'update';
|
|
$.get('{:url("task/checkIsExistName")}?name=' + name + '&type=' + type, function (ret) {
|
|
if (ret.code == 1) {
|
|
layer.confirm(ret.msg, function (index) {
|
|
layer.close(index);
|
|
submitForm();
|
|
});
|
|
}else if (ret.code == 0) {
|
|
layer.alert(ret.msg);
|
|
}else if (ret.code == 2) {
|
|
layer.confirm('确认并继续', function (index) {
|
|
layer.close(index);
|
|
submitForm();
|
|
});
|
|
}
|
|
});
|
|
}else {
|
|
layer.confirm('确认并继续', function (index) {
|
|
layer.close(index);
|
|
submitForm();
|
|
});
|
|
}
|
|
}
|
|
|
|
function submitForm(){
|
|
$.post('{:url("task/save")}', $('#task-model-add').find('.active :input').serialize(), function (ret) {
|
|
if(ret.code == 0){
|
|
$('#original_filename').val('');
|
|
$('#filename').val('');
|
|
layer.alert(ret.msg);
|
|
}else {
|
|
layer.msg(ret['msg'],function(){
|
|
layui.table.reload('taskInfo');
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function search(event){
|
|
tableIns.reload({
|
|
page: {
|
|
curr: 1 //重新从第 1 页开始
|
|
},
|
|
where: {queue: $('#queue').val()},
|
|
}, 'data');
|
|
}
|
|
|
|
function getExportName(event) {
|
|
var target = event.target;
|
|
$.get('{:url("task/exportName")}', $('#task-export').find(':input').serialize(), function (ret) {
|
|
if(ret.code == 0){
|
|
layer.alert(ret.msg);
|
|
}else {
|
|
$(target).prev('input[name="queue"]').val(ret.name);
|
|
}
|
|
});
|
|
}
|
|
</script>
|
|
{/block}
|
|
|