Browse Source

货架打印loDop引入

dev-warehouse
kilo 2 years ago
parent
commit
25543799d9
  1. 2
      .env.production
  2. 4
      package.json
  3. 10
      src/api/basic/basicdataPda.js
  4. 68
      src/option/basicdata/basicdataTray.js
  5. 27
      src/option/basicdata/basicdataWarehouse.js
  6. 126
      src/utils/LodopFuncs.js
  7. 11
      src/views/basic/material/basicMaterial.vue
  8. 3
      src/views/basic/pdarecords/basicPdarecords.vue
  9. 2
      src/views/basic/pdarecords/basicPdarecordslist.vue
  10. 2
      src/views/basicdata/brand/basicClient.vue
  11. 4
      src/views/basicdata/warehouse/goodsArea/basicdataGoodsArea.vue
  12. 6
      src/views/basicdata/warehouse/goodsShelf/basicdataGoodsShelf.vue
  13. 4
      src/views/basicdata/warehouse/tray/basicdataTray.vue
  14. 66
      src/views/basicdata/warehouse/warehouse/basicdataWarehouse.vue

2
.env.production

@ -11,3 +11,5 @@ VITE_APP_BASE=/
# 是否在打包时开启压缩,支持 gzip 和 brotli
VITE_BUILD_COMPRESS = gzip

4
package.json

@ -14,17 +14,21 @@
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "^5.1.12",
"animate.css": "^4.1.1",
"avue-plugin-map": "^1.0.1",
"axios": "^0.21.1",
"crypto-js": "^4.1.1",
"dayjs": "^1.10.6",
"element-plus": "^2.3.1",
"html2canvas": "^1.4.1",
"js-base64": "^3.7.4",
"js-cookie": "^3.0.0",
"js-md5": "^0.7.3",
"jspdf": "^2.5.1",
"mockjs": "^1.1.0",
"nprogress": "^0.2.0",
"vite-plugin-mock": "^2.9.4",
"vue": "^3.2.40",
"vue-amap": "^0.5.10",
"vue-i18n": "^9.1.9",
"vue-router": "^4.1.5",
"vuex": "^4.0.2"

10
src/api/basic/basicdataPda.js

@ -2,7 +2,7 @@ import request from '@/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/logpm-basic/pda/list',
url: '/api/logpm-basic/pdf/list',
method: 'get',
params: {
...params,
@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
export const getDetail = (id) => {
return request({
url: '/api/logpm-basic/pda/detail',
url: '/api/logpm-basic/pdf/detail',
method: 'get',
params: {
id
@ -24,7 +24,7 @@ export const getDetail = (id) => {
export const remove = (ids) => {
return request({
url: '/api/logpm-basic/pda/remove',
url: '/api/logpm-basic/pdf/remove',
method: 'post',
params: {
ids,
@ -34,7 +34,7 @@ export const remove = (ids) => {
export const add = (row) => {
return request({
url: '/api/logpm-basic/pda/submit',
url: '/api/logpm-basic/pdf/submit',
method: 'post',
data: row
})
@ -42,7 +42,7 @@ export const add = (row) => {
export const update = (row) => {
return request({
url: '/api/logpm-basic/pda/submit',
url: '/api/logpm-basic/pdf/submit',
method: 'post',
data: row
})

68
src/option/basicdata/basicdataTray.js

@ -120,14 +120,13 @@ export default {
// type: "input",
// },
{
label: "托盘",
prop: "palletCode",
label: "托盘名称",
prop: "palletName",
type: "input",
labelWidth:'100',
},
{
label: "仓库编号",
label: "仓 库",
prop: "warehouseId",
search: true,
type: "select",
@ -139,8 +138,9 @@ export default {
},
placeholder:'请输入仓库关键词',
labelWidth:'100',
addDisplay: true,
editDisplay: false,
viewDisplay: true,
},
{
label: "托盘类型",//;木托 铁托 台面托
@ -175,30 +175,42 @@ export default {
},
{
label: "二维码",
prop: "qrCode",
label: "托盘码",
prop: "palletCode",
type: "input",
labelWidth:'100',
addDisplay: true,
hide: true,
},
{
label: "二维码图片",
prop: "qrCodeUrl",
type: "upload",
dataType: 'string',
listType: 'picture-img',
hide: true,
labelWidth:'100',
span:11,
multiple:false,
width:"200px",
align:'left',
action: '/blade-resource/oss/endpoint/put-file',
propsHttp: {
res: 'data',
url: 'link',
},
addDisplay: false,
editDisplay: false,
viewDisplay: true,
hide: false
},
// {
// label: "二维码",
// prop: "qrCode",
// type: "input",
// labelWidth:'100',
// addDisplay: true,
// hide: true,
// },
// {
// label: "二维码图片",
// prop: "qrCodeUrl",
// type: "upload",
// dataType: 'string',
// listType: 'picture-img',
// hide: true,
// labelWidth:'100',
// span:11,
// multiple:false,
// width:"200px",
// align:'left',
// action: '/blade-resource/oss/endpoint/put-file',
// propsHttp: {
// res: 'data',
// url: 'link',
// },
// },
]
}

27
src/option/basicdata/basicdataWarehouse.js

@ -6,7 +6,9 @@ export default {
searchMenuSpan: 6,
border: true,
index: true,
menu:true,
viewBtn: true,
addBtn:true,
selection: true,
indexLabel:"序号",
indexWidth:'80',
@ -632,30 +634,5 @@ export default {
trigger: "change"
}],
},
{
label: "收款码",
prop: "moneyReceivingCode",
type: "upload",
span:12,
labelWidth:'120',
width:'120',
listType: 'picture-card',
action: '/blade-resource/oss/endpoint/put-file',
limit: 3,
propsHttp: {
res: 'data',
url: 'link',
},
rules:[{
required: true,
message: "请上传收款码",
trigger: "blur"
}],
},
// {
// label: '坐标',
// prop: 'map',
// type: 'map',
// }
]
}

126
src/utils/LodopFuncs.js

@ -0,0 +1,126 @@
var CreatedOKLodop7766=null;
//====判断是否需要安装CLodop云打印服务器:====
export function needCLodop(){
try{
var ua=navigator.userAgent;
if (ua.match(/Windows\sPhone/i) !=null) return true;
if (ua.match(/iPhone|iPod/i) != null) return true;
if (ua.match(/Android/i) != null) return true;
if (ua.match(/Edge\D?\d+/i) != null) return true;
var verTrident=ua.match(/Trident\D?\d+/i);
var verIE=ua.match(/MSIE\D?\d+/i);
var verOPR=ua.match(/OPR\D?\d+/i);
var verFF=ua.match(/Firefox\D?\d+/i);
var x64=ua.match(/x64/i);
if ((verTrident==null)&&(verIE==null)&&(x64!==null))
return true; else
if ( verFF !== null) {
verFF = verFF[0].match(/\d+/);
if ((verFF[0]>= 42)||(x64!==null)) return true;
} else
if ( verOPR !== null) {
verOPR = verOPR[0].match(/\d+/);
if ( verOPR[0] >= 32 ) return true;
} else
if ((verTrident==null)&&(verIE==null)) {
var verChrome=ua.match(/Chrome\D?\d+/i);
if ( verChrome !== null ) {
verChrome = verChrome[0].match(/\d+/);
if (verChrome[0]>=42) return true;
};
};
return false;
} catch(err) {return true;};
};
//====页面引用CLodop云打印必须的JS文件:====
if (needCLodop()) {
var head = document.head || document.getElementsByTagName("head")[0] || document.documentElement;
var oscript = document.createElement("script");
oscript.src ="http://localhost:8000/CLodopfuncs.js?priority=1";
head.insertBefore( oscript,head.firstChild );
//引用双端口(8000和18000)避免其中某个被占用:
oscript = document.createElement("script");
oscript.src ="http://localhost:18000/CLodopfuncs.js?priority=0";
head.insertBefore( oscript,head.firstChild );
};
//====获取LODOP对象的主过程:====
export function getLodop(oOBJECT,oEMBED){
var strHtmInstall="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop32.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
var strHtmUpdate="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop32.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
var strHtm64_Install="<br><font color='#FF00FF'>打印控件未安装!点击这里<a href='install_lodop64.exe' target='_self'>执行安装</a>,安装后请刷新页面或重新进入。</font>";
var strHtm64_Update="<br><font color='#FF00FF'>打印控件需要升级!点击这里<a href='install_lodop64.exe' target='_self'>执行升级</a>,升级后请重新进入。</font>";
var strHtmFireFox="<br><br><font color='#FF00FF'>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>";
var strHtmChrome="<br><br><font color='#FF00FF'>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>";
var strCLodopInstall="<br><font color='#FF00FF'>CLodop云打印服务(localhost本地)未安装启动!点击这里<a href='http://www.c-lodop.com/download/CLodop_Setup_for_Win32NT_https_3.008Extend.zip' target='_self'>执行安装</a>,安装后请刷新页面。</font>";
var strCLodopUpdate="<br><font color='#FF00FF'>CLodop云打印服务需升级!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>,升级后请刷新页面。</font>";
var LODOP;
try{
var isIE = (navigator.userAgent.indexOf('MSIE')>=0) || (navigator.userAgent.indexOf('Trident')>=0);
if (needCLodop()) {
try{ LODOP=getCLodop();} catch(err) {};
if (!LODOP && document.readyState!=="complete") {alert("C-Lodop没准备好,请稍后再试!"); return;};
if (!LODOP) {
// if (isIE) document.write(strCLodopInstall); else
// document.documentElement.innerHTML=strCLodopInstall+document.documentElement.innerHTML;
// return;
} else {
if (CLODOP.CVERSION<"3.0.0.2") {
if (isIE) document.write(strCLodopUpdate); else
document.documentElement.innerHTML=strCLodopUpdate+document.documentElement.innerHTML;
};
if (oEMBED && oEMBED.parentNode) oEMBED.parentNode.removeChild(oEMBED);
if (oOBJECT && oOBJECT.parentNode) oOBJECT.parentNode.removeChild(oOBJECT);
};
} else {
var is64IE = isIE && (navigator.userAgent.indexOf('x64')>=0);
//=====如果页面有Lodop就直接使用,没有则新建:==========
if (oOBJECT!=undefined || oEMBED!=undefined) {
if (isIE) LODOP=oOBJECT; else LODOP=oEMBED;
} else if (CreatedOKLodop7766==null){
LODOP=document.createElement("object");
LODOP.setAttribute("width",0);
LODOP.setAttribute("height",0);
LODOP.setAttribute("style","position:absolute;left:0px;top:-100px;width:0px;height:0px;");
if (isIE) LODOP.setAttribute("classid","clsid:2105C259-1E0C-4534-8141-A753534CB4CA");
else LODOP.setAttribute("type","application/x-print-lodop");
document.documentElement.appendChild(LODOP);
CreatedOKLodop7766=LODOP;
} else LODOP=CreatedOKLodop7766;
//=====Lodop插件未安装时提示下载地址:==========
if ((LODOP==null)||(typeof(LODOP.VERSION)=="undefined")) {
if (navigator.userAgent.indexOf('Chrome')>=0)
document.documentElement.innerHTML=strHtmChrome+document.documentElement.innerHTML;
if (navigator.userAgent.indexOf('Firefox')>=0)
document.documentElement.innerHTML=strHtmFireFox+document.documentElement.innerHTML;
if (is64IE) document.write(strHtm64_Install); else
if (isIE) document.write(strHtmInstall); else
document.documentElement.innerHTML=strHtmInstall+document.documentElement.innerHTML;
return LODOP;
};
};
if (LODOP.VERSION<"6.0") {
if (!needCLodop()){
if (is64IE) document.write(strHtm64_Update); else
if (isIE) document.write(strHtmUpdate); else
document.documentElement.innerHTML=strHtmUpdate+document.documentElement.innerHTML;
};
return LODOP;
};
LODOP.SET_LICENSES("","加密的秘钥","",""); // 加密密钥 防止不兼容 (删除水印)
//===如下空白位置适合调用统一功能(如注册语句、语言选择等):===
//LODOP.SET_LICENSES("北京XXXXX公司","8xxxxxxxxxxxxx5","","");
//===========================================================
return LODOP;
} catch(err) {
// alert("getLodop出错:"+err);
};
};

11
src/views/basic/material/basicMaterial.vue

@ -84,9 +84,6 @@
},
methods: {
rowSave(row, done, loading) {
//
this.$red.from.validata(vali=>{
if (vali){
add(row).then(() => {
this.onLoad(this.page);
this.$message({
@ -98,14 +95,9 @@
loading();
window.console.log(error);
});
}
})
},
rowUpdate(row, index, done, loading) {
//
this.$refs.form.validate(vali=>{
if (vali){
update(row).then(() => {
this.onLoad(this.page);
this.$message({
@ -117,9 +109,6 @@
loading();
console.log(error);
});
}
})
},
rowDel(row) {
this.$confirm("确定将选择数据删除?", {

3
src/views/basic/pdarecords/basicPdarecords.vue

@ -366,6 +366,7 @@ export default {
//
this.onLoad(this.page);
} else {
}
}
},
@ -402,7 +403,7 @@ export default {
handleViewpda() {
// this.$store.dispatch(this.$route.path, this.$route);
this.$router.push({
path: '/basic/pda/basicPda'
path: '/basic/pdf/basicPda'
});
},
init() {

2
src/views/basic/pdarecords/basicPdarecordslist.vue

@ -303,7 +303,7 @@ export default {
handleViewpda() {
// this.$store.dispatch(this.$route.path, this.$route);
this.$router.push({
path: '/basic/pda/basicPda',
path: '/basic/pdf/basicPda',
});
},
init () {

2
src/views/basicdata/brand/basicClient.vue

@ -102,7 +102,7 @@
<!-- <template slot-scope="{item}" v-if="item.prop === 'fileName'">-->
<template #default="{row,$index}" v-if="item.prop === 'fileName'">
<el-link target="_blank" @click="downloadLink(row)">{{row.fileName}}</el-link>
</template>
</template>
<!-- <el-link href="https://element.eleme.io" target="_blank" v-if="item.prop === 'fileName'">{{scope}}</el-link>-->
<template #default="{row,$index}" v-if="item.prop === 'cargoControl'" >
<el-switch

4
src/views/basicdata/warehouse/goodsArea/basicdataGoodsArea.vue

@ -180,10 +180,6 @@
</el-form-item>
</el-col>
</el-row>
</el-form>
<!-- 表单按钮 -->
<template #footer>

6
src/views/basicdata/warehouse/goodsShelf/basicdataGoodsShelf.vue

@ -273,7 +273,7 @@ import option from "@/option/basicdata/basicdataGoodsShelf";
import { mapGetters } from "vuex";
import {getNodeList} from "@/api/basicdata/basicdataGoodsArea";
import { getDictionaryBiz } from '@/api/system/dict';
import { htmlToPdf } from '@/utils/htmlToPdf';
import { getLodop } from '@/utils/LodopFuncs.js'
export default {
data () {
return {
@ -544,7 +544,9 @@ export default {
},
ccc(){
htmlToPdf('pdf-dom', '报告');
let lodop = getLodop();
console.log("logdop>>>>>>>>",lodop);
// htmlToPdf('pdf-dom', '');
},
rowDel (row) {
this.$confirm("确定将选择数据删除?", {

4
src/views/basicdata/warehouse/tray/basicdataTray.vue

@ -84,6 +84,7 @@
},
methods: {
rowSave(row, done, loading) {
console.log(this.form);
add(row).then(() => {
this.onLoad(this.page);
this.$message({
@ -211,7 +212,8 @@
getList(page.currentPage, page.pageSize, values).then(res => {
const data = res.data.data;
this.page.total = data.total;
console.log(">>>>>>",data);
// this.page.total = data.total;
this.data = data.records;
this.loading = false;
this.selectionClear();

66
src/views/basicdata/warehouse/warehouse/basicdataWarehouse.vue

@ -34,10 +34,10 @@
@click="handleExport">
</el-button>
</template>
<template #menu="{size,row,index}">
<!-- <el-button type="primary" text icon="el-icon-view" @click="editDeline(row)">查看地图</el-button>-->
<!-- <el-button type="primary" text @click="showDialog"> 弹窗表单</el-button>-->
</template>
<!-- <template #menu="{size,row,index}">-->
<!--&lt;!&ndash; <el-button type="primary" text icon="el-icon-view" @click="editDeline(row)">查看地图</el-button>&ndash;&gt;-->
<!--&lt;!&ndash; <el-button type="primary" text @click="showDialog"> 弹窗表单</el-button>&ndash;&gt;-->
<!-- </template>-->
</avue-crud>
</basic-container>
</template>
@ -92,17 +92,20 @@
rowSave(row, done, loading) {
console.log(">>>>>>",row);
let a = [];
//
if (!!row.address){
a=row.address;
row.longitude = a[0];
row.latitude = a[1];
row.warehouseAddress = a[2];
}
//
if (this.form.daterange){
let date =this.form.daterange
row.startDate = date[0];
row.endDate = date[1];
}
//
if (!!this.form.addressInfo){
let code = this.form.addressInfo;
if (code.length===1){
@ -116,17 +119,18 @@
row.code = code[2];
}
}
//
if (!!this.form.administrativeAreas){
let manageCode = this.form.administrativeAreas;
if (code.length===1){
row.provinceCode = manageCode[0];
}else if (code.length===2){
row.provinceCode = manageCode[0];
row.cityCode = manageCode[1];
if (manageCode.length===1){
row.manageProvinceCode = manageCode[0];
}else if (manageCode.length===2){
row.manageProvinceCode = manageCode[0];
row.manageCityCode = manageCode[1];
}else {
row.provinceCode = manageCode[0];
row.cityCode = manageCode[1];
row.code = manageCode[2];
row.manageProvinceCode = manageCode[0];
row.manageCityCode = manageCode[1];
row.manageCode = manageCode[2];
}
}
add(row).then(() => {
@ -143,22 +147,26 @@
},
rowUpdate(row, index, done, loading) {
console.log(">>>this.form",this.form);
//
if (this.form.daterange){
let date =this.form.daterange
row.startDate = date[0];
row.endDate = date[1];
}
let a =[];
//
if (!!this.form.address){
a = this.form.address;
row.longitude = a[0];
row.latitude = a[1];
row.warehouseAddress = a[2];
}
//
if (!!this.form.addressInfo){
let code = this.form.addressInfo;
if (code.length===1){
row.provinceCode = code[0];
row.provinceCode = code[0]
;
}else if (code.length===2){
row.provinceCode = code[0];
row.cityCode = code[1];
@ -168,21 +176,21 @@
row.code = code[2];
}
}
//
if (!!this.form.administrativeAreas){
let manageCode = this.form.administrativeAreas;
if (code.length===1){
row.provinceCode = manageCode[0];
}else if (code.length===2){
row.provinceCode = manageCode[0];
row.cityCode = manageCode[1];
if (manageCode.length===1){
row.manageProvinceCode = manageCode[0];
}else if (manageCode.length===2){
row.manageProvinceCode = manageCode[0];
row.manageCityCode = manageCode[1];
}else {
row.provinceCode = manageCode[0];
row.cityCode = manageCode[1];
row.code = manageCode[2];
row.manageProvinceCode = manageCode[0];
row.manageCityCode = manageCode[1];
row.manageCode = manageCode[2];
}
}
console.log(">>>row",row);
update(row).then(() => {
this.onLoad(this.page);
@ -271,19 +279,7 @@
this.form.daterange.push(res.data.data.startDate,res.data.data.endDate)
}
console.log(">>>>>>>>>",this.form);
//
// if (data.manageProvinceCode){
// this.form.administrativeAreas.push(data.manageProvinceCode)
// }
// if (data.manageCityCode){
// this.form.administrativeAreas.push(data.manageCityCode)
// }
// if (data.manageCode){
// this.form.administrativeAreas.push(data.manageCode)
// }
//
console.log('>>>>>>>>>',data);
this.form = res.data.data;
console.log("this.form>>>>>>",this.form);
});

Loading…
Cancel
Save