提交 cf0b9e2f authored 作者: zhang wei's avatar zhang wei

1.页面管理-新闻资讯页面优化

2.酒鬼酒在线绑定替换
上级 c5cbfbe5
......@@ -416,7 +416,12 @@ class News_Form(ModelForm):
model=News
fields = ['news_from','subtitle','desc','poster','content','is_active','remark','pub_date']
def __init__(self, *args, **kwargs):
super(News_Form, self).__init__(*args, **kwargs)
self.fields['subtitle'].widget.attrs['placeholder'] = '必填'
self.fields['content'].widget.attrs['placeholder'] = '必填'
self.fields['desc'].widget.attrs['placeholder'] = '必填'
self.fields['news_from'].widget.attrs['placeholder'] = '必填'
#2021-02-24
......
......@@ -228,6 +228,12 @@ urlpatterns = [
url(r'^inventory/upload/label_replace/$', inventory_views.upload_label_replace),
#2022-09-19 酒鬼酒在线绑定标签替换
# url(r'^test/wx/test/$', inventory_views.upload_label_replace_sh),
# url(r'^test/wx/test/yemian/$', inventory_views.yemian),
url(r'^inventory/upload/label_replace_sh/$', inventory_views.upload_label_replace_sh),
url(r'^inventory/upload/yemian/$', inventory_views.yemian),
url(r'^inventory/app/stock/(?P<company_id>\d+)/$', inventory_views.app_stock),
url(r'^inventory/app/(?P<company_id>\d+)/children/$', inventory_views.app_childcompany),
......
......@@ -5031,6 +5031,168 @@ def upload_label_replace(request):
return JsonResponse(data)
# 酒鬼在线绑定标签替换页面
@login_required
def yemian(request):
return render(request, 'inventory/label_replace_online.html')
# 酒鬼在线绑定标签替换接口
# @login_required
@tj_login_required
@csrf_exempt
def upload_label_replace_sh(request):
data = {'files': [], 'e': ''}
t = datetime.datetime.now().strftime('%Y-%m-%d')
# dt = datetime.datetime.now()
u_id = str(request.user.id)
c = request.user.company
c_name = c.name
# p = settings.MEDIA_ROOT + '/' + c_name + '/txt/label_replace_sh/' + \
# str(dt.year) + str(dt.month).zfill(2) + str(dt.day).zfill(2)
p = settings.MEDIA_ROOT + '/' + c_name + '/txt/label_replace_sh/' + t
if not os.path.exists(p):
os.makedirs(p)
c_id = str(c.id)
files = request.FILES.getlist('files')
type = request.POST.get('type')
# print(type)
er = []
cur = connection.cursor()
cur.execute("create temp table tmp(code0 character varying(20),code character varying(20))")
# 替换要改成一行行读取
for f in files:
fn = f.name
with open(p + '/' + fn, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
f.seek(0)
cur.execute("truncate table tmp")
cur.copy_from(f, 'tmp', sep=',', null='') # 写入临时表
# 写入BATCH
s = "insert into label.lbl_replace_batch(user_id,company_id,txt_file) values " + \
"(" + u_id + "," + c_id + ",'" + fn + "') returning id"
cur.execute(s)
id = str(cur.fetchone()[0])
# print(id)
if type == 'qh':
# 判断新标签是否存在redis中
rd = redis.StrictRedis(host='localhost', port=16379, db=10, password='tjredis139', decode_responses=True)
s = "select * from tmp"
cur.execute(s)
rs = cur.fetchall()
for r in rs:
label = rd.hget("bottle_" + str(r[1]), 'label')
if label:
a = (decrypt_11h(label))
# print(a)
# 将替换前的标签数据备份到标里
s = "insert into temp.z_bottlecap_binding_replace(label,code,box_code,label_pk_id,bottle,company_id,batch_id) " + \
f"select label,code,box_code,label_pk_id,bottle,company_id,'{id}' from temp.z_bottlecap_binding " + \
f"where bottle='{r[0]}'"
cur.execute(s)
s = f"""
update temp.z_bottlecap_binding set label='{label}',
code='{a}',bottle='{r[1]}' where bottle='{r[0]}'
"""
cur.execute(s)
else:
s = f"""select bottle from temp.z_bottlecap_binding where bottle='{r[1]}'
"""
cur.execute(s)
rrs = cur.fetchone()
# print(rrs)
if rrs:
s = f"""
INSERT INTO temp.z_bottlecap_binding_replace(label,code,box_code,label_pk_id,bottle,company_id,batch_id)
select label,code,box_code,label_pk_id,bottle,company_id,'{id}' from temp.z_bottlecap_binding
where bottle='{r[0]}'
"""
cur.execute(s)
s = f"""
update temp.z_bottlecap_binding set label=(select label from temp.z_bottlecap_binding where '{r[1]}'=bottle),
code=(select code from temp.z_bottlecap_binding where '{r[1]}'=bottle),
bottle='{r[1]}' where bottle='{r[0]}'
"""
cur.execute(s)
else:
s = f"""
INSERT INTO temp.z_bottlecap_binding_replace(bottle,err,batch_id) values ('{r[1]}','标签错误','{id}')
"""
# print(s)
cur.execute(s)
s = "select count(*)," + \
"(select count(*) from temp.z_bottlecap_binding_replace where err is null and batch_id=" + id + ") from tmp"
cur.execute(s)
r = cur.fetchone()
tt = r[0]
ok = r[1]
s = ''
s2 = f"""
select bottle from temp.z_bottlecap_binding_replace where batch_id='{id}' and err='标签错误'
"""
cur.execute(s2)
error = cur.fetchall()
er.append(error)
cur.execute(
"update label.lbl_replace_batch set cnt_tt=" + str(tt) + ",cnt_ok=" + str(
ok) + s + " where id=" + id)
data['files'].append({'txt_name': fn, 'total': tt, 'ok': ok, 'err': er})
# 只替换瓶盖
if type == 'pg':
s = "select * from tmp"
cur.execute(s)
rs = cur.fetchall()
for r in rs:
s = f"""select bottle from temp.z_bottlecap_binding where bottle='{r[1]}'
"""
cur.execute(s)
rrs = cur.fetchone()
# print(rrs)
if rrs:
a = (decrypt_11h(r[0]))
s = f"""
INSERT INTO temp.z_bottlecap_binding_replace(label,code,box_code,label_pk_id,bottle,company_id,batch_id)
select label,code,box_code,label_pk_id,bottle,company_id,'{id}' from temp.z_bottlecap_binding where '{r[1]}'=bottle
"""
cur.execute(s)
s = f"""
update temp.z_bottlecap_binding set label='{r[0]}',code='{a}' where bottle='{r[1]}'
"""
cur.execute(s)
else:
s = f"""
INSERT INTO temp.z_bottlecap_binding_replace(bottle,err,batch_id) values ('{r[1]}','标签错误','{id}')
"""
# print(s)
cur.execute(s)
s = "select count(*)," + \
"(select count(*) from temp.z_bottlecap_binding_replace where err is null and batch_id=" + id + ") from tmp"
cur.execute(s)
r = cur.fetchone()
tt = r[0]
ok = r[1]
s = ''
s2 = f"""
select bottle from temp.z_bottlecap_binding_replace where batch_id='{id}' and err='标签错误'
"""
cur.execute(s2)
error = cur.fetchall()
er.append(error)
cur.execute(
"update label.lbl_replace_batch set cnt_tt=" + str(tt) + ",cnt_ok=" + str(
ok) + s + " where id=" + id)
data['files'].append({'txt_name': fn, 'total': tt, 'ok': ok, 'err': er})
return JsonResponse(data)
def list_unhandled_batch(request, company_id):
data = []
......
......@@ -18,15 +18,20 @@
$('#image-clear_id,#id_image').removeClass('form-control');
$('.btn-save').click(function () {
{#$('.btn-save').click(function () {#}
{# let editorData = editor.txt.html();#}
{# $("#id_content").val(editorData);#}
{# $.SubmitForm('#obj_form form', '{{request.path}}',function (){#}
{# $('.alert').fadeIn();#}
{# setTimeout(function (){#}
{# $('.alert').fadeOut();#}
{# },3000)#}
{# });#}
{# });#}
$('.btn-save').click(function(){
let editorData = editor.txt.html();
$("#id_content").val(editorData);
$.SubmitForm('#obj_form form', '{{request.path}}',function (){
$('.alert').fadeIn();
setTimeout(function (){
$('.alert').fadeOut();
},3000)
});
$.SubmitForm('#obj_form form','{{request.path}}');
});
$('#obj_form .product_photo a').click(function (event) {
......@@ -61,7 +66,7 @@
z-index: 1000002;
}
</style>
{{ block.super }}
<div class="form-group ">
<label class="col-sm-2 control-label ">标题</label>
<div class="col-sm-8">{{ form.subtitle }}</div>
......
{% load i18n %}
<div class="subtitle">
<ol class="breadcrumb">
<li>{% trans "物流工具" %}</li>
<li>{% trans "在线采集标签替换" %}</li>
</ol>
</div>
<script type="text/javascript">
$(document).ready(function () {
$('input[name="info"]').change(function () {
info = $('input[name="info"]:checked').attr('value');
if (info == 'custom') {
$('#fahuo_info').show(400);
} else {
$('#fahuo_info').hide(400);
}
});
var uploadType = '';
$('#upload').on('click',function () {
var Sel = document.getElementById("select");
var index = Sel.selectedIndex;
uploadType = Sel.options[index].value;
// console.log(val);
if (uploadType == '') {
alert("请选择替换类型");
}
else {
document.getElementById('xFile').click();
}
})
$('#xFile').change(function () {
var formData = new FormData();
formData.append("type", uploadType);
$('#info table').html('');
$('#info .info').html('');
$('#errinfo_null_rec').html('');
$('#errinfo_delivered_rec').html('');
$('#errinfo_different_rec').html('');
console
var xhr = new XMLHttpRequest();
var file = document.getElementById('xFile').files;
var formDat;
var cnt = 0;
for (i = 0; i < file.length; i++) {
var fn = file[i].name.substr(0, 2).toUpperCase();
formData.append("files", file[i]);
cnt = cnt + 1;
}
if (cnt == 0) {
//bootbox.alert("{% trans '没有可上传的文件!' %}", function() {});
toastr.error(
"没有可上传的文件!",
"操作错误:",
{ timeOut: 800, positionClass: "toast-center-center" }
);
return;
}
$('#msg').remove();
$('.btn-upload').addClass('disabled');
$('#ajax_loading2').show();
var si = '';
xhr.open('POST', '/inventory/upload/label_replace_sh/');
xhr.setRequestHeader("X-CSRFToken", '{{ csrf_token }}');
xhr.send(formData);
xhr.onreadystatechange = (function (_xhr) {
return function () {
if (_xhr.readyState == 4) {
if (_xhr.status == 200) {
console.log('200');
var d = eval('(' + _xhr.responseText + ')');
if (d.e != '') {
$('.btn-upload').removeClass('disabled');
toastr.error(
d.e,
"上传失败:",
{ timeOut: 800, positionClass: "toast-center-center" }
);
//bootbox.alert(d.e, function() {});
return;
};
$('#info table').prepend(
'<tr>' +
'<th style="width:30px">{% trans '上传的TXT文件名' %}</th>' +
'<th style="width:15px">{% trans '总行数' %}</th>' +
'<th style="width:15px">{% trans '写入替换记录数' %}</th>' +
'<th style="width:15px">{% trans '错误标签' %}</th>' +
'</tr>'
);
for (var n in d.files) {
$('#info table').append(
'<tr>' +
'<td>' + d.files[n].txt_name + '</td>' +
'<td>' + d.files[n].total + '</td>' +
'<td>' + d.files[n].ok + '</td>' +
'<td>' + d.files[n].err + '</td>' +
'</tr>'
);
};
var html = '';
$('#info .info').html(html);
$('.btn-upload').removeClass('disabled');
$('#ajax_loading2').hide();
}
else {
$('.btn-upload').removeClass('disabled');
$('#ajax_loading2').hide();
//bootbox.alert("{% trans '通讯错误!' %}", function() {});
toastr.error(
"通讯错误",
"上传失败:",
{ timeOut: 800, positionClass: "toast-center-center" }
);
return;
}
}
}
})(xhr);
xhr.timeout = 300000;
xhr.ontimeout = function (event) {
$('#ajax_loading2').hide();
//bootbox.alert("{% trans '请求超时!' %}", function() {});
toastr.error(
"请求超时!",
"操作失败:",
{ timeOut: 800, positionClass: "toast-center-center" }
);
}
});
});
</script>
<div>
{% trans "点击右边按钮,选择标签替换TXT文件上传服务器:" %}
<select id="select" style="width : 150px;">
<option value="">请选择替换类型</option>
<option value="pg">瓶盖替换</option>
<option value="qh">标签替换(全换)</option>
</select>
<label class="btn btn-primary btn-upload btn-sm" id="upload">{% trans "上传文件" %}</label>
<div style='font-style:italic;'>TXT文件格式:每行两列,先是旧标签号码后是新标签号码,中间用英文逗号分隔</div>
<form>
<input type="file" id="xFile" accept="text/plain" multiple="multiple"
style="position:absolute;clip:rect(0 0 0 0);">
</form>
<div id='info'>
<div id='tb_div' class='table-responsive'>
<table class='table table-bordered table-striped table-condensed table-hover'></table>
</div>
<div class='info'></div>
</div>
<div id='errinfo_null_rec'></div>
<div id='errinfo_delivered_rec'></div>
<div id='errinfo_different_rec'></div>
<div id='msg'></div>
</div>
\ No newline at end of file
......@@ -552,6 +552,10 @@
<li><a class="l-a" href="/inventory/ticketinfo/">{% trans '入库启票' %}</a></li>
{% endifequal %}
{% ifequal user.company.id 16687 %}
<li><a class="l-a" href="/inventory/upload/yemian/">{% trans '在线绑定标签替换TXT' %}</a></li>
{% endifequal %}
{% if perms.company.sys_admin %}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论