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 b6993ebf..00000000 Binary files a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/example-multi-line.png and /dev/null differ diff --git a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/node_modules/downloadjs b/node_modules/_vue-json-excel@0.3.0@vue-json-excel/node_modules/downloadjs deleted file mode 120000 index 218f229e..00000000 --- a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/node_modules/downloadjs +++ /dev/null @@ -1 +0,0 @@ -../../_downloadjs@1.4.7@downloadjs \ No newline at end of file diff --git a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/package.json b/node_modules/_vue-json-excel@0.3.0@vue-json-excel/package.json deleted file mode 100644 index 993c6288..00000000 --- a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/package.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "name": "vue-json-excel", - "version": "0.3.0", - "description": "Download your JSON as an excel or CSV file directly from the browser", - "main": "dist/vue-json-excel.umd.js", - "module": "dist/vue-json-excel.esm.js", - "scripts": { - "build:dist": "rollup -c ./rollup.config.js", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/jecovier/vue-json-excel.git" - }, - "keywords": [ - "vue", - "vuejs", - "vue2", - "Excel", - "xls", - "csv", - "json", - "export", - "json excel", - "download", - "component" - ], - "author": "Jose Javier Espinoza", - "license": "MIT", - "bugs": { - "url": "https://github.com/jecovier/vue-json-excel/issues" - }, - "homepage": "https://github.com/jecovier/vue-json-excel#readme", - "dependencies": { - "downloadjs": "^1.4.7" - }, - "devDependencies": { - "rollup": "^1.7.4", - "rollup-plugin-commonjs": "^9.2.2", - "rollup-plugin-node-resolve": "^4.0.1", - "rollup-plugin-vue": "^4.7.2", - "vue-template-compiler": "^2.6.10" - }, - "__npminstall_done": "Thu Jun 03 2021 11:07:53 GMT+0800 (中国标准时间)", - "_from": "vue-json-excel@0.3.0", - "_resolved": "https://registry.nlark.com/vue-json-excel/download/vue-json-excel-0.3.0.tgz" -} \ No newline at end of file diff --git a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/rollup.config.js b/node_modules/_vue-json-excel@0.3.0@vue-json-excel/rollup.config.js deleted file mode 100755 index b40914cc..00000000 --- a/node_modules/_vue-json-excel@0.3.0@vue-json-excel/rollup.config.js +++ /dev/null @@ -1,27 +0,0 @@ -import vue from 'rollup-plugin-vue'; -import commonjs from 'rollup-plugin-commonjs'; -import resolve from 'rollup-plugin-node-resolve'; - -export default { - input: 'JsonExcel.vue', - output: [ - { - format: 'cjs', - file: 'dist/vue-json-excel.cjs.js' - }, - { - format: 'esm', - file: 'dist/vue-json-excel.esm.js' - }, - { - name: 'JsonExcel', - format: 'umd', - file: 'dist/vue-json-excel.umd.js' - } - ], - plugins: [ - vue(), - commonjs(), - resolve() - ] -} diff --git a/node_modules/downloadjs b/node_modules/downloadjs deleted file mode 120000 index a65999f7..00000000 --- a/node_modules/downloadjs +++ /dev/null @@ -1 +0,0 @@ -_downloadjs@1.4.7@downloadjs \ No newline at end of file diff --git a/node_modules/vue-json-excel b/node_modules/vue-json-excel deleted file mode 120000 index b29d3192..00000000 --- a/node_modules/vue-json-excel +++ /dev/null @@ -1 +0,0 @@ -_vue-json-excel@0.3.0@vue-json-excel \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 96d96bb7..00000000 --- a/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "vue-json-excel": "^0.3.0" - } -} diff --git a/seller/src/config/index.js b/seller/src/config/index.js index 83dc43fd..7b283dc2 100644 --- a/seller/src/config/index.js +++ b/seller/src/config/index.js @@ -21,11 +21,11 @@ export default { 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.103:8890', - // buyer: 'http://192.168.0.103:8888', - // seller: 'http://192.168.0.103:8889', - // manager: 'http://192.168.0.103:8887' + 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/seller/src/views/promotion/live/liveGoods.vue b/seller/src/views/promotion/live/liveGoods.vue index 0073af23..31fcf0e4 100644 --- a/seller/src/views/promotion/live/liveGoods.vue +++ b/seller/src/views/promotion/live/liveGoods.vue @@ -63,7 +63,7 @@
@@ -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) {