智慧农业后台管理页面
shuishen
2022-08-02 c7d469efc2bc11d2c54d2aafef90d16e27088eb8
Merge branch 'master' of http://s16s652780.51mypc.cn:49896/r/zhny_web
13 files modified
9 files added
5192 ■■■■■ changed files
public/img/i-exitfs.png patch | view | raw | blame | history
public/img/i-fs.png patch | view | raw | blame | history
public/img/i-pause.png patch | view | raw | blame | history
public/img/i-play.png patch | view | raw | blame | history
public/js/flv.min.js 10 ●●●●● patch | view | raw | blame | history
public/traceablityInfo.html 2073 ●●●● patch | view | raw | blame | history
public/traceablityInfos.html 2075 ●●●● patch | view | raw | blame | history
src/api/farm/farmingrecord.js 13 ●●●●● patch | view | raw | blame | history
src/api/land/land.js 4 ●●● patch | view | raw | blame | history
src/api/processinv/processinv.js 61 ●●●●● patch | view | raw | blame | history
src/api/sale/sale.js 18 ●●●●● patch | view | raw | blame | history
src/views/farm/farmingrecord.vue 1 ●●●● patch | view | raw | blame | history
src/views/farm/stockUseInfo.vue 224 ●●●●● patch | view | raw | blame | history
src/views/farmplant/farmplant.vue 16 ●●●● patch | view | raw | blame | history
src/views/farmplant/farmproductstock.vue 7 ●●●● patch | view | raw | blame | history
src/views/farmplant/process.vue 180 ●●●● patch | view | raw | blame | history
src/views/farmplant/processlist.vue 150 ●●●●● patch | view | raw | blame | history
src/views/land/LandDetail.vue 98 ●●●●● patch | view | raw | blame | history
src/views/land/cs.vue 8 ●●●● patch | view | raw | blame | history
src/views/land/getMapDataInThere.vue 18 ●●●●● patch | view | raw | blame | history
src/views/land/landUpdate.vue 226 ●●●●● patch | view | raw | blame | history
src/views/recovery/recovery.vue 10 ●●●●● patch | view | raw | blame | history
public/img/i-exitfs.png
public/img/i-fs.png
public/img/i-pause.png
public/img/i-play.png
public/js/flv.min.js
New file
@@ -0,0 +1,10 @@
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.flvjs=t():e.flvjs=t()}(self,(function(){return function(){var e={264:function(e,t,i){
/*!
 * @overview es6-promise - a tiny implementation of Promises/A+.
 * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
 * @license   Licensed under MIT license
 *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
 * @version   v4.2.8+1e68dce6
 */
e.exports=function(){"use strict";function e(e){var t=typeof e;return null!==e&&("object"===t||"function"===t)}function t(e){return"function"==typeof e}var n=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)},r=0,s=void 0,o=void 0,a=function(e,t){b[r]=e,b[r+1]=t,2===(r+=2)&&(o?o(E):A())};function h(e){o=e}function u(e){a=e}var l="undefined"!=typeof window?window:void 0,d=l||{},c=d.MutationObserver||d.WebKitMutationObserver,f="undefined"==typeof self&&"undefined"!=typeof process&&"[object process]"==={}.toString.call(process),_="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel;function p(){return function(){return process.nextTick(E)}}function m(){return void 0!==s?function(){s(E)}:y()}function g(){var e=0,t=new c(E),i=document.createTextNode("");return t.observe(i,{characterData:!0}),function(){i.data=e=++e%2}}function v(){var e=new MessageChannel;return e.port1.onmessage=E,function(){return e.port2.postMessage(0)}}function y(){var e=setTimeout;return function(){return e(E,1)}}var b=new Array(1e3);function E(){for(var e=0;e<r;e+=2)(0,b[e])(b[e+1]),b[e]=void 0,b[e+1]=void 0;r=0}function S(){try{var e=Function("return this")().require("vertx");return s=e.runOnLoop||e.runOnContext,m()}catch(e){return y()}}var A=void 0;function L(e,t){var i=this,n=new this.constructor(O);void 0===n[w]&&W(n);var r=i._state;if(r){var s=arguments[r-1];a((function(){return V(r,n,s,i._result)}))}else G(i,n,e,t);return n}function R(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var i=new t(O);return U(i,e),i}A=f?p():c?g():_?v():void 0===l?S():y();var w=Math.random().toString(36).substring(2);function O(){}var T=void 0,C=1,k=2;function D(){return new TypeError("You cannot resolve a promise with itself")}function I(){return new TypeError("A promises callback cannot return that same promise.")}function M(e,t,i,n){try{e.call(t,i,n)}catch(e){return e}}function B(e,t,i){a((function(e){var n=!1,r=M(i,t,(function(i){n||(n=!0,t!==i?U(e,i):Z(e,i))}),(function(t){n||(n=!0,F(e,t))}),"Settle: "+(e._label||" unknown promise"));!n&&r&&(n=!0,F(e,r))}),e)}function x(e,t){t._state===C?Z(e,t._result):t._state===k?F(e,t._result):G(t,void 0,(function(t){return U(e,t)}),(function(t){return F(e,t)}))}function P(e,i,n){i.constructor===e.constructor&&n===L&&i.constructor.resolve===R?x(e,i):void 0===n?Z(e,i):t(n)?B(e,i,n):Z(e,i)}function U(t,i){if(t===i)F(t,D());else if(e(i)){var n=void 0;try{n=i.then}catch(e){return void F(t,e)}P(t,i,n)}else Z(t,i)}function N(e){e._onerror&&e._onerror(e._result),j(e)}function Z(e,t){e._state===T&&(e._result=t,e._state=C,0!==e._subscribers.length&&a(j,e))}function F(e,t){e._state===T&&(e._state=k,e._result=t,a(N,e))}function G(e,t,i,n){var r=e._subscribers,s=r.length;e._onerror=null,r[s]=t,r[s+C]=i,r[s+k]=n,0===s&&e._state&&a(j,e)}function j(e){var t=e._subscribers,i=e._state;if(0!==t.length){for(var n=void 0,r=void 0,s=e._result,o=0;o<t.length;o+=3)n=t[o],r=t[o+i],n?V(i,n,r,s):r(s);e._subscribers.length=0}}function V(e,i,n,r){var s=t(n),o=void 0,a=void 0,h=!0;if(s){try{o=n(r)}catch(e){h=!1,a=e}if(i===o)return void F(i,I())}else o=r;i._state!==T||(s&&h?U(i,o):!1===h?F(i,a):e===C?Z(i,o):e===k&&F(i,o))}function z(e,t){try{t((function(t){U(e,t)}),(function(t){F(e,t)}))}catch(t){F(e,t)}}var K=0;function H(){return K++}function W(e){e[w]=K++,e._state=void 0,e._result=void 0,e._subscribers=[]}function q(){return new Error("Array Methods must be provided an Array")}var Y=function(){function e(e,t){this._instanceConstructor=e,this.promise=new e(O),this.promise[w]||W(this.promise),n(t)?(this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?Z(this.promise,this._result):(this.length=this.length||0,this._enumerate(t),0===this._remaining&&Z(this.promise,this._result))):F(this.promise,q())}return e.prototype._enumerate=function(e){for(var t=0;this._state===T&&t<e.length;t++)this._eachEntry(e[t],t)},e.prototype._eachEntry=function(e,t){var i=this._instanceConstructor,n=i.resolve;if(n===R){var r=void 0,s=void 0,o=!1;try{r=e.then}catch(e){o=!0,s=e}if(r===L&&e._state!==T)this._settledAt(e._state,t,e._result);else if("function"!=typeof r)this._remaining--,this._result[t]=e;else if(i===te){var a=new i(O);o?F(a,s):P(a,e,r),this._willSettleAt(a,t)}else this._willSettleAt(new i((function(t){return t(e)})),t)}else this._willSettleAt(n(e),t)},e.prototype._settledAt=function(e,t,i){var n=this.promise;n._state===T&&(this._remaining--,e===k?F(n,i):this._result[t]=i),0===this._remaining&&Z(n,this._result)},e.prototype._willSettleAt=function(e,t){var i=this;G(e,void 0,(function(e){return i._settledAt(C,t,e)}),(function(e){return i._settledAt(k,t,e)}))},e}();function X(e){return new Y(this,e).promise}function J(e){var t=this;return n(e)?new t((function(i,n){for(var r=e.length,s=0;s<r;s++)t.resolve(e[s]).then(i,n)})):new t((function(e,t){return t(new TypeError("You must pass an array to race."))}))}function Q(e){var t=new this(O);return F(t,e),t}function $(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function ee(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}var te=function(){function e(t){this[w]=H(),this._result=this._state=void 0,this._subscribers=[],O!==t&&("function"!=typeof t&&$(),this instanceof e?z(this,t):ee())}return e.prototype.catch=function(e){return this.then(null,e)},e.prototype.finally=function(e){var i=this,n=i.constructor;return t(e)?i.then((function(t){return n.resolve(e()).then((function(){return t}))}),(function(t){return n.resolve(e()).then((function(){throw t}))})):i.then(e,e)},e}();function ie(){var e=void 0;if(void 0!==i.g)e=i.g;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var n=null;try{n=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===n&&!t.cast)return}e.Promise=te}return te.prototype.then=L,te.all=X,te.race=J,te.resolve=R,te.reject=Q,te._setScheduler=h,te._setAsap=u,te._asap=a,te.polyfill=ie,te.Promise=te,te}()},716:function(e){"use strict";var t,i="object"==typeof Reflect?Reflect:null,n=i&&"function"==typeof i.apply?i.apply:function(e,t,i){return Function.prototype.apply.call(e,t,i)};t=i&&"function"==typeof i.ownKeys?i.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var r=Number.isNaN||function(e){return e!=e};function s(){s.init.call(this)}e.exports=s,e.exports.once=function(e,t){return new Promise((function(i,n){function r(i){e.removeListener(t,s),n(i)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",r),i([].slice.call(arguments))}p(e,t,s,{once:!0}),"error"!==t&&function(e,t,i){"function"==typeof e.on&&p(e,"error",t,i)}(e,r,{once:!0})}))},s.EventEmitter=s,s.prototype._events=void 0,s.prototype._eventsCount=0,s.prototype._maxListeners=void 0;var o=10;function a(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function h(e){return void 0===e._maxListeners?s.defaultMaxListeners:e._maxListeners}function u(e,t,i,n){var r,s,o,u;if(a(i),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),s=e._events),o=s[t]),void 0===o)o=s[t]=i,++e._eventsCount;else if("function"==typeof o?o=s[t]=n?[i,o]:[o,i]:n?o.unshift(i):o.push(i),(r=h(e))>0&&o.length>r&&!o.warned){o.warned=!0;var l=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");l.name="MaxListenersExceededWarning",l.emitter=e,l.type=t,l.count=o.length,u=l,console&&console.warn&&console.warn(u)}return e}function l(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(e,t,i){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:i},r=l.bind(n);return r.listener=i,n.wrapFn=r,r}function c(e,t,i){var n=e._events;if(void 0===n)return[];var r=n[t];return void 0===r?[]:"function"==typeof r?i?[r.listener||r]:[r]:i?function(e){for(var t=new Array(e.length),i=0;i<t.length;++i)t[i]=e[i].listener||e[i];return t}(r):_(r,r.length)}function f(e){var t=this._events;if(void 0!==t){var i=t[e];if("function"==typeof i)return 1;if(void 0!==i)return i.length}return 0}function _(e,t){for(var i=new Array(t),n=0;n<t;++n)i[n]=e[n];return i}function p(e,t,i,n){if("function"==typeof e.on)n.once?e.once(t,i):e.on(t,i);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function r(s){n.once&&e.removeEventListener(t,r),i(s)}))}}Object.defineProperty(s,"defaultMaxListeners",{enumerable:!0,get:function(){return o},set:function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");o=e}}),s.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},s.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||r(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},s.prototype.getMaxListeners=function(){return h(this)},s.prototype.emit=function(e){for(var t=[],i=1;i<arguments.length;i++)t.push(arguments[i]);var r="error"===e,s=this._events;if(void 0!==s)r=r&&void 0===s.error;else if(!r)return!1;if(r){var o;if(t.length>0&&(o=t[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var h=s[e];if(void 0===h)return!1;if("function"==typeof h)n(h,this,t);else{var u=h.length,l=_(h,u);for(i=0;i<u;++i)n(l[i],this,t)}return!0},s.prototype.addListener=function(e,t){return u(this,e,t,!1)},s.prototype.on=s.prototype.addListener,s.prototype.prependListener=function(e,t){return u(this,e,t,!0)},s.prototype.once=function(e,t){return a(t),this.on(e,d(this,e,t)),this},s.prototype.prependOnceListener=function(e,t){return a(t),this.prependListener(e,d(this,e,t)),this},s.prototype.removeListener=function(e,t){var i,n,r,s,o;if(a(t),void 0===(n=this._events))return this;if(void 0===(i=n[e]))return this;if(i===t||i.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||t));else if("function"!=typeof i){for(r=-1,s=i.length-1;s>=0;s--)if(i[s]===t||i[s].listener===t){o=i[s].listener,r=s;break}if(r<0)return this;0===r?i.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(i,r),1===i.length&&(n[e]=i[0]),void 0!==n.removeListener&&this.emit("removeListener",e,o||t)}return this},s.prototype.off=s.prototype.removeListener,s.prototype.removeAllListeners=function(e){var t,i,n;if(void 0===(i=this._events))return this;if(void 0===i.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==i[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete i[e]),this;if(0===arguments.length){var r,s=Object.keys(i);for(n=0;n<s.length;++n)"removeListener"!==(r=s[n])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=i[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},s.prototype.listeners=function(e){return c(this,e,!0)},s.prototype.rawListeners=function(e){return c(this,e,!1)},s.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},s.prototype.listenerCount=f,s.prototype.eventNames=function(){return this._eventsCount>0?t(this._events):[]}},397:function(e,t,i){function n(e){var t={};function i(n){if(t[n])return t[n].exports;var r=t[n]={i:n,l:!1,exports:{}};return e[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.m=e,i.c=t,i.i=function(e){return e},i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/",i.oe=function(e){throw console.error(e),e};var n=i(i.s=ENTRY_MODULE);return n.default||n}var r="[\\.|\\-|\\+|\\w|/|@]+",s="\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)";function o(e){return(e+"").replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")}function a(e,t,n){var a={};a[n]=[];var h=t.toString(),u=h.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);if(!u)return a;for(var l,d=u[1],c=new RegExp("(\\\\n|\\W)"+o(d)+s,"g");l=c.exec(h);)"dll-reference"!==l[3]&&a[n].push(l[3]);for(c=new RegExp("\\("+o(d)+'\\("(dll-reference\\s('+r+'))"\\)\\)'+s,"g");l=c.exec(h);)e[l[2]]||(a[n].push(l[1]),e[l[2]]=i(l[1]).m),a[l[2]]=a[l[2]]||[],a[l[2]].push(l[4]);for(var f,_=Object.keys(a),p=0;p<_.length;p++)for(var m=0;m<a[_[p]].length;m++)f=a[_[p]][m],isNaN(1*f)||(a[_[p]][m]=1*a[_[p]][m]);return a}function h(e){return Object.keys(e).reduce((function(t,i){return t||e[i].length>0}),!1)}e.exports=function(e,t){t=t||{};var r={main:i.m},s=t.all?{main:Object.keys(r.main)}:function(e,t){for(var i={main:[t]},n={main:[]},r={main:{}};h(i);)for(var s=Object.keys(i),o=0;o<s.length;o++){var u=s[o],l=i[u].pop();if(r[u]=r[u]||{},!r[u][l]&&e[u][l]){r[u][l]=!0,n[u]=n[u]||[],n[u].push(l);for(var d=a(e,e[u][l],u),c=Object.keys(d),f=0;f<c.length;f++)i[c[f]]=i[c[f]]||[],i[c[f]]=i[c[f]].concat(d[c[f]])}}return n}(r,e),o="";Object.keys(s).filter((function(e){return"main"!==e})).forEach((function(e){for(var t=0;s[e][t];)t++;s[e].push(t),r[e][t]="(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",o=o+"var "+e+" = ("+n.toString().replace("ENTRY_MODULE",JSON.stringify(t))+")({"+s[e].map((function(t){return JSON.stringify(t)+": "+r[e][t].toString()})).join(",")+"});\n"})),o=o+"new (("+n.toString().replace("ENTRY_MODULE",JSON.stringify(e))+")({"+s.main.map((function(e){return JSON.stringify(e)+": "+r.main[e].toString()})).join(",")+"}))(self);";var u=new window.Blob([o],{type:"text/javascript"});if(t.bare)return u;var l=(window.URL||window.webkitURL||window.mozURL||window.msURL).createObjectURL(u),d=new window.Worker(l);return d.objectURL=l,d}},118:function(e,t){"use strict";var i=function(){function e(){this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.refFrames=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}return e.prototype.isComplete=function(){var e=!1===this.hasAudio||!0===this.hasAudio&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=!1===this.hasVideo||!0===this.hasVideo&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.refFrames&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&null!=this.duration&&null!=this.metadata&&null!=this.hasKeyframesIndex&&e&&t},e.prototype.isSeekable=function(){return!0===this.hasKeyframesIndex},e.prototype.getNearestKeyframe=function(e){if(null==this.keyframesIndex)return null;var t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}},e.prototype._search=function(e,t){var i=0,n=e.length-1,r=0,s=0,o=n;for(t<e[0]&&(i=0,s=o+1);s<=o;){if((r=s+Math.floor((o-s)/2))===n||t>=e[r]&&t<e[r+1]){i=r;break}e[r]<t?s=r+1:o=r-1}return i},e}();t.Z=i},51:function(e,t,i){"use strict";i.d(t,{Wk:function(){return n},Yy:function(){return r},Vn:function(){return s},J1:function(){return o}});var n=function(e,t,i,n,r){this.dts=e,this.pts=t,this.duration=i,this.originalDts=n,this.isSyncPoint=r,this.fileposition=null},r=function(){function e(){this.beginDts=0,this.endDts=0,this.beginPts=0,this.endPts=0,this.originalBeginDts=0,this.originalEndDts=0,this.syncPoints=[],this.firstSample=null,this.lastSample=null}return e.prototype.appendSyncPoint=function(e){e.isSyncPoint=!0,this.syncPoints.push(e)},e}(),s=function(){function e(){this._list=[]}return e.prototype.clear=function(){this._list=[]},e.prototype.appendArray=function(e){var t=this._list;0!==e.length&&(t.length>0&&e[0].originalDts<t[t.length-1].originalDts&&this.clear(),Array.prototype.push.apply(t,e))},e.prototype.getLastSyncPointBeforeDts=function(e){if(0==this._list.length)return null;var t=this._list,i=0,n=t.length-1,r=0,s=0,o=n;for(e<t[0].dts&&(i=0,s=o+1);s<=o;){if((r=s+Math.floor((o-s)/2))===n||e>=t[r].dts&&e<t[r+1].dts){i=r;break}t[r].dts<e?s=r+1:o=r-1}return this._list[i]},e}(),o=function(){function e(e){this._type=e,this._list=[],this._lastAppendLocation=-1}return Object.defineProperty(e.prototype,"type",{get:function(){return this._type},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"length",{get:function(){return this._list.length},enumerable:!1,configurable:!0}),e.prototype.isEmpty=function(){return 0===this._list.length},e.prototype.clear=function(){this._list=[],this._lastAppendLocation=-1},e.prototype._searchNearestSegmentBefore=function(e){var t=this._list;if(0===t.length)return-2;var i=t.length-1,n=0,r=0,s=i,o=0;if(e<t[0].originalBeginDts)return o=-1;for(;r<=s;){if((n=r+Math.floor((s-r)/2))===i||e>t[n].lastSample.originalDts&&e<t[n+1].originalBeginDts){o=n;break}t[n].originalBeginDts<e?r=n+1:s=n-1}return o},e.prototype._searchNearestSegmentAfter=function(e){return this._searchNearestSegmentBefore(e)+1},e.prototype.append=function(e){var t=this._list,i=e,n=this._lastAppendLocation,r=0;-1!==n&&n<t.length&&i.originalBeginDts>=t[n].lastSample.originalDts&&(n===t.length-1||n<t.length-1&&i.originalBeginDts<t[n+1].originalBeginDts)?r=n+1:t.length>0&&(r=this._searchNearestSegmentBefore(i.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,0,i)},e.prototype.getLastSegmentBefore=function(e){var t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null},e.prototype.getLastSampleBefore=function(e){var t=this.getLastSegmentBefore(e);return null!=t?t.lastSample:null},e.prototype.getLastSyncPointBefore=function(e){for(var t=this._searchNearestSegmentBefore(e),i=this._list[t].syncPoints;0===i.length&&t>0;)t--,i=this._list[t].syncPoints;return i.length>0?i[i.length-1]:null},e}()},949:function(e,t,i){"use strict";i.d(t,{Z:function(){return R}});var n=i(716),r=i.n(n),s=i(300),o=i(538),a=i(118);function h(e,t,i){var n=e;if(t+i<n.length){for(;i--;)if(128!=(192&n[++t]))return!1;return!0}return!1}var u,l=function(e){for(var t=[],i=e,n=0,r=e.length;n<r;)if(i[n]<128)t.push(String.fromCharCode(i[n])),++n;else{if(i[n]<192);else if(i[n]<224){if(h(i,n,1))if((s=(31&i[n])<<6|63&i[n+1])>=128){t.push(String.fromCharCode(65535&s)),n+=2;continue}}else if(i[n]<240){if(h(i,n,2))if((s=(15&i[n])<<12|(63&i[n+1])<<6|63&i[n+2])>=2048&&55296!=(63488&s)){t.push(String.fromCharCode(65535&s)),n+=3;continue}}else if(i[n]<248){var s;if(h(i,n,3))if((s=(7&i[n])<<18|(63&i[n+1])<<12|(63&i[n+2])<<6|63&i[n+3])>65536&&s<1114112){s-=65536,t.push(String.fromCharCode(s>>>10|55296)),t.push(String.fromCharCode(1023&s|56320)),n+=4;continue}}t.push(String.fromCharCode(65533)),++n}return t.join("")},d=i(29),c=(u=new ArrayBuffer(2),new DataView(u).setInt16(0,256,!0),256===new Int16Array(u)[0]),f=function(){function e(){}return e.parseScriptData=function(t,i,n){var r={};try{var o=e.parseValue(t,i,n),a=e.parseValue(t,i+o.size,n-o.size);r[o.data]=a.data}catch(e){s.Z.e("AMF",e.toString())}return r},e.parseObject=function(t,i,n){if(n<3)throw new d.rT("Data not enough when parse ScriptDataObject");var r=e.parseString(t,i,n),s=e.parseValue(t,i+r.size,n-r.size),o=s.objectEnd;return{data:{name:r.data,value:s.data},size:r.size+s.size,objectEnd:o}},e.parseVariable=function(t,i,n){return e.parseObject(t,i,n)},e.parseString=function(e,t,i){if(i<2)throw new d.rT("Data not enough when parse String");var n=new DataView(e,t,i).getUint16(0,!c);return{data:n>0?l(new Uint8Array(e,t+2,n)):"",size:2+n}},e.parseLongString=function(e,t,i){if(i<4)throw new d.rT("Data not enough when parse LongString");var n=new DataView(e,t,i).getUint32(0,!c);return{data:n>0?l(new Uint8Array(e,t+4,n)):"",size:4+n}},e.parseDate=function(e,t,i){if(i<10)throw new d.rT("Data size invalid when parse Date");var n=new DataView(e,t,i),r=n.getFloat64(0,!c),s=n.getInt16(8,!c);return{data:new Date(r+=60*s*1e3),size:10}},e.parseValue=function(t,i,n){if(n<1)throw new d.rT("Data not enough when parse Value");var r,o=new DataView(t,i,n),a=1,h=o.getUint8(0),u=!1;try{switch(h){case 0:r=o.getFloat64(1,!c),a+=8;break;case 1:r=!!o.getUint8(1),a+=1;break;case 2:var l=e.parseString(t,i+1,n-1);r=l.data,a+=l.size;break;case 3:r={};var f=0;for(9==(16777215&o.getUint32(n-4,!c))&&(f=3);a<n-4;){var _=e.parseObject(t,i+a,n-a-f);if(_.objectEnd)break;r[_.data.name]=_.data.value,a+=_.size}if(a<=n-3)9===(16777215&o.getUint32(a-1,!c))&&(a+=3);break;case 8:r={},a+=4;f=0;for(9==(16777215&o.getUint32(n-4,!c))&&(f=3);a<n-8;){var p=e.parseVariable(t,i+a,n-a-f);if(p.objectEnd)break;r[p.data.name]=p.data.value,a+=p.size}if(a<=n-3)9===(16777215&o.getUint32(a-1,!c))&&(a+=3);break;case 9:r=void 0,a=1,u=!0;break;case 10:r=[];var m=o.getUint32(1,!c);a+=4;for(var g=0;g<m;g++){var v=e.parseValue(t,i+a,n-a);r.push(v.data),a+=v.size}break;case 11:var y=e.parseDate(t,i+1,n-1);r=y.data,a+=y.size;break;case 12:var b=e.parseString(t,i+1,n-1);r=b.data,a+=b.size;break;default:a=n,s.Z.w("AMF","Unsupported AMF value type "+h)}}catch(e){s.Z.e("AMF",e.toString())}return{data:r,size:a,objectEnd:u}},e}(),_=function(){function e(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=8*e.byteLength,this._current_word=0,this._current_word_bits_left=0}return e.prototype.destroy=function(){this._buffer=null},e.prototype._fillCurrentWord=function(){var e=this._total_bytes-this._buffer_index;if(e<=0)throw new d.rT("ExpGolomb: _fillCurrentWord() but no bytes available");var t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t},e.prototype.readBits=function(e){if(e>32)throw new d.OC("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){var t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}var i=this._current_word_bits_left?this._current_word:0;i>>>=32-this._current_word_bits_left;var n=e-this._current_word_bits_left;this._fillCurrentWord();var r=Math.min(n,this._current_word_bits_left),s=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,i=i<<r|s},e.prototype.readBool=function(){return 1===this.readBits(1)},e.prototype.readByte=function(){return this.readBits(8)},e.prototype._skipLeadingZero=function(){var e;for(e=0;e<this._current_word_bits_left;e++)if(0!=(this._current_word&2147483648>>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()},e.prototype.readUEG=function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1},e.prototype.readSEG=function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)},e}(),p=function(){function e(){}return e._ebsp2rbsp=function(e){for(var t=e,i=t.byteLength,n=new Uint8Array(i),r=0,s=0;s<i;s++)s>=2&&3===t[s]&&0===t[s-1]&&0===t[s-2]||(n[r]=t[s],r++);return new Uint8Array(n.buffer,0,r)},e.parseSPS=function(t){var i=e._ebsp2rbsp(t),n=new _(i);n.readByte();var r=n.readByte();n.readByte();var s=n.readByte();n.readUEG();var o=e.getProfileString(r),a=e.getLevelString(s),h=1,u=420,l=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(3===(h=n.readUEG())&&n.readBits(1),h<=3&&(u=[0,420,422,444][h]),l=n.readUEG()+8,n.readUEG(),n.readBits(1),n.readBool()))for(var d=3!==h?8:12,c=0;c<d;c++)n.readBool()&&(c<6?e._skipScalingList(n,16):e._skipScalingList(n,64));n.readUEG();var f=n.readUEG();if(0===f)n.readUEG();else if(1===f){n.readBits(1),n.readSEG(),n.readSEG();var p=n.readUEG();for(c=0;c<p;c++)n.readSEG()}var m=n.readUEG();n.readBits(1);var g=n.readUEG(),v=n.readUEG(),y=n.readBits(1);0===y&&n.readBits(1),n.readBits(1);var b=0,E=0,S=0,A=0;n.readBool()&&(b=n.readUEG(),E=n.readUEG(),S=n.readUEG(),A=n.readUEG());var L=1,R=1,w=0,O=!0,T=0,C=0;if(n.readBool()){if(n.readBool()){var k=n.readByte();k>0&&k<16?(L=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][k-1],R=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][k-1]):255===k&&(L=n.readByte()<<8|n.readByte(),R=n.readByte()<<8|n.readByte())}if(n.readBool()&&n.readBool(),n.readBool()&&(n.readBits(4),n.readBool()&&n.readBits(24)),n.readBool()&&(n.readUEG(),n.readUEG()),n.readBool()){var D=n.readBits(32),I=n.readBits(32);O=n.readBool(),w=(T=I)/(C=2*D)}}var M=1;1===L&&1===R||(M=L/R);var B=0,x=0;0===h?(B=1,x=2-y):(B=3===h?1:2,x=(1===h?2:1)*(2-y));var P=16*(g+1),U=16*(v+1)*(2-y);P-=(b+E)*B,U-=(S+A)*x;var N=Math.ceil(P*M);return n.destroy(),n=null,{profile_string:o,level_string:a,bit_depth:l,ref_frames:m,chroma_format:u,chroma_format_string:e.getChromaFormatString(u),frame_rate:{fixed:O,fps:w,fps_den:C,fps_num:T},sar_ratio:{width:L,height:R},codec_size:{width:P,height:U},present_size:{width:N,height:U}}},e._skipScalingList=function(e,t){for(var i=8,n=8,r=0;r<t;r++)0!==n&&(n=(i+e.readSEG()+256)%256),i=0===n?i:n},e.getProfileString=function(e){switch(e){case 66:return"Baseline";case 77:return"Main";case 88:return"Extended";case 100:return"High";case 110:return"High10";case 122:return"High422";case 244:return"High444";default:return"Unknown"}},e.getLevelString=function(e){return(e/10).toFixed(1)},e.getChromaFormatString=function(e){switch(e){case 420:return"4:2:0";case 422:return"4:2:2";case 444:return"4:4:4";default:return"Unknown"}},e}(),m=i(600);var g=function(){function e(e,t){this.TAG="FLVDemuxer",this._config=t,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null,this._dataOffset=e.dataOffset,this._firstParse=!0,this._dispatch=!1,this._hasAudio=e.hasAudioTrack,this._hasVideo=e.hasVideoTrack,this._hasAudioFlagOverrided=!1,this._hasVideoFlagOverrided=!1,this._audioInitialMetadataDispatched=!1,this._videoInitialMetadataDispatched=!1,this._mediaInfo=new a.Z,this._mediaInfo.hasAudio=this._hasAudio,this._mediaInfo.hasVideo=this._hasVideo,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._naluLengthSize=4,this._timestampBase=0,this._timescale=1e3,this._duration=0,this._durationOverrided=!1,this._referenceFrameRate={fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3},this._flvSoundRateTable=[5500,11025,22050,44100,48e3],this._mpegSamplingRates=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],this._mpegAudioV10SampleRateTable=[44100,48e3,32e3,0],this._mpegAudioV20SampleRateTable=[22050,24e3,16e3,0],this._mpegAudioV25SampleRateTable=[11025,12e3,8e3,0],this._mpegAudioL1BitRateTable=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],this._mpegAudioL2BitRateTable=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],this._mpegAudioL3BitRateTable=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],this._videoTrack={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this._audioTrack={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._littleEndian=function(){var e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}()}return e.prototype.destroy=function(){this._mediaInfo=null,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._videoTrack=null,this._audioTrack=null,this._onError=null,this._onMediaInfo=null,this._onMetaDataArrived=null,this._onScriptDataArrived=null,this._onTrackMetadata=null,this._onDataAvailable=null},e.probe=function(e){var t=new Uint8Array(e),i={match:!1};if(70!==t[0]||76!==t[1]||86!==t[2]||1!==t[3])return i;var n,r,s=(4&t[4])>>>2!=0,o=0!=(1&t[4]),a=(n=t)[r=5]<<24|n[r+1]<<16|n[r+2]<<8|n[r+3];return a<9?i:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:s,hasVideoTrack:o}},e.prototype.bindDataSource=function(e){return e.onDataArrival=this.parseChunks.bind(this),this},Object.defineProperty(e.prototype,"onTrackMetadata",{get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMediaInfo",{get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMetaDataArrived",{get:function(){return this._onMetaDataArrived},set:function(e){this._onMetaDataArrived=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onScriptDataArrived",{get:function(){return this._onScriptDataArrived},set:function(e){this._onScriptDataArrived=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{get:function(){return this._onError},set:function(e){this._onError=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDataAvailable",{get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"timestampBase",{get:function(){return this._timestampBase},set:function(e){this._timestampBase=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overridedDuration",{get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overridedHasAudio",{set:function(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"overridedHasVideo",{set:function(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e},enumerable:!1,configurable:!0}),e.prototype.resetMediaInfo=function(){this._mediaInfo=new a.Z},e.prototype._isInitialMetadataDispatched=function(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched},e.prototype.parseChunks=function(t,i){if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new d.rT("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");var n=0,r=this._littleEndian;if(0===i){if(!(t.byteLength>13))return 0;n=e.probe(t).dataOffset}this._firstParse&&(this._firstParse=!1,i+n!==this._dataOffset&&s.Z.w(this.TAG,"First time parsing but chunk byteStart invalid!"),0!==(o=new DataView(t,n)).getUint32(0,!r)&&s.Z.w(this.TAG,"PrevTagSize0 !== 0 !!!"),n+=4);for(;n<t.byteLength;){this._dispatch=!0;var o=new DataView(t,n);if(n+11+4>t.byteLength)break;var a=o.getUint8(0),h=16777215&o.getUint32(0,!r);if(n+11+h+4>t.byteLength)break;if(8===a||9===a||18===a){var u=o.getUint8(4),l=o.getUint8(5),c=o.getUint8(6)|l<<8|u<<16|o.getUint8(7)<<24;0!==(16777215&o.getUint32(7,!r))&&s.Z.w(this.TAG,"Meet tag which has StreamID != 0!");var f=n+11;switch(a){case 8:this._parseAudioData(t,f,h,c);break;case 9:this._parseVideoData(t,f,h,c,i+n);break;case 18:this._parseScriptData(t,f,h)}var _=o.getUint32(11+h,!r);_!==11+h&&s.Z.w(this.TAG,"Invalid PrevTagSize "+_),n+=11+h+4}else s.Z.w(this.TAG,"Unsupported tag type "+a+", skipped"),n+=11+h+4}return this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack),n},e.prototype._parseScriptData=function(e,t,i){var n=f.parseScriptData(e,t,i);if(n.hasOwnProperty("onMetaData")){if(null==n.onMetaData||"object"!=typeof n.onMetaData)return void s.Z.w(this.TAG,"Invalid onMetaData structure!");this._metadata&&s.Z.w(this.TAG,"Found another onMetaData tag!"),this._metadata=n;var r=this._metadata.onMetaData;if(this._onMetaDataArrived&&this._onMetaDataArrived(Object.assign({},r)),"boolean"==typeof r.hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=r.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof r.hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=r.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof r.audiodatarate&&(this._mediaInfo.audioDataRate=r.audiodatarate),"number"==typeof r.videodatarate&&(this._mediaInfo.videoDataRate=r.videodatarate),"number"==typeof r.width&&(this._mediaInfo.width=r.width),"number"==typeof r.height&&(this._mediaInfo.height=r.height),"number"==typeof r.duration){if(!this._durationOverrided){var o=Math.floor(r.duration*this._timescale);this._duration=o,this._mediaInfo.duration=o}}else this._mediaInfo.duration=0;if("number"==typeof r.framerate){var a=Math.floor(1e3*r.framerate);if(a>0){var h=a/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=h,this._referenceFrameRate.fps_num=a,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=h}}if("object"==typeof r.keyframes){this._mediaInfo.hasKeyframesIndex=!0;var u=r.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(u),r.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=r,s.Z.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(n).length>0&&this._onScriptDataArrived&&this._onScriptDataArrived(Object.assign({},n))},e.prototype._parseKeyframesIndex=function(e){for(var t=[],i=[],n=1;n<e.times.length;n++){var r=this._timestampBase+Math.floor(1e3*e.times[n]);t.push(r),i.push(e.filepositions[n])}return{times:t,filepositions:i}},e.prototype._parseAudioData=function(e,t,i,n){if(i<=1)s.Z.w(this.TAG,"Flv: Invalid audio packet, missing SoundData payload!");else if(!0!==this._hasAudioFlagOverrided||!1!==this._hasAudio){this._littleEndian;var r=new DataView(e,t,i).getUint8(0),o=r>>>4;if(2===o||10===o){var a=0,h=(12&r)>>>2;if(h>=0&&h<=4){a=this._flvSoundRateTable[h];var u=1&r,l=this._audioMetadata,d=this._audioTrack;if(l||(!1===this._hasAudio&&!1===this._hasAudioFlagOverrided&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),(l=this._audioMetadata={}).type="audio",l.id=d.id,l.timescale=this._timescale,l.duration=this._duration,l.audioSampleRate=a,l.channelCount=0===u?1:2),10===o){var c=this._parseAACAudioData(e,t+1,i-1);if(null==c)return;if(0===c.packetType){l.config&&s.Z.w(this.TAG,"Found another AudioSpecificConfig!");var f=c.data;l.audioSampleRate=f.samplingRate,l.channelCount=f.channelCount,l.codec=f.codec,l.originalCodec=f.originalCodec,l.config=f.config,l.refSampleDuration=1024/l.audioSampleRate*l.timescale,s.Z.v(this.TAG,"Parsed AudioSpecificConfig"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",l),(g=this._mediaInfo).audioCodec=l.originalCodec,g.audioSampleRate=l.audioSampleRate,g.audioChannelCount=l.channelCount,g.hasVideo?null!=g.videoCodec&&(g.mimeType='video/x-flv; codecs="'+g.videoCodec+","+g.audioCodec+'"'):g.mimeType='video/x-flv; codecs="'+g.audioCodec+'"',g.isComplete()&&this._onMediaInfo(g)}else if(1===c.packetType){var _=this._timestampBase+n,p={unit:c.data,length:c.data.byteLength,dts:_,pts:_};d.samples.push(p),d.length+=c.data.length}else s.Z.e(this.TAG,"Flv: Unsupported AAC data type "+c.packetType)}else if(2===o){if(!l.codec){var g;if(null==(f=this._parseMP3AudioData(e,t+1,i-1,!0)))return;l.audioSampleRate=f.samplingRate,l.channelCount=f.channelCount,l.codec=f.codec,l.originalCodec=f.originalCodec,l.refSampleDuration=1152/l.audioSampleRate*l.timescale,s.Z.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",l),(g=this._mediaInfo).audioCodec=l.codec,g.audioSampleRate=l.audioSampleRate,g.audioChannelCount=l.channelCount,g.audioDataRate=f.bitRate,g.hasVideo?null!=g.videoCodec&&(g.mimeType='video/x-flv; codecs="'+g.videoCodec+","+g.audioCodec+'"'):g.mimeType='video/x-flv; codecs="'+g.audioCodec+'"',g.isComplete()&&this._onMediaInfo(g)}var v=this._parseMP3AudioData(e,t+1,i-1,!1);if(null==v)return;_=this._timestampBase+n;var y={unit:v,length:v.byteLength,dts:_,pts:_};d.samples.push(y),d.length+=v.length}}else this._onError(m.Z.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+h)}else this._onError(m.Z.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+o)}},e.prototype._parseAACAudioData=function(e,t,i){if(!(i<=1)){var n={},r=new Uint8Array(e,t,i);return n.packetType=r[0],0===r[0]?n.data=this._parseAACAudioSpecificConfig(e,t+1,i-1):n.data=r.subarray(1),n}s.Z.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!")},e.prototype._parseAACAudioSpecificConfig=function(e,t,i){var n,r,s=new Uint8Array(e,t,i),o=null,a=0,h=null;if(a=n=s[0]>>>3,(r=(7&s[0])<<1|s[1]>>>7)<0||r>=this._mpegSamplingRates.length)this._onError(m.Z.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");else{var u=this._mpegSamplingRates[r],l=(120&s[1])>>>3;if(!(l<0||l>=8)){5===a&&(h=(7&s[1])<<1|s[2]>>>7,(124&s[2])>>>2);var d=self.navigator.userAgent.toLowerCase();return-1!==d.indexOf("firefox")?r>=6?(a=5,o=new Array(4),h=r-3):(a=2,o=new Array(2),h=r):-1!==d.indexOf("android")?(a=2,o=new Array(2),h=r):(a=5,h=r,o=new Array(4),r>=6?h=r-3:1===l&&(a=2,o=new Array(2),h=r)),o[0]=a<<3,o[0]|=(15&r)>>>1,o[1]=(15&r)<<7,o[1]|=(15&l)<<3,5===a&&(o[1]|=(15&h)>>>1,o[2]=(1&h)<<7,o[2]|=8,o[3]=0),{config:o,samplingRate:u,channelCount:l,codec:"mp4a.40."+a,originalCodec:"mp4a.40."+n}}this._onError(m.Z.FORMAT_ERROR,"Flv: AAC invalid channel configuration")}},e.prototype._parseMP3AudioData=function(e,t,i,n){if(!(i<4)){this._littleEndian;var r=new Uint8Array(e,t,i),o=null;if(n){if(255!==r[0])return;var a=r[1]>>>3&3,h=(6&r[1])>>1,u=(240&r[2])>>>4,l=(12&r[2])>>>2,d=3!==(r[3]>>>6&3)?2:1,c=0,f=0;switch(a){case 0:c=this._mpegAudioV25SampleRateTable[l];break;case 2:c=this._mpegAudioV20SampleRateTable[l];break;case 3:c=this._mpegAudioV10SampleRateTable[l]}switch(h){case 1:34,u<this._mpegAudioL3BitRateTable.length&&(f=this._mpegAudioL3BitRateTable[u]);break;case 2:33,u<this._mpegAudioL2BitRateTable.length&&(f=this._mpegAudioL2BitRateTable[u]);break;case 3:32,u<this._mpegAudioL1BitRateTable.length&&(f=this._mpegAudioL1BitRateTable[u])}o={bitRate:f,samplingRate:c,channelCount:d,codec:"mp3",originalCodec:"mp3"}}else o=r;return o}s.Z.w(this.TAG,"Flv: Invalid MP3 packet, header missing!")},e.prototype._parseVideoData=function(e,t,i,n,r){if(i<=1)s.Z.w(this.TAG,"Flv: Invalid video packet, missing VideoData payload!");else if(!0!==this._hasVideoFlagOverrided||!1!==this._hasVideo){var o=new Uint8Array(e,t,i)[0],a=(240&o)>>>4,h=15&o;7===h?this._parseAVCVideoPacket(e,t+1,i-1,n,r,a):this._onError(m.Z.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+h)}},e.prototype._parseAVCVideoPacket=function(e,t,i,n,r,o){if(i<4)s.Z.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");else{var a=this._littleEndian,h=new DataView(e,t,i),u=h.getUint8(0),l=(16777215&h.getUint32(0,!a))<<8>>8;if(0===u)this._parseAVCDecoderConfigurationRecord(e,t+4,i-4);else if(1===u)this._parseAVCVideoData(e,t+4,i-4,n,r,o,l);else if(2!==u)return void this._onError(m.Z.FORMAT_ERROR,"Flv: Invalid video packet type "+u)}},e.prototype._parseAVCDecoderConfigurationRecord=function(e,t,i){if(i<7)s.Z.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else{var n=this._videoMetadata,r=this._videoTrack,o=this._littleEndian,a=new DataView(e,t,i);n?void 0!==n.avcc&&s.Z.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(!1===this._hasVideo&&!1===this._hasVideoFlagOverrided&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),(n=this._videoMetadata={}).type="video",n.id=r.id,n.timescale=this._timescale,n.duration=this._duration);var h=a.getUint8(0),u=a.getUint8(1);a.getUint8(2),a.getUint8(3);if(1===h&&0!==u)if(this._naluLengthSize=1+(3&a.getUint8(4)),3===this._naluLengthSize||4===this._naluLengthSize){var l=31&a.getUint8(5);if(0!==l){l>1&&s.Z.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+l);for(var d=6,c=0;c<l;c++){var f=a.getUint16(d,!o);if(d+=2,0!==f){var _=new Uint8Array(e,t+d,f);d+=f;var g=p.parseSPS(_);if(0===c){n.codecWidth=g.codec_size.width,n.codecHeight=g.codec_size.height,n.presentWidth=g.present_size.width,n.presentHeight=g.present_size.height,n.profile=g.profile_string,n.level=g.level_string,n.bitDepth=g.bit_depth,n.chromaFormat=g.chroma_format,n.sarRatio=g.sar_ratio,n.frameRate=g.frame_rate,!1!==g.frame_rate.fixed&&0!==g.frame_rate.fps_num&&0!==g.frame_rate.fps_den||(n.frameRate=this._referenceFrameRate);var v=n.frameRate.fps_den,y=n.frameRate.fps_num;n.refSampleDuration=n.timescale*(v/y);for(var b=_.subarray(1,4),E="avc1.",S=0;S<3;S++){var A=b[S].toString(16);A.length<2&&(A="0"+A),E+=A}n.codec=E;var L=this._mediaInfo;L.width=n.codecWidth,L.height=n.codecHeight,L.fps=n.frameRate.fps,L.profile=n.profile,L.level=n.level,L.refFrames=g.ref_frames,L.chromaFormat=g.chroma_format_string,L.sarNum=n.sarRatio.width,L.sarDen=n.sarRatio.height,L.videoCodec=E,L.hasAudio?null!=L.audioCodec&&(L.mimeType='video/x-flv; codecs="'+L.videoCodec+","+L.audioCodec+'"'):L.mimeType='video/x-flv; codecs="'+L.videoCodec+'"',L.isComplete()&&this._onMediaInfo(L)}}}var R=a.getUint8(d);if(0!==R){R>1&&s.Z.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+R),d++;for(c=0;c<R;c++){f=a.getUint16(d,!o);d+=2,0!==f&&(d+=f)}n.avcc=new Uint8Array(i),n.avcc.set(new Uint8Array(e,t,i),0),s.Z.v(this.TAG,"Parsed AVCDecoderConfigurationRecord"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._videoInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("video",n)}else this._onError(m.Z.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No PPS")}else this._onError(m.Z.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS")}else this._onError(m.Z.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: "+(this._naluLengthSize-1));else this._onError(m.Z.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord")}},e.prototype._parseAVCVideoData=function(e,t,i,n,r,o,a){for(var h=this._littleEndian,u=new DataView(e,t,i),l=[],d=0,c=0,f=this._naluLengthSize,_=this._timestampBase+n,p=1===o;c<i;){if(c+4>=i){s.Z.w(this.TAG,"Malformed Nalu near timestamp "+_+", offset = "+c+", dataSize = "+i);break}var m=u.getUint32(c,!h);if(3===f&&(m>>>=8),m>i-f)return void s.Z.w(this.TAG,"Malformed Nalus near timestamp "+_+", NaluSize > DataSize!");var g=31&u.getUint8(c+f);5===g&&(p=!0);var v=new Uint8Array(e,t+c,f+m),y={type:g,data:v};l.push(y),d+=v.byteLength,c+=f+m}if(l.length){var b=this._videoTrack,E={units:l,length:d,isKeyframe:p,dts:_,cts:a,pts:_+a};p&&(E.fileposition=r),b.samples.push(E),b.length+=d}},e}(),v=function(){function e(){}return e.init=function(){for(var t in e.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[]},e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var i=e.constants={};i.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),i.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),i.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),i.STSC=i.STCO=i.STTS,i.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),i.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),i.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),i.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),i.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])},e.box=function(e){for(var t=8,i=null,n=Array.prototype.slice.call(arguments,1),r=n.length,s=0;s<r;s++)t+=n[s].byteLength;(i=new Uint8Array(t))[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=255&t,i.set(e,4);var o=8;for(s=0;s<r;s++)i.set(n[s],o),o+=n[s].byteLength;return i},e.generateInitSegment=function(t){var i=e.box(e.types.ftyp,e.constants.FTYP),n=e.moov(t),r=new Uint8Array(i.byteLength+n.byteLength);return r.set(i,0),r.set(n,i.byteLength),r},e.moov=function(t){var i=e.mvhd(t.timescale,t.duration),n=e.trak(t),r=e.mvex(t);return e.box(e.types.moov,i,n,r)},e.mvhd=function(t,i){return e.box(e.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))},e.trak=function(t){return e.box(e.types.trak,e.tkhd(t),e.mdia(t))},e.tkhd=function(t){var i=t.id,n=t.duration,r=t.presentWidth,s=t.presentHeight;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))},e.mdia=function(t){return e.box(e.types.mdia,e.mdhd(t),e.hdlr(t),e.minf(t))},e.mdhd=function(t){var i=t.timescale,n=t.duration;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,n>>>24&255,n>>>16&255,n>>>8&255,255&n,85,196,0,0]))},e.hdlr=function(t){var i=null;return i="audio"===t.type?e.constants.HDLR_AUDIO:e.constants.HDLR_VIDEO,e.box(e.types.hdlr,i)},e.minf=function(t){var i=null;return i="audio"===t.type?e.box(e.types.smhd,e.constants.SMHD):e.box(e.types.vmhd,e.constants.VMHD),e.box(e.types.minf,i,e.dinf(),e.stbl(t))},e.dinf=function(){return e.box(e.types.dinf,e.box(e.types.dref,e.constants.DREF))},e.stbl=function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.constants.STTS),e.box(e.types.stsc,e.constants.STSC),e.box(e.types.stsz,e.constants.STSZ),e.box(e.types.stco,e.constants.STCO))},e.stsd=function(t){return"audio"===t.type?"mp3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp3(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp4a(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.avc1(t))},e.mp3=function(t){var i=t.channelCount,n=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i,0,16,0,0,0,0,n>>>8&255,255&n,0,0]);return e.box(e.types[".mp3"],r)},e.mp4a=function(t){var i=t.channelCount,n=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i,0,16,0,0,0,0,n>>>8&255,255&n,0,0]);return e.box(e.types.mp4a,r,e.esds(t))},e.esds=function(t){var i=t.config||[],n=i.length,r=new Uint8Array([0,0,0,0,3,23+n,0,1,0,4,15+n,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([n]).concat(i).concat([6,1,2]));return e.box(e.types.esds,r)},e.avc1=function(t){var i=t.avcc,n=t.codecWidth,r=t.codecHeight,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,n>>>8&255,255&n,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.avc1,s,e.box(e.types.avcC,i))},e.mvex=function(t){return e.box(e.types.mvex,e.trex(t))},e.trex=function(t){var i=t.id,n=new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return e.box(e.types.trex,n)},e.moof=function(t,i){return e.box(e.types.moof,e.mfhd(t.sequenceNumber),e.traf(t,i))},e.mfhd=function(t){var i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]);return e.box(e.types.mfhd,i)},e.traf=function(t,i){var n=t.id,r=e.box(e.types.tfhd,new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n])),s=e.box(e.types.tfdt,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),o=e.sdtp(t),a=e.trun(t,o.byteLength+16+16+8+16+8+8);return e.box(e.types.traf,r,s,a,o)},e.sdtp=function(t){for(var i=t.samples||[],n=i.length,r=new Uint8Array(4+n),s=0;s<n;s++){var o=i[s].flags;r[s+4]=o.isLeading<<6|o.dependsOn<<4|o.isDependedOn<<2|o.hasRedundancy}return e.box(e.types.sdtp,r)},e.trun=function(t,i){var n=t.samples||[],r=n.length,s=12+16*r,o=new Uint8Array(s);i+=8+s,o.set([0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,i>>>24&255,i>>>16&255,i>>>8&255,255&i],0);for(var a=0;a<r;a++){var h=n[a].duration,u=n[a].size,l=n[a].flags,d=n[a].cts;o.set([h>>>24&255,h>>>16&255,h>>>8&255,255&h,u>>>24&255,u>>>16&255,u>>>8&255,255&u,l.isLeading<<2|l.dependsOn,l.isDependedOn<<6|l.hasRedundancy<<4|l.isNonSync,0,0,d>>>24&255,d>>>16&255,d>>>8&255,255&d],12+16*a)}return e.box(e.types.trun,o)},e.mdat=function(t){return e.box(e.types.mdat,t)},e}();v.init();var y=v,b=function(){function e(){}return e.getSilentFrame=function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null},e}(),E=i(51),S=function(){function e(e){this.TAG="MP4Remuxer",this._config=e,this._isLive=!0===e.isLive,this._dtsBase=-1,this._dtsBaseInited=!1,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=void 0,this._videoNextDts=void 0,this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList=new E.J1("audio"),this._videoSegmentInfoList=new E.J1("video"),this._onInitSegment=null,this._onMediaSegment=null,this._forceFirstIDR=!(!o.Z.chrome||!(o.Z.version.major<50||50===o.Z.version.major&&o.Z.version.build<2661)),this._fillSilentAfterSeek=o.Z.msedge||o.Z.msie,this._mp3UseMpegAudio=!o.Z.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}return e.prototype.destroy=function(){this._dtsBase=-1,this._dtsBaseInited=!1,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._audioSegmentInfoList=null,this._videoSegmentInfoList.clear(),this._videoSegmentInfoList=null,this._onInitSegment=null,this._onMediaSegment=null},e.prototype.bindDataSource=function(e){return e.onDataAvailable=this.remux.bind(this),e.onTrackMetadata=this._onTrackMetadataReceived.bind(this),this},Object.defineProperty(e.prototype,"onInitSegment",{get:function(){return this._onInitSegment},set:function(e){this._onInitSegment=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onMediaSegment",{get:function(){return this._onMediaSegment},set:function(e){this._onMediaSegment=e},enumerable:!1,configurable:!0}),e.prototype.insertDiscontinuity=function(){this._audioNextDts=this._videoNextDts=void 0},e.prototype.seek=function(e){this._audioStashedLastSample=null,this._videoStashedLastSample=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear()},e.prototype.remux=function(e,t){if(!this._onMediaSegment)throw new d.rT("MP4Remuxer: onMediaSegment callback must be specificed!");this._dtsBaseInited||this._calculateDtsBase(e,t),this._remuxVideo(t),this._remuxAudio(e)},e.prototype._onTrackMetadataReceived=function(e,t){var i=null,n="mp4",r=t.codec;if("audio"===e)this._audioMeta=t,"mp3"===t.codec&&this._mp3UseMpegAudio?(n="mpeg",r="",i=new Uint8Array):i=y.generateInitSegment(t);else{if("video"!==e)return;this._videoMeta=t,i=y.generateInitSegment(t)}if(!this._onInitSegment)throw new d.rT("MP4Remuxer: onInitSegment callback must be specified!");this._onInitSegment(e,{type:e,data:i.buffer,codec:r,container:e+"/"+n,mediaDuration:t.duration})},e.prototype._calculateDtsBase=function(e,t){this._dtsBaseInited||(e.samples&&e.samples.length&&(this._audioDtsBase=e.samples[0].dts),t.samples&&t.samples.length&&(this._videoDtsBase=t.samples[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase),this._dtsBaseInited=!0)},e.prototype.flushStashedSamples=function(){var e=this._videoStashedLastSample,t=this._audioStashedLastSample,i={type:"video",id:1,sequenceNumber:0,samples:[],length:0};null!=e&&(i.samples.push(e),i.length=e.length);var n={type:"audio",id:2,sequenceNumber:0,samples:[],length:0};null!=t&&(n.samples.push(t),n.length=t.length),this._videoStashedLastSample=null,this._audioStashedLastSample=null,this._remuxVideo(i,!0),this._remuxAudio(n,!0)},e.prototype._remuxAudio=function(e,t){if(null!=this._audioMeta){var i,n=e,r=n.samples,a=void 0,h=-1,u=this._audioMeta.refSampleDuration,l="mp3"===this._audioMeta.codec&&this._mp3UseMpegAudio,d=this._dtsBaseInited&&void 0===this._audioNextDts,c=!1;if(r&&0!==r.length&&(1!==r.length||t)){var f=0,_=null,p=0;l?(f=0,p=n.length):(f=8,p=8+n.length);var m=null;if(r.length>1&&(p-=(m=r.pop()).length),null!=this._audioStashedLastSample){var g=this._audioStashedLastSample;this._audioStashedLastSample=null,r.unshift(g),p+=g.length}null!=m&&(this._audioStashedLastSample=m);var v=r[0].dts-this._dtsBase;if(this._audioNextDts)a=v-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())a=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.originalCodec&&(c=!0);else{var S=this._audioSegmentInfoList.getLastSampleBefore(v);if(null!=S){var A=v-(S.originalDts+S.duration);A<=3&&(A=0),a=v-(S.dts+S.duration+A)}else a=0}if(c){var L=v-a,R=this._videoSegmentInfoList.getLastSegmentBefore(v);if(null!=R&&R.beginDts<L){if(P=b.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount)){var w=R.beginDts,O=L-R.beginDts;s.Z.v(this.TAG,"InsertPrefixSilentAudio: dts: "+w+", duration: "+O),r.unshift({unit:P,dts:w,pts:w}),p+=P.byteLength}}else c=!1}for(var T=[],C=0;C<r.length;C++){var k=(g=r[C]).unit,D=g.dts-this._dtsBase,I=(w=D,!1),M=null,B=0;if(!(D<-.001)){if("mp3"!==this._audioMeta.codec){var x=D;if(this._audioNextDts&&(x=this._audioNextDts),(a=D-x)<=-3*u){s.Z.w(this.TAG,"Dropping 1 audio frame (originalDts: "+D+" ms ,curRefDts: "+x+" ms)  due to dtsCorrection: "+a+" ms overlap.");continue}if(a>=3*u&&this._fillAudioTimestampGap&&!o.Z.safari){I=!0;var P,U=Math.floor(a/u);s.Z.w(this.TAG,"Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\noriginalDts: "+D+" ms, curRefDts: "+x+" ms, dtsCorrection: "+Math.round(a)+" ms, generate: "+U+" frames"),w=Math.floor(x),B=Math.floor(x+u)-w,null==(P=b.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount))&&(s.Z.w(this.TAG,"Unable to generate silent frame for "+this._audioMeta.originalCodec+" with "+this._audioMeta.channelCount+" channels, repeat last frame"),P=k),M=[];for(var N=0;N<U;N++){x+=u;var Z=Math.floor(x),F=Math.floor(x+u)-Z,G={dts:Z,pts:Z,cts:0,unit:P,size:P.byteLength,duration:F,originalDts:D,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};M.push(G),p+=G.size}this._audioNextDts=x+u}else w=Math.floor(x),B=Math.floor(x+u)-w,this._audioNextDts=x+u}else{if(w=D-a,C!==r.length-1)B=r[C+1].dts-this._dtsBase-a-w;else if(null!=m)B=m.dts-this._dtsBase-a-w;else B=T.length>=1?T[T.length-1].duration:Math.floor(u);this._audioNextDts=w+B}-1===h&&(h=w),T.push({dts:w,pts:w,cts:0,unit:g.unit,size:g.unit.byteLength,duration:B,originalDts:D,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),I&&T.push.apply(T,M)}}if(0===T.length)return n.samples=[],void(n.length=0);l?_=new Uint8Array(p):((_=new Uint8Array(p))[0]=p>>>24&255,_[1]=p>>>16&255,_[2]=p>>>8&255,_[3]=255&p,_.set(y.types.mdat,4));for(C=0;C<T.length;C++){k=T[C].unit;_.set(k,f),f+=k.byteLength}var j=T[T.length-1];i=j.dts+j.duration;var V=new E.Yy;V.beginDts=h,V.endDts=i,V.beginPts=h,V.endPts=i,V.originalBeginDts=T[0].originalDts,V.originalEndDts=j.originalDts+j.duration,V.firstSample=new E.Wk(T[0].dts,T[0].pts,T[0].duration,T[0].originalDts,!1),V.lastSample=new E.Wk(j.dts,j.pts,j.duration,j.originalDts,!1),this._isLive||this._audioSegmentInfoList.append(V),n.samples=T,n.sequenceNumber++;var z=null;z=l?new Uint8Array:y.moof(n,h),n.samples=[],n.length=0;var K={type:"audio",data:this._mergeBoxes(z,_).buffer,sampleCount:T.length,info:V};l&&d&&(K.timestampOffset=h),this._onMediaSegment("audio",K)}}},e.prototype._remuxVideo=function(e,t){if(null!=this._videoMeta){var i,n,r=e,s=r.samples,o=void 0,a=-1,h=-1;if(s&&0!==s.length&&(1!==s.length||t)){var u=8,l=null,d=8+e.length,c=null;if(s.length>1&&(d-=(c=s.pop()).length),null!=this._videoStashedLastSample){var f=this._videoStashedLastSample;this._videoStashedLastSample=null,s.unshift(f),d+=f.length}null!=c&&(this._videoStashedLastSample=c);var _=s[0].dts-this._dtsBase;if(this._videoNextDts)o=_-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())o=0;else{var p=this._videoSegmentInfoList.getLastSampleBefore(_);if(null!=p){var m=_-(p.originalDts+p.duration);m<=3&&(m=0),o=_-(p.dts+p.duration+m)}else o=0}for(var g=new E.Yy,v=[],b=0;b<s.length;b++){var S=(f=s[b]).dts-this._dtsBase,A=f.isKeyframe,L=S-o,R=f.cts,w=L+R;-1===a&&(a=L,h=w);var O=0;if(b!==s.length-1)O=s[b+1].dts-this._dtsBase-o-L;else if(null!=c)O=c.dts-this._dtsBase-o-L;else O=v.length>=1?v[v.length-1].duration:Math.floor(this._videoMeta.refSampleDuration);if(A){var T=new E.Wk(L,w,O,f.dts,!0);T.fileposition=f.fileposition,g.appendSyncPoint(T)}v.push({dts:L,pts:w,cts:R,units:f.units,size:f.length,isKeyframe:A,duration:O,originalDts:S,flags:{isLeading:0,dependsOn:A?2:1,isDependedOn:A?1:0,hasRedundancy:0,isNonSync:A?0:1}})}(l=new Uint8Array(d))[0]=d>>>24&255,l[1]=d>>>16&255,l[2]=d>>>8&255,l[3]=255&d,l.set(y.types.mdat,4);for(b=0;b<v.length;b++)for(var C=v[b].units;C.length;){var k=C.shift().data;l.set(k,u),u+=k.byteLength}var D=v[v.length-1];if(i=D.dts+D.duration,n=D.pts+D.duration,this._videoNextDts=i,g.beginDts=a,g.endDts=i,g.beginPts=h,g.endPts=n,g.originalBeginDts=v[0].originalDts,g.originalEndDts=D.originalDts+D.duration,g.firstSample=new E.Wk(v[0].dts,v[0].pts,v[0].duration,v[0].originalDts,v[0].isKeyframe),g.lastSample=new E.Wk(D.dts,D.pts,D.duration,D.originalDts,D.isKeyframe),this._isLive||this._videoSegmentInfoList.append(g),r.samples=v,r.sequenceNumber++,this._forceFirstIDR){var I=v[0].flags;I.dependsOn=2,I.isNonSync=0}var M=y.moof(r,a);r.samples=[],r.length=0,this._onMediaSegment("video",{type:"video",data:this._mergeBoxes(M,l).buffer,sampleCount:v.length,info:g})}}},e.prototype._mergeBoxes=function(e,t){var i=new Uint8Array(e.byteLength+t.byteLength);return i.set(e,0),i.set(t,e.byteLength),i},e}(),A=i(191),L=i(257),R=function(){function e(e,t){this.TAG="TransmuxingController",this._emitter=new(r()),this._config=t,e.segments||(e.segments=[{duration:e.duration,filesize:e.filesize,url:e.url}]),"boolean"!=typeof e.cors&&(e.cors=!0),"boolean"!=typeof e.withCredentials&&(e.withCredentials=!1),this._mediaDataSource=e,this._currentSegmentIndex=0;var i=0;this._mediaDataSource.segments.forEach((function(n){n.timestampBase=i,i+=n.duration,n.cors=e.cors,n.withCredentials=e.withCredentials,t.referrerPolicy&&(n.referrerPolicy=t.referrerPolicy)})),isNaN(i)||this._mediaDataSource.duration===i||(this._mediaDataSource.duration=i),this._mediaInfo=null,this._demuxer=null,this._remuxer=null,this._ioctl=null,this._pendingSeekTime=null,this._pendingResolveSeekPoint=null,this._statisticsReporter=null}return e.prototype.destroy=function(){this._mediaInfo=null,this._mediaDataSource=null,this._statisticsReporter&&this._disableStatisticsReporter(),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.start=function(){this._loadSegment(0),this._enableStatisticsReporter()},e.prototype._loadSegment=function(e,t){this._currentSegmentIndex=e;var i=this._mediaDataSource.segments[e],n=this._ioctl=new A.Z(i,this._config,e);n.onError=this._onIOException.bind(this),n.onSeeked=this._onIOSeeked.bind(this),n.onComplete=this._onIOComplete.bind(this),n.onRedirect=this._onIORedirect.bind(this),n.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),t?this._demuxer.bindDataSource(this._ioctl):n.onDataArrival=this._onInitChunkArrival.bind(this),n.open(t)},e.prototype.stop=function(){this._internalAbort(),this._disableStatisticsReporter()},e.prototype._internalAbort=function(){this._ioctl&&(this._ioctl.destroy(),this._ioctl=null)},e.prototype.pause=function(){this._ioctl&&this._ioctl.isWorking()&&(this._ioctl.pause(),this._disableStatisticsReporter())},e.prototype.resume=function(){this._ioctl&&this._ioctl.isPaused()&&(this._ioctl.resume(),this._enableStatisticsReporter())},e.prototype.seek=function(e){if(null!=this._mediaInfo&&this._mediaInfo.isSeekable()){var t=this._searchSegmentIndexContains(e);if(t===this._currentSegmentIndex){var i=this._mediaInfo.segments[t];if(null==i)this._pendingSeekTime=e;else{var n=i.getNearestKeyframe(e);this._remuxer.seek(n.milliseconds),this._ioctl.seek(n.fileposition),this._pendingResolveSeekPoint=n.milliseconds}}else{var r=this._mediaInfo.segments[t];if(null==r)this._pendingSeekTime=e,this._internalAbort(),this._remuxer.seek(),this._remuxer.insertDiscontinuity(),this._loadSegment(t);else{n=r.getNearestKeyframe(e);this._internalAbort(),this._remuxer.seek(e),this._remuxer.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[t].timestampBase,this._loadSegment(t,n.fileposition),this._pendingResolveSeekPoint=n.milliseconds,this._reportSegmentMediaInfo(t)}}this._enableStatisticsReporter()}},e.prototype._searchSegmentIndexContains=function(e){for(var t=this._mediaDataSource.segments,i=t.length-1,n=0;n<t.length;n++)if(e<t[n].timestampBase){i=n-1;break}return i},e.prototype._onInitChunkArrival=function(e,t){var i=this,n=null,r=0;if(t>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,r=this._demuxer.parseChunks(e,t);else if((n=g.probe(e)).match){this._demuxer=new g(n,this._config),this._remuxer||(this._remuxer=new S(this._config));var o=this._mediaDataSource;null==o.duration||isNaN(o.duration)||(this._demuxer.overridedDuration=o.duration),"boolean"==typeof o.hasAudio&&(this._demuxer.overridedHasAudio=o.hasAudio),"boolean"==typeof o.hasVideo&&(this._demuxer.overridedHasVideo=o.hasVideo),this._demuxer.timestampBase=o.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onMetaDataArrived=this._onMetaDataArrived.bind(this),this._demuxer.onScriptDataArrived=this._onScriptDataArrived.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),r=this._demuxer.parseChunks(e,t)}else n=null,s.Z.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then((function(){i._internalAbort()})),this._emitter.emit(L.Z.DEMUX_ERROR,m.Z.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),r=0;return r},e.prototype._onMediaInfo=function(e){var t=this;null==this._mediaInfo&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,a.Z.prototype));var i=Object.assign({},e);Object.setPrototypeOf(i,a.Z.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=i,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then((function(){var e=t._pendingSeekTime;t._pendingSeekTime=null,t.seek(e)}))},e.prototype._onMetaDataArrived=function(e){this._emitter.emit(L.Z.METADATA_ARRIVED,e)},e.prototype._onScriptDataArrived=function(e){this._emitter.emit(L.Z.SCRIPTDATA_ARRIVED,e)},e.prototype._onIOSeeked=function(){this._remuxer.insertDiscontinuity()},e.prototype._onIOComplete=function(e){var t=e+1;t<this._mediaDataSource.segments.length?(this._internalAbort(),this._remuxer.flushStashedSamples(),this._loadSegment(t)):(this._remuxer.flushStashedSamples(),this._emitter.emit(L.Z.LOADING_COMPLETE),this._disableStatisticsReporter())},e.prototype._onIORedirect=function(e){var t=this._ioctl.extraData;this._mediaDataSource.segments[t].redirectedURL=e},e.prototype._onIORecoveredEarlyEof=function(){this._emitter.emit(L.Z.RECOVERED_EARLY_EOF)},e.prototype._onIOException=function(e,t){s.Z.e(this.TAG,"IOException: type = "+e+", code = "+t.code+", msg = "+t.msg),this._emitter.emit(L.Z.IO_ERROR,e,t),this._disableStatisticsReporter()},e.prototype._onDemuxException=function(e,t){s.Z.e(this.TAG,"DemuxException: type = "+e+", info = "+t),this._emitter.emit(L.Z.DEMUX_ERROR,e,t)},e.prototype._onRemuxerInitSegmentArrival=function(e,t){this._emitter.emit(L.Z.INIT_SEGMENT,e,t)},e.prototype._onRemuxerMediaSegmentArrival=function(e,t){if(null==this._pendingSeekTime&&(this._emitter.emit(L.Z.MEDIA_SEGMENT,e,t),null!=this._pendingResolveSeekPoint&&"video"===e)){var i=t.info.syncPoints,n=this._pendingResolveSeekPoint;this._pendingResolveSeekPoint=null,o.Z.safari&&i.length>0&&i[0].originalDts===n&&(n=i[0].pts),this._emitter.emit(L.Z.RECOMMEND_SEEKPOINT,n)}},e.prototype._enableStatisticsReporter=function(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))},e.prototype._disableStatisticsReporter=function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},e.prototype._reportSegmentMediaInfo=function(e){var t=this._mediaInfo.segments[e],i=Object.assign({},t);i.duration=this._mediaInfo.duration,i.segmentCount=this._mediaInfo.segmentCount,delete i.segments,delete i.keyframesIndex,this._emitter.emit(L.Z.MEDIA_INFO,i)},e.prototype._reportStatisticsInfo=function(){var e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(L.Z.STATISTICS_INFO,e)},e}()},257:function(e,t){"use strict";t.Z={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint"}},82:function(e,t,i){"use strict";i(846),i(219),i(949),i(257)},600:function(e,t){"use strict";t.Z={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"}},60:function(e,t,i){"use strict";i.d(t,{default:function(){return D}});var n=i(219),r=i(191),s={enableWorker:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:30,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1,headers:void 0,customLoader:void 0};function o(){return Object.assign({},s)}var a=function(){function e(){}return e.supportMSEH264Playback=function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')},e.supportNetworkStreamIO=function(){var e=new r.Z({},o()),t=e.loaderType;return e.destroy(),"fetch-stream-loader"==t||"xhr-moz-chunked-loader"==t},e.getNetworkLoaderTypeName=function(){var e=new r.Z({},o()),t=e.loaderType;return e.destroy(),t},e.supportNativeMediaPlayback=function(t){null==e.videoElement&&(e.videoElement=window.document.createElement("video"));var i=e.videoElement.canPlayType(t);return"probably"===i||"maybe"==i},e.getFeatureList=function(){var t={mseFlvPlayback:!1,mseLiveFlvPlayback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return t.mseFlvPlayback=e.supportMSEH264Playback(),t.networkStreamIO=e.supportNetworkStreamIO(),t.networkLoaderName=e.getNetworkLoaderTypeName(),t.mseLiveFlvPlayback=t.mseFlvPlayback&&t.networkStreamIO,t.nativeMP4H264Playback=e.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),t.nativeWebmVP8Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),t.nativeWebmVP9Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp9"'),t},e}(),h=i(939),u=i(716),l=i.n(u),d=i(300),c=i(538),f={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",METADATA_ARRIVED:"metadata_arrived",SCRIPTDATA_ARRIVED:"scriptdata_arrived",STATISTICS_INFO:"statistics_info"},_=i(397),p=i.n(_),m=i(846),g=i(949),v=i(257),y=i(118),b=function(){function e(e,t){if(this.TAG="Transmuxer",this._emitter=new(l()),t.enableWorker&&"undefined"!=typeof Worker)try{this._worker=p()(82),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[e,t]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},m.Z.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:m.Z.getConfig()})}catch(i){d.Z.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new g.Z(e,t)}else this._controller=new g.Z(e,t);if(this._controller){var i=this._controller;i.on(v.Z.IO_ERROR,this._onIOError.bind(this)),i.on(v.Z.DEMUX_ERROR,this._onDemuxError.bind(this)),i.on(v.Z.INIT_SEGMENT,this._onInitSegment.bind(this)),i.on(v.Z.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),i.on(v.Z.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),i.on(v.Z.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),i.on(v.Z.MEDIA_INFO,this._onMediaInfo.bind(this)),i.on(v.Z.METADATA_ARRIVED,this._onMetaDataArrived.bind(this)),i.on(v.Z.SCRIPTDATA_ARRIVED,this._onScriptDataArrived.bind(this)),i.on(v.Z.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),i.on(v.Z.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}return e.prototype.destroy=function(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),m.Z.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.hasWorker=function(){return null!=this._worker},e.prototype.open=function(){this._worker?this._worker.postMessage({cmd:"start"}):this._controller.start()},e.prototype.close=function(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()},e.prototype.seek=function(e){this._worker?this._worker.postMessage({cmd:"seek",param:e}):this._controller.seek(e)},e.prototype.pause=function(){this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()},e.prototype.resume=function(){this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()},e.prototype._onInitSegment=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(v.Z.INIT_SEGMENT,e,t)}))},e.prototype._onMediaSegment=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(v.Z.MEDIA_SEGMENT,e,t)}))},e.prototype._onLoadingComplete=function(){var e=this;Promise.resolve().then((function(){e._emitter.emit(v.Z.LOADING_COMPLETE)}))},e.prototype._onRecoveredEarlyEof=function(){var e=this;Promise.resolve().then((function(){e._emitter.emit(v.Z.RECOVERED_EARLY_EOF)}))},e.prototype._onMediaInfo=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(v.Z.MEDIA_INFO,e)}))},e.prototype._onMetaDataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(v.Z.METADATA_ARRIVED,e)}))},e.prototype._onScriptDataArrived=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(v.Z.SCRIPTDATA_ARRIVED,e)}))},e.prototype._onStatisticsInfo=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(v.Z.STATISTICS_INFO,e)}))},e.prototype._onIOError=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(v.Z.IO_ERROR,e,t)}))},e.prototype._onDemuxError=function(e,t){var i=this;Promise.resolve().then((function(){i._emitter.emit(v.Z.DEMUX_ERROR,e,t)}))},e.prototype._onRecommendSeekpoint=function(e){var t=this;Promise.resolve().then((function(){t._emitter.emit(v.Z.RECOMMEND_SEEKPOINT,e)}))},e.prototype._onLoggingConfigChanged=function(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})},e.prototype._onWorkerMessage=function(e){var t=e.data,i=t.data;if("destroyed"===t.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(t.msg){case v.Z.INIT_SEGMENT:case v.Z.MEDIA_SEGMENT:this._emitter.emit(t.msg,i.type,i.data);break;case v.Z.LOADING_COMPLETE:case v.Z.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case v.Z.MEDIA_INFO:Object.setPrototypeOf(i,y.Z.prototype),this._emitter.emit(t.msg,i);break;case v.Z.METADATA_ARRIVED:case v.Z.SCRIPTDATA_ARRIVED:case v.Z.STATISTICS_INFO:this._emitter.emit(t.msg,i);break;case v.Z.IO_ERROR:case v.Z.DEMUX_ERROR:this._emitter.emit(t.msg,i.type,i.info);break;case v.Z.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,i);break;case"logcat_callback":d.Z.emitter.emit("log",i.type,i.logcat)}},e}(),E={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full"},S=i(51),A=i(29),L=function(){function e(e){this.TAG="MSEController",this._config=e,this._emitter=new(l()),this._config.isLive&&null==this._config.autoCleanupSourceBuffer&&(this._config.autoCleanupSourceBuffer=!0),this.e={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._mediaSource=null,this._mediaSourceObjectURL=null,this._mediaElement=null,this._isBufferFull=!1,this._hasPendingEos=!1,this._requireSetMediaDuration=!1,this._pendingMediaDuration=0,this._pendingSourceBufferInit=[],this._mimeTypes={video:null,audio:null},this._sourceBuffers={video:null,audio:null},this._lastInitSegments={video:null,audio:null},this._pendingSegments={video:[],audio:[]},this._pendingRemoveRanges={video:[],audio:[]},this._idrList=new S.Vn}return e.prototype.destroy=function(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.attachMediaElement=function(e){if(this._mediaSource)throw new A.rT("MediaSource has been attached to an HTMLMediaElement!");var t=this._mediaSource=new window.MediaSource;t.addEventListener("sourceopen",this.e.onSourceOpen),t.addEventListener("sourceended",this.e.onSourceEnded),t.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=e,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),e.src=this._mediaSourceObjectURL},e.prototype.detachMediaElement=function(){if(this._mediaSource){var e=this._mediaSource;for(var t in this._sourceBuffers){var i=this._pendingSegments[t];i.splice(0,i.length),this._pendingSegments[t]=null,this._pendingRemoveRanges[t]=null,this._lastInitSegments[t]=null;var n=this._sourceBuffers[t];if(n){if("closed"!==e.readyState){try{e.removeSourceBuffer(n)}catch(e){d.Z.e(this.TAG,e.message)}n.removeEventListener("error",this.e.onSourceBufferError),n.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)}this._mimeTypes[t]=null,this._sourceBuffers[t]=null}}if("open"===e.readyState)try{e.endOfStream()}catch(e){d.Z.e(this.TAG,e.message)}e.removeEventListener("sourceopen",this.e.onSourceOpen),e.removeEventListener("sourceended",this.e.onSourceEnded),e.removeEventListener("sourceclose",this.e.onSourceClose),this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._idrList.clear(),this._mediaSource=null}this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement=null),this._mediaSourceObjectURL&&(window.URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)},e.prototype.appendInitSegment=function(e,t){if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(e),void this._pendingSegments[e.type].push(e);var i=e,n=""+i.container;i.codec&&i.codec.length>0&&(n+=";codecs="+i.codec);var r=!1;if(d.Z.v(this.TAG,"Received Initialization Segment, mimeType: "+n),this._lastInitSegments[i.type]=i,n!==this._mimeTypes[i.type]){if(this._mimeTypes[i.type])d.Z.v(this.TAG,"Notice: "+i.type+" mimeType changed, origin: "+this._mimeTypes[i.type]+", target: "+n);else{r=!0;try{var s=this._sourceBuffers[i.type]=this._mediaSource.addSourceBuffer(n);s.addEventListener("error",this.e.onSourceBufferError),s.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(e){return d.Z.e(this.TAG,e.message),void this._emitter.emit(E.ERROR,{code:e.code,msg:e.message})}}this._mimeTypes[i.type]=n}t||this._pendingSegments[i.type].push(i),r||this._sourceBuffers[i.type]&&!this._sourceBuffers[i.type].updating&&this._doAppendSegments(),c.Z.safari&&"audio/mpeg"===i.container&&i.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=i.mediaDuration/1e3,this._updateMediaSourceDuration())},e.prototype.appendMediaSegment=function(e){var t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer();var i=this._sourceBuffers[t.type];!i||i.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()},e.prototype.seek=function(e){for(var t in this._sourceBuffers)if(this._sourceBuffers[t]){var i=this._sourceBuffers[t];if("open"===this._mediaSource.readyState)try{i.abort()}catch(e){d.Z.e(this.TAG,e.message)}this._idrList.clear();var n=this._pendingSegments[t];if(n.splice(0,n.length),"closed"!==this._mediaSource.readyState){for(var r=0;r<i.buffered.length;r++){var s=i.buffered.start(r),o=i.buffered.end(r);this._pendingRemoveRanges[t].push({start:s,end:o})}if(i.updating||this._doRemoveRanges(),c.Z.safari){var a=this._lastInitSegments[t];a&&(this._pendingSegments[t].push(a),i.updating||this._doAppendSegments())}}}},e.prototype.endOfStream=function(){var e=this._mediaSource,t=this._sourceBuffers;e&&"open"===e.readyState?t.video&&t.video.updating||t.audio&&t.audio.updating?this._hasPendingEos=!0:(this._hasPendingEos=!1,e.endOfStream()):e&&"closed"===e.readyState&&this._hasPendingSegments()&&(this._hasPendingEos=!0)},e.prototype.getNearestKeyframe=function(e){return this._idrList.getLastSyncPointBeforeDts(e)},e.prototype._needCleanupSourceBuffer=function(){if(!this._config.autoCleanupSourceBuffer)return!1;var e=this._mediaElement.currentTime;for(var t in this._sourceBuffers){var i=this._sourceBuffers[t];if(i){var n=i.buffered;if(n.length>=1&&e-n.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}}return!1},e.prototype._doCleanupSourceBuffer=function(){var e=this._mediaElement.currentTime;for(var t in this._sourceBuffers){var i=this._sourceBuffers[t];if(i){for(var n=i.buffered,r=!1,s=0;s<n.length;s++){var o=n.start(s),a=n.end(s);if(o<=e&&e<a+3){if(e-o>=this._config.autoCleanupMaxBackwardDuration){r=!0;var h=e-this._config.autoCleanupMinBackwardDuration;this._pendingRemoveRanges[t].push({start:o,end:h})}}else a<e&&(r=!0,this._pendingRemoveRanges[t].push({start:o,end:a}))}r&&!i.updating&&this._doRemoveRanges()}}},e.prototype._updateMediaSourceDuration=function(){var e=this._sourceBuffers;if(0!==this._mediaElement.readyState&&"open"===this._mediaSource.readyState&&!(e.video&&e.video.updating||e.audio&&e.audio.updating)){var t=this._mediaSource.duration,i=this._pendingMediaDuration;i>0&&(isNaN(t)||i>t)&&(d.Z.v(this.TAG,"Update MediaSource duration from "+t+" to "+i),this._mediaSource.duration=i),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}},e.prototype._doRemoveRanges=function(){for(var e in this._pendingRemoveRanges)if(this._sourceBuffers[e]&&!this._sourceBuffers[e].updating)for(var t=this._sourceBuffers[e],i=this._pendingRemoveRanges[e];i.length&&!t.updating;){var n=i.shift();t.remove(n.start,n.end)}},e.prototype._doAppendSegments=function(){var e=this._pendingSegments;for(var t in e)if(this._sourceBuffers[t]&&!this._sourceBuffers[t].updating&&e[t].length>0){var i=e[t].shift();if(i.timestampOffset){var n=this._sourceBuffers[t].timestampOffset,r=i.timestampOffset/1e3;Math.abs(n-r)>.1&&(d.Z.v(this.TAG,"Update MPEG audio timestampOffset from "+n+" to "+r),this._sourceBuffers[t].timestampOffset=r),delete i.timestampOffset}if(!i.data||0===i.data.byteLength)continue;try{this._sourceBuffers[t].appendBuffer(i.data),this._isBufferFull=!1,"video"===t&&i.hasOwnProperty("info")&&this._idrList.appendArray(i.info.syncPoints)}catch(e){this._pendingSegments[t].unshift(i),22===e.code?(this._isBufferFull||this._emitter.emit(E.BUFFER_FULL),this._isBufferFull=!0):(d.Z.e(this.TAG,e.message),this._emitter.emit(E.ERROR,{code:e.code,msg:e.message}))}}},e.prototype._onSourceOpen=function(){if(d.Z.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var e=this._pendingSourceBufferInit;e.length;){var t=e.shift();this.appendInitSegment(t,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(E.SOURCE_OPEN)},e.prototype._onSourceEnded=function(){d.Z.v(this.TAG,"MediaSource onSourceEnded")},e.prototype._onSourceClose=function(){d.Z.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))},e.prototype._hasPendingSegments=function(){var e=this._pendingSegments;return e.video.length>0||e.audio.length>0},e.prototype._hasPendingRemoveRanges=function(){var e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0},e.prototype._onSourceBufferUpdateEnd=function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(E.UPDATE_END)},e.prototype._onSourceBufferError=function(e){d.Z.e(this.TAG,"SourceBuffer Error: "+e)},e}(),R=i(600),w={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},O={NETWORK_EXCEPTION:h.nm.EXCEPTION,NETWORK_STATUS_CODE_INVALID:h.nm.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:h.nm.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:h.nm.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:R.Z.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:R.Z.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:R.Z.CODEC_UNSUPPORTED},T=function(){function e(e,t){if(this.TAG="FlvPlayer",this._type="FlvPlayer",this._emitter=new(l()),this._config=o(),"object"==typeof t&&Object.assign(this._config,t),"flv"!==e.type.toLowerCase())throw new A.OC("FlvPlayer requires an flv MediaDataSource input!");!0===e.isLive&&(this._config.isLive=!0),this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this),onvSeeking:this._onvSeeking.bind(this),onvCanPlay:this._onvCanPlay.bind(this),onvStalled:this._onvStalled.bind(this),onvProgress:this._onvProgress.bind(this)},self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now,this._pendingSeekTime=null,this._requestSetTime=!1,this._seekpointRecord=null,this._progressChecker=null,this._mediaDataSource=e,this._mediaElement=null,this._msectl=null,this._transmuxer=null,this._mseSourceOpened=!1,this._hasPendingLoad=!1,this._receivedCanPlay=!1,this._mediaInfo=null,this._statisticsInfo=null;var i=c.Z.chrome&&(c.Z.version.major<50||50===c.Z.version.major&&c.Z.version.build<2661);this._alwaysSeekKeyframe=!!(i||c.Z.msedge||c.Z.msie),this._alwaysSeekKeyframe&&(this._config.accurateSeek=!1)}return e.prototype.destroy=function(){null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._transmuxer&&this.unload(),this._mediaElement&&this.detachMediaElement(),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){var i=this;e===f.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then((function(){i._emitter.emit(f.MEDIA_INFO,i.mediaInfo)})):e===f.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then((function(){i._emitter.emit(f.STATISTICS_INFO,i.statisticsInfo)})),this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.attachMediaElement=function(e){var t=this;if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),e.addEventListener("seeking",this.e.onvSeeking),e.addEventListener("canplay",this.e.onvCanPlay),e.addEventListener("stalled",this.e.onvStalled),e.addEventListener("progress",this.e.onvProgress),this._msectl=new L(this._config),this._msectl.on(E.UPDATE_END,this._onmseUpdateEnd.bind(this)),this._msectl.on(E.BUFFER_FULL,this._onmseBufferFull.bind(this)),this._msectl.on(E.SOURCE_OPEN,(function(){t._mseSourceOpened=!0,t._hasPendingLoad&&(t._hasPendingLoad=!1,t.load())})),this._msectl.on(E.ERROR,(function(e){t._emitter.emit(f.ERROR,w.MEDIA_ERROR,O.MEDIA_MSE_ERROR,e)})),this._msectl.attachMediaElement(e),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}},e.prototype.detachMediaElement=function(){this._mediaElement&&(this._msectl.detachMediaElement(),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement.removeEventListener("seeking",this.e.onvSeeking),this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay),this._mediaElement.removeEventListener("stalled",this.e.onvStalled),this._mediaElement.removeEventListener("progress",this.e.onvProgress),this._mediaElement=null),this._msectl&&(this._msectl.destroy(),this._msectl=null)},e.prototype.load=function(){var e=this;if(!this._mediaElement)throw new A.rT("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new A.rT("FlvPlayer.load() has been called, please call unload() first!");this._hasPendingLoad||(this._config.deferLoadAfterSourceOpen&&!1===this._mseSourceOpened?this._hasPendingLoad=!0:(this._mediaElement.readyState>0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0),this._transmuxer=new b(this._mediaDataSource,this._config),this._transmuxer.on(v.Z.INIT_SEGMENT,(function(t,i){e._msectl.appendInitSegment(i)})),this._transmuxer.on(v.Z.MEDIA_SEGMENT,(function(t,i){if(e._msectl.appendMediaSegment(i),e._config.lazyLoad&&!e._config.isLive){var n=e._mediaElement.currentTime;i.info.endDts>=1e3*(n+e._config.lazyLoadMaxDuration)&&null==e._progressChecker&&(d.Z.v(e.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),e._suspendTransmuxer())}})),this._transmuxer.on(v.Z.LOADING_COMPLETE,(function(){e._msectl.endOfStream(),e._emitter.emit(f.LOADING_COMPLETE)})),this._transmuxer.on(v.Z.RECOVERED_EARLY_EOF,(function(){e._emitter.emit(f.RECOVERED_EARLY_EOF)})),this._transmuxer.on(v.Z.IO_ERROR,(function(t,i){e._emitter.emit(f.ERROR,w.NETWORK_ERROR,t,i)})),this._transmuxer.on(v.Z.DEMUX_ERROR,(function(t,i){e._emitter.emit(f.ERROR,w.MEDIA_ERROR,t,{code:-1,msg:i})})),this._transmuxer.on(v.Z.MEDIA_INFO,(function(t){e._mediaInfo=t,e._emitter.emit(f.MEDIA_INFO,Object.assign({},t))})),this._transmuxer.on(v.Z.METADATA_ARRIVED,(function(t){e._emitter.emit(f.METADATA_ARRIVED,t)})),this._transmuxer.on(v.Z.SCRIPTDATA_ARRIVED,(function(t){e._emitter.emit(f.SCRIPTDATA_ARRIVED,t)})),this._transmuxer.on(v.Z.STATISTICS_INFO,(function(t){e._statisticsInfo=e._fillStatisticsInfo(t),e._emitter.emit(f.STATISTICS_INFO,Object.assign({},e._statisticsInfo))})),this._transmuxer.on(v.Z.RECOMMEND_SEEKPOINT,(function(t){e._mediaElement&&!e._config.accurateSeek&&(e._requestSetTime=!0,e._mediaElement.currentTime=t/1e3)})),this._transmuxer.open()))},e.prototype.unload=function(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)},e.prototype.play=function(){return this._mediaElement.play()},e.prototype.pause=function(){this._mediaElement.pause()},Object.defineProperty(e.prototype,"type",{get:function(){return this._type},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"buffered",{get:function(){return this._mediaElement.buffered},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"duration",{get:function(){return this._mediaElement.duration},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"volume",{get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"muted",{get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentTime",{get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._internalSeek(e):this._pendingSeekTime=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"mediaInfo",{get:function(){return Object.assign({},this._mediaInfo)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"statisticsInfo",{get:function(){return null==this._statisticsInfo&&(this._statisticsInfo={}),this._statisticsInfo=this._fillStatisticsInfo(this._statisticsInfo),Object.assign({},this._statisticsInfo)},enumerable:!1,configurable:!0}),e.prototype._fillStatisticsInfo=function(e){if(e.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,i=0,n=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(i=this._mediaElement.webkitDecodedFrameCount,n=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e},e.prototype._onmseUpdateEnd=function(){if(this._config.lazyLoad&&!this._config.isLive){for(var e=this._mediaElement.buffered,t=this._mediaElement.currentTime,i=0,n=0;n<e.length;n++){var r=e.start(n),s=e.end(n);if(r<=t&&t<s){r,i=s;break}}i>=t+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(d.Z.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}},e.prototype._onmseBufferFull=function(){d.Z.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()},e.prototype._suspendTransmuxer=function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))},e.prototype._checkProgressAndResume=function(){for(var e=this._mediaElement.currentTime,t=this._mediaElement.buffered,i=!1,n=0;n<t.length;n++){var r=t.start(n),s=t.end(n);if(e>=r&&e<s){e>=s-this._config.lazyLoadRecoverDuration&&(i=!0);break}}i&&(window.clearInterval(this._progressChecker),this._progressChecker=null,i&&(d.Z.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))},e.prototype._isTimepointBuffered=function(e){for(var t=this._mediaElement.buffered,i=0;i<t.length;i++){var n=t.start(i),r=t.end(i);if(e>=n&&e<r)return!0}return!1},e.prototype._internalSeek=function(e){var t=this._isTimepointBuffered(e),i=!1,n=0;if(e<1&&this._mediaElement.buffered.length>0){var r=this._mediaElement.buffered.start(0);(r<1&&e<r||c.Z.safari)&&(i=!0,n=c.Z.safari?.1:r)}if(i)this._requestSetTime=!0,this._mediaElement.currentTime=n;else if(t){if(this._alwaysSeekKeyframe){var s=this._msectl.getNearestKeyframe(Math.floor(1e3*e));this._requestSetTime=!0,this._mediaElement.currentTime=null!=s?s.dts/1e3:e}else this._requestSetTime=!0,this._mediaElement.currentTime=e;null!=this._progressChecker&&this._checkProgressAndResume()}else null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._msectl.seek(e),this._transmuxer.seek(Math.floor(1e3*e)),this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=e)},e.prototype._checkAndApplyUnbufferedSeekpoint=function(){if(this._seekpointRecord)if(this._seekpointRecord.recordTime<=this._now()-100){var e=this._mediaElement.currentTime;this._seekpointRecord=null,this._isTimepointBuffered(e)||(null!=this._progressChecker&&(window.clearTimeout(this._progressChecker),this._progressChecker=null),this._msectl.seek(e),this._transmuxer.seek(Math.floor(1e3*e)),this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=e))}else window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this),50)},e.prototype._checkAndResumeStuckPlayback=function(e){var t=this._mediaElement;if(e||!this._receivedCanPlay||t.readyState<2){var i=t.buffered;i.length>0&&t.currentTime<i.start(0)&&(d.Z.w(this.TAG,"Playback seems stuck at "+t.currentTime+", seek to "+i.start(0)),this._requestSetTime=!0,this._mediaElement.currentTime=i.start(0),this._mediaElement.removeEventListener("progress",this.e.onvProgress))}else this._mediaElement.removeEventListener("progress",this.e.onvProgress)},e.prototype._onvLoadedMetadata=function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null)},e.prototype._onvSeeking=function(e){var t=this._mediaElement.currentTime,i=this._mediaElement.buffered;if(this._requestSetTime)this._requestSetTime=!1;else{if(t<1&&i.length>0){var n=i.start(0);if(n<1&&t<n||c.Z.safari)return this._requestSetTime=!0,void(this._mediaElement.currentTime=c.Z.safari?.1:n)}if(this._isTimepointBuffered(t)){if(this._alwaysSeekKeyframe){var r=this._msectl.getNearestKeyframe(Math.floor(1e3*t));null!=r&&(this._requestSetTime=!0,this._mediaElement.currentTime=r.dts/1e3)}null!=this._progressChecker&&this._checkProgressAndResume()}else this._seekpointRecord={seekPoint:t,recordTime:this._now()},window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this),50)}},e.prototype._onvCanPlay=function(e){this._receivedCanPlay=!0,this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay)},e.prototype._onvStalled=function(e){this._checkAndResumeStuckPlayback(!0)},e.prototype._onvProgress=function(e){this._checkAndResumeStuckPlayback()},e}(),C=function(){function e(e,t){if(this.TAG="NativePlayer",this._type="NativePlayer",this._emitter=new(l()),this._config=o(),"object"==typeof t&&Object.assign(this._config,t),"flv"===e.type.toLowerCase())throw new A.OC("NativePlayer does't support flv MediaDataSource input!");if(e.hasOwnProperty("segments"))throw new A.OC("NativePlayer("+e.type+") doesn't support multipart playback!");this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this)},this._pendingSeekTime=null,this._statisticsReporter=null,this._mediaDataSource=e,this._mediaElement=null}return e.prototype.destroy=function(){this._mediaElement&&(this.unload(),this.detachMediaElement()),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null},e.prototype.on=function(e,t){var i=this;e===f.MEDIA_INFO?null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then((function(){i._emitter.emit(f.MEDIA_INFO,i.mediaInfo)})):e===f.STATISTICS_INFO&&null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then((function(){i._emitter.emit(f.STATISTICS_INFO,i.statisticsInfo)})),this._emitter.addListener(e,t)},e.prototype.off=function(e,t){this._emitter.removeListener(e,t)},e.prototype.attachMediaElement=function(e){if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}},e.prototype.detachMediaElement=function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement=null),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},e.prototype.load=function(){if(!this._mediaElement)throw new A.rT("HTMLMediaElement must be attached before load()!");this._mediaElement.src=this._mediaDataSource.url,this._mediaElement.readyState>0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)},e.prototype.unload=function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)},e.prototype.play=function(){return this._mediaElement.play()},e.prototype.pause=function(){this._mediaElement.pause()},Object.defineProperty(e.prototype,"type",{get:function(){return this._type},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"buffered",{get:function(){return this._mediaElement.buffered},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"duration",{get:function(){return this._mediaElement.duration},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"volume",{get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"muted",{get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentTime",{get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"mediaInfo",{get:function(){var e={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};return this._mediaElement&&(e.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(e.width=this._mediaElement.videoWidth,e.height=this._mediaElement.videoHeight)),e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"statisticsInfo",{get:function(){var e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,i=0,n=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else null!=this._mediaElement.webkitDecodedFrameCount?(i=this._mediaElement.webkitDecodedFrameCount,n=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e},enumerable:!1,configurable:!0}),e.prototype._onvLoadedMetadata=function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(f.MEDIA_INFO,this.mediaInfo)},e.prototype._reportStatisticsInfo=function(){this._emitter.emit(f.STATISTICS_INFO,this.statisticsInfo)},e}();n.Z.install();var k={createPlayer:function(e,t){var i=e;if(null==i||"object"!=typeof i)throw new A.OC("MediaDataSource must be an javascript object!");if(!i.hasOwnProperty("type"))throw new A.OC("MediaDataSource must has type field to indicate video file type!");switch(i.type){case"flv":return new T(i,t);default:return new C(i,t)}},isSupported:function(){return a.supportMSEH264Playback()},getFeatureList:function(){return a.getFeatureList()}};k.BaseLoader=h.fp,k.LoaderStatus=h.GM,k.LoaderErrors=h.nm,k.Events=f,k.ErrorTypes=w,k.ErrorDetails=O,k.FlvPlayer=T,k.NativePlayer=C,k.LoggingControl=m.Z,Object.defineProperty(k,"version",{enumerable:!0,get:function(){return"1.6.2"}});var D=k},324:function(e,t,i){e.exports=i(60).default},191:function(e,t,i){"use strict";i.d(t,{Z:function(){return y}});var n,r=i(300),s=function(){function e(){this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}return e.prototype.reset=function(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0},e.prototype.addBytes=function(e){0===this._firstCheckpoint?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=e,this._totalBytes+=e):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=e,this._totalBytes+=e):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=e,this._totalBytes+=e,this._lastCheckpoint=this._now())},Object.defineProperty(e.prototype,"currentKBps",{get:function(){this.addBytes(0);var e=(this._now()-this._lastCheckpoint)/1e3;return 0==e&&(e=1),this._intervalBytes/e/1024},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"lastSecondKBps",{get:function(){return this.addBytes(0),0!==this._lastSecondBytes?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"averageKBps",{get:function(){var e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024},enumerable:!1,configurable:!0}),e}(),o=i(939),a=i(538),h=i(29),u=(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),l=function(e){function t(t,i){var n=e.call(this,"fetch-stream-loader")||this;return n.TAG="FetchStreamLoader",n._seekHandler=t,n._config=i,n._needStash=!0,n._requestAbort=!1,n._contentLength=null,n._receivedLength=0,n}return u(t,e),t.isSupported=function(){try{var e=a.Z.msedge&&a.Z.version.minor>=15048,t=!a.Z.msedge||e;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}},t.prototype.destroy=function(){this.isWorking()&&this.abort(),e.prototype.destroy.call(this)},t.prototype.open=function(e,t){var i=this;this._dataSource=e,this._range=t;var n=e.url;this._config.reuseRedirectedURL&&null!=e.redirectedURL&&(n=e.redirectedURL);var r=this._seekHandler.getConfig(n,t),s=new self.Headers;if("object"==typeof r.headers){var a=r.headers;for(var u in a)a.hasOwnProperty(u)&&s.append(u,a[u])}var l={method:"GET",headers:s,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if("object"==typeof this._config.headers)for(var u in this._config.headers)s.append(u,this._config.headers[u]);!1===e.cors&&(l.mode="same-origin"),e.withCredentials&&(l.credentials="include"),e.referrerPolicy&&(l.referrerPolicy=e.referrerPolicy),self.AbortController&&(this._abortController=new self.AbortController,l.signal=this._abortController.signal),this._status=o.GM.kConnecting,self.fetch(r.url,l).then((function(e){if(i._requestAbort)return i._status=o.GM.kIdle,void e.body.cancel();if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==r.url&&i._onURLRedirect){var t=i._seekHandler.removeURLParameters(e.url);i._onURLRedirect(t)}var n=e.headers.get("Content-Length");return null!=n&&(i._contentLength=parseInt(n),0!==i._contentLength&&i._onContentLengthKnown&&i._onContentLengthKnown(i._contentLength)),i._pump.call(i,e.body.getReader())}if(i._status=o.GM.kError,!i._onError)throw new h.OZ("FetchStreamLoader: Http code invalid, "+e.status+" "+e.statusText);i._onError(o.nm.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})})).catch((function(e){if(!i._abortController||!i._abortController.signal.aborted){if(i._status=o.GM.kError,!i._onError)throw e;i._onError(o.nm.EXCEPTION,{code:-1,msg:e.message})}}))},t.prototype.abort=function(){if(this._requestAbort=!0,(this._status!==o.GM.kBuffering||!a.Z.chrome)&&this._abortController)try{this._abortController.abort()}catch(e){}},t.prototype._pump=function(e){var t=this;return e.read().then((function(i){if(i.done)if(null!==t._contentLength&&t._receivedLength<t._contentLength){t._status=o.GM.kError;var n=o.nm.EARLY_EOF,r={code:-1,msg:"Fetch stream meet Early-EOF"};if(!t._onError)throw new h.OZ(r.msg);t._onError(n,r)}else t._status=o.GM.kComplete,t._onComplete&&t._onComplete(t._range.from,t._range.from+t._receivedLength-1);else{if(t._abortController&&t._abortController.signal.aborted)return void(t._status=o.GM.kComplete);if(!0===t._requestAbort)return t._status=o.GM.kComplete,e.cancel();t._status=o.GM.kBuffering;var s=i.value.buffer,a=t._range.from+t._receivedLength;t._receivedLength+=s.byteLength,t._onDataArrival&&t._onDataArrival(s,a,t._receivedLength),t._pump(e)}})).catch((function(e){if(t._abortController&&t._abortController.signal.aborted)t._status=o.GM.kComplete;else if(11!==e.code||!a.Z.msedge){t._status=o.GM.kError;var i=0,n=null;if(19!==e.code&&"network error"!==e.message||!(null===t._contentLength||null!==t._contentLength&&t._receivedLength<t._contentLength)?(i=o.nm.EXCEPTION,n={code:e.code,msg:e.message}):(i=o.nm.EARLY_EOF,n={code:e.code,msg:"Fetch stream meet Early-EOF"}),!t._onError)throw new h.OZ(n.msg);t._onError(i,n)}}))},t}(o.fp),d=function(){var e=function(t,i){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])})(t,i)};return function(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function n(){this.constructor=t}e(t,i),t.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),c=function(e){function t(t,i){var n=e.call(this,"xhr-moz-chunked-loader")||this;return n.TAG="MozChunkedLoader",n._seekHandler=t,n._config=i,n._needStash=!0,n._xhr=null,n._requestAbort=!1,n._contentLength=null,n._receivedLength=0,n}return d(t,e),t.isSupported=function(){try{var e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="moz-chunked-arraybuffer","moz-chunked-arraybuffer"===e.responseType}catch(e){return r.Z.w("MozChunkedLoader",e.message),!1}},t.prototype.destroy=function(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onloadend=null,this._xhr.onerror=null,this._xhr=null),e.prototype.destroy.call(this)},t.prototype.open=function(e,t){this._dataSource=e,this._range=t;var i=e.url;this._config.reuseRedirectedURL&&null!=e.redirectedURL&&(i=e.redirectedURL);var n=this._seekHandler.getConfig(i,t);this._requestURL=n.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="moz-chunked-arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onloadend=this._onLoadEnd.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),"object"==typeof n.headers){var s=n.headers;for(var a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}if("object"==typeof this._config.headers){s=this._config.headers;for(var a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}this._status=o.GM.kConnecting,r.send()},t.prototype.abort=function(){this._requestAbort=!0,this._xhr&&this._xhr.abort(),this._status=o.GM.kComplete},t.prototype._onReadyStateChange=function(e){var t=e.target;if(2===t.readyState){if(null!=t.responseURL&&t.responseURL!==this._requestURL&&this._onURLRedirect){var i=this._seekHandler.removeURLParameters(t.responseURL);this._onURLRedirect(i)}if(0!==t.status&&(t.status<200||t.status>299)){if(this._status=o.GM.kError,!this._onError)throw new h.OZ("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(o.nm.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else this._status=o.GM.kBuffering}},t.prototype._onProgress=function(e){if(this._status!==o.GM.kError){null===this._contentLength&&null!==e.total&&0!==e.total&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var t=e.target.response,i=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}},t.prototype._onLoadEnd=function(e){!0!==this._requestAbort?this._status!==o.GM.kError&&(this._status=o.GM.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)):this._requestAbort=!1},t.prototype._onXhrError=function(e){this._status=o.GM.kError;var t=0,i=null;if(this._contentLength&&e.loaded<this._contentLength?(t=o.nm.EARLY_EOF,i={code:-1,msg:"Moz-Chunked stream meet Early-Eof"}):(t=o.nm.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),!this._onError)throw new h.OZ(i.msg);this._onError(t,i)},t}(o.fp),f=function(){var e=function(t,i){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])})(t,i)};return function(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function n(){this.constructor=t}e(t,i),t.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),_=function(e){function t(t,i){var n=e.call(this,"xhr-range-loader")||this;return n.TAG="RangeLoader",n._seekHandler=t,n._config=i,n._needStash=!1,n._chunkSizeKBList=[128,256,384,512,768,1024,1536,2048,3072,4096,5120,6144,7168,8192],n._currentChunkSizeKB=384,n._currentSpeedNormalized=0,n._zeroSpeedChunkCount=0,n._xhr=null,n._speedSampler=new s,n._requestAbort=!1,n._waitForTotalLength=!1,n._totalLengthReceived=!1,n._currentRequestURL=null,n._currentRedirectedURL=null,n._currentRequestRange=null,n._totalLength=null,n._contentLength=null,n._receivedLength=0,n._lastTimeLoaded=0,n}return f(t,e),t.isSupported=function(){try{var e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="arraybuffer","arraybuffer"===e.responseType}catch(e){return r.Z.w("RangeLoader",e.message),!1}},t.prototype.destroy=function(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr=null),e.prototype.destroy.call(this)},Object.defineProperty(t.prototype,"currentSpeed",{get:function(){return this._speedSampler.lastSecondKBps},enumerable:!1,configurable:!0}),t.prototype.open=function(e,t){this._dataSource=e,this._range=t,this._status=o.GM.kConnecting;var i=!1;null!=this._dataSource.filesize&&0!==this._dataSource.filesize&&(i=!0,this._totalLength=this._dataSource.filesize),this._totalLengthReceived||i?this._openSubRange():(this._waitForTotalLength=!0,this._internalOpen(this._dataSource,{from:0,to:-1}))},t.prototype._openSubRange=function(){var e=1024*this._currentChunkSizeKB,t=this._range.from+this._receivedLength,i=t+e;null!=this._contentLength&&i-this._range.from>=this._contentLength&&(i=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:i},this._internalOpen(this._dataSource,this._currentRequestRange)},t.prototype._internalOpen=function(e,t){this._lastTimeLoaded=0;var i=e.url;this._config.reuseRedirectedURL&&(null!=this._currentRedirectedURL?i=this._currentRedirectedURL:null!=e.redirectedURL&&(i=e.redirectedURL));var n=this._seekHandler.getConfig(i,t);this._currentRequestURL=n.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),"object"==typeof n.headers){var s=n.headers;for(var o in s)s.hasOwnProperty(o)&&r.setRequestHeader(o,s[o])}if("object"==typeof this._config.headers){s=this._config.headers;for(var o in s)s.hasOwnProperty(o)&&r.setRequestHeader(o,s[o])}r.send()},t.prototype.abort=function(){this._requestAbort=!0,this._internalAbort(),this._status=o.GM.kComplete},t.prototype._internalAbort=function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)},t.prototype._onReadyStateChange=function(e){var t=e.target;if(2===t.readyState){if(null!=t.responseURL){var i=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&i!==this._currentRedirectedURL&&(this._currentRedirectedURL=i,this._onURLRedirect&&this._onURLRedirect(i))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=o.GM.kBuffering}else{if(this._status=o.GM.kError,!this._onError)throw new h.OZ("RangeLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(o.nm.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}}},t.prototype._onProgress=function(e){if(this._status!==o.GM.kError){if(null===this._contentLength){var t=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,t=!0;var i=e.total;this._internalAbort(),null!=i&0!==i&&(this._totalLength=i)}if(-1===this._range.to?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var n=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(n)}},t.prototype._normalizeSpeed=function(e){var t=this._chunkSizeKBList,i=t.length-1,n=0,r=0,s=i;if(e<t[0])return t[0];for(;r<=s;){if((n=r+Math.floor((s-r)/2))===i||e>=t[n]&&e<t[n+1])return t[n];t[n]<e?r=n+1:s=n-1}},t.prototype._onLoad=function(e){if(this._status!==o.GM.kError)if(this._waitForTotalLength)this._waitForTotalLength=!1;else{this._lastTimeLoaded=0;var t=this._speedSampler.lastSecondKBps;if(0===t&&(this._zeroSpeedChunkCount++,this._zeroSpeedChunkCount>=3&&(t=this._speedSampler.currentKBps)),0!==t){var i=this._normalizeSpeed(t);this._currentSpeedNormalized!==i&&(this._currentSpeedNormalized=i,this._currentChunkSizeKB=i)}var n=e.target.response,r=this._range.from+this._receivedLength;this._receivedLength+=n.byteLength;var s=!1;null!=this._contentLength&&this._receivedLength<this._contentLength?this._openSubRange():s=!0,this._onDataArrival&&this._onDataArrival(n,r,this._receivedLength),s&&(this._status=o.GM.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}},t.prototype._onXhrError=function(e){this._status=o.GM.kError;var t=0,i=null;if(this._contentLength&&this._receivedLength>0&&this._receivedLength<this._contentLength?(t=o.nm.EARLY_EOF,i={code:-1,msg:"RangeLoader meet Early-Eof"}):(t=o.nm.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),!this._onError)throw new h.OZ(i.msg);this._onError(t,i)},t}(o.fp),p=function(){var e=function(t,i){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])})(t,i)};return function(t,i){if("function"!=typeof i&&null!==i)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");function n(){this.constructor=t}e(t,i),t.prototype=null===i?Object.create(i):(n.prototype=i.prototype,new n)}}(),m=function(e){function t(){var t=e.call(this,"websocket-loader")||this;return t.TAG="WebSocketLoader",t._needStash=!0,t._ws=null,t._requestAbort=!1,t._receivedLength=0,t}return p(t,e),t.isSupported=function(){try{return void 0!==self.WebSocket}catch(e){return!1}},t.prototype.destroy=function(){this._ws&&this.abort(),e.prototype.destroy.call(this)},t.prototype.open=function(e){try{var t=this._ws=new self.WebSocket(e.url);t.binaryType="arraybuffer",t.onopen=this._onWebSocketOpen.bind(this),t.onclose=this._onWebSocketClose.bind(this),t.onmessage=this._onWebSocketMessage.bind(this),t.onerror=this._onWebSocketError.bind(this),this._status=o.GM.kConnecting}catch(e){this._status=o.GM.kError;var i={code:e.code,msg:e.message};if(!this._onError)throw new h.OZ(i.msg);this._onError(o.nm.EXCEPTION,i)}},t.prototype.abort=function(){var e=this._ws;!e||0!==e.readyState&&1!==e.readyState||(this._requestAbort=!0,e.close()),this._ws=null,this._status=o.GM.kComplete},t.prototype._onWebSocketOpen=function(e){this._status=o.GM.kBuffering},t.prototype._onWebSocketClose=function(e){!0!==this._requestAbort?(this._status=o.GM.kComplete,this._onComplete&&this._onComplete(0,this._receivedLength-1)):this._requestAbort=!1},t.prototype._onWebSocketMessage=function(e){var t=this;if(e.data instanceof ArrayBuffer)this._dispatchArrayBuffer(e.data);else if(e.data instanceof Blob){var i=new FileReader;i.onload=function(){t._dispatchArrayBuffer(i.result)},i.readAsArrayBuffer(e.data)}else{this._status=o.GM.kError;var n={code:-1,msg:"Unsupported WebSocket message type: "+e.data.constructor.name};if(!this._onError)throw new h.OZ(n.msg);this._onError(o.nm.EXCEPTION,n)}},t.prototype._dispatchArrayBuffer=function(e){var t=e,i=this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)},t.prototype._onWebSocketError=function(e){this._status=o.GM.kError;var t={code:e.code,msg:e.message};if(!this._onError)throw new h.OZ(t.msg);this._onError(o.nm.EXCEPTION,t)},t}(o.fp),g=function(){function e(e){this._zeroStart=e||!1}return e.prototype.getConfig=function(e,t){var i={};if(0!==t.from||-1!==t.to){var n=void 0;n=-1!==t.to?"bytes="+t.from.toString()+"-"+t.to.toString():"bytes="+t.from.toString()+"-",i.Range=n}else this._zeroStart&&(i.Range="bytes=0-");return{url:e,headers:i}},e.prototype.removeURLParameters=function(e){return e},e}(),v=function(){function e(e,t){this._startName=e,this._endName=t}return e.prototype.getConfig=function(e,t){var i=e;if(0!==t.from||-1!==t.to){var n=!0;-1===i.indexOf("?")&&(i+="?",n=!1),n&&(i+="&"),i+=this._startName+"="+t.from.toString(),-1!==t.to&&(i+="&"+this._endName+"="+t.to.toString())}return{url:i,headers:{}}},e.prototype.removeURLParameters=function(e){var t=e.split("?")[0],i=void 0,n=e.indexOf("?");-1!==n&&(i=e.substring(n+1));var r="";if(null!=i&&i.length>0)for(var s=i.split("&"),o=0;o<s.length;o++){var a=s[o].split("="),h=o>0;a[0]!==this._startName&&a[0]!==this._endName&&(h&&(r+="&"),r+=s[o])}return 0===r.length?t:t+"?"+r},e}(),y=function(){function e(e,t,i){this.TAG="IOController",this._config=t,this._extraData=i,this._stashInitialSize=393216,null!=t.stashInitialSize&&t.stashInitialSize>0&&(this._stashInitialSize=t.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,!1===t.enableStashBuffer&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=e,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(e.url),this._refTotalLength=e.filesize?e.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new s,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}return e.prototype.destroy=function(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null},e.prototype.isWorking=function(){return this._loader&&this._loader.isWorking()&&!this._paused},e.prototype.isPaused=function(){return this._paused},Object.defineProperty(e.prototype,"status",{get:function(){return this._loader.status},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"extraData",{get:function(){return this._extraData},set:function(e){this._extraData=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDataArrival",{get:function(){return this._onDataArrival},set:function(e){this._onDataArrival=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onSeeked",{get:function(){return this._onSeeked},set:function(e){this._onSeeked=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{get:function(){return this._onError},set:function(e){this._onError=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onComplete",{get:function(){return this._onComplete},set:function(e){this._onComplete=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onRedirect",{get:function(){return this._onRedirect},set:function(e){this._onRedirect=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onRecoveredEarlyEof",{get:function(){return this._onRecoveredEarlyEof},set:function(e){this._onRecoveredEarlyEof=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentURL",{get:function(){return this._dataSource.url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"hasRedirect",{get:function(){return null!=this._redirectedURL||null!=this._dataSource.redirectedURL},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentRedirectedURL",{get:function(){return this._redirectedURL||this._dataSource.redirectedURL},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"currentSpeed",{get:function(){return this._loaderClass===_?this._loader.currentSpeed:this._speedSampler.lastSecondKBps},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"loaderType",{get:function(){return this._loader.type},enumerable:!1,configurable:!0}),e.prototype._selectSeekHandler=function(){var e=this._config;if("range"===e.seekType)this._seekHandler=new g(this._config.rangeLoadZeroStart);else if("param"===e.seekType){var t=e.seekParamStart||"bstart",i=e.seekParamEnd||"bend";this._seekHandler=new v(t,i)}else{if("custom"!==e.seekType)throw new h.OC("Invalid seekType in config: "+e.seekType);if("function"!=typeof e.customSeekHandler)throw new h.OC("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}},e.prototype._selectLoader=function(){if(null!=this._config.customLoader)this._loaderClass=this._config.customLoader;else if(this._isWebSocketURL)this._loaderClass=m;else if(l.isSupported())this._loaderClass=l;else if(c.isSupported())this._loaderClass=c;else{if(!_.isSupported())throw new h.OZ("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=_}},e.prototype._createLoader=function(){this._loader=new this._loaderClass(this._seekHandler,this._config),!1===this._loader.needStashBuffer&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)},e.prototype.open=function(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))},e.prototype.abort=function(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)},e.prototype.pause=function(){this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)},e.prototype.resume=function(){if(this._paused){this._paused=!1;var e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}},e.prototype.seek=function(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)},e.prototype._internalSeek=function(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;var i={from:e,to:-1};this._currentRange={from:i.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,i),this._onSeeked&&this._onSeeked()},e.prototype.updateUrl=function(e){if(!e||"string"!=typeof e||0===e.length)throw new h.OC("Url must be a non-empty string!");this._dataSource.url=e},e.prototype._expandBuffer=function(e){for(var t=this._stashSize;t+1048576<e;)t*=2;if((t+=1048576)!==this._bufferSize){var i=new ArrayBuffer(t);if(this._stashUsed>0){var n=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(i,0,t).set(n,0)}this._stashBuffer=i,this._bufferSize=t}},e.prototype._normalizeSpeed=function(e){var t=this._speedNormalizeList,i=t.length-1,n=0,r=0,s=i;if(e<t[0])return t[0];for(;r<=s;){if((n=r+Math.floor((s-r)/2))===i||e>=t[n]&&e<t[n+1])return t[n];t[n]<e?r=n+1:s=n-1}},e.prototype._adjustStashSize=function(e){var t=0;(t=this._config.isLive||e<512?e:e>=512&&e<=1024?Math.floor(1.5*e):2*e)>8192&&(t=8192);var i=1024*t+1048576;this._bufferSize<i&&this._expandBuffer(i),this._stashSize=1024*t},e.prototype._dispatchChunks=function(e,t){return this._currentRange.to=t+e.byteLength-1,this._onDataArrival(e,t)},e.prototype._onURLRedirect=function(e){this._redirectedURL=e,this._onRedirect&&this._onRedirect(e)},e.prototype._onContentLengthKnown=function(e){e&&this._fullRequestFlag&&(this._totalLength=e,this._fullRequestFlag=!1)},e.prototype._onLoaderChunkArrival=function(e,t,i){if(!this._onDataArrival)throw new h.rT("IOController: No existing consumer (onDataArrival) callback!");if(!this._paused){this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,this._onRecoveredEarlyEof&&this._onRecoveredEarlyEof()),this._speedSampler.addBytes(e.byteLength);var n=this._speedSampler.lastSecondKBps;if(0!==n){var r=this._normalizeSpeed(n);this._speedNormalized!==r&&(this._speedNormalized=r,this._adjustStashSize(r))}if(this._enableStash)if(0===this._stashUsed&&0===this._stashByteStart&&(this._stashByteStart=t),this._stashUsed+e.byteLength<=this._stashSize){(a=new Uint8Array(this._stashBuffer,0,this._stashSize)).set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{a=new Uint8Array(this._stashBuffer,0,this._bufferSize);if(this._stashUsed>0){var s=this._stashBuffer.slice(0,this._stashUsed);if((u=this._dispatchChunks(s,this._stashByteStart))<s.byteLength){if(u>0){l=new Uint8Array(s,u);a.set(l,0),this._stashUsed=l.byteLength,this._stashByteStart+=u}}else this._stashUsed=0,this._stashByteStart+=u;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{if((u=this._dispatchChunks(e,t))<e.byteLength)(o=e.byteLength-u)>this._bufferSize&&(this._expandBuffer(o),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e,u),0),this._stashUsed+=o,this._stashByteStart=t+u}}else if(0===this._stashUsed){var o;if((u=this._dispatchChunks(e,t))<e.byteLength)(o=e.byteLength-u)>this._bufferSize&&this._expandBuffer(o),(a=new Uint8Array(this._stashBuffer,0,this._bufferSize)).set(new Uint8Array(e,u),0),this._stashUsed+=o,this._stashByteStart=t+u}else{var a,u;if(this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength),(a=new Uint8Array(this._stashBuffer,0,this._bufferSize)).set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength,(u=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart))<this._stashUsed&&u>0){var l=new Uint8Array(this._stashBuffer,u);a.set(l,0)}this._stashUsed-=u,this._stashByteStart+=u}}},e.prototype._flushStashBuffer=function(e){if(this._stashUsed>0){var t=this._stashBuffer.slice(0,this._stashUsed),i=this._dispatchChunks(t,this._stashByteStart),n=t.byteLength-i;if(i<t.byteLength){if(!e){if(i>0){var s=new Uint8Array(this._stashBuffer,0,this._bufferSize),o=new Uint8Array(t,i);s.set(o,0),this._stashUsed=o.byteLength,this._stashByteStart+=i}return 0}r.Z.w(this.TAG,n+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,n}return 0},e.prototype._onLoaderComplete=function(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)},e.prototype._onLoaderError=function(e,t){switch(r.Z.e(this.TAG,"Loader error, code = "+t.code+", msg = "+t.msg),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=o.nm.UNRECOVERABLE_EARLY_EOF),e){case o.nm.EARLY_EOF:if(!this._config.isLive&&this._totalLength){var i=this._currentRange.to+1;return void(i<this._totalLength&&(r.Z.w(this.TAG,"Connection lost, trying reconnect..."),this._isEarlyEofReconnecting=!0,this._internalSeek(i,!1)))}e=o.nm.UNRECOVERABLE_EARLY_EOF;break;case o.nm.UNRECOVERABLE_EARLY_EOF:case o.nm.CONNECTING_TIMEOUT:case o.nm.HTTP_STATUS_CODE_INVALID:case o.nm.EXCEPTION:}if(!this._onError)throw new h.OZ("IOException: "+t.msg);this._onError(e,t)},e}()},939:function(e,t,i){"use strict";i.d(t,{GM:function(){return r},nm:function(){return s},fp:function(){return o}});var n=i(29),r={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4},s={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"},o=function(){function e(e){this._type=e||"undefined",this._status=r.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}return e.prototype.destroy=function(){this._status=r.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null},e.prototype.isWorking=function(){return this._status===r.kConnecting||this._status===r.kBuffering},Object.defineProperty(e.prototype,"type",{get:function(){return this._type},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"status",{get:function(){return this._status},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"needStashBuffer",{get:function(){return this._needStash},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onContentLengthKnown",{get:function(){return this._onContentLengthKnown},set:function(e){this._onContentLengthKnown=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onURLRedirect",{get:function(){return this._onURLRedirect},set:function(e){this._onURLRedirect=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onDataArrival",{get:function(){return this._onDataArrival},set:function(e){this._onDataArrival=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onError",{get:function(){return this._onError},set:function(e){this._onError=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"onComplete",{get:function(){return this._onComplete},set:function(e){this._onComplete=e},enumerable:!1,configurable:!0}),e.prototype.open=function(e,t){throw new n.do("Unimplemented abstract function!")},e.prototype.abort=function(){throw new n.do("Unimplemented abstract function!")},e}()},538:function(e,t){"use strict";var i={};!function(){var e=self.navigator.userAgent.toLowerCase(),t=/(edge)\/([\w.]+)/.exec(e)||/(opr)[\/]([\w.]+)/.exec(e)||/(chrome)[ \/]([\w.]+)/.exec(e)||/(iemobile)[\/]([\w.]+)/.exec(e)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(e)||[],n=/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(android)/.exec(e)||/(windows)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||[],r={browser:t[5]||t[3]||t[1]||"",version:t[2]||t[4]||"0",majorVersion:t[4]||t[2]||"0",platform:n[0]||""},s={};if(r.browser){s[r.browser]=!0;var o=r.majorVersion.split(".");s.version={major:parseInt(r.majorVersion,10),string:r.version},o.length>1&&(s.version.minor=parseInt(o[1],10)),o.length>2&&(s.version.build=parseInt(o[2],10))}if(r.platform&&(s[r.platform]=!0),(s.chrome||s.opr||s.safari)&&(s.webkit=!0),s.rv||s.iemobile){s.rv&&delete s.rv;var a="msie";r.browser=a,s.msie=!0}if(s.edge){delete s.edge;var h="msedge";r.browser=h,s.msedge=!0}if(s.opr){var u="opera";r.browser=u,s.opera=!0}if(s.safari&&s.android){var l="android";r.browser=l,s.android=!0}for(var d in s.name=r.browser,s.platform=r.platform,i)i.hasOwnProperty(d)&&delete i[d];Object.assign(i,s)}(),t.Z=i},29:function(e,t,i){"use strict";i.d(t,{OZ:function(){return s},rT:function(){return o},OC:function(){return a},do:function(){return h}});var n,r=(n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])})(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function i(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(i.prototype=t.prototype,new i)}),s=function(){function e(e){this._message=e}return Object.defineProperty(e.prototype,"name",{get:function(){return"RuntimeException"},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"message",{get:function(){return this._message},enumerable:!1,configurable:!0}),e.prototype.toString=function(){return this.name+": "+this.message},e}(),o=function(e){function t(t){return e.call(this,t)||this}return r(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"IllegalStateException"},enumerable:!1,configurable:!0}),t}(s),a=function(e){function t(t){return e.call(this,t)||this}return r(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"InvalidArgumentException"},enumerable:!1,configurable:!0}),t}(s),h=function(e){function t(t){return e.call(this,t)||this}return r(t,e),Object.defineProperty(t.prototype,"name",{get:function(){return"NotImplementedException"},enumerable:!1,configurable:!0}),t}(s)},300:function(e,t,i){"use strict";var n=i(716),r=i.n(n),s=function(){function e(){}return e.e=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="["+t+"] > "+i;e.ENABLE_CALLBACK&&e.emitter.emit("log","error",n),e.ENABLE_ERROR&&(console.error?console.error(n):console.warn?console.warn(n):console.log(n))},e.i=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="["+t+"] > "+i;e.ENABLE_CALLBACK&&e.emitter.emit("log","info",n),e.ENABLE_INFO&&(console.info?console.info(n):console.log(n))},e.w=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="["+t+"] > "+i;e.ENABLE_CALLBACK&&e.emitter.emit("log","warn",n),e.ENABLE_WARN&&(console.warn?console.warn(n):console.log(n))},e.d=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="["+t+"] > "+i;e.ENABLE_CALLBACK&&e.emitter.emit("log","debug",n),e.ENABLE_DEBUG&&(console.debug?console.debug(n):console.log(n))},e.v=function(t,i){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var n="["+t+"] > "+i;e.ENABLE_CALLBACK&&e.emitter.emit("log","verbose",n),e.ENABLE_VERBOSE&&console.log(n)},e}();s.GLOBAL_TAG="flv.js",s.FORCE_GLOBAL_TAG=!1,s.ENABLE_ERROR=!0,s.ENABLE_INFO=!0,s.ENABLE_WARN=!0,s.ENABLE_DEBUG=!0,s.ENABLE_VERBOSE=!0,s.ENABLE_CALLBACK=!1,s.emitter=new(r()),t.Z=s},846:function(e,t,i){"use strict";var n=i(716),r=i.n(n),s=i(300),o=function(){function e(){}return Object.defineProperty(e,"forceGlobalTag",{get:function(){return s.Z.FORCE_GLOBAL_TAG},set:function(t){s.Z.FORCE_GLOBAL_TAG=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"globalTag",{get:function(){return s.Z.GLOBAL_TAG},set:function(t){s.Z.GLOBAL_TAG=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableAll",{get:function(){return s.Z.ENABLE_VERBOSE&&s.Z.ENABLE_DEBUG&&s.Z.ENABLE_INFO&&s.Z.ENABLE_WARN&&s.Z.ENABLE_ERROR},set:function(t){s.Z.ENABLE_VERBOSE=t,s.Z.ENABLE_DEBUG=t,s.Z.ENABLE_INFO=t,s.Z.ENABLE_WARN=t,s.Z.ENABLE_ERROR=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableDebug",{get:function(){return s.Z.ENABLE_DEBUG},set:function(t){s.Z.ENABLE_DEBUG=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableVerbose",{get:function(){return s.Z.ENABLE_VERBOSE},set:function(t){s.Z.ENABLE_VERBOSE=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableInfo",{get:function(){return s.Z.ENABLE_INFO},set:function(t){s.Z.ENABLE_INFO=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableWarn",{get:function(){return s.Z.ENABLE_WARN},set:function(t){s.Z.ENABLE_WARN=t,e._notifyChange()},enumerable:!1,configurable:!0}),Object.defineProperty(e,"enableError",{get:function(){return s.Z.ENABLE_ERROR},set:function(t){s.Z.ENABLE_ERROR=t,e._notifyChange()},enumerable:!1,configurable:!0}),e.getConfig=function(){return{globalTag:s.Z.GLOBAL_TAG,forceGlobalTag:s.Z.FORCE_GLOBAL_TAG,enableVerbose:s.Z.ENABLE_VERBOSE,enableDebug:s.Z.ENABLE_DEBUG,enableInfo:s.Z.ENABLE_INFO,enableWarn:s.Z.ENABLE_WARN,enableError:s.Z.ENABLE_ERROR,enableCallback:s.Z.ENABLE_CALLBACK}},e.applyConfig=function(e){s.Z.GLOBAL_TAG=e.globalTag,s.Z.FORCE_GLOBAL_TAG=e.forceGlobalTag,s.Z.ENABLE_VERBOSE=e.enableVerbose,s.Z.ENABLE_DEBUG=e.enableDebug,s.Z.ENABLE_INFO=e.enableInfo,s.Z.ENABLE_WARN=e.enableWarn,s.Z.ENABLE_ERROR=e.enableError,s.Z.ENABLE_CALLBACK=e.enableCallback},e._notifyChange=function(){var t=e.emitter;if(t.listenerCount("change")>0){var i=e.getConfig();t.emit("change",i)}},e.registerListener=function(t){e.emitter.addListener("change",t)},e.removeListener=function(t){e.emitter.removeListener("change",t)},e.addLogListener=function(t){s.Z.emitter.addListener("log",t),s.Z.emitter.listenerCount("log")>0&&(s.Z.ENABLE_CALLBACK=!0,e._notifyChange())},e.removeLogListener=function(t){s.Z.emitter.removeListener("log",t),0===s.Z.emitter.listenerCount("log")&&(s.Z.ENABLE_CALLBACK=!1,e._notifyChange())},e}();o.emitter=new(r()),t.Z=o},219:function(e,t,i){"use strict";var n=function(){function e(){}return e.install=function(){Object.setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Object.assign=Object.assign||function(e){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),i=1;i<arguments.length;i++){var n=arguments[i];if(null!=n)for(var r in n)n.hasOwnProperty(r)&&(t[r]=n[r])}return t},"function"!=typeof self.Promise&&i(264).polyfill()},e}();n.install(),t.Z=n}},t={};function i(n){var r=t[n];if(void 0!==r)return r.exports;var s=t[n]={exports:{}};return e[n].call(s.exports,s,s.exports,i),s.exports}return i.m=e,i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,{a:t}),t},i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i(324)}()}));
//# sourceMappingURL=flv.min.js.map
public/traceablityInfo.html
@@ -1,962 +1,679 @@
<!-- 手机扫描页 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="divport" content="width=device-width, initial-scale=1.0">
    <style>
        .top-log {
            position: relative;
        }
<<<<<<< HEAD
  <meta charset="UTF-8">
  <meta name="divport" content="width=device-width, initial-scale=1.0">
  <style>
    .top-log {
      position: relative;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .top-log .btn-grounp {
            position: absolute;
            left: 0;
            bottom: 0;
            width: 100%;
            height: 80px;
            display: flex;
            align-items: center;
            justify-content: space-around;
            background: transparent;
        }
<<<<<<< HEAD
    .top-log .btn-grounp {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      height: 80px;
      display: flex;
      align-items: center;
      justify-content: space-around;
      background: transparent;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    .main-content {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .logo {
            position: relative;
            margin-top: 56px;
            width: 300px;
            height: 300px;
            border-radius: 50%;
            overflow: hidden;
        }
<<<<<<< HEAD
    .main-content .logo {
      position: relative;
      margin-top: 56px;
      width: 300px;
      height: 300px;
      border-radius: 50%;
      overflow: hidden;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .logo .btn {
            position: absolute;
            bottom: 0;
            width: 100%;
            height: 64px;
            line-height: 64px;
            text-align: center;
            background: rgba(0, 0, 0, .4);
            font-size: 24px;
            color: #fff;
        }
<<<<<<< HEAD
    .main-content .logo .btn {
      position: absolute;
      bottom: 0;
      width: 100%;
      height: 64px;
      line-height: 64px;
      text-align: center;
      background: rgba(0, 0, 0, .4);
      font-size: 24px;
      color: #fff;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .title {
            margin-top: 30px;
            font-size: 48px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .main-content .title {
      margin-top: 30px;
      font-size: 48px;
      font-weight: bold;
      color: #333333;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .type {
            display: flex;
            margin-top: 10px;
            width: 180px;
            height: 36px;
            font-size: 24px;
            background: #7BDA8F;
            color: #fff;
            border-radius: 8px;
            overflow: hidden;
        }
<<<<<<< HEAD
    .main-content .type {
      display: flex;
      margin-top: 10px;
      width: 180px;
      height: 36px;
      font-size: 24px;
      background: #7BDA8F;
      color: #fff;
      border-radius: 8px;
      overflow: hidden;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .type .sub {
            flex: 1;
            display: flex;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    .main-content .type .sub {
      flex: 1;
      display: flex;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .type .icon {
            width: 36px;
            display: flex;
            align-items: center;
            justify-content: center;
            background: #6AC077;
        }
<<<<<<< HEAD
    .main-content .type .icon {
      width: 36px;
      display: flex;
      align-items: center;
      justify-content: center;
      background: #6AC077;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .date {
            display: flex;
            align-items: center;
            justify-content: center;
            margin-top: 40px;
            width: calc(100% - 60px);
            height: 110px;
            background: #E4F0F1;
            border-radius: 34px;
            font-size: 34px;
            color: #5ABF78;
        }
<<<<<<< HEAD
    .main-content .date {
      display: flex;
      align-items: center;
      justify-content: center;
      margin-top: 40px;
      width: calc(100% - 60px);
      height: 110px;
      background: #E4F0F1;
      border-radius: 34px;
      font-size: 34px;
      color: #5ABF78;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box {
            margin-top: 60px;
            padding: 0 30px;
        }
<<<<<<< HEAD
    .model-box {
      margin-top: 60px;
      padding: 0 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title {
            display: flex;
            align-items: center;
            height: 50px;
        }
<<<<<<< HEAD
    .model-box .model-title {
      display: flex;
      align-items: center;
      height: 50px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .l {
            width: 5px;
            height: 36px;
            background: #5ABF78;
        }
<<<<<<< HEAD
    .model-box .model-title .l {
      width: 5px;
      height: 36px;
      background: #5ABF78;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .title {
            margin-left: 20px;
            font-size: 36px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box .model-title .title {
      margin-left: 20px;
      font-size: 36px;
      font-weight: bold;
      color: #333333;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .border {
            flex: 1;
            margin: 13px;
            border-top: 1px dashed #D4DBE8;
            border-bottom: 1px dashed #D4DBE8;
        }
<<<<<<< HEAD
    .model-box .model-title .border {
      flex: 1;
      margin: 13px;
      border-top: 1px dashed #D4DBE8;
      border-bottom: 1px dashed #D4DBE8;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .status {
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
            color: #5ABF78;
        }
<<<<<<< HEAD
    .model-box .model-title .status {
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 24px;
      color: #5ABF78;
    }
        .model-box .model-title .statu.no {
            color: #EC9144;
        }
    .model-box .model-title .statu.no {
      color: #EC9144;
    }
=======
        .model-box .model-title .statu.no {
            color: #EC9144;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .status view {
            display: flex;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    .model-box .model-title .status view {
      display: flex;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content {
            display: flex;
            flex-direction: column;
            margin-top: 30px;
            background: #fff;
            border-radius: 30px;
        }
<<<<<<< HEAD
    .model-box.qw .model-content {
      display: flex;
      flex-direction: column;
      margin-top: 30px;
      background: #fff;
      border-radius: 30px;
    }
        .model-box.qw .model-content .box:first-child {
            border: 2px solid #EEEEEE;
        }
    .model-box.qw .model-content .box:first-child {
      border-bottom: 2px solid #EEEEEE;
    }
=======
        .model-box.qw .model-content .box:first-child {
            border: 2px solid #EEEEEE;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box {
            flex: 1;
            display: flex;
            padding: 30px;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box {
      flex: 1;
      display: flex;
      padding: 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r {
            margin-left: 26px;
            flex: 1;
            font-size: 24px;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r {
      margin-left: 26px;
      flex: 1;
      font-size: 24px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r .title {
            font-size: 32px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r .title {
      font-size: 32px;
      font-weight: bold;
      color: #333333;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r .line-box {
            margin-top: 16px;
            display: flex;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r .line-box {
      margin-top: 16px;
      display: flex;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r .line-box .sub {
            width: 120px;
            color: #333333;
            line-height: 36px;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r .line-box .sub {
      width: 120px;
      color: #333333;
      line-height: 36px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r .line-box .content {
            flex: 1;
            color: #666666;
            line-height: 36px;
        }
        /* 容器 */
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r .line-box .content {
      flex: 1;
      color: #666666;
      line-height: 36px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content {
            margin-top: 30px;
            background: #fff;
            border-radius: 30px;
        }
        /* 头部 */
<<<<<<< HEAD
    /* 容器 */
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content .content-header {
            display: flex;
            align-items: center;
            justify-content: center;
            height: 90px;
            font-size: 30px;
            color: #5ABF78;
        }
<<<<<<< HEAD
    .model-box.cd .model-content {
      margin-top: 30px;
      background: #fff;
      border-radius: 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-header {
            color: #A255B5;
            border-bottom: 2px solid #ECECEC;
        }
        /* 中间 */
<<<<<<< HEAD
    /* 头部 */
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.dk .content-body {
            height: 450px;
            background: greenyellow;
        }
<<<<<<< HEAD
    .model-box.cd .model-content .content-header {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 90px;
      font-size: 30px;
      color: #5ABF78;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jksp .content-body {
            height: 385px;
            background: #A255B5;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-header {
      color: #A255B5;
      border-bottom: 2px solid #ECECEC;
    }
        .model-box.cd .model-content.jk .content-body {
            border-bottom: 1px solid transparent;
        }
    /* 中间 */
=======
        .model-box.cd .model-content.jk .content-body {
            border-bottom: 1px solid transparent;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box {
            margin: 26px 22px;
            border-radius: 28px;
            border: 2px solid #E3E3E3;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.dk .content-body {
      height: 450px;
      background: greenyellow;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-title {
            padding: 0 22px;
            margin-top: 10px;
            height: 100px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            font-size: 28px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jksp .content-body {
      height: 385px;
      /* background: #A255B5; */
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-date {
            display: flex;
            align-items: center;
            justify-content: center;
            margin: 13px 0;
            height: 2px;
            background: #ECECEC;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body {
      border-bottom: 1px solid transparent;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-date .site-date-text {
            padding: 0 18px;
            height: 36px;
            background: #F4F4F4;
            border-radius: 18px;
            font-size: 24px;
            color: #929292;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box {
      margin: 26px 22px;
      border-radius: 28px;
      border: 2px solid #E3E3E3;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content {
            padding: 24px 22px;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-between;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box .site-title {
      padding: 0 22px;
      /* margin-top: 10px; */
      height: 100px;
      line-height: 100px;
      /* display: flex;
      align-items: center;
      justify-content: space-between; */
      font-size: 28px;
      font-weight: bold;
      color: #333333;
      width: 100%;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-top: 16px;
            padding: 16px 12px;
            width: calc((100% - 18px) / 2);
            background: #E9F1FC;
            border-radius: 8px;
            box-sizing: border-box;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box .site-date {
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 13px 0;
      height: 2px;
      background: #ECECEC;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view:nth-child(1),
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view:nth-child(2) {
            margin-top: 0;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box .site-date .site-date-text {
      padding: 0 18px;
      /* height: 36px; */
      background: #F4F4F4;
      border-radius: 18px;
      font-size: 24px;
      color: #929292;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view .type {
            font-size: 28px;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box .site-content {
      padding: 24px 22px;
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-top: 16px;
      padding: 16px 12px;
      width: calc((100% - 18px) / 2);
      background: #E9F1FC;
      border-radius: 8px;
      box-sizing: border-box;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div:nth-child(1),
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div:nth-child(2) {
      margin-top: 0;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div .type {
      font-size: 28px;
      color: #333333;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div .unit {
      margin-top: 4px;
      font-size: 24px;
      color: #84898F;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div .r {
      font-size: 38px;
      color: #5ABF78;
    }
    /* 底部 */
    .model-box.cd .model-content .content-footer {
      display: flex;
      align-items: center;
      height: 120px;
      font-size: 24px;
    }
    .model-box.cd .model-content.dk .content-footer {
      padding: 0 26px;
    }
    .model-box.cd .model-content.dk .content-footer .l {
      width: 480px;
      color: #666666;
    }
    .model-box.cd .model-content.dk .content-footer .r {
      flex: 1;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #5ABF78;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view .unit {
            margin-top: 4px;
            font-size: 24px;
            color: #84898F;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jksp .content-footer {
      padding: 0 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view .r {
            font-size: 38px;
            color: #5ABF78;
        }
        /* 底部 */
<<<<<<< HEAD
    .model-box.cd .model-content.jksp .content-footer .equi-btn {
      display: flex;
      align-items: center;
      justify-content: center;
      margin-left: 12px;
      width: 196px;
      height: 60px;
      background: #F2F5F9;
      border-radius: 9px;
      border: 1px solid #DCDCDC;
      font-size: 24px;
      color: #697580;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content .content-footer {
            display: flex;
            align-items: center;
            height: 120px;
            font-size: 24px;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jksp .content-footer .equi-btn:first-child {
      margin-left: 0;
    }
        .model-box.cd .model-content.dk .content-footer {
            padding: 0 26px;
        }
    .model-box.cd .model-content.jksp .content-footer .equi-btn.on {
      background: linear-gradient(90deg, #5ABB82 0%, #7BDA8F 100%);
      border: none;
      color: #fff;
    }
=======
        .model-box.cd .model-content.dk .content-footer {
            padding: 0 26px;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.dk .content-footer .l {
            width: 480px;
            color: #666666;
        }
<<<<<<< HEAD
    /* 种植环节 */
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.dk .content-footer .r {
            flex: 1;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #5ABF78;
        }
<<<<<<< HEAD
    .model-box.zz .model-content {
      margin-top: 30px;
    }
        .model-box.cd .model-content.jksp .content-footer {
            padding: 0 30px;
        }
    .model-box.zz .model-content .msg {
      display: flex;
      align-items: center;
      height: 126px;
    }
=======
        .model-box.cd .model-content.jksp .content-footer {
            padding: 0 30px;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jksp .content-footer .equi-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            margin-left: 12px;
            width: 196px;
            height: 60px;
            background: #F2F5F9;
            border-radius: 9px;
            border: 1px solid #DCDCDC;
            font-size: 24px;
            color: #697580;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .msg .r {
      margin-left: 30px;
      padding: 10px 26px;
      position: relative;
      flex: 1;
      background: #fff;
      font-size: 24px;
      color: #999999;
      border-radius: 16px;
    }
        .model-box.cd .model-content.jksp .content-footer .equi-btn:first-child {
            margin-left: 0;
        }
    .model-box.zz .model-content .msg .r text {
      font-weight: bold;
      color: #EC9144;
    }
=======
        .model-box.cd .model-content.jksp .content-footer .equi-btn:first-child {
            margin-left: 0;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jksp .content-footer .equi-btn.on {
            background: linear-gradient(90deg, #5ABB82 0%, #7BDA8F 100%);
            border: none;
            color: #fff;
        }
        /* 种植环节 */
<<<<<<< HEAD
    .model-box.zz .model-content .msg .r .r-b-msg {
      margin-top: 10px;
      color: #333333;
    }
        .model-box.zz .model-content {
            margin-top: 30px;
        }
    .model-box.zz .model-content .msg .r .point-to {
      position: absolute;
      top: 0;
      left: -18px;
      right: auto;
      bottom: 0;
      margin: auto;
      width: 0;
      height: 0;
      border-top: 14px solid transparent;
      border-right: 30px solid #fff;
      border-bottom: 14px solid transparent;
      z-index: -1;
    }
=======
        .model-box.zz .model-content {
            margin-top: 30px;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg {
            display: flex;
            align-items: center;
            height: 126px;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box {
      display: flex;
      align-items: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg .r {
            margin-left: 30px;
            padding: 10px 26px;
            position: relative;
            flex: 1;
            background: #fff;
            font-size: 24px;
            color: #999999;
            border-radius: 16px;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l {
      margin-left: 40px;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg .r text {
            font-weight: bold;
            color: #EC9144;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l .point {
      width: 20px;
      height: 20px;
      background: #5ABF78;
      border-radius: 50%;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg .r .r-b-msg {
            margin-top: 10px;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l .line {
      width: 2px;
      height: 150px;
      background: #DEE3E7;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg .r .point-to {
            position: absolute;
            top: 0;
            left: -18px;
            right: auto;
            bottom: 0;
            margin: auto;
            width: 0;
            height: 0;
            border-top: 14px solid transparent;
            border-right: 30px solid #fff;
            border-bottom: 14px solid transparent;
            z-index: -1;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l .line.one {
      width: 2px;
      height: 100px;
      background: #DEE3E7;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box {
            display: flex;
            align-items: center;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l .line.two {
      width: 2px;
      height: 100px;
      background: #DEE3E7;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l {
            margin-left: 40px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r {
      margin-left: 64px;
      flex: 1;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l .point {
            width: 20px;
            height: 20px;
            background: #5ABF78;
            border-radius: 50%;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item {
      margin-top: 30px;
      padding: 32px 30px 42px;
      background: #FFFFFF;
      border-radius: 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l .line {
            width: 2px;
            height: 150px;
            background: #DEE3E7;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item .type {
      font-size: 32px;
      font-weight: bold;
      color: #333333;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l .line.one {
            width: 2px;
            height: 100px;
            background: #DEE3E7;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item .date-pel {
      margin-top: 10px;
      display: flex;
      justify-content: space-between;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l .line.two {
            width: 2px;
            height: 100px;
            background: #DEE3E7;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item .date-pel .date {
      padding: 2px 20px;
      font-size: 24px;
      color: #fff;
      background: linear-gradient(89deg, #60BA84 0%, #73DB90 100%);
      border-radius: 10px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r {
            margin-left: 64px;
            flex: 1;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item .date-pel .pel {
      font-size: 28px;
      color: #666666;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item {
            margin-top: 30px;
            padding: 32px 30px 42px;
            background: #FFFFFF;
            border-radius: 30px;
        }
<<<<<<< HEAD
    /* 生产企业 */
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item .type {
            font-size: 32px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.sc .model-content {
      margin-top: 30px;
      /* padding-bottom: 30px; */
      background: #fff;
      border-radius: 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item .date-pel {
            margin-top: 10px;
            display: flex;
            justify-content: space-between;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-header {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 124px;
      font-size: 36px;
      font-weight: bold;
      color: #000000;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item .date-pel .date {
            padding: 2px 20px;
            font-size: 24px;
            color: #fff;
            background: linear-gradient(89deg, #60BA84 0%, #73DB90 100%);
            border-radius: 10px;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-body {
      height: 390px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item .date-pel .pel {
            font-size: 28px;
            color: #666666;
        }
        /* 生产企业 */
<<<<<<< HEAD
    .model-box.sc .model-content .content-body .swiper {
      height: 100%;
      width: 100%;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content {
            margin-top: 30px;
            /* padding-bottom: 30px; */
            background: #fff;
            border-radius: 30px;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-body .swiper-image {
      height: 100%;
      width: 100%;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-header {
            display: flex;
            align-items: center;
            justify-content: center;
            height: 124px;
            font-size: 36px;
            font-weight: bold;
            color: #000000;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-body .slide-image {
      height: 100%;
      width: 100%;
    }
        .model-box.sc .model-content .content-body {
            height: 390px;
        }
    .model-box.sc .model-content .text-intro {
      margin: 0 25px;
      padding: 20px 0 34px;
      line-height: 42px;
      font-size: 24px;
      color: #818592;
      border-bottom: 2px solid #EAEEF4;
    }
=======
        .model-box.sc .model-content .content-body {
            height: 390px;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-body .swiper {
            height: 100%;
            width: 100%;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-footer {
      margin-top: 24px;
      display: flex;
      align-items: flex-start;
      justify-content: space-around;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-body .swiper-image {
            height: 100%;
            width: 100%;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-footer>view {
      display: flex;
      flex-direction: column;
      align-items: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-body .slide-image {
            height: 100%;
            width: 100%;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-footer>view .type {
      margin-top: 6px;
      font-size: 24px;
      color: #697580;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .text-intro {
            margin: 0 25px;
            padding: 20px 0 34px;
            line-height: 42px;
            font-size: 24px;
            color: #818592;
            border-bottom: 2px solid #EAEEF4;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-footer>view .msg {
      margin-top: 2px;
      padding: 2px 6px;
      background: #E4EBEE;
      border-radius: 13px 13px 13px 13px;
      font-size: 20px;
      color: #697580;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-footer {
            margin-top: 24px;
            display: flex;
            align-items: flex-start;
            justify-content: space-around;
        }
<<<<<<< HEAD
    .btn-grounp {
      margin-top: 84px;
      display: flex;
      height: 148px;
      background: #FFFFFF;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-footer>view {
            display: flex;
            flex-direction: column;
            align-items: center;
        }
<<<<<<< HEAD
    .btn-grounp .l {
      margin-right: 76px;
      width: 194px;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-footer>view .type {
            margin-top: 6px;
            font-size: 24px;
            color: #697580;
        }
<<<<<<< HEAD
    .btn-grounp .l .plan {
      font-size: 34px;
      font-weight: bold;
      color: #D55B26;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-footer>view .msg {
            margin-top: 2px;
            padding: 2px 6px;
            background: #E4EBEE;
            border-radius: 13px 13px 13px 13px;
            font-size: 20px;
            color: #697580;
        }
<<<<<<< HEAD
    .btn-grounp .l .text {
      margin-top: 2px;
      font-size: 20px;
      color: #A5AEB5;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp {
            margin-top: 84px;
            display: flex;
            height: 148px;
            background: #FFFFFF;
        }
<<<<<<< HEAD
    .btn-grounp .r {
      flex: 1;
      display: flex;
      align-items: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp .l {
            margin-right: 76px;
            width: 194px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    #video-body {
      display: inline-block;
      height: 100%;
      position: relative;
      overflow: hidden;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp .l .plan {
            font-size: 34px;
            font-weight: bold;
            color: #D55B26;
        }
<<<<<<< HEAD
    #video-footer {
      width: 100%;
      height: 60px;
      background: rgba(0, 0, 0, 0.5);
      margin-top: -63px;
      position: relative;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp .l .text {
            margin-top: 2px;
            font-size: 20px;
            color: #A5AEB5;
        }
<<<<<<< HEAD
    #oper-btn {
      position: absolute;
      top: 10px;
      left: 20px;
      cursor: pointer;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp .r {
            flex: 1;
            display: flex;
            align-items: center;
        }
    </style>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    #full-btn {
      position: absolute;
      top: 12px;
      right: 20px;
      cursor: pointer;
    }
  </style>
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
  <script src="js/flv.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
    <div class="page-main-container" style="background: #F1F9F8;width:100%;height: 100%;">
        <!-- <scroll-div scroll-top="{{scrollTop}}" refresher-enabled="{{true}}" bindrefresherrefresh="refresh" refresher-triggered="{{triggered}}" style="height: {{clientHeight}}" scroll-y bindscrolltolower="upcroll"> -->
        <!-- </scroll-div> -->
    </div>
    <script>
        var getData = function(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            var r = window.location.search.substr(1).match(reg);
            if (r != null) return decodeURI(r[2]);
            return null;
        };
        var code = getData("code");
        // var code = "22070000001";
        axios.get('https://dev.jxpskj.com:8023/api/traceability/getTraceabilityDetailInfos?code=' + code).then(function(res) {
            // axios.get('http://192.168.0.114:89/traceability/getTraceabilityDetailInfo?code=' + code).then(function(res) {
            var data = res.data.data;
            var farm = data.farm;
            var land = data.landVO;
            var num = data.num;
            var paperList = data.paperVOList;
            var recordVOList = data.recordVOList;
            var recovery = data.recoveryVO;
            var str0 = `<div class="top-log">
  <div class="page-main-container" style="background: #F1F9F8;width:100%;height: 100%;">
    <!-- <scroll-div scroll-top="{{scrollTop}}" refresher-enabled="{{true}}" bindrefresherrefresh="refresh" refresher-triggered="{{triggered}}" style="height: {{clientHeight}}" scroll-y bindscrolltolower="upcroll"> -->
    <!-- </scroll-div> -->
  </div>
  <script>
    var getData = function (name) {
      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
      var r = window.location.search.substr(1).match(reg);
      if (r != null) return decodeURI(r[2]);
      return null;
    };
    var code = getData("code");
    // var code = "22070000001";
    axios.get('https://dev.jxpskj.com:8023/api/traceability/getTraceabilityDetailInfos?code=' + code).then(function (res) {
      // axios.get('http://192.168.0.114:89/traceability/getTraceabilityDetailInfo?code=' + code).then(function(res) {
      var data = res.data.data;
      var farm = data.farm;
      var land = data.landVO;
      var num = data.num;
      var paperList = data.paperVOList;
      var recordVOList = data.recordVOList;
      var recovery = data.recoveryVO;
      //请求检测数据
      axios.get('http://dev.jxpskj.com:8030/pyh-station/stationAndVideo/queryStationAndVideoInfoData?type=All&landId=' + recovery.landId).then(function (res) {
        var staList = res.data.data.staList;
        var vidList = res.data.data.vidList;
        window.detectionList = staList;
        window.videoList = vidList;
        var str0 = `<div class="top-log">
            <img width="100%" height="405px" src="http://182.106.212.58:8014/assets/images/sym/2.png" />
            <div class="btn-grounp">
                <img bindtap="scrollTo" data-class=".qw" width="176px" height="80px" src="http://182.106.212.58:8014/assets/images/sy/1418.png" />
@@ -965,30 +682,30 @@
                <img bindtap="scrollTo" data-class=".sc" width="176px" height="80px" src="http://182.106.212.58:8014/assets/images/sy/1414.png" />
            </div>
        </div>
        <div class="main-content">
            <div class="logo">
                <img width="100%" height="100%" src="${recovery.url}" />
                <!-- <div class="btn">更换图片</div> -->
            </div>
            <div class="title">${recovery.strainName}</div>
            <div class="type">
                <div class="sub">${recovery.lx}</div>
                <!-- <div class="icon">
                <van-icon name="play" />
              </div> -->
            </div>
            <div class="date">
                采收时间:${recovery.time.replaceAll("-",".")}
                采收时间:${recovery.time.replaceAll("-", ".")}
            </div>
        </div>
        <div class="qw model-box">
        <div class="model-title">
            <div class="l"></div>
            <div class="title">权威检测</div>
@@ -1000,13 +717,13 @@
                可追溯
            </div>
        </div>
        <div class="model-content">`
            var str1 = '';
            if (paperList.length > 0) {
                paperList.forEach(item => {
                    var url = item.pictures.split(",")[0];
                    str1 = str1 + `<div class="box">
        var str1 = '';
        if (paperList.length > 0) {
          paperList.forEach(item => {
            var url = item.pictures.split(",")[0];
            str1 = str1 + `<div class="box">
                        <div class="l">
                            <img width="204px" height="204px" src="${url}" />
                        </div>
@@ -1024,25 +741,20 @@
                            </div>
                            <div class="date line-box">
                                <div class="sub">颁发日期:</div>
                                <div class="content">${item.time.replaceAll("-",".")}</div>
                                <div class="content">${item.time.replaceAll("-", ".")}</div>
                            </div>
                        </div>
                    </div>`
                });
            } else {
                str1 = str1 + `<div class="box"></div>`
            }
<<<<<<< HEAD
          });
        } else {
          str1 = str1 + `<div class="box"></div>`
        }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
            var str2 = `
        var str2 = `
            </div>
        </div>
        <div class="cd model-box">
            <div class="model-title">
                <div class="l"></div>
@@ -1055,7 +767,7 @@
                    可追溯
                </div>
            </div>
            <div class="dk model-content">
                <div class="content-header">
                    <van-icon style="margin-right: 12px;" name="http://182.106.212.58:8014/assets/images/sy/1267.png" /> 种植地块
@@ -1073,180 +785,142 @@
                </div> -->
                </div>
            </div>
            <div class="jksp model-content">
                <div class="content-header">
                    <van-icon style="margin-right: 12px;" name="http://182.106.212.58:8014/assets/images/sy/1272.png" /> 良心生产,不怕监督,24小时视频监控
                </div>
                <div class="content-body"></div>
                <div class="content-footer">
                    <div class="equi-btn on">
                        3号摄像头
                </div>`
        //监控
        var strvedio = '';
        // vidList.push({
        //   name:"1号摄像头"
        // })
        // vidList.push({
        //   name:"2号摄像头"
        // })
        if (vidList.length > 0) {
          //读取第一个视频 url
          strvedio = strvedio + `<div class="content-body">
                  <div id="video-body">
                    <video controls id="video-element" muted>你的浏览器太老了,不支持HTML5视频。</video>
                    <div id="video-footer" class="css-closeTrans">
                      <img id="oper-btn" src="img/i-play.png" width="40px" />
                      <div id="video-sound">
                      </div>
                      <img id="full-btn" src="img/i-fs.png" width="35px" />
                    </div>
                    <div class="equi-btn">
                        3号摄像头
                    </div>
                </div>
            </div>
                  </div>
                </div><div class="content-footer">`
          //遍历监控点
          vidList.forEach((item,index) => {
            strvedio = strvedio + `<div class="equi-btn on">
                        ${item.name}
                    </div>`
            if(index>=1){
              // equibtn.style.color = "#fff";
            }
          })
        } else {
          strvedio = strvedio + `<div class="content-body">
                </div><div class="content-footer">`
        }
        var str10 =
          `</div>
              </div>
            <div class="jk model-content">
                <div class="content-header">
                    物联网监控保证产地养分充足,且不被污染
                </div>
                <div class="content-body">
                    <div class="site-box">
                        <div class="site-title">
                    <div class="site-box">`
        var strdetection = '';
        if (staList.length > 0) {
          var sta = staList[0];
          var timeStr = '';
          var time = sta.weatherTime;
          //当前时间
          var date = new Date();
          //计算时间差
          var crud = date.getTime() - new Date(time).getTime();
          //计算出相差天数
          var days = Math.floor(crud / (24 * 3600 * 1000))
          timeStr = days + "天";
          if (days == 0) {
            //计算出小时数
            var leave1 = crud % (24 * 3600 * 1000)    //计算天数后剩余的毫秒数
            var hours = Math.floor(leave1 / (3600 * 1000))
            timeStr = hours + "小时";
            if (hours == 0) {
              //计算相差分钟数
              var leave2 = leave1 % (3600 * 1000)        //计算小时数后剩余的毫秒数
              var minutes = Math.floor(leave2 / (60 * 1000))
              timeStr = minutes + "分钟";
              if (minutes == 0) {
                //计算相差秒数
                var leave3 = leave2 % (60 * 1000)      //计算分钟数后剩余的毫秒数
                var seconds = Math.round(leave3 / 1000)
                timeStr = seconds + "秒";
              }
            }
          }
          //读取第一个检测设备
          strdetection = strdetection + `<div class="site-title">
                            <div class="l">
                                <van-icon name="like" /> 谷米田庄二号气象站
                            </div>
                            <div class="r">
                                <van-icon name="add-o" />
                              <select id="select" style="font-weight: bold;color: #333333;border: none;font-size: 28px;width:96%">`
          staList.forEach(item=>{
            strdetection = strdetection + `<option>${item.name}</option>`
          })
          strdetection = strdetection + `</select>
                            </div>
                        </div>
                        <div class="site-date">
                            <div class="site-date-text">6分钟前更新</div>
                            <div class="site-date-text" id="sitedatetext">
                              ${timeStr}前更新</div>
                        </div>
                        <div class="site-content">
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                        </div>
                        <div class="site-content" id="detectionlist">`
          //遍历检测信息
          var weatherList = staList[0].weatherList;
          if (weatherList.length > 0) {
            weatherList.forEach(item => {
              if (item.name != '监测时间') {
                strdetection = strdetection + `<div class="list">
                                  <div class="l">
                                      <div class="type">${item.name}</div>
                                      <div class="unit">
                                          单位:${item.unit}
                                      </div>
                                  </div>
                                  <div class="r">
                                    ${item.value}
                                  </div>
                              </div>`
              }
            })
          }
        } else {
          strdetection = strdetection + `
                        <div class="site-content">`
        }
        var str11 = `</div>
                    </div>
                </div>
            </div>
        </div>
        <div class="zz model-box">
            <div class="model-title">
                <div class="l"></div>
@@ -1259,9 +933,9 @@
                </div> -->
                </div>
            </div>
            <div class="model-content">
                <div class="msg">
                    <div class="l">
                        <img width="126px" height="126px" src="http://182.106.212.58:8014/assets/images/sy/zz-log.png" />
@@ -1269,30 +943,29 @@
                    <div class="r">
                        <div>
                            我是基地管理员:
                            <!-- <text>郝爱国</text> -->
                        </div>
                        <div class="r-b-msg">
                            以下农事操作,是在我的监督下完成
                        </div>
                        <div class="point-to"></div>
                    </div>
                </div>`
            var str3 = '';
            recordVOList.forEach((item, index) => {
                str3 = str3 + `<div class="record-box">
        var str3 = '';
        recordVOList.forEach((item, index) => {
          str3 = str3 + `<div class="record-box">
                    <div class="l">
                        <div class="one  line" style="${ index == 0 ? 'background: transparent !important;' : '' }">
                        <div class="one  line" style="${index == 0 ? 'background: transparent !important;' : ''}">
                        </div>
                        <div class="point">
                        </div>
                        <div class="two line" style="${ index == recordVOList.length - 1 ? 'background: transparent !important;' : '' }">
                        <div class="two line" style="${index == recordVOList.length - 1 ? 'background: transparent !important;' : ''}">
                        </div>
                    </div>
                    <div class="r">
                        <div class="record-item">
@@ -1302,14 +975,13 @@
                                <div class="pel">操作人:${item.realName}</div>
                            </div>
                        </div>
                    </div>
                </div>`
            });
            var str4 = `</div>
        });
        var str4 = `</div>
        </div>
        <div class="sc model-box">
            <div class="model-title">
                <div class="l"></div>
@@ -1322,7 +994,7 @@
                </div> -->
                </div>
            </div>
            <div class="model-content">
                <div class="content-header">
                    ${farm.farmName}
@@ -1330,17 +1002,17 @@
                <div class="content-body">
                    <swiper class="swiper" indicator-dots="true" autoplay="true" interval="3000" duration="1000">
                        <block class="swiper-image">`
            var str5 = '';
            var urls = farm.picture.split(",");
            if (urls.length > 0) {
                urls.forEach(item => {
                    str5 = str5 + `<swiper-item>
        var str5 = '';
        var urls = farm.picture.split(",");
        if (urls.length > 0) {
          urls.forEach(item => {
            str5 = str5 + `<swiper-item>
                                <image src="${item}" class="slide-image" />
                            </swiper-item>`
                })
            }
            var str6 = `</block></swiper>
          })
        }
        var str6 = `</block></swiper>
                </div>
                <div class="text-intro">
                    ${farm.introduce}
@@ -1349,33 +1021,214 @@
                </div>
            </div>
        </div>`
            // <div class="btn-grounp">
            //     <div class="l">
            //         <div class="plan">
            //             ${num} %
            //         </div>
            //         <div class="text">
            //             溯源完整度
            //         </div>
            //     </div>
            //     <div class="r">
            //         <van-button bind:click="editTracability" round custom-style="margin-right: 40px; width: 200px; height: 72px; border: 2px solid #5ABF78; background: #fff; color: #5ABF78; font-size: 30px;">编辑溯源</van-button>
            //         <van-button bind:click="submit" round custom-style="width: 200px; height: 72px; border: none; background: #5ABF78; color: #fff; font-size: 30px;">分享</van-button>
            //     </div>
            // </div>
            var dom = $('.page-main-container');
            dom.empty();
            dom.append(str0 + str1 + str2 + str3 + str4 + str5 + str6);
        });
    </script>
        // <div class="btn-grounp">
        //     <div class="l">
        //         <div class="plan">
        //             ${num} %
        //         </div>
        //         <div class="text">
        //             溯源完整度
        //         </div>
        //     </div>
        //     <div class="r">
        //         <van-button bind:click="editTracability" round custom-style="margin-right: 40px; width: 200px; height: 72px; border: 2px solid #5ABF78; background: #fff; color: #5ABF78; font-size: 30px;">编辑溯源</van-button>
        //         <van-button bind:click="submit" round custom-style="width: 200px; height: 72px; border: none; background: #5ABF78; color: #fff; font-size: 30px;">分享</van-button>
        //     </div>
        // </div>
        var dom = $('.page-main-container');
        dom.empty();
        dom.append(str0 + str1 + str2 + strvedio + str10 + strdetection + str11 + str3 + str4 + str5 + str6);
        var playImg = "img/i-play.png",
          pauseImg = "img/i-pause.png",
          fsImg = "img/i-fs.png",
          exitFsImg = "img/i-exitfs.png",
          soundOpenImg = "img/sound-open.png",
          soundCloseImg = "img/sound-close.png";
        var videoBody = document.getElementById('video-body'),
          videoElement = document.getElementById('video-element'),
          videoBegin = document.getElementById('video-begin'),
          videoEnd = document.getElementById('video-end'),
          videoFooter = document.getElementById('video-footer'),
          operBtn = document.getElementById('oper-btn'),
          fullBtn = document.getElementById('full-btn');
        var slide = false, soundWidth = 0;
        //初始化视频配置
        if (flvjs.isSupported()) {
          var flvPlayer = flvjs.createPlayer({
            type: 'flv',
            url: window.videoList[0].wssFlv,
            hasAudio: false
          });
          flvPlayer.attachMediaElement(videoElement);
          flvPlayer.load();
        }
        videoElement.style.width = "100%";
        videoElement.style.objectFit = "fill";
        //播放 或 暂停
        operBtn.onclick = function () {
          if (this.attributes.src.value === playImg) {
            flvPlayer.play();
            this.src = pauseImg;
          } else {
            flvPlayer.pause();
            this.src = playImg;
          }
        }
        //全屏 或 退出全屏
        fullBtn.onclick = function () {
          if (this.attributes.src.value === fsImg) {
            var docEle = videoContainer;
            var rfs = docEle.requestFullScreen || docEle.webkitRequestFullScreen || docEle.mozRequestFullScreen || docEle.msRequestFullScreen;
            if (rfs) {
              rfs.call(docEle);
            }
            this.src = exitFsImg;
          } else {
            var cfs = document.cancelFullScreen || document.webkitCancelFullScreen || document.mozCancelFullScreen || document.exitFullScreen;
            if (cfs) {
              cfs.call(document);
            }
            this.src = fsImg;
          }
        }
        //鼠标进入 显示 工具条
        videoBody.onmouseenter = function () {
          videoFooter.classList.add(
            "css-show-transition",
            "css-showTrans"
          );
        }
        //鼠标退出 隐藏 工具条
        videoBody.onmouseleave = function () {
          videoFooter.classList.add(
            "css-close-transition",
            "css-closeTrans"
          );
          videoFooter.classList.remove(
            "css-show-transition",
            "css-showTrans"
          );
        }
        //播放视频
        operBtn.onclick();
        //切换视频
        $('.jksp .content-footer .equi-btn').click(function () {
          var ind = $(this).index()
          window.videoList.some((item, index) => {
            if (ind == index) {
              //暂停播放数据流
              flvPlayer.pause();
              //取消数据流加载
              flvPlayer.unload();
              //将播放实例从节点中取出
              flvPlayer.detachMediaElement();
              //销毁播放实例
              flvPlayer.destroy();
              //重新创建流实例
              var flvPlayer = flvjs.createPlayer({
                type: 'flv',
                url: window.videoList[index].wssFlv,
                hasAudio: false
              });
              flvPlayer.attachMediaElement(videoElement);
              flvPlayer.load();
            }
          })
        })
        //检测点下拉切换事件
        $('#select').change(function() {
            var bind = $(this).val()
            window.detectionList.some((e, index) => {
            if (bind == e.name) {
              var detectionlist= document.getElementById("detectionlist");
              //先清空
              detectionlist.innerHTML = "";
              //再追加
              var weatherList = e.weatherList;
              var strdetection = "";
              if (weatherList.length > 0) {
                weatherList.forEach( item => {
                  if (item.name != '监测时间') {
                    strdetection = strdetection + `<div class="list">
                                      <div class="l">
                                          <div class="type">${item.name}</div>
                                          <div class="unit">
                                              单位:${item.unit}
                                          </div>
                                      </div>
                                      <div class="r">
                                        ${item.value}
                                      </div>
                                  </div>`
                  }
                })
              }
              detectionlist.innerHTML = strdetection;
              //更新时间替换
              var sitedatetext= document.getElementById("sitedatetext");
              //先清空
              sitedatetext.innerHTML = "";
              var timeStr = '';
              var time = e.weatherTime;
              //当前时间
              var date = new Date();
              //计算时间差
              var crud = date.getTime() - new Date(time).getTime();
              //计算出相差天数
              var days = Math.floor(crud / (24 * 3600 * 1000))
              timeStr = days + "天";
              if (days == 0) {
                //计算出小时数
                var leave1 = crud % (24 * 3600 * 1000)    //计算天数后剩余的毫秒数
                var hours = Math.floor(leave1 / (3600 * 1000))
                timeStr = hours + "小时";
                if (hours == 0) {
                  //计算相差分钟数
                  var leave2 = leave1 % (3600 * 1000)        //计算小时数后剩余的毫秒数
                  var minutes = Math.floor(leave2 / (60 * 1000))
                  timeStr = minutes + "分钟";
                  if (minutes == 0) {
                    //计算相差秒数
                    var leave3 = leave2 % (60 * 1000)      //计算分钟数后剩余的毫秒数
                    var seconds = Math.round(leave3 / 1000)
                    timeStr = seconds + "秒";
                  }
                }
              }
              //填充时间参数
              sitedatetext.innerHTML = `<div class="site-date-text" id="sitedatetext">
                                ${timeStr}前更新</div>`;
            }
          })
        })
      });
    });
  </script>
  <script>
  </script>
</body>
<<<<<<< HEAD
</html>
=======
</html>
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
public/traceablityInfos.html
@@ -1,970 +1,679 @@
<!-- web 端详情 -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="divport" content="width=device-width, initial-scale=1.0">
    <style>
        .top-log {
            position: relative;
        }
<<<<<<< HEAD
  <meta charset="UTF-8">
  <meta name="divport" content="width=device-width, initial-scale=1.0">
  <style>
    .top-log {
      position: relative;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .top-log .btn-grounp {
            position: absolute;
            left: 0;
            bottom: 0;
            width: 100%;
            height: 80px;
            display: flex;
            align-items: center;
            justify-content: space-around;
            background: transparent;
        }
<<<<<<< HEAD
    .top-log .btn-grounp {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      height: 80px;
      display: flex;
      align-items: center;
      justify-content: space-around;
      background: transparent;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    .main-content {
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .logo {
            position: relative;
            margin-top: 56px;
            width: 300px;
            height: 300px;
            border-radius: 50%;
            overflow: hidden;
        }
<<<<<<< HEAD
    .main-content .logo {
      position: relative;
      margin-top: 56px;
      width: 300px;
      height: 300px;
      border-radius: 50%;
      overflow: hidden;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .logo .btn {
            position: absolute;
            bottom: 0;
            width: 100%;
            height: 64px;
            line-height: 64px;
            text-align: center;
            background: rgba(0, 0, 0, .4);
            font-size: 24px;
            color: #fff;
        }
<<<<<<< HEAD
    .main-content .logo .btn {
      position: absolute;
      bottom: 0;
      width: 100%;
      height: 64px;
      line-height: 64px;
      text-align: center;
      background: rgba(0, 0, 0, .4);
      font-size: 24px;
      color: #fff;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .title {
            margin-top: 30px;
            font-size: 48px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .main-content .title {
      margin-top: 30px;
      font-size: 48px;
      font-weight: bold;
      color: #333333;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .type {
            display: flex;
            margin-top: 10px;
            width: 180px;
            height: 36px;
            font-size: 24px;
            background: #7BDA8F;
            color: #fff;
            border-radius: 8px;
            overflow: hidden;
        }
<<<<<<< HEAD
    .main-content .type {
      display: flex;
      margin-top: 10px;
      width: 180px;
      height: 36px;
      font-size: 24px;
      background: #7BDA8F;
      color: #fff;
      border-radius: 8px;
      overflow: hidden;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .type .sub {
            flex: 1;
            display: flex;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    .main-content .type .sub {
      flex: 1;
      display: flex;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .type .icon {
            width: 36px;
            display: flex;
            align-items: center;
            justify-content: center;
            background: #6AC077;
        }
<<<<<<< HEAD
    .main-content .type .icon {
      width: 36px;
      display: flex;
      align-items: center;
      justify-content: center;
      background: #6AC077;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .main-content .date {
            display: flex;
            align-items: center;
            justify-content: center;
            margin-top: 40px;
            width: calc(100% - 60px);
            height: 110px;
            background: #E4F0F1;
            border-radius: 34px;
            font-size: 34px;
            color: #5ABF78;
        }
<<<<<<< HEAD
    .main-content .date {
      display: flex;
      align-items: center;
      justify-content: center;
      margin-top: 40px;
      width: calc(100% - 60px);
      height: 110px;
      background: #E4F0F1;
      border-radius: 34px;
      font-size: 34px;
      color: #5ABF78;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box {
            margin-top: 60px;
            padding: 0 30px;
        }
<<<<<<< HEAD
    .model-box {
      margin-top: 60px;
      padding: 0 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title {
            display: flex;
            align-items: center;
            height: 50px;
        }
<<<<<<< HEAD
    .model-box .model-title {
      display: flex;
      align-items: center;
      height: 50px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .l {
            width: 5px;
            height: 36px;
            background: #5ABF78;
        }
<<<<<<< HEAD
    .model-box .model-title .l {
      width: 5px;
      height: 36px;
      background: #5ABF78;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .title {
            margin-left: 20px;
            font-size: 36px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box .model-title .title {
      margin-left: 20px;
      font-size: 36px;
      font-weight: bold;
      color: #333333;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .border {
            flex: 1;
            margin: 13px;
            border-top: 1px dashed #D4DBE8;
            border-bottom: 1px dashed #D4DBE8;
        }
<<<<<<< HEAD
    .model-box .model-title .border {
      flex: 1;
      margin: 13px;
      border-top: 1px dashed #D4DBE8;
      border-bottom: 1px dashed #D4DBE8;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .status {
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
            color: #5ABF78;
        }
<<<<<<< HEAD
    .model-box .model-title .status {
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 24px;
      color: #5ABF78;
    }
        .model-box .model-title .statu.no {
            color: #EC9144;
        }
    .model-box .model-title .statu.no {
      color: #EC9144;
    }
=======
        .model-box .model-title .statu.no {
            color: #EC9144;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box .model-title .status view {
            display: flex;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    .model-box .model-title .status view {
      display: flex;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content {
            display: flex;
            flex-direction: column;
            margin-top: 30px;
            /* height: 642px; */
            background: #fff;
            border-radius: 30px;
        }
<<<<<<< HEAD
    .model-box.qw .model-content {
      display: flex;
      flex-direction: column;
      margin-top: 30px;
      background: #fff;
      border-radius: 30px;
    }
        .model-box.qw .model-content .box:first-child {
            border: 2px solid #EEEEEE;
        }
    .model-box.qw .model-content .box:first-child {
      border-bottom: 2px solid #EEEEEE;
    }
=======
        .model-box.qw .model-content .box:first-child {
            border: 2px solid #EEEEEE;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box {
            flex: 1;
            display: flex;
            padding: 30px;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box {
      flex: 1;
      display: flex;
      padding: 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r {
            margin-left: 26px;
            flex: 1;
            font-size: 24px;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r {
      margin-left: 26px;
      flex: 1;
      font-size: 24px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r .title {
            font-size: 32px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r .title {
      font-size: 32px;
      font-weight: bold;
      color: #333333;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r .line-box {
            margin-top: 16px;
            display: flex;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r .line-box {
      margin-top: 16px;
      display: flex;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r .line-box .sub {
            width: 120px;
            color: #333333;
            line-height: 36px;
        }
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r .line-box .sub {
      width: 120px;
      color: #333333;
      line-height: 36px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.qw .model-content .box>.r .line-box .content {
            flex: 1;
            color: #666666;
            line-height: 36px;
        }
        /* 容器 */
<<<<<<< HEAD
    .model-box.qw .model-content .box>.r .line-box .content {
      flex: 1;
      color: #666666;
      line-height: 36px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content {
            margin-top: 30px;
            background: #fff;
            border-radius: 30px;
        }
        /* 头部 */
<<<<<<< HEAD
    /* 容器 */
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content .content-header {
            display: flex;
            align-items: center;
            justify-content: center;
            height: 90px;
            font-size: 30px;
            color: #5ABF78;
        }
<<<<<<< HEAD
    .model-box.cd .model-content {
      margin-top: 30px;
      background: #fff;
      border-radius: 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-header {
            color: #A255B5;
            border-bottom: 2px solid #ECECEC;
        }
        /* 中间 */
<<<<<<< HEAD
    /* 头部 */
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.dk .content-body {
            height: 450px;
            background: greenyellow;
        }
<<<<<<< HEAD
    .model-box.cd .model-content .content-header {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 90px;
      font-size: 30px;
      color: #5ABF78;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jksp .content-body {
            height: 385px;
            background: #A255B5;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-header {
      color: #A255B5;
      border-bottom: 2px solid #ECECEC;
    }
        .model-box.cd .model-content.jk .content-body {
            border-bottom: 1px solid transparent;
        }
    /* 中间 */
=======
        .model-box.cd .model-content.jk .content-body {
            border-bottom: 1px solid transparent;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box {
            margin: 26px 22px;
            border-radius: 28px;
            border: 2px solid #E3E3E3;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.dk .content-body {
      height: 450px;
      background: greenyellow;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-title {
            padding: 0 22px;
            margin-top: 10px;
            height: 100px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            font-size: 28px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jksp .content-body {
      height: 385px;
      /* background: #A255B5; */
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-date {
            display: flex;
            align-items: center;
            justify-content: center;
            margin: 13px 0;
            height: 2px;
            background: #ECECEC;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body {
      border-bottom: 1px solid transparent;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-date .site-date-text {
            padding: 0 18px;
            height: 36px;
            background: #F4F4F4;
            border-radius: 18px;
            font-size: 24px;
            color: #929292;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box {
      margin: 26px 22px;
      border-radius: 28px;
      border: 2px solid #E3E3E3;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content {
            padding: 24px 22px;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-between;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box .site-title {
      padding: 0 22px;
      /* margin-top: 10px; */
      height: 100px;
      line-height: 100px;
      /* display: flex;
      align-items: center;
      justify-content: space-between; */
      font-size: 28px;
      font-weight: bold;
      color: #333333;
      width: 100%;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-top: 16px;
            padding: 16px 12px;
            width: calc((100% - 18px) / 2);
            background: #E9F1FC;
            border-radius: 8px;
            box-sizing: border-box;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box .site-date {
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 13px 0;
      height: 2px;
      background: #ECECEC;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view:nth-child(1),
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view:nth-child(2) {
            margin-top: 0;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box .site-date .site-date-text {
      padding: 0 18px;
      /* height: 36px; */
      background: #F4F4F4;
      border-radius: 18px;
      font-size: 24px;
      color: #929292;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view .type {
            font-size: 28px;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jk .content-body .site-box .site-content {
      padding: 24px 22px;
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-top: 16px;
      padding: 16px 12px;
      width: calc((100% - 18px) / 2);
      background: #E9F1FC;
      border-radius: 8px;
      box-sizing: border-box;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div:nth-child(1),
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div:nth-child(2) {
      margin-top: 0;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div .type {
      font-size: 28px;
      color: #333333;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div .unit {
      margin-top: 4px;
      font-size: 24px;
      color: #84898F;
    }
    .model-box.cd .model-content.jk .content-body .site-box .site-content>div .r {
      font-size: 38px;
      color: #5ABF78;
    }
    /* 底部 */
    .model-box.cd .model-content .content-footer {
      display: flex;
      align-items: center;
      height: 120px;
      font-size: 24px;
    }
    .model-box.cd .model-content.dk .content-footer {
      padding: 0 26px;
    }
    .model-box.cd .model-content.dk .content-footer .l {
      width: 480px;
      color: #666666;
    }
    .model-box.cd .model-content.dk .content-footer .r {
      flex: 1;
      display: flex;
      align-items: center;
      justify-content: center;
      color: #5ABF78;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view .unit {
            margin-top: 4px;
            font-size: 24px;
            color: #84898F;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jksp .content-footer {
      padding: 0 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jk .content-body .site-box .site-content>view .r {
            font-size: 38px;
            color: #5ABF78;
        }
        /* 底部 */
<<<<<<< HEAD
    .model-box.cd .model-content.jksp .content-footer .equi-btn {
      display: flex;
      align-items: center;
      justify-content: center;
      margin-left: 12px;
      width: 196px;
      height: 60px;
      background: #F2F5F9;
      border-radius: 9px;
      border: 1px solid #DCDCDC;
      font-size: 24px;
      color: #697580;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content .content-footer {
            display: flex;
            align-items: center;
            height: 120px;
            font-size: 24px;
        }
<<<<<<< HEAD
    .model-box.cd .model-content.jksp .content-footer .equi-btn:first-child {
      margin-left: 0;
    }
        .model-box.cd .model-content.dk .content-footer {
            padding: 0 26px;
        }
    .model-box.cd .model-content.jksp .content-footer .equi-btn.on {
      background: linear-gradient(90deg, #5ABB82 0%, #7BDA8F 100%);
      border: none;
      color: #fff;
    }
=======
        .model-box.cd .model-content.dk .content-footer {
            padding: 0 26px;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.dk .content-footer .l {
            width: 480px;
            color: #666666;
        }
<<<<<<< HEAD
    /* 种植环节 */
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.dk .content-footer .r {
            flex: 1;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #5ABF78;
        }
<<<<<<< HEAD
    .model-box.zz .model-content {
      margin-top: 30px;
    }
        .model-box.cd .model-content.jksp .content-footer {
            padding: 0 30px;
        }
    .model-box.zz .model-content .msg {
      display: flex;
      align-items: center;
      height: 126px;
    }
=======
        .model-box.cd .model-content.jksp .content-footer {
            padding: 0 30px;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jksp .content-footer .equi-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            margin-left: 12px;
            width: 196px;
            height: 60px;
            background: #F2F5F9;
            border-radius: 9px;
            border: 1px solid #DCDCDC;
            font-size: 24px;
            color: #697580;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .msg .r {
      margin-left: 30px;
      padding: 10px 26px;
      position: relative;
      flex: 1;
      background: #fff;
      font-size: 24px;
      color: #999999;
      border-radius: 16px;
    }
        .model-box.cd .model-content.jksp .content-footer .equi-btn:first-child {
            margin-left: 0;
        }
    .model-box.zz .model-content .msg .r text {
      font-weight: bold;
      color: #EC9144;
    }
=======
        .model-box.cd .model-content.jksp .content-footer .equi-btn:first-child {
            margin-left: 0;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.cd .model-content.jksp .content-footer .equi-btn.on {
            background: linear-gradient(90deg, #5ABB82 0%, #7BDA8F 100%);
            border: none;
            color: #fff;
        }
        /* 种植环节 */
<<<<<<< HEAD
    .model-box.zz .model-content .msg .r .r-b-msg {
      margin-top: 10px;
      color: #333333;
    }
        .model-box.zz .model-content {
            margin-top: 30px;
        }
    .model-box.zz .model-content .msg .r .point-to {
      position: absolute;
      top: 0;
      left: -18px;
      right: auto;
      bottom: 0;
      margin: auto;
      width: 0;
      height: 0;
      border-top: 14px solid transparent;
      border-right: 30px solid #fff;
      border-bottom: 14px solid transparent;
      z-index: -1;
    }
=======
        .model-box.zz .model-content {
            margin-top: 30px;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg {
            display: flex;
            align-items: center;
            height: 126px;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box {
      display: flex;
      align-items: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg .r {
            margin-left: 30px;
            padding: 10px 26px;
            position: relative;
            flex: 1;
            background: #fff;
            font-size: 24px;
            color: #999999;
            border-radius: 16px;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l {
      margin-left: 40px;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg .r text {
            font-weight: bold;
            color: #EC9144;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l .point {
      width: 20px;
      height: 20px;
      background: #5ABF78;
      border-radius: 50%;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg .r .r-b-msg {
            margin-top: 10px;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l .line {
      width: 2px;
      height: 150px;
      background: #DEE3E7;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .msg .r .point-to {
            position: absolute;
            top: 0;
            left: -18px;
            right: auto;
            bottom: 0;
            margin: auto;
            width: 0;
            height: 0;
            border-top: 14px solid transparent;
            border-right: 30px solid #fff;
            border-bottom: 14px solid transparent;
            z-index: -1;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l .line.one {
      width: 2px;
      height: 100px;
      background: #DEE3E7;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box {
            display: flex;
            align-items: center;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .l .line.two {
      width: 2px;
      height: 100px;
      background: #DEE3E7;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l {
            margin-left: 40px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r {
      margin-left: 64px;
      flex: 1;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l .point {
            width: 20px;
            height: 20px;
            background: #5ABF78;
            border-radius: 50%;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item {
      margin-top: 30px;
      padding: 32px 30px 42px;
      background: #FFFFFF;
      border-radius: 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l .line {
            width: 2px;
            height: 150px;
            background: #DEE3E7;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item .type {
      font-size: 32px;
      font-weight: bold;
      color: #333333;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l .line.one {
            width: 2px;
            height: 100px;
            background: #DEE3E7;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item .date-pel {
      margin-top: 10px;
      display: flex;
      justify-content: space-between;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .l .line.two {
            width: 2px;
            height: 100px;
            background: #DEE3E7;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item .date-pel .date {
      padding: 2px 20px;
      font-size: 24px;
      color: #fff;
      background: linear-gradient(89deg, #60BA84 0%, #73DB90 100%);
      border-radius: 10px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r {
            margin-left: 64px;
            flex: 1;
        }
<<<<<<< HEAD
    .model-box.zz .model-content .record-box .r .record-item .date-pel .pel {
      font-size: 28px;
      color: #666666;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item {
            margin-top: 30px;
            padding: 32px 30px 42px;
            background: #FFFFFF;
            border-radius: 30px;
        }
<<<<<<< HEAD
    /* 生产企业 */
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item .type {
            font-size: 32px;
            font-weight: bold;
            color: #333333;
        }
<<<<<<< HEAD
    .model-box.sc .model-content {
      margin-top: 30px;
      /* padding-bottom: 30px; */
      background: #fff;
      border-radius: 30px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item .date-pel {
            margin-top: 10px;
            display: flex;
            justify-content: space-between;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-header {
      display: flex;
      align-items: center;
      justify-content: center;
      height: 124px;
      font-size: 36px;
      font-weight: bold;
      color: #000000;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item .date-pel .date {
            padding: 2px 20px;
            font-size: 24px;
            color: #fff;
            background: linear-gradient(89deg, #60BA84 0%, #73DB90 100%);
            border-radius: 10px;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-body {
      height: 390px;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.zz .model-content .record-box .r .record-item .date-pel .pel {
            font-size: 28px;
            color: #666666;
        }
        /* 生产企业 */
<<<<<<< HEAD
    .model-box.sc .model-content .content-body .swiper {
      height: 100%;
      width: 100%;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content {
            margin-top: 30px;
            /* padding-bottom: 30px; */
            background: #fff;
            border-radius: 30px;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-body .swiper-image {
      height: 100%;
      width: 100%;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-header {
            display: flex;
            align-items: center;
            justify-content: center;
            height: 124px;
            font-size: 36px;
            font-weight: bold;
            color: #000000;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-body .slide-image {
      height: 100%;
      width: 100%;
    }
        .model-box.sc .model-content .content-body {
            height: 390px;
        }
    .model-box.sc .model-content .text-intro {
      margin: 0 25px;
      padding: 20px 0 34px;
      line-height: 42px;
      font-size: 24px;
      color: #818592;
      border-bottom: 2px solid #EAEEF4;
    }
=======
        .model-box.sc .model-content .content-body {
            height: 390px;
        }
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-body .swiper {
            height: 100%;
            width: 100%;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-footer {
      margin-top: 24px;
      display: flex;
      align-items: flex-start;
      justify-content: space-around;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-body .swiper-image {
            height: 100%;
            width: 100%;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-footer>view {
      display: flex;
      flex-direction: column;
      align-items: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-body .slide-image {
            height: 100%;
            width: 100%;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-footer>view .type {
      margin-top: 6px;
      font-size: 24px;
      color: #697580;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .text-intro {
            margin: 0 25px;
            padding: 20px 0 34px;
            line-height: 42px;
            font-size: 24px;
            color: #818592;
            border-bottom: 2px solid #EAEEF4;
        }
<<<<<<< HEAD
    .model-box.sc .model-content .content-footer>view .msg {
      margin-top: 2px;
      padding: 2px 6px;
      background: #E4EBEE;
      border-radius: 13px 13px 13px 13px;
      font-size: 20px;
      color: #697580;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-footer {
            margin-top: 24px;
            display: flex;
            align-items: flex-start;
            justify-content: space-around;
        }
<<<<<<< HEAD
    .btn-grounp {
      margin-top: 84px;
      display: flex;
      height: 148px;
      background: #FFFFFF;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-footer>view {
            display: flex;
            flex-direction: column;
            align-items: center;
        }
<<<<<<< HEAD
    .btn-grounp .l {
      margin-right: 76px;
      width: 194px;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-footer>view .type {
            margin-top: 6px;
            font-size: 24px;
            color: #697580;
        }
<<<<<<< HEAD
    .btn-grounp .l .plan {
      font-size: 34px;
      font-weight: bold;
      color: #D55B26;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .model-box.sc .model-content .content-footer>view .msg {
            margin-top: 2px;
            padding: 2px 6px;
            background: #E4EBEE;
            border-radius: 13px 13px 13px 13px;
            font-size: 20px;
            color: #697580;
        }
<<<<<<< HEAD
    .btn-grounp .l .text {
      margin-top: 2px;
      font-size: 20px;
      color: #A5AEB5;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp {
            margin-top: 84px;
            display: flex;
            height: 148px;
            background: #FFFFFF;
        }
<<<<<<< HEAD
    .btn-grounp .r {
      flex: 1;
      display: flex;
      align-items: center;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp .l {
            margin-right: 76px;
            width: 194px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
        }
<<<<<<< HEAD
    #video-body {
      display: inline-block;
      height: 100%;
      position: relative;
      overflow: hidden;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp .l .plan {
            font-size: 34px;
            font-weight: bold;
            color: #D55B26;
        }
<<<<<<< HEAD
    #video-footer {
      width: 100%;
      height: 60px;
      background: rgba(0, 0, 0, 0.5);
      margin-top: -63px;
      position: relative;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp .l .text {
            margin-top: 2px;
            font-size: 20px;
            color: #A5AEB5;
        }
<<<<<<< HEAD
    #oper-btn {
      position: absolute;
      top: 10px;
      left: 20px;
      cursor: pointer;
    }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        .btn-grounp .r {
            flex: 1;
            display: flex;
            align-items: center;
        }
    </style>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    #full-btn {
      position: absolute;
      top: 12px;
      right: 20px;
      cursor: pointer;
    }
  </style>
  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
  <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
  <script src="js/flv.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
    <div class="page-main-container" style="background: #F1F9F8;width:100%;height: 100%;">
        <!-- <scroll-div scroll-top="{{scrollTop}}" refresher-enabled="{{true}}" bindrefresherrefresh="refresh" refresher-triggered="{{triggered}}" style="height: {{clientHeight}}" scroll-y bindscrolltolower="upcroll"> -->
        <!-- </scroll-div> -->
    </div>
    <script>
        var getData = function(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            var r = window.location.search.substr(1).match(reg);
            if (r != null) return decodeURI(r[2]);
            return null;
        };
        var code = getData("code");
<<<<<<< HEAD
  <div class="page-main-container" style="background: #F1F9F8;width:100%;height: 100%;">
        // var code = "22070000002";
    <!-- <scroll-div scroll-top="{{scrollTop}}" refresher-enabled="{{true}}" bindrefresherrefresh="refresh" refresher-triggered="{{triggered}}" style="height: {{clientHeight}}" scroll-y bindscrolltolower="upcroll"> -->
    <!-- </scroll-div> -->
  </div>
  <script>
    var getData = function (name) {
      var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
      var r = window.location.search.substr(1).match(reg);
      if (r != null) return decodeURI(r[2]);
      return null;
    };
    var code = getData("code");
    // var code = "22070000001";
=======
        // var code = "22070000002";
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
        axios.get('https://dev.jxpskj.com:8023/api/traceability/getTraceabilityDetailInfo?code=' + code).then(function(res) {
            // axios.get('http://192.168.0.114:89/traceability/getTraceabilityDetailInfo?code==22060000002').then(function(res) {
            var data = res.data.data;
            var farm = data.farm;
            var land = data.landVO;
            var num = data.num;
            var paperList = data.paperVOList;
            var recordVOList = data.recordVOList;
            var recovery = data.recoveryVO;
            var str0 = `<div class="top-log">
    axios.get('https://dev.jxpskj.com:8023/api/traceability/getTraceabilityDetailInfo?code=' + code).then(function (res) {
      // axios.get('http://192.168.0.114:89/traceability/getTraceabilityDetailInfo?code=' + code).then(function(res) {
      var data = res.data.data;
      var farm = data.farm;
      var land = data.landVO;
      var num = data.num;
      var paperList = data.paperVOList;
      var recordVOList = data.recordVOList;
      var recovery = data.recoveryVO;
      //请求检测数据
      axios.get('http://dev.jxpskj.com:8030/pyh-station/stationAndVideo/queryStationAndVideoInfoData?type=All&landId=' + recovery.landId).then(function (res) {
        var staList = res.data.data.staList;
        var vidList = res.data.data.vidList;
        window.detectionList = staList;
        window.videoList = vidList;
        var str0 = `<div class="top-log">
            <img width="100%" height="405px" src="http://182.106.212.58:8014/assets/images/sym/2.png" />
            <div class="btn-grounp">
                <img bindtap="scrollTo" data-class=".qw" width="176px" height="80px" src="http://182.106.212.58:8014/assets/images/sy/1418.png" />
@@ -973,30 +682,30 @@
                <img bindtap="scrollTo" data-class=".sc" width="176px" height="80px" src="http://182.106.212.58:8014/assets/images/sy/1414.png" />
            </div>
        </div>
        <div class="main-content">
            <div class="logo">
                <img width="100%" height="100%" src="${recovery.url}" />
                <!-- <div class="btn">更换图片</div> -->
            </div>
            <div class="title">${recovery.strainName}</div>
            <div class="type">
                <div class="sub">${recovery.lx}</div>
                <!-- <div class="icon">
                <van-icon name="play" />
              </div> -->
            </div>
            <div class="date">
                采收时间:${recovery.time.replaceAll("-",".")}
                采收时间:${recovery.time.replaceAll("-", ".")}
            </div>
        </div>
        <div class="qw model-box">
        <div class="model-title">
            <div class="l"></div>
            <div class="title">权威检测</div>
@@ -1008,13 +717,13 @@
                可追溯
            </div>
        </div>
        <div class="model-content">`
            var str1 = '';
            if (paperList.length > 0) {
                paperList.forEach(item => {
                    var url = item.pictures.split(",")[0];
                    str1 = str1 + `<div class="box">
        var str1 = '';
        if (paperList.length > 0) {
          paperList.forEach(item => {
            var url = item.pictures.split(",")[0];
            str1 = str1 + `<div class="box">
                        <div class="l">
                            <img width="204px" height="204px" src="${url}" />
                        </div>
@@ -1032,25 +741,20 @@
                            </div>
                            <div class="date line-box">
                                <div class="sub">颁发日期:</div>
                                <div class="content">${item.time.replaceAll("-",".")}</div>
                                <div class="content">${item.time.replaceAll("-", ".")}</div>
                            </div>
                        </div>
                    </div>`
                });
            } else {
                str1 = str1 + `<div class="box"></div>`
            }
<<<<<<< HEAD
          });
        } else {
          str1 = str1 + `<div class="box"></div>`
        }
=======
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
            var str2 = `
        var str2 = `
            </div>
        </div>
        <div class="cd model-box">
            <div class="model-title">
                <div class="l"></div>
@@ -1063,7 +767,7 @@
                    可追溯
                </div>
            </div>
            <div class="dk model-content">
                <div class="content-header">
                    <van-icon style="margin-right: 12px;" name="http://182.106.212.58:8014/assets/images/sy/1267.png" /> 种植地块
@@ -1081,180 +785,142 @@
                </div> -->
                </div>
            </div>
            <div class="jksp model-content">
                <div class="content-header">
                    <van-icon style="margin-right: 12px;" name="http://182.106.212.58:8014/assets/images/sy/1272.png" /> 良心生产,不怕监督,24小时视频监控
                </div>
                <div class="content-body"></div>
                <div class="content-footer">
                    <div class="equi-btn on">
                        3号摄像头
                </div>`
        //监控
        var strvedio = '';
        // vidList.push({
        //   name:"1号摄像头"
        // })
        // vidList.push({
        //   name:"2号摄像头"
        // })
        if (vidList.length > 0) {
          //读取第一个视频 url
          strvedio = strvedio + `<div class="content-body">
                  <div id="video-body">
                    <video controls id="video-element" muted>你的浏览器太老了,不支持HTML5视频。</video>
                    <div id="video-footer" class="css-closeTrans">
                      <img id="oper-btn" src="img/i-play.png" width="40px" />
                      <div id="video-sound">
                      </div>
                      <img id="full-btn" src="img/i-fs.png" width="35px" />
                    </div>
                    <div class="equi-btn">
                        3号摄像头
                    </div>
                </div>
            </div>
                  </div>
                </div><div class="content-footer">`
          //遍历监控点
          vidList.forEach((item,index) => {
            strvedio = strvedio + `<div class="equi-btn on">
                        ${item.name}
                    </div>`
            if(index>=1){
              // equibtn.style.color = "#fff";
            }
          })
        } else {
          strvedio = strvedio + `<div class="content-body">
                </div><div class="content-footer">`
        }
        var str10 =
          `</div>
              </div>
            <div class="jk model-content">
                <div class="content-header">
                    物联网监控保证产地养分充足,且不被污染
                </div>
                <div class="content-body">
                    <div class="site-box">
                        <div class="site-title">
                    <div class="site-box">`
        var strdetection = '';
        if (staList.length > 0) {
          var sta = staList[0];
          var timeStr = '';
          var time = sta.weatherTime;
          //当前时间
          var date = new Date();
          //计算时间差
          var crud = date.getTime() - new Date(time).getTime();
          //计算出相差天数
          var days = Math.floor(crud / (24 * 3600 * 1000))
          timeStr = days + "天";
          if (days == 0) {
            //计算出小时数
            var leave1 = crud % (24 * 3600 * 1000)    //计算天数后剩余的毫秒数
            var hours = Math.floor(leave1 / (3600 * 1000))
            timeStr = hours + "小时";
            if (hours == 0) {
              //计算相差分钟数
              var leave2 = leave1 % (3600 * 1000)        //计算小时数后剩余的毫秒数
              var minutes = Math.floor(leave2 / (60 * 1000))
              timeStr = minutes + "分钟";
              if (minutes == 0) {
                //计算相差秒数
                var leave3 = leave2 % (60 * 1000)      //计算分钟数后剩余的毫秒数
                var seconds = Math.round(leave3 / 1000)
                timeStr = seconds + "秒";
              }
            }
          }
          //读取第一个检测设备
          strdetection = strdetection + `<div class="site-title">
                            <div class="l">
                                <van-icon name="like" /> 谷米田庄二号气象站
                            </div>
                            <div class="r">
                                <van-icon name="add-o" />
                              <select id="select" style="font-weight: bold;color: #333333;border: none;font-size: 28px;width:96%">`
          staList.forEach(item=>{
            strdetection = strdetection + `<option>${item.name}</option>`
          })
          strdetection = strdetection + `</select>
                            </div>
                        </div>
                        <div class="site-date">
                            <div class="site-date-text">6分钟前更新</div>
                            <div class="site-date-text" id="sitedatetext">
                              ${timeStr}前更新</div>
                        </div>
                        <div class="site-content">
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                            <div>
                                <div class="l">
                                    <div class="type">空气温度</div>
                                    <div class="unit">
                                        单位:℃
                                    </div>
                                </div>
                                <div class="r">
                                    33.92
                                </div>
                            </div>
                        </div>
                        <div class="site-content" id="detectionlist">`
          //遍历检测信息
          var weatherList = staList[0].weatherList;
          if (weatherList.length > 0) {
            weatherList.forEach(item => {
              if (item.name != '监测时间') {
                strdetection = strdetection + `<div class="list">
                                  <div class="l">
                                      <div class="type">${item.name}</div>
                                      <div class="unit">
                                          单位:${item.unit}
                                      </div>
                                  </div>
                                  <div class="r">
                                    ${item.value}
                                  </div>
                              </div>`
              }
            })
          }
        } else {
          strdetection = strdetection + `
                        <div class="site-content">`
        }
        var str11 = `</div>
                    </div>
                </div>
            </div>
        </div>
        <div class="zz model-box">
            <div class="model-title">
                <div class="l"></div>
@@ -1267,9 +933,9 @@
                </div> -->
                </div>
            </div>
            <div class="model-content">
                <div class="msg">
                    <div class="l">
                        <img width="126px" height="126px" src="http://182.106.212.58:8014/assets/images/sy/zz-log.png" />
@@ -1277,30 +943,29 @@
                    <div class="r">
                        <div>
                            我是基地管理员:
                            <!-- <text>郝爱国</text> -->
                        </div>
                        <div class="r-b-msg">
                            以下农事操作,是在我的监督下完成
                        </div>
                        <div class="point-to"></div>
                    </div>
                </div>`
            var str3 = '';
            recordVOList.forEach((item, index) => {
                str3 = str3 + `<div class="record-box">
        var str3 = '';
        recordVOList.forEach((item, index) => {
          str3 = str3 + `<div class="record-box">
                    <div class="l">
                        <div class="one  line" style="${ index == 0 ? 'background: transparent !important;' : '' }">
                        <div class="one  line" style="${index == 0 ? 'background: transparent !important;' : ''}">
                        </div>
                        <div class="point">
                        </div>
                        <div class="two line" style="${ index == recordVOList.length - 1 ? 'background: transparent !important;' : '' }">
                        <div class="two line" style="${index == recordVOList.length - 1 ? 'background: transparent !important;' : ''}">
                        </div>
                    </div>
                    <div class="r">
                        <div class="record-item">
@@ -1310,14 +975,13 @@
                                <div class="pel">操作人:${item.realName}</div>
                            </div>
                        </div>
                    </div>
                </div>`
            });
            var str4 = `</div>
        });
        var str4 = `</div>
        </div>
        <div class="sc model-box">
            <div class="model-title">
                <div class="l"></div>
@@ -1330,7 +994,7 @@
                </div> -->
                </div>
            </div>
            <div class="model-content">
                <div class="content-header">
                    ${farm.farmName}
@@ -1338,17 +1002,17 @@
                <div class="content-body">
                    <swiper class="swiper" indicator-dots="true" autoplay="true" interval="3000" duration="1000">
                        <block class="swiper-image">`
            var str5 = '';
            var urls = farm.picture.split(",");
            if (urls.length > 0) {
                urls.forEach(item => {
                    str5 = str5 + `<swiper-item>
        var str5 = '';
        var urls = farm.picture.split(",");
        if (urls.length > 0) {
          urls.forEach(item => {
            str5 = str5 + `<swiper-item>
                                <image src="${item}" class="slide-image" />
                            </swiper-item>`
                })
            }
            var str6 = `</block></swiper>
          })
        }
        var str6 = `</block></swiper>
                </div>
                <div class="text-intro">
                    ${farm.introduce}
@@ -1357,33 +1021,214 @@
                </div>
            </div>
        </div>`
            // <div class="btn-grounp">
            //     <div class="l">
            //         <div class="plan">
            //             ${num} %
            //         </div>
            //         <div class="text">
            //             溯源完整度
            //         </div>
            //     </div>
            //     <div class="r">
            //         <van-button bind:click="editTracability" round custom-style="margin-right: 40px; width: 200px; height: 72px; border: 2px solid #5ABF78; background: #fff; color: #5ABF78; font-size: 30px;">编辑溯源</van-button>
            //         <van-button bind:click="submit" round custom-style="width: 200px; height: 72px; border: none; background: #5ABF78; color: #fff; font-size: 30px;">分享</van-button>
            //     </div>
            // </div>
            var dom = $('.page-main-container');
            dom.empty();
            dom.append(str0 + str1 + str2 + str3 + str4 + str5 + str6);
        });
    </script>
        // <div class="btn-grounp">
        //     <div class="l">
        //         <div class="plan">
        //             ${num} %
        //         </div>
        //         <div class="text">
        //             溯源完整度
        //         </div>
        //     </div>
        //     <div class="r">
        //         <van-button bind:click="editTracability" round custom-style="margin-right: 40px; width: 200px; height: 72px; border: 2px solid #5ABF78; background: #fff; color: #5ABF78; font-size: 30px;">编辑溯源</van-button>
        //         <van-button bind:click="submit" round custom-style="width: 200px; height: 72px; border: none; background: #5ABF78; color: #fff; font-size: 30px;">分享</van-button>
        //     </div>
        // </div>
        var dom = $('.page-main-container');
        dom.empty();
        dom.append(str0 + str1 + str2 + strvedio + str10 + strdetection + str11 + str3 + str4 + str5 + str6);
        var playImg = "img/i-play.png",
          pauseImg = "img/i-pause.png",
          fsImg = "img/i-fs.png",
          exitFsImg = "img/i-exitfs.png",
          soundOpenImg = "img/sound-open.png",
          soundCloseImg = "img/sound-close.png";
        var videoBody = document.getElementById('video-body'),
          videoElement = document.getElementById('video-element'),
          videoBegin = document.getElementById('video-begin'),
          videoEnd = document.getElementById('video-end'),
          videoFooter = document.getElementById('video-footer'),
          operBtn = document.getElementById('oper-btn'),
          fullBtn = document.getElementById('full-btn');
        var slide = false, soundWidth = 0;
        //初始化视频配置
        if (flvjs.isSupported()) {
          var flvPlayer = flvjs.createPlayer({
            type: 'flv',
            url: window.videoList[0].wssFlv,
            hasAudio: false
          });
          flvPlayer.attachMediaElement(videoElement);
          flvPlayer.load();
        }
        videoElement.style.width = "100%";
        videoElement.style.objectFit = "fill";
        //播放 或 暂停
        operBtn.onclick = function () {
          if (this.attributes.src.value === playImg) {
            flvPlayer.play();
            this.src = pauseImg;
          } else {
            flvPlayer.pause();
            this.src = playImg;
          }
        }
        //全屏 或 退出全屏
        fullBtn.onclick = function () {
          if (this.attributes.src.value === fsImg) {
            var docEle = videoContainer;
            var rfs = docEle.requestFullScreen || docEle.webkitRequestFullScreen || docEle.mozRequestFullScreen || docEle.msRequestFullScreen;
            if (rfs) {
              rfs.call(docEle);
            }
            this.src = exitFsImg;
          } else {
            var cfs = document.cancelFullScreen || document.webkitCancelFullScreen || document.mozCancelFullScreen || document.exitFullScreen;
            if (cfs) {
              cfs.call(document);
            }
            this.src = fsImg;
          }
        }
        //鼠标进入 显示 工具条
        videoBody.onmouseenter = function () {
          videoFooter.classList.add(
            "css-show-transition",
            "css-showTrans"
          );
        }
        //鼠标退出 隐藏 工具条
        videoBody.onmouseleave = function () {
          videoFooter.classList.add(
            "css-close-transition",
            "css-closeTrans"
          );
          videoFooter.classList.remove(
            "css-show-transition",
            "css-showTrans"
          );
        }
        //播放视频
        operBtn.onclick();
        //切换视频
        $('.jksp .content-footer .equi-btn').click(function () {
          var ind = $(this).index()
          window.videoList.some((item, index) => {
            if (ind == index) {
              //暂停播放数据流
              flvPlayer.pause();
              //取消数据流加载
              flvPlayer.unload();
              //将播放实例从节点中取出
              flvPlayer.detachMediaElement();
              //销毁播放实例
              flvPlayer.destroy();
              //重新创建流实例
              var flvPlayer = flvjs.createPlayer({
                type: 'flv',
                url: window.videoList[index].wssFlv,
                hasAudio: false
              });
              flvPlayer.attachMediaElement(videoElement);
              flvPlayer.load();
            }
          })
        })
        //检测点下拉切换事件
        $('#select').change(function() {
            var bind = $(this).val()
            window.detectionList.some((e, index) => {
            if (bind == e.name) {
              var detectionlist= document.getElementById("detectionlist");
              //先清空
              detectionlist.innerHTML = "";
              //再追加
              var weatherList = e.weatherList;
              var strdetection = "";
              if (weatherList.length > 0) {
                weatherList.forEach( item => {
                  if (item.name != '监测时间') {
                    strdetection = strdetection + `<div class="list">
                                      <div class="l">
                                          <div class="type">${item.name}</div>
                                          <div class="unit">
                                              单位:${item.unit}
                                          </div>
                                      </div>
                                      <div class="r">
                                        ${item.value}
                                      </div>
                                  </div>`
                  }
                })
              }
              detectionlist.innerHTML = strdetection;
              //更新时间替换
              var sitedatetext= document.getElementById("sitedatetext");
              //先清空
              sitedatetext.innerHTML = "";
              var timeStr = '';
              var time = e.weatherTime;
              //当前时间
              var date = new Date();
              //计算时间差
              var crud = date.getTime() - new Date(time).getTime();
              //计算出相差天数
              var days = Math.floor(crud / (24 * 3600 * 1000))
              timeStr = days + "天";
              if (days == 0) {
                //计算出小时数
                var leave1 = crud % (24 * 3600 * 1000)    //计算天数后剩余的毫秒数
                var hours = Math.floor(leave1 / (3600 * 1000))
                timeStr = hours + "小时";
                if (hours == 0) {
                  //计算相差分钟数
                  var leave2 = leave1 % (3600 * 1000)        //计算小时数后剩余的毫秒数
                  var minutes = Math.floor(leave2 / (60 * 1000))
                  timeStr = minutes + "分钟";
                  if (minutes == 0) {
                    //计算相差秒数
                    var leave3 = leave2 % (60 * 1000)      //计算分钟数后剩余的毫秒数
                    var seconds = Math.round(leave3 / 1000)
                    timeStr = seconds + "秒";
                  }
                }
              }
              //填充时间参数
              sitedatetext.innerHTML = `<div class="site-date-text" id="sitedatetext">
                                ${timeStr}前更新</div>`;
            }
          })
        })
      });
    });
  </script>
  <script>
  </script>
</body>
<<<<<<< HEAD
</html>
=======
</html>
>>>>>>> adf4c52344cf6f0ea16d1f01410258648c9f5356
src/api/farm/farmingrecord.js
@@ -11,6 +11,17 @@
        }
    })
}
export const getListByNz = (current, size, params) => {
  return request({
    url: '/api/farmingRecord/pageNz',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const remove = (ids) => {
    return request({
        url: '/api/farmingRecord/remove',
@@ -66,4 +77,4 @@
            deptId
        }
    })
}
}
src/api/land/land.js
@@ -44,9 +44,7 @@
  return request({
    url: '/api/land/land/updateLandAr',
    method: 'post',
    params: {
      ...params,
    }
    data: params
  })
}
src/api/processinv/processinv.js
New file
@@ -0,0 +1,61 @@
import request from '@/router/axios';
export const getList = (current, size, params) => {
  return request({
    url: '/api/processinv/processinv/list',
    method: 'get',
    params: {
      ...params,
      current,
      size,
    }
  })
}
export const getPage = (current, size, params) => {
    return request({
      url: '/api/processinv/processinv/page',
      method: 'get',
      params: {
        ...params,
        current,
        size,
      }
    })
  }
export const getDetail = (id) => {
  return request({
    url: '/api/processinv/processinv/detail',
    method: 'get',
    params: {
      id
    }
  })
}
export const remove = (ids) => {
  return request({
    url: '/api/processinv/processinv/remove',
    method: 'post',
    params: {
      ids,
    }
  })
}
export const add = (row) => {
  return request({
    url: '/api/processinv/processinv/submit',
    method: 'post',
    data: row
  })
}
export const update = (row) => {
  return request({
    url: '/api/processinv/processinv/submit',
    method: 'post',
    data: row
  })
}
src/api/sale/sale.js
@@ -52,6 +52,15 @@
  })
}
//销售加工产品
export const insert = (row) => {
  return request({
    url: '/api/sale/sale/submitProcess',
    method: 'post',
    data: row
  })
}
export const getInventoryPage = (current, size, params) => {
  return request({
    url: '/api/inventory/inventory/page',
@@ -72,6 +81,15 @@
  })
}
//销售加工产品
export const insertKC = (row) => {
  return request({
    url: '/api/inventory/inventory/submitProcess',
    method: 'post',
    data: row
  })
}
export const update = (row) => {
  return request({
    url: '/api/sale/sale/submit',
src/views/farm/farmingrecord.vue
@@ -67,6 +67,7 @@
                editBtn: true,
                delBtn: true,
                viewBtn: true,
                header:false,
                menuWidth: 200,
                menuAlign: "center",
                align: "center",
src/views/farm/stockUseInfo.vue
New file
@@ -0,0 +1,224 @@
<template>
    <basic-container>
        <avue-crud
            :option="option"
            :table-loading="loading"
            :data="data"
            :page.sync="page"
            :permission="permissionList"
            :before-open="beforeOpen"
            v-model="form"
            ref="crud"
            @search-change="searchChange"
            @search-reset="searchReset"
            @selection-change="selectionChange"
            @current-change="currentChange"
            @size-change="sizeChange"
            @refresh-change="refreshChange"
            @on-load="onLoad"
        >
<!--            <template slot="menuLeft">-->
<!--                <el-button-->
<!--                    type="danger"-->
<!--                    size="small"-->
<!--                    icon="el-icon-delete"-->
<!--                    plain-->
<!--                    @click="handleDelete"-->
<!--                >删 除</el-button>-->
<!--            </template>-->
        </avue-crud>
    </basic-container>
</template>
<script>
import {
  getDetail,
  getListByNz,
} from "@/api/farm/farmingrecord"
import { getLandList } from "@/api/land/land"
import { getUserList } from "@/api/system/user"
import { selectStockFa } from "@/api/stockfactory/stockfactory"
import { mapGetters } from "vuex"
export default {
    data () {
        return {
            visible: true,
            form: {},
            query: {},
            loading: true,
            excelBox: false,
            page: {
                pageSize: 10,
                currentPage: 1,
                total: 0,
            },
            selectionList: [],
            landId: 0,
            landList: [36],
            option: {
                tip: false,
                height: 520,
                editBtn: false,
                delBtn: false,
                viewBtn: false,
                header:false,
                menuWidth: 200,
                menuAlign: "center",
                align: "center",
                selection: false,
                searchShow: true,
                searchMenuSpan: 6,
                indexFixed: false,
                // selectionFixed: false,
                // expandFixed: false,
                // menuFixed: false,
                menu:false,
                column: [
                    {
                        label: "所属地块",
                        prop: "landId",
                        searchSpan: 4,
                        search: true,
                        type: "select",
                        hide: true,
                        dicData: [],
                        props: {
                            label: "landName",
                            value: "id",
                        },
                        change: (val) => {
                            this.landId = val.value
                        },
                        labelWidth: 110,
                        rules: [
                            {
                                required: true,
                                message: "请选择所属地块",
                                trigger: "blur",
                            },
                        ],
                    },
                    {
                        label: "所属地块",
                        prop: "landName",
                        display: false,
                    },
                    {
                      label: "品种",
                      prop: "strainName",
                      display: false,
                    },
                    {
                      label: "农资及用量",
                      prop: "content",
                      display: false,
                    },
                    {
                      label: "农资使用时间",
                      prop: "time",
                      display: false,
                    },
                    {
                      label: "厂家",
                      prop: "factoryName",
                      display: false,
                    }
                ],
            },
            data: [],
        }
    },
    created () {
        this.initData()
    },
    computed: {
        ...mapGetters(["permission", "userInfo"]),
        ids () {
            let ids = []
            this.selectionList.forEach((ele) => {
                ids.push(ele.id)
            })
            return ids.join(",")
        },
    },
    mounted () {
    },
    methods: {
        getType () {
            return this.type
        },
        //初始化数据
        initData () {
            var that = this
            //获取农地地块数据
            getLandList(this.userInfo.dept_id).then((res) => {
                if (res.data.code == 200) {
                    var landIdcolumn = that.findObject(that.option.column, "landId")
                    that.landList = res.data.data
                    landIdcolumn.dicData = res.data.data
                }
            })
        },
        beforeOpen (done, type) {
            if (["edit", "view"].includes(type)) {
                getDetail(this.form.id).then((res) => {
                    this.form = res.data.data
                })
            }
            done()
        },
        searchReset () {
            this.query = {}
            this.onLoad(this.page)
        },
        searchChange (params, done) {
            this.query = params
            this.page.currentPage = 1
            this.onLoad(this.page, params)
            done()
        },
        selectionChange (list) {
            this.selectionList = list
        },
        selectionClear () {
            this.selectionList = []
            this.$refs.crud.toggleSelection()
        },
        currentChange (currentPage) {
            this.page.currentPage = currentPage
        },
        sizeChange (pageSize) {
            this.page.pageSize = pageSize
        },
        refreshChange () {
            this.onLoad(this.page, this.query)
        },
        onLoad (page, params = {}) {
            this.loading = true
            var datas = this.$route.query.id
            params.landId = datas
            params['tenantId'] = this.userInfo.tenant_id
            params['deptId'] = this.userInfo.dept_id
            if (this.landId) {
                params['landId'] = this.landId
            }
          getListByNz(
                page.currentPage,
                page.pageSize,
                Object.assign(params, this.query)
            ).then((res) => {
                const data = res.data.data
                this.page.total = data.total
                this.data = data.records
                this.loading = false
                this.selectionClear()
            })
        },
    },
};
</script>
<style>
</style>
src/views/farmplant/farmplant.vue
@@ -42,7 +42,7 @@
        <detection v-if="detectionVisible" ref="detection"></detection>
    </basic-container>
</template>
<script>
import { getDetail, getList, update, remove, save } from "@/api/farmplant/farmplant"
import { getStrainList } from "@/api/farmplant/strain"
@@ -71,12 +71,14 @@
            },
            selectionList: [],
            landList: [],
            landId: 0,
            option: {
                tip: false,
                height: 520,
                editBtn: true,
                delBtn: true,
                viewBtn: true,
                header:false,
                menuWidth: 280,
                menuAlign: "center",
                align: "center",
@@ -183,6 +185,9 @@
                            value: "id"
                        },
                        labelWidth: 110,
                        change: (val) => {
                          this.landId = val.value
                        },
                        rules: [
                            {
                                required: true,
@@ -683,6 +688,11 @@
            this.onLoad(this.page, this.query)
        },
        onLoad (page, params = {}) {
            var datas = this.$route.query.id
            params.landId = datas
            if (this.landId) {
              params['landId'] = this.landId
            }
            params['tenantId'] = this.userInfo.tenant_id
            params['deptId'] = this.userInfo.dept_id
            this.loading = true
@@ -708,6 +718,6 @@
    },
};
</script>
<style>
</style>
</style>
src/views/farmplant/farmproductstock.vue
@@ -331,6 +331,7 @@
                user: "",
                region: "",
            },
            //销售字段
            form: {
                name: "",
                proid: "",
@@ -345,7 +346,7 @@
                createUser: "",
                saleBrand: "",
            },
            //出库
            //出库字段
            formCK: {
                name: "",
                proid: "",
@@ -392,6 +393,7 @@
                currentPage: 1,
                total: 0,
            },
            //销售配置
            option: {
                emptyBtn: false,
                submitBtn: false,
@@ -475,6 +477,7 @@
                    },
                ]
            },
            //库存损耗配置
            optionKC: {
                emptyBtn: false,
                submitBtn: false,
@@ -559,6 +562,7 @@
                    },
                ]
            },
            //加工配置
            optionJG: {
                emptyBtn: false,
                submitBtn: false,
@@ -655,6 +659,7 @@
                    },
                ]
            },
            //出库配置
            optionCK: {
                emptyBtn: false,
                submitBtn: false,
src/views/farmplant/process.vue
@@ -24,29 +24,32 @@
                    </div>
                    <!-- <div class="farm-img">
            <img src="../../../public/img/map.png" class="img" />
                    </div>-->
                    </div> -->
                    <div class="cai">{{ item.processName }}</div>
                    <div class="area">
                        库存量:
                        <span>{{ item.processNum }}</span>公斤
                        <span>{{ item.productInventoryNum }}</span>公斤
                    </div>
                    <!--          <div class="btn">-->
                    <!--            <el-button style="width: 65px;" plain size="small" @click="openWindow(0,item)">-->
                    <!--              <span style="color: #5abf78">销售</span></el-button-->
                    <!--            >-->
                    <!--            <el-button style="width: 65px;padding-left:8px" plain size="small" @click="openWindow(1,item)">-->
                    <!--              <span>库存损耗</span>-->
                    <!--            </el-button-->
                    <!--            >-->
                    <!--          </div>-->
                    <!--          <div class="btn">-->
                    <!--            <el-button style="width: 65px;" plain size="small"-->
                    <!--            ><span style="color: #5abf78">出库</span></el-button-->
                    <!--            >-->
                    <!--            <el-button style="width: 65px;" plain size="small" @click="openWindow(2,item)">-->
                    <!--              加工-->
                    <!--            </el-button>-->
                    <!--          </div>-->
                    <div class="area">
                        原材料:
                        <span>{{ item.strainName }}</span>
                    </div>
                        <div class="btn">
                            <el-button style="width: 65px;" plain size="small" @click="openWindow(0,item)">
                                <span style="color: #5abf78">销售</span>
                            </el-button>
                            <el-button style="width: 65px;padding-left:8px" plain size="small" @click="openWindow(1,item)">
                                <span>库存损耗</span>
                            </el-button>
                        </div>
                        <div class="btn">
                            <!-- <el-button style="width: 65px;" plain size="small" @click="openWidow(3,item)">
                                <span style="color: #5abf78">出库</span>
                            </el-button>
                            <el-button style="width: 65px;" plain size="small" @click="openWindow(2,item)">
                                加工
                            </el-button> -->
                        </div>
                </div>
            </div>
        </div>
@@ -64,7 +67,7 @@
        </div>
        <el-dialog
            title="农产品销售"
            title="加工产品销售"
            :modal-append-to-body="false"
            :append-to-body="true"
            :close-on-click-modal="false"
@@ -114,9 +117,9 @@
                </template>
            </avue-form>
        </el-dialog>
        <!-- 库存损耗 -->
        <el-dialog
            title="农产品库存损耗"
            title="加工产品库存损耗"
            :modal-append-to-body="false"
            :append-to-body="true"
            :close-on-click-modal="false"
@@ -149,6 +152,7 @@
            </avue-form>
        </el-dialog>
        <!-- 加工产品 -->
        <el-dialog
            title="加工产品"
            :modal-append-to-body="false"
@@ -193,12 +197,14 @@
</template>
<script>
import {
    getList,
} from "@/api/process/process"
//获取加工产品库存数据
import{
    getPage,
} from "@/api/processinv/processinv"
//向销售表和损耗表中添加数据
import {
    add, addKC
    insert,insertKC
} from "@/api/sale/sale"
import {
@@ -215,6 +221,7 @@
                user: "",
                region: "",
            },
            //销售字段
            form: {
                name: "",
                proid: "",
@@ -228,6 +235,9 @@
                salePrice: "",
                createUser: "",
                saleBrand: "",
                processName:"",
                weight:"",
            },
            //损耗字段
            formKC: {
@@ -239,6 +249,8 @@
                remarks: "",
                reason: "0",
                lossTime: "",
                processName:"",
            },
            //加工字段
            formJG: {
@@ -261,20 +273,21 @@
                currentPage: 1,
                total: 0,
            },
            //销售配置
            option: {
                emptyBtn: false,
                submitBtn: false,
                gutter: 30,
                column: [
                    {
                        label: "种养品种",
                        prop: "strainName",
                        label: "产品",
                        prop: "processName",
                        span: 24,
                        disabled: true,
                        rules: [
                            {
                                required: true,
                                message: "请输入种养品种",
                                message: "请输入产品",
                                trigger: "blur",
                            },
                        ],
@@ -344,6 +357,7 @@
                    },
                ]
            },
            //库存损耗配置
            optionKC: {
                emptyBtn: false,
                submitBtn: false,
@@ -351,7 +365,7 @@
                column: [
                    {
                        label: "损耗品种",
                        prop: "strainName",
                        prop: "processName",
                        span: 24,
                        disabled: true,
                        rules: [
@@ -428,6 +442,7 @@
                    },
                ]
            },
            //加工配置
            optionJG: {
                emptyBtn: false,
                submitBtn: false,
@@ -524,6 +539,84 @@
                    },
                ]
            },
            //出库配置
            optionCK: {
                emptyBtn: false,
                submitBtn: false,
                gutter: 30,
                column: [
                    {
                        label: "出库品种",
                        prop: "strainName",
                        span: 24,
                        disabled: true,
                        rules: [
                            {
                                required: true,
                                message: "请输入出库品种",
                                trigger: "blur",
                            },
                        ],
                    },
                    {
                        label: "出库时间",
                        prop: "saleTime",
                        type: "date",
                        span: 24,
                        format: "yyyy-MM-dd",
                        valueFormat: "yyyy-MM-dd",
                        rules: [
                            {
                                required: true,
                                message: "请选择出库时间",
                                trigger: "blur",
                            },
                        ],
                    },
                    {
                        label: "出库数量",
                        prop: "saleNum",
                        type: "number",
                        span: 24,
                        rules: [
                            {
                                required: true,
                                message: "请输入出库数量",
                                trigger: "blur",
                            },
                        ],
                    },
                    {
                        label: "出库去向",
                        prop: "saleDestination",
                        span: 24,
                        rules: [
                            {
                                required: true,
                                message: "请选择出库去向",
                                trigger: "blur",
                            },
                        ],
                    },
                    {
                        label: "备注",
                        prop: "remarks",
                        span: 24,
                    },
                    {
                        label: "操作人",
                        prop: "name",
                        span: 24,
                        rules: [
                            {
                                required: true,
                                message: "请输入操作人",
                                trigger: "blur",
                            },
                        ],
                    },
                ]
            },
            selectionList: [],
            data: [],
        }
@@ -557,11 +650,12 @@
        onSubmit () {
            console.log("submit!")
        },
        //销售表单提交
        submitSole () {
            var that = this
            this.$refs.form.validate((vaild, done) => {
                if (vaild) {
                    add(this.form).then(() => {
                    insert(this.form).then(() => {
                        this.onLoad(this.page)
                        this.$message({
                            type: "success",
@@ -579,7 +673,7 @@
                }
            })
        },
        //加工产品
        //加工表单提交
        submitJGloss () {
            var that = this
            this.$refs.form.validate((vaild, done) => {
@@ -602,11 +696,12 @@
                }
            })
        },
        //库存损耗表单提交
        submitKCloss () {
            var that = this
            this.$refs.form.validate((vaild, done) => {
                if (vaild) {
                    addKC(this.formKC).then(() => {
                    insertKC(this.formKC).then(() => {
                        this.onLoad(this.page)
                        this.$message({
                            type: "success",
@@ -643,26 +738,30 @@
            // });
        },
        openWindow (index, data) {
            if (index == 0) {
            if (index == 0) {   //销售
                this.form.name = this.userInfo.nick_name
                this.form.createUser = this.userInfo.user_id
                this.form.weight = data.weight
                this.form.weight = data.productInventoryNum
                this.form.proid = data.id
                this.form.landId = data.landId
                this.form.strainId = data.strainId
                this.form.strainName = data.strainName
                this.form.processName = data.processName
                this.visible = true
            } else if (index == 1) {
            } else if (index == 1) {    //库存损耗
                this.formKC.name = this.userInfo.nick_name
                this.formKC.createUser = this.userInfo.user_id
                this.formKC.weight = data.weight
                this.formKC.weight = data.productInventoryNum
                this.formKC.proid = data.id
                this.formKC.landId = data.landId
                this.formKC.strainId = data.strainId
                this.formKC.strainName = data.strainName
                this.formKC.processName = data.processName
                this.visibleKC = true
            }
            else if (index == 2) {
            else if (index == 2) {  //加工
                this.formJG.name = this.userInfo.nick_name
                this.formJG.createUser = this.userInfo.user_id
                this.formJG.proid = data.id
@@ -673,17 +772,20 @@
                this.visibleJG = true
            }
        },
        //销售
        cleanData () {
            var that = this
            that.form.saleDestination = ""
            that.$refs.form.resetFields()
            that.visible = false
        },
        //库存
        cleanKCData () {
            var that = this
            that.$refs.form.resetFields()
            that.visibleKC = false
        },
        //加工
        cleanJGData () {
            var that = this
            that.$refs.form.resetFields()
@@ -700,7 +802,7 @@
        onLoad (page, params = {}) {
            params['tenantId'] = this.userInfo.tenant_id
            params['deptId'] = this.userInfo.dept_id
            getList(
            getPage(
                page.currentPage,
                page.pageSize,
                Object.assign(params, this.query)
src/views/farmplant/processlist.vue
New file
@@ -0,0 +1,150 @@
<template>
  <basic-container>
        <avue-crud
            :option="option"
            :table-loading="loading"
            :data="data"
            ref="crud"
            v-model="form"
            :permission="permissionList"
            :before-open="beforeOpen"
            :page.sync="page"
            @search-change="searchChange"
            @search-reset="searchReset"
            @current-change="currentChange"
            @size-change="sizeChange"
            @refresh-change="refreshChange"
            @on-load="onLoad"
            @row-del="rowDel">
        </avue-crud>
    </basic-container>
</template>
<script>
import { getList,remove } from "@/api/process/process"
export default {
    data () {
        return {
            visible: true,
            form: {},
            query: {},
            loading: true,
            excelBox: false,
            page: {
                pageSize: 10,
                currentPage: 1,
                total: 0,
            },
            selectionList: [],
            align: "center",
            menu: true,
            option: {
                tip: false,
                searchShow: true,
                searchMenuSpan: 6,
                height: 520,
                delBtn: true,
                delBtnText:'删除',
                delBtnIcon:'el-icon-delete',
                editBtn:false,
                menuWidth: 200,
                menuAlign: "center",
                align: "center",
                selection: false,
                showSummary: true,
                indexFixed: false,
                selectionFixed: false,
                expandFixed: false,
                menuFixed: false,
                menu: true,
                column: [
                    {
                        label: "品种",
                        prop: "strainId",
                        search: true,
                        hide: true,
                        display: false,
                        type: "select",
                        dicUrl: 'api/strain/strain-tree',
                        props: {
                            label: "strainName",
                            value: "id"
                        }
                    },
                    {
                        label:"品种",
                        prop:"strainName"
                    },
                    {
                        label:"加工数量",
                        prop:"saleNum"
                    },
                    {
                        label: "产品",
                        prop: "processName",
                    },
                    {
                        label: "产品数量",
                        prop: "processNum"
                    },
                    {
                        label: "加工时间",
                        prop: "saleTime",
                    },
                ],
            },
            data: [],
        }
    },
    methods: {
        currentChange (currentPage) {
            this.page.currentPage = currentPage
        },
        sizeChange (pageSize) {
            this.page.pageSize = pageSize
        },
        refreshChange () {
            this.onLoad(this.page, this.query)
        },
        onLoad (page, params = {}) {
            this.loading = true
            getList(page.currentPage, page.pageSize, Object.assign(params, this.query)).then((res) => {
                if (res.data.code == 200) {
                    this.data = res.data.data.records
                    this.page.total = res.data.data.total
                    this.loading = false
                }
            })
        },
        searchReset () {
            this.query = {}
            this.onLoad(this.page)
        },
        searchChange (params, done) {
            this.query = params
            this.page.currentPage = 1
            this.onLoad(this.page, params)
            done()
        },
        rowDel (row) {
            this.$confirm("确定将选择数据删除?", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning"
            }).then(() => {
                    return remove(row.id)
                }).then((res) => {
                    this.onLoad(this.page)
                    this.$message({
                        type: "success",
                        message: "操作成功!"
                    })
                })
        },
    }
}
</script>
<style>
</style>
src/views/land/LandDetail.vue
@@ -2,7 +2,8 @@
    <div class="wraaper-box farming-detail-box">
        <div class="dd">
            <div class="da">
                <div class="land-img" @click="mod(usePolygons)">
<!--                <div class="land-img" @click="mod(usePolygons)">-->
                <div class="land-img">
                    <img :src="url" class="landimg" />
                </div>
                <div class="cent">
@@ -15,8 +16,9 @@
                <div class="edit">
                    <el-button @click="btnGrounpShow = !btnGrounpShow" icon="el-icon-menu"></el-button>
                    <div v-show="btnGrounpShow" class="btn-grounp" @click="DelLand(delId)">
                        <el-button>删除地块</el-button>
                    <div v-show="btnGrounpShow" class="btn-grounp">
                        <el-button @click="DelLand(delId)">删除地块</el-button>
                        <el-button size="small" @click="land">编辑地块</el-button>
                    </div>
                </div>
            </div>
@@ -34,24 +36,29 @@
                    <el-tab-pane label="采收记录" name="tab3">
                        <recovery></recovery>
                    </el-tab-pane>
                    <!-- 农资记录 -->
                    <el-tab-pane label="农资使用记录" name="tab4">
                      <stockUseInfo></stockUseInfo>
                    </el-tab-pane>
                </el-tabs>
            </div>
        </div>
        <el-dialog
            title="地块位置"
            class="current-map-box"
            :visible.sync="gradeBoxVisible1"
            :modal="true"
            :modal-append-to-body="true"
            :append-to-body="true"
            :close-on-click-modal="false"
            :close-on-press-escape="false"
            :before-close="dialogBeforeClose"
        >
            <getMapDataInThere ref="getMapData" id="getMapData" @setMapData="setMapData"></getMapDataInThere>
            <el-button class="save" type="success" @click="upLand()">保存</el-button>
        </el-dialog>
<!--        <el-dialog-->
<!--            title="地块位置"-->
<!--            class="current-map-box"-->
<!--            :visible.sync="gradeBoxVisible1"-->
<!--            :modal="true"-->
<!--            :modal-append-to-body="true"-->
<!--            :append-to-body="true"-->
<!--            :close-on-click-modal="false"-->
<!--            :close-on-press-escape="false"-->
<!--            :before-close="dialogBeforeClose"-->
<!--        >-->
<!--            <getMapDataInThere ref="getMapData" id="getMapData" @setMapData="setMapData"></getMapDataInThere>-->
<!--            <el-button class="save" type="success" @click="upLand()">保存</el-button>-->
<!--        </el-dialog>-->
        <landUpdate v-if="landVisible" ref="landUpdate" id="landUpdate"></landUpdate>
    </div>
</template>
@@ -60,14 +67,18 @@
import farmplant from "@/views/farmplant/farmplant.vue"
import farming from "@/views/farm/farmingrecord.vue"
import recovery from "@/views/recovery/recovery.vue"
import stockUseInfo from "@/views/farm/stockUseInfo.vue"
import getMapDataInThere from "./getMapDataInThere.vue"
import { remove, update } from "@/api/land/land"
import {getList, remove, update} from "@/api/land/land"
import landUpdate from "./landUpdate"
export default {
    components: {
        farmplant,
        farming,
        recovery,
        stockUseInfo,
        landUpdate,
        getMapDataInThere
    },
    data () {
@@ -84,6 +95,7 @@
            dic: "",
            formC: {},
            gradeBoxVisible1: false,
            landVisible: false,
            option2: {
                index: true,
                tip: false,
@@ -114,21 +126,24 @@
        ...mapGetters(["userInfo", "permission", "polygons"]),
    },
    created () {
        this.url = this.$route.query.url
        this.landName = this.$route.query.landName
        this.dic = this.$route.query.dic
        this.landArea = this.$route.query.landArea
        this.dica = this.$route.query.dica
        this.deptname = this.$route.query.deptname
        this.delId = this.$route.query.id
        this.landUnit = this.$route.query.landUnit
        // this.form = res.data.data;
        this.usePolygons = this.$route.query.landRange
            .split("POLYGON((")[1]
            .split("))")[0]
            .split(",")
    },
    methods: {
        //圈地
        land () {
          this.landVisible = true
          this.$nextTick(() => {
            this.$refs.landUpdate.init()
          })
        },
        openLandUpdate (page, params = {}) {
          console.log('11111111111refreshOnLoad')
          // getList(1, 10, Object.assign(params, this.query)).then(res => {
          //   const data = res.data.data
          //
          //   this.farmPlanList = data.records
          // })
        },
        mod (usePolygons) {
            this.gradeBoxVisible1 = true
            this.$refs.getMapData.draw(usePolygons)
@@ -195,7 +210,26 @@
            // });
        }
    },
    watch: {},
    watch: {
      '$route.query': {
        immediate: true,
        handler(newData, oldData) {
          this.url = this.$route.query.url
          this.landName = this.$route.query.landName
          this.dic = this.$route.query.dic
          this.landArea = this.$route.query.landArea
          this.dica = this.$route.query.dica
          this.deptname = this.$route.query.deptname
          this.delId = this.$route.query.id
          this.landUnit = this.$route.query.landUnit
          // this.form = res.data.data;
          this.usePolygons = this.$route.query.landRange
            .split("POLYGON((")[1]
            .split("))")[0]
            .split(",")
        }
      }
    },
}
</script>
src/views/land/cs.vue
@@ -165,6 +165,13 @@
            this.onLoad(this.page)
        },
        landInfo (item) {
          var arr = [];
          this.$store.state.tags.tagList.forEach((item) => {
            if (item.label != "地块详情") {
              arr.push(item);
            }
          });
          this.$store.state.tags.tagList = arr;
            this.$router.push({
                path: `/LandDetail`,
                query: item,
@@ -173,7 +180,6 @@
        onLoad (page, params = {}) {
            getList(1, 10, Object.assign(params, this.query)).then(res => {
                const data = res.data.data
                this.farmPlanList = data.records
            })
        },
src/views/land/getMapDataInThere.vue
@@ -18,6 +18,12 @@
import MapInThere from "@/components/map/mainInThere.vue"
export default {
    name: "getMapData",
    props: {
      currentPolygons: {
        type: Array,
        default: []
      }
    },
    components: {
        MapInThere,
    },
@@ -38,6 +44,16 @@
                this.isCheck = false
            }
        },
      currentPolygons: {
          immediate: true,
        handler (newData, oldData) {
            console.log(newData, 5656)
            if (newData.length > 0) {
              this.draw(newData)
            }
        },
      }
    },
    data () {
        return {
@@ -64,6 +80,8 @@
    methods: {
        draw (usePolygons) {
          console.log(usePolygons, 456)
            let arr = []
            usePolygons.forEach(item => {
src/views/land/landUpdate.vue
New file
@@ -0,0 +1,226 @@
<template>
    <el-dialog
        :title="title"
        :modal-append-to-body="false"
        :append-to-body="true"
        :close-on-click-modal="false"
        width="60%"
        :visible.sync="visible"
    >
        <avue-form ref="form" v-model="form" :option="option" @submit="submit">
            <!-- 地图插入 -->
            <template slot-scope="{ type, disabled }" slot="line">
                <getMapDataInThere :currentPolygons="form.landRange" ref="getMapData" id="getMapData" @setMapData="setMapData"></getMapDataInThere>
            </template>
        </avue-form>
    </el-dialog>
</template>
<script>
import { mapGetters } from "vuex"
import { getFarmList } from "@/api/farm/farm"
import { getDeptTree } from "@/api/system/dept"
import {update} from "@/api/land/land"
import website from '@/config/website'
import getMapDataInThere from "./getMapDataInThere.vue"
export default {
    components: {
        getMapDataInThere
    },
    data () {
        return {
            title: "编辑地块",
            form: {},
            isFarmNameCk:false,
            option: {
                emptyBtn: false,
                submitText: "保存",
                gutter: 30,
                farmName:'',
                column: [
                    {
                        label: "地块名称",
                        prop: "landName",
                        rules: [{
                            required: true,
                            message: "请输入地块名称",
                            trigger: "blur"
                        }]
                    },
                    {
                        label: "所属农场",
                        prop: "farmId",
                        type: "tree",
                        dicData: [],
                        props: {
                            label: "farmName",
                            value: "id"
                        },
                        slot: true,
                        click:function (value){
                            this.isFarmNameCk = true
                        },
                        rules: [{
                            required: true,
                            message: "请选择所属农场",
                            trigger: "click"
                        }]
                    },
                    {
                        label: "地块类型",
                        type: "select",
                        prop: "landType",
                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=land",
                        props: {
                            label: "dictValue",
                            value: "dictKey"
                        },
                        dataType: "number",
                        rules: [{
                            required: true,
                            message: "请选择地块类型",
                            trigger: "blur"
                        }]
                    },
                    {
                        label: "面积单位",
                        prop: "landUnit",
                        value: "0",
                        type: "select",
                        dicUrl: "/api/blade-system/dict-biz/dictionary?code=landunit",
                        props: {
                            label: "dictValue",
                            value: "dictKey"
                        },
                        dataType: "number",
                        span: 6,
                    },
                    {
                        label: "地块展示",
                        labelWidth: "0",
                        prop: "line",
                        className: "mapClass",
                        span: 24,
                        formslot: true,
                    }
                ],
            },
            visible: false,
        }
    },
    computed: {
        ...mapGetters(["userInfo", "permission", "polygons"]),
    },
    mounted () {
        this.initData(this.userInfo.tenant_id)
    },
    methods: {
        initData (tenantId) {
            const data = {
                deptId: this.userInfo.dept_id
            }
            getFarmList(data).then(res => {
                const column = this.findObject(this.option.column, "farmId")
                column.dicData = res.data.data
            })
        },
        //初始化
        init () {
            //清空面的数据
            this.$store.commit('clear_polygon')
            //计算当前时间
            this.visible = true
            this.form.landName = this.$route.query.landName
            this.form.id = this.$route.query.id
            this.form.landArea = this.$route.query.landArea
            this.form.farmId = this.$route.query.farmId
            this.form.$farmId = this.$route.query.deptname
            this.form.landUnit = this.$route.query.landUnit
            this.form.landType = this.$route.query.landType
            this.form.landRange = this.$route.query.landRange
            this.form.landRange = this.form.landRange.replace(/POLYGON\(\(/g, '')
            this.form.landRange = this.form.landRange.replace(/\)\)/g, '')
            this.form.landRange = this.form.landRange.split(',')
        },
        // 表单提交
        submit (row, loading) {
            row['deptId'] = this.userInfo.dept_id
            var that = this
            if (this.polygons.length == 0) {
                //没有面的数据
                this.$refs.getMapData.isCheck = true
                loading()
                return
            } else {
                //如果有值,空间坐标转换
                let pol = this.polygons
                let polLength = this.polygons.length - 1
                let usePolygons = ""
                for (let k in pol) {
                    usePolygons += pol[k].lng + "," + pol[k].lat
                    if (k != polLength) {
                        usePolygons += ";"
                    }
                }
                //设置坐标点
                row.userId = this.userInfo.user_id
                row.landRange = usePolygons
            }
            update(row).then(() => {
                that.$emit("refreshOnLoad")
                that.$refs.form.validate((vaild,done)=>{
                    if (vaild) {
                        that.visible = false
                        this.$message({
                          type: "success",
                          message: "操作成功!"
                        })
                      done()
                      this.form.landRange = this.$route.query.landRange
                      this.form.dica = row.$landUnit
                      this.form.dic = row.$landType
                      this.form.deptname = row.$farmId
                      var arr = [];
                      this.$store.state.tags.tagList.forEach((item) => {
                        if (item.label != "地块详情") {
                          arr.push(item);
                        }
                      });
                      this.$store.state.tags.tagList = arr;
                      this.$router.replace({  path: `/LandDetail`, query: this.form  });
                    }
                })
              }, error => {
                  loading()
                  window.console.log(error)
              })
        },
        setMapData (val) {
            this.LineData = val[0]
            this.PointData = val[1]
        },
    },
};
</script>
<style lang="scss" scoped>
.mapClass div label {
    display: none;
}
#getMapData {
    width: 90%;
    position: relative;
    height: 400px;
    top: 10px;
    left: 90px;
}
</style>
src/views/recovery/recovery.vue
@@ -57,6 +57,7 @@
            },
            selectionList: [],
            landList: [],
            landId:0,
            option: {
                tip: false,
                height: 520,
@@ -64,6 +65,7 @@
                delBtn: true,
                viewBtn: false,
                addBtn: false,
                header:false,
                menuWidth: 200,
                menuAlign: "center",
                align: "center",
@@ -110,6 +112,9 @@
                        props: {
                            label: "landName",
                            value: "id"
                        },
                        change: (val) => {
                          this.landId = val.value
                        },
                        rules: [
                            {
@@ -427,6 +432,11 @@
            this.onLoad(this.page, this.query)
        },
        onLoad (page, params = {}) {
            var datas = this.$route.query.id
            params.landId = datas
            if (this.landId) {
              params['landId'] = this.landId
            }
            params['tenantId'] = this.userInfo.tenant_id
            params['deptId'] = this.userInfo.dept_id
            this.loading = true