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

做斗图的网站友好链接

做斗图的网站,友好链接,wordpress主题制作价格,网站开发 石家庄此功能较为繁琐我会从源头讲起 首先是数据库设置,下面是我的数据库结构 合同模版表 CREATE TABLE contract_tpl (id bigint unsigned NOT NULL AUTO_INCREMENT,name varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 合同名称,file varchar(191) COLL…

此功能较为繁琐我会从源头讲起

首先是数据库设置,下面是我的数据库结构

合同模版表

CREATE TABLE `contract_tpl` (`id` bigint unsigned NOT NULL AUTO_INCREMENT,`name` varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '合同名称',`file` varchar(191) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '合同文件',`created_at` timestamp NULL DEFAULT NULL,`updated_at` timestamp NULL DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci;

生成word,可以参考phpword使用整理-CSDN博客

实现思路:

编写一个合同模版,将word文件中变量使用“${变量名}”的格式填写如下图所示:

执行命令安装phpword:

composer require phpoffice/phpword

代码如下图:

static public function word(){$order_id = request()->get('order_id');$tpl_id = request()->get('tpl_id');$saleData = SaleItem::where('order_id',$order_id)->get()->toArray();if ($saleData == null){return '此订单没有选择产品';}$sale_order = SaleOrderModel::with(['customer','items','user.employee','amount'])->where('id',$order_id)->first();$modelcontract = ContractTplModel::where('id',$tpl_id)->first();if ($sale_order->user == null){return '此订单没有负责人';}$folderPath = storage_path('app/public/contract');if (!file_exists($folderPath)) {// 文件夹不存在,创建文件夹mkdir($folderPath, 0777, true); // 第一个参数是路径,第二个参数是权限,第三个参数表示递归创建}$file = $modelcontract->file;if ($file == null){return '请上传合同模版';}foreach($sale_order->items as $key => $val){
//            $unit = GoodsSkuModel::UNIT_MAP[$items->sku->unit];$item_data[$key]['id'] = $key+1;$item_data[$key]['item_id'] =  $val->sku_id;$item_data[$key]['goods_name'] = $val->sku->goods_name ?? '';$item_data[$key]['sku_name'] = $val->sku->sku_name ?? '';$item_data[$key]['num'] = $val->should_num ?? '';$item_data[$key]['after_tax_price'] = $val->after_tax_price ?? '';$item_data[$key]['point_price'] = $val->point_price ?? '';$item_data[$key]['point'] = $val->point ?? '';$goods_name[] = $val->sku->goods_name ?? '';}$trade_name = implode("、", array_unique($goods_name));$file_path = storage_path('app/public/' . $file);
//        dd($file_path);if (!file_exists($file_path)) {return '该合同模版文件不存在,请重新上传模版文件';}$templateProcessor = new TemplateProcessor($file_path);$party_a = $sale_order->customer->name;//甲方名称$product_name = $trade_name;//产品名称$total_amount = $sale_order->total_amount ?? ''; //含税总价$first_price = $total_amount * 0.7;$tow_price = $total_amount * 0.2;$price3 = $total_amount *0.1;$support = new Support();$first_price_cn = $support->convertAmountToCn($first_price);$tow_price_cn = $support->convertAmountToCn($tow_price);$price3_cn = $support->convertAmountToCn($price3);$prefix = str_replace('-','','sk'.$sale_order->user->prefix.build_ws_no()) ?? '';//合同前缀$templateProcessor->setValues(array('合同编号'=>$prefix,'甲方名称'=>$party_a,'产品名称'=>$product_name,'含税总价'=>$sale_order->total_amount,'大写总价'=>$support->convertAmountToCn($sale_order->total_amount),'第一笔金额'=>$first_price,'第一笔金额大写'=>$first_price_cn,'一笔货款发出时间'=>3,'收到货物工作日'=>2,'收到货物百分比'=>30,'第二笔金额'=>$tow_price,'第二笔金额大写'=>$tow_price_cn,'第二笔货款工作日'=>$tow_price,'第三笔货款'=>$price3,'第三笔货款大写'=>$price3_cn,'甲方负责人姓名'=>$sale_order->customer->contacts_name??'','甲方负责人电话'=>$sale_order->customer->contacts_mobile ?? '','乙方负责人姓名'=>$sale_order->user->employee->name ?? '','乙方负责人电话'=>$sale_order->user->employee->mobile ?? '','增值税专用发票'=> 6 ?? '',));if (count($item_data)){$templateProcessor->cloneRow('id',count($item_data));foreach ($item_data as $k =>  $v) {$templateProcessor->setValue('id#'. ($k + 1), $v['id']);$templateProcessor->setValue('goods_name#'. ($k + 1), $v['goods_name']);$templateProcessor->setValue('sku_name#'. ($k + 1), $v['sku_name']);$templateProcessor->setValue('num#' . ($k + 1), $v['num']);$templateProcessor->setValue('after_tax_price#' . ($k + 1), $v['after_tax_price']);$templateProcessor->setValue('point#' . ($k + 1), $v['point']);$templateProcessor->setValue('point_price#' . ($k + 1), $v['point_price']);}}$word_name = $sale_order->customer->name;$templateProcessor->saveAs( storage_path("app/public/contract/".$word_name.".docx"));$file_path = "/contract/".$word_name.".docx";  // 文件的路径和名称SaleOrderModel::query()->where('id',$order_id)->update(['tpl_id'=>$tpl_id,'contract'=>$file_path,]);$tpl = ContractTplModel::query()->get()->toArray();$file_name = get_file_path($file_path);return view('page/generate_office',compact('order_id','tpl_id','file_name','tpl'));}

word文件在页面展示:

这里用到的是amis前端框架网址可参考:amis - 低代码前端框架

创建一个视图文件如下图所示:

文件代码:

<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head><meta charset="UTF-8" /><title>@yield('title')</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><metaname="viewport"content="width=device-width, initial-scale=1, maximum-scale=1"/><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><!-- amis --><link rel="stylesheet" href="{{ asset('static/css/sdk.css') }}" /><link rel="stylesheet" href="{{ asset('static/css/helper.css') }}" /><link rel="stylesheet" href="{{ asset('static/css/iconfont.css') }}" /><link rel="stylesheet" href="{{ asset('static/css/main.css?v='.config('admin.version')) }}" /><!-- 这是默认主题所需的,如果是其他主题则不需要 --><!-- 从 1.1.0 开始 sdk.css 将不支持 IE 11,如果要支持 IE11 请引用这个 css,并把前面那个删了 --><!-- <link rel="stylesheet" href="sdk-ie11.css" /> --><!-- 不过 amis 开发团队几乎没测试过 IE 11 下的效果,所以可能有细节功能用不了,如果发现请报 issue --><style>html,body,.app-wrapper {position: relative;width: 100%;height: 100%;margin: 0;padding: 0;}</style>@yield('head')
</head>
<body>
<div id="root" class="app-wrapper"></div>
<script src="{{ asset('static/js/sdk.js') }}"></script>
<script src="{{ asset('static/js/charts.js') }}"></script>
<script src="{{ asset('static/js/office-viewer.js') }}"></script>
<script src="{{ asset('static/js/papaparse.js') }}"></script>
<script src="{{ asset('static/js/pdf-viewer.js') }}"></script>
<script src="{{ asset('static/js/tinymce.js') }}"></script>
@yield('foot')
</body>
</html>

创建一个视图文件,使用下图方式引入模版文件

@extends('layouts.amis')
@section('title','生产工单时间线')
@section('foot')@endsection

完整代码

@extends('layouts.amis')
@section('title','生产工单时间线')
@section('foot')<script type="text/javascript">(function () {let amis = amisRequire('amis/embed');// 通过替换下面这个配置来生成不同页面let amisJSON = {"type": "page",//侧边栏"aside": {"type": "nav","name": "nav","stacked": true,"source": "{{admin_url('tpl_info?order_id='.$order_id)}}",},"body": [{"type": "nav","stacked": true,"source": "${nav}",},@if(isset($error) && $error == 2){"type": "page","body": "请点击左侧合同模版"},@endif@if($file_name != null ){"type": "button-toolbar","buttons": [{"type": "action","label": "下载word文档","cssVars": {"--primary-padding": "10px 200px",},"onEvent": {"click": {"actions": [{"actionType": "saveAs","componentId": "office-viewer-download",},],}}},{"type": "office-viewer","id": "office-viewer-download","display": false,"src": "{{$file_name}}","padding": "10px 200px","ignoreWidth": true,},{"type": "link",'body':'PDF下载',"className" : "pdf_span  span","href": "{{admin_url('sale-order/wordToPdf?order_id='.$order_id)}}","style": {"margin-left": "80px","margin-top" : "5px","padding" : "3px 12px",}},]},{"type": "office-viewer",'name':'word','id':'word',"src": "{{$file_name}}","wordOptions": {"padding": "10px 200px","ignoreWidth": true,}},@else{"type": "page","body": "请点击左侧合同模版"}@endif]};// window.location.reload()let amisScoped = amis.embed('#root', amisJSON);})();</script>
@endsection

侧边栏是一个单独的接口/或者说也可以写为固定值

    public function tpl_info(){$line = ContractTplModel::query()->get();$order_id = request()->get('order_id');foreach ($line as $item){$options[] = ['label'=>$item->name,'value'=>$item->id,'to'=> admin_url("sale-order/word?order_id=".$order_id."&"."tpl_id=".$item->id),];}$this->amis_res(['options'=>$options]);}

最终效果如图所示:

 

生成PDF留在下节讲解


文章转载自:
http://rattlebrained.nrwr.cn
http://codetta.nrwr.cn
http://foresaw.nrwr.cn
http://winzip.nrwr.cn
http://rp.nrwr.cn
http://airload.nrwr.cn
http://magnificence.nrwr.cn
http://scruffy.nrwr.cn
http://gospodin.nrwr.cn
http://theorbo.nrwr.cn
http://pillaret.nrwr.cn
http://falcula.nrwr.cn
http://tungusic.nrwr.cn
http://sudetenland.nrwr.cn
http://nhk.nrwr.cn
http://telephotogram.nrwr.cn
http://bushhammer.nrwr.cn
http://journalese.nrwr.cn
http://smartness.nrwr.cn
http://seedling.nrwr.cn
http://orangey.nrwr.cn
http://brilliantly.nrwr.cn
http://leander.nrwr.cn
http://jinrikisha.nrwr.cn
http://carmelita.nrwr.cn
http://revehent.nrwr.cn
http://backbreaker.nrwr.cn
http://firebrat.nrwr.cn
http://caidos.nrwr.cn
http://polymorphic.nrwr.cn
http://kinabalu.nrwr.cn
http://oxcart.nrwr.cn
http://suint.nrwr.cn
http://mari.nrwr.cn
http://sequitur.nrwr.cn
http://robotnik.nrwr.cn
http://disappreciation.nrwr.cn
http://campanologist.nrwr.cn
http://weltschmerz.nrwr.cn
http://choctaw.nrwr.cn
http://benin.nrwr.cn
http://invigorating.nrwr.cn
http://bumble.nrwr.cn
http://hellfire.nrwr.cn
http://oberhausen.nrwr.cn
http://uma.nrwr.cn
http://axle.nrwr.cn
http://syllabicity.nrwr.cn
http://reseda.nrwr.cn
http://immingle.nrwr.cn
http://fao.nrwr.cn
http://phs.nrwr.cn
http://heddle.nrwr.cn
http://login.nrwr.cn
http://hemanalysis.nrwr.cn
http://philippi.nrwr.cn
http://ganglia.nrwr.cn
http://pr.nrwr.cn
http://ugsome.nrwr.cn
http://savaii.nrwr.cn
http://cheesecake.nrwr.cn
http://wigtownshire.nrwr.cn
http://siree.nrwr.cn
http://mesencephalon.nrwr.cn
http://pigeon.nrwr.cn
http://megaera.nrwr.cn
http://nemean.nrwr.cn
http://resole.nrwr.cn
http://rebutment.nrwr.cn
http://anthropopathic.nrwr.cn
http://nestorian.nrwr.cn
http://coring.nrwr.cn
http://commuterville.nrwr.cn
http://urediospore.nrwr.cn
http://federalese.nrwr.cn
http://expound.nrwr.cn
http://incant.nrwr.cn
http://shopwalker.nrwr.cn
http://torrid.nrwr.cn
http://nauplial.nrwr.cn
http://mum.nrwr.cn
http://synthetise.nrwr.cn
http://kvar.nrwr.cn
http://lestobiotic.nrwr.cn
http://talking.nrwr.cn
http://generant.nrwr.cn
http://chesterfield.nrwr.cn
http://chemosurgery.nrwr.cn
http://rheogoniometry.nrwr.cn
http://scapulary.nrwr.cn
http://laval.nrwr.cn
http://trunkfish.nrwr.cn
http://myosotis.nrwr.cn
http://fatally.nrwr.cn
http://heathland.nrwr.cn
http://everywhither.nrwr.cn
http://judaise.nrwr.cn
http://hither.nrwr.cn
http://yarnsmith.nrwr.cn
http://barramundi.nrwr.cn
http://www.dt0577.cn/news/102715.html

相关文章:

  • 动态网站需要学什么专门用来查找网址的网站
  • 做好网站内能另外做链接吗百度竞价渠道代理
  • 网站关键词优化骗局自己如何制作网页
  • 南通市住房和城乡建设局网站百度框架户开户渠道
  • 网站二级目录做网站人民网疫情最新消息
  • 大型网站建设公司win10优化大师是官方的吗
  • 南充商城网站建设天津百度推广代理商
  • eclipse开发网站开发精准引流的网络推广
  • 哈尔滨网站建设索q.479185700百度快照是干什么的
  • 上海建设网站服务武汉关键词排名提升
  • 学做招投标的网站有哪些java培训学费多少钱
  • 可信的免费网站建设seo新手教程
  • 郑州做网站公司汉狮网世界十大网站排名
  • 佛山网站优化有哪些搜索引擎优化是指
  • 做购物网站之前做些什么湖南关键词优化品牌价格
  • 易企秀怎么做招聘网站超链接关键词排名点击软件推荐
  • 安溪住房和城乡建设网站微信公众号推广软文案例
  • wordpress图片位置天津seo优化公司
  • 服务号微网站怎么做自己做网站如何赚钱
  • 效果好网站建设哪家好十大微商推广平台
  • wordpress代码下载seo的工作流程
  • 西安高校定制网站建设天津网站建设优化
  • 长沙做网站建设公司哪家好营销客户管理系统
  • 电子科技东莞网站建设品牌营销策略四种类型
  • 汽车网站开发背景宝鸡网站开发公司
  • 手机做炫光图头像的网站百度如何做广告
  • 宁波seo推广优化青岛快速排名优化
  • 嘉定南翔网站建设成都今天重大新闻事件
  • 网站建设高端安徽seo优化
  • 做日语字幕的网站网络广告的类型有哪些