diff --git a/Laravel/app/Http/Controllers/API/H5/FenzhenController.php b/Laravel/app/Http/Controllers/API/H5/FenzhenController.php index 1b977ce..2d3757b 100644 --- a/Laravel/app/Http/Controllers/API/H5/FenzhenController.php +++ b/Laravel/app/Http/Controllers/API/H5/FenzhenController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\API\H5; use App\Http\Controllers\API\AspNetZhuanController; use App\Http\Controllers\Controller; +use App\Services\ComboItemGroupService; use Illuminate\Database\Schema\Blueprint; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -17,8 +18,18 @@ class FenzhenController extends Controller public function abandon() { // 这里放 弃检逻辑 + $id = request('id'); + $xmid = request('xmid'); + $orderInfo=DB::table('orders')->where('id',$id)->first(); + if(!$orderInfo) return \Yz::echoError1("订单不存在"); + $service = new ComboItemGroupService(); + $q=$service->QiJian($orderInfo->tj_number,$orderInfo->name,[$xmid]); + if($q['status']===true){ + return \Yz::Return(true, "弃检成功",[]); + }else{ + return \Yz::echoError1($q['msg']); + } - return \Yz::Return(true, "弃检成功"); } public function check() @@ -52,7 +63,7 @@ class FenzhenController extends Controller 'clinics' => $clinics ]); $person_ghzid = ''; - $person_info = DB::table('web_user_person')->where('id', $info->person_id)->first(); + $person_info = DB::table('web_user_person')->where('id', $info->web_user_id)->first(); if (!!$person_info) { $person_ghzid = $person_info->ghzid; } @@ -232,7 +243,7 @@ class FenzhenController extends Controller 'check_date' => $info->appointment_date, 'start_time' => $res['data']['start_time'] . ':00', 'end_time' => $res['data']['end_time'], - 'qrcode' => '', + 'qrcode' => $person_ghzid, 'tj_number' => $info->tj_number, 'ghzid' => $person_ghzid, 'code' => $info->appointment_number, @@ -249,7 +260,7 @@ class FenzhenController extends Controller 'check_date' => $info->appointment_date, 'start_time' => $info->appointment_time, 'end_time' => $end_time, - 'qrcode' => '', + 'qrcode' => $person_ghzid, 'ghzid' => $person_ghzid, 'tj_number' => $info->tj_number, 'code' => $info->appointment_number, @@ -285,7 +296,7 @@ class FenzhenController extends Controller 'check_date' => $info->appointment_date, 'start_time' => $info->appointment_time, 'end_time' => '10:25', - 'qrcode' => '', + 'qrcode' => $person_ghzid, 'ghzid' => $person_ghzid, 'tj_number' => $info->tj_number, 'code' => $info->appointment_number, diff --git a/Laravel/app/Http/Controllers/API/H5/OrderController.php b/Laravel/app/Http/Controllers/API/H5/OrderController.php index e217ecc..c0c6416 100644 --- a/Laravel/app/Http/Controllers/API/H5/OrderController.php +++ b/Laravel/app/Http/Controllers/API/H5/OrderController.php @@ -23,7 +23,7 @@ class OrderController extends Controller $persons_sfz = DB::table('web_user_person')->where(['user_id' => $user->id, 'is_del' => 0])->pluck('id_number')->toArray(); $OrderList = DB::table('orders') - ->select('id', 'title', 'status', 'name', 'appointment_time as time', 'order_number as order', + ->select('id', 'title', 'status', 'name', 'appointment_time as time', 'order_number as order','appointment_number', DB::raw("CASE WHEN type = 1 THEN '个检' WHEN type = 2 THEN '团检' ELSE 'unknown' END as type"), 'price', 'true_price', 'pay_time', 'refund_time', 'created_at') ->where(['web_user_id' => $user->id]) diff --git a/Laravel/app/Http/Controllers/API/PEISApiController.php b/Laravel/app/Http/Controllers/API/PEISApiController.php index f05f2b7..5adcbf5 100644 --- a/Laravel/app/Http/Controllers/API/PEISApiController.php +++ b/Laravel/app/Http/Controllers/API/PEISApiController.php @@ -38,6 +38,7 @@ class PEISApiController extends Controller $api['修改用户预约时间'] = "{$url}/ExtAPI/SetAppointmentMoment?key=YmMxOGI2MDUxZmFh&{$code}"; $api['分诊查询体检号'] = "{$url}/PEISCommon/QueryEventNo?key=YmMxOGI2MDUxZmFh"; $api['报告时间计算'] = "{$url}/Home/CalcReportDays?eventNo={$code}"; + $api['弃检接口'] = "{$url}/Home/AbandonCheck"; } if($env=='dev') { //如果是测试环境 @@ -57,6 +58,7 @@ class PEISApiController extends Controller $api['预约时段修改'] = "{$url}/PEISCommon/ModifyAppointmentDTRange/{$code}"; $api['修改用户预约时间'] = "http://220.174.210.111:8888/ExtAPI/SetAppointmentMoment?key=YmMxOGI2MDUxZmFh&{$code}"; $api['分诊查询体检号'] = "{$url}/PEISCommon/QueryEventNo/{$code}"; + $api['弃检接口'] = "{$url}/Home/AbandonCheck/{$code}"; } diff --git a/Laravel/app/Http/Controllers/TestController.php b/Laravel/app/Http/Controllers/TestController.php index 673c091..74f11d6 100644 --- a/Laravel/app/Http/Controllers/TestController.php +++ b/Laravel/app/Http/Controllers/TestController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers; use App\Http\Controllers\API\AspNetZhuanController; use App\Http\Controllers\API\PEISApiController; use App\Http\Controllers\API\XCXApiController; +use App\Services\ComboItemGroupService; use App\Services\OrderService; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -16,20 +17,20 @@ class TestController extends Controller // $order= new OrderService(); // dd($order->DepartmentItemCount(173)); //退款------------------ - $data = [ - 'orderid' => '20241108112106776eslNJ2', - 'refund_order_id' => 'T' . '20241108112106776eslNJ2', - 'refund_amount' => 74900, - 'refund_reason' => "体检H5订单退款", - ]; - $XCX = new XCXApiController(); - $res = $XCX::Post('订单退款', $data); - if ($res['data']['refund_state'] != 'SUCCESS') { - return \Yz::echoError1("退款失败" . $res['data']['refund_state']); - } +// $data = [ +// 'orderid' => '20241108112106776eslNJ2', +// 'refund_order_id' => 'T' . '20241108112106776eslNJ2', +// 'refund_amount' => 74900, +// 'refund_reason' => "体检H5订单退款", +// ]; +// $XCX = new XCXApiController(); +// $res = $XCX::Post('订单退款', $data); +// if ($res['data']['refund_state'] != 'SUCCESS') { +// return \Yz::echoError1("退款失败" . $res['data']['refund_state']); +// } //-------------- - $aspnet=new AspNetZhuanController(); +// $aspnet=new AspNetZhuanController(); //优惠券----------------- // $data=[ // 'action'=>4, @@ -52,8 +53,13 @@ class TestController extends Controller // ]; // } -// $peis = new PEISApiController(); -// dd($peis::Get($peis::Api('报告时间计算',"2403020020"),"111111","报告时间计算")); + //弃检 + $service = new ComboItemGroupService(); + dd($service->QiJian("2411090001","张三",['1812'])); + + + // $peis = new PEISApiController(); + // dd($peis::Get($peis::Api('报告时间计算',"2403020020"),"111111","报告时间计算")); // $data=[ // 'action'=>4, // 'ghzid'=>'5a798c097bc64bd79c22050175e6236a', diff --git a/Laravel/app/Services/ComboItemGroupService.php b/Laravel/app/Services/ComboItemGroupService.php index 453bfc9..a7b0aa5 100644 --- a/Laravel/app/Services/ComboItemGroupService.php +++ b/Laravel/app/Services/ComboItemGroupService.php @@ -1,6 +1,7 @@ $tj_num, + "操作医生姓名"=>$username, + "取消弃检"=>false, + "收费项目Id列表"=>$ids + ]; + $url=$peis::Api("弃检接口","460107000001"); + $res_str=$peis::Post2("弃检接口",$url,1,$data); + $res = json_decode($res_str, true); + if($res['Success']===true){ + return ['status'=>true,'msg'=>$res['Message']]; + }else{ + return ['status'=>false,'msg'=>$res['Message']]; + } + + } } diff --git a/h5/pages/main/order/src/order.vue b/h5/pages/main/order/src/order.vue index 4c3496c..44d5388 100644 --- a/h5/pages/main/order/src/order.vue +++ b/h5/pages/main/order/src/order.vue @@ -1,393 +1,391 @@ + .order_wrapper { + position: relative; + width: 710rpx; + background: #ffffff; + box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0, 0, 0, 0.05); + border-radius: 10rpx; + margin: 0 auto; + padding-top: 35rpx; + margin-top: 16rpx; + } + \ No newline at end of file diff --git a/h5/pages/user/fenzhen/qijian.vue b/h5/pages/user/fenzhen/qijian.vue index 569b09f..8390a4a 100644 --- a/h5/pages/user/fenzhen/qijian.vue +++ b/h5/pages/user/fenzhen/qijian.vue @@ -22,13 +22,22 @@ // var x = 20; // var y = 20; import { $api, $response } from "@/api"; +import {onLoad} from "@dcloudio/uni-app"; export default { data() { return { ctx: "", //绘图图像 points: [], //路径点集合 + id:"", + xmid:"", + tj_number:"" }; }, + onLoad(e){ + this.id=e.id, + this.xmid=e.xmid, + this.tj_number=e.tj_number + }, mounted() { var canvas = document.getElementById("myCanvas"); console.log(canvas.offsetWidth); @@ -101,6 +110,7 @@ export default { //完成绘画并保存到本地 finish: function () { + var that=this uni.showLoading({ title: "加载中...", }); @@ -108,9 +118,12 @@ export default { canvasId: "mycanvas", success: async function (res) { let path = res.tempFilePath; - console.log(path); + console.log(that.id); let obj = { - path, + path:path, + id:that.id, + xmid:that.xmid, + tj_number:that.tj_number }; const response = await $api("FenzhenAbandon", obj); $response(response, () => { diff --git a/h5/pages/user/fenzhen/xindiantu.vue b/h5/pages/user/fenzhen/xindiantu.vue index fcfbd36..671452e 100644 --- a/h5/pages/user/fenzhen/xindiantu.vue +++ b/h5/pages/user/fenzhen/xindiantu.vue @@ -81,7 +81,7 @@ const qijian = (item) => { uni.navigateTo({ - url: `/pages/user/fenzhen/qijian?id=${$props.id}&xmid=${item.id}`, + url: `/pages/user/fenzhen/qijian?id=${$props.id}&xmid=${item.id}&tj_number=${fenzhen_time.value.info.tj_number}`, }); }; diff --git a/h5/uni_modules/wmf-code/README.md b/h5/uni_modules/wmf-code/README.md new file mode 100644 index 0000000..231b420 --- /dev/null +++ b/h5/uni_modules/wmf-code/README.md @@ -0,0 +1,84 @@ + +

文档地址

+
+

https://meet-ui.com/#/

+

为了能够第一时间解决问题,为了不影响各位在项目中使用特此提供微信群交流

+
+ + +
+ +# 温馨提示 + +如果使用cli创建的应用请在`vue.config.js`里面添加如下配置 +``` +module.exports = { + transpileDependencies: [ + /[/\\]node_modules[/\\](.+?)?@uni-ui(.*)[/\\]code-plugs/, + /[/\\]node_modules[/\\](.+?)?@uni-ui(.*)[/\\]code-ui/ + ] +} +``` +# 微信小程序特别说明 + +如果在弹窗里面使用,并且弹窗有动画 当弹窗显示的时候二维码会发生偏移或抖动 +因为微信小程序的canvas在真机预览渲染的是原生组件并不是 h5的canavas 所以在开发工具里面没问题但是真机会有问题 + +解决方案: + + 1. 如果是使用uView组件的弹窗 请关闭动画 + 2. 如果是使用uni-popup组件 关闭动画无效 因为uni的弹窗动画关闭 其实是动画时长为0并且是包含在uni-transition详情请查看uni-popup代码 + +## 如果是使用uni_modules而非Npm + +在`pages.json`里面配置如下 + +```js +"easycom": { + "^w-(.*)": "@/uni_modules/wmf-code/components/w-$1/w-$1.vue"//二维码条形码的配置 如果是uni_modules +}, +"pages": [ + //... +] +``` + +## 如果是使用npm而非uni_modules + +在`pages.json`里面配置如下 + +```js +"easycom": { + "^w-(.*)": "@uni-ui/code-ui/components/w-$1/index.vue"//二维码条形码的配置 如果是npm方式使用 +}, +"pages": [ + //... +] +``` + +## 条形码支持添加文字 + + + + +
+
+ + +
+
+ +# +
+
+ + +
+
+ +# +
+
+ + +
+
diff --git a/h5/uni_modules/wmf-code/changelog.md b/h5/uni_modules/wmf-code/changelog.md new file mode 100644 index 0000000..7d21184 --- /dev/null +++ b/h5/uni_modules/wmf-code/changelog.md @@ -0,0 +1,108 @@ +## 1.6.2(2022-10-24) +* 修复已知问题 +## 1.6.1(2022-10-19) +* 支付宝小程序适配问题 +* 修改文档 +## 1.6.0(2022-07-27) +* 修改条形码bug +## 1.5.9(2022-07-26) +* 修复条形码保存图片部分黑底问题 +## 1.5.8(2022-07-26) +* 修复支付宝小程序图片保存缺失问题 +## 1.5.7(2022-07-09) +* 修复条形码保存缺失问题 +## 1.5.6(2022-07-01) +修改引入错误 +## 1.5.5(2022-07-01) +* 修复vue3无法通过ref获取保存图片方法 +## 1.5.4(2022-06-01) +* 条形码支持添加文字 +## 1.5.3(2022-05-31) +* 修复二维码有时候无法识别问题 +* 建议使用npm方式 +## 1.5.2(2022-05-31) +修改条形码垂直方向生成图片 参数互换 +## 1.5.1(2022-05-31) +条形码增加垂直方向 默认水平方向 +## 1.5.0(2022-05-30) +修改uni_modules引入错误 +## 1.4.9(2022-05-25) +支持vue3 +## 1.4.8(2021-12-06) +* 百度小程序不支持canvas的arcTo方法 如果在百度小程序中不支持的全部默认值 +* 小程序平台绘制文字不支持渐变 取color数组第一个 +## 1.4.7(2021-12-05) +* 修复已知问题 +## 1.4.5(2021-12-05) +* 修复已知问题 +## 1.4.4(2021-11-30) +* level默认值修改为2 +## 1.4.3(2021-11-30) +* 修复引用js_sdk引用路径 +## 1.4.2(2021-11-29) +* 修复设置画布大小时没有带单位px导致显示不全 +## 1.4.1(2021-11-29) +1. 修复在高分辨率屏幕上支付宝小程序显示模糊问题 +2. 修复保存相册图片模糊问题 +## 1.4.0(2021-11-23) +1. 使用TS重构 +2. 新增二维码文字绘制 +3. 新增二维码padding +4. 新增二维码中间图片圆角 圆形 +5. 新增长按事件 +6. 二维码边框支持透明 +7. 颜色最多支持10中颜色渐变 +## 1.3.7(2021-11-08) +修改引入 +## 1.3.6(2021-11-02) +修改引用路径 +## 1.3.5(2021-10-19) +canvas 增加 type="2d" +## 1.3.4(2021-10-14) +1. 修改百度小程序修改参数无法重新渲染问题 +2. 修改纯中文无法识别问题 +## 1.3.3(2021-09-04) +修改uni_module引用路径 +## 1.3.2(2021-09-03) +* 【重要】多个条形码或者二维码同时渲染 +* 增加示例 +## 1.3.1(2021-08-31) +uni_modules支持组件方式 +## 1.3.0(2021-08-31) +支持纯文字以及文字数字 字母的混合 +## 1.2.9(2021-08-30) +新增二维码创建成功回调方法中返回生成的二维码图片 +## 1.2.8(2021-08-20) +支持vue3 +## 1.2.7(2021-08-20) +修改版本号 +## 1.2.6(2021-06-28) +1. 修改自定义组件时微信小程序无法显示二维码的问题 +2. 统一二维码的大小单位为rpx +## 1.2.5(2021-06-25) +二维码logo大小增加默认值:30 +## 1.2.4(2021-06-24) +1. nvue 二维码支持渐变色 +## 1.2.3(2021-06-23) +1. 修改app不支持颜色渐变问题 +2. 修改判断方式Object.prototype.toString.call() +## 1.2.2(2021-06-23) +修改插件描述 +## 1.2.1(2021-06-23) +修改return 错误 +## 1.1.2(2021-06-23) +修改文档 +## 1.1.1(2021-06-23) + 二维码支持渐变色 +## 1.0.8(2021-06-22) +兼容nvue +## 1.0.7(2021-06-09) +1. 修改保存二维码图片的方法名以及传参方式 +2. 修改微信小程序保存二维码时显示为黑色 +3. 二维码增加参数 +## 1.0.6(2021-06-04) +修改 description说明 +## 1.0.5(2021-06-04) +修改文档展示名称 +## 1.0.4(2021-06-04) +修改符合uni_modules规范 diff --git a/h5/uni_modules/wmf-code/common/helper.js b/h5/uni_modules/wmf-code/common/helper.js new file mode 100644 index 0000000..b150cd7 --- /dev/null +++ b/h5/uni_modules/wmf-code/common/helper.js @@ -0,0 +1,105 @@ +// 判断arr是否为一个数组,返回一个bool值 +function isArray(arr) { + return Object.prototype.toString.call(arr) === '[object Array]'; +} +// 深度克隆 +function deepClone(obj) { + // 对常见的“非”值,直接返回原来值 + if ([null, undefined, NaN, false].includes(obj)) return obj; + if (typeof obj !== "object" && typeof obj !== 'function') { + //原始类型直接返回 + return obj; + } + var o = isArray(obj) ? [] : {}; + for (let i in obj) { + if (obj.hasOwnProperty(i)) { + o[i] = typeof obj[i] === "object" ? deepClone(obj[i]) : obj[i]; + } + } + return o; +} + +function getUUid(len = 32, firstU = true, radix = null) { + let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); + let uuid = []; + radix = radix || chars.length; + + if (len) { + // 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位 + for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix]; + } else { + let r; + // rfc4122标准要求返回的uuid中,某些位为固定的字符 + uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; + uuid[14] = '4'; + + for (let i = 0; i < 36; i++) { + if (!uuid[i]) { + r = 0 | Math.random() * 16; + uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; + } + } + } + // 移除第一个字符,并用u替代,因为第一个字符为数值时,该guuid不能用作id或者class + if (firstU) { + uuid.shift(); + return 'u' + uuid.join(''); + } else { + return uuid.join(''); + } +} +function platform () { + let val = null; + // #ifdef VUE3 + val = 'VUE3' + // #endif + // #ifdef APP-PLUS + val = 'APP-PLUS' + // #endif + // #ifdef APP-PLUS-NVUE || APP-NVUE + val = 'NVUE' + // #endif + // #ifdef H5 + val = 'H5' + // #endif + // #ifdef MP-WEIXIN + val = 'MP-WEIXIN' + // #endif + // #ifdef MP-ALIPAY + val = 'MP-ALIPAY' + // #endif + // #ifdef MP-BAIDU + val = 'MP-BAIDU' + // #endif + // #ifdef MP-TOUTIAO + val = 'MP-TOUTIAO' + // #endif + // #ifdef MP-LARK + val = 'MP-LARK' + // #endif + // #ifdef MP-TOUTIAO + val = 'MP-QQ' + // #endif + // #ifdef MP-KUAISHOU + val = 'MP-KUAISHOU' + // #endif + // #ifdef MP-360 + val = 'MP-360' + // #endif + // #ifdef QUICKAPP-WEBVIEW + val = 'QUICKAPP-WEBVIEW' + // #endif + // #ifdef QUICKAPP-WEBVIEW-UNION + val = 'QUICKAPP-WEBVIEW-UNION' + // #endif + // #ifdef QUICKAPP-WEBVIEW-HUAWEI + val = 'QUICKAPP-WEBVIEW-HUAWEI' + // #endif + return val; + +} +export { + deepClone, + getUUid, + platform +}; diff --git a/h5/uni_modules/wmf-code/components/w-barcode/w-barcode.vue b/h5/uni_modules/wmf-code/components/w-barcode/w-barcode.vue new file mode 100644 index 0000000..f4441ab --- /dev/null +++ b/h5/uni_modules/wmf-code/components/w-barcode/w-barcode.vue @@ -0,0 +1,204 @@ + + + + + + + + diff --git a/h5/uni_modules/wmf-code/components/w-qrcode/w-qrcode.vue b/h5/uni_modules/wmf-code/components/w-qrcode/w-qrcode.vue new file mode 100644 index 0000000..5753bb7 --- /dev/null +++ b/h5/uni_modules/wmf-code/components/w-qrcode/w-qrcode.vue @@ -0,0 +1,175 @@ + + + + + + + + \ No newline at end of file diff --git a/h5/uni_modules/wmf-code/js_sdk/index.js b/h5/uni_modules/wmf-code/js_sdk/index.js new file mode 100644 index 0000000..f9d2d4b --- /dev/null +++ b/h5/uni_modules/wmf-code/js_sdk/index.js @@ -0,0 +1 @@ +var __assign=function(){return(__assign=Object.assign||function(t){for(var e,i=1,r=arguments.length;in[0]&&e[1]>12&15),r+=String.fromCharCode(128|e>>6&63)):r+=String.fromCharCode(192|e>>6&31),r+=String.fromCharCode(128|e>>0&63));return r},SaveCodeImg=function(t){var i=UNIT_CONVERSION(Number(t.width)),r=UNIT_CONVERSION(Number(t.height)),e=getPixelRatio("pixelRatio"),o=i*e,s=r*e;return"MP-ALIPAY"==t.source&&(i=o,r=s),console.log(i,r),new Promise(function(e){"[object String]"==Object.prototype.toString.call(t.id)?uni.canvasToTempFilePath({canvasId:t.id,width:i,height:r,destWidth:o,destHeight:s,fileType:t.type||"jpg",quality:t.quality||1,complete:function(t){e(t)}},t.ctx):"[object Object]"==Object.prototype.toString.call(t.id)&&t.id.toTempFilePath(0,0,i,r,o,s,t.type||"png",1,function(t){e(t)})})},SetGradient=function(t,e,i,r){i=t.createLinearGradient(0,0,e,i);return 1===r.length&&(i.addColorStop(0,r[0]),i.addColorStop(1,r[0])),2===r.length&&(i.addColorStop(0,r[0]),i.addColorStop(1,r[1])),3===r.length&&(i.addColorStop(0,r[0]),i.addColorStop(.5,r[1]),i.addColorStop(1,r[2])),4===r.length&&(i.addColorStop(0,r[0]),i.addColorStop(.35,r[1]),i.addColorStop(.7,r[2]),i.addColorStop(1,r[3])),5===r.length&&(i.addColorStop(0,r[0]),i.addColorStop(.35,r[1]),i.addColorStop(.6,r[2]),i.addColorStop(.8,r[3]),i.addColorStop(1,r[4])),6===r.length&&(i.addColorStop(0,r[0]),i.addColorStop(.25,r[1]),i.addColorStop(.45,r[2]),i.addColorStop(.65,r[3]),i.addColorStop(.85,r[4]),i.addColorStop(1,r[5])),7===r.length&&(i.addColorStop(0,r[0]),i.addColorStop(.15,r[1]),i.addColorStop(.35,r[2]),i.addColorStop(.45,r[3]),i.addColorStop(.65,r[4]),i.addColorStop(.85,r[5]),i.addColorStop(1,r[6])),8===r.length&&(i.addColorStop(0,r[0]),i.addColorStop(.1,r[1]),i.addColorStop(.25,r[2]),i.addColorStop(.45,r[3]),i.addColorStop(.65,r[4]),i.addColorStop(.85,r[5]),i.addColorStop(.9,r[6]),i.addColorStop(1,r[7])),9===r.length&&(i.addColorStop(0,r[0]),i.addColorStop(.2,r[1]),i.addColorStop(.3,r[2]),i.addColorStop(.5,r[3]),i.addColorStop(.6,r[4]),i.addColorStop(.7,r[5]),i.addColorStop(.8,r[6]),i.addColorStop(.9,r[7]),i.addColorStop(1,r[8])),10<=r.length&&(i.addColorStop(0,r[0]),i.addColorStop(.1,r[1]),i.addColorStop(.2,r[2]),i.addColorStop(.3,r[3]),i.addColorStop(.4,r[4]),i.addColorStop(.5,r[5]),i.addColorStop(.6,r[6]),i.addColorStop(.7,r[7]),i.addColorStop(.85,r[8]),i.addColorStop(1,r[9])),i},QRCodeInit=function(){function t(t){void 0===t&&(t=2),this.strinbuf=[],this.eccbuf=[],this.qrframe=[],this.framask=[],this.rlens=[],this.genpoly=[],this.ecclevel=2,this.N1=3,this.N2=3,this.N3=40,this.N4=10,this.neccblk2=0,this.width=0,this.neccblk1=0,this.datablkw=0,this.eccblkwid=0,this.ecclevel=t}return t.prototype.setmask=function(t,e){var i=null;e>=1,this.framask[i+=t]=1},t.prototype.getWidth=function(){return this.width},t.prototype.putalign=function(t,e){this.qrframe[t+this.width*e]=1;for(var i=-2;i<2;i++)this.qrframe[t+i+this.width*(e-2)]=1,this.qrframe[t-2+this.width*(e+i+1)]=1,this.qrframe[t+2+this.width*(e+i)]=1,this.qrframe[t+i+1+this.width*(e+2)]=1;for(i=0;i<2;i++)this.setmask(t-1,e+i),this.setmask(t+1,e-i),this.setmask(t-i,e-1),this.setmask(t+i,e+1)},t.prototype.modnn=function(t){for(;255<=t;)t=((t-=255)>>8)+(255&t);return t},t.prototype.appendrs=function(t,e,i,r){for(var o,s=0;s>=1,this.framask[i+=t]},t.prototype.badruns=function(t){for(var e=0,i=0;i<=t;i++)5<=this.rlens[i]&&(e+=this.N1+this.rlens[i]-5);for(i=3;i=4*this.rlens[i]||3*this.rlens[i+3]>=4*this.rlens[i])&&(e+=this.N3);return e},t.prototype.toNum=function(t){return 0===t?1:0},t.prototype.applymask=function(t){switch(t){case 0:for(var e=0;e>1&1,i=0;i>o-12:e>>o)?(this.qrframe[5-c+this.width*(2-d+this.width-11)]=1,this.qrframe[2-d+this.width-11+this.width*(5-c)]=1):(this.setmask(5-c,2-d+this.width-11),this.setmask(2-d+this.width-11,5-c));for(d=0;d>4;this.strinbuf[2]|=255&n<<4,this.strinbuf[1]=n>>4,this.strinbuf[0]=64|n>>12}else{for(this.strinbuf[a+1]=0,this.strinbuf[a+2]=0;a--;)e=this.strinbuf[a],this.strinbuf[a+2]|=255&e<<4,this.strinbuf[a+1]=e>>4;this.strinbuf[1]|=255&n<<4,this.strinbuf[0]=64|n>>4}for(a=n+3-(h<10?1:0);a>=1)1&s&&(this.qrframe[this.width-1-S+8*this.width]=1,S<6?this.qrframe[8+this.width*S]=1:this.qrframe[8+this.width*(S+1)]=1);for(S=0;S<7;S++,s>>=1)1&s&&(this.qrframe[8+this.width*(this.width-7+S)]=1,S?this.qrframe[6-S+8*this.width]=1:this.qrframe[7+8*this.width]=1);return this.qrframe},t.prototype.badcheck=function(){for(var t=0,e=0,i=0,r=0,o=0,s=0,n=0,h=0;hthis.width*this.width;)l-=this.width*this.width,c++;t+=c*this.N4;for(a=0;ao+1?e[o+1]:-1,r=r.concat(function(t,e,i){var r=[],o=-1;if(charCompatible(t,i))5==i&&(-1==e?(o=100,i=4):charCompatible(e,i)||(i=charCompatible(e,3)?(o=101,3):(o=100,4)));else if(-1==e||charCompatible(e,i))o=98;else switch(i){case 3:o=100,i=4;break;case 4:o=101,i=3}return-1!=o?(r.push(o),r.push(codeValue(t))):5==i?r.push(codeValue(t,e)):r.push(codeValue(t)),s.currcs=i,r}(n,h,s.currcs));5==s.currcs&&o++}for(var a=r[0],l=1;l