微信小程序对接php通过stream流式输出AI大模型结果
php端代码参考（调用豆包）<?php header('Content-Type: text/event-stream'); // 以事件流的形式告知浏览器进行显示 header('Cache-Control: no-cache'); // 告知浏览器不进行缓存 header('X-Accel-Buffering: no'); //关闭加速缓冲 header('Connection: keep-alive'); $keyword = '你是谁'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $input = json_decode(file_get_contents('php://input'), true); if (isset($input['message'])) { $message = $input['message']; } } $url="https://ark.cn-beijing.volces.com/api/v3/chat/completions"; $json='{ "model":"doubao-seed-2-0-pro-260215", "messages": [ { "role": "system", "content": "请回答用户提出的植物名称或其他相关问题，如果提问仅包含植物名称则结合百度百科返回植物相关信息信息，删除返回结果中的citation代码内容，需包含：植物中文名称、别名、外文名、分布区域、功能特征、形态特征、生长环境及习性、病虫防治事项、栽培技术、松针腐植土是否适合种植等信息。如果用户提出的非植物相关问题，则正常输出结果。返回结果为html模式，支持的标签包含 等，不要使用复杂的css样式。以下是用户提问：" }, { "content": "'.$message.'", "role": "user" } ], "thinking": {"type": "disabled"}, "stream":true }'; $arr=json_decode($json,true); $header=['Authorization: Bearer ark-xxx','Content-Type: application/json']; /** * 示例回调函数，用于处理接收到的数据并返回给客户端 * * @param string $data 接收到的数据片段 */ function handleResponseData($data) { // 在这里，你可以将数据写入输出缓冲区或直接发送给客户端-例如，使用 echo 或 SSE 发送数据 //sleep(3); echo $data; // 假设这里直接将数据发送给客户端 echo "\n"; //刷新输出缓冲区---把数据输出给浏览器 ob_flush(); flush(); } // 使用示例 $res=curlStreamRequest( $url, // 替换为实际的 API URL json_encode($arr), // 替换为实际的 POST 数据（如果需要） $header, // 替换为实际的请求头 //直接传递闭包函数 function($data) { handleResponseData($data); } //'handleResponseData' // 传递回调函数名作为字符串（如果回调函数在全局作用域中） ); /** * 流式请求--通过 cURL 发起流式请求并处理响应 * * @param string $url 请求的 URL * @param array $headers 请求头数组 * @param array|string|null $postData POST 数据 * @param callable $callback 处理响应数据的回调函数 * @throws Exception 如果回调函数不是有效的 Callable */ function curlStreamRequest(string $url,$postData = null, array $headers = [], callable $callback) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); // 不将响应保存为字符串，直接处理 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 注意：在生产环境中应启用 SSL 验证 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 注意：同上 curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_POST, is_array($postData) || !empty($postData)); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $data) use ($callback) { // 调用回调函数处理数据 $callback($data); return strlen($data); // 返回接收到的数据长度 }); // 执行请求并获取响应 curl_exec($ch); // 检查是否有错误发生 if (curl_errno($ch)) { throw new \Exception(curl_error($ch)); } // 关闭 cURL 句柄 curl_close($ch); }微信小程序端代码export default { data() { return { searchValue: '', searchResult: '', currentRequest: null, // 请求任务对象 }; }, methods: { //搜索 async searchBut() { let that = this; if (that.searchValue.length > 0) { //发起流式请求 uni.showLoading({ title: '检索中' }) await this.streamChat(that.searchValue) } else { return this.$util.Tips({ title: '请输入要搜索的内容', icon: 'none', duration: 1000, mask: true, }); } }, // 流式聊天 streamChat(message) { this.searchValue = ''; this.searchResult = ''; return new Promise((resolve, reject) => { const requestTask = wx.request({ url: "https://xxx/stream.php", method: 'POST', data: { message: message }, header: { 'Content-Type': 'application/json', 'Accept': 'text/event-stream' }, responseType: 'text', enableChunked: true, // 启用分块传输 success: (res) => { this.finishStreaming() }, fail: (err) => { console.error('SSE请求失败', err) this.handleStreamError('网络请求失败，请重试') } }) // 监听chunked数据（流式数据接收） let buffer = '' // 数据缓冲区 // 注意：小程序需要基础库2.20.1以上支持onChunkReceived requestTask.onChunkReceived((res) => { uni.hideLoading(); // res.data 是ArrayBuffer，需要转为字符串 const chunk = this.arrayBufferToString(res.data) buffer += chunk // 按行分割处理SSE格式数据 const lines = buffer.split('\n') // 保留最后一个不完整的行 buffer = lines.pop() || '' for (const line of lines) { if (line.startsWith('data: ')) { const dataStr = line.slice(6) if (dataStr === '[DONE]') { // 流结束标记 this.finishStreaming() return } try { const data = JSON.parse(dataStr) if (data.choices && data.choices[0] && data.choices[0].delta && data.choices[0].delta.content) { // 追加内容到当前AI消息 this.searchResult += data.choices[0].delta.content; } } catch (e) { // 如果不是JSON格式，直接作为纯文本追加 this.searchResult += dataStr } } else if (line.trim() === '') { // 空行忽略 continue } } }) // 存储requestTask以便可能的中断 this.currentRequest = requestTask }) }, // ArrayBuffer 转字符串 arrayBufferToString(buffer) { // 微信小程序环境下的转换方法 const dataView = new DataView(buffer) let result = '' for (let i = 0; i < dataView.byteLength; i++) { result += String.fromCharCode(dataView.getUint8(i)) } // 如果是UTF-8编码，需要使用decodeURIComponent(escape(result)) // 简单处理：如果乱码可尝试以下转换 try { return decodeURIComponent(escape(result)) } catch (e) { return result } }, // 完成流式接收 finishStreaming() { console.log('done') this.currentRequest = null }, // 错误处理 handleStreamError(errorMsg) { wx.showToast({ title: errorMsg, icon: 'none', duration: 2000 }) this.currentRequest = null }, abortStream() { if (this.currentRequest) { this.currentRequest.abort() this.currentRequest = null } }, }, onUnload() { this.abortStream() } }; 附：html页面处理流式输出 火山引擎AI模型流式输出演示 火山引擎AI模型流式输出演示 发送请求 就绪
phpword读取word中的内容，调用deepseek后生成word下载，代码如下： <?php /** * Desc: * User: SenSen Wechat:1050575278 * Date: 2025-8-27 * Time: 11:02 */ namespace app\index\controller\service; use app\index\controller\Auth; use PhpOffice\PhpWord\IOFactory; use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\SimpleType\Jc; use sensen\services\HttpService; use sensen\services\JsonService; use sensen\services\upload\Upload; class QiSuZhuang extends Auth { /** * 诉状上传 */ public function upload() { $upload_type = $this->request->get('upload_type', sys_config('upload_type', 1)); try { $path = make_path('qisuzhuang', 2, true); $upload = new Upload((int)$upload_type, [ 'accessKey' => sys_config('accessKey'), 'secretKey' => sys_config('secretKey'), 'uploadUrl' => sys_config('uploadUrl'), 'storageName' => sys_config('storage_name'), 'storageRegion' => sys_config('storage_region'), ]); //验证类型 $res = $upload->to($path)->validate(['fileExt'=>'doc,docx', 'fileMime'=>['application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/msword']])->move('file'); if ($res === false) { return JsonService::fail('上传失败：' . $upload->getError()); } else { $fileInfo = $upload->getUploadInfo(); if ($fileInfo) { $file = '.'.$fileInfo['dir']; $phpWord = IOFactory::load($file); $sections = $phpWord->getSections(); $szContent = ''; foreach ($sections as $section) { $elements = $section->getElements(); // 获取当前section的所有元素 foreach ($elements as $element) { if ($element instanceof \PhpOffice\PhpWord\Element\TextRun) { // 文本段落 foreach ($element->getElements() as $ele) { $szContent .= self::getTextNode($ele) . "\n"; } }else if ($element instanceof \PhpOffice\PhpWord\Element\Table) { foreach ($element->getRows() as $ele) { $szContent .= self::getTableNode($ele) . "\n"; } } } } $deepSeekContent = $this->getDeepSeekContent($szContent); debug_file($deepSeekContent, 'qisuzhuang'); $fileName = date('YmdHis'); $this->generateQszWord($deepSeekContent, $fileName); return JsonService::successful('上传成功', ['path'=>'/uploads/qisuzhuang/'.$fileName.'.docx']); }else{ return JsonService::fail('上传失败：' . $upload->getError()); } } } catch (\Exception $e) { return JsonService::fail('上传失败：' . $e->getMessage()); } } /** * 获取文档节点内容 * @param $node * @return string */ public static function getTextNode($node) { $str = ''; //处理文本 if ($node instanceof \PhpOffice\PhpWord\Element\Text) { $str .= $node->getText(); } else if ($node instanceof \PhpOffice\PhpWord\Element\Image) { //处理图片 $str .= self::pic2text($node); } else if ($node instanceof \PhpOffice\PhpWord\Element\TextRun) { //处理文本元素 foreach ($node->getElements() as $ele) { $str .= self::getTextNode($ele); } } return $str; } /** * 获取表格节点内容 * @param $node * @return string */ public static function getTableNode($node) { $str = ''; if ($node instanceof \PhpOffice\PhpWord\Element\Row) { //处理行 foreach ($node->getCells() as $ele) { $str .= self::getTableNode($ele); } } else if ($node instanceof \PhpOffice\PhpWord\Element\Cell) { //处理列 foreach ($node->getElements() as $ele) { $str .= self::getTextNode($ele); } } return $str; } /** * 处理word文档中base64格式图片 * @param $node * @return string */ public static function pic2text($node) { //获取图片编码 $imageData = $node->getImageStringData(true); //添加图片html显示标头 $imageData = 'data:' . $node->getImageType() . ';base64,' . $imageData; return ' '; } /** * 处理word文档中base64格式图片 * @param $node * @return string */ public static function pic2file($node) { //图片地址(一般为word文档地址+在word中的锚点位置) $imageSrc = 'images/' . md5($node->getSource()) . '.' . $node->getImageExtension(); $imageData = $node->getImageStringData(true); //将图片保存在本地 file_put_contents($imageSrc, base64_decode($imageData)); return $imageSrc; } /** * 将word转化为html(转换存储html文件后展示) */ public static function word2html($path) { $phpWord = IOFactory::load($path); $htmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML'); $path = pathinfo($path); $fileName = $path['dirname'] . '/' . $path['filename'] . '.html'; $htmlWriter->save($fileName); $html = file_get_contents($fileName); return $html; } /** * 获取deepseek结果 * @param string $content * @return mixed */ public function getDeepSeekContent($content='') { $response = HttpService::postRequest('https://api.deepseek.com/chat/completions', [ 'model' => "deepseek-chat", "stream" => false, 'messages' => [ [ 'role'=>"system", 'content'=>"您是法律专家，请根据提供的案件起诉状信息，生成案件诉讼的要素式起诉状信息。" ], [ 'role' => "user", 'content'=>$content ], [ 'role' => "user", 'content'=>'根据以上诉状内容，若原告、被告、委托诉讼代理人、第三人等存在多个数据，则返回二维数组，括号中的文字为对应数据处理说明。严格按照以下格式返回JSON数据，如无内容则留空： { "原告（自然人）":[ { 原告姓名： 原告性别： 原告证件类型： 原告证件号码： 原告出生日期： 原告年龄： 原告民族： 原告工作单位： 原告职务： 原告住所地： 原告联系电话： } ], "原告（法人、非法人组织）":[ { 单位名称： 单位所在地： 法定代表人/主要负责人： 法人代表人/主要负责人职务： 联系电话： 原告证件类型： 原告证件号码： 统一社会信用代码： 单位性质：（可选项包含：有限责任公司、股份有限公司、上市公司、其他企业法人、事业单位、社会团体、基金会、社会服务机构、机关法人、农村集体经济组织法人、城镇农村的合作经济组织法人、基层群众性自治组织法人、个人独资企业、合伙企业、不具有法人资格的专业服务机构） 所有制性质：（可选项包含：国有控股、国有参股、民营、其他） } ], "委托诉讼代理人":[ { 姓名： 单位： 职务：（可选项包含：律师、法律服务工作者、其他） 联系电话： 代理权限： } ], "被告（自然人）":[ { 被告姓名： 被告性别： 被告证件类型： 被告证件号码： 被告出生日期： 被告年龄： 被告民族： 被告工作单位： 被告职务： 被告住所地： 被告联系电话： } ], "被告（法人、非法人组织）":[ { 单位名称： 单位所在地： 法定代表人/主要负责人： 法人代表人/主要负责人职务： 联系电话： 被告证件类型： 被告证件号码： 统一社会信用代码： 单位性质：（可选项包含：有限责任公司、股份有限公司、上市公司、其他企业法人、事业单位、社会团体、基金会、社会服务机构、机关法人、农村集体经济组织法人、城镇农村的合作经济组织法人、基层群众性自治组织法人、个人独资企业、合伙企业、不具有法人资格的专业服务机构） 所有制性质：（可选项包含：国有控股、国有参股、民营、其他） } ], "第三人（自然人）":[ { 姓名： 性别： 证件类型： 证件号码： 出生日期： 年龄： 民族： 工作单位： 职务： 住所地： 联系电话： } ], "第三人（法人、非法人组织）":[ { 单位名称： 单位所在地： 法定代表人/主要负责人： 法人代表人/主要负责人职务： 联系电话： 原告证件类型： 原告证件号码： 统一社会信用代码： 单位性质：（可选项包含：有限责任公司、股份有限公司、上市公司、其他企业法人、事业单位、社会团体、基金会、社会服务机构、机关法人、农村集体经济组织法人、城镇农村的合作经济组织法人、基层群众性自治组织法人、个人独资企业、合伙企业、不具有法人资格的专业服务机构） 所有制性质：（可选项包含：国有控股、国有参股、民营、其他） } ], "原告身份"：（可选项包含：卖方、买方） "诉讼请求"：（返回完整诉讼请求） "给付价款"：（人民币，单位：元，下同：如外币需特别注明） "迟延给付价款的利息（违约金）"：（如原告身份为卖方时填写，返回详细描述内容） "是否请求支付至实际清偿之日"：（如原告身份为卖方时填写，可选项包含：是、否） "支付赔偿金"：（单位：元） "违约类型"：（如原告身份为买方时填写，可选项包含：迟延履行、不履行、其他） "具体情形"：（返回详细描述内容） "损失计算依据"：（返回详细描述内容） "是否对标的物的瑕疵承担责任"：（可选项包含：是、否） "对标的物的瑕疵责任承担方式"：（可选项包含：修理、重作、更换、退货、减少价款或者报酬、其他） "要求继续履行或是解除合同"：（可选项包含：继续履行、判令解除合同、已解除） "继续履行期限"：（返回XX日内履行完毕付款或供货义务） "解除日期"： "是否主张担保权利"：（如为是，同时返回主张内容） "是否主张实现债权的费用"：（如为是，同时返回主张内容） "是否主张诉讼费用"：（可选项包含：是、否） "其他请求"：（将其他请求填写到此处） "标的总额"： "有无仲裁、法院管辖规定"：（如为是，同时返回合同条款及内容） "是否已经诉前保全"：（如为是，返回保全法院、保全时间、保全案号） "事实与理由"：（返回完整表述纠纷涉及的事实与理由） "合同签订情况"：（返回名称、编号、签订时间、地点等；如无书面合同，请注明"无书面合同"） "出卖人（卖方）"： "买受人（买方）"： "买卖标的物情况"： "合同约定的单价"： "合同约定的总价"： "合同支付媒介"：（可选项包含：现金、转账、票据、其他方式） "合同支付方式"：（可选项包含：一次性支付、分期支付） "分期方式"： "合同约定信息"：（包含合同约定的交货时间、地点、方式、风险承担、安装、调试、验收等） "合同约定的质量标准及检验方式、质量异议期限"： "合同约定的违约金（定金）"：（返回：违约金金额及对应合同条款、定金金额及对应合同条款、迟延履行违约金利率及合同条款） "价款支付及标的物交付情况"：{ "按期支付价款"：（单位：元） "逾期付款"：（单位：元） "逾期未付款"：（单位：元） "按期交付标的物"：（单位：件） "逾期交付"：（单位：件） "逾期未交付"：（单位：件） } "是否存在延迟履行"：{ "延迟时间"： "延期履行方式"：（可选项包含：逾期付款、逾期交货） } "是否催促过履行"：{ "催促日期"： "催促方式"： } "买卖合同标的物有无质量争议"：（如有，同时返回具体情况） "标的物质量规格或履行方式是否存在不符合约定的情况"：（如有，同时返回具体情况） "是否曾就标的物质量问题进行协商"：（如有，同时返回具体情况） "是否通知解除合同"：（如有，同时返回具体情况） "被告应当支付的利息、违约金、赔偿金"：{ "利息"：（单位：元） "违约金"：（单位：元） "赔偿金"：（单位：元） "共计"：（单位：元） "计算方式"： } "是否签订物的担保（抵押、质押）合同"：（如签订，同时返回签订时间） "担保人"： "担保物"： "是否最高额担保（抵押、质押）"：{ "担保债权的确定时间"： "担保额度"： } "抵押、质押登记登记方式"：（可选项包含：正式登记、预告登记） "是否签订保证合同"：{ "签订时间"： "保证人"： "保证合同主要内容"： "保证方式"：（可选项包含：一般保证、连带责任保证） } "其他担保方式"：{ "担保形式"： "签订时间"： } "请求承担责任的合同约定"： "请求承担责任的法律规定"： "其他需要说明的内容"： "证据清单"： "对纠纷解决方式的意愿"：{ "是否了解调解作为非诉讼纠纷解决方式，能及时、高效、低成本、不伤和气地解决纠纷"：（可选项包含：了解、不了解） "立案后选择先行调解的，可以很快启动调解程序。如不同意调解，法院将依程序开庭审理案件，但可能需要经过较长一段时间的排期等待，且审理、执行周期相对较长"：（可选项包含：了解、不了解） "选择先行调解，调解成功且自动履行的免交诉讼费用，申请司法确认的不交纳诉讼费用，要求出具调解书的减半交纳诉讼费用"：（可选项包含：了解、不了解） "首次调解不成功，但仍有继续调解意愿的，可以选择更换调解组织和调解员再进行调解。调解无法达成一致意见的，法院将依程序排期开庭"：（可选项包含：了解、不了解） "依照法律规定，调解具有保密性要求，调解过程不公开，调解协议未经当事人同意不得公开"：（可选项包含：了解、不了解） "调解达成的协议具有法律效力，可以依照法律规定申请司法确认，具有强制执行效力"：（可选项包含：了解、不了解） "是否考虑先行调解"：（可选项包含：是、否、暂不确定） } }' ] ] ], [ "Content-Type: application/json", "Authorization: Bearer sk-67b56a4e297c466f8e8f153814393173" ], 500, 'json'); $response = json_decode($response); $content = $response->choices[0]->message->content; return $content; } /** * 生成起诉状word * todo 区分不同类型的起诉状 * @param string $content * @return string */ public function generateQszWord($content='', $fileName='test') { $content = str_replace('```json', '', $content); $content = str_replace('```', '', $content); $content = json_decode($content, true); $savePath = public_path().'/uploads/qisuzhuang/'.$fileName.'.docx'; $phpWord = new PhpWord(); $section = $phpWord->addSection(); $paragraphStyleName = 'pStyle'; $phpWord->addParagraphStyle($paragraphStyleName, array('size' => 16, 'bold' => true, 'alignment' => Jc::CENTER, 'spaceAfter' => 100)); $section->addText('民事起诉状', array('size' => 18, 'bold'=>true), $paragraphStyleName); $section->addText('（买卖合同纠纷）', array('size' => 18, 'bold'=>true), $paragraphStyleName); $cellRowSpan = array('vMerge' => 'restart', 'valign' => 'center'); $cellRowContinue = array('vMerge' => 'continue'); $cellColSpan = array('gridSpan' => 1, 'valign' => 'center'); $cellHCentered = array('alignment' => Jc::CENTER); $cellVCentered = array('valign' => 'center'); $fancyTableStyle = array('borderSize' => 6, 'borderColor' => '000'); $spanTableStyleName = 'Colspan Rowspan'; $phpWord->addTableStyle($spanTableStyleName, $fancyTableStyle); $table = $section->addTable($spanTableStyleName); $table->addRow(500); $cell0 = $table->addCell(9200, $cellRowSpan); $cell0->addText("说明：", array('size' => 12, 'bold'=>true)); $cell0->addText("为了方便您参加诉讼，保护您的合法权利，请填写本表。 1. 起诉时需向人民法院提交证明您身份的材料，如身份证复印件、营业执照复印件等。 2. 本表所列内容是您提起诉讼以及人民法院查明案件事实所需，请务必如实填写。 3. 本表有些内容可能与您的案件无关，您认为与案件无关的项目可以填“无”或不填；对于本表中勾选项可以在对应项打“√ ”;您认为另有重要内容需要列明的，可以另附页填写。 4. 本表word电子版填写时，相关栏目可复制粘贴或扩容，但不得改变要素内容、格式设置。例如，多原告、多被告或多委托诉讼代理人等情况，可根据实际情况复制粘贴；需填写文字较多时，可根据实际对栏目进行扩容等。 ★特别提示★ 诉讼参加人应遵守诚信原则如实认真填写表格。 如果诉讼参加人违反有关规定，虚假诉讼、恶意诉讼、滥用诉权，人民法院将视违法情形依法 追究责任。"); $cell0->getStyle()->setGridSpan(2); $table->addRow(500); $cell1 = $table->addCell(9200, $cellRowSpan); $cell1->addText("当事人信息", array('size' => 18, 'bold'=>true), $paragraphStyleName); $cell1->getStyle()->setGridSpan(2); //遍历循环原告 至少包含一个原告 $yuangao = isset($content["原告（自然人）"])?$content["原告（自然人）"]:[ [ "原告姓名"=>"", "原告性别"=>"", "原告证件类型"=>"", "原告证件号码"=>"", "原告出生日期"=>"", "原告年龄"=>"", "原告民族"=>"", "原告工作单位"=>"", "原告职务"=>"", "原告住所地"=>"", "原告联系电话"=>"" ] ]; foreach ($yuangao as $key=>$v){ $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("原告（自然人）"); $sexStr = $this->parseSex($v['原告性别']); $table->addCell(7200, $cellRowSpan)->addText("姓名：{$v['原告姓名']} 性别：{$sexStr} 证件类型：{$v['原告证件类型']} 证件号码：{$v['原告证件号码']} 出生日期：{$v['原告证件类型']} 年龄：{$v['原告年龄']} 民族：{$v['原告民族']} 工作单位：{$v['原告工作单位']} 职业：{$v['原告职务']} 住所地：{$v['原告住所地']} 联系电话：{$v['原告联系电话']}"); } //遍历循环原告法人 $yuangaoFaren = isset($content["原告（法人、非法人组织）"])?$content["原告（法人、非法人组织）"]:[ [ "单位名称"=>'', "单位所在地"=>'', "法定代表人/主要负责人"=>'', "法人代表人/主要负责人职务"=>'', "联系电话"=>'', "原告证件类型"=>'', "原告证件号码"=>'', "统一社会信用代码"=>'', "单位性质"=>'', "所有制性质"=>'', ] ]; foreach ($yuangaoFaren as $key=>$v){ $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("原告（法人、非法人组织）"); $companyType = $this->parseCompanyType($v['单位性质']); $companyNature = $this->parseCompanyNature($v['所有制性质']); $table->addCell(7200, $cellRowSpan)->addText("名称：{$v['单位名称']} 住所地（主要办事机构所在地）：{$v['单位所在地']} 法定代表人/主要负责人：{$v['法定代表人/主要负责人']} 职务：{$v['法人代表人/主要负责人职务']} 联系电话：{$v['联系电话']} 证件类型：{$v['原告证件类型']} 证件号码：{$v['原告证件号码']} 统一社会信用代码：{$v['统一社会信用代码']} 类型：{$companyType} 所有制性质：{$companyNature}"); } //委托诉讼人 $wtssr = (isset($content["委托诉讼代理人"]) && $content["委托诉讼代理人"])?$content["委托诉讼代理人"]:[ [ "姓名"=>"", "单位"=>"", "职务"=>"", "联系电话"=>"", "代理权限"=>"", ] ]; foreach ($wtssr as $key=>$v){ $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("委托诉讼代理人"); $lvshicell0 = $table->addCell(7200, $cellRowSpan); if($v['姓名']){ $lvshicell0->addText('有<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>'); }else{ $lvshicell0->addText('有<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'); } $lvshicell0->addText("姓名：{$v['姓名']} 单位：{$v['单位']} 职务：{$v['职务']} 联系电话：{$v['联系电话']} "); $lvshicell0->addText('一般授权 <w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r> 特别授权 <w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>____________'); if(!$v['姓名']){ $lvshicell0->addText('无<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>'); }else{ $lvshicell0->addText('无<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'); } } //遍历循环被告 至少包含一个被告 $beigao = isset($content["被告（自然人）"])?$content["被告（自然人）"]:[ [ "被告姓名"=>'', "被告性别"=>'', "被告证件类型"=>'', "被告证件号码"=>'', "被告出生日期"=>'', "被告年龄"=>'', "被告民族"=>'', "被告工作单位"=>'', "被告职务"=>'', "被告住所地"=>'', "被告联系电话"=>'', ] ]; foreach ($beigao as $key=>$v){ $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("被告（自然人）"); $sexStr = $this->parseSex($v['被告性别']); $table->addCell(7200, $cellRowSpan)->addText("姓名：{$v['被告姓名']} 性别：{$sexStr} 证件类型：{$v['被告证件类型']} 证件号码：{$v['被告证件号码']} 出生日期：{$v['被告出生日期']} 年龄：{$v['被告年龄']} 民族：{$v['被告民族']} 工作单位：{$v['被告工作单位']} 职业：{$v['被告职务']} 住所地：{$v['被告住所地']} 联系电话：{$v['被告联系电话']}"); } //遍历循环被告 至少包含一个原告 $beigaoFaren = isset($content["被告（法人、非法人组织）"])?$content["被告（法人、非法人组织）"]:[ [ "单位名称"=>'', "单位所在地"=>'', "法定代表人/主要负责人"=>'', "法人代表人/主要负责人职务"=>'', "联系电话"=>'', "被告证件类型"=>'', "被告证件号码"=>'', "统一社会信用代码"=>'', "单位性质"=>'', "所有制性质"=>'', ] ]; foreach ($beigaoFaren as $key=>$v){ $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("被告（法人、非法人组织）"); $companyType = $this->parseCompanyType($v['单位性质']); $companyNature = $this->parseCompanyNature($v['所有制性质']); $table->addCell(7200, $cellRowSpan)->addText("名称：{$v['单位名称']} 住所地（主要办事机构所在地）：{$v['单位所在地']} 法定代表人/主要负责人：{$v['法定代表人/主要负责人']} 职务：{$v['法人代表人/主要负责人职务']} 联系电话：{$v['联系电话']} 证件类型：{$v['被告证件类型']} 证件号码：{$v['被告证件号码']} 统一社会信用代码：{$v['统一社会信用代码']} 类型：{$companyType} 所有制性质：{$companyNature}"); } //遍历循环第三人 $disanren = isset($content["第三人（自然人）"])?$content["第三人（自然人）"]:[ [ "姓名"=>'', "性别"=>'', "证件类型"=>'', "证件号码"=>'', "出生日期"=>'', "年龄"=>'', "民族"=>'', "工作单位"=>'', "职务"=>'', "住所地"=>'', "联系电话"=>'', ] ]; foreach ($disanren as $key=>$v){ $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("第三人（自然人）"); $sexStr = $this->parseSex($v['性别']); $table->addCell(7200, $cellRowSpan)->addText("姓名：{$v['姓名']} 性别：{$sexStr} 证件类型：{$v['证件类型']} 证件号码：{$v['证件号码']} 出生日期：{$v['出生日期']} 年龄：{$v['年龄']} 民族：{$v['民族']} 工作单位：{$v['工作单位']} 职务：{$v['职务']} 住所地：{$v['住所地']} 联系电话：{$v['联系电话']}"); } //遍历循环 $beigaoFaren = isset($content["第三人（法人、非法人组织）"])?$content["第三人（法人、非法人组织）"]:[ [ "单位名称"=>'', "单位所在地"=>'', "法定代表人/主要负责人"=>'', "法人代表人/主要负责人职务"=>'', "联系电话"=>'', "被告证件类型"=>'', "被告证件号码"=>'', "统一社会信用代码"=>'', "单位性质"=>'', "所有制性质"=>'', ] ]; foreach ($beigaoFaren as $key=>$v){ $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("第三人（法人、非法人组织）"); $companyType = $this->parseCompanyType($v['单位性质']); $companyNature = $this->parseCompanyNature($v['所有制性质']); $table->addCell(7200, $cellRowSpan)->addText("名称：{$v['单位名称']} 住所地（主要办事机构所在地）：{$v['单位所在地']} 法定代表人/主要负责人：{$v['法定代表人/主要负责人']} 职务：{$v['法人代表人/主要负责人职务']} 联系电话：{$v['联系电话']} 证件类型：{$v['被告证件类型']} 证件号码：{$v['被告证件号码']} 统一社会信用代码：{$v['统一社会信用代码']} 类型：{$companyType} 所有制性质：{$companyNature}"); } $table->addRow(500); $cell1 = $table->addCell(9200, $cellRowSpan); $cell1->addText("诉讼请求和依据", array('size' => 18, 'bold'=>true), $paragraphStyleName); $cell1->addText("（原告为卖方时，填写第1项、第2项；原告为买方时，填写第3项、第4项；第5项至第10项为共同项）", array('size' => 12), $paragraphStyleName); $cell1->getStyle()->setGridSpan(2); $table->addRow(500); $cell1 = $table->addCell(9200, $cellRowSpan); if($content['诉讼请求']){ $cell1->addText($content['诉讼请求']); }else{ $cell1->addText("（可完整表述诉讼请求；为方便、准确梳理要点，相关内容请在下方要素式表格中填写）"); } $cell1->getStyle()->setGridSpan(2); //诉讼依据 $geifujiakuan = $yanchiweiyuejin = $qingqiuqingchang = ""; $peichangjin = $weiyueleixing = $jutiqingxing = $sunshijisuan = $xiacizeren = $xicizerenleixing = ''; if(isset($content['原告身份'])){ if($content['原告身份'] == '卖方'){ $geifujiakuan = $content['给付价款']; $yanchiweiyuejin = $content['迟延给付价款的利息（违约金）']; $qingqiuqingchang = $this->parseYesOrNo($content['是否请求支付至实际清偿之日']); }elseif($content['原告身份'] == '买方'){ $peichangjin = $content['支付赔偿金']; if($content['是否请求支付违约金'] == '迟延履行'){ $weiyueleixing = "<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>迟延履行 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>不履行 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他"; }elseif($content['是否请求支付违约金'] == '不履行'){ $weiyueleixing = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>迟延履行 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>不履行 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他"; }elseif($content['是否请求支付违约金'] == '其他'){ $weiyueleixing = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>迟延履行 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>不履行 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>其他"; }else{ $weiyueleixing = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>迟延履行 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>不履行 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他"; } $jutiqingxing = $content['具体情形']; $sunshijisuan = $content['损失计算依据']; $xiacizeren = $this->parseYesOrNo($content['是否对标的物的瑕疵承担责任']); if($content['对标的物的瑕疵责任承担方式'] == '修理'){ $xicizerenleixing = "<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>修理 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>重作 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>更换 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>退货 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>减少价款或者报酬 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他"; }elseif($content['是否请求支付违约金'] == '重作'){ $xicizerenleixing = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>修理 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>重作 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>更换 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>退货 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>减少价款或者报酬 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他"; }elseif($content['是否请求支付违约金'] == '更换'){ $xicizerenleixing = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>修理 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>重作 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>更换 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>退货 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>减少价款或者报酬 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他"; }elseif($content['是否请求支付违约金'] == '退货'){ $xicizerenleixing = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>修理 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>重作 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>更换 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>退货 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>减少价款或者报酬 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他"; }elseif($content['是否请求支付违约金'] == '减少价款或者报酬'){ $xicizerenleixing = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>修理 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>重作 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>更换 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>退货 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>减少价款或者报酬 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他"; }elseif($content['是否请求支付违约金'] == '其他'){ $xicizerenleixing = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>修理 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>重作 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>更换 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>退货 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>减少价款或者报酬 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>其他"; }else{ $xicizerenleixing = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>修理 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>重作 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>更换 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>退货 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>减少价款或者报酬 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他"; } } $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("1.给付价款（元）"); $table->addCell(7200, $cellRowSpan)->addText($geifujiakuan."元（人民币，下同：如外币需特别注明）；"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("2.迟延给付价款的利息（违约金）"); $table->addCell(7200, $cellRowSpan)->addText("截至止，迟延给付价款的利息元、违约金{$yanchiweiyuejin}元；自之后的逾期利息、违约金，以 元为基数按照标准计算； 计算方式： 是否请求支付至实际清偿之日止：{$qingqiuqingchang}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("3.赔偿因卖方违约所受的损失"); $table->addCell(7200, $cellRowSpan)->addText("支付赔偿金{$peichangjin}元 违约类型：{$weiyueleixing} 具体情形：{$jutiqingxing} 损失计算依据：{$sunshijisuan}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("4.是否对标的物的瑕疵承担责任"); $table->addCell(7200, $cellRowSpan)->addText("{$xiacizeren} {$xicizerenleixing}"); } $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("5.要求继续履行或是解除合同"); $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>继续履行 日内履行完毕 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>付款 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>供货 义务 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>判令解除合同 确认买卖合同已于{$content['解除日期']}解除"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("6.是否主张担保权利"); $zzdbql = $this->parseYesOrNo($content['是否主张担保权利']); if($content['是否主张担保权利'] == '是'){ $content['是否主张担保权利'] = ''; } $table->addCell(7200, $cellRowSpan)->addText("{$zzdbql} 内容：{$content['是否主张担保权利']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("7.是否主张实现债权的费用"); $zzzqfy = $this->parseYesOrNo($content['是否主张实现债权的费用']); if($content['是否主张实现债权的费用'] == '是'){ $content['是否主张实现债权的费用'] = ''; } $table->addCell(7200, $cellRowSpan)->addText("{$zzzqfy} 费用明细：{$content['是否主张实现债权的费用']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("8.是否主张诉讼费用"); $sfzzssf = $this->parseYesOrNo($content['是否主张诉讼费用']); $table->addCell(7200, $cellRowSpan)->addText("{$sfzzssf}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("9.其他请求"); $table->addCell(7200, $cellRowSpan)->addText($content['其他请求']); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("10.标的总额"); $table->addCell(7200, $cellRowSpan)->addText($content['标的总额']); $table->addRow(500); $cell1 = $table->addCell(9200, $cellRowSpan); $cell1->addText("约定管辖和诉前保全", array('size' => 18, 'bold'=>true), $paragraphStyleName); $cell1->getStyle()->setGridSpan(2); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("1.有无仲裁、法院管辖约定"); if($content['有无仲裁、法院管辖规定']){ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>有 合同条款及内容：{$content['有无仲裁、法院管辖规定']} <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>无"); }else{ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>有 合同条款及内容： <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>无"); } $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("2.是否申请诉前保全"); if($content['是否已经诉前保全']){ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>是 {$content['是否已经诉前保全']} <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否 （如申请诉讼保全，请另行提交诉讼保全申请及相关材料）"); }else{ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 保全法院： 保全时间： 保全案号： <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>否 （如申请诉讼保全，请另行提交诉讼保全申请及相关材料）"); } $table->addRow(500); $cell1 = $table->addCell(9200, $cellRowSpan); $cell1->addText("事实和理由", array('size' => 18), $paragraphStyleName); $cell1->getStyle()->setGridSpan(2); $table->addRow(500); $cell1 = $table->addCell(9200, $cellRowSpan); if($content['事实与理由']){ $cell1->addText($content['事实与理由']); }else{ $cell1->addText("（可完整表述纠纷涉及的事实与理由；为方便、准确梳理要点，相关内容请在下方要素式表格中填写）"); } $cell1->getStyle()->setGridSpan(2); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("1.合同的签订情况(名称、编号、签订时间、地点等;如无书面合同,请注明“无书面合同”)"); $table->addCell(7200, $cellRowSpan)->addText($content['合同签订情况']); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("2.合同主体"); $table->addCell(7200, $cellRowSpan)->addText("出卖人（卖方）：{$content['出卖人（卖方）']} 买受人（买方）：{$content['买受人（买方）']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("3.买卖标的物情况（标的物名称、规格、质量、数量等）"); $table->addCell(7200, $cellRowSpan)->addText($content['买卖标的物情况']); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("4.合同约定的价格及支付方式"); $table->addCell(7200, $cellRowSpan)->addText("单价{$content['合同约定的单价']}元；总价{$content['合同约定的总价']}元； 以<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>现金<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>转账<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>票据（写明票据类型）<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>其他 方式 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>一次性<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>分期支付 分期方式：{$content['分期方式']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("5.合同约定的交货时间、地点、方式、风险承担、安装、调试、验收"); $table->addCell(7200, $cellRowSpan)->addText($content['合同约定信息']); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("6.合同约定的质量标准及检验方式、质量异议期限"); $table->addCell(7200, $cellRowSpan)->addText($content['合同约定的质量标准及检验方式、质量异议期限']); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("7.合同约定的违约金（定金）"); $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>违约金 元（合同条款：第 条） <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>定金 元（合同条款：第 条） <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>迟延履行违约金 %/日（合同条款：第 条） "); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("8.价款支付及标的物交付情况"); $table->addCell(7200, $cellRowSpan)->addText("按期支付价款 元，逾期付款 元，逾期未付款 元 按期交付标的物 件，逾期交付 件，逾期未交付 件"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("9.是否存在延迟履行"); $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 延迟时间： <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>逾期付款<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>逾期交货 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("10.是否催促过履行"); $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 催促情况： 年 月 日通过 方式进行了催促 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("11.买卖合同标的物有无质量争议"); $bzwzlzy = $this->parseYesOrNo($content['买卖合同标的物有无质量争议']); if($content['买卖合同标的物有无质量争议'] == '是' || $content['买卖合同标的物有无质量争议'] == '有'){ $content['买卖合同标的物有无质量争议'] = ''; } $table->addCell(7200, $cellRowSpan)->addText("{$bzwzlzy} 具体情况：{$content['买卖合同标的物有无质量争议']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("12.标的物质量规格或履行方式是否存在不符合约定的情况"); $lxfsbf = $this->parseYesOrNo($content['标的物质量规格或履行方式是否存在不符合约定的情况']); if($content['标的物质量规格或履行方式是否存在不符合约定的情况'] == '是' || $content['标的物质量规格或履行方式是否存在不符合约定的情况'] == '有'){ $content['标的物质量规格或履行方式是否存在不符合约定的情况'] = ''; } $table->addCell(7200, $cellRowSpan)->addText("{$lxfsbf} 具体情况：{$content['标的物质量规格或履行方式是否存在不符合约定的情况']}"); /*$table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>有 具体情况：{$content['标的物质量规格或履行方式是否存在不符合约定的情况']} <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>无");*/ $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("13.是否曾就标的物质量问题进行协商"); //$table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>有 具体情况：{$content['是否曾就标的物质量问题进行协商']} <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>无"); $zlwtxs = $this->parseYesOrNo($content['是否曾就标的物质量问题进行协商']); if($content['是否曾就标的物质量问题进行协商'] == '是' || $content['是否曾就标的物质量问题进行协商'] == '有'){ $content['是否曾就标的物质量问题进行协商'] = ''; } $table->addCell(7200, $cellRowSpan)->addText("{$zlwtxs} 具体情况：{$content['是否曾就标的物质量问题进行协商']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("14.是否通知解除合同"); //$table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>有 具体情况：{$content['是否通知解除合同']} <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>无"); $sftzjcht = $this->parseYesOrNo($content['是否通知解除合同']); if($content['是否通知解除合同'] == '是' || $content['是否通知解除合同'] == '有'){ $content['是否通知解除合同'] = ''; } $table->addCell(7200, $cellRowSpan)->addText("{$sftzjcht} 具体情况：{$content['是否通知解除合同']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("15.被告应当支付的利息、违约金、赔偿金"); $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>利息 {$content['被告应当支付的利息、违约金、赔偿金']['利息']} 元 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>违约金 {$content['被告应当支付的利息、违约金、赔偿金']['违约金']} 元 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>赔偿金 {$content['被告应当支付的利息、违约金、赔偿金']['赔偿金']} 元 共计{$content['被告应当支付的利息、违约金、赔偿金']['共计']}元 计算方式：{$content['被告应当支付的利息、违约金、赔偿金']['计算方式']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("16.是否签订物的担保（抵押、质押）合同"); $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 签订时间：{$content['是否签订物的担保（抵押、质押）合同']} <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("17.担保人、担保物"); $table->addCell(7200, $cellRowSpan)->addText("担保人：{$content['担保人']} 担保物：{$content['担保物']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("18.是否最高额担保（抵押、质押）"); $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 担保债权的确定时间：{$content['是否最高额担保（抵押、质押）']['担保债权的确定时间']} 担保额度：{$content['是否最高额担保（抵押、质押）']['担保额度']} <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("19.是否办理抵押、质押登记"); $sfbldy = "<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>正式登记 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>预告登记 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否"; if($content['抵押、质押登记登记方式']){ if($content['抵押、质押登记登记方式'] == '正式登记'){ $sfbldy = "<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>是 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>正式登记 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>预告登记 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否"; }elseif($content['抵押、质押登记登记方式'] == '预告登记'){ $sfbldy = "<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>是 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>正式登记 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>预告登记 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否"; } } $table->addCell(7200, $cellRowSpan)->addText("{$sfbldy}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("20.是否签订保证合同"); if($content['是否签订保证合同']['保证人']){ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>是 签订时间：{$content['是否签订保证合同']['签订时间']} 保证人： {$content['是否签订保证合同']['保证人']} 主要内容：{$content['是否签订保证合同']['保证合同主要内容']} <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否"); }else{ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 签订时间： 保证人： 主要内容： <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>否"); } $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("21.保证方式"); if($content['是否签订保证合同']['保证方式'] == '一般保证'){ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>一般保证 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>连带责任保证"); }else if($content['是否签订保证合同']['保证方式'] == '连带责任保证'){ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>一般保证 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>连带责任保证"); }else{ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>一般保证 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>连带责任保证"); } $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("22.其他担保方式"); if($content['其他担保方式']['担保形式']){ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>是 形式：{$content['其他担保方式']['担保形式']} 签订时间：{$content['其他担保方式']['签订时间']} <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>连带责任保证"); }else{ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 形式： 签订时间： <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>连带责任保证"); } $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("23.请求承担责任的依据"); $table->addCell(7200, $cellRowSpan)->addText("合同约定：{$content['请求承担责任的合同约定']} 法律规定：{$content['请求承担责任的法律规定']}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("24.其他需要说明的内容"); $table->addCell(7200, $cellRowSpan)->addText($content['其他需要说明的内容']); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("25.证据清单"); $table->addCell(7200, $cellRowSpan)->addText($content['证据清单']); $table->addRow(500); $cell1 = $table->addCell(9200, $cellRowSpan); $cell1->addText("对纠纷解决方式的意愿", array('size' => 18, 'bold'=>true), $paragraphStyleName); $cell1->getStyle()->setGridSpan(2); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("是否了解调解作为非诉讼纠纷解决方式，能及时、高效、低成本、不伤和气地解决纠纷"); $isKnow = $this->parseIsKnow($content['对纠纷解决方式的意愿']['是否了解调解作为非诉讼纠纷解决方式，能及时、高效、低成本、不伤和气地解决纠纷']); $table->addCell(7200, $cellRowSpan)->addText("{$isKnow}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("是否了解先行调解解决纠纷的好处"); $isKnow1 = $this->parseIsKnow($content['对纠纷解决方式的意愿']['立案后选择先行调解的，可以很快启动调解程序。如不同意调解，法院将依程序开庭审理案件，但可能需要经过较长一段时间的排期等待，且审理、执行周期相对较长']); $isKnow2 = $this->parseIsKnow($content['对纠纷解决方式的意愿']['选择先行调解，调解成功且自动履行的免交诉讼费用，申请司法确认的不交纳诉讼费用，要求出具调解书的减半交纳诉讼费用']); $isKnow3 = $this->parseIsKnow($content['对纠纷解决方式的意愿']['首次调解不成功，但仍有继续调解意愿的，可以选择更换调解组织和调解员再进行调解。调解无法达成一致意见的，法院将依程序排期开庭']); $isKnow4 = $this->parseIsKnow($content['对纠纷解决方式的意愿']['依照法律规定，调解具有保密性要求，调解过程不公开，调解协议未经当事人同意不得公开']); $isKnow5 = $this->parseIsKnow($content['对纠纷解决方式的意愿']['调解达成的协议具有法律效力，可以依照法律规定申请司法确认，具有强制执行效力']); $table->addCell(7200, $cellRowSpan)->addText("1. 立案后选择先行调解的，可以很快启动调解程序。如不同意调解，法院 将依程序开庭审理案件，但可能需要经过较长一段时间的排期等待，且审理、执行周期相对较长。 {$isKnow1} 2. 选择先行调解，调解成功且自动履行的免交诉讼费用，申请司法确认的不交纳诉讼费用，要求出具调解书的减半交纳诉讼费用。 {$isKnow2} 3. 首次调解不成功，但仍有继续调解意愿的，可以选择更换调解组织和调解员再进行调解。调解无法达成一致意见的，法院将依程序排期开庭。 {$isKnow3} 4. 依照法律规定，调解具有保密性要求，调解过程不公开，调解协议未经当事人同意不得公开。 {$isKnow4} 5. 调解达成的协议具有法律效力，可以依照法律规定申请司法确认，具有强制执行效力。 {$isKnow5}"); $table->addRow(500); $table->addCell(2000, $cellRowSpan)->addText("是否考虑先行调解"); if($content['对纠纷解决方式的意愿']['是否考虑先行调解'] == '是'){ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>是 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>暂不确定，想要了解更多内容"); }elseif($content['对纠纷解决方式的意愿']['是否考虑先行调解'] == '否'){ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>否 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>暂不确定，想要了解更多内容"); }elseif($content['对纠纷解决方式的意愿']['是否考虑先行调解'] == '暂不确定'){ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否 <w:r><w:sym w:font='Wingdings' w:char='00FE'/></w:r>暂不确定，想要了解更多内容"); }else{ $table->addCell(7200, $cellRowSpan)->addText("<w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>是 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>否 <w:r><w:sym w:font='Wingdings' w:char='00A8'/></w:r>暂不确定，想要了解更多内容"); } $section->addText(" 具状人 （签字、盖章）： ", [], ['alignment' => Jc::END]); $section->addText("日期：".date("Y-m-d").' ', [], ['alignment' => Jc::END]); //生成 $phpWord->save($savePath); return $savePath; } /** * 解析性别 * @param $value * @return string */ public function parseSex($value='') { $str = '男<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>女<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'; if($value=='男'){ $str = '男<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>女<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'; }elseif($value=='女'){ $str = '男<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>女<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>'; } return $str; } /** * 解析企业类型 * @param $value * @return string */ public function parseCompanyType($value='') { $typeArr = ["有限责任公司", "股份有限公司", "上市公司", "其他企业法人", "事业单位", "社会团体", "基金会", "社会服务机构", "机关法人", "农村集体经济组织法人", "城镇农村的合作经济组织法人", "基层群众性自治组织法人", "个人独资企业", "合伙企业", "不具有法人资格的专业服务机构"]; $str = ''; //如value包含在typeArr中，则对应标记为选中 foreach ($typeArr as $k=>$v){ if($value == $v){ $str .= '<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>'.$v; }else{ $str .= '<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'.$v; } } return $str; } /** * 解析企业性质 * @param $value * @return string */ public function parseCompanyNature($value='') { $typeArr = ["国有控股", "国有参股", "民营"]; $str = ''; //如value包含在typeArr中，则对应标记为选中 foreach ($typeArr as $k=>$v){ if($value == $v){ $str .= '<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>'.$v; }else{ $str .= '<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'.$v; } } $str .= "其他_______"; return $str; } /** * 解析是否复选框 * @param string $value * @return string */ public function parseYesOrNo($value='') { if($value == '是'){ $str = '是<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>否<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'; }elseif($value == '否'){ $str = '是<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>否<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>'; }else{ $str = '是<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>否<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'; } return $str; } /** * 解析是否了解复选框 * @param string $value * @return string */ public function parseIsKnow($value='') { if($value == '了解'){ $str = '了解<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>不了解<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'; }elseif($value == '不了解'){ $str = '了解<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>不了解<w:r><w:sym w:font="Wingdings" w:char="00FE"/></w:r>'; }else{ $str = '了解<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>不了解<w:r><w:sym w:font="Wingdings" w:char="00A8"/></w:r>'; } return $str; } }
瀚高数据库安全版 V4.5.8 以及后续版本，license 文件可分别管控瀚高安全版数据库、瀚高高可用集群(db_ha)，瀚高读写分离集群(hg_proxy)。上传 license将 license文件上传到服务器任意目录下检查 license使用 hg_lic -c -F $filepath 来对指定 $filepath license 文件进行检查操作，该操作将会输出对 license 文件的检查结果，如果检查出现问题，将会提示 license 文件异常。如果一切正常将会输出 license 信息，包括 license 编号、license 状态、用户信息、授权方式、授权用途、申请日期、产品名称、产品版本、产品有效期。chmod 0600 /opt/highgo/hgdb-see-4.5.8/etc/lic/hgdb.lic hg_lic -c -F /opt/highgo/hgdb-see-4.5.8/etc/lic/hgdb.lic加载license使用 hg_lic -l -P $HGDB_HOME -F $filepath 来对指定文件 $filepath 进行加载操作，若配置了 $HGDB_HOME 环境变量，-P 参数可以省略。该操作会对许可证文件进行检查，如果许可证文件异常，将会提示。如果许可证一切正常，该操作会将许可证文件加载到数据库中。
什么是归档（Archiving）？归档是指将过时或不再频繁使用的数据迁移到存储介质的过程。 PostgreSQL支持通过归档机制保存事务日志（WAL），以便在需要时进行数据库的恢复。这是确保数据安全和完整性的重要措施。使用PostgreSQL的archive_command功能，你能够增强数据安全性，确保在发生故障时能够快速恢复。[...]
jq 是一个轻量级、功能强大的 JSON 解析工具，专门用于 查询、格式化、修改 JSON 数据。安装yum install -y jq或直接下载二进制文件[...]
两步验证（Two-Factor Authentication，2FA）是一种增加账户安全性的方式，它要求用户提供两种不同类型的身份验证凭据才能访问服务或数据。这种核心思想建立在“知道”和“拥有”两种安全因素上：一种是用户知道的信息（如密码或PIN码），另一种是用户拥有的物理设备（如手机或安全令牌）。这样，即使攻击者窃取了用户的密码，没有物理设备也无法完成认证过程。多因素认证（MFA）的实现主要包含以下几个核心环节和技术要点，其流程设计兼顾安全性与用户体验：一、核心实现流程MFA 实现需平衡安全性与易用性，生物识别虽便捷但需考虑隐私合规（如 GDPR 生物数据特殊保护）。密钥初始化与绑定‌用户启用 MFA 时，系统生成唯一密钥（如 Base32 编码字符串），并通过加密 QR 码展示给用户扫描绑定认证器（如 Google Authenticator、Authy）。密钥安全存储于服务器端，并与用户账号关联。[...]
js变量间赋值，修改变量值后原变量随之改变问题
vue项目的开发过程中，需要多次用到一份基础数据，为减少代码量，提高一下复用效果，便用变量A来定义，在项目中需要用到时就用变量A进行赋值。在项目中调用时，新定义一个变量B，再将变量A赋值给变量B，即B=A；期望的效果是，赋值之后，A和B是两份数据，对变量B进行操作时不影响变量A。B=A的方式只是将B指向A的存储地址，实际上只有同一份数据，因此无论修改A还是B都是会互相影响的。解决方法：B = JSON.parse(JSON.stringify(A))
需要对3000余套律所OA系统进行迁移，按天逐步迁移。基本流程如下：1.申请瀚高测试license兼容适配2.适配前对现有系统进行升级，提高后期迁移效率3.编写相关脚本[...]