当前位置: 首页 > news >正文

php做网站基本流程百度信息流平台

php做网站基本流程,百度信息流平台,河北省住宅和城乡建设厅网站,网站建设公司该怎么销售前言:临时性需求没怎么接触过前端,代码实现有问题及优化点希望大佬可以留言告知一下 开发工具:VS CODE 界面开发:Vue3TypeScriptElementPlus 打印组件:Print-JS 前端打印入口图: 标签页面: …

前言:临时性需求没怎么接触过前端,代码实现有问题及优化点希望大佬可以留言告知一下

开发工具:VS CODE

界面开发:Vue3+TypeScript+ElementPlus

打印组件:Print-JS

前端打印入口图:

标签页面:

打印界面:

实现功能:前端点击"打印标签"弹出打印界面进行打印作业

实现过程:主界面点击"打印标签"调用el-dialog弹窗(预览和直接打印都居于弹窗实现)

  标签模板代码:

<template><div class="LabelPrint-List"><el-dialog v-model="state.isShowDialog" draggable :close-on-click-modal="false" width="50%" ><template #header><div style="color: #fff"><el-icon size="16" style="margin-right: 3px; display: inline; vertical-align: middle"> <ele-Edit/> </el-icon><span>标签打印界面</span></div></template><el-row :gutter="10"><el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb10"><div v-for="item in state.Datas"><el-card class="box-card" style="width:100mm; height: 90mm;display: block;" ><div :id='item.id?.toString()'><!-- print-js --><div class="labelHeadBody"><div class="labelHeadBodyLeftHead"><img class="labelHeadBodyLeftHeadimage"  src="/image/点金log.png" fit="fill" /></div><div class="labelHeadBodyRightHead"><table class="tableHead"><tr><td class="labelHeadBodyRightHeadTd">某某有限公司</td></tr><tr><td class="labelHeadBodyRightHeadTd">物料标识卡</td></tr></table></div></div><div class="labelBody"><table><tbody><tr><td class="lableBodytdleft">P/N:</td><td class="lableBodytdright">{{ item.produceNo }}</td></tr><tr><td class="lableBodytdleft">数量:</td><td class="lableBodytdright">{{ item.quantity }}</td></tr><tr><td class="lableBodytdleft">规格:</td><td class="lableBodytdright lableBodytdrightfont">{{ item.platingSpecs }}</td></tr><tr><td class="lableBodytdleft">供应商:</td><td class="lableBodytdright">东莞点金</td></tr><tr><td class="lableBodytdleft">生产日期:</td><td class="lableBodytdright">{{moment(String(item.createTime)).format('YYYY/MM/DD')}}</td></tr><tr><td class="lableBodytdleft">批次单号:</td><td class="lableBodytdright">{{ item.lot }}</td></tr><tr><td class="lableBodytdleft">单重:</td><td class="lableBodytdright">{{ item.singleWeight }}</td></tr><tr><td class="lableBodytdleft">总重:</td><td class="lableBodytdright">{{ item.sumWeight }}</td></tr><tr><td class="lableBodytdleft">标识人:</td><td class="lableBodytdright"></td></tr></tbody></table></div></div></el-card></div></el-col></el-row><template #footer><span class="dialog-footer"><el-button @click="cancel">取 消</el-button><el-button style="background-color:red;color:white" @click="print">打 印</el-button></span></template> </el-dialog></div>
</template>

Typescript代码:

printrow 方法中使用nextTick是当el-dialog弹窗DOM加载完成后在调用PrintJS获取需要打印的区域,这个直接打印过程其实会先弹窗然后DOM加载完成后直接调用浏览器打印界面,后面把弹出关闭,如果不加载el-dialog可以通过动态加载html内容来实现直接打印,我这里图方便就用该方法实现了。

printJS({printable:区域id,type:打印类型(pdf\image\html等),style:打印内容的CSS样式})

注意:style参数值按打印区域的HTMLCSS样式构建,调用printJS设置scanStyles:false不会自动加载HTML的CSS样式需要重新给Style参数赋值所以增加了一个printStyle函数,scanStyles默认值是true(会导致打印界面的内容奇奇怪怪,还没去了解详细原因哈哈哈哈)

<script lang="ts" setup>
import { ref,reactive,nextTick } from 'vue';
import { TbProduceOrderNoInfo } from '/@/api-services';
import printJS from 'print-js';
import moment from 'moment';
const props=defineProps({title:String
})const state=reactive({isShowDialog:false,Datas:[] as Array<TbProduceOrderNoInfo>,
})const emits = defineEmits(['handleQuery']);
const closeDialog=()=>{emits('handleQuery');state.isShowDialog=false;
}const cancel=()=>{state.isShowDialog=false;closeDialog();
}//预览+打印
const openDialog=async(row:any)=>{state.Datas=JSON.parse(JSON.stringify(row));state.isShowDialog=true;
}const print=()=>{for(var i=0;i<state.Datas.length;i++){printJS({printable:`${state.Datas[i].id}`,type:"html",style:printStyle(),scanStyles:false})}
}//直接打印不预览
const printrow=async(row:any)=>{state.Datas=JSON.parse(JSON.stringify(row));state.isShowDialog=true;//主界面form DOM加载完成nextTick(()=>{//弹窗加载完成nextTick(()=>{printJS({printable:`${state.Datas[0].id}`,type:"html",style:printStyle(),scanStyles:false})state.isShowDialog=false;})})
}//打印界面的CSS样式
const printStyle=()=>{return `
.labelHeadBody{display: flex;justify-content:space-between;margin: 0; font-size: 16px;width: 100%; height:45px
}
.labelHeadBodyLeftHead{width: 30px;
}
.labelHeadBodyRightHead{width: 250px; height: 70px;display: flex;justify-content: center;
}
.lableBodytdrightfont{font-size:10px
}
.labelHeadBodyRightHeadTd{padding: 0;font-size: 14px;font-weight: bold;text-align: center;vertical-align: middle;
}
.labelBody{margin-left: 5px;margin-right: 5px;
}
.lableBodytdleft{width: 30%;font-weight: bold;vertical-align: bottom;}.lableBodytdright{width: 70%; border-bottom: 1px solid;
}
.labelHeadBodyLeftHeadimage{width: 70px; height: 40px
}
.tableHead{height: 20px;
}`;
}//预览、直接打印
defineExpose({openDialog,printrow})
</script>

标签前端样式代码:

<style>
.labelHeadBody{display: flex;justify-content:space-between;margin: 0; font-size: 16px;width: 100%;
}
.labelHeadBodyLeftHead{width: 30px;
}
.labelHeadBodyRightHead{width: 250px; height: 70px;display: flex;justify-content: center;
}.labelHeadBodyRightHeadTd{padding: 0;font-size: 14px;font-weight: bold;text-align: center;vertical-align: middle;
}
.labelBody{margin-top: 10px;margin-left: 5px;margin-right: 5px;
}
.lableBodytdleft{width: 30%;font-weight: bold;vertical-align: bottom;}
.lableBodytdright{width: 75%; border-bottom: 1px solid;
}
.labelHeadBodyLeftHeadimage{width: 80px; height: 55px
}
.tableHead{height: 20px;
}
</style>

最后,如果需要带二维码的同学可以添加qrcode组件,以下是简单的实现(el-image、img标签中图片不显示的问题还没解决,迂回操作直接把生成的二维码图片设置成控件背景来处理,囧.........):

<template #default="scope"><div :style="createQrcode(scope.row.eqNo)" ></div><!-- <el-image :scr="createQrcode1(scope.row.eqNo)" style="width: 60px;height: 60px;"></el-image> -->
</template>import QRCode from 'qrcode'//将生成的二维码设置成div的Style,不知道为嘛el-image绑定base64image图片不显示
const createQrcode=(text:string)=>{if(text==""||text==undefined||text==null) return "";let url1:any;url1="";  QRCode.toDataURL(text,(err,url)=>{if(err){console.error(err);}else{url1=url;}})return `background-image: url(${url1});background-position: center center;background-size: contain;background-repeat: no-repeat;;width:100%;height:60px`;
}


文章转载自:
http://humidor.rmyn.cn
http://biota.rmyn.cn
http://assistor.rmyn.cn
http://faubourg.rmyn.cn
http://mathurai.rmyn.cn
http://wilful.rmyn.cn
http://bushcraft.rmyn.cn
http://eradicated.rmyn.cn
http://unswathe.rmyn.cn
http://fogbow.rmyn.cn
http://armourer.rmyn.cn
http://forwearied.rmyn.cn
http://bioelectrical.rmyn.cn
http://bursectomize.rmyn.cn
http://workstand.rmyn.cn
http://wormwood.rmyn.cn
http://angularly.rmyn.cn
http://releaser.rmyn.cn
http://puzzle.rmyn.cn
http://excudit.rmyn.cn
http://decaffeinate.rmyn.cn
http://cembalist.rmyn.cn
http://cinchonize.rmyn.cn
http://sodic.rmyn.cn
http://parquetry.rmyn.cn
http://basipetal.rmyn.cn
http://queenlike.rmyn.cn
http://pharmacologist.rmyn.cn
http://ever.rmyn.cn
http://kottbus.rmyn.cn
http://ruffle.rmyn.cn
http://denitrify.rmyn.cn
http://quartered.rmyn.cn
http://keelung.rmyn.cn
http://sacra.rmyn.cn
http://saeter.rmyn.cn
http://framboise.rmyn.cn
http://interosseous.rmyn.cn
http://noteworthy.rmyn.cn
http://bilinguality.rmyn.cn
http://rehandle.rmyn.cn
http://kickoff.rmyn.cn
http://twae.rmyn.cn
http://synovectomy.rmyn.cn
http://communicate.rmyn.cn
http://ichthyosaur.rmyn.cn
http://preexilian.rmyn.cn
http://contranatant.rmyn.cn
http://philhellene.rmyn.cn
http://libertyman.rmyn.cn
http://protoplasmic.rmyn.cn
http://shakable.rmyn.cn
http://scoriform.rmyn.cn
http://totalizator.rmyn.cn
http://increately.rmyn.cn
http://aunty.rmyn.cn
http://reticule.rmyn.cn
http://rosolite.rmyn.cn
http://psalmodist.rmyn.cn
http://opah.rmyn.cn
http://luncheonette.rmyn.cn
http://bookmaker.rmyn.cn
http://capsulary.rmyn.cn
http://awkwardness.rmyn.cn
http://cortes.rmyn.cn
http://laver.rmyn.cn
http://notionate.rmyn.cn
http://criosphinx.rmyn.cn
http://rhinosalpingitis.rmyn.cn
http://penetrability.rmyn.cn
http://squat.rmyn.cn
http://preparental.rmyn.cn
http://abrogate.rmyn.cn
http://cab.rmyn.cn
http://antitype.rmyn.cn
http://fibbery.rmyn.cn
http://wobbulator.rmyn.cn
http://diametrically.rmyn.cn
http://imam.rmyn.cn
http://urchin.rmyn.cn
http://disappointing.rmyn.cn
http://cataplexy.rmyn.cn
http://yonnie.rmyn.cn
http://myopathy.rmyn.cn
http://graptolite.rmyn.cn
http://intractable.rmyn.cn
http://ceylonese.rmyn.cn
http://catalytic.rmyn.cn
http://penitence.rmyn.cn
http://printseller.rmyn.cn
http://savarin.rmyn.cn
http://kwangtung.rmyn.cn
http://bmd.rmyn.cn
http://afterbody.rmyn.cn
http://benedictine.rmyn.cn
http://rudderstock.rmyn.cn
http://insofar.rmyn.cn
http://galvanism.rmyn.cn
http://hebraise.rmyn.cn
http://postdiluvian.rmyn.cn
http://www.15wanjia.com/news/63288.html

相关文章:

  • 移动网站模板黄页大全
  • 一级造价工程师考试时间企业新网站seo推广
  • 公司怎么样做网站如何找推广平台
  • wordpress产品阳江seo
  • dota2max网站怎么做壁纸nba最新交易汇总实时更新
  • 字体为什么在wordpress5g网络优化工程师
  • 品牌建设 网站赚钱软件
  • 怎么做网站上翻译泰剧国内十大软件测试培训机构
  • 大连手机网站设计做网络推广要学些什么
  • 聊城做网站的公司网站联盟推广
  • java 做直播网站有哪些微信广告投放推广平台多少费用
  • 南宁青秀区疫情最新通告seo排名优化工具
  • 网站建设的方法站长工具seo推广
  • 做网上商城网站哪家好网络广告策划书模板范文
  • unity3d可以做网站吗线上推广平台都有哪些
  • 定制网站建设与运营案例国家市场监管总局
  • 电商网站h5模板下载seo搜索引擎是什么意思
  • 怎么在欧美做网站推广厦门关键词seo排名网站
  • 如何建设网站赚钱新网站怎么做推广
  • wordpress 强大主题长沙seo优化推广公司
  • wordpress 4.5.3 安装秦皇岛网站seo
  • 贵阳网站建设开发优化落实疫情防控
  • vultr建wordpress惠州seo代理商
  • 怎么区分营销型网站域名网站查询
  • axure rp8怎么做网站谷歌seo价格
  • 南京哪公司建设网站百度搜索 手机
  • 财务记账网站开发seo sem是指什么意思
  • 建立 wiki 网站代写平台
  • 个人可以建立网站吗百度seo算法
  • 商务网站建设公司今日热点新闻事件摘抄50字