소스 검색

进一步完善了框架

李万涛 1 년 전
부모
커밋
49030ae522
100개의 변경된 파일5396개의 추가작업 그리고 239개의 파일을 삭제
  1. 0 0
      components/popup/index.scss
  2. 28 0
      components/popup/index.vue
  3. 147 0
      components/wike-painter/common/relation.js
  4. 218 0
      components/wike-painter/nvue.js
  5. 0 0
      components/wike-painter/painter.js
  6. 50 0
      components/wike-painter/props.js
  7. 479 0
      components/wike-painter/utils.js
  8. 478 0
      components/wike-painter/wike-painter.vue
  9. 11 3
      main.js
  10. 1 13
      pages/category/index.vue
  11. 26 10
      pages/index/index.vue
  12. 8 1
      pages/my/index.vue
  13. 519 0
      pages/qrPage/index.scss
  14. 264 14
      pages/qrPage/index.vue
  15. 6 1
      pages/service/index.vue
  16. 0 0
      pages/test/index.scss
  17. 27 0
      pages/test/index.vue
  18. 0 0
      unpackage/dist/build/mp-weixin/common/runtime.js
  19. 0 0
      unpackage/dist/build/mp-weixin/common/vendor.js
  20. 0 0
      unpackage/dist/build/mp-weixin/components/wike-painter/wike-painter.js
  21. 4 0
      unpackage/dist/build/mp-weixin/components/wike-painter/wike-painter.json
  22. 1 0
      unpackage/dist/build/mp-weixin/components/wike-painter/wike-painter.wxml
  23. 2 0
      unpackage/dist/build/mp-weixin/components/wike-painter/wike-painter.wxss
  24. 0 0
      unpackage/dist/build/mp-weixin/pages/index/index.js
  25. 1 1
      unpackage/dist/build/mp-weixin/pages/index/index.wxml
  26. 0 0
      unpackage/dist/build/mp-weixin/pages/my/index.js
  27. 1 1
      unpackage/dist/build/mp-weixin/pages/my/index.wxml
  28. 4 4
      unpackage/dist/build/mp-weixin/pages/my/index.wxss
  29. 0 0
      unpackage/dist/build/mp-weixin/pages/qrPage/index.js
  30. 4 1
      unpackage/dist/build/mp-weixin/pages/qrPage/index.json
  31. 1 1
      unpackage/dist/build/mp-weixin/pages/qrPage/index.wxml
  32. 0 0
      unpackage/dist/build/mp-weixin/pages/qrPage/index.wxss
  33. 1 1
      unpackage/dist/build/mp-weixin/project.private.config.json
  34. 10 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.js
  35. 6 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.json
  36. 1 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.wxml
  37. 1 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.wxss
  38. 0 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.js
  39. 10 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.json
  40. 1 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.wxml
  41. 1 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.wxss
  42. 10 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js
  43. 4 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.json
  44. 1 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.wxml
  45. 1 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.wxss
  46. 10 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.js
  47. 4 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.json
  48. 1 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.wxml
  49. 1 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.wxss
  50. 0 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.js
  51. 4 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.json
  52. 1 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.wxml
  53. 29 0
      unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.wxss
  54. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  55. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  56. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  57. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/navBar/index.js.map
  58. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/popup/index.js.map
  59. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/wike-painter/wike-painter.js.map
  60. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/category/index.js.map
  61. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  62. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/map/index.js.map
  63. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/my/index.js.map
  64. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/qrPage/index.js.map
  65. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/service/index.js.map
  66. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map
  67. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-badge/u-badge.js.map
  68. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-button/u-button.js.map
  69. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-icon/u-icon.js.map
  70. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map
  71. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.js.map
  72. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.js.map
  73. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map
  74. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.js.map
  75. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-sticky/u-sticky.js.map
  76. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-tabs/u-tabs.js.map
  77. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.js.map
  78. 2 1
      unpackage/dist/dev/mp-weixin/app.json
  79. 19 8
      unpackage/dist/dev/mp-weixin/common/main.js
  80. 2 2
      unpackage/dist/dev/mp-weixin/common/runtime.js
  81. 1697 74
      unpackage/dist/dev/mp-weixin/common/vendor.js
  82. 12 12
      unpackage/dist/dev/mp-weixin/components/navBar/index.js
  83. 180 0
      unpackage/dist/dev/mp-weixin/components/popup/index.js
  84. 6 0
      unpackage/dist/dev/mp-weixin/components/popup/index.json
  85. 1 0
      unpackage/dist/dev/mp-weixin/components/popup/index.wxml
  86. 4 0
      unpackage/dist/dev/mp-weixin/components/popup/index.wxss
  87. 732 0
      unpackage/dist/dev/mp-weixin/components/wike-painter/wike-painter.js
  88. 4 0
      unpackage/dist/dev/mp-weixin/components/wike-painter/wike-painter.json
  89. 1 0
      unpackage/dist/dev/mp-weixin/components/wike-painter/wike-painter.wxml
  90. 7 0
      unpackage/dist/dev/mp-weixin/components/wike-painter/wike-painter.wxss
  91. 2 14
      unpackage/dist/dev/mp-weixin/pages/category/index.js
  92. 1 1
      unpackage/dist/dev/mp-weixin/pages/category/index.wxml
  93. 44 13
      unpackage/dist/dev/mp-weixin/pages/index/index.js
  94. 1 1
      unpackage/dist/dev/mp-weixin/pages/index/index.wxml
  95. 14 14
      unpackage/dist/dev/mp-weixin/pages/map/index.js
  96. 11 4
      unpackage/dist/dev/mp-weixin/pages/my/index.js
  97. 1 1
      unpackage/dist/dev/mp-weixin/pages/my/index.wxml
  98. 273 41
      unpackage/dist/dev/mp-weixin/pages/qrPage/index.js
  99. 4 1
      unpackage/dist/dev/mp-weixin/pages/qrPage/index.json
  100. 1 1
      unpackage/dist/dev/mp-weixin/pages/qrPage/index.wxml

+ 0 - 0
components/popup/index.scss


+ 28 - 0
components/popup/index.vue

xqd
@@ -0,0 +1,28 @@
+<template>
+	<view>
+		<u-popup :show="show" @close="close" @open="open" :mode="mode" :round="round">
+			<view class="topBar" style="">
+				按钮等<button @click="close">关闭</button>
+			</view>
+			<slot name="content"></slot>
+		</u-popup>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: ['show', 'mode', 'round'],
+		methods: {
+			close() {
+				this.$emit('close')
+			},
+			open() {
+				this.$emit('open')
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import "./index.scss";
+</style>

+ 147 - 0
components/wike-painter/common/relation.js

xqd
@@ -0,0 +1,147 @@
+const styles = (v ='') =>  v.split(';').filter(v => v && !/^[\n\s]+$/.test(v)).map(v => {
+						const key = v.slice(0, v.indexOf(':'))
+						const value = v.slice(v.indexOf(':')+1)
+						return {
+							[key
+								.replace(/-([a-z])/g, function() { return arguments[1].toUpperCase()})
+								.replace(/\s+/g, '')
+							]: value.replace(/^\s+/, '').replace(/\s+$/, '') || ''
+						}
+					})
+export function parent(parent) {
+	return {
+		provide() {
+			return {
+				[parent]: this
+			}
+		},
+		data() {
+			return {
+				el: {
+					css: {},
+					views: []
+				},
+			}
+		},
+		watch: {
+			css: { 
+				handler(v) {
+					if(this.canvasId) {
+						this.el.css = (typeof v == 'object' ? v : v && Object.assign(...styles(v))) || {}
+						this.canvasWidth = this.el.css && this.el.css.width || this.canvasWidth
+						this.canvasHeight = this.el.css && this.el.css.height || this.canvasHeight
+					}
+				},
+				immediate: true
+			}
+		}
+	}
+}
+export function children(parent, options = {}) {
+	const indexKey = options.indexKey || 'index'
+	return {
+		inject: {
+			[parent]: {
+				default: null
+			}
+		},
+		watch: {
+			el: {
+				handler(v, o) {
+					if(JSON.stringify(v) != JSON.stringify(o))
+						this.bindRelation()
+				},
+				deep: true,
+				immediate: true
+			},
+			src: {
+				handler(v, o) {
+					if(v != o)
+						this.bindRelation()
+				},
+				immediate: true
+			},
+			text: {
+				handler(v, o) {
+					if(v != o) this.bindRelation()
+				},
+				immediate: true
+			},
+			css: {
+				handler(v, o) {
+					if(v != o)
+						this.el.css = (typeof v == 'object' ? v : v && Object.assign(...styles(v))) || {}
+				},
+				immediate: true
+			},
+			replace: {
+				handler(v, o) {
+					if(JSON.stringify(v) != JSON.stringify(o))
+						this.bindRelation()
+				},
+				deep: true,
+				immediate: true
+			}
+		},
+		created() {
+			if(!this._uid) {
+				this._uid = this._.uid
+			}
+			Object.defineProperty(this, 'parent', {
+				get: () => this[parent] || [],
+			})
+			Object.defineProperty(this, 'index', {
+				get: () =>  {
+					this.bindRelation();
+					const {parent: {el: {views=[]}={}}={}} = this
+					return views.indexOf(this.el)
+				},
+			});
+			this.el.type = this.type
+			
+			this.bindRelation()
+		},
+		// #ifdef VUE3
+		beforeUnmount() {
+			this.removeEl()
+		},
+		// #endif
+		// #ifdef VUE2
+		beforeDestroy() {
+			this.removeEl()
+		},
+		// #endif
+		methods: {
+			removeEl() {
+				if (this.parent) {
+					this.parent.el.views = this.parent.el.views.filter(
+						(item) => item._uid !== this._uid
+					);
+				}
+			},
+			bindRelation() {
+				if(!this.el._uid) {
+					this.el._uid = this._uid 
+				}
+				if(['text','qrcode'].includes(this.type)) {
+					this.el.text = this.$slots && this.$slots.default && this.$slots.default[0].text || `${this.text || ''}`.replace(/\\n/g, '\n')
+				}
+				if(this.type == 'image') {
+					this.el.src = this.src
+				}
+				if (!this.parent) {
+					return;
+				}
+				let views = this.parent.el.views || [];
+				if(views.indexOf(this.el) !== -1) {
+					this.parent.el.views = views.map(v => v._uid == this._uid ? this.el : v)
+				} else {
+					this.parent.el.views = [...views, this.el];
+				}
+			}
+		},
+		mounted() {
+			// this.bindRelation()
+		},
+	}
+}

+ 218 - 0
components/wike-painter/nvue.js

xqd
@@ -0,0 +1,218 @@
+// #ifdef APP-NVUE
+import { sleep, getImageInfo, isBase64, useNvue, networkReg } from './utils';
+const dom = weex.requireModule('dom')
+import {version } from '../../package.json'
+
+export default {
+	data() {
+		return {
+			tempFilePath: [],
+			isInitFile: false,
+			osName: uni.getSystemInfoSync().osName
+		}
+	},
+	created() {
+		// if (this.hybrid) return
+		// useNvue('_doc/uni_modules/lime-painter/', version, this.timeout).then(res => {
+		// 	this.isInitFile = true
+		// })
+	},
+	methods: {
+		getParentWeith() {
+			return new Promise(resolve => {
+				dom.getComponentRect(this.$refs.limepainter, (res) => {
+					this.parentWidth = Math.ceil(res.size.width)
+					this.canvasWidth = this.canvasWidth || this.parentWidth ||300
+					this.canvasHeight = res.size.height || this.canvasHeight||150
+					resolve(res.size)
+				})
+			})
+		},
+		onPageFinish() {
+			this.webview = this.$refs.webview
+			this.webview.evalJS(`init(${this.dpr})`)
+		},
+		onMessage(e) {
+			const res = e.detail.data[0] || null;
+			if (res.event) {
+				if (res.event == 'inited') {
+					this.inited = true
+				}
+				if(res.event == 'fail'){
+					this.$emit('fail', res)
+				}
+				if (res.event == 'layoutChange') {
+					const data = typeof res.data == 'string' ? JSON.parse(res.data) : res.data
+					this.canvasWidth = Math.ceil(data.width);
+					this.canvasHeight = Math.ceil(data.height);
+				}
+				if (res.event == 'progressChange') {
+					this.progress = res.data * 1
+				}
+				if (res.event == 'file') {
+					this.tempFilePath.push(res.data)
+					if (this.tempFilePath.length > 7) {
+						this.tempFilePath.shift()
+					}
+					return
+				}
+				if (res.event == 'success') {
+					if (res.data) {
+						this.tempFilePath.push(res.data)
+						if (this.tempFilePath.length > 8) {
+							this.tempFilePath.shift()
+						}
+						if (this.isCanvasToTempFilePath) {
+							this.setFilePath(this.tempFilePath.join(''), {isEmit:true})
+						}
+					} else {
+						this.$emit('fail', 'canvas no data')
+					}
+					return
+				}
+				this.$emit(res.event, JSON.parse(res.data));
+			} else if (res.file) {
+				this.file = res.data;
+			} else{
+				console.info(res[0])
+			}
+		},
+		getWebViewInited() {
+			if (this.inited) return Promise.resolve(this.inited);
+			return new Promise((resolve) => {
+				this.$watch(
+					'inited',
+					async val => {
+						if (val) {
+							resolve(val)
+						}
+					}, {
+						immediate: true
+					}
+				);
+			})
+		},
+		getTempFilePath() {
+			if (this.tempFilePath.length == 8) return Promise.resolve(this.tempFilePath)
+			return new Promise((resolve) => {
+				this.$watch(
+					'tempFilePath',
+					async val => {
+						if (val.length == 8) {
+							resolve(val.join(''))
+						}
+					}
+				);
+			})
+		},
+		getWebViewDone() {
+			if (this.progress == 1) return Promise.resolve(this.progress);
+			return new Promise((resolve) => {
+				this.$watch(
+					'progress',
+					async val => {
+						if (val == 1) {
+							this.$emit('done')
+							this.done = true
+							resolve(val)
+						}
+					}, {
+						immediate: true
+					}
+				);
+			})
+		},
+		async render(args) {
+			try {
+				await this.getSize(args)
+				const {width} = args.css || args
+				if(!width && this.parentWidth) {
+					Object.assign(args, {width: this.parentWidth})
+				}
+				const newNode = await this.calcImage(args);
+				await this.getWebViewInited()
+				this.webview.evalJS(`source(${JSON.stringify(newNode)})`)
+				await this.getWebViewDone()
+				await sleep(this.afterDelay)
+				if (this.isCanvasToTempFilePath) {
+					const params = {
+						fileType: this.fileType,
+						quality: this.quality
+					}
+					this.webview.evalJS(`save(${JSON.stringify(params)})`)
+				}
+				return Promise.resolve()
+			} catch (e) {
+				this.$emit('fail', e)
+			}
+		},
+		getfile(e){
+			let url = plus.io.convertLocalFileSystemURL( e )
+			return new Promise((resolve,reject)=>{
+				plus.io.resolveLocalFileSystemURL(url, entry => {
+					var reader = null;
+					entry.file( file => {
+						reader = new plus.io.FileReader();
+						reader.onloadend =  ( read )=> {
+							resolve(read.target.result)
+						};
+						reader.readAsDataURL( file );
+					}, function ( error ) {
+						alert( error.message );
+					} );
+				},err=>{
+					resolve(e)
+				})
+			})
+		},
+		async calcImage(args) {
+			let node = JSON.parse(JSON.stringify(args))
+			const urlReg = /url\((.+)\)/
+			const {backgroundImage} = node.css||{}
+			const isBG = backgroundImage && urlReg.exec(backgroundImage)[1]
+			const url = node.url || node.src || isBG
+			if(['text', 'qrcode'].includes(node.type)) {
+				return node
+			}
+			if ((node.type === "image" || isBG) && url && !isBase64(url) && (this.osName == 'ios' ? true : !networkReg.test(url))) {
+				let {path} = await getImageInfo(url)
+				if(this.osName == 'ios') {
+					path = await this.getfile(path)
+				}
+				if (isBG) {
+					node.css.backgroundImage = `url(${path})`
+				} else {
+					node.src = path
+				}
+			} else if (node.views && node.views.length) {
+				for (let i = 0; i < node.views.length; i++) {
+					node.views[i] = await this.calcImage(node.views[i])
+				}
+			}
+			return node
+		},
+		async canvasToTempFilePath(args = {}) {
+			if (!this.inited) {
+				return this.$emit('fail', 'no init')
+			}
+			this.tempFilePath = []
+			if (args.fileType == 'jpg') {
+				args.fileType = 'jpeg'
+			}
+			this.webview.evalJS(`save(${JSON.stringify(args)})`)
+			try {
+				let tempFilePath = await this.getTempFilePath()
+				tempFilePath = await this.setFilePath(tempFilePath)
+				args.success({
+					errMsg: "canvasToTempFilePath:ok",
+					tempFilePath
+				})
+			} catch (e) {
+				args.fail({
+					error: e
+				})
+			}
+		}
+	}
+}
+// #endif

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
components/wike-painter/painter.js


+ 50 - 0
components/wike-painter/props.js

xqd
@@ -0,0 +1,50 @@
+export default {
+	props: {
+		board: Object,
+		pathType: String, // 'base64'、'url'
+		fileType: {
+			type: String,
+			default: 'png'
+		},
+		quality: {
+			type: Number,
+			default: 1
+		},
+		css: [String, Object],
+		// styles: [String, Object],
+		width: [Number, String],
+		height: [Number, String],
+		pixelRatio: Number,
+		customStyle: String,
+		isCanvasToTempFilePath: Boolean,
+		// useCanvasToTempFilePath: Boolean,
+		sleep: {
+			type: Number,
+			default: 1000 / 30
+		},
+		beforeDelay: {
+			type: Number,
+			default: 100
+		},
+		afterDelay: {
+			type: Number,
+			default: 100
+		},
+		// #ifdef MP-WEIXIN || MP-TOUTIAO || MP-ALIPAY
+		type: {
+			type: String,
+			default: '2d'
+		},
+		// #endif
+		// #ifdef APP-NVUE
+		hybrid: Boolean,
+		timeout: {
+			type: Number,
+			default: 2000
+		},
+		// #endif
+		// #ifdef H5
+		useCORS: Boolean
+		// #endif
+	}
+}

+ 479 - 0
components/wike-painter/utils.js

xqd
@@ -0,0 +1,479 @@
+export const networkReg = /^(http|\/\/)/;
+export const isBase64 = (path) => /^data:image\/(\w+);base64/.test(path);
+export function sleep(delay) {
+	return new Promise(resolve => setTimeout(resolve, delay))
+}
+const isDev = ['devtools'].includes(uni.getSystemInfoSync().platform)
+// 缓存图片
+let cache = {}
+export function isNumber(value) {
+	return /^-?\d+(\.\d+)?$/.test(value);
+}
+export function toPx(value, baseSize, isDecimal = false) {
+	// 如果是数字
+	if (typeof value === 'number') {
+		return value
+	}
+	// 如果是字符串数字
+	if (isNumber(value)) {
+		return value * 1
+	}
+	// 如果有单位
+	if (typeof value === 'string') {
+		const reg = /^-?([0-9]+)?([.]{1}[0-9]+){0,1}(em|rpx|px|%)$/g
+		const results = reg.exec(value);
+		if (!value || !results) {
+			return 0;
+		}
+		const unit = results[3];
+		value = parseFloat(value);
+		let res = 0;
+		if (unit === 'rpx') {
+			res = uni.upx2px(value);
+		} else if (unit === 'px') {
+			res = value * 1;
+		} else if (unit === '%') {
+			res = value * toPx(baseSize) / 100;
+		} else if (unit === 'em') {
+			res = value * toPx(baseSize || 14);
+		}
+		return isDecimal ? res.toFixed(2) * 1 : Math.round(res);
+	}
+	return 0
+}
+
+// 计算版本
+export function compareVersion(v1, v2) {
+	v1 = v1.split('.')
+	v2 = v2.split('.')
+	const len = Math.max(v1.length, v2.length)
+	while (v1.length < len) {
+		v1.push('0')
+	}
+	while (v2.length < len) {
+		v2.push('0')
+	}
+	for (let i = 0; i < len; i++) {
+		const num1 = parseInt(v1[i], 10)
+		const num2 = parseInt(v2[i], 10)
+
+		if (num1 > num2) {
+			return 1
+		} else if (num1 < num2) {
+			return -1
+		}
+	}
+	return 0
+}
+// #ifdef MP
+export const prefix = () => {
+	// #ifdef MP-TOUTIAO
+	return tt
+	// #endif
+	// #ifdef MP-WEIXIN
+	return wx
+	// #endif
+	// #ifdef MP-BAIDU
+	return swan
+	// #endif
+	// #ifdef MP-ALIPAY
+	return my
+	// #endif
+	// #ifdef MP-QQ
+	return qq
+	// #endif
+	// #ifdef MP-360
+	return qh
+	// #endif
+}
+// #endif
+
+
+const base64ToArrayBuffer = (data) => {
+	// #ifndef MP-WEIXIN || APP-PLUS
+	/**
+	 * Base64Binary.decode(base64_string);  
+	 * Base64Binary.decodeArrayBuffer(base64_string); 
+	 */
+	const Base64Binary = {
+		_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
+		/* will return a  Uint8Array type */
+		decodeArrayBuffer(input) {
+			const bytes = (input.length / 4) * 3;
+			const ab = new ArrayBuffer(bytes);
+			this.decode(input, ab);
+			return ab;
+		},
+		removePaddingChars(input) {
+			const lkey = this._keyStr.indexOf(input.charAt(input.length - 1));
+			if (lkey == 64) {
+				return input.substring(0, input.length - 1);
+			}
+			return input;
+		},
+		decode(input, arrayBuffer) {
+			//get last chars to see if are valid
+			input = this.removePaddingChars(input);
+			input = this.removePaddingChars(input);
+
+			const bytes = parseInt((input.length / 4) * 3, 10);
+
+			let uarray;
+			let chr1, chr2, chr3;
+			let enc1, enc2, enc3, enc4;
+			let i = 0;
+			let j = 0;
+
+			if (arrayBuffer)
+				uarray = new Uint8Array(arrayBuffer);
+			else
+				uarray = new Uint8Array(bytes);
+
+			input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
+
+			for (i = 0; i < bytes; i += 3) {
+				//get the 3 octects in 4 ascii chars
+				enc1 = this._keyStr.indexOf(input.charAt(j++));
+				enc2 = this._keyStr.indexOf(input.charAt(j++));
+				enc3 = this._keyStr.indexOf(input.charAt(j++));
+				enc4 = this._keyStr.indexOf(input.charAt(j++));
+
+				chr1 = (enc1 << 2) | (enc2 >> 4);
+				chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
+				chr3 = ((enc3 & 3) << 6) | enc4;
+
+				uarray[i] = chr1;
+				if (enc3 != 64) uarray[i + 1] = chr2;
+				if (enc4 != 64) uarray[i + 2] = chr3;
+			}
+			return uarray;
+		}
+	}
+	return Base64Binary.decodeArrayBuffer(data)
+	// #endif
+	// #ifdef MP-WEIXIN || APP-PLUS
+	return uni.base64ToArrayBuffer(data)
+	// #endif
+}
+
+
+/**
+ * base64转路径
+ * @param {Object} base64
+ */
+export function base64ToPath(base64) {
+	const [, format] = /^data:image\/(\w+);base64,/.exec(base64) || [];
+
+	return new Promise((resolve, reject) => {
+		// #ifdef MP
+		const fs = uni.getFileSystemManager()
+		//自定义文件名
+		if (!format) {
+			reject(new Error('ERROR_BASE64SRC_PARSE'))
+		}
+		const time = new Date().getTime();
+		let pre = prefix()
+		const filePath = `${pre.env.USER_DATA_PATH}/${time}.${format}`
+		//let buffer = base64ToArrayBuffer(bodyData)
+		fs.writeFile({
+			filePath,
+			data: base64.split(',')[1], //base64.replace(/^data:\S+\/\S+;base64,/, ''),
+			encoding: 'base64',
+			// data: buffer,
+			// encoding: 'binary',
+			success() {
+				resolve(filePath)
+			},
+			fail(err) {
+				reject(err)
+			}
+		})
+		// #endif
+
+		// #ifdef H5
+		// mime类型
+		let mimeString = base64.split(',')[0].split(':')[1].split(';')[0];
+		//base64 解码
+		let byteString = atob(base64.split(',')[1]);
+		//创建缓冲数组
+		let arrayBuffer = new ArrayBuffer(byteString.length);
+		//创建视图
+		let intArray = new Uint8Array(arrayBuffer);
+		for (let i = 0; i < byteString.length; i++) {
+			intArray[i] = byteString.charCodeAt(i);
+		}
+		resolve(URL.createObjectURL(new Blob([intArray], {
+			type: mimeString
+		})))
+		// #endif
+
+		// #ifdef APP-PLUS
+		const bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now())
+		bitmap.loadBase64Data(base64, () => {
+			if (!format) {
+				reject(new Error('ERROR_BASE64SRC_PARSE'))
+			}
+			const time = new Date().getTime();
+			const filePath = `_doc/uniapp_temp/${time}.${format}`
+			bitmap.save(filePath, {},
+				() => {
+					bitmap.clear()
+					resolve(filePath)
+				},
+				(error) => {
+					bitmap.clear()
+					reject(error)
+				})
+		}, (error) => {
+			bitmap.clear()
+			reject(error)
+		})
+		// #endif
+	})
+}
+
+/**
+ * 路径转base64
+ * @param {Object} string
+ */
+export function pathToBase64(path) {
+	if (/^data:/.test(path)) return path
+	return new Promise((resolve, reject) => {
+		// #ifdef H5
+		let image = new Image();
+		image.setAttribute("crossOrigin", 'Anonymous');
+		image.onload = function() {
+			let canvas = document.createElement('canvas');
+			canvas.width = this.naturalWidth;
+			canvas.height = this.naturalHeight;
+			canvas.getContext('2d').drawImage(image, 0, 0);
+			let result = canvas.toDataURL('image/png')
+			resolve(result);
+			canvas.height = canvas.width = 0
+		}
+		image.src = path + '?v=' + Math.random()
+		image.onerror = (error) => {
+			reject(error);
+		};
+		// #endif
+
+		// #ifdef MP
+		if (uni.canIUse('getFileSystemManager')) {
+			uni.getFileSystemManager().readFile({
+				filePath: path,
+				encoding: 'base64',
+				success: (res) => {
+					resolve('data:image/png;base64,' + res.data)
+				},
+				fail: (error) => {
+					reject(error)
+				}
+			})
+		}
+		// #endif
+
+		// #ifdef APP-PLUS
+		plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), (entry) => {
+			entry.file((file) => {
+				const fileReader = new plus.io.FileReader()
+				fileReader.onload = (data) => {
+					resolve(data.target.result)
+				}
+				fileReader.onerror = (error) => {
+					reject(error)
+				}
+				fileReader.readAsDataURL(file)
+			}, reject)
+		}, reject)
+		// #endif
+	})
+}
+
+
+
+export function getImageInfo(path, useCORS) {
+	return new Promise(async (resolve, reject) => {
+		let src = path
+		if (cache[path] && cache[path].errMsg) {
+			resolve(cache[path])
+		} else {
+			try {
+				// if (!isBase64 && PLATFORM == UNI_PLATFORM.PLUS && !/^\/?(static|_doc)\//.test(src)) {
+				// 	src = await downloadFile(path) as string
+				// } else 
+				// #ifdef MP || APP-PLUS
+				if (isBase64(path)) {
+					src = await base64ToPath(path)
+				}
+				// #endif
+				// #ifdef H5
+				if(useCORS) {
+					src = await pathToBase64(path)
+				}
+				// #endif
+				
+			} catch (error) {
+				reject({
+					...error,
+					src
+				})
+			}
+			uni.getImageInfo({
+				src,
+				success: (image) => {
+					const localReg = /^\.|^\/(?=[^\/])/;
+					// #ifdef MP-WEIXIN || MP-BAIDU || MP-QQ || MP-TOUTIAO
+					image.path = localReg.test(src) ?  `/${image.path}` : image.path;
+					// #endif
+					// #ifdef H5
+					image.path = image.path.replace(/^\./, window.location.origin)
+					// #endif
+					
+					if(this.canvas.createImage) {
+						const img = this.canvas.createImage()
+						img.src = image.path
+						img.onload = function() {
+							image.path = img
+							cache[path] = image
+							resolve(cache[path])
+						}
+						img.onerror = function(err) {
+							reject({err,path})
+						}
+					} else if (isDev) {
+						resolve(image)
+					} else {
+						cache[path] = image
+						resolve(cache[path])
+					}
+				},
+				fail(err) {
+					console.error({err, path})
+					reject({err,path})
+				}
+			})
+		}
+	})
+}
+
+export function downloadFile(url) {
+	if (!url) return Promise.reject({
+		err: 'no url'
+	})
+	return new Promise((resolve, reject) => {
+		if (cache[url]) {
+			return reject()
+		}
+		cache[url] = 1
+		uni.downloadFile({
+			url,
+			success(res) {
+				resolve(res)
+			},
+			fail(err) {
+				reject(err)
+			}
+		})
+	})
+}
+
+// #ifdef APP-PLUS
+const getLocalFilePath = (path) => {
+	if (path.indexOf('_www') === 0 || path.indexOf('_doc') === 0 || path.indexOf('_documents') === 0 || path
+		.indexOf('_downloads') === 0) {
+		return path
+	}
+	if (path.indexOf('file://') === 0) {
+		return path
+	}
+	if (path.indexOf('/storage/emulated/0/') === 0) {
+		return path
+	}
+	if (path.indexOf('/') === 0) {
+		const localFilePath = plus.io.convertAbsoluteFileSystem(path)
+		if (localFilePath !== path) {
+			return localFilePath
+		} else {
+			path = path.substr(1)
+		}
+	}
+	return '_www/' + path
+}
+const getFile = (url) => {
+	return new Promise((resolve, rejcet) => {
+		plus.io.resolveLocalFileSystemURL(url, resolve, (err) => {
+			resolve(false)
+		})
+	})
+}
+const createFile = ({
+	fs,
+	url,
+	target,
+	name
+}) => {
+	return new Promise((resolve, reject) => {
+		plus.io.resolveLocalFileSystemURL(url, res1 => {
+			fs.root.getDirectory(target, {
+				create: true
+			}, fileEntry => {
+				const success = () => {
+					res1.remove()
+					resolve()
+				}
+				getFile(target + name).then(res => {
+					if (res) {
+						res.remove((res2) => {
+							res1.moveTo(fileEntry, name, success, reject)
+						})
+					}
+					res1.moveTo(fileEntry, name, success, reject)
+				})
+			})
+		}, reject)
+	})
+}
+export function useNvue(target, version, timeout) {
+	return new Promise((resolve, reject) => {
+		plus.io.requestFileSystem(plus.io.PRIVATE_DOC, async (fs) => {
+			try {
+				cache['lime-painter'] = 0
+				let names = ['uni.webview.1.5.3.js', 'painter.js', 'index.html']
+				let urls = ['https://gitee.com/dcloud/uni-app/raw/dev/dist/',
+					'https://static-6d65bd90-8508-4d6c-abbc-a4ef5c8e49e7.bspapp.com/lime-painter/'
+				]
+				const oldVersion = plus.storage.getItem('lime-painter')
+				const isFile = await getFile(`${target}${names[1]}`)
+				if (isFile && oldVersion && compareVersion(oldVersion, version) >= 0) {
+					resolve()
+				} else {
+					for (var i = 0; i < names.length; i++) {
+						const name = names[i]
+						const file = await downloadFile(urls[i >= 1 ? 1 : 0] + name)
+						await createFile({
+							fs,
+							url: file.tempFilePath,
+							target,
+							name: name.includes('uni.webview') ? 'uni.webview.js' : name
+						})
+					}
+					plus.storage.setItem('lime-painter', version)
+					cache['lime-painter'] = version
+					resolve()
+				}
+			} catch (e) {
+				let index = parseInt(timeout / 20)
+				while (!cache['lime-painter'] && index) {
+					await sleep(20)
+					index--
+				}
+				if (cache['lime-painter']) {
+					resolve()
+				} else {
+					reject(e)
+				}
+			}
+		}, reject)
+	})
+}
+// #endif

+ 478 - 0
components/wike-painter/wike-painter.vue

xqd
@@ -0,0 +1,478 @@
+<template>
+	<view class="lime-painter" ref="limepainter">
+		<view v-if="canvasId && size" :style="styles">
+			<!-- #ifndef APP-NVUE -->
+			<canvas class="lime-painter__canvas" v-if="use2dCanvas" :id="canvasId" type="2d" :style="size"></canvas>
+			<canvas class="lime-painter__canvas" v-else :canvas-id="canvasId" :style="size" :id="canvasId"
+				:width="boardWidth * dpr" :height="boardHeight * dpr"></canvas>
+
+			<!-- #endif -->
+			<!-- #ifdef APP-NVUE -->
+			<web-view :style="size" ref="webview" src="/uni_modules/lime-painter/static/index.html"
+				class="lime-painter__canvas" @pagefinish="onPageFinish" @error="onError" @onPostMessage="onMessage">
+			</web-view>
+			<!-- #endif -->
+		</view>
+		<slot />
+	</view>
+</template>
+
+
+<script>
+	import {
+		parent
+	} from './common/relation'
+	import props from './props'
+	import {
+		toPx,
+		base64ToPath,
+		pathToBase64,
+		isBase64,
+		sleep,
+		getImageInfo
+	} from './utils';
+	//  #ifndef APP-NVUE
+	import {
+		compareVersion
+	} from './utils';
+	import Painter from './painter'
+	// import Painter from '@lime/'
+	const nvue = {}
+	//  #endif
+	//  #ifdef APP-NVUE
+	import nvue from './nvue'
+	//  #endif
+	export default {
+		name: 'lime-painter',
+		mixins: [props, parent('painter'), nvue],
+		data() {
+			return {
+				// #ifdef MP-WEIXIN || MP-TOUTIAO || MP-ALIPAY
+				use2dCanvas: true,
+				// #endif
+				// #ifndef MP-WEIXIN || MP-TOUTIAO || MP-ALIPAY
+				use2dCanvas: false,
+				// #endif
+				canvasHeight: 150,
+				canvasWidth: null,
+				parentWidth: 0,
+				inited: false,
+				progress: 0,
+				firstRender: 0,
+				done: false
+			};
+		},
+		computed: {
+			styles() {
+				return `${this.size}${this.customStyle||''};`
+			},
+			canvasId() {
+				return `l-painter${this._uid || this._.uid}`
+			},
+			size() {
+				if (this.boardWidth && this.boardHeight) {
+					return `width:${this.boardWidth}px; height: ${this.boardHeight}px;`;
+				}
+			},
+			dpr() {
+				return this.pixelRatio || uni.getSystemInfoSync().pixelRatio;
+			},
+			boardWidth() {
+				const {
+					width = 0
+				} = (this.elements && this.elements.css) || this.elements || this
+				const w = toPx(width || this.width)
+				return w || Math.max(w, toPx(this.canvasWidth));
+			},
+			boardHeight() {
+				const {
+					height = 0
+				} = (this.elements && this.elements.css) || this.elements || this
+				const h = toPx(height || this.height)
+				return h || Math.max(h, toPx(this.canvasHeight));
+			},
+			hasBoard() {
+				return this.board && Object.keys(this.board).length
+			},
+			elements() {
+				return this.hasBoard ? this.board : JSON.parse(JSON.stringify(this.el))
+			}
+		},
+		watch: {
+			// #ifdef MP-WEIXIN ||  MP-ALIPAY
+			size(v) {
+				// #ifdef MP-WEIXIN
+				if (this.use2dCanvas) {
+					this.inited = false;
+				}
+				// #endif
+				// #ifdef MP-ALIPAY
+				this.inited = false;
+				// #endif
+			},
+			// #endif
+		},
+		created() {
+			const {
+				SDKVersion,
+				version,
+				platform
+			} = uni.getSystemInfoSync();
+			// #ifdef MP-WEIXIN
+			this.use2dCanvas = this.type === '2d' && compareVersion(SDKVersion, '2.9.2') >= 0 && !this.isPC;
+			// #endif
+			// #ifdef MP-TOUTIAO
+			this.use2dCanvas = this.type === '2d' && compareVersion(SDKVersion, '1.78.0') >= 0;
+			// #endif
+			// #ifdef MP-ALIPAY
+			this.use2dCanvas = this.type === '2d' && compareVersion(my.SDKVersion, '2.7.15') >= 0;
+			// #endif
+		},
+		async mounted() {
+			await sleep(30)
+			await this.getParentWeith()
+			this.$nextTick(() => {
+				setTimeout(() => {
+					this.$watch('elements', this.watchRender, {
+						deep: true,
+						immediate: true
+					});
+				}, 30)
+			})
+		},
+		methods: {
+			async watchRender(val, old) {
+				if (!val || !val.views || (!this.firstRender ? !val.views.length : !this.firstRender) || !Object.keys(
+						val).length || JSON.stringify(val) == JSON.stringify(old)) return;
+				this.firstRender = 1
+				clearTimeout(this.rendertimer)
+				this.rendertimer = setTimeout(() => {
+					this.render(val);
+				}, this.beforeDelay)
+			},
+			async setFilePath(path, param) {
+				let filePath = path
+				const {
+					pathType = this.pathType
+				} = param || this
+				if (pathType == 'base64' && !isBase64(path)) {
+					filePath = await pathToBase64(path)
+				} else if (pathType == 'url' && isBase64(path)) {
+					filePath = await base64ToPath(path)
+				}
+				if (param && param.isEmit) {
+					this.$emit('success', filePath);
+				}
+				return filePath
+			},
+			async getSize(args) {
+				const {
+					width
+				} = args.css || args
+				const {
+					height
+				} = args.css || args
+				if (!this.size) {
+					if (width || height) {
+						this.canvasWidth = width || this.canvasWidth
+						this.canvasHeight = height || this.canvasHeight
+						await sleep(30);
+					} else {
+						await this.getParentWeith()
+					}
+				}
+			},
+			canvasToTempFilePathSync(args) {
+				this.stopWatch = this.$watch('done', (v) => {
+					if (v) {
+						this.canvasToTempFilePath(args)
+						this.stopWatch && this.stopWatch()
+					}
+				}, {
+					immediate: true
+				})
+
+			},
+			// #ifndef APP-NVUE
+			getParentWeith() {
+				return new Promise(resolve => {
+					uni.createSelectorQuery()
+						.in(this)
+						.select(`.lime-painter`)
+						.boundingClientRect()
+						.exec(res => {
+							const {
+								width,
+								height
+							} = res[0] || {}
+							this.parentWidth = Math.ceil(width || 0)
+							this.canvasWidth = this.parentWidth || 300
+							this.canvasHeight = height || this.canvasHeight || 150
+							resolve(res[0])
+						})
+				})
+			},
+			async render(args = {}) {
+				if (!Object.keys(args).length) {
+					return console.error('空对象')
+				}
+				this.progress = 0
+				this.done = false
+				await this.getSize(args)
+				const ctx = await this.getContext();
+				let {
+					use2dCanvas,
+					boardWidth,
+					boardHeight,
+					canvas,
+					afterDelay
+				} = this;
+				if (use2dCanvas && !canvas) {
+					return Promise.reject(new Error('render: fail canvas has not been created'));
+				}
+				this.boundary = {
+					top: 0,
+					left: 0,
+					width: boardWidth,
+					height: boardHeight
+				};
+				this.painter = null
+				if (!this.painter) {
+					const {
+						width
+					} = args.css || args
+					const {
+						height
+					} = args.css || args
+					if (!width && this.parentWidth) {
+						Object.assign(args, {
+							width: this.parentWidth
+						})
+					}
+					const param = {
+						context: ctx,
+						canvas,
+						width: boardWidth,
+						height: boardHeight,
+						pixelRatio: this.dpr,
+						useCORS: this.useCORS,
+						createImage: getImageInfo.bind(this),
+						listen: {
+							onProgress: (v) => {
+								this.progress = v
+								this.$emit('progress', v)
+							},
+							onEffectFail: (err) => {
+								this.$emit('faill', err)
+							}
+						}
+					}
+					this.painter = new Painter(param)
+				}
+
+				// vue3 赋值给data会引起图片无法绘制 
+				const {
+					width,
+					height
+				} = await this.painter.source(JSON.parse(JSON.stringify(args)))
+				this.boundary.height = this.canvasHeight = height
+				this.boundary.width = this.canvasWidth = width
+				await sleep(this.sleep);
+				// 可能会因为尺寸改变影响绘制上下文
+				this.painter.setContext(this.ctx)
+				await this.painter.render()
+				await new Promise(resolve => this.$nextTick(resolve));
+				if (!use2dCanvas) {
+					await this.canvasDraw();
+				}
+				if (afterDelay && use2dCanvas) {
+					await sleep(afterDelay);
+				}
+
+				console.log('done------------------');
+				this.$emit('done');
+				this.done = true
+				if (this.isCanvasToTempFilePath) {
+					this.canvasToTempFilePath()
+						.then(res => {
+							this.$emit('success', res.tempFilePath)
+						})
+						.catch(err => {
+							this.$emit('fail', new Error(JSON.stringify(err)));
+						});
+				}
+				return Promise.resolve({
+					ctx,
+					draw: this.painter,
+					node: this.node
+				});
+			},
+			canvasDraw(flag = false) {
+				return new Promise((resolve, reject) => this.ctx.draw(flag, () => setTimeout(() => resolve(),
+					this
+					.afterDelay)));
+			},
+			async getContext() {
+				if (!this.canvasWidth) {
+					this.$emit('fail', 'painter no size')
+					console.error('painter no size: 请给画板或父级设置尺寸')
+					return Promise.reject();
+				}
+				if (this.ctx && this.inited) {
+					return Promise.resolve(this.ctx);
+				}
+				const {
+					type,
+					use2dCanvas,
+					dpr,
+					boardWidth,
+					boardHeight
+				} = this;
+				const _getContext = () => {
+					return new Promise(resolve => {
+						uni.createSelectorQuery()
+							.in(this)
+							.select(`#${this.canvasId}`)
+							.boundingClientRect()
+							.exec(res => {
+								if (res) {
+									const ctx = uni.createCanvasContext(this.canvasId,
+										this);
+									if (!this.inited) {
+										this.inited = true;
+										this.use2dCanvas = false;
+										this.canvas = res;
+									}
+									// #ifdef MP-ALIPAY
+									ctx.scale(dpr, dpr);
+									// #endif
+									this.ctx = ctx
+									resolve(this.ctx);
+								}
+							});
+					});
+				};
+				if (!use2dCanvas) {
+					return _getContext();
+				}
+				return new Promise(resolve => {
+					uni.createSelectorQuery()
+						.in(this)
+						.select(`#${this.canvasId}`)
+						.node()
+						.exec(res => {
+							let {
+								node: canvas
+							} = res[0];
+							if (!canvas) {
+								this.use2dCanvas = false;
+								resolve(this.getContext());
+							}
+							const ctx = canvas.getContext(type);
+							if (!this.inited) {
+								this.inited = true;
+								this.use2dCanvas = true;
+								this.canvas = canvas;
+							}
+							this.ctx = ctx
+							resolve(this.ctx);
+						});
+				});
+			},
+			canvasToTempFilePath(args = {}) {
+				return new Promise(async (resolve, reject) => {
+					const {
+						use2dCanvas,
+						canvasId,
+						dpr,
+						fileType,
+						quality
+					} = this;
+
+					const success = async (res) => {
+						try {
+							const tempFilePath = await this.setFilePath(res
+								.tempFilePath || res)
+							resolve(Object.assign(res, {
+								tempFilePath
+							}))
+						} catch (e) {
+							this.$emit('fail', e)
+						}
+					}
+
+					let {
+						top: y = 0,
+						left: x = 0,
+						width,
+						height
+					} = this.boundary || this;
+					let destWidth = width * dpr;
+					let destHeight = height * dpr;
+					// #ifdef MP-ALIPAY
+					width = destWidth;
+					height = destHeight;
+					// #endif
+
+					const copyArgs = Object.assign({
+						x,
+						y,
+						width,
+						height,
+						destWidth,
+						destHeight,
+						canvasId,
+						fileType,
+						quality,
+						success,
+						fail: reject
+					}, args);
+
+					if (use2dCanvas) {
+						try {
+							// #ifndef MP-ALIPAY
+							if (!args.pathType && !this.pathType) {
+								args.pathType = 'url'
+							}
+							const tempFilePath = await this.setFilePath(this.canvas.toDataURL(
+								`image/${args.fileType||fileType}`.replace(/pg/,
+									'peg'), args.quality || quality), args)
+							args.success && args.success({
+								tempFilePath
+							})
+							resolve({
+								tempFilePath
+							})
+							// #endif
+							// #ifdef MP-ALIPAY
+							this.canvas.toTempFilePath(copyArgs)
+							// #endif
+						} catch (e) {
+							args.fail && args.fail(e)
+							reject(e)
+						}
+					} else {
+						// #ifdef MP-ALIPAY
+						uni.canvasToTempFilePath(copyArgs);
+						// #endif
+						// #ifndef MP-ALIPAY
+						uni.canvasToTempFilePath(copyArgs, this);
+						// #endif
+					}
+				})
+			}
+			// #endif
+		}
+	};
+</script>
+<style>
+	.lime-painter,
+	.lime-painter__canvas {
+		// #ifndef APP-NVUE
+		width: 100%;
+		// #endif
+		// #ifdef APP-NVUE
+		flex: 1;
+		// #endif
+	}
+</style>

+ 11 - 3
main.js

xqd xqd
@@ -4,6 +4,9 @@ import App from './App'
 import navBar from '@/components/navBar/index.vue'
 Vue.component('navBar', navBar)
 
+import popup from '@/components/popup/index.vue'
+Vue.component('dpopup', popup)
+
 import uView from '@/uni_modules/uview-ui'
 Vue.use(uView)
 
@@ -12,11 +15,16 @@ Vue.use(uView)
 import store from 'store/index.js'
 Vue.prototype.$store = store
 
-// import store from "@/store";
+// 常见功能函数封装
+Vue.prototype.$toast = (title, icon = "none", duration = 1500) => {
+	uni.showToast({
+		title,
+		icon,
+		duration
+	})
+}
 
-// let vuexStore = require('@/store/$t.mixin.js');
 
-// Vue.mixin(vuexStore);
 
 // 引入请求封装 
 require('./utils/request/index')(app)

+ 1 - 13
pages/category/index.vue

xqd xqd
@@ -3,7 +3,7 @@
 		<navBar title="分类" :back="false" color="white" background="green" />
 
 		<u-sticky bgColor="#fff">
-			<u-tabs :list="list1"></u-tabs>
+			<u-tabs :list="list1" :scrollable="false"></u-tabs>
 		</u-sticky>
 
 		<view class="page-body" :style="'height:' + height + 'px'">
@@ -50,18 +50,6 @@
 					name: '推荐',
 				}, {
 					name: '电影'
-				}, {
-					name: '科技'
-				}, {
-					name: '音乐'
-				}, {
-					name: '美食'
-				}, {
-					name: '文化'
-				}, {
-					name: '财经'
-				}, {
-					name: '手工'
 				}],
 
 

+ 26 - 10
pages/index/index.vue

xqd xqd xqd
@@ -5,6 +5,22 @@
 		<u-button text="测试vuex仓库" @click="testStore" type="primary"></u-button>
 		<u-button text="测试登录-vuex仓库" @click="testLogin" type="primary"></u-button>
 		<u-button text="测试登录退出登录" @click="testLogout" type="primary"></u-button>
+
+
+		<u-button text="测试提示弹框" @click="$toast('测试','success')" type="primary"></u-button>
+		<u-button text="测试自定义弹框" @click="show=true" type="primary"></u-button>
+
+
+		<dpopup :show="show" mode="bottom" :round="10" @close="show=false">
+			<view slot="content">
+				<view class="top">
+					顶部
+				</view>
+				<view class="content" style="height: 300px;">
+					内容
+				</view>
+			</view>
+		</dpopup>
 	</view>
 </template>
 
@@ -15,7 +31,7 @@
 	export default {
 		data() {
 			return {
-
+				show: false
 			}
 		},
 		methods: {
@@ -23,15 +39,15 @@
 
 				console.log('testStore()111111', this.$store.getters['user/testInfo']);
 				console.log('testStore()111111', this.$store.getters['user/testInfo2']);
-				// let res = await getValidateCode({
-				// 	phone: '15609038521',
-				// 	event: 'register'
-				// })
-				// uni.showToast({
-				// 	title: res.msg,
-				// 	icon: 'none'
-				// })
-				// console.log('发送短信验证码返回值', res);
+				let res = await getValidateCode({
+					phone: '15609038521',
+					event: 'register'
+				})
+				uni.showToast({
+					title: res.msg,
+					icon: 'none'
+				})
+				console.log('发送短信验证码返回值', res);
 				// if (res.code == 0) {}
 			},
 			testStore() {

+ 8 - 1
pages/my/index.vue

xqd xqd
@@ -4,10 +4,12 @@
 
 
 		<u-button text="测试获取用户信息" @click="testGetUserInfo" type="primary"></u-button>
+		<u-button text="测试二维码生成" @click="genQr" type="primary"></u-button>
 
 		<!-- 选择头像 -->
 		<view class="choose-avatar-row">
-			<button class="avatar-wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
+			<button class="avatar-wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar"
+				style="border-radius: 100rpx;">
 				<image class="avatar" :src="avatarUrl"></image>
 			</button>
 			<text>点击选择头像</text>
@@ -53,6 +55,11 @@
 			}
 		},
 		methods: {
+			genQr() {
+				uni.navigateTo({
+					url: '/pages/qrPage/index'
+				})
+			},
 			get_user() { // 获取用户信息
 				let _this = this
 				// uni.getUserProfile({

+ 519 - 0
pages/qrPage/index.scss

xqd
@@ -0,0 +1,519 @@
+.commission-wrap {
+		background: url('http://file.shopro.top/imgs/commission/commission_bg1.jpg') no-repeat;
+		background-size: cover;
+		height: 100%;
+		width: 100%;
+		position: absolute;
+		background-position: 50%;
+		transition: all 0.3s ease-in-out 0s;
+		overflow: hidden;
+		// padding-right: 30rpx;
+	}
+
+	// 进度条
+	.progress-box {
+		.progress-tip {
+			font-size: 24rpx;
+			font-weight: 500;
+			color: #c7b2ff;
+		}
+
+		.progress-num {
+			font-size: 24rpx;
+			position: absolute;
+			color: #c7b2ff;
+			bottom: -30rpx;
+			white-space: nowrap;
+		}
+
+		.round-wrap {
+			width: 30rpx;
+			height: 30rpx;
+			border: 2rpx solid #5c3cff;
+			background: linear-gradient(0deg, #a36fff 0%, #846fff 100%);
+			border-radius: 50%;
+			position: absolute;
+			bottom: -6rpx;
+			transform: translateY(-50%);
+			left: 0;
+			margin-left: -15rpx;
+
+			.round-inner {
+				width: 20rpx;
+				height: 20rpx;
+				border: 2rpx solid #5c3cff;
+				background: linear-gradient(0deg, #a36fff 0%, #846fff 100%);
+				border-radius: 50%;
+				position: absolute;
+				top: 50%;
+				left: 50%;
+				transform: translate(-50%, -50%);
+			}
+		}
+	}
+
+	// 佣金中心权限验证蒙层
+	.blur {
+		filter: blur(20rpx);
+		transition: all 0.3s ease-in-out 0s;
+	}
+
+	.auth-box {
+		width: 100%;
+		height: 100%;
+		background: none;
+
+		.notice-box {
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+			background-color: #fff;
+			width: 612rpx;
+			min-height: 658rpx;
+			background: #ffffff;
+			padding: 30rpx;
+			border-radius: 20rpx;
+
+			.img-wrap {
+				margin-bottom: 50rpx;
+
+				.notice-img {
+					width: 180rpx;
+					height: 170rpx;
+				}
+			}
+
+			.notice-title {
+				font-size: 35rpx;
+				font-weight: bold;
+				color: #46351b;
+				margin-bottom: 28rpx;
+			}
+
+			.notice-detail {
+				font-size: 28rpx;
+				font-weight: 400;
+				color: #999999;
+				line-height: 36rpx;
+				margin-bottom: 50rpx;
+			}
+
+			.notice-btn {
+				width: 492rpx;
+				line-height: 70rpx;
+				background: linear-gradient(-90deg, #a36fff, #5336ff);
+				box-shadow: 0px 7rpx 11rpx 2rpx rgba(124, 103, 214, 0.34);
+				border-radius: 35rpx;
+				font-size: 28rpx;
+				font-weight: 500;
+				color: #ffffff;
+				margin-bottom: 10rpx;
+			}
+
+			.back-btn {
+				width: 492rpx;
+				line-height: 70rpx;
+				font-size: 28rpx;
+				font-weight: 500;
+				color: #c5b8fb;
+				background: none;
+			}
+		}
+	}
+
+	// 成为分销商
+	.into-agent-modal {
+		.condition-box {
+			width: 640rpx;
+			height: 786rpx;
+			background: url('http://file.shopro.top/imgs/commission/into_commission.png') no-repeat;
+			background-size: 100% 100%;
+		}
+
+		.goods-condition {
+			width: 484rpx;
+			height: 580rpx;
+			padding: 80rpx 0 30rpx;
+			display: flex;
+			flex-direction: column;
+			justify-content: center;
+			align-items: center;
+			position: relative;
+
+			.card-wrap {
+				width: 484rpx;
+				height: 460rpx;
+				padding: 10rpx;
+				padding-bottom: 30rpx;
+			}
+
+			.modal-progress {
+				.progress-tip {
+					font-size: 24rpx;
+				}
+
+				.progress-box {
+					margin-right: 10rpx;
+
+					.cu-progress {
+						width: 200rpx;
+						position: relative;
+
+						.round-wrap {
+							width: 20rpx;
+							height: 20rpx;
+						}
+
+						.round-inner {
+							width: 10rpx;
+							height: 10rpx;
+						}
+					}
+				}
+			}
+
+			.card-box {
+				background: rgba(#c3b6ff, 0.3);
+				padding: 10rpx;
+				border-radius: 10rpx;
+
+				.img-wrap {
+					background: #fff;
+					width: 110rpx;
+					height: 110rpx;
+					border-radius: 10rpx;
+					margin-right: 20rpx;
+
+					.goods-img {
+						width: 110rpx;
+						height: 110rpx;
+						border-radius: 10rpx;
+					}
+				}
+
+				.detail {
+					height: 110rpx;
+					width: 280rpx;
+					align-items: flex-start;
+
+					.title {
+						font-size: 20rpx;
+						font-weight: 500;
+						color: #333333;
+						line-height: 35rpx;
+						text-align: left;
+					}
+
+					.sub {
+						font-size: 16rpx;
+						font-weight: 500;
+						color: #9281e2;
+						text-align: left;
+						width: 280rpx;
+					}
+				}
+			}
+
+			.filter-card {
+				filter: grayscale(100%);
+				filter: gray;
+			}
+
+			.btn-box {
+				background-color: #fff;
+				width: 100%;
+				position: absolute;
+				bottom: 0;
+
+				.buy-btn {
+					width: 390rpx;
+					line-height: 60rpx;
+					background: linear-gradient(-90deg, #a36fff, #5336ff);
+					box-shadow: 0px 7rpx 11rpx 2rpx rgba(124, 103, 214, 0.34);
+					border-radius: 35rpx;
+					font-size: 24rpx;
+					font-weight: 500;
+					color: #ffffff;
+				}
+
+				.tips {
+					font-size: 20rpx;
+					font-weight: 500;
+					color: #9281e2;
+				}
+			}
+		}
+	}
+
+	// 用户资料卡片
+	.user-card {
+		// width: 690rpx;
+		// width: 97%;
+		min-height: 350rpx;
+		border-radius: 14rpx;
+		margin: 30rpx;
+		background: url('http://file.shopro.top/imgs/commission/commission_card_bg.png') no-repeat;
+		// background: url('@/static/images/default.jpg') no-repeat;
+		background-size: 100% 100%;
+		padding-top: 10rpx;
+
+		.card-top {
+			padding: 40rpx 40rpx 30rpx;
+			margin-bottom: 30rpx;
+			border-bottom: 1px solid rgba(#fff, 0.12);
+
+			.user-name {
+				font-size: 26rpx;
+				font-weight: 500;
+				color: #ffffff;
+				line-height: 30rpx;
+				margin-bottom: 20rpx;
+			}
+
+			.log-btn {
+				width: 86rpx;
+				line-height: 41rpx;
+				border: 1rpx solid rgba(#ffffff, 0.33);
+				border-radius: 32rpx;
+				font-size: 22rpx;
+				font-weight: 400;
+				color: #ffffff;
+			}
+
+			.look-btn {
+				color: #fff;
+				font-size: 40rpx;
+			}
+		}
+
+		.head-img-box {
+			margin-right: 26rpx;
+			width: 76rpx;
+			height: 76rpx;
+			border-radius: 50px;
+			position: relative;
+			background: #fff;
+			padding: 10rpx;
+			background-clip: padding-box;
+
+			.head-img {
+				width: 66rpx;
+				height: 66rpx;
+				border-radius: 50%;
+				position: absolute;
+				top: 50%;
+				left: 50%;
+				transform: translate(-50%, -50%);
+			}
+		}
+
+		.user-info-box {
+			.tag-box {
+				background: rgba(0, 0, 0, 0.2);
+				border-radius: 21rpx;
+				line-height: 38rpx;
+
+				.tag-img {
+					width: 36rpx;
+					height: 36rpx;
+					border-radius: 50%;
+				}
+
+				.tag-title {
+					font-size: 20rpx;
+					padding: 0 10rpx;
+					font-weight: 500;
+					color: rgba(255, 255, 255, 1);
+					line-height: 36rpx;
+				}
+			}
+		}
+
+		.card-bottom {
+			margin: 0 40rpx 40rpx;
+
+			.item-title {
+				font-size: 24rpx;
+
+				font-weight: 400;
+				color: #ffffff;
+				line-height: 30rpx;
+			}
+
+			.item-detail {
+				font-size: 40rpx;
+				font-family: DIN;
+				font-weight: 500;
+				color: #fefefe;
+				line-height: 30rpx;
+				margin-top: 30rpx;
+			}
+		}
+	}
+
+	// 滚动明细
+	.commission-log {
+		min-height: 400rpx;
+		padding: 0 30rpx;
+		margin-top: 60rpx;
+
+		.log-scroll {
+			height: 380rpx;
+
+			.log-item-box {
+				height: 78rpx;
+
+				.log-time {
+					margin-left: 30rpx;
+					font-size: 22rpx;
+					font-weight: 500;
+					color: #fefefe;
+					text-align: right;
+				}
+			}
+
+			.loadmore-wrap {
+				line-height: 80rpx;
+			}
+
+			.log-item {
+				height: 48rpx;
+				background: rgba(#5e49c3, 0.4);
+				border-radius: 24rpx;
+				padding-left: 6rpx;
+				padding-right: 20rpx;
+
+				.log-img {
+					width: 40rpx;
+					height: 40rpx;
+					border-radius: 50%;
+					margin-right: 10rpx;
+				}
+
+				.log-text {
+					font-size: 22rpx;
+					font-weight: 500;
+					color: #fefefe;
+					max-width: 480rpx;
+				}
+			}
+		}
+	}
+
+	// 功能菜单
+	.commission-bottom-bg {
+		position: fixed;
+		width: 100%;
+		bottom: 0;
+		z-index: 6;
+	}
+
+	.menu-box {
+		flex-wrap: wrap;
+		margin: 0rpx;
+		// position: fixed;
+		// width: 750rpx;
+		bottom: 0;
+		z-index: 10;
+
+		.menu-item {
+			// width: (690rpx/4);
+			width: 25%;
+			margin-bottom: 50rpx;
+
+			.item-img {
+				width: 68rpx;
+				height: 68rpx;
+			}
+
+			.item-title {
+				font-size: 24rpx;
+				font-weight: 600;
+				color: #fff;
+				line-height: 30rpx;
+				margin-top: 16rpx;
+			}
+		}
+	}
+
+	.bill {
+		margin: 30rpx;
+		font-weight: bold;
+	}
+
+	.u-flex-col {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+	}
+
+	.poster {
+		padding: 24rpx 40rpx;
+
+		.footer-btn {
+			margin-top: 24rpx;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+
+			view {
+				width: 319rpx;
+				height: 66rpx;
+				border-radius: 40rpx;
+				border: 1px solid #4070ff;
+				font-size: 26rpx;
+				font-family: PingFangSC-Regular, PingFang SC;
+				font-weight: 400;
+				color: #4070ff;
+				line-height: 66rpx;
+				text-align: center;
+			}
+
+			.save {
+				background: #4070ff;
+				color: #ffffff;
+			}
+		}
+	}
+
+	.dygbhg {
+		background: #ffffff;
+		border-radius: 15rpx 15rpx 0 0;
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		box-shadow: 0px 0px 10px #00000024;
+		display: flex;
+		align-items: center;
+		justify-content: space-evenly;
+	}
+
+	.whole {
+		width: 45%;
+		height: 88rpx;
+		display: flex;
+		color: #ffffff;
+		align-items: center;
+		justify-content: center;
+		background: #f3f3f3;
+		font-weight: bold;
+		border-radius: 60rpx;
+		color: #3d7eff;
+	}
+
+	.distinguish {
+		width: 45%;
+		height: 88rpx;
+		display: flex;
+		color: #ffffff;
+		align-items: center;
+		justify-content: center;
+		background: #3d7eff;
+		font-weight: bold;
+		border-radius: 60rpx;
+		margin: 38rpx 0;
+		margin-left: 4%;
+	}

+ 264 - 14
pages/qrPage/index.vue

xqd xqd xqd xqd xqd xqd xqd xqd
@@ -3,13 +3,30 @@
 		<navBar title="二维码进入的页面" :back="true" color="white" background="green" />
 		<button @click="getAccessToken">生成AccessToken</button>
 		<button @click="genQr">生成进入小程序的二维码</button>
+		<button @click="createPoster">测试生成海报</button>
 
-		<image :src="testUrl" mode=""></image>
+		<image @click="previewPic" :src="testUrl" mode=""></image>
+
+
+		<u-popup :show="showPoster" mode="bottom" @close="showPoster = false">
+			<!-- <view :style="{height: tobheight+'px'}"></view> -->
+			<scroll-view scroll-y="true" :style="{maxHeight: posterheight +'px'}">
+
+				<wike-painter :board="posterObj" @done="posterSuccess" ref="painter"></wike-painter>
+				<view style="height: 78px;"></view>
+				<view class="dygbhg">
+					<view class="whole" @click="showPoster = false">取消</view>
+					<view class="distinguish" @click="toSave">保存/分享</view>
+				</view>
+			</scroll-view>
+
+
+		</u-popup>
 	</view>
 </template>
 
 <script>
-	// import navBar from '@/components/navBar/index.vue'
+	import wikePainter from '@/components/wike-painter/wike-painter.vue'
 	var util = require('@/utils/decodeQrQuery.js')
 	import {
 		getBase64Image
@@ -17,19 +34,72 @@
 
 	import uploadUrl from '@/common/config.js'
 	export default {
-		// components: {
-		// 	navBar
-		// },
+		components: {
+			wikePainter
+		},
 		data() {
 			return {
 				kcardCode: '',
-				testUrl: ''
+				testUrl: '',
+				info: {
+					poster_bg_img_path: 'http://file.shopro.top/imgs/commission/commission_card_bg.png',
+					poster_bg_width: '750',
+					poster_bg_height: '1334',
+
+					poster_qrcode_x: '514',
+					poster_qrcode_y: '1174',
+
+					poster_bg_img: "1671",
+					poster_bg_img_path: "https://nywhcm.com/addons/wike_aging/public/static/storage/20230625/74f8be11f3f174e63576a777c71d644b.jpg",
+					// poster_bg_img_path: "https://nywhcm.com/addons/wike_aging/public/static/storage/20230322/17859fbc20087bd430f224905f5d9370.jpg",
+
+					poster_bg_img_filename: "分销海报.jpg",
+					poster_qrcode_width: "135",
+					poster_qrcode_width_path: "https://nywhcm.com/addons/wike_aging/public/static/storage/20230322/17859fbc20087bd430f224905f5d9370.jpg",
+					poster_qrcode_width_filename: "tmp_c1537e2c3beb0a3d14f87a63da8b84cc548ea7871f918188.jpg",
+
+				},
+
+				qrcode: 'https://nywhcm.com/addons/wike_aging/public/h5/?uniacid=5059&spm=4825.1.0.1.1',
+				// qrcode: 'https://nywhcm.com/addons/wike_aging/public/static/storage/20230322/17859fbc20087bd430f224905f5d9370.jpg',
+
+				showPoster: false,
+				posterObj: {},
+				posterheight: 0
 			}
 		},
 		onLoad(options) {
 
-			console.log('二维码页面onLoad:', options, getBase64Image);
+			const that = this;
+
+			if (this.platform == 'wxMiniProgram') {
+				var menumtop = uni.getMenuButtonBoundingClientRect().top - uni.getSystemInfoSync().statusBarHeight
+				var paddingtop = uni.getSystemInfoSync().statusBarHeight + menumtop
+				this.tobheight = (menumtop + paddingtop + uni.getMenuButtonBoundingClientRect().height)
+			}
+			this.posterheight = uni.$u.sys().windowHeight - this.tobheight
+
+			console.log('二维码页面onLoad:', options);
+			// 获取小程序启动时的参数
+			let obj = wx.getLaunchOptionsSync();
+			let query = null;
 
+			if (options.scene || obj.query.scene) {
+				// 这里是用开发者工具模拟的时候要先用 encodeURIComponent 编译,模拟真实传递参数的效果,项目发布审核的时候这句话要注释掉
+				// query = options ? encodeURIComponent(options.scene) : encodeURIComponent(obj.query.scene);
+				query = options ? decodeURIComponent(options.scene) : decodeURIComponent(obj.query.scene);
+				// query =  decodeURIComponent(obj.query.scene);
+
+				//解析参数
+				let web_key = query.split("-")[0];
+				let web_template = query.split("-")[1];
+				let web_id = query.split("-")[2];
+				console.log("第一个参数:", web_key);
+				console.log("第二个参数:", web_template);
+				console.log("第三个参数:", web_id);
+			}
+
+			// 'scene=asaa234354565-32323432kjkjkjkHHHHH-你好'
 
 			// if (options.kcardCode) {
 			// 	console.log('需要获取的二维码参数kcardCode:', options.kcardCode);
@@ -64,6 +134,11 @@
 
 		},
 		methods: {
+			previewPic() {
+				uni.previewImage({
+					urls: [this.testUrl]
+				})
+			},
 			getAccessToken() {
 				let that = this
 				let appId = 'wx98ab2939999e13de'
@@ -88,7 +163,8 @@
 					responseType: 'arraybuffer',
 					data: JSON.stringify({
 						scene: 'kcardCode=123456',
-						page: 'pages/qrPage/index',
+						// page: 'pages/qrPage/index',
+						page: 'pages/index/index',
 						check_path: false
 					}),
 					header: {
@@ -96,10 +172,41 @@
 					},
 					method: 'POST',
 					success: function(res) {
-						console.log(res);
+						// const imageArrayBuffer = res.data;
+						// const base64Str = wx.arrayBufferToBase64(imageArrayBuffer);
+
+						// let filePath = `${wx.env.USER_DATA_PATH}/temp${Date.now()}.jpg`
+						// wx.getFileSystemManager().writeFile({
+						// 	filePath,
+						// 	data: base64Str,
+						// 	encoding: 'base64',
+						// 	success: function(res) {
+						// 		that.testUrl = filePath
+						// 		console.log('wx.getFileSystemManager()', res,
+						// 			`${wx.env.USER_DATA_PATH}/temp.jpg`);
+						// 		// wx.saveImageToPhotosAlbum({
+						// 		// 	filePath: res.filePath,
+						// 		// 	success: function() {
+						// 		// 		console.log('保存成功');
+						// 		// 	},
+						// 		// 	fail: function(err) {
+						// 		// 		console.log('保存失败', err);
+						// 		// 	}
+						// 		// });
+						// 	},
+						// 	fail: function(err) {
+						// 		console.log('创建临时文件失败', err);
+						// 	}
+						// });
+						// that.upImg(`${wx.env.USER_DATA_PATH}/temp.jpg`, 2)
+
+						// return
+						// console.log(res);
 						const base64 = wx.arrayBufferToBase64(res.data);
 						that.testUrl = 'data:image/jpeg;base64,' + base64;
-						console.log('testUrl----base64', that.testUrl, base64, res.data);
+						that.qrcode = 'data:image/jpeg;base64,' + base64
+						// that.createPoster()
+						// console.log('testUrl----base64', that.testUrl, base64, res.data);
 					}
 				})
 			},
@@ -107,8 +214,8 @@
 
 			},
 
-			upImg(file) {
-				console.log('upImg的file', file)
+			upImg(file, type = 1) {
+				// console.log('upImg的file', file)
 				let _this = this
 				uni.uploadFile({
 					url: uploadUrl.baseUrl, // 上传的 URL 地址
@@ -125,9 +232,13 @@
 						let result = JSON.parse(uploadRes.data)
 						// localStorage.set('imgUrl', result.data.fileUrl)
 						if (result.code == 0) {
-							_this.avatarUrl = result.data.url
+							if (type == 2) {
+								_this.testUrl = result.data.url
+							} else {
+								_this.avatarUrl = result.data.url
+							}
 							// _this.user_img = result.data.url
-							console.log('上传后的头像url地址', result.data.url)
+							console.log('上传后的阿里云url地址', result.data.url)
 						}
 					},
 					fail: function(err) {
@@ -135,6 +246,145 @@
 					}
 				})
 			},
+
+
+
+
+			// 测试生成海报
+			async createPoster(e) {
+				let that = this;
+				let httpsurl = '';
+				console.log('httpsurl----', httpsurl);
+				uni.showLoading({
+					title: '海报渲染中'
+				});
+
+				if (that.info.poster_bg_img_path.indexOf("https") < 0) {
+					httpsurl = await that.getdownload(that.info.poster_bg_img_path.replace("http:", "https:"));
+				} else {
+					httpsurl = await that.getdownload(that.info.poster_bg_img_path);
+				}
+				if (httpsurl == 'fail') {
+					uni.hideLoading();
+					uni.showToast({
+						title: '生成失败',
+						icon: 'none'
+					})
+					return;
+				}
+				let proportionally = this.info.poster_bg_width / uni.$u.sys().windowWidth;
+				(this.posterObj = {
+					width: (this.info.poster_bg_width / proportionally) + 'px',
+					height: (this.info.poster_bg_height / proportionally) + 'px',
+					background: '#fff',
+					borderRadius: '16rpx',
+
+					views: [{
+							src: httpsurl,
+							type: "image",
+							css: {
+								width: (this.info.poster_bg_width / proportionally) + 'px',
+								height: (this.info.poster_bg_height / proportionally) + 'px',
+							}
+						},
+						{
+							type: 'view',
+							css: {
+								left: (this.info.poster_qrcode_x / proportionally) + 'px',
+								top: (this.info.poster_qrcode_y / proportionally) + 'px',
+								position: 'fixed',
+
+							},
+							// #ifdef H5
+							views: [{
+								type: 'qrcode',
+								text: this.qrcode,
+								css: {
+									width: (this.info.poster_qrcode_width / proportionally) + 'px',
+									height: (this.info.poster_qrcode_width / proportionally) + 'px',
+									background: '#fff'
+								}
+							}],
+							// #endif
+							// #ifdef MP-WEIXIN
+							views: [{
+								type: 'image',
+								src: this.qrcode,
+								css: {
+									width: (this.info.poster_qrcode_width / proportionally) + 'px',
+									height: (this.info.poster_qrcode_width / proportionally) + 'px',
+									background: '#fff'
+								}
+							}],
+							// #endif
+						}
+					]
+					// #ifdef H5
+					// #endif
+					// #ifdef MP-WEIXIN
+					// #endif
+				}),
+				(this.showPoster = true);
+			},
+
+			toSave() {
+				uni.showLoading({
+					title: '海报生成中'
+				});
+				this.$refs.painter.canvasToTempFilePathSync({
+					// 在nvue里是jpeg
+					fileType: 'jpg',
+					quality: 1,
+					success: res => {
+						// #ifdef MP-WEIXIN
+						wx.showShareImageMenu({
+							path: res.tempFilePath
+						})
+						this.showPoster = false;
+						uni.hideLoading();
+						// #endif
+						// #ifdef H5
+						this.showPoster = false;
+						uni.hideLoading();
+						uni.showModal({
+							confirmColor: '#26B3A0',
+							confirmText: '查看图片',
+							title: '提示',
+							content: '查看图片后长按图片即可保存或分享',
+							success(src) {
+								if (src.confirm) {
+									uni.previewImage({
+										urls: [res.tempFilePath]
+									});
+								} else if (src.cancel) {
+									this.showPoster = true;
+								}
+							}
+						});
+						// #endif
+					}
+				});
+			},
+			posterSuccess() {
+				uni.hideLoading();
+			},
+			getdownload(e) {
+				return new Promise((resolve, reject) => {
+					uni.request({
+						url: e,
+						method: 'GET',
+						responseType: 'arraybuffer',
+						success: ress => {
+							let base64 = wx.arrayBufferToBase64(ress.data);
+							base64 = 'data:image/jpeg;base64,' + base64
+							resolve(base64);
+						},
+						fail: (e) => {
+							resolve('fail');
+						}
+					})
+				});
+			},
 		}
 	}
 </script>

+ 6 - 1
pages/service/index.vue

xqd xqd
@@ -2,6 +2,7 @@
 	<view class="container">
 		<navBar title="售后" :back="false" color="white" background="green" />
 
+		<button @click="goDt">跳地图</button>
 	</view>
 </template>
 
@@ -17,7 +18,11 @@
 			}
 		},
 		methods: {
-
+			goDt() {
+				uni.navigateTo({
+					url: '/pages/map/index'
+				})
+			}
 		}
 	}
 </script>

+ 0 - 0
pages/test/index.scss


+ 27 - 0
pages/test/index.vue

xqd
@@ -0,0 +1,27 @@
+<template>
+	<view class="container">
+		<navBar title="售后" :back="false" color="white" background="green" />
+
+	</view>
+</template>
+
+<script>
+	// import navBar from '@/components/navBar/index.vue'
+	export default {
+		// components: {
+		// 	navBar
+		// },
+		data() {
+			return {
+
+			}
+		},
+		methods: {
+
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	@import "./index.scss";
+</style>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/build/mp-weixin/common/runtime.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/build/mp-weixin/common/vendor.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/build/mp-weixin/components/wike-painter/wike-painter.js


+ 4 - 0
unpackage/dist/build/mp-weixin/components/wike-painter/wike-painter.json

xqd
@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
unpackage/dist/build/mp-weixin/components/wike-painter/wike-painter.wxml

xqd
@@ -0,0 +1 @@
+<view data-ref="limepainter" class="lime-painter vue-ref"><block wx:if="{{canvasId&&size}}"><view style="{{(styles)}}"><block wx:if="{{use2dCanvas}}"><canvas class="lime-painter__canvas" style="{{(size)}}" id="{{canvasId}}" type="2d"></canvas></block><block wx:else><canvas class="lime-painter__canvas" style="{{(size)}}" canvas-id="{{canvasId}}" id="{{canvasId}}" width="{{boardWidth*dpr}}" height="{{boardHeight*dpr}}"></canvas></block></view></block><slot></slot></view>

+ 2 - 0
unpackage/dist/build/mp-weixin/components/wike-painter/wike-painter.wxss

xqd
@@ -0,0 +1,2 @@
+.lime-painter,
+.lime-painter__canvas{width:100%}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/build/mp-weixin/pages/index/index.js


+ 1 - 1
unpackage/dist/build/mp-weixin/pages/index/index.wxml

xqd
@@ -1 +1 @@
-<view class="container data-v-34fe0eec"><nav-bar vue-id="8dd740cc-1" title="首页" back="{{false}}" color="white" background="green" class="data-v-34fe0eec" bind:__l="__l"></nav-bar><u-button vue-id="8dd740cc-2" text="测试网络请求" type="primary" data-event-opts="{{[['^click',[['testReq']]]]}}" bind:click="__e" class="data-v-34fe0eec" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-3" text="测试vuex仓库" type="primary" data-event-opts="{{[['^click',[['testStore']]]]}}" bind:click="__e" class="data-v-34fe0eec" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-4" text="测试登录-vuex仓库" type="primary" data-event-opts="{{[['^click',[['testLogin']]]]}}" bind:click="__e" class="data-v-34fe0eec" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-5" text="测试登录退出登录" type="primary" data-event-opts="{{[['^click',[['testLogout']]]]}}" bind:click="__e" class="data-v-34fe0eec" bind:__l="__l"></u-button></view>
+<view class="container data-v-235eee5c"><nav-bar vue-id="8dd740cc-1" title="首页" back="{{false}}" color="white" background="green" class="data-v-235eee5c" bind:__l="__l"></nav-bar><u-button vue-id="8dd740cc-2" text="测试网络请求" type="primary" data-event-opts="{{[['^click',[['testReq']]]]}}" bind:click="__e" class="data-v-235eee5c" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-3" text="测试vuex仓库" type="primary" data-event-opts="{{[['^click',[['testStore']]]]}}" bind:click="__e" class="data-v-235eee5c" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-4" text="测试登录-vuex仓库" type="primary" data-event-opts="{{[['^click',[['testLogin']]]]}}" bind:click="__e" class="data-v-235eee5c" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-5" text="测试登录退出登录" type="primary" data-event-opts="{{[['^click',[['testLogout']]]]}}" bind:click="__e" class="data-v-235eee5c" bind:__l="__l"></u-button></view>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/build/mp-weixin/pages/my/index.js


+ 1 - 1
unpackage/dist/build/mp-weixin/pages/my/index.wxml

xqd
@@ -1 +1 @@
-<view class="container data-v-daf6fe3a"><nav-bar vue-id="4a180d5e-1" title="我的" back="{{false}}" color="white" background="green" class="data-v-daf6fe3a" bind:__l="__l"></nav-bar><u-button vue-id="4a180d5e-2" text="测试获取用户信息" type="primary" data-event-opts="{{[['^click',[['testGetUserInfo']]]]}}" bind:click="__e" class="data-v-daf6fe3a" bind:__l="__l"></u-button><view class="choose-avatar-row data-v-daf6fe3a"><button class="avatar-wrapper data-v-daf6fe3a" open-type="chooseAvatar" data-event-opts="{{[['chooseavatar',[['onChooseAvatar',['$event']]]]]}}" bindchooseavatar="__e"><image class="avatar data-v-daf6fe3a" src="{{avatarUrl}}"></image></button><text class="data-v-daf6fe3a">点击选择头像</text></view><view class="choose-nickname-row data-v-daf6fe3a"><text class="data-v-daf6fe3a">昵称</text><input type="nickname" placeholder="请输入昵称" data-event-opts="{{[['input',[['__set_model',['','nickName','$event',[]]],['inputName',['$event']]]]]}}" value="{{nickName}}" bindinput="__e" class="data-v-daf6fe3a"/></view><button open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getphonenumber',['$event']]]]]}}" bindgetphonenumber="__e" class="data-v-daf6fe3a">获取用户手机号</button><button data-event-opts="{{[['tap',[['get_user',['$event']]]]]}}" bindtap="__e" class="data-v-daf6fe3a">获取用户头像昵称等信息</button><view class="data-v-daf6fe3a">头像</view><image src="{{user_img}}" mode class="data-v-daf6fe3a"></image><view class="data-v-daf6fe3a">{{'昵称:'+user_name+''}}</view></view>
+<view class="container data-v-9feb6eba"><nav-bar vue-id="4a180d5e-1" title="我的" back="{{false}}" color="white" background="green" class="data-v-9feb6eba" bind:__l="__l"></nav-bar><u-button vue-id="4a180d5e-2" text="测试获取用户信息" type="primary" data-event-opts="{{[['^click',[['testGetUserInfo']]]]}}" bind:click="__e" class="data-v-9feb6eba" bind:__l="__l"></u-button><u-button vue-id="4a180d5e-3" text="测试二维码生成" type="primary" data-event-opts="{{[['^click',[['genQr']]]]}}" bind:click="__e" class="data-v-9feb6eba" bind:__l="__l"></u-button><view class="choose-avatar-row data-v-9feb6eba"><button class="avatar-wrapper data-v-9feb6eba" open-type="chooseAvatar" data-event-opts="{{[['chooseavatar',[['onChooseAvatar',['$event']]]]]}}" bindchooseavatar="__e"><image class="avatar data-v-9feb6eba" src="{{avatarUrl}}"></image></button><text class="data-v-9feb6eba">点击选择头像</text></view><view class="choose-nickname-row data-v-9feb6eba"><text class="data-v-9feb6eba">昵称</text><input type="nickname" placeholder="请输入昵称" data-event-opts="{{[['input',[['__set_model',['','nickName','$event',[]]],['inputName',['$event']]]]]}}" value="{{nickName}}" bindinput="__e" class="data-v-9feb6eba"/></view><button open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getphonenumber',['$event']]]]]}}" bindgetphonenumber="__e" class="data-v-9feb6eba">获取用户手机号</button><button data-event-opts="{{[['tap',[['get_user',['$event']]]]]}}" bindtap="__e" class="data-v-9feb6eba">获取用户头像昵称等信息</button><view class="data-v-9feb6eba">头像</view><image src="{{user_img}}" mode class="data-v-9feb6eba"></image><view class="data-v-9feb6eba">{{'昵称:'+user_name+''}}</view></view>

+ 4 - 4
unpackage/dist/build/mp-weixin/pages/my/index.wxss

xqd
@@ -1,4 +1,4 @@
-view.data-v-daf6fe3a{box-sizing:border-box}.container.data-v-daf6fe3a{width:100%;height:100%;position:absolute;left:0;bottom:0;padding:0 20px;box-sizing:border-box;display:flex;flex-direction:column;background-color:#fff;border-top-left-radius:10px;border-top-right-radius:10px}.container .title.data-v-daf6fe3a{width:100%;height:12%;font-size:20px;font-weight:700;padding-top:20px}.container .title text.data-v-daf6fe3a:nth-child(2){display:block;font-size:14px;font-weight:400;margin-top:5px}.container .choose-avatar-row.data-v-daf6fe3a,
-.container .choose-nickname-row.data-v-daf6fe3a{width:100%;height:9%;display:flex;justify-content:flex-start;align-items:center;padding:10px 2px;font-size:14px;border-top:1px solid #ccc;border-bottom:1px solid #ccc}.container .choose-avatar-row .avatar-wrapper.data-v-daf6fe3a,
-.container .choose-nickname-row .avatar-wrapper.data-v-daf6fe3a{width:40px;height:40px;margin:0;padding:0;margin-right:10px}.container .choose-avatar-row .avatar-wrapper .avatar.data-v-daf6fe3a,
-.container .choose-nickname-row .avatar-wrapper .avatar.data-v-daf6fe3a{width:100%;height:100%}.container .choose-nickname-row.data-v-daf6fe3a{border-top:none}.container .choose-nickname-row text.data-v-daf6fe3a{width:45px;margin-right:10px}.container .login-row.data-v-daf6fe3a{width:100%;height:30%;padding-top:20px;display:flex}.container .login-row button.data-v-daf6fe3a{font-size:14px;width:30%;height:40px;display:flex;align-items:center;justify-content:center;border-color:transparent;color:#07c160}.container .login-row .inactive.data-v-daf6fe3a{color:#ccc}
+view.data-v-9feb6eba{box-sizing:border-box}.container.data-v-9feb6eba{width:100%;height:100%;position:absolute;left:0;bottom:0;padding:0 20px;box-sizing:border-box;display:flex;flex-direction:column;background-color:#fff;border-top-left-radius:10px;border-top-right-radius:10px}.container .title.data-v-9feb6eba{width:100%;height:12%;font-size:20px;font-weight:700;padding-top:20px}.container .title text.data-v-9feb6eba:nth-child(2){display:block;font-size:14px;font-weight:400;margin-top:5px}.container .choose-avatar-row.data-v-9feb6eba,
+.container .choose-nickname-row.data-v-9feb6eba{width:100%;height:9%;display:flex;justify-content:flex-start;align-items:center;padding:10px 2px;font-size:14px;border-top:1px solid #ccc;border-bottom:1px solid #ccc}.container .choose-avatar-row .avatar-wrapper.data-v-9feb6eba,
+.container .choose-nickname-row .avatar-wrapper.data-v-9feb6eba{width:40px;height:40px;margin:0;padding:0;margin-right:10px}.container .choose-avatar-row .avatar-wrapper .avatar.data-v-9feb6eba,
+.container .choose-nickname-row .avatar-wrapper .avatar.data-v-9feb6eba{width:100%;height:100%}.container .choose-nickname-row.data-v-9feb6eba{border-top:none}.container .choose-nickname-row text.data-v-9feb6eba{width:45px;margin-right:10px}.container .login-row.data-v-9feb6eba{width:100%;height:30%;padding-top:20px;display:flex}.container .login-row button.data-v-9feb6eba{font-size:14px;width:30%;height:40px;display:flex;align-items:center;justify-content:center;border-color:transparent;color:#07c160}.container .login-row .inactive.data-v-9feb6eba{color:#ccc}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/build/mp-weixin/pages/qrPage/index.js


+ 4 - 1
unpackage/dist/build/mp-weixin/pages/qrPage/index.json

xqd
@@ -1,4 +1,7 @@
 {
   "navigationBarTitleText": "二维码页面",
-  "usingComponents": {}
+  "usingComponents": {
+    "u-popup": "/uni_modules/uview-ui/components/u-popup/u-popup",
+    "wike-painter": "/components/wike-painter/wike-painter"
+  }
 }

+ 1 - 1
unpackage/dist/build/mp-weixin/pages/qrPage/index.wxml

xqd
@@ -1 +1 @@
-<view class="container data-v-3c668c36"><nav-bar vue-id="1feea8ba-1" title="二维码进入的页面" back="{{true}}" color="white" background="green" class="data-v-3c668c36" bind:__l="__l"></nav-bar><button data-event-opts="{{[['tap',[['getAccessToken',['$event']]]]]}}" bindtap="__e" class="data-v-3c668c36">生成AccessToken</button><button data-event-opts="{{[['tap',[['genQr',['$event']]]]]}}" bindtap="__e" class="data-v-3c668c36">生成进入小程序的二维码</button><image src="{{testUrl}}" mode class="data-v-3c668c36"></image></view>
+<view class="container data-v-8aea22fc"><nav-bar vue-id="1feea8ba-1" title="二维码进入的页面" back="{{true}}" color="white" background="green" class="data-v-8aea22fc" bind:__l="__l"></nav-bar><button data-event-opts="{{[['tap',[['getAccessToken',['$event']]]]]}}" bindtap="__e" class="data-v-8aea22fc">生成AccessToken</button><button data-event-opts="{{[['tap',[['genQr',['$event']]]]]}}" bindtap="__e" class="data-v-8aea22fc">生成进入小程序的二维码</button><button data-event-opts="{{[['tap',[['createPoster',['$event']]]]]}}" bindtap="__e" class="data-v-8aea22fc">测试生成海报</button><image src="{{testUrl}}" mode data-event-opts="{{[['tap',[['previewPic',['$event']]]]]}}" bindtap="__e" class="data-v-8aea22fc"></image><u-popup vue-id="1feea8ba-2" show="{{showPoster}}" mode="bottom" data-event-opts="{{[['^close',[['e0']]]]}}" bind:close="__e" class="data-v-8aea22fc" bind:__l="__l" vue-slots="{{['default']}}"><scroll-view style="{{'max-height:'+(posterheight+'px')+';'}}" scroll-y="true" class="data-v-8aea22fc"><wike-painter vue-id="{{('1feea8ba-3')+','+('1feea8ba-2')}}" board="{{posterObj}}" data-ref="painter" data-event-opts="{{[['^done',[['posterSuccess']]]]}}" bind:done="__e" class="data-v-8aea22fc vue-ref" bind:__l="__l"></wike-painter><view style="height:78px;" class="data-v-8aea22fc"></view><view class="dygbhg data-v-8aea22fc"><view data-event-opts="{{[['tap',[['e1',['$event']]]]]}}" class="whole data-v-8aea22fc" bindtap="__e">取消</view><view data-event-opts="{{[['tap',[['toSave',['$event']]]]]}}" class="distinguish data-v-8aea22fc" bindtap="__e">保存/分享</view></view></scroll-view></u-popup></view>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/build/mp-weixin/pages/qrPage/index.wxss


+ 1 - 1
unpackage/dist/build/mp-weixin/project.private.config.json

xqd
@@ -1,6 +1,6 @@
 {
   "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
-  "projectname": "mp-weixin",
+  "projectname": "jiancaiPro",
   "setting": {
     "compileHotReLoad": true
   }

+ 10 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.js

xqd
@@ -0,0 +1,10 @@
+(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["uni_modules/uview-ui/components/u-overlay/u-overlay"],{"08f6":function(n,t,e){"use strict";(function(n){var u=e("4ea4");Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=u(e("40f0")),o={name:"u-overlay",mixins:[n.$u.mpMixin,n.$u.mixin,i.default],computed:{overlayStyle:function(){var t={position:"fixed",top:0,left:0,right:0,zIndex:this.zIndex,bottom:0,"background-color":"rgba(0, 0, 0, ".concat(this.opacity,")")};return n.$u.deepMerge(t,n.$u.addStyle(this.customStyle))}},methods:{clickHandler:function(){this.$emit("click")}}};t.default=o}).call(this,e("543d")["default"])},"198f":function(n,t,e){},"85e1":function(n,t,e){"use strict";e.r(t);var u=e("aea9"),i=e("efcc");for(var o in i)["default"].indexOf(o)<0&&function(n){e.d(t,n,(function(){return i[n]}))}(o);e("f876");var r=e("f0c5"),a=Object(r["a"])(i["default"],u["b"],u["c"],!1,null,"72cb839f",null,!1,u["a"],void 0);t["default"]=a.exports},aea9:function(n,t,e){"use strict";e.d(t,"b",(function(){return i})),e.d(t,"c",(function(){return o})),e.d(t,"a",(function(){return u}));var u={uTransition:function(){return Promise.all([e.e("common/vendor"),e.e("uni_modules/uview-ui/components/u-transition/u-transition")]).then(e.bind(null,"2279"))}},i=function(){var n=this.$createElement;this._self._c},o=[]},efcc:function(n,t,e){"use strict";e.r(t);var u=e("08f6"),i=e.n(u);for(var o in u)["default"].indexOf(o)<0&&function(n){e.d(t,n,(function(){return u[n]}))}(o);t["default"]=i.a},f876:function(n,t,e){"use strict";var u=e("198f"),i=e.n(u);i.a}}]);
+;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
+    'uni_modules/uview-ui/components/u-overlay/u-overlay-create-component',
+    {
+        'uni_modules/uview-ui/components/u-overlay/u-overlay-create-component':(function(module, exports, __webpack_require__){
+            __webpack_require__('543d')['createComponent'](__webpack_require__("85e1"))
+        })
+    },
+    [['uni_modules/uview-ui/components/u-overlay/u-overlay-create-component']]
+]);

+ 6 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.json

xqd
@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "u-transition": "/uni_modules/uview-ui/components/u-transition/u-transition"
+  }
+}

+ 1 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.wxml

xqd
@@ -0,0 +1 @@
+<u-transition vue-id="a307ff6a-1" show="{{show}}" custom-class="u-overlay" duration="{{duration}}" custom-style="{{overlayStyle}}" data-event-opts="{{[['^click',[['clickHandler']]]]}}" bind:click="__e" class="data-v-72cb839f" bind:__l="__l" vue-slots="{{['default']}}"><slot></slot></u-transition>

+ 1 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.wxss

xqd
@@ -0,0 +1 @@
+view.data-v-72cb839f, scroll-view.data-v-72cb839f, swiper-item.data-v-72cb839f{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.u-overlay.data-v-72cb839f{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.7)}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.js


+ 10 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.json

xqd
@@ -0,0 +1,10 @@
+{
+  "usingComponents": {
+    "u-overlay": "/uni_modules/uview-ui/components/u-overlay/u-overlay",
+    "u-transition": "/uni_modules/uview-ui/components/u-transition/u-transition",
+    "u-status-bar": "/uni_modules/uview-ui/components/u-status-bar/u-status-bar",
+    "u-icon": "/uni_modules/uview-ui/components/u-icon/u-icon",
+    "u-safe-bottom": "/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom"
+  },
+  "component": true
+}

+ 1 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.wxml

xqd
@@ -0,0 +1 @@
+<view class="u-popup data-v-599ead9e"><block wx:if="{{overlay}}"><u-overlay vue-id="7ae01353-1" show="{{show}}" duration="{{overlayDuration}}" customStyle="{{overlayStyle}}" opacity="{{overlayOpacity}}" data-event-opts="{{[['^click',[['overlayClick']]]]}}" bind:click="__e" class="data-v-599ead9e" bind:__l="__l"></u-overlay></block><u-transition vue-id="7ae01353-2" show="{{show}}" customStyle="{{transitionStyle}}" mode="{{position}}" duration="{{duration}}" data-event-opts="{{[['^afterEnter',[['afterEnter']]],['^click',[['clickHandler']]]]}}" bind:afterEnter="__e" bind:click="__e" class="data-v-599ead9e" bind:__l="__l" vue-slots="{{['default']}}"><view data-event-opts="{{[['tap',[['noop',['$event']]]]]}}" class="u-popup__content data-v-599ead9e" style="{{$root.s0}}" catchtap="__e"><block wx:if="{{safeAreaInsetTop}}"><u-status-bar vue-id="{{('7ae01353-3')+','+('7ae01353-2')}}" class="data-v-599ead9e" bind:__l="__l"></u-status-bar></block><slot></slot><block wx:if="{{closeable}}"><view class="{{['u-popup__content__close','data-v-599ead9e','u-popup__content__close--'+closeIconPos]}}" hover-class="u-popup__content__close--hover" hover-stay-time="150" data-event-opts="{{[['tap',[['close',['$event']]]]]}}" catchtap="__e"><u-icon vue-id="{{('7ae01353-4')+','+('7ae01353-2')}}" name="close" color="#909399" size="18" bold="{{true}}" class="data-v-599ead9e" bind:__l="__l"></u-icon></view></block><block wx:if="{{safeAreaInsetBottom}}"><u-safe-bottom vue-id="{{('7ae01353-5')+','+('7ae01353-2')}}" class="data-v-599ead9e" bind:__l="__l"></u-safe-bottom></block></view></u-transition></view>

+ 1 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.wxss

xqd
@@ -0,0 +1 @@
+view.data-v-599ead9e, scroll-view.data-v-599ead9e, swiper-item.data-v-599ead9e{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.u-popup.data-v-599ead9e{flex:1}.u-popup__content.data-v-599ead9e{background-color:#fff;position:relative}.u-popup__content--round-top.data-v-599ead9e{border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.u-popup__content--round-left.data-v-599ead9e{border-top-left-radius:0;border-top-right-radius:10px;border-bottom-left-radius:0;border-bottom-right-radius:10px}.u-popup__content--round-right.data-v-599ead9e{border-top-left-radius:10px;border-top-right-radius:0;border-bottom-left-radius:10px;border-bottom-right-radius:0}.u-popup__content--round-bottom.data-v-599ead9e{border-top-left-radius:10px;border-top-right-radius:10px;border-bottom-left-radius:0;border-bottom-right-radius:0}.u-popup__content--round-center.data-v-599ead9e{border-top-left-radius:10px;border-top-right-radius:10px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.u-popup__content__close.data-v-599ead9e{position:absolute}.u-popup__content__close--hover.data-v-599ead9e{opacity:.4}.u-popup__content__close--top-left.data-v-599ead9e{top:15px;left:15px}.u-popup__content__close--top-right.data-v-599ead9e{top:15px;right:15px}.u-popup__content__close--bottom-left.data-v-599ead9e{bottom:15px;left:15px}.u-popup__content__close--bottom-right.data-v-599ead9e{right:15px;bottom:15px}

+ 10 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js

xqd
@@ -0,0 +1,10 @@
+(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom"],{"306d":function(t,e,n){"use strict";n.r(e);var u=n("d7b0"),i=n.n(u);for(var a in u)["default"].indexOf(a)<0&&function(t){n.d(e,t,(function(){return u[t]}))}(a);e["default"]=i.a},4155:function(t,e,n){"use strict";var u=n("55d0"),i=n.n(u);i.a},"55d0":function(t,e,n){},8551:function(t,e,n){"use strict";n.r(e);var u=n("fdea"),i=n("306d");for(var a in i)["default"].indexOf(a)<0&&function(t){n.d(e,t,(function(){return i[t]}))}(a);n("4155");var o=n("f0c5"),f=Object(o["a"])(i["default"],u["b"],u["c"],!1,null,"01127184",null,!1,u["a"],void 0);e["default"]=f.exports},d7b0:function(t,e,n){"use strict";(function(t){var u=n("4ea4");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var i=u(n("400e")),a={name:"u-safe-bottom",mixins:[t.$u.mpMixin,t.$u.mixin,i.default],data:function(){return{safeAreaBottomHeight:0,isNvue:!1}},computed:{style:function(){return t.$u.deepMerge({},t.$u.addStyle(this.customStyle))}},mounted:function(){}};e.default=a}).call(this,n("543d")["default"])},fdea:function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return i})),n.d(e,"a",(function(){}));var u=function(){var t=this.$createElement,e=(this._self._c,this.__get_style([this.style]));this.$mp.data=Object.assign({},{$root:{s0:e}})},i=[]}}]);
+;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
+    'uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom-create-component',
+    {
+        'uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom-create-component':(function(module, exports, __webpack_require__){
+            __webpack_require__('543d')['createComponent'](__webpack_require__("8551"))
+        })
+    },
+    [['uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom-create-component']]
+]);

+ 4 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.json

xqd
@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.wxml

xqd
@@ -0,0 +1 @@
+<view class="{{['u-safe-bottom','data-v-01127184',!isNvue&&'u-safe-area-inset-bottom']}}" style="{{$root.s0}}"></view>

+ 1 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.wxss

xqd
@@ -0,0 +1 @@
+.u-safe-bottom.data-v-01127184{width:100%}

+ 10 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.js

xqd
@@ -0,0 +1,10 @@
+(global["webpackJsonp"]=global["webpackJsonp"]||[]).push([["uni_modules/uview-ui/components/u-status-bar/u-status-bar"],{"0eeb":function(t,e,n){"use strict";n.r(e);var u=n("e55a"),a=n.n(u);for(var i in u)["default"].indexOf(i)<0&&function(t){n.d(e,t,(function(){return u[t]}))}(i);e["default"]=a.a},"14ab":function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return a})),n.d(e,"a",(function(){}));var u=function(){var t=this.$createElement,e=(this._self._c,this.__get_style([this.style]));this.$mp.data=Object.assign({},{$root:{s0:e}})},a=[]},"2cee":function(t,e,n){"use strict";n.r(e);var u=n("14ab"),a=n("0eeb");for(var i in a)["default"].indexOf(i)<0&&function(t){n.d(e,t,(function(){return a[t]}))}(i);n("87d4");var r=n("f0c5"),s=Object(r["a"])(a["default"],u["b"],u["c"],!1,null,"2292e5f5",null,!1,u["a"],void 0);e["default"]=s.exports},"87d4":function(t,e,n){"use strict";var u=n("f000"),a=n.n(u);a.a},e55a:function(t,e,n){"use strict";(function(t){var u=n("4ea4");Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var a=u(n("c346")),i={name:"u-status-bar",mixins:[t.$u.mpMixin,t.$u.mixin,a.default],data:function(){return{}},computed:{style:function(){var e={};return e.height=t.$u.addUnit(t.$u.sys().statusBarHeight,"px"),e.backgroundColor=this.bgColor,t.$u.deepMerge(e,t.$u.addStyle(this.customStyle))}}};e.default=i}).call(this,n("543d")["default"])},f000:function(t,e,n){}}]);
+;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
+    'uni_modules/uview-ui/components/u-status-bar/u-status-bar-create-component',
+    {
+        'uni_modules/uview-ui/components/u-status-bar/u-status-bar-create-component':(function(module, exports, __webpack_require__){
+            __webpack_require__('543d')['createComponent'](__webpack_require__("2cee"))
+        })
+    },
+    [['uni_modules/uview-ui/components/u-status-bar/u-status-bar-create-component']]
+]);

+ 4 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.json

xqd
@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.wxml

xqd
@@ -0,0 +1 @@
+<view class="u-status-bar data-v-2292e5f5" style="{{$root.s0}}"><slot></slot></view>

+ 1 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.wxss

xqd
@@ -0,0 +1 @@
+.u-status-bar.data-v-2292e5f5{width:100%}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.js


+ 4 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.json

xqd
@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 1 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.wxml

xqd
@@ -0,0 +1 @@
+<block wx:if="{{inited}}"><view data-ref="u-transition" data-event-opts="{{[['tap',[['clickHandler',['$event']]]],['touchmove',[['noop',['$event']]]]]}}" class="{{['u-transition','data-v-06ef4c74','vue-ref',classes]}}" style="{{$root.s0}}" bindtap="__e" bindtouchmove="__e"><slot></slot></view></block>

+ 29 - 0
unpackage/dist/build/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.wxss

xqd
@@ -0,0 +1,29 @@
+view.data-v-06ef4c74, scroll-view.data-v-06ef4c74, swiper-item.data-v-06ef4c74{display:flex;flex-direction:column;flex-shrink:0;flex-grow:0;flex-basis:auto;align-items:stretch;align-content:flex-start}.u-fade-enter-active.data-v-06ef4c74,
+.u-fade-leave-active.data-v-06ef4c74{transition-property:opacity}.u-fade-enter.data-v-06ef4c74,
+.u-fade-leave-to.data-v-06ef4c74{opacity:0}.u-fade-zoom-enter.data-v-06ef4c74,
+.u-fade-zoom-leave-to.data-v-06ef4c74{-webkit-transform:scale(.95);transform:scale(.95);opacity:0}.u-fade-zoom-enter-active.data-v-06ef4c74,
+.u-fade-zoom-leave-active.data-v-06ef4c74{transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform}.u-fade-down-enter-active.data-v-06ef4c74,
+.u-fade-down-leave-active.data-v-06ef4c74,
+.u-fade-left-enter-active.data-v-06ef4c74,
+.u-fade-left-leave-active.data-v-06ef4c74,
+.u-fade-right-enter-active.data-v-06ef4c74,
+.u-fade-right-leave-active.data-v-06ef4c74,
+.u-fade-up-enter-active.data-v-06ef4c74,
+.u-fade-up-leave-active.data-v-06ef4c74{transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.u-fade-up-enter.data-v-06ef4c74,
+.u-fade-up-leave-to.data-v-06ef4c74{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);opacity:0}.u-fade-down-enter.data-v-06ef4c74,
+.u-fade-down-leave-to.data-v-06ef4c74{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);opacity:0}.u-fade-left-enter.data-v-06ef4c74,
+.u-fade-left-leave-to.data-v-06ef4c74{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);opacity:0}.u-fade-right-enter.data-v-06ef4c74,
+.u-fade-right-leave-to.data-v-06ef4c74{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);opacity:0}.u-slide-down-enter-active.data-v-06ef4c74,
+.u-slide-down-leave-active.data-v-06ef4c74,
+.u-slide-left-enter-active.data-v-06ef4c74,
+.u-slide-left-leave-active.data-v-06ef4c74,
+.u-slide-right-enter-active.data-v-06ef4c74,
+.u-slide-right-leave-active.data-v-06ef4c74,
+.u-slide-up-enter-active.data-v-06ef4c74,
+.u-slide-up-leave-active.data-v-06ef4c74{transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.u-slide-up-enter.data-v-06ef4c74,
+.u-slide-up-leave-to.data-v-06ef4c74{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.u-slide-down-enter.data-v-06ef4c74,
+.u-slide-down-leave-to.data-v-06ef4c74{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.u-slide-left-enter.data-v-06ef4c74,
+.u-slide-left-leave-to.data-v-06ef4c74{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.u-slide-right-enter.data-v-06ef4c74,
+.u-slide-right-leave-to.data-v-06ef4c74{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.u-zoom-enter-active.data-v-06ef4c74,
+.u-zoom-leave-active.data-v-06ef4c74{transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.u-zoom-enter.data-v-06ef4c74,
+.u-zoom-leave-to.data-v-06ef4c74{-webkit-transform:scale(.95);transform:scale(.95)}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/navBar/index.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/popup/index.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/wike-painter/wike-painter.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/category/index.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/map/index.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/my/index.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/qrPage/index.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/service/index.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uni-icons/components/uni-icons/uni-icons.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-badge/u-badge.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-button/u-button.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-icon/u-icon.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-loading-icon/u-loading-icon.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-overlay/u-overlay.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-popup/u-popup.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-status-bar/u-status-bar.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-sticky/u-sticky.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-tabs/u-tabs.js.map


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/uview-ui/components/u-transition/u-transition.js.map


+ 2 - 1
unpackage/dist/dev/mp-weixin/app.json

xqd
@@ -91,6 +91,7 @@
     "chooseLocation"
   ],
   "usingComponents": {
-    "nav-bar": "/components/navBar/index"
+    "nav-bar": "/components/navBar/index",
+    "dpopup": "/components/popup/index"
   }
 }

+ 19 - 8
unpackage/dist/dev/mp-weixin/common/main.js

xqd xqd xqd
@@ -8,7 +8,7 @@
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-/* WEBPACK VAR INJECTION */(function(wx, createApp) {
+/* WEBPACK VAR INJECTION */(function(wx, uni, createApp) {
 
 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
 var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 11));
@@ -23,18 +23,29 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
 wx.__webpack_require_UNI_MP_PLUGIN__ = __webpack_require__;
 var navBar = function navBar() {
   __webpack_require__.e(/*! require.ensure | components/navBar/index */ "components/navBar/index").then((function () {
-    return resolve(__webpack_require__(/*! @/components/navBar/index.vue */ 211));
+    return resolve(__webpack_require__(/*! @/components/navBar/index.vue */ 222));
   }).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
 };
 _vue.default.component('navBar', navBar);
+var popup = function popup() {
+  __webpack_require__.e(/*! require.ensure | components/popup/index */ "components/popup/index").then((function () {
+    return resolve(__webpack_require__(/*! @/components/popup/index.vue */ 229));
+  }).bind(null, __webpack_require__)).catch(__webpack_require__.oe);
+};
+_vue.default.component('dpopup', popup);
 _vue.default.use(_uviewUi.default);
 _vue.default.prototype.$store = _index.default;
 
-// import store from "@/store";
-
-// let vuexStore = require('@/store/$t.mixin.js');
-
-// Vue.mixin(vuexStore);
+// 常见功能函数封装
+_vue.default.prototype.$toast = function (title) {
+  var icon = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "none";
+  var duration = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1500;
+  uni.showToast({
+    title: title,
+    icon: icon,
+    duration: duration
+  });
+};
 
 // 引入请求封装 
 __webpack_require__(/*! ./utils/request/index */ 164)(app);
@@ -42,7 +53,7 @@ _vue.default.config.productionTip = false;
 _App.default.mpType = 'app';
 var app = new _vue.default(_objectSpread({}, _App.default));
 createApp(app).$mount();
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["createApp"]))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["createApp"]))
 
 /***/ }),
 

+ 2 - 2
unpackage/dist/dev/mp-weixin/common/runtime.js

xqd
@@ -105,11 +105,11 @@
 /******/
 /******/
 /******/ 		// mini-css-extract-plugin CSS loading
-/******/ 		var cssChunks = {"components/navBar/index":1,"uni_modules/uview-ui/components/u-button/u-button":1,"uni_modules/uview-ui/components/u-sticky/u-sticky":1,"uni_modules/uview-ui/components/u-tabs/u-tabs":1,"uni_modules/uni-icons/components/uni-icons/uni-icons":1,"uni_modules/uview-ui/components/u-icon/u-icon":1,"uni_modules/uview-ui/components/u-loading-icon/u-loading-icon":1,"uni_modules/uview-ui/components/u-badge/u-badge":1};
+/******/ 		var cssChunks = {"components/navBar/index":1,"components/popup/index":1,"uni_modules/uview-ui/components/u-button/u-button":1,"uni_modules/uview-ui/components/u-sticky/u-sticky":1,"uni_modules/uview-ui/components/u-tabs/u-tabs":1,"components/wike-painter/wike-painter":1,"uni_modules/uview-ui/components/u-popup/u-popup":1,"uni_modules/uni-icons/components/uni-icons/uni-icons":1,"uni_modules/uview-ui/components/u-icon/u-icon":1,"uni_modules/uview-ui/components/u-loading-icon/u-loading-icon":1,"uni_modules/uview-ui/components/u-badge/u-badge":1,"uni_modules/uview-ui/components/u-overlay/u-overlay":1,"uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom":1,"uni_modules/uview-ui/components/u-status-bar/u-status-bar":1,"uni_modules/uview-ui/components/u-transition/u-transition":1};
 /******/ 		if(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);
 /******/ 		else if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {
 /******/ 			promises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {
-/******/ 				var href = "" + ({"components/navBar/index":"components/navBar/index","uni_modules/uview-ui/components/u-button/u-button":"uni_modules/uview-ui/components/u-button/u-button","uni_modules/uview-ui/components/u-sticky/u-sticky":"uni_modules/uview-ui/components/u-sticky/u-sticky","uni_modules/uview-ui/components/u-tabs/u-tabs":"uni_modules/uview-ui/components/u-tabs/u-tabs","uni_modules/uni-icons/components/uni-icons/uni-icons":"uni_modules/uni-icons/components/uni-icons/uni-icons","uni_modules/uview-ui/components/u-icon/u-icon":"uni_modules/uview-ui/components/u-icon/u-icon","uni_modules/uview-ui/components/u-loading-icon/u-loading-icon":"uni_modules/uview-ui/components/u-loading-icon/u-loading-icon","uni_modules/uview-ui/components/u-badge/u-badge":"uni_modules/uview-ui/components/u-badge/u-badge"}[chunkId]||chunkId) + ".wxss";
+/******/ 				var href = "" + ({"components/navBar/index":"components/navBar/index","components/popup/index":"components/popup/index","uni_modules/uview-ui/components/u-button/u-button":"uni_modules/uview-ui/components/u-button/u-button","uni_modules/uview-ui/components/u-sticky/u-sticky":"uni_modules/uview-ui/components/u-sticky/u-sticky","uni_modules/uview-ui/components/u-tabs/u-tabs":"uni_modules/uview-ui/components/u-tabs/u-tabs","components/wike-painter/wike-painter":"components/wike-painter/wike-painter","uni_modules/uview-ui/components/u-popup/u-popup":"uni_modules/uview-ui/components/u-popup/u-popup","uni_modules/uni-icons/components/uni-icons/uni-icons":"uni_modules/uni-icons/components/uni-icons/uni-icons","uni_modules/uview-ui/components/u-icon/u-icon":"uni_modules/uview-ui/components/u-icon/u-icon","uni_modules/uview-ui/components/u-loading-icon/u-loading-icon":"uni_modules/uview-ui/components/u-loading-icon/u-loading-icon","uni_modules/uview-ui/components/u-badge/u-badge":"uni_modules/uview-ui/components/u-badge/u-badge","uni_modules/uview-ui/components/u-overlay/u-overlay":"uni_modules/uview-ui/components/u-overlay/u-overlay","uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom":"uni_modules/uview-ui/components/u-safe-bottom/u-safe-bottom","uni_modules/uview-ui/components/u-status-bar/u-status-bar":"uni_modules/uview-ui/components/u-status-bar/u-status-bar","uni_modules/uview-ui/components/u-transition/u-transition":"uni_modules/uview-ui/components/u-transition/u-transition"}[chunkId]||chunkId) + ".wxss";
 /******/ 				var fullhref = __webpack_require__.p + href;
 /******/ 				var existingLinkTags = document.getElementsByTagName("link");
 /******/ 				for(var i = 0; i < existingLinkTags.length; i++) {

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1697 - 74
unpackage/dist/dev/mp-weixin/common/vendor.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 12 - 12
unpackage/dist/dev/mp-weixin/components/navBar/index.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 180 - 0
unpackage/dist/dev/mp-weixin/components/popup/index.js


+ 6 - 0
unpackage/dist/dev/mp-weixin/components/popup/index.json

xqd
@@ -0,0 +1,6 @@
+{
+  "usingComponents": {
+    "u-popup": "/uni_modules/uview-ui/components/u-popup/u-popup"
+  },
+  "component": true
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/components/popup/index.wxml

xqd
@@ -0,0 +1 @@
+<view class="data-v-4710af78"><u-popup vue-id="9b043d7c-1" show="{{show}}" mode="{{mode}}" round="{{round}}" data-event-opts="{{[['^close',[['close']]],['^open',[['open']]]]}}" bind:close="__e" bind:open="__e" class="data-v-4710af78" bind:__l="__l" vue-slots="{{['default']}}"><view class="topBar data-v-4710af78">按钮等<button data-event-opts="{{[['tap',[['close',['$event']]]]]}}" bindtap="__e" class="data-v-4710af78">关闭</button></view><slot name="content"></slot></u-popup></view>

+ 4 - 0
unpackage/dist/dev/mp-weixin/components/popup/index.wxss

xqd
@@ -0,0 +1,4 @@
+@charset "UTF-8";
+/* 水平间距 */
+/* 水平间距 */
+

+ 732 - 0
unpackage/dist/dev/mp-weixin/components/wike-painter/wike-painter.js

xqd
@@ -0,0 +1,732 @@
+(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["components/wike-painter/wike-painter"],{
+
+/***/ 270:
+/*!**********************************************************************!*\
+  !*** D:/desktop/jiancaiPro/components/wike-painter/wike-painter.vue ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _wike_painter_vue_vue_type_template_id_4a5229c4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wike-painter.vue?vue&type=template&id=4a5229c4& */ 271);
+/* harmony import */ var _wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./wike-painter.vue?vue&type=script&lang=js& */ 273);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+/* harmony import */ var _wike_painter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wike-painter.vue?vue&type=style&index=0&lang=css& */ 279);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 32);
+
+var renderjs
+
+
+
+
+
+/* normalize component */
+
+var component = Object(_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(
+  _wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__["default"],
+  _wike_painter_vue_vue_type_template_id_4a5229c4___WEBPACK_IMPORTED_MODULE_0__["render"],
+  _wike_painter_vue_vue_type_template_id_4a5229c4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"],
+  false,
+  null,
+  null,
+  null,
+  false,
+  _wike_painter_vue_vue_type_template_id_4a5229c4___WEBPACK_IMPORTED_MODULE_0__["components"],
+  renderjs
+)
+
+component.options.__file = "components/wike-painter/wike-painter.vue"
+/* harmony default export */ __webpack_exports__["default"] = (component.exports);
+
+/***/ }),
+
+/***/ 271:
+/*!*****************************************************************************************************!*\
+  !*** D:/desktop/jiancaiPro/components/wike-painter/wike-painter.vue?vue&type=template&id=4a5229c4& ***!
+  \*****************************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_template_id_4a5229c4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./wike-painter.vue?vue&type=template&id=4a5229c4& */ 272);
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_template_id_4a5229c4___WEBPACK_IMPORTED_MODULE_0__["render"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_template_id_4a5229c4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_template_id_4a5229c4___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
+
+/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_17_0_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_template_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_template_id_4a5229c4___WEBPACK_IMPORTED_MODULE_0__["components"]; });
+
+
+
+/***/ }),
+
+/***/ 272:
+/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--17-0!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/desktop/jiancaiPro/components/wike-painter/wike-painter.vue?vue&type=template&id=4a5229c4& ***!
+  \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! exports provided: render, staticRenderFns, recyclableRender, components */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
+var components
+var render = function () {
+  var _vm = this
+  var _h = _vm.$createElement
+  var _c = _vm._self._c || _h
+}
+var recyclableRender = false
+var staticRenderFns = []
+render._withStripped = true
+
+
+
+/***/ }),
+
+/***/ 273:
+/*!***********************************************************************************************!*\
+  !*** D:/desktop/jiancaiPro/components/wike-painter/wike-painter.vue?vue&type=script&lang=js& ***!
+  \***********************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./wike-painter.vue?vue&type=script&lang=js& */ 274);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_13_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_script_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); 
+
+/***/ }),
+
+/***/ 274:
+/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--13-1!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/script.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/desktop/jiancaiPro/components/wike-painter/wike-painter.vue?vue&type=script&lang=js& ***!
+  \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(uni) {
+
+var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 55));
+var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 57));
+var _relation = __webpack_require__(/*! ./common/relation */ 275);
+var _props = _interopRequireDefault(__webpack_require__(/*! ./props */ 276));
+var _utils = __webpack_require__(/*! ./utils */ 277);
+var _painter = _interopRequireDefault(__webpack_require__(/*! ./painter */ 278));
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+
+// import Painter from '@lime/'
+var nvue = {};
+var _default = {
+  name: 'lime-painter',
+  mixins: [_props.default, (0, _relation.parent)('painter'), nvue],
+  data: function data() {
+    return {
+      use2dCanvas: true,
+      canvasHeight: 150,
+      canvasWidth: null,
+      parentWidth: 0,
+      inited: false,
+      progress: 0,
+      firstRender: 0,
+      done: false
+    };
+  },
+  computed: {
+    styles: function styles() {
+      return "".concat(this.size).concat(this.customStyle || '', ";");
+    },
+    canvasId: function canvasId() {
+      return "l-painter".concat(this._uid || this._.uid);
+    },
+    size: function size() {
+      if (this.boardWidth && this.boardHeight) {
+        return "width:".concat(this.boardWidth, "px; height: ").concat(this.boardHeight, "px;");
+      }
+    },
+    dpr: function dpr() {
+      return this.pixelRatio || uni.getSystemInfoSync().pixelRatio;
+    },
+    boardWidth: function boardWidth() {
+      var _ref = this.elements && this.elements.css || this.elements || this,
+        _ref$width = _ref.width,
+        width = _ref$width === void 0 ? 0 : _ref$width;
+      var w = (0, _utils.toPx)(width || this.width);
+      return w || Math.max(w, (0, _utils.toPx)(this.canvasWidth));
+    },
+    boardHeight: function boardHeight() {
+      var _ref2 = this.elements && this.elements.css || this.elements || this,
+        _ref2$height = _ref2.height,
+        height = _ref2$height === void 0 ? 0 : _ref2$height;
+      var h = (0, _utils.toPx)(height || this.height);
+      return h || Math.max(h, (0, _utils.toPx)(this.canvasHeight));
+    },
+    hasBoard: function hasBoard() {
+      return this.board && Object.keys(this.board).length;
+    },
+    elements: function elements() {
+      return this.hasBoard ? this.board : JSON.parse(JSON.stringify(this.el));
+    }
+  },
+  watch: {
+    size: function size(v) {
+      if (this.use2dCanvas) {
+        this.inited = false;
+      }
+    }
+  },
+  created: function created() {
+    var _uni$getSystemInfoSyn = uni.getSystemInfoSync(),
+      SDKVersion = _uni$getSystemInfoSyn.SDKVersion,
+      version = _uni$getSystemInfoSyn.version,
+      platform = _uni$getSystemInfoSyn.platform;
+    this.use2dCanvas = this.type === '2d' && (0, _utils.compareVersion)(SDKVersion, '2.9.2') >= 0 && !this.isPC;
+  },
+  mounted: function mounted() {
+    var _this = this;
+    return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+      return _regenerator.default.wrap(function _callee$(_context) {
+        while (1) {
+          switch (_context.prev = _context.next) {
+            case 0:
+              _context.next = 2;
+              return (0, _utils.sleep)(30);
+            case 2:
+              _context.next = 4;
+              return _this.getParentWeith();
+            case 4:
+              _this.$nextTick(function () {
+                setTimeout(function () {
+                  _this.$watch('elements', _this.watchRender, {
+                    deep: true,
+                    immediate: true
+                  });
+                }, 30);
+              });
+            case 5:
+            case "end":
+              return _context.stop();
+          }
+        }
+      }, _callee);
+    }))();
+  },
+  methods: {
+    watchRender: function watchRender(val, old) {
+      var _this2 = this;
+      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
+        return _regenerator.default.wrap(function _callee2$(_context2) {
+          while (1) {
+            switch (_context2.prev = _context2.next) {
+              case 0:
+                if (!(!val || !val.views || (!_this2.firstRender ? !val.views.length : !_this2.firstRender) || !Object.keys(val).length || JSON.stringify(val) == JSON.stringify(old))) {
+                  _context2.next = 2;
+                  break;
+                }
+                return _context2.abrupt("return");
+              case 2:
+                _this2.firstRender = 1;
+                clearTimeout(_this2.rendertimer);
+                _this2.rendertimer = setTimeout(function () {
+                  _this2.render(val);
+                }, _this2.beforeDelay);
+              case 5:
+              case "end":
+                return _context2.stop();
+            }
+          }
+        }, _callee2);
+      }))();
+    },
+    setFilePath: function setFilePath(path, param) {
+      var _this3 = this;
+      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
+        var filePath, _ref3, _ref3$pathType, pathType;
+        return _regenerator.default.wrap(function _callee3$(_context3) {
+          while (1) {
+            switch (_context3.prev = _context3.next) {
+              case 0:
+                filePath = path;
+                _ref3 = param || _this3, _ref3$pathType = _ref3.pathType, pathType = _ref3$pathType === void 0 ? _this3.pathType : _ref3$pathType;
+                if (!(pathType == 'base64' && !(0, _utils.isBase64)(path))) {
+                  _context3.next = 8;
+                  break;
+                }
+                _context3.next = 5;
+                return (0, _utils.pathToBase64)(path);
+              case 5:
+                filePath = _context3.sent;
+                _context3.next = 12;
+                break;
+              case 8:
+                if (!(pathType == 'url' && (0, _utils.isBase64)(path))) {
+                  _context3.next = 12;
+                  break;
+                }
+                _context3.next = 11;
+                return (0, _utils.base64ToPath)(path);
+              case 11:
+                filePath = _context3.sent;
+              case 12:
+                if (param && param.isEmit) {
+                  _this3.$emit('success', filePath);
+                }
+                return _context3.abrupt("return", filePath);
+              case 14:
+              case "end":
+                return _context3.stop();
+            }
+          }
+        }, _callee3);
+      }))();
+    },
+    getSize: function getSize(args) {
+      var _this4 = this;
+      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
+        var _ref4, width, _ref5, height;
+        return _regenerator.default.wrap(function _callee4$(_context4) {
+          while (1) {
+            switch (_context4.prev = _context4.next) {
+              case 0:
+                _ref4 = args.css || args, width = _ref4.width;
+                _ref5 = args.css || args, height = _ref5.height;
+                if (_this4.size) {
+                  _context4.next = 12;
+                  break;
+                }
+                if (!(width || height)) {
+                  _context4.next = 10;
+                  break;
+                }
+                _this4.canvasWidth = width || _this4.canvasWidth;
+                _this4.canvasHeight = height || _this4.canvasHeight;
+                _context4.next = 8;
+                return (0, _utils.sleep)(30);
+              case 8:
+                _context4.next = 12;
+                break;
+              case 10:
+                _context4.next = 12;
+                return _this4.getParentWeith();
+              case 12:
+              case "end":
+                return _context4.stop();
+            }
+          }
+        }, _callee4);
+      }))();
+    },
+    canvasToTempFilePathSync: function canvasToTempFilePathSync(args) {
+      var _this5 = this;
+      this.stopWatch = this.$watch('done', function (v) {
+        if (v) {
+          _this5.canvasToTempFilePath(args);
+          _this5.stopWatch && _this5.stopWatch();
+        }
+      }, {
+        immediate: true
+      });
+    },
+    getParentWeith: function getParentWeith() {
+      var _this6 = this;
+      return new Promise(function (resolve) {
+        uni.createSelectorQuery().in(_this6).select(".lime-painter").boundingClientRect().exec(function (res) {
+          var _ref6 = res[0] || {},
+            width = _ref6.width,
+            height = _ref6.height;
+          _this6.parentWidth = Math.ceil(width || 0);
+          _this6.canvasWidth = _this6.parentWidth || 300;
+          _this6.canvasHeight = height || _this6.canvasHeight || 150;
+          resolve(res[0]);
+        });
+      });
+    },
+    render: function render() {
+      var _arguments = arguments,
+        _this7 = this;
+      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
+        var args, ctx, use2dCanvas, boardWidth, boardHeight, canvas, afterDelay, _ref7, _width, _ref8, _height, param, _yield$_this7$painter, width, height;
+        return _regenerator.default.wrap(function _callee5$(_context5) {
+          while (1) {
+            switch (_context5.prev = _context5.next) {
+              case 0:
+                args = _arguments.length > 0 && _arguments[0] !== undefined ? _arguments[0] : {};
+                if (Object.keys(args).length) {
+                  _context5.next = 3;
+                  break;
+                }
+                return _context5.abrupt("return", console.error('空对象'));
+              case 3:
+                _this7.progress = 0;
+                _this7.done = false;
+                _context5.next = 7;
+                return _this7.getSize(args);
+              case 7:
+                _context5.next = 9;
+                return _this7.getContext();
+              case 9:
+                ctx = _context5.sent;
+                use2dCanvas = _this7.use2dCanvas, boardWidth = _this7.boardWidth, boardHeight = _this7.boardHeight, canvas = _this7.canvas, afterDelay = _this7.afterDelay;
+                if (!(use2dCanvas && !canvas)) {
+                  _context5.next = 13;
+                  break;
+                }
+                return _context5.abrupt("return", Promise.reject(new Error('render: fail canvas has not been created')));
+              case 13:
+                _this7.boundary = {
+                  top: 0,
+                  left: 0,
+                  width: boardWidth,
+                  height: boardHeight
+                };
+                _this7.painter = null;
+                if (!_this7.painter) {
+                  _ref7 = args.css || args, _width = _ref7.width;
+                  _ref8 = args.css || args, _height = _ref8.height;
+                  if (!_width && _this7.parentWidth) {
+                    Object.assign(args, {
+                      width: _this7.parentWidth
+                    });
+                  }
+                  param = {
+                    context: ctx,
+                    canvas: canvas,
+                    width: boardWidth,
+                    height: boardHeight,
+                    pixelRatio: _this7.dpr,
+                    useCORS: _this7.useCORS,
+                    createImage: _utils.getImageInfo.bind(_this7),
+                    listen: {
+                      onProgress: function onProgress(v) {
+                        _this7.progress = v;
+                        _this7.$emit('progress', v);
+                      },
+                      onEffectFail: function onEffectFail(err) {
+                        _this7.$emit('faill', err);
+                      }
+                    }
+                  };
+                  _this7.painter = new _painter.default(param);
+                }
+
+                // vue3 赋值给data会引起图片无法绘制 
+                _context5.next = 18;
+                return _this7.painter.source(JSON.parse(JSON.stringify(args)));
+              case 18:
+                _yield$_this7$painter = _context5.sent;
+                width = _yield$_this7$painter.width;
+                height = _yield$_this7$painter.height;
+                _this7.boundary.height = _this7.canvasHeight = height;
+                _this7.boundary.width = _this7.canvasWidth = width;
+                _context5.next = 25;
+                return (0, _utils.sleep)(_this7.sleep);
+              case 25:
+                // 可能会因为尺寸改变影响绘制上下文
+                _this7.painter.setContext(_this7.ctx);
+                _context5.next = 28;
+                return _this7.painter.render();
+              case 28:
+                _context5.next = 30;
+                return new Promise(function (resolve) {
+                  return _this7.$nextTick(resolve);
+                });
+              case 30:
+                if (use2dCanvas) {
+                  _context5.next = 33;
+                  break;
+                }
+                _context5.next = 33;
+                return _this7.canvasDraw();
+              case 33:
+                if (!(afterDelay && use2dCanvas)) {
+                  _context5.next = 36;
+                  break;
+                }
+                _context5.next = 36;
+                return (0, _utils.sleep)(afterDelay);
+              case 36:
+                console.log('done------------------');
+                _this7.$emit('done');
+                _this7.done = true;
+                if (_this7.isCanvasToTempFilePath) {
+                  _this7.canvasToTempFilePath().then(function (res) {
+                    _this7.$emit('success', res.tempFilePath);
+                  }).catch(function (err) {
+                    _this7.$emit('fail', new Error(JSON.stringify(err)));
+                  });
+                }
+                return _context5.abrupt("return", Promise.resolve({
+                  ctx: ctx,
+                  draw: _this7.painter,
+                  node: _this7.node
+                }));
+              case 41:
+              case "end":
+                return _context5.stop();
+            }
+          }
+        }, _callee5);
+      }))();
+    },
+    canvasDraw: function canvasDraw() {
+      var _this8 = this;
+      var flag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+      return new Promise(function (resolve, reject) {
+        return _this8.ctx.draw(flag, function () {
+          return setTimeout(function () {
+            return resolve();
+          }, _this8.afterDelay);
+        });
+      });
+    },
+    getContext: function getContext() {
+      var _this9 = this;
+      return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
+        var type, use2dCanvas, dpr, boardWidth, boardHeight, _getContext;
+        return _regenerator.default.wrap(function _callee6$(_context6) {
+          while (1) {
+            switch (_context6.prev = _context6.next) {
+              case 0:
+                if (_this9.canvasWidth) {
+                  _context6.next = 4;
+                  break;
+                }
+                _this9.$emit('fail', 'painter no size');
+                console.error('painter no size: 请给画板或父级设置尺寸');
+                return _context6.abrupt("return", Promise.reject());
+              case 4:
+                if (!(_this9.ctx && _this9.inited)) {
+                  _context6.next = 6;
+                  break;
+                }
+                return _context6.abrupt("return", Promise.resolve(_this9.ctx));
+              case 6:
+                type = _this9.type, use2dCanvas = _this9.use2dCanvas, dpr = _this9.dpr, boardWidth = _this9.boardWidth, boardHeight = _this9.boardHeight;
+                _getContext = function _getContext() {
+                  return new Promise(function (resolve) {
+                    uni.createSelectorQuery().in(_this9).select("#".concat(_this9.canvasId)).boundingClientRect().exec(function (res) {
+                      if (res) {
+                        var ctx = uni.createCanvasContext(_this9.canvasId, _this9);
+                        if (!_this9.inited) {
+                          _this9.inited = true;
+                          _this9.use2dCanvas = false;
+                          _this9.canvas = res;
+                        }
+                        _this9.ctx = ctx;
+                        resolve(_this9.ctx);
+                      }
+                    });
+                  });
+                };
+                if (use2dCanvas) {
+                  _context6.next = 10;
+                  break;
+                }
+                return _context6.abrupt("return", _getContext());
+              case 10:
+                return _context6.abrupt("return", new Promise(function (resolve) {
+                  uni.createSelectorQuery().in(_this9).select("#".concat(_this9.canvasId)).node().exec(function (res) {
+                    var canvas = res[0].node;
+                    if (!canvas) {
+                      _this9.use2dCanvas = false;
+                      resolve(_this9.getContext());
+                    }
+                    var ctx = canvas.getContext(type);
+                    if (!_this9.inited) {
+                      _this9.inited = true;
+                      _this9.use2dCanvas = true;
+                      _this9.canvas = canvas;
+                    }
+                    _this9.ctx = ctx;
+                    resolve(_this9.ctx);
+                  });
+                }));
+              case 11:
+              case "end":
+                return _context6.stop();
+            }
+          }
+        }, _callee6);
+      }))();
+    },
+    canvasToTempFilePath: function canvasToTempFilePath() {
+      var _this10 = this;
+      var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+      return new Promise( /*#__PURE__*/function () {
+        var _ref9 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8(resolve, reject) {
+          var use2dCanvas, canvasId, dpr, fileType, quality, success, _ref11, _ref11$top, y, _ref11$left, x, width, height, destWidth, destHeight, copyArgs, tempFilePath;
+          return _regenerator.default.wrap(function _callee8$(_context8) {
+            while (1) {
+              switch (_context8.prev = _context8.next) {
+                case 0:
+                  use2dCanvas = _this10.use2dCanvas, canvasId = _this10.canvasId, dpr = _this10.dpr, fileType = _this10.fileType, quality = _this10.quality;
+                  success = /*#__PURE__*/function () {
+                    var _ref10 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(res) {
+                      var tempFilePath;
+                      return _regenerator.default.wrap(function _callee7$(_context7) {
+                        while (1) {
+                          switch (_context7.prev = _context7.next) {
+                            case 0:
+                              _context7.prev = 0;
+                              _context7.next = 3;
+                              return _this10.setFilePath(res.tempFilePath || res);
+                            case 3:
+                              tempFilePath = _context7.sent;
+                              resolve(Object.assign(res, {
+                                tempFilePath: tempFilePath
+                              }));
+                              _context7.next = 10;
+                              break;
+                            case 7:
+                              _context7.prev = 7;
+                              _context7.t0 = _context7["catch"](0);
+                              _this10.$emit('fail', _context7.t0);
+                            case 10:
+                            case "end":
+                              return _context7.stop();
+                          }
+                        }
+                      }, _callee7, null, [[0, 7]]);
+                    }));
+                    return function success(_x3) {
+                      return _ref10.apply(this, arguments);
+                    };
+                  }();
+                  _ref11 = _this10.boundary || _this10, _ref11$top = _ref11.top, y = _ref11$top === void 0 ? 0 : _ref11$top, _ref11$left = _ref11.left, x = _ref11$left === void 0 ? 0 : _ref11$left, width = _ref11.width, height = _ref11.height;
+                  destWidth = width * dpr;
+                  destHeight = height * dpr;
+                  copyArgs = Object.assign({
+                    x: x,
+                    y: y,
+                    width: width,
+                    height: height,
+                    destWidth: destWidth,
+                    destHeight: destHeight,
+                    canvasId: canvasId,
+                    fileType: fileType,
+                    quality: quality,
+                    success: success,
+                    fail: reject
+                  }, args);
+                  if (!use2dCanvas) {
+                    _context8.next = 22;
+                    break;
+                  }
+                  _context8.prev = 7;
+                  if (!args.pathType && !_this10.pathType) {
+                    args.pathType = 'url';
+                  }
+                  _context8.next = 11;
+                  return _this10.setFilePath(_this10.canvas.toDataURL("image/".concat(args.fileType || fileType).replace(/pg/, 'peg'), args.quality || quality), args);
+                case 11:
+                  tempFilePath = _context8.sent;
+                  args.success && args.success({
+                    tempFilePath: tempFilePath
+                  });
+                  resolve({
+                    tempFilePath: tempFilePath
+                  });
+                  _context8.next = 20;
+                  break;
+                case 16:
+                  _context8.prev = 16;
+                  _context8.t0 = _context8["catch"](7);
+                  args.fail && args.fail(_context8.t0);
+                  reject(_context8.t0);
+                case 20:
+                  _context8.next = 23;
+                  break;
+                case 22:
+                  uni.canvasToTempFilePath(copyArgs, _this10);
+                case 23:
+                case "end":
+                  return _context8.stop();
+              }
+            }
+          }, _callee8, null, [[7, 16]]);
+        }));
+        return function (_x, _x2) {
+          return _ref9.apply(this, arguments);
+        };
+      }());
+    }
+  }
+};
+exports.default = _default;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
+
+/***/ }),
+
+/***/ 279:
+/*!*******************************************************************************************************!*\
+  !*** D:/desktop/jiancaiPro/components/wike-painter/wike-painter.vue?vue&type=style&index=0&lang=css& ***!
+  \*******************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../HBuilderX/plugins/uniapp-cli/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../../HBuilderX/plugins/uniapp-cli/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!../../../../HBuilderX/plugins/uniapp-cli/node_modules/postcss-loader/src??ref--6-oneOf-1-3!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!../../../../HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!./wike-painter.vue?vue&type=style&index=0&lang=css& */ 280);
+/* harmony import */ var _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__);
+/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));
+ /* harmony default export */ __webpack_exports__["default"] = (_HBuilderX_plugins_uniapp_cli_node_modules_mini_css_extract_plugin_dist_loader_js_ref_6_oneOf_1_0_HBuilderX_plugins_uniapp_cli_node_modules_css_loader_dist_cjs_js_ref_6_oneOf_1_1_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_stylePostLoader_js_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_6_oneOf_1_2_HBuilderX_plugins_uniapp_cli_node_modules_postcss_loader_src_index_js_ref_6_oneOf_1_3_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_webpack_uni_mp_loader_lib_style_js_wike_painter_vue_vue_type_style_index_0_lang_css___WEBPACK_IMPORTED_MODULE_0___default.a); 
+
+/***/ }),
+
+/***/ 280:
+/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
+  !*** ./node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!./node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--6-oneOf-1-2!./node_modules/postcss-loader/src??ref--6-oneOf-1-3!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./node_modules/@dcloudio/webpack-uni-mp-loader/lib/style.js!D:/desktop/jiancaiPro/components/wike-painter/wike-painter.vue?vue&type=style&index=0&lang=css& ***!
+  \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+// extracted by mini-css-extract-plugin
+    if(false) { var cssReload; }
+  
+
+/***/ })
+
+}]);
+//# sourceMappingURL=../../../.sourcemap/mp-weixin/components/wike-painter/wike-painter.js.map
+;(global["webpackJsonp"] = global["webpackJsonp"] || []).push([
+    'components/wike-painter/wike-painter-create-component',
+    {
+        'components/wike-painter/wike-painter-create-component':(function(module, exports, __webpack_require__){
+            __webpack_require__('2')['createComponent'](__webpack_require__(270))
+        })
+    },
+    [['components/wike-painter/wike-painter-create-component']]
+]);

+ 4 - 0
unpackage/dist/dev/mp-weixin/components/wike-painter/wike-painter.json

xqd
@@ -0,0 +1,4 @@
+{
+  "usingComponents": {},
+  "component": true
+}

+ 1 - 0
unpackage/dist/dev/mp-weixin/components/wike-painter/wike-painter.wxml

xqd
@@ -0,0 +1 @@
+<view data-ref="limepainter" class="lime-painter vue-ref"><block wx:if="{{canvasId&&size}}"><view style="{{(styles)}}"><block wx:if="{{use2dCanvas}}"><canvas class="lime-painter__canvas" style="{{(size)}}" id="{{canvasId}}" type="2d"></canvas></block><block wx:else><canvas class="lime-painter__canvas" style="{{(size)}}" canvas-id="{{canvasId}}" id="{{canvasId}}" width="{{boardWidth*dpr}}" height="{{boardHeight*dpr}}"></canvas></block></view></block><slot></slot></view>

+ 7 - 0
unpackage/dist/dev/mp-weixin/components/wike-painter/wike-painter.wxss

xqd
@@ -0,0 +1,7 @@
+
+.lime-painter,
+.lime-painter__canvas {
+
+	width: 100%;
+}
+

+ 2 - 14
unpackage/dist/dev/mp-weixin/pages/category/index.js

xqd xqd
@@ -101,10 +101,10 @@ var components
 try {
   components = {
     uSticky: function () {
-      return Promise.all(/*! import() | uni_modules/uview-ui/components/u-sticky/u-sticky */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uview-ui/components/u-sticky/u-sticky")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uview-ui/components/u-sticky/u-sticky.vue */ 228))
+      return Promise.all(/*! import() | uni_modules/uview-ui/components/u-sticky/u-sticky */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uview-ui/components/u-sticky/u-sticky")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uview-ui/components/u-sticky/u-sticky.vue */ 246))
     },
     uTabs: function () {
-      return Promise.all(/*! import() | uni_modules/uview-ui/components/u-tabs/u-tabs */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uview-ui/components/u-tabs/u-tabs")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uview-ui/components/u-tabs/u-tabs.vue */ 236))
+      return Promise.all(/*! import() | uni_modules/uview-ui/components/u-tabs/u-tabs */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uview-ui/components/u-tabs/u-tabs")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uview-ui/components/u-tabs/u-tabs.vue */ 254))
     },
   }
 } catch (e) {
@@ -219,18 +219,6 @@ var _default = {
         name: '推荐'
       }, {
         name: '电影'
-      }, {
-        name: '科技'
-      }, {
-        name: '音乐'
-      }, {
-        name: '美食'
-      }, {
-        name: '文化'
-      }, {
-        name: '财经'
-      }, {
-        name: '手工'
       }],
       name: 'wkiwi',
       height: 0,

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/category/index.wxml

xqd
@@ -1 +1 @@
-<view class="data-v-2f754cba"><nav-bar vue-id="819668e8-1" title="分类" back="{{false}}" color="white" background="green" class="data-v-2f754cba" bind:__l="__l"></nav-bar><u-sticky vue-id="819668e8-2" bgColor="#fff" class="data-v-2f754cba" bind:__l="__l" vue-slots="{{['default']}}"><u-tabs vue-id="{{('819668e8-3')+','+('819668e8-2')}}" list="{{list1}}" class="data-v-2f754cba" bind:__l="__l"></u-tabs></u-sticky><view class="page-body data-v-2f754cba" style="{{('height:'+height+'px')}}"><scroll-view class="nav-left data-v-2f754cba" style="{{('height:'+height+'px')}}" scroll-y="{{true}}" scroll-top="{{scrollLeftTop}}" scroll-with-animation="{{true}}"><block wx:for="{{classifyData}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['categoryClickMain',[index]]]]]}}" class="{{['nav-left-item','data-v-2f754cba',index==categoryActive?'active':'']}}" bindtap="__e">{{''+item.name+''}}</view></block></scroll-view><scroll-view class="nav-right data-v-2f754cba" style="{{('height:'+height+'px')}}" scroll-y="{{true}}" scroll-top="{{scrollTop}}" scroll-with-animation="{{true}}" data-event-opts="{{[['scroll',[['scroll',['$event']]]]]}}" bindscroll="__e"><block wx:for="{{classifyData}}" wx:for-item="foods" wx:for-index="index" wx:key="index"><view class="box data-v-2f754cba"><view style="margin-bottom:10rpx;font-weight:600;" class="data-v-2f754cba">{{foods.name}}</view><block wx:for="{{foods.foods}}" wx:for-item="item" wx:for-index="i" wx:key="i"><view class="nav-right-item data-v-2f754cba" id="{{i==0?'first':''}}" data-event-opts="{{[['tap',[['cart',['$0'],[[['classifyData','',index],['foods','',i,'name']]]]]]]}}" bindtap="__e"><image src="https://img.tnblog.net/bigclassimg/1net.png" class="data-v-2f754cba"></image><view class="right_item_name data-v-2f754cba">{{item.name}}</view></view></block></view></block></scroll-view></view></view>
+<view class="data-v-2f754cba"><nav-bar vue-id="819668e8-1" title="分类" back="{{false}}" color="white" background="green" class="data-v-2f754cba" bind:__l="__l"></nav-bar><u-sticky vue-id="819668e8-2" bgColor="#fff" class="data-v-2f754cba" bind:__l="__l" vue-slots="{{['default']}}"><u-tabs vue-id="{{('819668e8-3')+','+('819668e8-2')}}" list="{{list1}}" scrollable="{{false}}" class="data-v-2f754cba" bind:__l="__l"></u-tabs></u-sticky><view class="page-body data-v-2f754cba" style="{{('height:'+height+'px')}}"><scroll-view class="nav-left data-v-2f754cba" style="{{('height:'+height+'px')}}" scroll-y="{{true}}" scroll-top="{{scrollLeftTop}}" scroll-with-animation="{{true}}"><block wx:for="{{classifyData}}" wx:for-item="item" wx:for-index="index" wx:key="index"><view data-event-opts="{{[['tap',[['categoryClickMain',[index]]]]]}}" class="{{['nav-left-item','data-v-2f754cba',index==categoryActive?'active':'']}}" bindtap="__e">{{''+item.name+''}}</view></block></scroll-view><scroll-view class="nav-right data-v-2f754cba" style="{{('height:'+height+'px')}}" scroll-y="{{true}}" scroll-top="{{scrollTop}}" scroll-with-animation="{{true}}" data-event-opts="{{[['scroll',[['scroll',['$event']]]]]}}" bindscroll="__e"><block wx:for="{{classifyData}}" wx:for-item="foods" wx:for-index="index" wx:key="index"><view class="box data-v-2f754cba"><view style="margin-bottom:10rpx;font-weight:600;" class="data-v-2f754cba">{{foods.name}}</view><block wx:for="{{foods.foods}}" wx:for-item="item" wx:for-index="i" wx:key="i"><view class="nav-right-item data-v-2f754cba" id="{{i==0?'first':''}}" data-event-opts="{{[['tap',[['cart',['$0'],[[['classifyData','',index],['foods','',i,'name']]]]]]]}}" bindtap="__e"><image src="https://img.tnblog.net/bigclassimg/1net.png" class="data-v-2f754cba"></image><view class="right_item_name data-v-2f754cba">{{item.name}}</view></view></block></view></block></scroll-view></view></view>

+ 44 - 13
unpackage/dist/dev/mp-weixin/pages/index/index.js

xqd xqd xqd xqd xqd
@@ -101,7 +101,7 @@ var components
 try {
   components = {
     uButton: function () {
-      return Promise.all(/*! import() | uni_modules/uview-ui/components/u-button/u-button */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uview-ui/components/u-button/u-button")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uview-ui/components/u-button/u-button.vue */ 218))
+      return Promise.all(/*! import() | uni_modules/uview-ui/components/u-button/u-button */[__webpack_require__.e("common/vendor"), __webpack_require__.e("uni_modules/uview-ui/components/u-button/u-button")]).then(__webpack_require__.bind(null, /*! @/uni_modules/uview-ui/components/u-button/u-button.vue */ 236))
     },
   }
 } catch (e) {
@@ -125,6 +125,14 @@ var render = function () {
   var _vm = this
   var _h = _vm.$createElement
   var _c = _vm._self._c || _h
+  if (!_vm._isMounted) {
+    _vm.e0 = function ($event) {
+      _vm.show = true
+    }
+    _vm.e1 = function ($event) {
+      _vm.show = false
+    }
+  }
 }
 var recyclableRender = false
 var staticRenderFns = []
@@ -158,7 +166,7 @@ __webpack_require__.r(__webpack_exports__);
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-
+/* WEBPACK VAR INJECTION */(function(uni) {
 
 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
 Object.defineProperty(exports, "__esModule", {
@@ -178,31 +186,53 @@ var _index = __webpack_require__(/*! @/api/index/index.js */ 163);
 //
 //
 //
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
+//
 var _default = {
   data: function data() {
-    return {};
+    return {
+      show: false
+    };
   },
   methods: {
     testReq: function testReq() {
       var _this = this;
       return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
+        var res;
         return _regenerator.default.wrap(function _callee$(_context) {
           while (1) {
             switch (_context.prev = _context.next) {
               case 0:
                 console.log('testStore()111111', _this.$store.getters['user/testInfo']);
                 console.log('testStore()111111', _this.$store.getters['user/testInfo2']);
-                // let res = await getValidateCode({
-                // 	phone: '15609038521',
-                // 	event: 'register'
-                // })
-                // uni.showToast({
-                // 	title: res.msg,
-                // 	icon: 'none'
-                // })
-                // console.log('发送短信验证码返回值', res);
+                _context.next = 4;
+                return (0, _index.getValidateCode)({
+                  phone: '15609038521',
+                  event: 'register'
+                });
+              case 4:
+                res = _context.sent;
+                uni.showToast({
+                  title: res.msg,
+                  icon: 'none'
+                });
+                console.log('发送短信验证码返回值', res);
                 // if (res.code == 0) {}
-              case 2:
+              case 7:
               case "end":
                 return _context.stop();
             }
@@ -247,6 +277,7 @@ var _default = {
   }
 };
 exports.default = _default;
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
 
 /***/ }),
 

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/index/index.wxml

xqd
@@ -1 +1 @@
-<view class="container data-v-57280228"><nav-bar vue-id="8dd740cc-1" title="首页" back="{{false}}" color="white" background="green" class="data-v-57280228" bind:__l="__l"></nav-bar><u-button vue-id="8dd740cc-2" text="测试网络请求" type="primary" data-event-opts="{{[['^click',[['testReq']]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-3" text="测试vuex仓库" type="primary" data-event-opts="{{[['^click',[['testStore']]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-4" text="测试登录-vuex仓库" type="primary" data-event-opts="{{[['^click',[['testLogin']]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-5" text="测试登录退出登录" type="primary" data-event-opts="{{[['^click',[['testLogout']]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button></view>
+<view class="container data-v-57280228"><nav-bar vue-id="8dd740cc-1" title="首页" back="{{false}}" color="white" background="green" class="data-v-57280228" bind:__l="__l"></nav-bar><u-button vue-id="8dd740cc-2" text="测试网络请求" type="primary" data-event-opts="{{[['^click',[['testReq']]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-3" text="测试vuex仓库" type="primary" data-event-opts="{{[['^click',[['testStore']]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-4" text="测试登录-vuex仓库" type="primary" data-event-opts="{{[['^click',[['testLogin']]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-5" text="测试登录退出登录" type="primary" data-event-opts="{{[['^click',[['testLogout']]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-6" text="测试提示弹框" type="primary" data-event-opts="{{[['^click',[['$toast',['测试','success']]]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button><u-button vue-id="8dd740cc-7" text="测试自定义弹框" type="primary" data-event-opts="{{[['^click',[['e0']]]]}}" bind:click="__e" class="data-v-57280228" bind:__l="__l"></u-button><dpopup vue-id="8dd740cc-8" show="{{show}}" mode="bottom" round="{{10}}" data-event-opts="{{[['^close',[['e1']]]]}}" bind:close="__e" class="data-v-57280228" bind:__l="__l" vue-slots="{{['content']}}"><view slot="content" class="data-v-57280228"><view class="top data-v-57280228">顶部</view><view class="content data-v-57280228" style="height:300px;">内容</view></view></dpopup></view>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 14 - 14
unpackage/dist/dev/mp-weixin/pages/map/index.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 11 - 4
unpackage/dist/dev/mp-weixin/pages/my/index.js


+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/my/index.wxml

xqd
@@ -1 +1 @@
-<view class="container data-v-4dcceeb0"><nav-bar vue-id="4a180d5e-1" title="我的" back="{{false}}" color="white" background="green" class="data-v-4dcceeb0" bind:__l="__l"></nav-bar><u-button vue-id="4a180d5e-2" text="测试获取用户信息" type="primary" data-event-opts="{{[['^click',[['testGetUserInfo']]]]}}" bind:click="__e" class="data-v-4dcceeb0" bind:__l="__l"></u-button><view class="choose-avatar-row data-v-4dcceeb0"><button class="avatar-wrapper data-v-4dcceeb0" open-type="chooseAvatar" data-event-opts="{{[['chooseavatar',[['onChooseAvatar',['$event']]]]]}}" bindchooseavatar="__e"><image class="avatar data-v-4dcceeb0" src="{{avatarUrl}}"></image></button><text class="data-v-4dcceeb0">点击选择头像</text></view><view class="choose-nickname-row data-v-4dcceeb0"><text class="data-v-4dcceeb0">昵称</text><input type="nickname" placeholder="请输入昵称" data-event-opts="{{[['input',[['__set_model',['','nickName','$event',[]]],['inputName',['$event']]]]]}}" value="{{nickName}}" bindinput="__e" class="data-v-4dcceeb0"/></view><button open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getphonenumber',['$event']]]]]}}" bindgetphonenumber="__e" class="data-v-4dcceeb0">获取用户手机号</button><button data-event-opts="{{[['tap',[['get_user',['$event']]]]]}}" bindtap="__e" class="data-v-4dcceeb0">获取用户头像昵称等信息</button><view class="data-v-4dcceeb0">头像</view><image src="{{user_img}}" mode class="data-v-4dcceeb0"></image><view class="data-v-4dcceeb0">{{'昵称:'+user_name+''}}</view></view>
+<view class="container data-v-4dcceeb0"><nav-bar vue-id="4a180d5e-1" title="我的" back="{{false}}" color="white" background="green" class="data-v-4dcceeb0" bind:__l="__l"></nav-bar><u-button vue-id="4a180d5e-2" text="测试获取用户信息" type="primary" data-event-opts="{{[['^click',[['testGetUserInfo']]]]}}" bind:click="__e" class="data-v-4dcceeb0" bind:__l="__l"></u-button><u-button vue-id="4a180d5e-3" text="测试二维码生成" type="primary" data-event-opts="{{[['^click',[['genQr']]]]}}" bind:click="__e" class="data-v-4dcceeb0" bind:__l="__l"></u-button><view class="choose-avatar-row data-v-4dcceeb0"><button class="avatar-wrapper data-v-4dcceeb0" style="border-radius:100rpx;" open-type="chooseAvatar" data-event-opts="{{[['chooseavatar',[['onChooseAvatar',['$event']]]]]}}" bindchooseavatar="__e"><image class="avatar data-v-4dcceeb0" src="{{avatarUrl}}"></image></button><text class="data-v-4dcceeb0">点击选择头像</text></view><view class="choose-nickname-row data-v-4dcceeb0"><text class="data-v-4dcceeb0">昵称</text><input type="nickname" placeholder="请输入昵称" data-event-opts="{{[['input',[['__set_model',['','nickName','$event',[]]],['inputName',['$event']]]]]}}" value="{{nickName}}" bindinput="__e" class="data-v-4dcceeb0"/></view><button open-type="getPhoneNumber" data-event-opts="{{[['getphonenumber',[['getphonenumber',['$event']]]]]}}" bindgetphonenumber="__e" class="data-v-4dcceeb0">获取用户手机号</button><button data-event-opts="{{[['tap',[['get_user',['$event']]]]]}}" bindtap="__e" class="data-v-4dcceeb0">获取用户头像昵称等信息</button><view class="data-v-4dcceeb0">头像</view><image src="{{user_img}}" mode class="data-v-4dcceeb0"></image><view class="data-v-4dcceeb0">{{'昵称:'+user_name+''}}</view></view>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 273 - 41
unpackage/dist/dev/mp-weixin/pages/qrPage/index.js


+ 4 - 1
unpackage/dist/dev/mp-weixin/pages/qrPage/index.json

xqd
@@ -1,4 +1,7 @@
 {
   "navigationBarTitleText": "二维码页面",
-  "usingComponents": {}
+  "usingComponents": {
+    "u-popup": "/uni_modules/uview-ui/components/u-popup/u-popup",
+    "wike-painter": "/components/wike-painter/wike-painter"
+  }
 }

+ 1 - 1
unpackage/dist/dev/mp-weixin/pages/qrPage/index.wxml

xqd
@@ -1 +1 @@
-<view class="container data-v-329411cc"><nav-bar vue-id="1feea8ba-1" title="二维码进入的页面" back="{{true}}" color="white" background="green" class="data-v-329411cc" bind:__l="__l"></nav-bar><button data-event-opts="{{[['tap',[['getAccessToken',['$event']]]]]}}" bindtap="__e" class="data-v-329411cc">生成AccessToken</button><button data-event-opts="{{[['tap',[['genQr',['$event']]]]]}}" bindtap="__e" class="data-v-329411cc">生成进入小程序的二维码</button><image src="{{testUrl}}" mode class="data-v-329411cc"></image></view>
+<view class="container data-v-329411cc"><nav-bar vue-id="1feea8ba-1" title="二维码进入的页面" back="{{true}}" color="white" background="green" class="data-v-329411cc" bind:__l="__l"></nav-bar><button data-event-opts="{{[['tap',[['getAccessToken',['$event']]]]]}}" bindtap="__e" class="data-v-329411cc">生成AccessToken</button><button data-event-opts="{{[['tap',[['genQr',['$event']]]]]}}" bindtap="__e" class="data-v-329411cc">生成进入小程序的二维码</button><button data-event-opts="{{[['tap',[['createPoster',['$event']]]]]}}" bindtap="__e" class="data-v-329411cc">测试生成海报</button><image src="{{testUrl}}" mode data-event-opts="{{[['tap',[['previewPic',['$event']]]]]}}" bindtap="__e" class="data-v-329411cc"></image><u-popup vue-id="1feea8ba-2" show="{{showPoster}}" mode="bottom" data-event-opts="{{[['^close',[['e0']]]]}}" bind:close="__e" class="data-v-329411cc" bind:__l="__l" vue-slots="{{['default']}}"><scroll-view style="{{'max-height:'+(posterheight+'px')+';'}}" scroll-y="true" class="data-v-329411cc"><wike-painter vue-id="{{('1feea8ba-3')+','+('1feea8ba-2')}}" board="{{posterObj}}" data-ref="painter" data-event-opts="{{[['^done',[['posterSuccess']]]]}}" bind:done="__e" class="data-v-329411cc vue-ref" bind:__l="__l"></wike-painter><view style="height:78px;" class="data-v-329411cc"></view><view class="dygbhg data-v-329411cc"><view data-event-opts="{{[['tap',[['e1',['$event']]]]]}}" class="whole data-v-329411cc" bindtap="__e">取消</view><view data-event-opts="{{[['tap',[['toSave',['$event']]]]]}}" class="distinguish data-v-329411cc" bindtap="__e">保存/分享</view></view></scroll-view></u-popup></view>

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.