Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
ypt_mgw_local
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
苏星豪
ypt_mgw_local
Commits
cf0b9e2f
提交
cf0b9e2f
authored
11月 22, 2022
作者:
zhang wei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.页面管理-新闻资讯页面优化
2.酒鬼酒在线绑定替换
上级
c5cbfbe5
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
370 行增加
和
13 行删除
+370
-13
forms.py
company/forms.py
+6
-1
urls.py
datacenter/urls.py
+7
-1
views.py
inventory/views.py
+162
-0
news.html
templates/company/news.html
+13
-8
label_replace_online.html
templates/inventory/label_replace_online.html
+175
-0
left.html
templates/left.html
+7
-3
没有找到文件。
company/forms.py
浏览文件 @
cf0b9e2f
...
...
@@ -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
...
...
datacenter/urls.py
浏览文件 @
cf0b9e2f
...
...
@@ -227,7 +227,13 @@ urlpatterns = [
url
(
r'^inventory/upload/label_replace/$'
,
inventory_views
.
upload_label_replace
),
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
),
...
...
inventory/views.py
浏览文件 @
cf0b9e2f
...
...
@@ -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
=
[]
...
...
templates/company/news.html
浏览文件 @
cf0b9e2f
...
...
@@ -18,16 +18,21 @@
$
(
'#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
)
{
event
.
preventDefault
();
...
...
@@ -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>
...
...
templates/inventory/label_replace_online.html
0 → 100644
浏览文件 @
cf0b9e2f
{% 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
templates/left.html
浏览文件 @
cf0b9e2f
...
...
@@ -551,15 +551,19 @@
{% ifequal user.company.id 16716 %}
<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 %}
{% if request.user.company.is_manufacturing %}
<li><a
class=
"l-a"
href=
"/inventory/html/label_replace/"
>
{% trans '上传标签替换TXT' %}
</a></li>
{% endif %}
{% endif %}
{% if perms.company.sys_admin %}
<li><a
class=
"l-a"
href=
"/inventory/upload/inv/"
>
{% trans '上传发货TXT文件' %}
</a></li>
{% endif %}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论