230320a303 1 year ago
parent
commit
b7ad606757
100 changed files with 3025 additions and 153 deletions
  1. 9 0
      api/cust.js
  2. 3 0
      node_modules/image-tools/.vscode/settings.json
  3. 76 0
      node_modules/image-tools/README.md
  4. 196 0
      node_modules/image-tools/index.js
  5. 53 0
      node_modules/image-tools/package.json
  6. 13 0
      package-lock.json
  7. 4 1
      package.json
  8. 14 0
      pages.json
  9. 453 0
      pages/agent/activity/join.vue
  10. 282 0
      pages/agent/activity/list.vue
  11. 483 0
      pages/agent/recommend/join.vue
  12. 3 0
      pages/index/index.vue
  13. 5 0
      pages/user/setting/bank.vue
  14. BIN
      static/index/i_e_10.png
  15. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map
  16. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map
  17. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map
  18. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/back-top/back-top.js.map
  19. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/components/wm-watermark/wm-watermark.js.map
  20. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/activity/join.js.map
  21. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/activity/list.js.map
  22. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/check.js.map
  23. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/create.js.map
  24. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/createin.js.map
  25. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/detail.js.map
  26. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/detail2.js.map
  27. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/detailGovern.js.map
  28. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/estate.js.map
  29. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/list.js.map
  30. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/visitimg.js.map
  31. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/report/buycheck.js.map
  32. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/report/deal.js.map
  33. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/create.js.map
  34. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/list.js.map
  35. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/my.js.map
  36. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/mycreate.js.map
  37. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/myrecord.js.map
  38. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/myrecordedit.js.map
  39. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/estate/dtl.js.map
  40. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/estate/lib.js.map
  41. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/estate/libPre.js.map
  42. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/estate/list.js.map
  43. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map
  44. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/web.js.map
  45. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/saler/check.js.map
  46. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/saler/deal.js.map
  47. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/saler/list.js.map
  48. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/shop/map.js.map
  49. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/check.js.map
  50. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/create.js.map
  51. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/list.js.map
  52. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/record.js.map
  53. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/recordedit.js.map
  54. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/login/login.js.map
  55. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/login/register.js.map
  56. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/setting/bank.js.map
  57. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/setting/profile.js.map
  58. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/setting/setting.js.map
  59. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/HM-filterDropdown/components/HM-filterDropdown/HM-filterDropdown.js.map
  60. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/okingtz-cropper/components/okingtz-cropper/okingtz-cropper.js.map
  61. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-alert-tips/u-alert-tips.js.map
  62. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-avatar/u-avatar.js.map
  63. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-button/u-button.js.map
  64. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-calendar/u-calendar.js.map
  65. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-divider/u-divider.js.map
  66. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-empty/u-empty.js.map
  67. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-form-item/u-form-item.js.map
  68. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-form/u-form.js.map
  69. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-gap/u-gap.js.map
  70. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-icon/u-icon.js.map
  71. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-image/u-image.js.map
  72. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-input/u-input.js.map
  73. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-line/u-line.js.map
  74. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-loading/u-loading.js.map
  75. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-loadmore/u-loadmore.js.map
  76. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-mask/u-mask.js.map
  77. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-modal/u-modal.js.map
  78. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-navbar/u-navbar.js.map
  79. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-parse/libs/trees.js.map
  80. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-parse/u-parse.js.map
  81. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-popup/u-popup.js.map
  82. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-radio-group/u-radio-group.js.map
  83. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-radio/u-radio.js.map
  84. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-select/u-select.js.map
  85. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-skeleton/u-skeleton.js.map
  86. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-steps/u-steps.js.map
  87. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-tag/u-tag.js.map
  88. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-time-line-item/u-time-line-item.js.map
  89. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-time-line/u-time-line.js.map
  90. 0 0
      unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-toast/u-toast.js.map
  91. 2 0
      unpackage/dist/dev/mp-weixin/app.json
  92. 1 1
      unpackage/dist/dev/mp-weixin/common/runtime.js
  93. 354 128
      unpackage/dist/dev/mp-weixin/common/vendor.js
  94. 12 12
      unpackage/dist/dev/mp-weixin/components/back-top/back-top.js
  95. 11 11
      unpackage/dist/dev/mp-weixin/components/wm-watermark/wm-watermark.js
  96. 459 0
      unpackage/dist/dev/mp-weixin/pages/agent/activity/join.js
  97. 11 0
      unpackage/dist/dev/mp-weixin/pages/agent/activity/join.json
  98. 0 0
      unpackage/dist/dev/mp-weixin/pages/agent/activity/join.wxml
  99. 192 0
      unpackage/dist/dev/mp-weixin/pages/agent/activity/join.wxss
  100. 389 0
      unpackage/dist/dev/mp-weixin/pages/agent/activity/list.js

+ 9 - 0
api/cust.js

@@ -96,4 +96,13 @@ export default {
 	apitradesubtotal: params => { // 成交审核 - 成交月度小计
 	  return request('api/trade/subtotal', params, 'loading')
 	},
+	apiactivitylist: params => { // 活动 列表
+	  return request('api/activity/list', params, 'loading')
+	},
+	apiactivityinfo: params => { // 活动 详情
+	  return request('api/activity/info', params, 'loading')
+	},
+	apiactivityenroll: params => { // 活动 报名
+	  return request('api/activity/enroll', params, 'loading')
+	},
 }

+ 3 - 0
node_modules/image-tools/.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+    "javascript.format.insertSpaceAfterKeywordsInControlFlowStatements": true
+}

+ 76 - 0
node_modules/image-tools/README.md

@@ -0,0 +1,76 @@
+# image-tools
+图像转换工具,可用于如下环境:uni-app、微信小程序、5+APP、浏览器(需允许跨域)
+
+## 使用方式
+
+### NPM
+
+```
+npm i image-tools --save
+```
+
+```js
+import { pathToBase64, base64ToPath } from 'image-tools'
+```
+
+### 直接下载
+
+```js
+// 以下路径需根据项目实际情况填写
+import { pathToBase64, base64ToPath } from '../../js/image-tools/index.js'
+```
+
+## API
+
+### pathToBase64
+
+从图像路径转换为base64,uni-app、微信小程序和5+APP使用的路径不支持网络路径,如果是网络路径需要先使用下载API下载下来。
+
+```js
+pathToBase64(path)
+  .then(base64 => {
+    console.log(base64)
+  })
+  .catch(error => {
+    console.error(error)
+  })
+```
+
+### base64ToPath
+
+将图像base64保存为文件,返回文件路径。
+
+```js
+base64ToPath(base64)
+  .then(path => {
+    console.log(path)
+  })
+  .catch(error => {
+    console.error(error)
+  })
+```
+
+## 提示
+
+可以利用promise来串行和并行的执行多个任务
+
+```js
+// 并行
+Promise.all(paths.map(path => pathToBase64(path)))
+  .then(res => {
+    console.log(res)
+    // [base64, base64...]
+  })
+  .catch(error => {
+    console.error(error)
+  })
+// 串行
+paths.reduce((promise, path) => promise.then(res => pathToBase64(path).then(base64 => (res.push(base64), res))), Promise.resolve([]))
+  .then(res => {
+    console.log(res)
+    // [base64, base64...]
+  })
+  .catch(error => {
+    console.error(error)
+  })
+```

+ 196 - 0
node_modules/image-tools/index.js

@@ -0,0 +1,196 @@
+function 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) {
+        var localFilePath = plus.io.convertAbsoluteFileSystem(path)
+        if (localFilePath !== path) {
+            return localFilePath
+        } else {
+            path = path.substr(1)
+        }
+    }
+    return '_www/' + path
+}
+
+function dataUrlToBase64(str) {
+    var array = str.split(',')
+    return array[array.length - 1]
+}
+
+var index = 0
+function getNewFileId() {
+    return Date.now() + String(index++)
+}
+
+function biggerThan(v1, v2) {
+    var v1Array = v1.split('.')
+    var v2Array = v2.split('.')
+    var update = false
+    for (var index = 0; index < v2Array.length; index++) {
+        var diff = v1Array[index] - v2Array[index]
+        if (diff !== 0) {
+            update = diff > 0
+            break
+        }
+    }
+    return update
+}
+
+export function pathToBase64(path) {
+    return new Promise(function(resolve, reject) {
+        if (typeof window === 'object' && 'document' in window) {
+            if (typeof FileReader === 'function') {
+                var xhr = new XMLHttpRequest()
+                xhr.open('GET', path, true)
+                xhr.responseType = 'blob'
+                xhr.onload = function() {
+                    if (this.status === 200) {
+                        let fileReader = new FileReader()
+                        fileReader.onload = function(e) {
+                            resolve(e.target.result)
+                        }
+                        fileReader.onerror = reject
+                        fileReader.readAsDataURL(this.response)
+                    }
+                }
+                xhr.onerror = reject
+                xhr.send()
+                return
+            }
+            var canvas = document.createElement('canvas')
+            var c2x = canvas.getContext('2d')
+            var img = new Image
+            img.onload = function() {
+                canvas.width = img.width
+                canvas.height = img.height
+                c2x.drawImage(img, 0, 0)
+                resolve(canvas.toDataURL())
+                canvas.height = canvas.width = 0
+            }
+            img.onerror = reject
+            img.src = path
+            return
+        }
+        if (typeof plus === 'object') {
+            plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function(entry) {
+                entry.file(function(file) {
+                    var fileReader = new plus.io.FileReader()
+                    fileReader.onload = function(data) {
+                        resolve(data.target.result)
+                    }
+                    fileReader.onerror = function(error) {
+                        reject(error)
+                    }
+                    fileReader.readAsDataURL(file)
+                }, function(error) {
+                    reject(error)
+                })
+            }, function(error) {
+                reject(error)
+            })
+            return
+        }
+        if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
+            wx.getFileSystemManager().readFile({
+                filePath: path,
+                encoding: 'base64',
+                success: function(res) {
+                    resolve('data:image/png;base64,' + res.data)
+                },
+                fail: function(error) {
+                    reject(error)
+                }
+            })
+            return
+        }
+        reject(new Error('not support'))
+    })
+}
+
+export function base64ToPath(base64) {
+    return new Promise(function(resolve, reject) {
+        if (typeof window === 'object' && 'document' in window) {
+            base64 = base64.split(',')
+            var type = base64[0].match(/:(.*?);/)[1]
+            var str = atob(base64[1])
+            var n = str.length
+            var array = new Uint8Array(n)
+            while (n--) {
+                array[n] = str.charCodeAt(n)
+            }
+            return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], { type: type })))
+        }
+        var extName = base64.split(',')[0].match(/data\:\S+\/(\S+);/)
+        if (extName) {
+            extName = extName[1]
+        } else {
+            reject(new Error('base64 error'))
+        }
+        var fileName = getNewFileId() + '.' + extName
+        if (typeof plus === 'object') {
+            var basePath = '_doc'
+            var dirPath = 'uniapp_temp'
+            var filePath = basePath + '/' + dirPath + '/' + fileName
+            if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) {
+                plus.io.resolveLocalFileSystemURL(basePath, function(entry) {
+                    entry.getDirectory(dirPath, {
+                        create: true,
+                        exclusive: false,
+                    }, function(entry) {
+                        entry.getFile(fileName, {
+                            create: true,
+                            exclusive: false,
+                        }, function(entry) {
+                            entry.createWriter(function(writer) {
+                                writer.onwrite = function() {
+                                    resolve(filePath)
+                                }
+                                writer.onerror = reject
+                                writer.seek(0)
+                                writer.writeAsBinary(dataUrlToBase64(base64))
+                            }, reject)
+                        }, reject)
+                    }, reject)
+                }, reject)
+                return
+            }
+            var bitmap = new plus.nativeObj.Bitmap(fileName)
+            bitmap.loadBase64Data(base64, function() {
+                bitmap.save(filePath, {}, function() {
+                    bitmap.clear()
+                    resolve(filePath)
+                }, function(error) {
+                    bitmap.clear()
+                    reject(error)
+                })
+            }, function(error) {
+                bitmap.clear()
+                reject(error)
+            })
+            return
+        }
+        if (typeof wx === 'object' && wx.canIUse('getFileSystemManager')) {
+            var filePath = wx.env.USER_DATA_PATH + '/' + fileName
+            wx.getFileSystemManager().writeFile({
+                filePath: filePath,
+                data: dataUrlToBase64(base64),
+                encoding: 'base64',
+                success: function() {
+                    resolve(filePath)
+                },
+                fail: function(error) {
+                    reject(error)
+                }
+            })
+            return
+        }
+        reject(new Error('not support'))
+    })
+}

+ 53 - 0
node_modules/image-tools/package.json

@@ -0,0 +1,53 @@
+{
+  "_from": "image-tools",
+  "_id": "image-tools@1.4.0",
+  "_inBundle": false,
+  "_integrity": "sha512-TKtvJ6iUwM0mfaD4keMnk1ENHFC470QEjBfA3IlvKdEOufzvWbjbaoNcoyYq6HlViF8+d5tOS1ooE6j7CHf1lQ==",
+  "_location": "/image-tools",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "image-tools",
+    "name": "image-tools",
+    "escapedName": "image-tools",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/image-tools/-/image-tools-1.4.0.tgz",
+  "_shasum": "66aacbafad677af7f3fd7f32f8fa1e0881b83783",
+  "_spec": "image-tools",
+  "_where": "E:\\work\\mdapp",
+  "author": {
+    "name": "Shengqiang Guo"
+  },
+  "bugs": {
+    "url": "https://github.com/zhetengbiji/image-tools/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "图像转换工具,可用于如下环境:uni-app、微信小程序、5+APP、浏览器",
+  "devDependencies": {
+    "@types/html5plus": "^1.0.0"
+  },
+  "homepage": "https://github.com/zhetengbiji/image-tools#readme",
+  "keywords": [
+    "base64"
+  ],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "image-tools",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zhetengbiji/image-tools.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "version": "1.4.0"
+}

+ 13 - 0
package-lock.json

@@ -0,0 +1,13 @@
+{
+    "name": "bwinAgent多端、多项目全民经纪人【经纪人端】",
+    "version": "1.0.0",
+    "lockfileVersion": 1,
+    "requires": true,
+    "dependencies": {
+        "image-tools": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/image-tools/-/image-tools-1.4.0.tgz",
+            "integrity": "sha512-TKtvJ6iUwM0mfaD4keMnk1ENHFC470QEjBfA3IlvKdEOufzvWbjbaoNcoyYq6HlViF8+d5tOS1ooE6j7CHf1lQ=="
+        }
+    }
+}

+ 4 - 1
package.json

@@ -42,5 +42,8 @@
             "uniCloud",
             "云端一体项目模板"
         ]
+    },
+    "dependencies": {
+        "image-tools": "^1.4.0"
     }
-}
+}

+ 14 - 0
pages.json

@@ -35,6 +35,20 @@
 				"enablePullDownRefresh": false
 			}
 		},
+		{
+			"path": "pages/agent/activity/list",
+			"style": {
+				"navigationBarTitleText": "活动列表",
+				"enablePullDownRefresh": false
+			}
+		},
+		{
+			"path": "pages/agent/activity/join",
+			"style": {
+				"navigationBarTitleText": "活动报名",
+				"enablePullDownRefresh": false
+			}
+		},
 		{
 			"path": "pages/agent/recommend/createin",
 			"style": {

+ 453 - 0
pages/agent/activity/join.vue

@@ -0,0 +1,453 @@
+<template>
+	<view class="page">
+		<view class="scoped-header">
+			<view class="p1" style="color: #f00;font-weight: bold;">{{ curObj.estate_name }} {{ curObj.remark }}</view>
+			<view class="p2" style="color: #f00;font-weight: bold;">截至时间:{{ curObj.end_at }}</view>
+		</view>
+		<view class="form">
+			<u-form :model="form" ref="uForm">
+				<u-form-item label-width="150" label="抖音名" prop="info1" required>
+					<u-input placeholder="请输入抖音名" v-model="form.info1" type="text"></u-input>
+				</u-form-item>
+				<u-form-item label-width="150" label="抖音账号" prop="info2" required>
+					<u-input placeholder="请输入抖音账号" v-model="form.info2" type="text"></u-input>
+				</u-form-item>
+				<u-form-item label-width="150" label="姓名" prop="info3" required>
+					<u-input placeholder="请输入姓名" v-model="form.info3" type="text"></u-input>
+				</u-form-item>
+				<u-form-item label-width="150" label="电话" prop="info4" required>
+					<u-input placeholder="请输入电话" v-model="form.info4" type="number"></u-input>
+				</u-form-item>
+				<u-form-item label-width="150" label="微信号" prop="info5" required>
+					<u-input placeholder="请输入微信号" v-model="form.info5" type="text"></u-input>
+				</u-form-item>
+				<u-form-item label-width="150" label="粉丝数量" prop="info6" required>
+					<u-input placeholder="请输入粉丝数量" v-model="form.info6" type="text"></u-input>
+				</u-form-item>
+				<u-form-item label-width="150" label="获赞数量" prop="info6" required>
+					<u-input placeholder="请输入获赞数量" v-model="form.info7" type="text"></u-input>
+				</u-form-item>
+			</u-form>
+			<u-gap height="60"></u-gap>
+			<u-button type="primary" @click="submitHandle">提交</u-button>
+		</view>
+
+		
+	</view>
+</template>
+<script>
+import { arrToObj } from '@/utils'
+export default {
+	data() {
+		return {
+			curId: '',
+			curObj: {},
+			form: {
+				info1: null,
+				info2: null,
+				info3: null,
+				info4: null,
+				info5: null,
+			},
+			eIds: [],
+			eArr: [],
+			phoneBefore3: '',
+			phoneAfter4: '',
+			customer_id: null,
+			submitButtonDisabled: true,
+			rules: {
+				info1: [
+					{
+						required: true,
+						message: '抖音名不得为空',
+						trigger: ['change', 'blur']
+					},
+				],
+				info2: [
+					{
+						required: true,
+						message: '抖音账号不得为空',
+						trigger: ['change', 'blur']
+					},
+				],
+				info3: [
+					{
+						required: true,
+						message: '姓名不得为空',
+						trigger: ['change', 'blur']
+					},
+				],
+				info4: [
+					{
+						required: true,
+						message: '电话不得为空',
+						trigger: ['change', 'blur']
+					},
+				],
+				info5: [
+					{
+						required: true,
+						message: '微信号不得为空',
+						trigger: ['change', 'blur']
+					},
+				],
+				info6: [
+					{
+						required: true,
+						message: '粉丝数量不得为空',
+						trigger: ['change', 'blur']
+					},
+				],
+				info7: [
+					{
+						required: true,
+						message: '获赞数量不得为空',
+						trigger: ['change', 'blur']
+					},
+				],
+			},
+			
+			propertySelectShow: false,
+			propertySelectList: [],
+			estateList: [],
+			areaTypeObj: {},
+			userInfo2: {},
+			curEstateName: '',
+
+			salerSelectShow: false,
+			salerSelectList: [],
+			submitModalShow: false,
+			modalShow: false,
+			modalContent: ''
+		};
+	},
+	onLoad(data) {
+		const curId = data.id
+		this.curId = curId || ''
+		uni.api.cust.apiactivityinfo({id: this.curId}).then(res => {
+			this.curObj = res.activity || {}
+		})
+	},
+	onShareAppMessage(options) {
+		var shareObj = {
+			title: `${this.curObj.estate_name}${this.curObj.remark}`,
+			path: `/pages/agent/activity/join?id=${this.curId}`,
+			success: function(res) {
+			},
+			complete: function(res) {
+				console.log(res)
+			},
+		}
+		return shareObj
+	},
+	onShareTimeline(options) {
+		var shareObj = {
+			title: `${this.curObj.estate_name}${this.curObj.remark}`,
+			path: `/pages/agent/activity/join?id=${this.curId}`,
+			success: function(res) {
+			},
+			complete: function(res) {
+				console.log(res)
+			},
+		}
+		return shareObj
+	},
+	created () {
+		
+	},
+	// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
+	onReady() {
+		this.$refs.uForm.setRules(this.rules);
+	},
+	methods: {
+		phoneHandle () {
+			let p = this.form.phone
+			p = p.replace(/ /g, '')
+			this.form.phone = p
+			this.form = {...this.form}
+		},
+		
+		getEstateList () {
+			uni.api.estate.apiestatelist({page_size: 100, report_open: 1, is_inner: 2, estate_name: this.curEstateName}).then(res => {
+				let list = res.list || []
+				this.estateList = [...list]
+			})
+		},
+		listItemHandle (val) {
+			let eIds = [...this.eIds]
+			let eArr = [...this.eArr]
+			let cIndex = eIds.indexOf(val.estate_id)
+			if (cIndex > -1 ) {
+				eIds.splice(cIndex,1)
+				eArr.splice(cIndex,1)
+			} else {
+				eIds.push(val.estate_id)
+				eArr.push(val)
+			}
+			this.eIds = [...eIds]
+			this.eArr = [...eArr]
+		},
+		clearListHandle () {
+			this.propertySelectShow = false
+			this.eIds = []
+			this.eArr = []
+			this.form.estate_name = ''
+		},
+		saveListHandle () {
+			let errMsg = ''
+			let eNames = this.eArr.map(item => {
+				if (item.phone_type == '2') {
+					errMsg = item.estate_name
+				}
+				return item.estate_name
+			})
+			this.form.estate_name = eNames.join(',')
+			if (this.eArr.length === 1 && this.eArr[0].phone_type == '2') {
+				this.form.phone_type = '2'
+			} else {
+				this.form.phone_type = '1'
+			}
+			if (errMsg && this.eArr.length > 1) {
+				uni.$msg(`${errMsg}是前三后四报备项目,请单独报备`)
+			} else {
+				this.propertySelectShow = false
+			}
+		},
+		// // 选择所属项目回调
+		// propertySelectConfirm(e) {
+		// 	e.map((val, index) => {
+		// 		this.form.estate_id = val.value;
+		// 		this.form.estate_name = val.label;
+		// 	});
+		// },
+		// openEstateList () {
+		// 	uni.navigateTo({
+		// 		url: `/pages/estate/list?eid=${this.form.estate_id}&ename=${this.form.estate_name}`
+		// 	})
+		// },
+		submitHandle() {
+			const that = this
+			this.$refs.uForm.validate(valid => {
+				if (valid) {
+					// 验证成功
+					let params = {
+						activity_id: that.curId,
+						info1: that.form.info1,
+						info2: that.form.info2,
+						info3: that.form.info3,
+						info4: that.form.info4,
+						info5: that.form.info5,
+						info6: that.form.info6,
+						info7: that.form.info7,
+					}
+					uni.api.cust.apiactivityenroll(params).then(res => {
+						uni.$msgConfirm('报名成功', () => {
+							uni.redirectTo({
+								url: `/pages/index/index`
+							})
+						}, () => {
+							uni.redirectTo({
+								url: `/pages/index/index`
+							})
+						})
+					})
+					
+
+
+
+				} else {
+					console.log('验证失败');
+				}
+			});
+		},
+
+		// 获取手机号
+		getPhoneNumber: function(e) {
+			// 点击获取手机号码按钮
+			let _that = this;
+			if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
+				_that.$refs.uToast.show({
+					title: '您可以在个人设置中再次绑定',
+					type: 'warning'
+				});
+				setTimeout(() => {
+					_that.reLunchUser();
+				}, 1500);
+				return; // 即用户拒绝授权
+			}
+			console.log(e.detail.errMsg);
+			console.log(e.detail.iv);
+			console.log(e.detail.encryptedData);
+			let iv = e.detail.iv;
+			let encryptedData = e.detail.encryptedData;
+			// 不是登陆完第一时间授权
+			wx.login({
+				success(res) {
+					if (res.code) {
+						// 设置用户手机号
+						_that.setUserPhoneNumber(encryptedData, iv, res.code);
+					} else {
+						this.$refs.uToast.show({
+							title: res.errMsg,
+							type: 'warning'
+						});
+						console.log('登录失败!' + res.errMsg);
+					}
+				}
+			});
+		},
+		// 以下是工具函数
+		// 关闭键盘
+		hideKeyboard() {
+			uni.hideKeyboard();
+		},
+		// 格式化日期的月份或天数的显示(小于10,在前面增加0)
+		getFormatDate(value) {
+			if (value == undefined || value == '') {
+				return '';
+			}
+			var str = value;
+			if (parseInt(value) < 10) {
+				str = '0' + value;
+			}
+			return str;
+		}
+	}
+};
+</script>
+<style lang="scss">
+.page {
+	padding: 20rpx;
+	background-color: #ffffff;
+}
+
+.form {
+	border-radius: 10rpx;
+	padding: 0 40rpx;
+}
+
+.popup-body {
+	.tips-title {
+		font-size: $u-p;
+		margin-bottom: 20rpx;
+	}
+
+	.tips-content {
+		font-size: $u-p2;
+		color: $u-tips-color;
+		margin-bottom: 60rpx;
+	}
+}
+
+.id_card {
+	color: #606266;
+	width: 100%;
+	height: 350rpx;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	justify-content: center;
+	background-color: #f4f5f6;
+	font-size: $u-p2;
+}
+
+.footer {
+	position: absolute;
+	text-align: center;
+	bottom: 40rpx;
+	font-size: $u-p2;
+
+	.agreement {
+		color: $u-type-error;
+	}
+}
+
+.slot-content {
+	font-size: 28rpx;
+	color: $u-content-color;
+	padding: 20rpx;
+}
+
+
+
+.scoped-estate-list {
+	.sel-item {
+		display: flex;
+		border-bottom: 1PX solid #dcdcdc;
+		padding: 20rpx;
+		&.cur {
+			background: #369af7;
+			border-radius: 10rpx;
+			overflow: hidden;
+			.img {
+				opacity: .6;
+			}
+			.p1 {
+				color: #fff;
+			}
+			.p3 {
+				color: #fff;
+			}
+		}
+	}
+	.sel-left {
+		width: 180rpx;
+		border-radius: 10rpx;
+		.img {
+			width: 180rpx;
+			height: 120rpx;
+			border-radius: 10rpx;
+		}
+	}
+	.sel-right {
+		// width: 450rpx;
+		margin-left: 20rpx;
+		.p1 {
+			font-size: 30rpx;
+			font-weight: bold;
+			margin-bottom: 10rpx;
+		}
+		.p2 {
+			margin-bottom: 10rpx;
+		}
+		.p3 {
+			color: #369af7;
+			font-size: 24rpx;
+			font-weight: bold;
+		}
+	}
+}
+
+.scoped-estate-popup {
+	height: 100%;
+	padding-bottom: 100rpx;
+	.popup-body {
+		box-sizing: border-box;
+		border-bottom: 1PX solid #dcdcdc;
+	}
+}
+
+.scoped-popup-header-input {
+	position: fixed;
+	width: 90%;
+	display: flex;
+	border-bottom: 1PX solid #dcdcdc;
+	.input {
+		flex: 1;
+		padding-left: 20rpx;
+		height: 80rpx;
+		.u-input__input {
+			height: 80rpx;
+		}
+	}
+	.b {
+		width: 200rpx;
+		height: 80rpx;
+		line-height: 80rpx;
+		background: #2d8cf0;
+		color: #fff;
+		text-align: center;
+		margin-left: 20rpx;
+	}
+}
+</style>

+ 282 - 0
pages/agent/activity/list.vue

@@ -0,0 +1,282 @@
+<template>
+	<view>
+		<wm-watermark :text="userInfo2.phone" :num="50"></wm-watermark>
+
+		<view class="scoped-estate-list">
+			<view v-for="(item, index) in dataList" :class="curEid == item.id ? 'sel-item cur' : 'sel-item'" @click="listItemHandle(item)" :key="index">
+				<!-- <view class="sel-left">
+					<image class="img" :src="item.pri_image" mode="aspectFill"></image>
+				</view> -->
+				<view class="sel-right">
+					<view class="p1">{{item.estate_name}}</view>
+					<view class="p1">{{item.remark}}</view>
+					<view class="p3">截至时间:{{ item.end_at }}</view>
+				</view>
+			</view>
+		</view>
+
+		<view class="float-search" @click="searchPopupShow = true"><u-icon name="search" size="42" color="#fff"></u-icon></view>
+
+		<!-- 平台佣金政策弹窗 -->
+		<u-popup v-model="searchPopupShow" mode="center" width="80%" height="440rpx" border-radius="20">
+			<view class="bwin-popup">
+				<view class="popup-header">楼盘搜索</view>
+				<view class="popup-body">
+					<u-input v-model="searchFormData.estate_name" border placeholder="请输入楼盘名称(支持模糊搜索)"></u-input>
+					<!-- <u-divider marginTop="10" marginBottom="10">或</u-divider>
+					<u-input v-model="searchFormData.phone" border placeholder="请输入手机号(可仅输入一部分)"></u-input> -->
+				</view>
+				<view class="popup-footer" style="position: absolute;">
+					<u-button size="medium" @click="searchPopupShow = false">取消</u-button>
+					<u-button size="medium" type="primary" @click="searchHandle()">搜索</u-button>
+				</view>
+			</view>
+		</u-popup>
+
+		<u-loadmore
+			v-if="dataList.length > 0"
+			marginTop="32"
+			:line="true"
+			:status="loadmore.status"
+			:loading-text="loadmore.loadingText"
+			:loadmore-text="loadmore.defaultText"
+			:nomore-text="loadmore.nomoreText"
+		/>
+	</view>
+</template>
+<script>
+import { arrToObj } from '@/utils'
+import wmWatermark from '@/components/wm-watermark/wm-watermark.vue'
+import uniCopy from '@/js_sdk/xb-copy/uni-copy.js'
+export default {
+	components: {
+		wmWatermark
+	},
+	data() {
+		return {
+			searchKeyword: null,
+			searchPopupShow: false,
+			searchFormData: {
+				name: '',
+				phone: ''
+			}, // 搜索栏数据
+			orderMethod: 0,
+			filterDropdownValue: {}, // 默认筛选
+			dataList: [], // 客户列表
+			loadmore: {
+				status: 'loadmore',
+				loadingText: '努力加载中',
+				defaultText: '轻轻上拉 查看更多',
+				nomoreText: '实在没有了',
+				currnetPage: 1
+			},
+			curRoles: '',
+			userInfo2: {},
+			areaTypeObj: {},
+			curEid: '',
+			curEname: '',
+		};
+	},
+	onLoad(params) {
+		if (params.eid) {
+			this.curEid = params.eid
+			this.curEname = params.enames
+		}
+		this.getDataList()
+		
+		this.userInfo2 = uni.getStorageSync('MD_userInfo2')
+		this.curRoles = uni.getStorageSync('MD_userInfo2') ? uni.getStorageSync('MD_userInfo2').roles : ''
+		
+		const dictObj = uni.getStorageSync('MD_dict')
+		this.areaTypeObj = arrToObj(dictObj.area_type)
+	},
+	onReachBottom() {
+		if (this.loadmore.status == 'nomore') return;
+		this.loadmore.currnetPage++
+		this.getDataList()
+	},
+	onPullDownRefresh() {
+		// 防止频繁刷新
+	},
+	methods: {
+		listItemHandle (item) {
+			if (this.userInfo2 && this.userInfo2.auth_state == 1) {
+				uni.navigateTo({
+					url: `/pages/agent/activity/join?id=${item.id}`
+				})
+			}
+			// if (this.curEid) {
+			// 	this.curEid = item.id
+			// } else {
+			// 	if (this.userInfo2 && this.userInfo2.auth_state == 1) {
+			// 		uni.navigateTo({
+			// 			url: `/pages/estate/dtl?id=${item.id}`
+			// 		})
+			// 	}
+			// }
+		},
+		copyTextHandle (item) {
+			uniCopy({
+				content: `${item.name}-${item.sex == 'male'?'男':'女'}-${item.phone}`,
+				success:(res)=>{
+					uni.showToast({
+						title: res,
+						icon: 'none'
+					})
+				},
+				error:(e)=>{
+					uni.showToast({
+						title: e,
+						icon: 'none',
+						duration:3000,
+					})
+				}
+			})
+		},
+		getDataList (bc) {
+			const that = this
+			let params = {
+				// page_size: 1000,
+				...this.searchFormData
+			}
+			
+			if (that.orderMethod > 0) {
+				if (that.orderMethod === 1) {
+					params.order_by = JSON.stringify([{
+						field: 'create_at',
+						sort: 'desc',
+					}])
+				}
+				if (that.orderMethod === 2) {
+					params.order_by = JSON.stringify([{
+						field: 'create_at',
+						sort: 'asc',
+					}])
+				}
+			}
+			uni.api.cust.apiactivitylist({
+				page: that.loadmore.currnetPage,
+				...params,
+			}).then(res => {
+				const list = res.list || []
+				if (list.length < 10) {
+					that.loadmore.status = 'nomore';
+				}
+				if (res.current_page === 1) {
+					if (list.length === 0) {
+						uni.$msg('无搜索结果', 'none');
+					}
+					that.dataList = [...list]
+				} else {
+					that.dataList = that.dataList.concat(list)
+				}
+				if (bc) bc()
+			})
+		},
+		customBack() {
+			uni.navigateBack();
+		},
+		// 带监听器跳转
+		pageTo(url, data) {
+			/// xxxxx
+			uni.navigateTo({
+				url: url,
+				events: {
+					// 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
+					update: function(data) {
+						// 当B页面运行 eventChannel.emit('update', { a:1 }); 时,会运行这里的代码逻辑。
+					}
+				},
+				success: function(res) {
+					// 通过eventChannel向被打开页面传送数据
+					res.eventChannel.emit('data', data);
+				}
+			});
+		},
+		searchHandle() {
+			this.loadmore.currnetPage = 1
+			this.getDataList(() => {
+				this.searchPopupShow = false
+			})
+		},
+		getTime(n) {
+			let date = n ? new Date(n) : new Date()
+			let year = date.getFullYear()
+			let month = date.getMonth() + 1
+			month = month > 9 ? month : '0' + month
+			let day = date.getDate()
+			day = day > 9 ? day : '0' + day
+			let hour = date.getHours()
+			hour = hour > 9 ? hour : '0' + hour
+			let minute = date.getMinutes()
+			minute = minute > 9 ? minute : '0' + minute
+			let second = date.getSeconds()
+			second = second > 9 ? second : '0' + second
+			return `${year}-${month}-${day} ${hour}:${minute}:${second}`
+		},
+	}
+};
+</script>
+<style lang="scss">
+// 列表
+.scoped-estate-list {
+	.sel-item {
+		display: flex;
+		border-bottom: 1PX solid #dcdcdc;
+		padding: 20rpx;
+		&.cur {
+			background: #369af7;
+			.img {
+				opacity: .6;
+			}
+			.p1 {
+				color: #fff;
+			}
+			.p3 {
+				color: #fff;
+			}
+		}
+	}
+	.sel-left {
+		width: 180rpx;
+		border-radius: 10rpx;
+		.img {
+			width: 180rpx;
+			height: 120rpx;
+			border-radius: 10rpx;
+		}
+	}
+	.sel-right {
+		// width: 450rpx;
+		margin-left: 20rpx;
+		.p1 {
+			font-size: 30rpx;
+			font-weight: bold;
+			margin-bottom: 10rpx;
+		}
+		.p2 {
+			margin-bottom: 10rpx;
+		}
+		.p3 {
+			color: #369af7;
+			font-size: 26rpx;
+			font-weight: bold;
+		}
+	}
+}
+
+.float-search {
+	opacity: 0.9;
+	position: fixed;
+	right: 20rpx;
+	bottom: 40rpx;
+	padding: 20rpx;
+	border-radius: 50%;
+	background-color: $u-theme-color;
+}
+
+.scoped-list-more-info {
+	position: absolute;
+	right: 20rpx;
+}
+</style>

+ 483 - 0
pages/agent/recommend/join.vue

@@ -0,0 +1,483 @@
+<template>
+	<view class="page">
+		<view class="form">
+			<u-form :model="form" ref="uForm">
+				<u-form-item label-width="150" label="姓名" prop="name" required>
+					<u-input placeholder="请输入客户姓名" v-model="form.name" type="text"></u-input>
+				</u-form-item>
+				<u-form-item label-width="150" label="性别" prop="sex" required>
+					<u-radio-group v-model="form.sex" active-color="#2979ff">
+						<u-radio name="male">先生</u-radio>
+						<u-radio name="female">女士</u-radio>
+					</u-radio-group>
+				</u-form-item>
+				<u-form-item label-width="150" label="意向项目" prop="estate_name" required>
+					<u-input type="select" :select-open="propertySelectShow" v-model="form.estate_name" placeholder="请选择推荐项目" @click="propertySelectShow = true"></u-input>
+					<!-- <u-input type="select" :select-open="propertySelectShow" v-model="form.estate_name" placeholder="请选择推荐项目" @click="openEstateList"></u-input> -->
+				</u-form-item>
+				<u-form-item v-if="form.phone_type == '2'" label-width="150" label="手机号">
+					<view @click.native="phoneHandle" style="position: absolute;left: 0;top: 0;width: 40px;height: 40px;"></view>
+					<u-input placeholder="输前三" v-model="phoneBefore3" type="number" style="display: inline-block;width: 70px;" input-align="right"></u-input>
+					<view style="display: inline-block;">****</view>
+					<u-input placeholder="输后四" v-model="phoneAfter4" type="number" style="display: inline-block;width: 70px;"></u-input>
+				</u-form-item>
+				<u-form-item v-else label-width="150" label="手机号" prop="phone" required>
+					<view @click.native="phoneHandle" style="position: absolute;left: 0;top: 0;width: 40px;height: 40px;"></view>
+					<u-input placeholder="请输入手机号" v-model="form.phone" type="number"></u-input>
+				</u-form-item>
+				<u-form-item label-width="150" label="备注信息" prop="remark" label-position="top">
+					<u-input placeholder="客户描述说明,如客户意向户型或面积等信息" v-model="form.remark" type="textarea"></u-input>
+				</u-form-item>
+			</u-form>
+			<u-gap height="60"></u-gap>
+			<u-button type="primary" :diabled="submitButtonDisabled" @click="submitHandle">提交</u-button>
+		</view>
+		<!-- 列表选择 -->
+		<!-- <u-select mode="single-column" :list="propertySelectList" v-model="propertySelectShow" @confirm="propertySelectConfirm"></u-select> -->
+		<u-select mode="single-column" :list="salerSelectList" v-model="salerSelectShow" @confirm="salerSelectConfirm"></u-select>
+		<!-- modal -->
+		<u-modal v-model="submitModalShow" content="请务必仔细确认各项信息是否正确" :show-cancel-button="true" @confirm="submit()"></u-modal>
+		<u-modal v-model="modalShow" :content="modalContent" :show-cancel-button="true" @cancel="modalCancel()" @confirm="modalConfirm()"></u-modal>
+		<!-- utoast -->
+		<u-toast ref="uToast" />
+		
+		
+		<u-popup v-model="propertySelectShow" mode="center" width="90%" height="100%">
+			<view class="bwin-popup scoped-estate-popup">
+				<view class="scoped-popup-header-input">
+					<u-input class="input" v-model="curEstateName" placeholder="没找到楼盘??点这输入关键字搜索"></u-input>
+					<view class="b" @click="getEstateList">搜索</view>
+				</view>
+				<scroll-view :scroll-y="true" class="popup-body">
+					<view class="scoped-estate-list">
+						<view v-for="(item, index) in estateList" :class="eIds.indexOf(item.id) > -1 ? 'sel-item cur' : 'sel-item'" @click="listItemHandle(item)" :key="index">
+							<view class="sel-left">
+								<image class="img" :src="item.pri_image" mode="aspectFill"></image>
+							</view>
+							<view class="sel-right">
+								<view class="p1">{{item.estate_name}}</view>
+								<view class="p2">
+									<u-tag
+										:text="areaTypeObj[item.area_type]"
+										:type="'success'"
+										size="mini"
+									></u-tag>
+								</view>
+								<view class="p3" v-if="userInfo2.auth_state == 1">带看需收集:{{ item.report_visit }}</view>
+								<view class="p3" v-if="userInfo2.auth_state == 1">报备/带看保护期:{{ item.report_lock }}天/{{ item.lead_lock }}天</view>
+							</view>
+						</view>
+					</view>
+				</scroll-view>
+				<view class="popup-footer" style="position: fixed;bottom: 12rpx;">
+					<u-button size="medium" @click="clearListHandle">清空</u-button>
+					<u-button size="medium" type="primary" @click="saveListHandle">确定</u-button>
+				</view>
+			</view>
+		</u-popup>
+		
+		
+	</view>
+</template>
+<script>
+import { arrToObj } from '@/utils'
+export default {
+	data() {
+		return {
+			form: {
+				name: null,
+				phone: null,
+				sex: 'male',
+				remark: null,
+				phone_type: '1',
+				saler_id: null,
+				saler_name: null
+			},
+			eIds: [],
+			eArr: [],
+			phoneBefore3: '',
+			phoneAfter4: '',
+			customer_id: null,
+			submitButtonDisabled: true,
+			rules: {
+				name: [
+					{
+						required: true,
+						message: '姓名不得为空',
+						trigger: ['change', 'blur']
+					},
+				],
+				phone: [
+					{
+						required: true,
+						message: '手机号不得为空',
+						trigger: ['change', 'blur']
+					},
+					// 11个字符判断
+					{
+						len: 11,
+						message: '手机号格式不正确',
+						trigger: ['change', 'blur']
+					},
+				],
+				estate_name: [
+					{
+						required: true,
+						message: '意向项目不能为空',
+						trigger: ['change']
+					},
+				]
+			},
+
+			propertySelectShow: false,
+			propertySelectList: [],
+			estateList: [],
+			areaTypeObj: {},
+			userInfo2: {},
+			curEstateName: '',
+
+			salerSelectShow: false,
+			salerSelectList: [],
+			submitModalShow: false,
+			modalShow: false,
+			modalContent: ''
+		};
+	},
+	onLoad(data) {
+		const that = this
+		const eventChannel = that.getOpenerEventChannel(); // that 需指向 this
+		// 监听data事件,获取上一页面通过eventChannel.emit传送到当前页面的数据
+		if (eventChannel.on) {
+			eventChannel.on('data', data => {
+				if(data.info.name) that.form.name = data.info.name;
+				if(data.info.phone) that.form.phone = data.info.phone;
+				if(data.info.sex) that.form.sex = data.info.sex;
+				if(data.info.demand) that.form.remark = data.info.demand;
+			})
+		}
+	},
+	created () {
+		this.userInfo2 = uni.getStorageSync('MD_userInfo2')
+		const dictObj = uni.getStorageSync('MD_dict')
+		this.areaTypeObj = arrToObj(dictObj.area_type)
+		uni.api.estate.apiestatelist({page_size: 100, report_open: 1, is_inner: 2}).then(res => {
+			let list = res.list || []
+			this.estateList = [...list]
+		})
+	},
+	// 必须要在onReady生命周期,因为onLoad生命周期组件可能尚未创建完毕
+	onReady() {
+		this.$refs.uForm.setRules(this.rules);
+	},
+	methods: {
+		phoneHandle () {
+			let p = this.form.phone
+			p = p.replace(/ /g, '')
+			this.form.phone = p
+			this.form = {...this.form}
+		},
+		
+		getEstateList () {
+			uni.api.estate.apiestatelist({page_size: 100, report_open: 1, is_inner: 2, estate_name: this.curEstateName}).then(res => {
+				let list = res.list || []
+				this.estateList = [...list]
+			})
+		},
+		listItemHandle (val) {
+			let eIds = [...this.eIds]
+			let eArr = [...this.eArr]
+			let cIndex = eIds.indexOf(val.estate_id)
+			if (cIndex > -1 ) {
+				eIds.splice(cIndex,1)
+				eArr.splice(cIndex,1)
+			} else {
+				eIds.push(val.estate_id)
+				eArr.push(val)
+			}
+			this.eIds = [...eIds]
+			this.eArr = [...eArr]
+		},
+		clearListHandle () {
+			this.propertySelectShow = false
+			this.eIds = []
+			this.eArr = []
+			this.form.estate_name = ''
+		},
+		saveListHandle () {
+			let errMsg = ''
+			let eNames = this.eArr.map(item => {
+				if (item.phone_type == '2') {
+					errMsg = item.estate_name
+				}
+				return item.estate_name
+			})
+			this.form.estate_name = eNames.join(',')
+			if (this.eArr.length === 1 && this.eArr[0].phone_type == '2') {
+				this.form.phone_type = '2'
+			} else {
+				this.form.phone_type = '1'
+			}
+			if (errMsg && this.eArr.length > 1) {
+				uni.$msg(`${errMsg}是前三后四报备项目,请单独报备`)
+			} else {
+				this.propertySelectShow = false
+			}
+		},
+		// // 选择所属项目回调
+		// propertySelectConfirm(e) {
+		// 	e.map((val, index) => {
+		// 		this.form.estate_id = val.value;
+		// 		this.form.estate_name = val.label;
+		// 	});
+		// },
+		// openEstateList () {
+		// 	uni.navigateTo({
+		// 		url: `/pages/estate/list?eid=${this.form.estate_id}&ename=${this.form.estate_name}`
+		// 	})
+		// },
+		submitHandle() {
+			const that = this
+			this.$refs.uForm.validate(valid => {
+				if (valid) {
+					// 验证成功
+					let params = {
+						phone_type: that.form.phone_type || '1',
+						name: that.form.name,
+						phone: that.form.phone,
+						sex: that.form.sex,
+						remark: that.form.remark,
+						// estate_id: that.form.estate_id,
+						// estate_name: that.form.estate_name,
+					}
+					if (params.phone_type == '2') {
+						if (that.phoneBefore3 && that.phoneAfter4) {
+							params.phone = `${that.phoneBefore3}****${that.phoneAfter4}`
+						} else {
+							that.$refs.uToast.show({
+								title: '请输入报备手机号的前三后四',
+								type: 'warning'
+							});
+							return
+						}
+					}
+					this.eArr.forEach((eObj, i) => {
+						let newParams = {...params}
+						newParams.estate_id = eObj.estate_id
+						newParams.estate_name = eObj.estate_name
+						uni.api.estate.apireportadd(newParams).then(res => {
+							if (i === this.eArr.length - 1) {
+								uni.$msgConfirm('报备成功,是否前往报备列表?', () => {
+									uni.navigateTo({
+										url: '/pages/agent/recommend/list'
+									})
+								}, () => {
+									this.form = {
+										name: null,
+										phone: null,
+										sex: 'male',
+										remark: null,
+									}
+								})
+							}
+						})
+					})
+					
+
+
+
+				} else {
+					console.log('验证失败');
+				}
+			});
+		},
+
+		// 获取手机号
+		getPhoneNumber: function(e) {
+			// 点击获取手机号码按钮
+			let _that = this;
+			if (e.detail.errMsg == 'getPhoneNumber:fail user deny') {
+				_that.$refs.uToast.show({
+					title: '您可以在个人设置中再次绑定',
+					type: 'warning'
+				});
+				setTimeout(() => {
+					_that.reLunchUser();
+				}, 1500);
+				return; // 即用户拒绝授权
+			}
+			console.log(e.detail.errMsg);
+			console.log(e.detail.iv);
+			console.log(e.detail.encryptedData);
+			let iv = e.detail.iv;
+			let encryptedData = e.detail.encryptedData;
+			// 不是登陆完第一时间授权
+			wx.login({
+				success(res) {
+					if (res.code) {
+						// 设置用户手机号
+						_that.setUserPhoneNumber(encryptedData, iv, res.code);
+					} else {
+						this.$refs.uToast.show({
+							title: res.errMsg,
+							type: 'warning'
+						});
+						console.log('登录失败!' + res.errMsg);
+					}
+				}
+			});
+		},
+		// 以下是工具函数
+		// 关闭键盘
+		hideKeyboard() {
+			uni.hideKeyboard();
+		},
+		// 格式化日期的月份或天数的显示(小于10,在前面增加0)
+		getFormatDate(value) {
+			if (value == undefined || value == '') {
+				return '';
+			}
+			var str = value;
+			if (parseInt(value) < 10) {
+				str = '0' + value;
+			}
+			return str;
+		}
+	}
+};
+</script>
+<style lang="scss">
+.page {
+	padding: 20rpx;
+	background-color: #ffffff;
+}
+
+.form {
+	border-radius: 10rpx;
+	padding: 0 40rpx;
+}
+
+.popup-body {
+	.tips-title {
+		font-size: $u-p;
+		margin-bottom: 20rpx;
+	}
+
+	.tips-content {
+		font-size: $u-p2;
+		color: $u-tips-color;
+		margin-bottom: 60rpx;
+	}
+}
+
+.id_card {
+	color: #606266;
+	width: 100%;
+	height: 350rpx;
+	display: flex;
+	flex-direction: column;
+	align-items: center;
+	justify-content: center;
+	background-color: #f4f5f6;
+	font-size: $u-p2;
+}
+
+.footer {
+	position: absolute;
+	text-align: center;
+	bottom: 40rpx;
+	font-size: $u-p2;
+
+	.agreement {
+		color: $u-type-error;
+	}
+}
+
+.slot-content {
+	font-size: 28rpx;
+	color: $u-content-color;
+	padding: 20rpx;
+}
+
+
+
+.scoped-estate-list {
+	.sel-item {
+		display: flex;
+		border-bottom: 1PX solid #dcdcdc;
+		padding: 20rpx;
+		&.cur {
+			background: #369af7;
+			border-radius: 10rpx;
+			overflow: hidden;
+			.img {
+				opacity: .6;
+			}
+			.p1 {
+				color: #fff;
+			}
+			.p3 {
+				color: #fff;
+			}
+		}
+	}
+	.sel-left {
+		width: 180rpx;
+		border-radius: 10rpx;
+		.img {
+			width: 180rpx;
+			height: 120rpx;
+			border-radius: 10rpx;
+		}
+	}
+	.sel-right {
+		// width: 450rpx;
+		margin-left: 20rpx;
+		.p1 {
+			font-size: 30rpx;
+			font-weight: bold;
+			margin-bottom: 10rpx;
+		}
+		.p2 {
+			margin-bottom: 10rpx;
+		}
+		.p3 {
+			color: #369af7;
+			font-size: 24rpx;
+			font-weight: bold;
+		}
+	}
+}
+
+.scoped-estate-popup {
+	height: 100%;
+	padding-bottom: 100rpx;
+	.popup-body {
+		box-sizing: border-box;
+		border-bottom: 1PX solid #dcdcdc;
+	}
+}
+
+.scoped-popup-header-input {
+	position: fixed;
+	width: 90%;
+	display: flex;
+	border-bottom: 1PX solid #dcdcdc;
+	.input {
+		flex: 1;
+		padding-left: 20rpx;
+		height: 80rpx;
+		.u-input__input {
+			height: 80rpx;
+		}
+	}
+	.b {
+		width: 200rpx;
+		height: 80rpx;
+		line-height: 80rpx;
+		background: #2d8cf0;
+		color: #fff;
+		text-align: center;
+		margin-left: 20rpx;
+	}
+}
+</style>

+ 3 - 0
pages/index/index.vue

@@ -101,6 +101,9 @@
 			<view v-if="curRoles == 1 || curRoles == 5 || curRoles == 7 || curRoles == 10 || curRoles == 11" class="op" @click="pageTo('/pages/trade/list')">
 				<u-image src="/static/index/i_e_9.png" mode="heightFix" height="146rpx" class="icon"></u-image>
 			</view>
+			<view v-if="curRoles == 1 || curRoles == 5 || curRoles == 7 || curRoles == 10 || curRoles == 11" class="op" @click="pageTo('/pages/agent/activity/list')">
+				<u-image src="/static/index/i_e_10.png" mode="heightFix" height="146rpx" class="icon"></u-image>
+			</view>
 			<!-- <view v-if="curRoles == 1 || curRoles == 5 || curRoles == 7" class="op" @click="pageTo('/pages/agent/report/buycheck')">
 				<u-image src="/static/index/i_e_6.png" mode="heightFix" height="146rpx" class="icon"></u-image>
 			</view> -->

+ 5 - 0
pages/user/setting/bank.vue

@@ -93,6 +93,7 @@
 	</view>
 </template>
 <script>
+import { pathToBase64  } from 'image-tools'
 var that;
 export default {
 	data() {
@@ -233,7 +234,11 @@ export default {
 				count: 1,
 				sizeType: ['compressed'],
 				success: function(res) {
+					
 					const filePath = res.tempFilePaths[0];
+					pathToBase64(filePath).then(hh => {
+						console.log(hh)
+					})
 					let token = uni.getStorageSync('MD_token') || ''
 					uni.uploadFile({
 						url: uni.baseUrl + 'api/upload/cloudpiv',

BIN
static/index/i_e_10.png


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/main.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/runtime.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/common/vendor.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/back-top/back-top.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/components/wm-watermark/wm-watermark.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/activity/join.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/activity/list.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/check.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/create.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/createin.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/detail.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/detail2.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/detailGovern.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/estate.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/list.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/recommend/visitimg.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/report/buycheck.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/agent/report/deal.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/create.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/list.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/my.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/mycreate.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/myrecord.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/cust/myrecordedit.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/estate/dtl.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/estate/lib.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/estate/libPre.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/estate/list.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/web.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/saler/check.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/saler/deal.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/saler/list.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/shop/map.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/check.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/create.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/list.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/record.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/trade/recordedit.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/login/login.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/login/register.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/setting/bank.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/setting/profile.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/pages/user/setting/setting.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/HM-filterDropdown/components/HM-filterDropdown/HM-filterDropdown.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/okingtz-cropper/components/okingtz-cropper/okingtz-cropper.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-alert-tips/u-alert-tips.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-avatar/u-avatar.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-button/u-button.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-calendar/u-calendar.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-divider/u-divider.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-empty/u-empty.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-form-item/u-form-item.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-form/u-form.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-gap/u-gap.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-icon/u-icon.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-image/u-image.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-input/u-input.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-line/u-line.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-loading/u-loading.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-loadmore/u-loadmore.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-mask/u-mask.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-modal/u-modal.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-navbar/u-navbar.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-parse/libs/trees.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-parse/u-parse.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-popup/u-popup.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-radio-group/u-radio-group.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-radio/u-radio.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-select/u-select.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-skeleton/u-skeleton.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-steps/u-steps.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-tag/u-tag.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-time-line-item/u-time-line-item.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-time-line/u-time-line.js.map


File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/.sourcemap/mp-weixin/uni_modules/vk-uview-ui/components/u-toast/u-toast.js.map


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

@@ -5,6 +5,8 @@
     "pages/user/login/login",
     "pages/user/login/register",
     "pages/agent/recommend/create",
+    "pages/agent/activity/list",
+    "pages/agent/activity/join",
     "pages/agent/recommend/createin",
     "pages/agent/recommend/list",
     "pages/agent/recommend/estate",

File diff suppressed because it is too large
+ 1 - 1
unpackage/dist/dev/mp-weixin/common/runtime.js


+ 354 - 128
unpackage/dist/dev/mp-weixin/common/vendor.js

@@ -2741,7 +2741,7 @@ function initData(vueOptions, context) {
     try {
       data = data.call(context); // 支持 Vue.prototype 上挂的数据
     } catch (e) {
-      if (Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG) {
+      if (Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
         console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);
       }
     }
@@ -4222,6 +4222,220 @@ module.exports = _createClass, module.exports.__esModule = true, module.exports[
 
 /***/ }),
 
+/***/ 246:
+/*!*******************************************************!*\
+  !*** E:/work/mdapp/node_modules/image-tools/index.js ***!
+  \*******************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(wx) {
+
+var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.base64ToPath = base64ToPath;
+exports.pathToBase64 = pathToBase64;
+var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 13));
+function 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) {
+    var localFilePath = plus.io.convertAbsoluteFileSystem(path);
+    if (localFilePath !== path) {
+      return localFilePath;
+    } else {
+      path = path.substr(1);
+    }
+  }
+  return '_www/' + path;
+}
+function dataUrlToBase64(str) {
+  var array = str.split(',');
+  return array[array.length - 1];
+}
+var index = 0;
+function getNewFileId() {
+  return Date.now() + String(index++);
+}
+function biggerThan(v1, v2) {
+  var v1Array = v1.split('.');
+  var v2Array = v2.split('.');
+  var update = false;
+  for (var index = 0; index < v2Array.length; index++) {
+    var diff = v1Array[index] - v2Array[index];
+    if (diff !== 0) {
+      update = diff > 0;
+      break;
+    }
+  }
+  return update;
+}
+function pathToBase64(path) {
+  return new Promise(function (resolve, reject) {
+    if ((typeof window === "undefined" ? "undefined" : (0, _typeof2.default)(window)) === 'object' && 'document' in window) {
+      if (typeof FileReader === 'function') {
+        var xhr = new XMLHttpRequest();
+        xhr.open('GET', path, true);
+        xhr.responseType = 'blob';
+        xhr.onload = function () {
+          if (this.status === 200) {
+            var fileReader = new FileReader();
+            fileReader.onload = function (e) {
+              resolve(e.target.result);
+            };
+            fileReader.onerror = reject;
+            fileReader.readAsDataURL(this.response);
+          }
+        };
+        xhr.onerror = reject;
+        xhr.send();
+        return;
+      }
+      var canvas = document.createElement('canvas');
+      var c2x = canvas.getContext('2d');
+      var img = new Image();
+      img.onload = function () {
+        canvas.width = img.width;
+        canvas.height = img.height;
+        c2x.drawImage(img, 0, 0);
+        resolve(canvas.toDataURL());
+        canvas.height = canvas.width = 0;
+      };
+      img.onerror = reject;
+      img.src = path;
+      return;
+    }
+    if ((typeof plus === "undefined" ? "undefined" : (0, _typeof2.default)(plus)) === 'object') {
+      plus.io.resolveLocalFileSystemURL(getLocalFilePath(path), function (entry) {
+        entry.file(function (file) {
+          var fileReader = new plus.io.FileReader();
+          fileReader.onload = function (data) {
+            resolve(data.target.result);
+          };
+          fileReader.onerror = function (error) {
+            reject(error);
+          };
+          fileReader.readAsDataURL(file);
+        }, function (error) {
+          reject(error);
+        });
+      }, function (error) {
+        reject(error);
+      });
+      return;
+    }
+    if ((typeof wx === "undefined" ? "undefined" : (0, _typeof2.default)(wx)) === 'object' && wx.canIUse('getFileSystemManager')) {
+      wx.getFileSystemManager().readFile({
+        filePath: path,
+        encoding: 'base64',
+        success: function success(res) {
+          resolve('data:image/png;base64,' + res.data);
+        },
+        fail: function fail(error) {
+          reject(error);
+        }
+      });
+      return;
+    }
+    reject(new Error('not support'));
+  });
+}
+function base64ToPath(base64) {
+  return new Promise(function (resolve, reject) {
+    if ((typeof window === "undefined" ? "undefined" : (0, _typeof2.default)(window)) === 'object' && 'document' in window) {
+      base64 = base64.split(',');
+      var type = base64[0].match(/:(.*?);/)[1];
+      var str = atob(base64[1]);
+      var n = str.length;
+      var array = new Uint8Array(n);
+      while (n--) {
+        array[n] = str.charCodeAt(n);
+      }
+      return resolve((window.URL || window.webkitURL).createObjectURL(new Blob([array], {
+        type: type
+      })));
+    }
+    var extName = base64.split(',')[0].match(/data\:\S+\/(\S+);/);
+    if (extName) {
+      extName = extName[1];
+    } else {
+      reject(new Error('base64 error'));
+    }
+    var fileName = getNewFileId() + '.' + extName;
+    if ((typeof plus === "undefined" ? "undefined" : (0, _typeof2.default)(plus)) === 'object') {
+      var basePath = '_doc';
+      var dirPath = 'uniapp_temp';
+      var filePath = basePath + '/' + dirPath + '/' + fileName;
+      if (!biggerThan(plus.os.name === 'Android' ? '1.9.9.80627' : '1.9.9.80472', plus.runtime.innerVersion)) {
+        plus.io.resolveLocalFileSystemURL(basePath, function (entry) {
+          entry.getDirectory(dirPath, {
+            create: true,
+            exclusive: false
+          }, function (entry) {
+            entry.getFile(fileName, {
+              create: true,
+              exclusive: false
+            }, function (entry) {
+              entry.createWriter(function (writer) {
+                writer.onwrite = function () {
+                  resolve(filePath);
+                };
+                writer.onerror = reject;
+                writer.seek(0);
+                writer.writeAsBinary(dataUrlToBase64(base64));
+              }, reject);
+            }, reject);
+          }, reject);
+        }, reject);
+        return;
+      }
+      var bitmap = new plus.nativeObj.Bitmap(fileName);
+      bitmap.loadBase64Data(base64, function () {
+        bitmap.save(filePath, {}, function () {
+          bitmap.clear();
+          resolve(filePath);
+        }, function (error) {
+          bitmap.clear();
+          reject(error);
+        });
+      }, function (error) {
+        bitmap.clear();
+        reject(error);
+      });
+      return;
+    }
+    if ((typeof wx === "undefined" ? "undefined" : (0, _typeof2.default)(wx)) === 'object' && wx.canIUse('getFileSystemManager')) {
+      var filePath = wx.env.USER_DATA_PATH + '/' + fileName;
+      wx.getFileSystemManager().writeFile({
+        filePath: filePath,
+        data: dataUrlToBase64(base64),
+        encoding: 'base64',
+        success: function success() {
+          resolve(filePath);
+        },
+        fail: function fail(error) {
+          reject(error);
+        }
+      });
+      return;
+    }
+    reject(new Error('not support'));
+  });
+}
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"]))
+
+/***/ }),
+
 /***/ 25:
 /*!******************************************************************************************!*\
   !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js ***!
@@ -9761,7 +9975,7 @@ function type(obj) {
 
 function flushCallbacks$1(vm) {
     if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {
-        if (Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG) {
+        if (Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
             var mpInstance = vm.$scope;
             console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
                 ']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');
@@ -9782,14 +9996,14 @@ function nextTick$1(vm, cb) {
     //1.nextTick 之前 已 setData 且 setData 还未回调完成
     //2.nextTick 之前存在 render watcher
     if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) {
-        if(Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG){
+        if(Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG){
             var mpInstance = vm.$scope;
             console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
                 ']:nextVueTick');
         }
         return nextTick(cb, vm)
     }else{
-        if(Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG){
+        if(Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG){
             var mpInstance$1 = vm.$scope;
             console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid +
                 ']:nextMPTick');
@@ -9885,7 +10099,7 @@ var patch = function(oldVnode, vnode) {
     });
     var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);
     if (Object.keys(diffData).length) {
-      if (Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG) {
+      if (Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}).VUE_APP_DEBUG) {
         console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +
           ']差量更新',
           JSON.stringify(diffData));
@@ -10314,7 +10528,7 @@ internalMixin(Vue);
 
 /***/ }),
 
-/***/ 296:
+/***/ 297:
 /*!**************************************************!*\
   !*** E:/work/mdapp/pages/estate/img/i_house.png ***!
   \**************************************************/
@@ -10325,7 +10539,7 @@ module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACq
 
 /***/ }),
 
-/***/ 297:
+/***/ 298:
 /*!************************************************!*\
   !*** E:/work/mdapp/pages/estate/img/i_pos.png ***!
   \************************************************/
@@ -12062,7 +12276,72 @@ exports.default = _default;
 
 /***/ }),
 
-/***/ 449:
+/***/ 45:
+/*!***********************************************************************!*\
+  !*** E:/work/mdapp/uni_modules/vk-uview-ui/libs/function/timeFrom.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
+Object.defineProperty(exports, "__esModule", {
+  value: true
+});
+exports.default = void 0;
+var _timeFormat = _interopRequireDefault(__webpack_require__(/*! ../../libs/function/timeFormat.js */ 44));
+/**
+ * 时间戳转为多久之前
+ * @param String timestamp 时间戳
+ * @param String | Boolean format 如果为时间格式字符串,超出一定时间范围,返回固定的时间格式;
+ * 如果为布尔值false,无论什么时间,都返回多久以前的格式
+ */
+function timeFrom() {
+  var dateTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+  var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'yyyy-mm-dd';
+  // 如果为null,则格式化当前时间
+  if (!dateTime) dateTime = Number(new Date());
+  // 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
+  if (dateTime.toString().length == 10) dateTime *= 1000;
+  var timestamp = +new Date(Number(dateTime));
+  var timer = (Number(new Date()) - timestamp) / 1000;
+  // 如果小于5分钟,则返回"刚刚",其他以此类推
+  var tips = '';
+  switch (true) {
+    case timer < 300:
+      tips = '刚刚';
+      break;
+    case timer >= 300 && timer < 3600:
+      tips = parseInt(timer / 60) + '分钟前';
+      break;
+    case timer >= 3600 && timer < 86400:
+      tips = parseInt(timer / 3600) + '小时前';
+      break;
+    case timer >= 86400 && timer < 2592000:
+      tips = parseInt(timer / 86400) + '天前';
+      break;
+    default:
+      // 如果format为false,则无论什么时间戳,都显示xx之前
+      if (format === false) {
+        if (timer >= 2592000 && timer < 365 * 86400) {
+          tips = parseInt(timer / (86400 * 30)) + '个月前';
+        } else {
+          tips = parseInt(timer / (86400 * 365)) + '年前';
+        }
+      } else {
+        tips = (0, _timeFormat.default)(timestamp, format);
+      }
+  }
+  return tips;
+}
+var _default = timeFrom;
+exports.default = _default;
+
+/***/ }),
+
+/***/ 450:
 /*!*************************************************************************************!*\
   !*** E:/work/mdapp/uni_modules/vk-uview-ui/components/u-parse/libs/MpHtmlParser.js ***!
   \*************************************************************************************/
@@ -12077,8 +12356,8 @@ Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
-var _config = _interopRequireDefault(__webpack_require__(/*! ./config.js */ 450));
-var _CssHandler = _interopRequireDefault(__webpack_require__(/*! ./CssHandler.js */ 451));
+var _config = _interopRequireDefault(__webpack_require__(/*! ./config.js */ 451));
+var _CssHandler = _interopRequireDefault(__webpack_require__(/*! ./CssHandler.js */ 452));
 /**
  * html 解析器
  * @tutorial https://github.com/jin-yufeng/Parser
@@ -12652,72 +12931,7 @@ exports.default = _default;
 
 /***/ }),
 
-/***/ 45:
-/*!***********************************************************************!*\
-  !*** E:/work/mdapp/uni_modules/vk-uview-ui/libs/function/timeFrom.js ***!
-  \***********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
-Object.defineProperty(exports, "__esModule", {
-  value: true
-});
-exports.default = void 0;
-var _timeFormat = _interopRequireDefault(__webpack_require__(/*! ../../libs/function/timeFormat.js */ 44));
-/**
- * 时间戳转为多久之前
- * @param String timestamp 时间戳
- * @param String | Boolean format 如果为时间格式字符串,超出一定时间范围,返回固定的时间格式;
- * 如果为布尔值false,无论什么时间,都返回多久以前的格式
- */
-function timeFrom() {
-  var dateTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
-  var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'yyyy-mm-dd';
-  // 如果为null,则格式化当前时间
-  if (!dateTime) dateTime = Number(new Date());
-  // 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
-  if (dateTime.toString().length == 10) dateTime *= 1000;
-  var timestamp = +new Date(Number(dateTime));
-  var timer = (Number(new Date()) - timestamp) / 1000;
-  // 如果小于5分钟,则返回"刚刚",其他以此类推
-  var tips = '';
-  switch (true) {
-    case timer < 300:
-      tips = '刚刚';
-      break;
-    case timer >= 300 && timer < 3600:
-      tips = parseInt(timer / 60) + '分钟前';
-      break;
-    case timer >= 3600 && timer < 86400:
-      tips = parseInt(timer / 3600) + '小时前';
-      break;
-    case timer >= 86400 && timer < 2592000:
-      tips = parseInt(timer / 86400) + '天前';
-      break;
-    default:
-      // 如果format为false,则无论什么时间戳,都显示xx之前
-      if (format === false) {
-        if (timer >= 2592000 && timer < 365 * 86400) {
-          tips = parseInt(timer / (86400 * 30)) + '个月前';
-        } else {
-          tips = parseInt(timer / (86400 * 365)) + '年前';
-        }
-      } else {
-        tips = (0, _timeFormat.default)(timestamp, format);
-      }
-  }
-  return tips;
-}
-var _default = timeFrom;
-exports.default = _default;
-
-/***/ }),
-
-/***/ 450:
+/***/ 451:
 /*!*******************************************************************************!*\
   !*** E:/work/mdapp/uni_modules/vk-uview-ui/components/u-parse/libs/config.js ***!
   \*******************************************************************************/
@@ -12807,7 +13021,7 @@ exports.default = _default;
 
 /***/ }),
 
-/***/ 451:
+/***/ 452:
 /*!***********************************************************************************!*\
   !*** E:/work/mdapp/uni_modules/vk-uview-ui/components/u-parse/libs/CssHandler.js ***!
   \***********************************************************************************/
@@ -12822,7 +13036,7 @@ Object.defineProperty(exports, "__esModule", {
   value: true
 });
 exports.default = void 0;
-var _config = _interopRequireDefault(__webpack_require__(/*! ./config.js */ 450));
+var _config = _interopRequireDefault(__webpack_require__(/*! ./config.js */ 451));
 var isLetter = function isLetter(c) {
   return c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z';
 };
@@ -13186,7 +13400,7 @@ exports.default = _default;
 
 /***/ }),
 
-/***/ 487:
+/***/ 488:
 /*!******************************************************************!*\
   !*** E:/work/mdapp/uni_modules/vk-uview-ui/libs/util/emitter.js ***!
   \******************************************************************/
@@ -13257,7 +13471,7 @@ exports.default = _default;
 
 /***/ }),
 
-/***/ 488:
+/***/ 489:
 /*!**************************************************************************!*\
   !*** E:/work/mdapp/uni_modules/vk-uview-ui/libs/util/async-validator.js ***!
   \**************************************************************************/
@@ -13292,7 +13506,7 @@ function _extends() {
 var formatRegExp = /%[sdj%]/g;
 var warning = function warning() {}; // don't print warning message when in production env or node runtime
 
-if (typeof process !== 'undefined' && Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}) && "development" !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {
+if (typeof process !== 'undefined' && Object({"VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"房票科技","VUE_APP_PLATFORM":"mp-weixin","NODE_ENV":"development","BASE_URL":"/"}) && "development" !== 'production' && typeof window !== 'undefined' && typeof document !== 'undefined') {
   warning = function warning(type, errors) {
     if (typeof console !== 'undefined' && console.warn) {
       if (errors.every(function (e) {
@@ -14435,52 +14649,7 @@ Schema.warning = warning;
 Schema.messages = messages;
 var _default = Schema;
 exports.default = _default;
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/node-libs-browser/mock/process.js */ 489)))
-
-/***/ }),
-
-/***/ 489:
-/*!********************************************************!*\
-  !*** ./node_modules/node-libs-browser/mock/process.js ***!
-  \********************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-exports.nextTick = function nextTick(fn) {
-    var args = Array.prototype.slice.call(arguments);
-    args.shift();
-    setTimeout(function () {
-        fn.apply(null, args);
-    }, 0);
-};
-
-exports.platform = exports.arch = 
-exports.execPath = exports.title = 'browser';
-exports.pid = 1;
-exports.browser = true;
-exports.env = {};
-exports.argv = [];
-
-exports.binding = function (name) {
-	throw new Error('No such module. (Possibly not yet loaded)')
-};
-
-(function () {
-    var cwd = '/';
-    var path;
-    exports.cwd = function () { return cwd };
-    exports.chdir = function (dir) {
-        if (!path) path = __webpack_require__(/*! path */ 490);
-        cwd = path.resolve(dir, cwd);
-    };
-})();
-
-exports.exit = exports.kill = 
-exports.umask = exports.dlopen = 
-exports.uptime = exports.memoryUsage = 
-exports.uvCounters = function() {};
-exports.features = {};
-
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/node-libs-browser/mock/process.js */ 490)))
 
 /***/ }),
 
@@ -14539,6 +14708,51 @@ exports.default = _default;
 /***/ }),
 
 /***/ 490:
+/*!********************************************************!*\
+  !*** ./node_modules/node-libs-browser/mock/process.js ***!
+  \********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+exports.nextTick = function nextTick(fn) {
+    var args = Array.prototype.slice.call(arguments);
+    args.shift();
+    setTimeout(function () {
+        fn.apply(null, args);
+    }, 0);
+};
+
+exports.platform = exports.arch = 
+exports.execPath = exports.title = 'browser';
+exports.pid = 1;
+exports.browser = true;
+exports.env = {};
+exports.argv = [];
+
+exports.binding = function (name) {
+	throw new Error('No such module. (Possibly not yet loaded)')
+};
+
+(function () {
+    var cwd = '/';
+    var path;
+    exports.cwd = function () { return cwd };
+    exports.chdir = function (dir) {
+        if (!path) path = __webpack_require__(/*! path */ 491);
+        cwd = path.resolve(dir, cwd);
+    };
+})();
+
+exports.exit = exports.kill = 
+exports.umask = exports.dlopen = 
+exports.uptime = exports.memoryUsage = 
+exports.uvCounters = function() {};
+exports.features = {};
+
+
+/***/ }),
+
+/***/ 491:
 /*!***********************************************!*\
   !*** ./node_modules/path-browserify/index.js ***!
   \***********************************************/
@@ -14848,7 +15062,7 @@ var substr = 'ab'.substr(-1) === 'b'
     }
 ;
 
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/mock/process.js */ 489)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/mock/process.js */ 490)))
 
 /***/ }),
 
@@ -16034,6 +16248,18 @@ var _default = {
   apitradesubtotal: function apitradesubtotal(params) {
     // 成交审核 - 成交月度小计
     return (0, _http.request)('api/trade/subtotal', params, 'loading');
+  },
+  apiactivitylist: function apiactivitylist(params) {
+    // 活动 列表
+    return (0, _http.request)('api/activity/list', params, 'loading');
+  },
+  apiactivityinfo: function apiactivityinfo(params) {
+    // 活动 详情
+    return (0, _http.request)('api/activity/info', params, 'loading');
+  },
+  apiactivityenroll: function apiactivityenroll(params) {
+    // 活动 报名
+    return (0, _http.request)('api/activity/enroll', params, 'loading');
   }
 };
 exports.default = _default;

File diff suppressed because it is too large
+ 12 - 12
unpackage/dist/dev/mp-weixin/components/back-top/back-top.js


File diff suppressed because it is too large
+ 11 - 11
unpackage/dist/dev/mp-weixin/components/wm-watermark/wm-watermark.js


File diff suppressed because it is too large
+ 459 - 0
unpackage/dist/dev/mp-weixin/pages/agent/activity/join.js


+ 11 - 0
unpackage/dist/dev/mp-weixin/pages/agent/activity/join.json

@@ -0,0 +1,11 @@
+{
+  "navigationBarTitleText": "活动报名",
+  "enablePullDownRefresh": false,
+  "usingComponents": {
+    "u-form": "/uni_modules/vk-uview-ui/components/u-form/u-form",
+    "u-form-item": "/uni_modules/vk-uview-ui/components/u-form-item/u-form-item",
+    "u-input": "/uni_modules/vk-uview-ui/components/u-input/u-input",
+    "u-gap": "/uni_modules/vk-uview-ui/components/u-gap/u-gap",
+    "u-button": "/uni_modules/vk-uview-ui/components/u-button/u-button"
+  }
+}

File diff suppressed because it is too large
+ 0 - 0
unpackage/dist/dev/mp-weixin/pages/agent/activity/join.wxml


+ 192 - 0
unpackage/dist/dev/mp-weixin/pages/agent/activity/join.wxss

@@ -0,0 +1,192 @@
+@charset "UTF-8";
+/* 这里是你自己写的全局css样式 */
+.page {
+  background-color: #f3f4f6;
+  padding: 20rpx;
+}
+.empty-wrap {
+  margin-top: 200rpx;
+  width: 100%;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+.content-page {
+  min-height: 100vh;
+  background-color: #fff;
+}
+.footer {
+  display: flex;
+  align-items: center;
+  color: #909399;
+  width: 100%;
+  padding: 20rpx 0;
+  justify-content: center;
+}
+.box-shadow {
+  box-shadow: 0rpx 2rpx 4rpx 0 rgba(0, 0, 0, 0.2);
+}
+.flex-empty {
+  visibility: hidden;
+  width: 120rpx;
+  height: 0rpx;
+}
+.bwin-btn-100 {
+  width: 100%;
+}
+.bwin-popup {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+  position: relative;
+  min-height: 100%;
+  overflow: hidden;
+}
+.bwin-popup .popup-header {
+  z-index: 2;
+  width: 80%;
+  position: fixed;
+  padding: 20rpx 0;
+  text-align: center;
+  font-size: 32rpx;
+  color: #fff;
+  font-weight: bold;
+  background-color: #2080f0;
+  border-top-left-radius: 20rpx;
+  border-top-right-radius: 20rpx;
+}
+.bwin-popup .popup-body {
+  z-index: 1;
+  position: relative;
+  top: 90rpx;
+  margin-bottom: 90rpx;
+  padding: 20rpx;
+  font-size: 32rpx;
+  overflow-y: scroll;
+}
+.bwin-popup .popup-footer {
+  position: relative;
+  left: 0;
+  bottom: 20rpx;
+  width: 100%;
+  display: flex;
+  justify-content: space-around;
+}
+.page {
+  padding: 20rpx;
+  background-color: #ffffff;
+}
+.form {
+  border-radius: 10rpx;
+  padding: 0 40rpx;
+}
+.popup-body .tips-title {
+  font-size: 32rpx;
+  margin-bottom: 20rpx;
+}
+.popup-body .tips-content {
+  font-size: 24rpx;
+  color: #909399;
+  margin-bottom: 60rpx;
+}
+.id_card {
+  color: #606266;
+  width: 100%;
+  height: 350rpx;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  background-color: #f4f5f6;
+  font-size: 24rpx;
+}
+.footer {
+  position: absolute;
+  text-align: center;
+  bottom: 40rpx;
+  font-size: 24rpx;
+}
+.footer .agreement {
+  color: #fa3534;
+}
+.slot-content {
+  font-size: 28rpx;
+  color: #606266;
+  padding: 20rpx;
+}
+.scoped-estate-list .sel-item {
+  display: flex;
+  border-bottom: 1PX solid #dcdcdc;
+  padding: 20rpx;
+}
+.scoped-estate-list .sel-item.cur {
+  background: #369af7;
+  border-radius: 10rpx;
+  overflow: hidden;
+}
+.scoped-estate-list .sel-item.cur .img {
+  opacity: .6;
+}
+.scoped-estate-list .sel-item.cur .p1 {
+  color: #fff;
+}
+.scoped-estate-list .sel-item.cur .p3 {
+  color: #fff;
+}
+.scoped-estate-list .sel-left {
+  width: 180rpx;
+  border-radius: 10rpx;
+}
+.scoped-estate-list .sel-left .img {
+  width: 180rpx;
+  height: 120rpx;
+  border-radius: 10rpx;
+}
+.scoped-estate-list .sel-right {
+  margin-left: 20rpx;
+}
+.scoped-estate-list .sel-right .p1 {
+  font-size: 30rpx;
+  font-weight: bold;
+  margin-bottom: 10rpx;
+}
+.scoped-estate-list .sel-right .p2 {
+  margin-bottom: 10rpx;
+}
+.scoped-estate-list .sel-right .p3 {
+  color: #369af7;
+  font-size: 24rpx;
+  font-weight: bold;
+}
+.scoped-estate-popup {
+  height: 100%;
+  padding-bottom: 100rpx;
+}
+.scoped-estate-popup .popup-body {
+  box-sizing: border-box;
+  border-bottom: 1PX solid #dcdcdc;
+}
+.scoped-popup-header-input {
+  position: fixed;
+  width: 90%;
+  display: flex;
+  border-bottom: 1PX solid #dcdcdc;
+}
+.scoped-popup-header-input .input {
+  flex: 1;
+  padding-left: 20rpx;
+  height: 80rpx;
+}
+.scoped-popup-header-input .input .u-input__input {
+  height: 80rpx;
+}
+.scoped-popup-header-input .b {
+  width: 200rpx;
+  height: 80rpx;
+  line-height: 80rpx;
+  background: #2d8cf0;
+  color: #fff;
+  text-align: center;
+  margin-left: 20rpx;
+}
+

File diff suppressed because it is too large
+ 389 - 0
unpackage/dist/dev/mp-weixin/pages/agent/activity/list.js


Some files were not shown because too many files changed in this diff