From 40bf9781b1b2f42dbf2895f779d110276fe626bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?lemon=E6=A9=AA?= <17633066053@163.com> Date: Fri, 4 Jun 2021 17:35:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E4=BA=9B=E5=8F=91?= =?UTF-8?q?=E7=8E=B0=E7=9A=84=E9=97=AE=E9=A2=98=EF=BC=8C=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=A7=92=E6=9D=80=E6=B4=BB=E5=8A=A8=E8=AE=BE=E7=BD=AE=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E6=83=A0=E5=88=B8=E5=8A=A8=E6=80=81=E6=97=B6=E9=97=B4?= =?UTF-8?q?=20=E4=BB=A5=E5=8F=8A=20=E7=B2=BE=E5=87=86=E5=8F=91=E5=9C=88?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=92=8C=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=9B=B4?= =?UTF-8?q?=E6=92=AD=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- manager/package.json | 3 +- manager/src/api/promotion.js | 6 + manager/src/config/index.js | 12 +- manager/src/router/router.js | 6 + manager/src/views/home/home.vue | 6 +- .../lili-floor-renovation/floorList copy.vue | 254 ------- .../lili-floor-renovation/wap/advertising.vue | 21 +- .../wap/alertAdvertising.vue | 13 +- .../views/lili-floor-renovation/wap/btn.js | 21 - .../views/lili-floor-renovation/wap/btn.vue | 147 ---- .../views/lili-floor-renovation/wap/index.js | 4 +- .../lili-floor-renovation/wap/navbar.vue | 6 +- manager/src/views/member/list/index.vue | 43 +- manager/src/views/promotion/coupon/coupon.vue | 137 ++-- .../views/promotion/coupon/couponPublish.vue | 103 ++- .../views/promotion/coupon/couponSpecify.vue | 172 +++++ .../src/views/promotion/seckill/seckill.vue | 160 ++--- .../views/promotion/seckill/setupSeckill.vue | 151 ++++ .../src/views/seller/shop/shopOperation.vue | 1 - manager/src/views/sys/message/sms.vue | 10 +- .../_downloadjs@1.4.7@downloadjs/LICENSE.md | 21 - .../_downloadjs@1.4.7@downloadjs/README.md | 123 ---- .../_downloadjs@1.4.7@downloadjs/download.js | 167 ----- .../download.min.js | 2 - .../_downloadjs@1.4.7@downloadjs/package.json | 42 -- .../JsonExcel.vue | 360 ---------- .../LICENSE | 21 - .../README.md | 321 --------- .../dist/vue-json-excel.cjs.js | 654 ----------------- .../dist/vue-json-excel.esm.js | 652 ----------------- .../dist/vue-json-excel.umd.js | 660 ------------------ .../example-multi-line.png | Bin 12028 -> 0 bytes .../node_modules/downloadjs | 1 - .../package.json | 47 -- .../rollup.config.js | 27 - node_modules/downloadjs | 1 - node_modules/vue-json-excel | 1 - package.json | 5 - seller/src/config/index.js | 10 +- seller/src/views/promotion/live/liveGoods.vue | 14 +- seller/src/views/statistics/traffic.vue | 8 +- 41 files changed, 598 insertions(+), 3815 deletions(-) delete mode 100644 manager/src/views/lili-floor-renovation/floorList copy.vue delete mode 100644 manager/src/views/lili-floor-renovation/wap/btn.js delete mode 100644 manager/src/views/lili-floor-renovation/wap/btn.vue create mode 100644 manager/src/views/promotion/coupon/couponSpecify.vue create mode 100644 manager/src/views/promotion/seckill/setupSeckill.vue delete mode 100644 node_modules/_downloadjs@1.4.7@downloadjs/LICENSE.md delete mode 100644 node_modules/_downloadjs@1.4.7@downloadjs/README.md delete mode 100644 node_modules/_downloadjs@1.4.7@downloadjs/download.js delete mode 100644 node_modules/_downloadjs@1.4.7@downloadjs/download.min.js delete mode 100644 node_modules/_downloadjs@1.4.7@downloadjs/package.json delete mode 100755 node_modules/_vue-json-excel@0.3.0@vue-json-excel/JsonExcel.vue delete mode 100755 node_modules/_vue-json-excel@0.3.0@vue-json-excel/LICENSE delete mode 100755 node_modules/_vue-json-excel@0.3.0@vue-json-excel/README.md delete mode 100755 node_modules/_vue-json-excel@0.3.0@vue-json-excel/dist/vue-json-excel.cjs.js delete mode 100755 node_modules/_vue-json-excel@0.3.0@vue-json-excel/dist/vue-json-excel.esm.js delete mode 100755 node_modules/_vue-json-excel@0.3.0@vue-json-excel/dist/vue-json-excel.umd.js delete mode 100755 node_modules/_vue-json-excel@0.3.0@vue-json-excel/example-multi-line.png delete mode 120000 node_modules/_vue-json-excel@0.3.0@vue-json-excel/node_modules/downloadjs delete mode 100644 node_modules/_vue-json-excel@0.3.0@vue-json-excel/package.json delete mode 100755 node_modules/_vue-json-excel@0.3.0@vue-json-excel/rollup.config.js delete mode 120000 node_modules/downloadjs delete mode 120000 node_modules/vue-json-excel delete mode 100644 package.json diff --git a/manager/package.json b/manager/package.json index feb7da85..e724ff29 100644 --- a/manager/package.json +++ b/manager/package.json @@ -27,7 +27,6 @@ "print-js": "^1.0.63", "qrcodejs2": "0.0.2", "quill": "^1.3.7", - "vue-qr": "^2.3.0", "sass-loader": "^8.0.2", "sockjs-client": "^1.4.0", "stompjs": "^2.3.3", @@ -40,8 +39,10 @@ "vue-clipboard2": "^0.3.0", "vue-cropper": "^0.4.9", "vue-i18n": "^8.15.1", + "vue-json-excel": "^0.3.0", "vue-json-pretty": "^1.4.1", "vue-lazyload": "^1.3.3", + "vue-qr": "^2.3.0", "vue-router": "^3.1.3", "vuedraggable": "^2.23.2", "vuex": "^3.4.0", diff --git a/manager/src/api/promotion.js b/manager/src/api/promotion.js index 517a9ed8..4e180cb3 100644 --- a/manager/src/api/promotion.js +++ b/manager/src/api/promotion.js @@ -17,6 +17,12 @@ export const whetherStar = params => { return getRequest(`/broadcast/studio/id/${params.id}&recommend=${params.recommend}`); }; +// 添加优惠券活动 +export const addCouponActivity = params => { + return postRequest(`/promotion/couponActivity/addCouponActivity`,params); +}; + + // 获取店铺直播间列表 export const getLiveList = params => { return getRequest("/broadcast/studio", params); diff --git a/manager/src/config/index.js b/manager/src/config/index.js index 9f868153..8b6b162f 100644 --- a/manager/src/config/index.js +++ b/manager/src/config/index.js @@ -17,10 +17,14 @@ export default { * @description api请求基础路径 */ api_dev: { - common: "https://common-api.pickmall.cn", - buyer: "https://buyer-api.pickmall.cn", - seller: "https://store-api.pickmall.cn", - manager: "https://admin-api.pickmall.cn" + // common: "https://common-api.pickmall.cn", + // buyer: "https://buyer-api.pickmall.cn", + // seller: "https://store-api.pickmall.cn", + // manager: "https://admin-api.pickmall.cn" + common: 'http://192.168.0.109:8890', + buyer: 'http://192.168.0.109:8888', + seller: 'http://192.168.0.109:8889', + manager: 'http://192.168.0.109:8887' }, api_prod: { common: "https://common-api.pickmall.cn", diff --git a/manager/src/router/router.js b/manager/src/router/router.js index 5f9c9e54..c08baced 100644 --- a/manager/src/router/router.js +++ b/manager/src/router/router.js @@ -224,6 +224,12 @@ export const otherRouter = { name: "add-platform-coupon", component: () => import("@/views/promotion/coupon/couponPublish.vue") }, + { + path: "promotion/add-coupon-specify", + title: "精准发劵", + name: "add-coupon-specify", + component: () => import("@/views/promotion/coupon/couponSpecify.vue") + }, { path: "promotion/edit-platform-coupon", title: "编辑平台优惠券", diff --git a/manager/src/views/home/home.vue b/manager/src/views/home/home.vue index 3f340a8c..9005f51a 100644 --- a/manager/src/views/home/home.vue +++ b/manager/src/views/home/home.vue @@ -211,10 +211,8 @@ import { homeStatistics, hotGoods, hotShops, getNoticePage } from "@/api/index"; import show from "./show.vue"; import * as API_Goods from "@/api/goods"; - import { Chart } from "@antv/g2"; import * as API_Member from "@/api/member"; -import Cookies from "js-cookie"; export default { name: "home", components: { @@ -502,11 +500,13 @@ export default { let data = this.chartList; data.forEach((item) => { + item.title = "历史在线人数"; + item.date = item.date.substring(5) + }); this.historyMemberChart.data(data); - console.error(data) this.historyMemberChart.tooltip({ showCrosshairs: true, shared: true, diff --git a/manager/src/views/lili-floor-renovation/floorList copy.vue b/manager/src/views/lili-floor-renovation/floorList copy.vue deleted file mode 100644 index 838f3b68..00000000 --- a/manager/src/views/lili-floor-renovation/floorList copy.vue +++ /dev/null @@ -1,254 +0,0 @@ - - - - - diff --git a/manager/src/views/lili-floor-renovation/wap/advertising.vue b/manager/src/views/lili-floor-renovation/wap/advertising.vue index a6b5c53b..adfe9a9e 100644 --- a/manager/src/views/lili-floor-renovation/wap/advertising.vue +++ b/manager/src/views/lili-floor-renovation/wap/advertising.vue @@ -8,7 +8,7 @@
- + @@ -16,7 +16,7 @@
全屏广告
- +
- \ No newline at end of file diff --git a/manager/src/views/lili-floor-renovation/wap/index.js b/manager/src/views/lili-floor-renovation/wap/index.js index c7aa1a99..37aa9768 100644 --- a/manager/src/views/lili-floor-renovation/wap/index.js +++ b/manager/src/views/lili-floor-renovation/wap/index.js @@ -1,5 +1,5 @@ import index from './index.vue' //首页 -import btn from './btn.vue' //按钮 + import advertising from './advertising.vue' //全屏活动 import alertAdvertising from './alertAdvertising.vue' //弹窗活动 @@ -7,7 +7,7 @@ import alertAdvertising from './alertAdvertising.vue' //弹窗活动 const templates = { index, - btn, + advertising, alertAdvertising } diff --git a/manager/src/views/lili-floor-renovation/wap/navbar.vue b/manager/src/views/lili-floor-renovation/wap/navbar.vue index a777e892..20be9547 100644 --- a/manager/src/views/lili-floor-renovation/wap/navbar.vue +++ b/manager/src/views/lili-floor-renovation/wap/navbar.vue @@ -67,11 +67,7 @@ export default { name: "index", selected: true, }, - { - title: "悬浮按钮", - name: "btn", - selected: false, - }, + { title: "全屏广告", name: "advertising", diff --git a/manager/src/views/member/list/index.vue b/manager/src/views/member/list/index.vue index 73d13435..fec0be21 100644 --- a/manager/src/views/member/list/index.vue +++ b/manager/src/views/member/list/index.vue @@ -21,11 +21,11 @@ - -
+ +
- + @@ -137,12 +137,14 @@ export default { loading: true, // 表单加载状态 addFlag: false, // modal显隐控制 updateRegion: false, // 地区 - addMemberForm: { // 添加用户表单 + addMemberForm: { + // 添加用户表单 mobile: "", username: "", password: "", }, - searchForm: { // 请求参数 + searchForm: { + // 请求参数 pageNumber: 1, pageSize: 10, order: "desc", @@ -152,7 +154,8 @@ export default { }, picModelFlag: false, // 选择图片 formValidate: {}, // 表单数据 - addRule: { // 验证规则 + addRule: { + // 验证规则 mobile: [ { required: true, message: "请输入手机号码" }, { @@ -229,6 +232,7 @@ export default { { props: { size: "small", + type: params.row.___selected ? "primary" : "", }, style: { marginRight: "5px", @@ -236,11 +240,11 @@ export default { }, on: { click: () => { - this.callback(params.row); + this.callback(params.row, params.index); }, }, }, - "选择" + params.row.___selected ? "已选择" : "选择" ), h( @@ -251,7 +255,8 @@ export default { size: "small", }, style: { - marginRight: "5px", display: this.selectedMember ? "none" : "block", + marginRight: "5px", + display: this.selectedMember ? "none" : "block", }, on: { click: () => { @@ -270,7 +275,8 @@ export default { ghost: true, }, style: { - marginRight: "5px", display: this.selectedMember ? "none" : "block", + marginRight: "5px", + display: this.selectedMember ? "none" : "block", }, on: { click: () => { @@ -308,9 +314,17 @@ export default { total: 0, // 表单数据总数 }; }, + props: { + // 是否为选中模式 + selectedMember: { + type: Boolean, + default: false, + }, + }, methods: { // 回调给父级 - callback(val) { + callback(val, index) { + val.___selected = !val.___selected; this.$emit("callback", val); }, init() { @@ -378,6 +392,9 @@ export default { API_Member.getMemberListData(this.searchForm).then((res) => { if (res.result.records) { this.loading = false; + res.result.records.forEach((item) => { + item.___selected = false; + }); this.data = res.result.records; this.total = res.result.total; } @@ -476,7 +493,7 @@ export default { /deep/ .ivu-table-wrapper { width: 100%; } -/deep/ .ivu-card{ +/deep/ .ivu-card { width: 100%; } .face { diff --git a/manager/src/views/promotion/coupon/coupon.vue b/manager/src/views/promotion/coupon/coupon.vue index 5ea885b3..c10a40a7 100644 --- a/manager/src/views/promotion/coupon/coupon.vue +++ b/manager/src/views/promotion/coupon/coupon.vue @@ -4,21 +4,10 @@
- + - @@ -26,66 +15,30 @@ - +
- + + - - diff --git a/manager/src/views/promotion/seckill/setupSeckill.vue b/manager/src/views/promotion/seckill/setupSeckill.vue new file mode 100644 index 00000000..9ad7c77b --- /dev/null +++ b/manager/src/views/promotion/seckill/setupSeckill.vue @@ -0,0 +1,151 @@ + + + + + diff --git a/manager/src/views/seller/shop/shopOperation.vue b/manager/src/views/seller/shop/shopOperation.vue index 05295e05..ccafc805 100644 --- a/manager/src/views/seller/shop/shopOperation.vue +++ b/manager/src/views/seller/shop/shopOperation.vue @@ -224,7 +224,6 @@ import memberLayout from "@/views/member/list/index"; import ossManage from "@/views/sys/oss-manage/ossManage"; import { getCategoryTree } from "@/api/goods"; import { shopDetail, shopAdd, shopEdit, getShopByMemberId } from "@/api/shops"; -import * as filters from "@/utils/filters"; import uploadPicInput from "@/views/my-components/lili/upload-pic-input"; import region from "@/views/lili-components/region"; import liliMap from "@/views/my-components/map/index"; diff --git a/manager/src/views/sys/message/sms.vue b/manager/src/views/sys/message/sms.vue index b863d8ee..3583b5f5 100644 --- a/manager/src/views/sys/message/sms.vue +++ b/manager/src/views/sys/message/sms.vue @@ -116,7 +116,7 @@
-
${table}
'; - let xlsData = ""; - const colspan = Object.keys(data[0]).length; - let _self = this; - - //Header - const header = this.header || this.$attrs.title; - if (header) { - xlsData += this.parseExtraData( - header, - '${data}' - ); - } - - //Fields - xlsData += ""; - for (let key in data[0]) { - xlsData += "" + key + ""; - } - xlsData += ""; - xlsData += ""; - - //Data - xlsData += ""; - data.map(function (item, index) { - xlsData += ""; - for (let key in item) { - xlsData += - "" + - _self.preprocessLongNum( - _self.valueReformattedForMultilines(item[key]) - ) + - ""; - } - xlsData += ""; - }); - xlsData += ""; - - //Footer - if (this.footer != null) { - xlsData += ""; - xlsData += this.parseExtraData( - this.footer, - '${data}' - ); - xlsData += ""; - } - - return xlsTemp - .replace("${table}", xlsData) - .replace("${worksheet}", this.worksheet); - }, - /* - jsonToCSV - --------------- - Transform json data into an CSV file. - */ - jsonToCSV(data) { - let _self = this; - var csvData = []; - - //Header - const header = this.header || this.$attrs.title; - if (header) { - csvData.push(this.parseExtraData(header, "${data}\r\n")); - } - - //Fields - for (let key in data[0]) { - csvData.push(key); - csvData.push(","); - } - csvData.pop(); - csvData.push("\r\n"); - //Data - data.map(function (item) { - for (let key in item) { - let escapedCSV = item[key] + ""; - // Escaped CSV data to string to avoid problems with numbers or other types of values - // this is controlled by the prop escapeCsv - if (_self.escapeCsv) { - escapedCSV = '="' + escapedCSV + '"'; // cast Numbers to string - if (escapedCSV.match(/[,"\n]/)) { - escapedCSV = '"' + escapedCSV.replace(/\"/g, '""') + '"'; - } - } - csvData.push(escapedCSV); - csvData.push(","); - } - csvData.pop(); - csvData.push("\r\n"); - }); - //Footer - if (this.footer != null) { - csvData.push(this.parseExtraData(this.footer, "${data}\r\n")); - } - return csvData.join(""); - }, - /* - getProcessedJson - --------------- - Get only the data to export, if no fields are set return all the data - */ - getProcessedJson(data, header) { - let keys = this.getKeys(data, header); - let newData = []; - let _self = this; - data.map(function (item, index) { - let newItem = {}; - for (let label in keys) { - let property = keys[label]; - newItem[label] = _self.getValue(property, item); - } - newData.push(newItem); - }); - - return newData; - }, - getKeys(data, header) { - if (header) { - return header; - } - - let keys = {}; - for (let key in data[0]) { - keys[key] = key; - } - return keys; - }, - /* - parseExtraData - --------------- - Parse title and footer attribute to the csv format - */ - parseExtraData(extraData, format) { - let parseData = ""; - if (Array.isArray(extraData)) { - for (var i = 0; i < extraData.length; i++) { - if (extraData[i]) - parseData += format.replace("${data}", extraData[i]); - } - } else { - parseData += format.replace("${data}", extraData); - } - return parseData; - }, - - getValue(key, item) { - const field = typeof key !== "object" ? key : key.field; - let indexes = typeof field !== "string" ? [] : field.split("."); - let value = this.defaultValue; - - if (!field) value = item; - else if (indexes.length > 1) - value = this.getValueFromNestedItem(item, indexes); - else value = this.parseValue(item[field]); - - if (key.hasOwnProperty("callback")) - value = this.getValueFromCallback(value, key.callback); - - return value; - }, - - /* - convert values with newline \n characters into
- */ - valueReformattedForMultilines(value) { - if (typeof value == "string") return value.replace(/\n/gi, "
"); - else return value; - }, - preprocessLongNum(value) { - if (this.stringifyLongNum) { - if (String(value).startsWith("0x")) { - return value; - } - if (!isNaN(value) && value != "") { - if (value > 99999999999 || value < 0.0000000000001) { - return '="' + value + '"'; - } - } - } - return value; - }, - getValueFromNestedItem(item, indexes) { - let nestedItem = item; - for (let index of indexes) { - if (nestedItem) nestedItem = nestedItem[index]; - } - return this.parseValue(nestedItem); - }, - - getValueFromCallback(item, callback) { - if (typeof callback !== "function") return this.defaultValue; - const value = callback(item); - return this.parseValue(value); - }, - parseValue(value) { - return value || value === 0 || typeof value === "boolean" - ? value - : this.defaultValue; - }, - base64ToBlob(data, mime) { - let base64 = window.btoa(window.unescape(encodeURIComponent(data))); - let bstr = atob(base64); - let n = bstr.length; - let u8arr = new Uint8ClampedArray(n); - while (n--) { - u8arr[n] = bstr.charCodeAt(n); - } - return new Blob([u8arr], { type: mime }); - }, - }, // end methods -}; - -function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier -/* server only */ -, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) { - if (typeof shadowMode !== 'boolean') { - createInjectorSSR = createInjector; - createInjector = shadowMode; - shadowMode = false; - } // Vue.extend constructor export interop. - - - var options = typeof script === 'function' ? script.options : script; // render functions - - if (template && template.render) { - options.render = template.render; - options.staticRenderFns = template.staticRenderFns; - options._compiled = true; // functional template - - if (isFunctionalTemplate) { - options.functional = true; - } - } // scopedId - - - if (scopeId) { - options._scopeId = scopeId; - } - - var hook; - - if (moduleIdentifier) { - // server build - hook = function hook(context) { - // 2.3 injection - context = context || // cached call - this.$vnode && this.$vnode.ssrContext || // stateful - this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional - // 2.2 with runInNewContext: true - - if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { - context = __VUE_SSR_CONTEXT__; - } // inject component styles - - - if (style) { - style.call(this, createInjectorSSR(context)); - } // register component module identifier for async chunk inference - - - if (context && context._registeredComponents) { - context._registeredComponents.add(moduleIdentifier); - } - }; // used by ssr in case component is cached and beforeCreate - // never gets called - - - options._ssrRegister = hook; - } else if (style) { - hook = shadowMode ? function () { - style.call(this, createInjectorShadow(this.$root.$options.shadowRoot)); - } : function (context) { - style.call(this, createInjector(context)); - }; - } - - if (hook) { - if (options.functional) { - // register for functional component in vue file - var originalRender = options.render; - - options.render = function renderWithStyleInjection(h, context) { - hook.call(context); - return originalRender(h, context); - }; - } else { - // inject component registration as beforeCreate hook - var existing = options.beforeCreate; - options.beforeCreate = existing ? [].concat(existing, hook) : [hook]; - } - } - - return script; -} - -var normalizeComponent_1 = normalizeComponent; - -/* script */ -const __vue_script__ = script; - -/* template */ -var __vue_render__ = function() { - var _vm = this; - var _h = _vm.$createElement; - var _c = _vm._self._c || _h; - return _c( - "div", - { attrs: { id: _vm.idName }, on: { click: _vm.generate } }, - [_vm._t("default", [_vm._v(" Download " + _vm._s(_vm.name) + " ")])], - 2 - ) -}; -var __vue_staticRenderFns__ = []; -__vue_render__._withStripped = true; - - /* style */ - const __vue_inject_styles__ = undefined; - /* scoped */ - const __vue_scope_id__ = undefined; - /* module identifier */ - const __vue_module_identifier__ = undefined; - /* functional template */ - const __vue_is_functional_template__ = false; - /* style inject */ - - /* style inject SSR */ - - - - var JsonExcel = normalizeComponent_1( - { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, - __vue_inject_styles__, - __vue_script__, - __vue_scope_id__, - __vue_is_functional_template__, - __vue_module_identifier__, - undefined, - undefined - ); - -module.exports = JsonExcel; diff --git a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/dist/vue-json-excel.esm.js b/node_modules/_vue-json-excel@0.3.0@vue-json-excel/dist/vue-json-excel.esm.js deleted file mode 100755 index 2d9535d4..00000000 --- a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/dist/vue-json-excel.esm.js +++ /dev/null @@ -1,652 +0,0 @@ -var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - -function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; -} - -var download = createCommonjsModule(function (module, exports) { -//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage -// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime -// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs -// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling. -// v4 adds AMD/UMD, commonJS, and plain browser support -// v4.1 adds url download capability via solo URL argument (same domain/CORS only) -// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors -// https://github.com/rndme/download - -(function (root, factory) { - { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } -}(commonjsGlobal, function () { - - return function download(data, strFileName, strMimeType) { - - var self = window, // this script is only for browsers anyway... - defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads - mimeType = strMimeType || defaultMime, - payload = data, - url = !strFileName && !strMimeType && payload, - anchor = document.createElement("a"), - toString = function(a){return String(a);}, - myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString), - fileName = strFileName || "download", - blob, - reader; - myBlob= myBlob.call ? myBlob.bind(self) : Blob ; - - if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback - payload=[payload, mimeType]; - mimeType=payload[0]; - payload=payload[1]; - } - - - if(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument - fileName = url.split("/").pop().split("?")[0]; - anchor.href = url; // assign href prop to temp anchor - if(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path: - var ajax=new XMLHttpRequest(); - ajax.open( "GET", url, true); - ajax.responseType = 'blob'; - ajax.onload= function(e){ - download(e.target.response, fileName, defaultMime); - }; - setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return: - return ajax; - } // end if valid url? - } // end if url? - - - //go ahead and download dataURLs right away - if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(payload)){ - - if(payload.length > (1024*1024*1.999) && myBlob !== toString ){ - payload=dataUrlToBlob(payload); - mimeType=payload.type || defaultMime; - }else { - return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs: - navigator.msSaveBlob(dataUrlToBlob(payload), fileName) : - saver(payload) ; // everyone else can save dataURLs un-processed - } - - }else {//not data url, is it a string with special needs? - if(/([\x80-\xff])/.test(payload)){ - var i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length; - for(i;i null, - }, - // this prop is used to fix the problem with other components that use the - // variable fields, like vee-validate. exportFields works exactly like fields - exportFields: { - type: Object, - default: () => null, - }, - // Use as fallback when the row has no field values - defaultValue: { - type: String, - required: false, - default: "", - }, - // Title(s) for the data, could be a string or an array of strings (multiple titles) - header: { - default: null, - }, - // Footer(s) for the data, could be a string or an array of strings (multiple footers) - footer: { - default: null, - }, - // filename to export - name: { - type: String, - default: "data.xls", - }, - fetch: { - type: Function, - }, - meta: { - type: Array, - default: () => [], - }, - worksheet: { - type: String, - default: "Sheet1", - }, - //event before generate was called - beforeGenerate: { - type: Function, - }, - //event before download pops up - beforeFinish: { - type: Function, - }, - // Determine if CSV Data should be escaped - escapeCsv: { - type: Boolean, - default: true, - }, - // long number stringify - stringifyLongNum: { - type: Boolean, - default: false, - }, - }, - computed: { - // unique identifier - idName() { - var now = new Date().getTime(); - return "export_" + now; - }, - - downloadFields() { - if (this.fields) return this.fields; - - if (this.exportFields) return this.exportFields; - }, - }, - methods: { - async generate() { - if (typeof this.beforeGenerate === "function") { - await this.beforeGenerate(); - } - let data = this.data; - if (typeof this.fetch === "function" || !data) data = await this.fetch(); - - if (!data || !data.length) { - return; - } - - let json = this.getProcessedJson(data, this.downloadFields); - if (this.type === "html") { - // this is mainly for testing - return this.export( - this.jsonToXLS(json), - this.name.replace(".xls", ".html"), - "text/html" - ); - } else if (this.type === "csv") { - return this.export( - this.jsonToCSV(json), - this.name.replace(".xls", ".csv"), - "application/csv" - ); - } - return this.export( - this.jsonToXLS(json), - this.name, - "application/vnd.ms-excel" - ); - }, - /* - Use downloadjs to generate the download link - */ - export: async function (data, filename, mime) { - let blob = this.base64ToBlob(data, mime); - if (typeof this.beforeFinish === "function") await this.beforeFinish(); - download(blob, filename, mime); - }, - /* - jsonToXLS - --------------- - Transform json data into an xml document with MS Excel format, sadly - it shows a prompt when it opens, that is a default behavior for - Microsoft office and cannot be avoided. It's recommended to use CSV format instead. - */ - jsonToXLS(data) { - let xlsTemp = - ' ${table}
'; - let xlsData = ""; - const colspan = Object.keys(data[0]).length; - let _self = this; - - //Header - const header = this.header || this.$attrs.title; - if (header) { - xlsData += this.parseExtraData( - header, - '${data}' - ); - } - - //Fields - xlsData += ""; - for (let key in data[0]) { - xlsData += "" + key + ""; - } - xlsData += ""; - xlsData += ""; - - //Data - xlsData += ""; - data.map(function (item, index) { - xlsData += ""; - for (let key in item) { - xlsData += - "" + - _self.preprocessLongNum( - _self.valueReformattedForMultilines(item[key]) - ) + - ""; - } - xlsData += ""; - }); - xlsData += ""; - - //Footer - if (this.footer != null) { - xlsData += ""; - xlsData += this.parseExtraData( - this.footer, - '${data}' - ); - xlsData += ""; - } - - return xlsTemp - .replace("${table}", xlsData) - .replace("${worksheet}", this.worksheet); - }, - /* - jsonToCSV - --------------- - Transform json data into an CSV file. - */ - jsonToCSV(data) { - let _self = this; - var csvData = []; - - //Header - const header = this.header || this.$attrs.title; - if (header) { - csvData.push(this.parseExtraData(header, "${data}\r\n")); - } - - //Fields - for (let key in data[0]) { - csvData.push(key); - csvData.push(","); - } - csvData.pop(); - csvData.push("\r\n"); - //Data - data.map(function (item) { - for (let key in item) { - let escapedCSV = item[key] + ""; - // Escaped CSV data to string to avoid problems with numbers or other types of values - // this is controlled by the prop escapeCsv - if (_self.escapeCsv) { - escapedCSV = '="' + escapedCSV + '"'; // cast Numbers to string - if (escapedCSV.match(/[,"\n]/)) { - escapedCSV = '"' + escapedCSV.replace(/\"/g, '""') + '"'; - } - } - csvData.push(escapedCSV); - csvData.push(","); - } - csvData.pop(); - csvData.push("\r\n"); - }); - //Footer - if (this.footer != null) { - csvData.push(this.parseExtraData(this.footer, "${data}\r\n")); - } - return csvData.join(""); - }, - /* - getProcessedJson - --------------- - Get only the data to export, if no fields are set return all the data - */ - getProcessedJson(data, header) { - let keys = this.getKeys(data, header); - let newData = []; - let _self = this; - data.map(function (item, index) { - let newItem = {}; - for (let label in keys) { - let property = keys[label]; - newItem[label] = _self.getValue(property, item); - } - newData.push(newItem); - }); - - return newData; - }, - getKeys(data, header) { - if (header) { - return header; - } - - let keys = {}; - for (let key in data[0]) { - keys[key] = key; - } - return keys; - }, - /* - parseExtraData - --------------- - Parse title and footer attribute to the csv format - */ - parseExtraData(extraData, format) { - let parseData = ""; - if (Array.isArray(extraData)) { - for (var i = 0; i < extraData.length; i++) { - if (extraData[i]) - parseData += format.replace("${data}", extraData[i]); - } - } else { - parseData += format.replace("${data}", extraData); - } - return parseData; - }, - - getValue(key, item) { - const field = typeof key !== "object" ? key : key.field; - let indexes = typeof field !== "string" ? [] : field.split("."); - let value = this.defaultValue; - - if (!field) value = item; - else if (indexes.length > 1) - value = this.getValueFromNestedItem(item, indexes); - else value = this.parseValue(item[field]); - - if (key.hasOwnProperty("callback")) - value = this.getValueFromCallback(value, key.callback); - - return value; - }, - - /* - convert values with newline \n characters into
- */ - valueReformattedForMultilines(value) { - if (typeof value == "string") return value.replace(/\n/gi, "
"); - else return value; - }, - preprocessLongNum(value) { - if (this.stringifyLongNum) { - if (String(value).startsWith("0x")) { - return value; - } - if (!isNaN(value) && value != "") { - if (value > 99999999999 || value < 0.0000000000001) { - return '="' + value + '"'; - } - } - } - return value; - }, - getValueFromNestedItem(item, indexes) { - let nestedItem = item; - for (let index of indexes) { - if (nestedItem) nestedItem = nestedItem[index]; - } - return this.parseValue(nestedItem); - }, - - getValueFromCallback(item, callback) { - if (typeof callback !== "function") return this.defaultValue; - const value = callback(item); - return this.parseValue(value); - }, - parseValue(value) { - return value || value === 0 || typeof value === "boolean" - ? value - : this.defaultValue; - }, - base64ToBlob(data, mime) { - let base64 = window.btoa(window.unescape(encodeURIComponent(data))); - let bstr = atob(base64); - let n = bstr.length; - let u8arr = new Uint8ClampedArray(n); - while (n--) { - u8arr[n] = bstr.charCodeAt(n); - } - return new Blob([u8arr], { type: mime }); - }, - }, // end methods -}; - -function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier -/* server only */ -, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) { - if (typeof shadowMode !== 'boolean') { - createInjectorSSR = createInjector; - createInjector = shadowMode; - shadowMode = false; - } // Vue.extend constructor export interop. - - - var options = typeof script === 'function' ? script.options : script; // render functions - - if (template && template.render) { - options.render = template.render; - options.staticRenderFns = template.staticRenderFns; - options._compiled = true; // functional template - - if (isFunctionalTemplate) { - options.functional = true; - } - } // scopedId - - - if (scopeId) { - options._scopeId = scopeId; - } - - var hook; - - if (moduleIdentifier) { - // server build - hook = function hook(context) { - // 2.3 injection - context = context || // cached call - this.$vnode && this.$vnode.ssrContext || // stateful - this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional - // 2.2 with runInNewContext: true - - if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { - context = __VUE_SSR_CONTEXT__; - } // inject component styles - - - if (style) { - style.call(this, createInjectorSSR(context)); - } // register component module identifier for async chunk inference - - - if (context && context._registeredComponents) { - context._registeredComponents.add(moduleIdentifier); - } - }; // used by ssr in case component is cached and beforeCreate - // never gets called - - - options._ssrRegister = hook; - } else if (style) { - hook = shadowMode ? function () { - style.call(this, createInjectorShadow(this.$root.$options.shadowRoot)); - } : function (context) { - style.call(this, createInjector(context)); - }; - } - - if (hook) { - if (options.functional) { - // register for functional component in vue file - var originalRender = options.render; - - options.render = function renderWithStyleInjection(h, context) { - hook.call(context); - return originalRender(h, context); - }; - } else { - // inject component registration as beforeCreate hook - var existing = options.beforeCreate; - options.beforeCreate = existing ? [].concat(existing, hook) : [hook]; - } - } - - return script; -} - -var normalizeComponent_1 = normalizeComponent; - -/* script */ -const __vue_script__ = script; - -/* template */ -var __vue_render__ = function() { - var _vm = this; - var _h = _vm.$createElement; - var _c = _vm._self._c || _h; - return _c( - "div", - { attrs: { id: _vm.idName }, on: { click: _vm.generate } }, - [_vm._t("default", [_vm._v(" Download " + _vm._s(_vm.name) + " ")])], - 2 - ) -}; -var __vue_staticRenderFns__ = []; -__vue_render__._withStripped = true; - - /* style */ - const __vue_inject_styles__ = undefined; - /* scoped */ - const __vue_scope_id__ = undefined; - /* module identifier */ - const __vue_module_identifier__ = undefined; - /* functional template */ - const __vue_is_functional_template__ = false; - /* style inject */ - - /* style inject SSR */ - - - - var JsonExcel = normalizeComponent_1( - { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, - __vue_inject_styles__, - __vue_script__, - __vue_scope_id__, - __vue_is_functional_template__, - __vue_module_identifier__, - undefined, - undefined - ); - -export default JsonExcel; diff --git a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/dist/vue-json-excel.umd.js b/node_modules/_vue-json-excel@0.3.0@vue-json-excel/dist/vue-json-excel.umd.js deleted file mode 100755 index bd2c0dc0..00000000 --- a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/dist/vue-json-excel.umd.js +++ /dev/null @@ -1,660 +0,0 @@ -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = global || self, global.JsonExcel = factory()); -}(this, (function () { 'use strict'; - - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; - - function createCommonjsModule(fn, module) { - return module = { exports: {} }, fn(module, module.exports), module.exports; - } - - var download = createCommonjsModule(function (module, exports) { - //download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage - // v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime - // v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs - // v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling. - // v4 adds AMD/UMD, commonJS, and plain browser support - // v4.1 adds url download capability via solo URL argument (same domain/CORS only) - // v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors - // https://github.com/rndme/download - - (function (root, factory) { - { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } - }(commonjsGlobal, function () { - - return function download(data, strFileName, strMimeType) { - - var self = window, // this script is only for browsers anyway... - defaultMime = "application/octet-stream", // this default mime also triggers iframe downloads - mimeType = strMimeType || defaultMime, - payload = data, - url = !strFileName && !strMimeType && payload, - anchor = document.createElement("a"), - toString = function(a){return String(a);}, - myBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString), - fileName = strFileName || "download", - blob, - reader; - myBlob= myBlob.call ? myBlob.bind(self) : Blob ; - - if(String(this)==="true"){ //reverse arguments, allowing download.bind(true, "text/xml", "export.xml") to act as a callback - payload=[payload, mimeType]; - mimeType=payload[0]; - payload=payload[1]; - } - - - if(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument - fileName = url.split("/").pop().split("?")[0]; - anchor.href = url; // assign href prop to temp anchor - if(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path: - var ajax=new XMLHttpRequest(); - ajax.open( "GET", url, true); - ajax.responseType = 'blob'; - ajax.onload= function(e){ - download(e.target.response, fileName, defaultMime); - }; - setTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return: - return ajax; - } // end if valid url? - } // end if url? - - - //go ahead and download dataURLs right away - if(/^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(payload)){ - - if(payload.length > (1024*1024*1.999) && myBlob !== toString ){ - payload=dataUrlToBlob(payload); - mimeType=payload.type || defaultMime; - }else { - return navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs: - navigator.msSaveBlob(dataUrlToBlob(payload), fileName) : - saver(payload) ; // everyone else can save dataURLs un-processed - } - - }else {//not data url, is it a string with special needs? - if(/([\x80-\xff])/.test(payload)){ - var i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length; - for(i;i null, - }, - // this prop is used to fix the problem with other components that use the - // variable fields, like vee-validate. exportFields works exactly like fields - exportFields: { - type: Object, - default: () => null, - }, - // Use as fallback when the row has no field values - defaultValue: { - type: String, - required: false, - default: "", - }, - // Title(s) for the data, could be a string or an array of strings (multiple titles) - header: { - default: null, - }, - // Footer(s) for the data, could be a string or an array of strings (multiple footers) - footer: { - default: null, - }, - // filename to export - name: { - type: String, - default: "data.xls", - }, - fetch: { - type: Function, - }, - meta: { - type: Array, - default: () => [], - }, - worksheet: { - type: String, - default: "Sheet1", - }, - //event before generate was called - beforeGenerate: { - type: Function, - }, - //event before download pops up - beforeFinish: { - type: Function, - }, - // Determine if CSV Data should be escaped - escapeCsv: { - type: Boolean, - default: true, - }, - // long number stringify - stringifyLongNum: { - type: Boolean, - default: false, - }, - }, - computed: { - // unique identifier - idName() { - var now = new Date().getTime(); - return "export_" + now; - }, - - downloadFields() { - if (this.fields) return this.fields; - - if (this.exportFields) return this.exportFields; - }, - }, - methods: { - async generate() { - if (typeof this.beforeGenerate === "function") { - await this.beforeGenerate(); - } - let data = this.data; - if (typeof this.fetch === "function" || !data) data = await this.fetch(); - - if (!data || !data.length) { - return; - } - - let json = this.getProcessedJson(data, this.downloadFields); - if (this.type === "html") { - // this is mainly for testing - return this.export( - this.jsonToXLS(json), - this.name.replace(".xls", ".html"), - "text/html" - ); - } else if (this.type === "csv") { - return this.export( - this.jsonToCSV(json), - this.name.replace(".xls", ".csv"), - "application/csv" - ); - } - return this.export( - this.jsonToXLS(json), - this.name, - "application/vnd.ms-excel" - ); - }, - /* - Use downloadjs to generate the download link - */ - export: async function (data, filename, mime) { - let blob = this.base64ToBlob(data, mime); - if (typeof this.beforeFinish === "function") await this.beforeFinish(); - download(blob, filename, mime); - }, - /* - jsonToXLS - --------------- - Transform json data into an xml document with MS Excel format, sadly - it shows a prompt when it opens, that is a default behavior for - Microsoft office and cannot be avoided. It's recommended to use CSV format instead. - */ - jsonToXLS(data) { - let xlsTemp = - ' ${table}
'; - let xlsData = ""; - const colspan = Object.keys(data[0]).length; - let _self = this; - - //Header - const header = this.header || this.$attrs.title; - if (header) { - xlsData += this.parseExtraData( - header, - '${data}' - ); - } - - //Fields - xlsData += ""; - for (let key in data[0]) { - xlsData += "" + key + ""; - } - xlsData += ""; - xlsData += ""; - - //Data - xlsData += ""; - data.map(function (item, index) { - xlsData += ""; - for (let key in item) { - xlsData += - "" + - _self.preprocessLongNum( - _self.valueReformattedForMultilines(item[key]) - ) + - ""; - } - xlsData += ""; - }); - xlsData += ""; - - //Footer - if (this.footer != null) { - xlsData += ""; - xlsData += this.parseExtraData( - this.footer, - '${data}' - ); - xlsData += ""; - } - - return xlsTemp - .replace("${table}", xlsData) - .replace("${worksheet}", this.worksheet); - }, - /* - jsonToCSV - --------------- - Transform json data into an CSV file. - */ - jsonToCSV(data) { - let _self = this; - var csvData = []; - - //Header - const header = this.header || this.$attrs.title; - if (header) { - csvData.push(this.parseExtraData(header, "${data}\r\n")); - } - - //Fields - for (let key in data[0]) { - csvData.push(key); - csvData.push(","); - } - csvData.pop(); - csvData.push("\r\n"); - //Data - data.map(function (item) { - for (let key in item) { - let escapedCSV = item[key] + ""; - // Escaped CSV data to string to avoid problems with numbers or other types of values - // this is controlled by the prop escapeCsv - if (_self.escapeCsv) { - escapedCSV = '="' + escapedCSV + '"'; // cast Numbers to string - if (escapedCSV.match(/[,"\n]/)) { - escapedCSV = '"' + escapedCSV.replace(/\"/g, '""') + '"'; - } - } - csvData.push(escapedCSV); - csvData.push(","); - } - csvData.pop(); - csvData.push("\r\n"); - }); - //Footer - if (this.footer != null) { - csvData.push(this.parseExtraData(this.footer, "${data}\r\n")); - } - return csvData.join(""); - }, - /* - getProcessedJson - --------------- - Get only the data to export, if no fields are set return all the data - */ - getProcessedJson(data, header) { - let keys = this.getKeys(data, header); - let newData = []; - let _self = this; - data.map(function (item, index) { - let newItem = {}; - for (let label in keys) { - let property = keys[label]; - newItem[label] = _self.getValue(property, item); - } - newData.push(newItem); - }); - - return newData; - }, - getKeys(data, header) { - if (header) { - return header; - } - - let keys = {}; - for (let key in data[0]) { - keys[key] = key; - } - return keys; - }, - /* - parseExtraData - --------------- - Parse title and footer attribute to the csv format - */ - parseExtraData(extraData, format) { - let parseData = ""; - if (Array.isArray(extraData)) { - for (var i = 0; i < extraData.length; i++) { - if (extraData[i]) - parseData += format.replace("${data}", extraData[i]); - } - } else { - parseData += format.replace("${data}", extraData); - } - return parseData; - }, - - getValue(key, item) { - const field = typeof key !== "object" ? key : key.field; - let indexes = typeof field !== "string" ? [] : field.split("."); - let value = this.defaultValue; - - if (!field) value = item; - else if (indexes.length > 1) - value = this.getValueFromNestedItem(item, indexes); - else value = this.parseValue(item[field]); - - if (key.hasOwnProperty("callback")) - value = this.getValueFromCallback(value, key.callback); - - return value; - }, - - /* - convert values with newline \n characters into
- */ - valueReformattedForMultilines(value) { - if (typeof value == "string") return value.replace(/\n/gi, "
"); - else return value; - }, - preprocessLongNum(value) { - if (this.stringifyLongNum) { - if (String(value).startsWith("0x")) { - return value; - } - if (!isNaN(value) && value != "") { - if (value > 99999999999 || value < 0.0000000000001) { - return '="' + value + '"'; - } - } - } - return value; - }, - getValueFromNestedItem(item, indexes) { - let nestedItem = item; - for (let index of indexes) { - if (nestedItem) nestedItem = nestedItem[index]; - } - return this.parseValue(nestedItem); - }, - - getValueFromCallback(item, callback) { - if (typeof callback !== "function") return this.defaultValue; - const value = callback(item); - return this.parseValue(value); - }, - parseValue(value) { - return value || value === 0 || typeof value === "boolean" - ? value - : this.defaultValue; - }, - base64ToBlob(data, mime) { - let base64 = window.btoa(window.unescape(encodeURIComponent(data))); - let bstr = atob(base64); - let n = bstr.length; - let u8arr = new Uint8ClampedArray(n); - while (n--) { - u8arr[n] = bstr.charCodeAt(n); - } - return new Blob([u8arr], { type: mime }); - }, - }, // end methods - }; - - function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier - /* server only */ - , shadowMode, createInjector, createInjectorSSR, createInjectorShadow) { - if (typeof shadowMode !== 'boolean') { - createInjectorSSR = createInjector; - createInjector = shadowMode; - shadowMode = false; - } // Vue.extend constructor export interop. - - - var options = typeof script === 'function' ? script.options : script; // render functions - - if (template && template.render) { - options.render = template.render; - options.staticRenderFns = template.staticRenderFns; - options._compiled = true; // functional template - - if (isFunctionalTemplate) { - options.functional = true; - } - } // scopedId - - - if (scopeId) { - options._scopeId = scopeId; - } - - var hook; - - if (moduleIdentifier) { - // server build - hook = function hook(context) { - // 2.3 injection - context = context || // cached call - this.$vnode && this.$vnode.ssrContext || // stateful - this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional - // 2.2 with runInNewContext: true - - if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { - context = __VUE_SSR_CONTEXT__; - } // inject component styles - - - if (style) { - style.call(this, createInjectorSSR(context)); - } // register component module identifier for async chunk inference - - - if (context && context._registeredComponents) { - context._registeredComponents.add(moduleIdentifier); - } - }; // used by ssr in case component is cached and beforeCreate - // never gets called - - - options._ssrRegister = hook; - } else if (style) { - hook = shadowMode ? function () { - style.call(this, createInjectorShadow(this.$root.$options.shadowRoot)); - } : function (context) { - style.call(this, createInjector(context)); - }; - } - - if (hook) { - if (options.functional) { - // register for functional component in vue file - var originalRender = options.render; - - options.render = function renderWithStyleInjection(h, context) { - hook.call(context); - return originalRender(h, context); - }; - } else { - // inject component registration as beforeCreate hook - var existing = options.beforeCreate; - options.beforeCreate = existing ? [].concat(existing, hook) : [hook]; - } - } - - return script; - } - - var normalizeComponent_1 = normalizeComponent; - - /* script */ - const __vue_script__ = script; - - /* template */ - var __vue_render__ = function() { - var _vm = this; - var _h = _vm.$createElement; - var _c = _vm._self._c || _h; - return _c( - "div", - { attrs: { id: _vm.idName }, on: { click: _vm.generate } }, - [_vm._t("default", [_vm._v(" Download " + _vm._s(_vm.name) + " ")])], - 2 - ) - }; - var __vue_staticRenderFns__ = []; - __vue_render__._withStripped = true; - - /* style */ - const __vue_inject_styles__ = undefined; - /* scoped */ - const __vue_scope_id__ = undefined; - /* module identifier */ - const __vue_module_identifier__ = undefined; - /* functional template */ - const __vue_is_functional_template__ = false; - /* style inject */ - - /* style inject SSR */ - - - - var JsonExcel = normalizeComponent_1( - { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, - __vue_inject_styles__, - __vue_script__, - __vue_scope_id__, - __vue_is_functional_template__, - __vue_module_identifier__, - undefined, - undefined - ); - - return JsonExcel; - -}))); diff --git a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/example-multi-line.png b/node_modules/_vue-json-excel@0.3.0@vue-json-excel/example-multi-line.png deleted file mode 100755 index b6993ebf26d2733163ce2f2d0bd524b595e4ec99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12028 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 gQQPh=XcRN@a5XD5^2P`KVk - +
@@ -181,7 +181,7 @@ export default { this.liveGoodsData.forEach((item, index) => { val.forEach((callback) => { if (item.id == callback.id) { - this.$set(this.liveGoodsData[index], "__selected", true); + this.$set(this.liveGoodsData[index], "___selected", true); // this.selectedGoods.push(item); } }); @@ -208,15 +208,15 @@ export default { * 回调参数补充 */ selectedLiveGoods(val, index) { - if (!val.__selected) { - val.__selected = true; - this.$set(this.liveGoodsData[index], "__selected", true); + if (!val.___selected) { + val.___selected = true; + this.$set(this.liveGoodsData[index], "___selected", true); this.selectedGoods.push(this.liveGoodsData[index]); } else { this.$nextTick(() => { - val.__selected = false; + val.___selected = false; - this.$set(this.liveGoodsData[index], "__selected", true); + this.$set(this.liveGoodsData[index], "___selected", true); this.selectedGoods.splice(index, 1); }); } diff --git a/seller/src/views/statistics/traffic.vue b/seller/src/views/statistics/traffic.vue index 236e381e..131f30f0 100644 --- a/seller/src/views/statistics/traffic.vue +++ b/seller/src/views/statistics/traffic.vue @@ -64,8 +64,8 @@ export default { return { // 时间 - uvs: "", // 访客数 - pvs: "", // 浏览量 + uvs: 0, // 访客数 + pvs: 0, // 浏览量 dateList: [ // 日期选择列表 @@ -198,8 +198,8 @@ export default { if (res.result) { this.data = res.result; res.result.forEach((item) => { - this.uvs += item.uvNum; - this.pvs += item.pvNum; + this.uvs += parseInt(item.uvNum); + this.pvs += parseInt(item.pvNum); }); if (!this.orderChart) {