lhl 1 năm trước cách đây
mục cha
commit
004663bb5e

+ 0 - 1
App.vue

@@ -1,7 +1,6 @@
 <script>
 	export default {
 		onLaunch: function() {
-			console.log('App Launch')
 		},
 		onShow: function() {
 			console.log('App Show')

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
common/wx.js


+ 56 - 6
components/authVip.vue

@@ -27,7 +27,7 @@
 									<button open-type="contact">联系客服</button>
 									<!-- #endif -->
 									<!-- <button @tap="authVip()" class="ktvip-b-r">确认激活</button> -->
-									<button @tap="gobuy" class="ktvip-b-r">立即购买</button>
+									<button @tap="gobuy" class="ktvip-b-r" v-if="auth != 1">立即购买</button>
 								</view>
 							</view>
 						</view>
@@ -41,6 +41,9 @@
 </template>
 
 <script>
+	// #ifdef H5
+	import weichatObj from '@/plugin/jweixin-module/index.js';
+	// #endif
 	import {
 		mapState
 	} from 'vuex';
@@ -48,6 +51,12 @@
 		name: "auth-vip",
 		data() {
 			return {
+				// #ifdef H5
+				auth: 0,
+				// #endif
+				// #ifdef MP
+				auth: 1,
+				// #endif
 				vipnum: '',
 				mode: '',
 			}
@@ -57,8 +66,23 @@
 		},
 		mounted() {
 			this.mode = this.$myConfig.mode
+			// #ifdef MP
+			this.getSh()
+			// #endif
 		},
 		methods: {
+			async getSh() {
+				let res = await this.$myHttp.get({
+					url: this.$myHttp.urlMap.sh,
+					data: {},
+					needLogin: false,
+				})
+				if (res.code == 1) {
+					// this.navList = res.data.data
+					console.log(res)
+					this.auth =  res.data.auth
+				}
+			},
 			hideAuthVip() {
 				this.$emit('hideAuthVip', false)
 			},
@@ -124,6 +148,9 @@
 					// #ifdef MP
 					user_type: 'mini'
 					// #endif
+					// #ifdef H5
+					user_type: 'mp'
+					// #endif
 				}
 				let res = await this.$myHttp.post({
 					url: this.$myHttp.urlMap.buyJhm,
@@ -133,14 +160,10 @@
 				console.log(res)
 				if (res.code == 1) {
 					let da = res.data
+					// #ifdef MP
 					uni.requestPayment({
 						provider: 'wxpay',
-						// #ifdef H5
-						timestamp: da.timeStamp,
-						// #endif
-						// #ifdef MP
 						timeStamp: da.timeStamp,
-						// #endif
 						nonceStr: da.nonceStr,
 						package: da.package,
 						signType: da.signType,
@@ -160,6 +183,33 @@
 							console.log('fail:' + JSON.stringify(err));
 						}
 					});
+					// #endif
+					// #ifdef H5
+					// weichatObj.chooseWXPay(rdata);
+					WeixinJSBridge.invoke(
+						'getBrandWCPayRequest', {
+							"appId": da.appId, //公众号ID,由商户传入     
+							"timeStamp": da.timeStamp, //时间戳,自1970年以来的秒数     
+							"nonceStr": da.nonceStr, //随机串     
+							"package": da.package,
+							"signType": da.signType, //微信签名方式:     
+							"paySign": da.paySign //微信签名 
+						},
+						function(res) {
+							if (res.err_msg == "get_brand_wcpay_request:ok") {
+								// 使用以上方式判断前端返回,微信团队郑重提示:
+								//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
+								uni.showToast({
+									title: '激活成功',
+									icon: 'none',
+									duration: 1000
+								})
+								that.$myUserLogin.getSubvip(that.subject.id)
+								that.hideAuthVip()
+							}
+						});
+					// #endif
+
 					// uni.showToast({
 					// 	title: '激活成功',
 					// 	icon: 'none',

+ 7 - 0
components/question-jiucuo/question-jiucuo.vue

@@ -22,6 +22,8 @@
 				</view>
 				<textarea :value="content" placeholder="其他错误,请详细描述您遇到的问题..." @input="setContent"
 					class="popup-textarea" />
+				<textarea :value="analysis" placeholder="答案解析" @input="setAnalysis"
+					class="popup-textarea" />
 				<button type="primary" :loading="isSubmit" @tap="submit" class="popup-button">提交</button>
 			</view>
 			</view>
@@ -42,6 +44,7 @@
 				isSubmit: false,
 				arr: [],
 				content: '',
+				analysis: '',
 				list: [{
 					value: '1',
 					name: '含有错别字'
@@ -65,6 +68,7 @@
 				let res = await this.$myHttp.post({
 					url: this.$myHttp.urlMap.jiucuo,
 					data: {
+						analysis: this.analysis,
 						question_id: this.current_timu.id,
 						type: this.arr.join(',') + (this.arr.length > 0 && this.content != '' ? ',' : '') +
 							this.content
@@ -101,6 +105,9 @@
 			setContent(e) {
 				this.content = e.detail.value
 			},
+			setAnalysis(e) {
+				this.analysis = e.detail.value
+			},
 			checkboxChange: function(e) {
 				var items = this.list,
 					values = e.detail.value;

+ 246 - 0
components/question-liuyan/question-liuyan.vue

@@ -0,0 +1,246 @@
+<template>
+	<view>
+		<view class="questionBankAnswer-bottom-flex" @tap="jiucuo">
+			<!-- <view class="iconfont icon-sousuo1" style="font-weight: bold;"></view> -->
+			<image src="../../static/icon/liuyan.png"  mode="" style="width: 44rpx;height: 44rpx;" ></image>
+			<view>留言</view>
+		</view>
+		<uni-popup ref="popup" type="bottom" radius="12rpx" background-color="#8c8989" color="#5A5B5C" width="90%">
+			<view class="jiucuo">
+				<view class="popup-content">
+					<text class="text">留言</text>
+					<view class="iconfont icon-cuo1" @tap="hide"></view>
+				</view>
+				<view class="" style="line-height: 200rpx;text-align: center;font-size: 32rpx;" v-if="loaded && liuyanList.length == 0">
+					暂无留言
+				</view>
+				<scroll-view scroll-y="true" style="height: 400rpx;" v-else @scrolltolower="getLiuyan">
+					<view v-for="item in liuyanList" class="liuyan-wrap">
+						<view class="user-info">
+							<image :src="item.user.avatar" mode="" class="info-logo"></image>
+							<view class="info-info">
+								<view class="name">
+									{{item.user.nickname}}
+								</view>
+								<view class="time">
+									{{$myUtils.$common.formatDate(item.createtime * 1000,"Y-M-D h:m:s")}}
+								</view>
+								<view class="content">
+									{{item.content}}
+								</view>
+							</view>
+						</view>
+					</view>
+					
+				</scroll-view>
+				<view class="jiucuo-content">
+					<textarea :value="content" placeholder="说说你的看法" @input="setContent" class="popup-textarea" />
+					<button type="primary" :loading="isSubmit" @tap="submit" class="popup-button">提交</button>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			current_timu: {
+				type: Object,
+				default: {},
+			},
+		},
+		data() {
+			return {
+				isSubmit: false,
+				page: 1,
+				limit: 20,
+				loaded: false,
+				loadingType: 'more',
+				liuyanList: [],
+				arr: [],
+				content: '',
+				analysis: '',
+				
+			}
+		},
+		methods: {
+			async submit() {
+				if (this.content == '' ) return
+				if (this.isSubmit) return
+				this.isSubmit = true
+				let res = await this.$myHttp.post({
+					url: 'api/yexam/Tag/add_msg',
+					data: {
+						question_id: this.current_timu.id,
+						content: this.content,
+					},
+					needLogin: true
+				})
+				if (res.code == 1) {
+					this.isSubmit = false
+					uni.showToast({
+						title: '提交成功'
+					})
+					this.$refs.popup.close()
+				} else {
+					uni.showToast({
+						title: res.msg,
+						icon: 'none'
+					})
+					this.isSubmit = false
+				}
+			},
+			show() {
+				this.$refs.popup.open('bottom')
+				this.arr = []
+				this.content = ''
+				this.page = 1
+				this.liuyanList = []
+				this.loadingType = 'more'
+				this.loaded = false
+				this.getLiuyan()
+			},
+			hide() {
+				this.$refs.popup.close()
+			},
+			setContent(e) {
+				this.content = e.detail.value
+			},
+			jiucuo() {
+				if (this.current_timu.id != '' && this.current_timu.id != undefined) {
+					this.show()
+				}
+			},
+			async getLiuyan() {
+				let that = this
+				if(that.loadingType == 'loading' || that.loadingType == 'noMore') {
+					return
+				}
+				that.loadingType = 'loading'
+				let res = await that.$myHttp.post({
+					url: 'api/yexam/Question/guestbook',
+					data: {
+						id: that.current_timu.id,
+						page: that.page,
+						limit: that.limit
+					},
+					needLogin: true
+				});
+							
+				if (res.code == 1) {
+					that.liuyanList = that.liuyanList.concat(res.data.list)
+					if(res.data.list.length == that.limit) {
+						that.loadingType = 'more'
+						that.page++
+					}else {
+						that.loadingType = 'noMore'
+					}
+					that.loaded = true
+				}
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.popup-content {
+		position: relative;
+		background: #fff;
+		z-index: 111;
+		width: 100%;
+		border-radius: 12px 12px 0 0;
+		height: 42px;
+		border-bottom: solid 1px #f1f1f1;
+		text-align: center;
+		line-height: 42px;
+		color: #313131;
+		font-size: 15px;
+	}
+
+	.jiucuo {
+		position: relative;
+		background: #fff;
+		border-radius: 12rpx 12rpx 0 0;
+		max-height: 80vh;
+		overflow-y: auto;
+	}
+
+	.jiucuo-content {
+		font-size: 13px;
+		padding: 9px 9px 0;
+	}
+
+	.jiucuo-xuan {
+		background: #fff;
+		padding: 7px 2px;
+		margin: 12px 0;
+		border-radius: 4px;
+	}
+
+	.jiucuo-checkbox {
+		width: 100%;
+		display: flex;
+		flex-wrap: wrap;
+		align-items: flex-start;
+	}
+
+	.jiucuo-checkbox label {
+		flex: 0 0 30%;
+		display: flex;
+		align-items: center;
+	}
+
+	.popup-textarea {
+		width: 92%;
+		margin: 0;
+		font-size: 13px;
+		background: #fff;
+		padding: 11px;
+		height: 72px;
+		margin-bottom: 12px;
+		background: #f7f7f7;
+	}
+
+	.popup-button {
+		background: #3c7bfc !important;
+		color: #fff;
+		padding: 2px;
+		margin: 0 auto 11px;
+		border-radius: 43px;
+		font-size: 16px;
+		display: block !important;
+		width: 95%;
+	}
+
+	.icon-cuo1 {
+		position: absolute;
+		color: #ccc;
+		top: 0;
+		right: 12px;
+	}
+	.user-info {
+		display: flex;
+		.info-logo {
+			width: 60rpx;
+			height: 60rpx;
+			border-radius: 50%;
+			margin-right:10rpx;
+			background-color: #f7f7f7;
+		}
+	}
+	.liuyan-wrap {
+		padding: 20rpx;
+	}
+	.name {
+		font-size: 26rpx;
+		font-weight: bold;
+	}
+	.time {
+		color: #666;
+		font-size: 22rpx;
+	}
+	.content {
+		padding-top: 10rpx;
+	}
+</style>

+ 1 - 0
core/http/urlMap.js

@@ -136,6 +136,7 @@ export default {
   'authUser':'api/yexam/user/authUser',
   'getMinAppid':'api/yexam/user/mini_appid',//获取小程序appid
   'getAppid':'api/yexam/user/appid',//获取微信公众号appid
+  'getConfig': 'api/yexam/user/config',
   
   'jiucuo':'api/yexam/tag/add',//提交纠错
   // question_id

+ 7 - 1
core/http/useRouter.js

@@ -65,9 +65,14 @@ if(config.mode == 1){
 	            })
 	            res.then(function (res) {
 					if(res.data.appid != ''){
+						console.log(res,'getAppid')
 						Store.commit('setLoginStatus',0)
 						Store.commit('setAppId',res.data.appid)
 						location.reload()
+						// uni.showModal({
+						// 	title:"提示",
+						// 	content: JSON.stringify(res.data)
+						// })
 					}else{
 						alert('appid不能为空')
 					}
@@ -106,7 +111,8 @@ if(config.mode == 1){
 	            let res = MyHttp.post({
 	                url: MyHttp.urlMap.authUser,
 	                data: {
-	                    code: code
+	                    code: code,
+						recommend: uni.getStorageSync('recommend') || ''
 	                }
 	            })
 	            res.then(function (res) {

+ 2 - 2
lib/config/index.js

@@ -1,5 +1,5 @@
 module.exports = {
-  api: 'https://ks.igxys.com/',
+  api: 'https://ks.dctring.com/',
   localMedia: '', // '/5'
   storePrefix: 'vuex', // 数据前缀
   pages: {
@@ -11,7 +11,7 @@ module.exports = {
   mode:'1',
   // #endif
 	// #ifdef H5
-	mode:'3'
+	mode:'1'
 	// #endif
   // mode默认1
   // 只有当编译为账号密码登录时,mode设置为3,

+ 43 - 0
lib/config/share.js

@@ -0,0 +1,43 @@
+module.exports = {
+    data(){
+        return {
+            //设置默认的分享参数
+            share:{
+                title:'隆熹晋升平台',
+                path:'',
+                imageUrl:'',
+                desc:'',
+                content:''
+            }
+        }
+    },
+	onShow() {
+		// wx.hidShareMenu()
+		// #ifdef MP
+		wx.hideShareMenu({
+			 menus: ['shareAppMessage', 'shareTimeline']
+		})
+		// #endif
+		
+	},
+    onShareAppMessage(res) {
+        return {
+            title:this.share.title,
+            path:this.share.path,
+            imageUrl:this.share.imageUrl,
+            desc:this.share.desc,
+            content:this.share.content,
+            success(res){
+                uni.showToast({
+                    title:'分享成功'
+                })
+            },
+            fail(res){
+                uni.showToast({
+                    title:'分享失败',
+                    icon:'none'
+                })
+            }
+        }
+    }
+}

+ 3 - 0
main.js

@@ -10,6 +10,9 @@ import MyUserLogin from './core/login'
 import MescrollBody from "@/components/mescroll-uni/mescroll-body.vue"
 import MescrollUni from "@/components/mescroll-uni/mescroll-uni.vue"
 
+let share= require('./lib/config/share.js'); 
+Vue.mixin(share)
+
 App.mpType = 'app'
 
 //微信h5授权登录时使用此代码

+ 55 - 24
node_modules/deepmerge/package.json

@@ -1,30 +1,37 @@
 {
-  "name": "deepmerge",
-  "description": "A library for deep (recursive) merging of Javascript objects",
-  "keywords": [
-    "merge",
-    "deep",
-    "extend",
-    "copy",
-    "clone",
-    "recursive"
+  "_args": [
+    [
+      "deepmerge@4.2.2",
+      "E:\\2023\\10\\答题\\dati"
+    ]
   ],
-  "version": "4.2.2",
-  "homepage": "https://github.com/TehShrike/deepmerge",
-  "repository": {
-    "type": "git",
-    "url": "git://github.com/TehShrike/deepmerge.git"
-  },
-  "main": "dist/cjs.js",
-  "engines": {
-    "node": ">=0.10.0"
+  "_from": "deepmerge@4.2.2",
+  "_id": "deepmerge@4.2.2",
+  "_inBundle": false,
+  "_integrity": "sha1-RNLqNnm49NT/ujPwPYZfwee/SVU=",
+  "_location": "/deepmerge",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "deepmerge@4.2.2",
+    "name": "deepmerge",
+    "escapedName": "deepmerge",
+    "rawSpec": "4.2.2",
+    "saveSpec": null,
+    "fetchSpec": "4.2.2"
   },
-  "scripts": {
-    "build": "rollup -c",
-    "test": "npm run build && tape test/*.js && jsmd readme.md && npm run test:typescript",
-    "test:typescript": "tsc --noEmit test/typescript.ts && ts-node test/typescript.ts",
-    "size": "npm run build && uglifyjs --compress --mangle -- ./dist/umd.js | gzip -c | wc -c"
+  "_requiredBy": [
+    "/vuex-persistedstate"
+  ],
+  "_resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-4.2.2.tgz?cache=0&sync_timestamp=1572279556265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-4.2.2.tgz",
+  "_spec": "4.2.2",
+  "_where": "E:\\2023\\10\\答题\\dati",
+  "bugs": {
+    "url": "https://github.com/TehShrike/deepmerge/issues"
   },
+  "dependencies": {},
+  "description": "A library for deep (recursive) merging of Javascript objects",
   "devDependencies": {
     "@types/node": "^8.10.54",
     "is-mergeable-object": "1.1.0",
@@ -38,6 +45,30 @@
     "typescript": "=2.2.2",
     "uglify-js": "^3.6.1"
   },
+  "engines": {
+    "node": ">=0.10.0"
+  },
+  "homepage": "https://github.com/TehShrike/deepmerge",
+  "keywords": [
+    "merge",
+    "deep",
+    "extend",
+    "copy",
+    "clone",
+    "recursive"
+  ],
   "license": "MIT",
-  "dependencies": {}
+  "main": "dist/cjs.js",
+  "name": "deepmerge",
+  "repository": {
+    "type": "git",
+    "url": "git://github.com/TehShrike/deepmerge.git"
+  },
+  "scripts": {
+    "build": "rollup -c",
+    "size": "npm run build && uglifyjs --compress --mangle -- ./dist/umd.js | gzip -c | wc -c",
+    "test": "npm run build && tape test/*.js && jsmd readme.md && npm run test:typescript",
+    "test:typescript": "tsc --noEmit test/typescript.ts && ts-node test/typescript.ts"
+  },
+  "version": "4.2.2"
 }

+ 51 - 23
node_modules/jweixin-module/package.json

@@ -1,26 +1,54 @@
 {
+  "_from": "jweixin-module@^1.6.0",
+  "_id": "jweixin-module@1.6.0",
+  "_inBundle": false,
+  "_integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w==",
+  "_location": "/jweixin-module",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "jweixin-module@^1.6.0",
     "name": "jweixin-module",
-    "version": "1.6.0",
-    "description": "微信JS-SDK",
-    "main": "lib/index.js",
-    "scripts": {},
-    "repository": {
-        "type": "git",
-        "url": "git+https://github.com/zhetengbiji/jweixin-module.git"
-    },
-    "keywords": [
-        "wxjssdk",
-        "weixin",
-        "jweixin",
-        "wechat",
-        "jssdk",
-        "wx"
-    ],
-    "author": "Shengqiang Guo",
-    "license": "ISC",
-    "bugs": {
-        "url": "https://github.com/zhetengbiji/jweixin-module/issues"
-    },
-    "homepage": "https://github.com/zhetengbiji/jweixin-module#readme",
-    "devDependencies": {}
+    "escapedName": "jweixin-module",
+    "rawSpec": "^1.6.0",
+    "saveSpec": null,
+    "fetchSpec": "^1.6.0"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
+  "_shasum": "4a7ea614083e3c9c3f49e2fdc2bb882cfa58dfcd",
+  "_spec": "jweixin-module@^1.6.0",
+  "_where": "E:\\2023\\10\\答题\\dati",
+  "author": {
+    "name": "Shengqiang Guo"
+  },
+  "bugs": {
+    "url": "https://github.com/zhetengbiji/jweixin-module/issues"
+  },
+  "bundleDependencies": false,
+  "deprecated": false,
+  "description": "微信JS-SDK",
+  "devDependencies": {},
+  "homepage": "https://github.com/zhetengbiji/jweixin-module#readme",
+  "keywords": [
+    "wxjssdk",
+    "weixin",
+    "jweixin",
+    "wechat",
+    "jssdk",
+    "wx"
+  ],
+  "license": "ISC",
+  "main": "lib/index.js",
+  "name": "jweixin-module",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/zhetengbiji/jweixin-module.git"
+  },
+  "scripts": {},
+  "version": "1.6.0"
 }

+ 65 - 34
node_modules/shvl/package.json

@@ -1,50 +1,51 @@
 {
-  "name": "shvl",
-  "version": "2.0.1",
-  "description": "Get and set dot-notated properties within an object",
-  "license": "MIT",
-  "author": "Robin van der Vleuten <robin@webstronauts.co>",
-  "source": "index.js",
-  "main": "dist/shvl.js",
-  "module": "dist/shvl.mjs",
-  "unpkg": "dist/shvl.umd.js",
-  "typings": "index.d.ts",
-  "keywords": [
-    "path",
-    "dot notation",
-    "dot"
+  "_args": [
+    [
+      "shvl@2.0.1",
+      "E:\\2023\\10\\答题\\dati"
+    ]
   ],
-  "files": [
-    "dist",
-    "index.d.ts",
-    "index.js"
+  "_from": "shvl@2.0.1",
+  "_id": "shvl@2.0.1",
+  "_inBundle": false,
+  "_integrity": "sha1-5Jwht/IjBB3TkSxc6avyR0tp5oA=",
+  "_location": "/shvl",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "shvl@2.0.1",
+    "name": "shvl",
+    "escapedName": "shvl",
+    "rawSpec": "2.0.1",
+    "saveSpec": null,
+    "fetchSpec": "2.0.1"
+  },
+  "_requiredBy": [
+    "/vuex-persistedstate"
   ],
-  "scripts": {
-    "build": "microbundle",
-    "prepare": "run-s build",
-    "test": "run-p test:**",
-    "test:jest": "jest --env=jsdom",
-    "test:size": "bundlesize"
+  "_resolved": "https://registry.npm.taobao.org/shvl/download/shvl-2.0.1.tgz",
+  "_spec": "2.0.1",
+  "_where": "E:\\2023\\10\\答题\\dati",
+  "author": {
+    "name": "Robin van der Vleuten",
+    "email": "robin@webstronauts.co"
   },
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/robinvdvleuten/shvl.git"
+  "babel": {
+    "presets": [
+      "@babel/preset-env"
+    ]
   },
   "bugs": {
     "url": "https://github.com/robinvdvleuten/shvl/issues"
   },
-  "homepage": "https://github.com/robinvdvleuten/shvl#readme",
   "bundlesize": [
     {
       "path": "./dist/*.js",
       "threshold": "300b"
     }
   ],
-  "babel": {
-    "presets": [
-      "@babel/preset-env"
-    ]
-  },
+  "description": "Get and set dot-notated properties within an object",
   "devDependencies": {
     "@babel/core": "^7.0.0",
     "@babel/preset-env": "^7.0.0",
@@ -54,5 +55,35 @@
     "jest-in-case": "^1.0.2",
     "microbundle": "^0.12.3",
     "npm-run-all": "^4.1.2"
-  }
+  },
+  "files": [
+    "dist",
+    "index.d.ts",
+    "index.js"
+  ],
+  "homepage": "https://github.com/robinvdvleuten/shvl#readme",
+  "keywords": [
+    "path",
+    "dot notation",
+    "dot"
+  ],
+  "license": "MIT",
+  "main": "dist/shvl.js",
+  "module": "dist/shvl.mjs",
+  "name": "shvl",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/robinvdvleuten/shvl.git"
+  },
+  "scripts": {
+    "build": "microbundle",
+    "prepare": "run-s build",
+    "test": "run-p test:**",
+    "test:jest": "jest --env=jsdom",
+    "test:size": "bundlesize"
+  },
+  "source": "index.js",
+  "typings": "index.d.ts",
+  "unpkg": "dist/shvl.umd.js",
+  "version": "2.0.1"
 }

+ 42 - 14
node_modules/uni-read-pages/package.json

@@ -1,25 +1,53 @@
 {
-  "name": "uni-read-pages",
-  "version": "1.0.5",
+  "_args": [
+    [
+      "uni-read-pages@1.0.5",
+      "E:\\2023\\10\\答题\\dati"
+    ]
+  ],
+  "_from": "uni-read-pages@1.0.5",
+  "_id": "uni-read-pages@1.0.5",
+  "_inBundle": false,
+  "_integrity": "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA==",
+  "_location": "/uni-read-pages",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "uni-read-pages@1.0.5",
+    "name": "uni-read-pages",
+    "escapedName": "uni-read-pages",
+    "rawSpec": "1.0.5",
+    "saveSpec": null,
+    "fetchSpec": "1.0.5"
+  },
+  "_requiredBy": [
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz",
+  "_spec": "1.0.5",
+  "_where": "E:\\2023\\10\\答题\\dati",
+  "author": "",
+  "bugs": {
+    "url": "https://github.com/SilurianYang/uni-read-pages/issues"
+  },
   "description": "read `pages.json` file to generate the routes table",
-  "main": "index.js",
   "directories": {
     "example": "examples"
   },
-  "scripts": {
-    "postinstall": "node -e \"console.log('\\x1b[91m','\\n\\n uni-simple-router 垫脚片,欢迎下载!\\n \\n 开源不易,需要鼓励。去给 uni-read-pages 项目 点个 star 吧 \\n\\n')\"",
-    "dev": "webpack --watch  --progress --config webpack/webpack.dev.js",
-    "build": "webpack --progress --config webpack/webpack.prod.js"
-  },
+  "homepage": "https://github.com/SilurianYang/uni-read-pages#readme",
+  "keywords": [],
+  "license": "ISC",
+  "main": "index.js",
+  "name": "uni-read-pages",
   "repository": {
     "type": "git",
     "url": "git+https://github.com/SilurianYang/uni-read-pages.git"
   },
-  "keywords": [],
-  "author": "",
-  "license": "ISC",
-  "bugs": {
-    "url": "https://github.com/SilurianYang/uni-read-pages/issues"
+  "scripts": {
+    "build": "webpack --progress --config webpack/webpack.prod.js",
+    "dev": "webpack --watch  --progress --config webpack/webpack.dev.js",
+    "postinstall": "node -e \"console.log('\\x1b[91m','\\n\\n uni-simple-router 垫脚片,欢迎下载!\\n \\n 开源不易,需要鼓励。去给 uni-read-pages 项目 点个 star 吧 \\n\\n')\""
   },
-  "homepage": "https://github.com/SilurianYang/uni-read-pages#readme"
+  "version": "1.0.5"
 }

+ 71 - 36
node_modules/vuex-persistedstate/package.json

@@ -1,58 +1,56 @@
 {
-  "name": "vuex-persistedstate",
-  "description": "Persist and rehydrate your Vuex state between page reloads.",
-  "version": "3.1.0",
-  "license": "MIT",
-  "author": "Robin van der Vleuten <robin@webstronauts.co> (robinvdvleuten.nl)",
-  "keywords": [
-    "vue",
-    "vuex",
-    "plugin"
+  "_args": [
+    [
+      "vuex-persistedstate@3.1.0",
+      "E:\\2023\\10\\答题\\dati"
+    ]
   ],
-  "homepage": "https://github.com/robinvdvleuten/vuex-persistedstate#readme",
-  "repository": "robinvdvleuten/vuex-persistedstate",
-  "bugs": {
-    "url": "https://github.com/robinvdvleuten/vuex-persistedstate/issues"
+  "_from": "vuex-persistedstate@3.1.0",
+  "_id": "vuex-persistedstate@3.1.0",
+  "_inBundle": false,
+  "_integrity": "sha1-pxDQEAC/+DNrw7A/o+9C43YJS3E=",
+  "_location": "/vuex-persistedstate",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "version",
+    "registry": true,
+    "raw": "vuex-persistedstate@3.1.0",
+    "name": "vuex-persistedstate",
+    "escapedName": "vuex-persistedstate",
+    "rawSpec": "3.1.0",
+    "saveSpec": null,
+    "fetchSpec": "3.1.0"
   },
-  "source": "src/index.ts",
-  "main": "dist/vuex-persistedstate.js",
-  "module": "dist/vuex-persistedstate.es.js",
-  "unpkg": "dist/vuex-persistedstate.umd.js",
-  "types": "dist/index.d.ts",
-  "files": [
-    "dist",
-    "src"
+  "_requiredBy": [
+    "/"
   ],
-  "scripts": {
-    "build": "rimraf dist && microbundle --external all --name createPersistedState",
-    "prepare": "npm run build",
-    "test": "npm-run-all test:**",
-    "test:jest": "jest --env=jsdom",
-    "test:size": "bundlesize"
+  "_resolved": "https://registry.npm.taobao.org/vuex-persistedstate/download/vuex-persistedstate-3.1.0.tgz?cache=0&sync_timestamp=1596541749443&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex-persistedstate%2Fdownload%2Fvuex-persistedstate-3.1.0.tgz",
+  "_spec": "3.1.0",
+  "_where": "E:\\2023\\10\\答题\\dati",
+  "author": {
+    "name": "Robin van der Vleuten",
+    "email": "robin@webstronauts.co",
+    "url": "robinvdvleuten.nl"
   },
   "babel": {
     "presets": [
       "@babel/preset-env"
     ]
   },
+  "bugs": {
+    "url": "https://github.com/robinvdvleuten/vuex-persistedstate/issues"
+  },
   "bundlesize": [
     {
       "path": "./dist/*.js",
       "threshold": "800b"
     }
   ],
-  "husky": {
-    "hooks": {
-      "pre-commit": "npm run build && pretty-quick --staged"
-    }
-  },
-  "jest": {
-    "testURL": "http://localhost/"
-  },
   "dependencies": {
     "deepmerge": "^4.2.2",
     "shvl": "^2.0.0"
   },
+  "description": "Persist and rehydrate your Vuex state between page reloads.",
   "devDependencies": {
     "@babel/core": "^7.0.0",
     "@babel/preset-env": "^7.0.0",
@@ -72,8 +70,45 @@
     "vue": "^2.5.15",
     "vuex": "^3.0.1"
   },
+  "files": [
+    "dist",
+    "src"
+  ],
+  "homepage": "https://github.com/robinvdvleuten/vuex-persistedstate#readme",
+  "husky": {
+    "hooks": {
+      "pre-commit": "npm run build && pretty-quick --staged"
+    }
+  },
+  "jest": {
+    "testURL": "http://localhost/"
+  },
+  "keywords": [
+    "vue",
+    "vuex",
+    "plugin"
+  ],
+  "license": "MIT",
+  "main": "dist/vuex-persistedstate.js",
+  "module": "dist/vuex-persistedstate.es.js",
+  "name": "vuex-persistedstate",
   "peerDependencies": {
     "vue": "^2.0.0",
     "vuex": "^2.0.0 || ^3.0.0"
-  }
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/robinvdvleuten/vuex-persistedstate.git"
+  },
+  "scripts": {
+    "build": "rimraf dist && microbundle --external all --name createPersistedState",
+    "prepare": "npm run build",
+    "test": "npm-run-all test:**",
+    "test:jest": "jest --env=jsdom",
+    "test:size": "bundlesize"
+  },
+  "source": "src/index.ts",
+  "types": "dist/index.d.ts",
+  "unpkg": "dist/vuex-persistedstate.umd.js",
+  "version": "3.1.0"
 }

+ 3 - 48
package-lock.json

@@ -1,53 +1,8 @@
 {
   "name": "kaoshi",
   "version": "1.0.0",
-  "lockfileVersion": 2,
+  "lockfileVersion": 1,
   "requires": true,
-  "packages": {
-    "": {
-      "name": "kaoshi",
-      "version": "1.0.0",
-      "license": "ISC",
-      "dependencies": {
-        "jweixin-module": "^1.6.0",
-        "uni-read-pages": "^1.0.5",
-        "vuex-persistedstate": "^3.1.0"
-      }
-    },
-    "node_modules/deepmerge": {
-      "version": "4.2.2",
-      "resolved": "https://registry.npm.taobao.org/deepmerge/download/deepmerge-4.2.2.tgz?cache=0&sync_timestamp=1572279556265&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-4.2.2.tgz",
-      "integrity": "sha1-RNLqNnm49NT/ujPwPYZfwee/SVU=",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/jweixin-module": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npm.taobao.org/jweixin-module/download/jweixin-module-1.6.0.tgz",
-      "integrity": "sha1-Sn6mFAg+PJw/SeL9wruILPpY380="
-    },
-    "node_modules/shvl": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npm.taobao.org/shvl/download/shvl-2.0.1.tgz",
-      "integrity": "sha1-5Jwht/IjBB3TkSxc6avyR0tp5oA="
-    },
-    "node_modules/uni-read-pages": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz",
-      "integrity": "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA==",
-      "hasInstallScript": true
-    },
-    "node_modules/vuex-persistedstate": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npm.taobao.org/vuex-persistedstate/download/vuex-persistedstate-3.1.0.tgz?cache=0&sync_timestamp=1596541749443&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvuex-persistedstate%2Fdownload%2Fvuex-persistedstate-3.1.0.tgz",
-      "integrity": "sha1-pxDQEAC/+DNrw7A/o+9C43YJS3E=",
-      "dependencies": {
-        "deepmerge": "^4.2.2",
-        "shvl": "^2.0.0"
-      }
-    }
-  },
   "dependencies": {
     "deepmerge": {
       "version": "4.2.2",
@@ -56,8 +11,8 @@
     },
     "jweixin-module": {
       "version": "1.6.0",
-      "resolved": "https://registry.npm.taobao.org/jweixin-module/download/jweixin-module-1.6.0.tgz",
-      "integrity": "sha1-Sn6mFAg+PJw/SeL9wruILPpY380="
+      "resolved": "https://registry.npmjs.org/jweixin-module/-/jweixin-module-1.6.0.tgz",
+      "integrity": "sha512-dGk9cf+ipipHmtzYmKZs5B2toX+p4hLyllGLF6xuC8t+B05oYxd8fYoaRz0T30U2n3RUv8a4iwvjhA+OcYz52w=="
     },
     "shvl": {
       "version": "2.0.1",

+ 12 - 1
pages.json

@@ -44,7 +44,7 @@
 		{
 			"path": "pages/my/invitation",
 			"style": {
-				"navigationBarTitleText": "邀请海报",
+				"navigationBarTitleText": "推广邀请",
 				"app-plus": {
 					"titleNView": false
 				}
@@ -274,6 +274,17 @@
 		        }
 		    }
 		    
+		},
+		{
+		    "path" : "pages/my/tx",
+		    "style" :                                                                                    
+		    {
+		        "navigationBarTitleText": "提现",
+		        "app-plus": {
+		        	"titleNView": false
+		        }
+		    }
+		    
 		},
 		{
 		    "path" : "pages/my/yj",

+ 28 - 2
pages/article/index.vue

@@ -6,7 +6,7 @@
 		</view>
 		<!--#endif-->
 		<!-- #ifndef MP-WEIXIN -->
-		<view class="kaoshi-head">
+		<view class="kaoshi-head" v-if="auth != 1">
 			<view class="kaoshi-head-top">
 				<view class="kaoshi-head-left"></view>
 				<view class="kaoshi-head-m">新闻资讯</view>
@@ -16,7 +16,7 @@
 		<!--#endif-->
 		<mescroll-body height="auto" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
 			:down="downOption" :up="upOption">
-			<view class="news-content">
+			<view class="news-content" v-if="auth != 1">
 				<view class="news-list" v-for="(item,index) in list" :key="index" @tap="gotoDetail(item)">
 					<view class="news-flex">
 						<image :src="item.image == '' ? '../../static/img/pic.jpg' : item.image" class="news-list-img">
@@ -41,6 +41,9 @@
 		mixins: [MescrollMixin], // 使用mixin
 		data() {
 			return {
+				// #ifdef MP
+				auth: 1,
+				// #endif
 				mescroll: null, // mescroll实例对象 (此行可删,mixins已默认)
 				// 下拉刷新的配置(可选, 绝大部分情况无需配置)
 				downOption: {
@@ -72,6 +75,7 @@
 		},
 		onLoad() {
 			// #ifdef MP-WEIXIN
+			this.getSh()
 			wx.showShareMenu({
 				withShareTicket: true,
 				menus: ["shareAppMessage", "shareTimeline"]
@@ -79,6 +83,28 @@
 			// #endif
 		},
 		methods: {
+			async getSh() {
+				let res = await this.$myHttp.get({
+					url: this.$myHttp.urlMap.sh,
+					data: {},
+					needLogin: false,
+				})
+				if (res.code == 1) {
+					// this.navList = res.data.data
+					console.log(res)
+					this.auth =  res.data.auth
+					// #ifdef MP
+					if(this.auth == 1) {
+						uni.setNavigationBarTitle({
+							title: ''
+						})
+					}
+					// #endif
+					// #ifdef H5
+					this.auth = 0
+					// #endif
+				}
+			},
 			gotoDetail(item) {
 				if (item.url == '') {
 					uni.navigateTo({

+ 3 - 1
pages/auth/login/index.vue

@@ -144,8 +144,10 @@
 			this.recommend = uni.getStorageSync('spread_code') || ''
 			// #endif
 		},
-		onShow() {},
+		onShow() {
+		},
 		methods: {
+			
 			async creaet_user() {
 				/**
 				 * 客户端对账号信息进行一些必要的校验。

+ 20 - 8
pages/examination/index.vue

@@ -103,14 +103,14 @@
 				</view>
 				<view class="tan-content">
 					<view class="exam-tan-content">
-						<view class="exam-tan-content-flex">
+						<!-- <view class="exam-tan-content-flex">
 							<span>题数</span>
 							<view>{{current_exam.num}}题</view>
 						</view>
 						<view class="exam-tan-content-flex">
 							<span>总分</span>
 							<view>{{current_exam.score}}分</view>
-						</view>
+						</view> -->
 						<view class="exam-tan-content-flex">
 							<span>参考时间</span>
 							<view>{{current_exam.givetime}}分钟</view>
@@ -150,15 +150,27 @@
 				this.get_exam_list();
 				await this.$myUserLogin.getSubvip(this.subject.id)
 			}
-		},
-		onLoad() {
 			// #ifdef MP-WEIXIN
-			wx.showShareMenu({
-				withShareTicket: true,
-				menus: ["shareAppMessage", "shareTimeline"]
-			})
+			if (this.userinfo.user_id !== undefined) {
+				this.share.path = 'pages/index/index?scene=' + this.userinfo.user_id
+				console.log(this.userinfo,'this.userinfo')
+				wx.showShareMenu({
+					withShareTicket: true,
+					menus: ["shareAppMessage"]
+				})
+			}else {
+				wx.hideShareMenu()
+			}
 			// #endif
 		},
+		onLoad() {
+			// // #ifdef MP-WEIXIN
+			// wx.showShareMenu({
+			// 	withShareTicket: true,
+			// 	menus: ["shareAppMessage", "shareTimeline"]
+			// })
+			// // #endif
+		},
 		computed: {
 			...mapState(['subject', 'userinfo', 'subjectVip']),
 			static_media() {

+ 97 - 14
pages/index/index.vue

@@ -69,7 +69,7 @@
 			</view>
 		</view>
 		<template v-if="articleList.length > 0 && auth != 1">
-			<view class="home-title" >
+			<view class="home-title">
 				<view class="home-title-l">新闻资讯</view>
 				<navigator open-type="navigate" url="/pages/article/index" hover-class="none" class="home-title-r">
 					<view>更多</view>
@@ -77,7 +77,7 @@
 				</navigator>
 			</view>
 			<view class="home-box">
-				<view class="news-content-box" >
+				<view class="news-content-box">
 					<view class="news-content">
 						<view class="news-list" v-for="(item, index) in articleList" :key="index"
 							@tap="gotoNoticeDetail(item)">
@@ -110,7 +110,12 @@
 	export default {
 		data() {
 			return {
+				// #ifdef MP
 				auth: 1,
+				// #endif
+				// #ifdef H5
+				auth: 0,
+				// #endif
 				showAuthVip: false, //是否显示认证vip
 				swiper_list: [], //轮播图
 				swiper_config: {
@@ -140,18 +145,35 @@
 			// #ifdef MP-WEIXIN
 			this.getUpdate()
 			// #endif
+			// #ifdef MP-WEIXIN
+			if (this.userinfo.user_id !== undefined) {
+				this.share.path = 'pages/index/index?scene=' + this.userinfo.user_id
+				console.log(this.userinfo, 'this.userinfo')
+				wx.showShareMenu({
+					withShareTicket: true,
+					menus: ["shareAppMessage"]
+				})
+			} else {
+				wx.hideShareMenu()
+			}
+			// #endif
+			// #ifdef H5
+			this.loadShare()
+			// #endif
 		},
 		onLoad(option) {
-			this.getSh()
+
 			// #ifdef MP
+			this.getSh()
 			if (option.scene) {
 				// 存储小程序邀请人
-				uni.setStorageSync('spread_code',option.scene);
+				uni.setStorageSync('spread_code', option.scene);
+				console.log(option.scene, 'option.scene')
 			}
 			// #endif
 			// #ifdef H5
-			if(option.recommend) {
-				uni.setStorageSync('recommend',option.recommend);
+			if (option.recommend) {
+				uni.setStorageSync('recommend', option.recommend);
 			}
 			// #endif
 			if (this.subject.id == undefined) {
@@ -160,12 +182,7 @@
 				this.getNoticeList()
 				this.getArticleList()
 			}
-			// #ifdef MP-WEIXIN
-			wx.showShareMenu({
-				withShareTicket: true,
-				menus: ["shareAppMessage", "shareTimeline"]
-			})
-			// #endif
+
 			this.getNavList()
 		},
 		computed: {
@@ -175,6 +192,67 @@
 			authVip
 		},
 		methods: {
+			async loadShare() {
+				let that = this
+				let weixinObj = require('jweixin-module');
+				console.log(window.location.href);
+				let res = await this.$myHttp.get({
+					url: this.$myHttp.urlMap.getConfig + '?url=https://ks.igxys.com/h5/',
+					data: {
+						url: 'https://ks.igxys.com/h5/'
+					},
+					params: {
+						url: 'https://ks.igxys.com/h5/'
+					},
+					needLogin: false,
+				})
+				if (res.code == 1) {
+					// this.navList = res.data.data
+					console.log(res, 'res')
+					let data = res.data
+					weixinObj.config({
+						debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+						appId: data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
+						timestamp: data.timestamp, // 必填,生成签名的时间戳
+						nonceStr: data.nonceStr, // 必填,生成签名的随机串
+						signature: data.signature, // 必填,签名,见附录1
+						jsApiList: data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+					});
+					weixinObj.ready((e) => {
+						let mess;
+						mess = {
+							link: 'https://ks.igxys.com/h5/?recommend=' +that.userinfo.user_id, // 分享链接
+							imgUrl: 'https://ks.igxys.com/wap/sharelogo.jpg',
+							desc: '看完就过医学考试题库',
+							title:'隆熹晋升平台',
+							success:function(a) {
+								console.log(a);
+							},
+							fail: function(e) {
+								console.log(e);
+							}
+						}
+						weixinObj.updateAppMessageShareData(mess); // 即将废弃updateAppMessageShareData
+						// 分享朋友圈
+						weixinObj.updateTimelineShareData(mess); // 即将废弃
+					})
+				}
+
+
+				// let showDate = {
+				// 	"img_url": "",
+				// 	"img_width": "120",
+				// 	"img_height": "120",
+				// 	"link": "https://ks.igxys.com/h5/",
+				// 	"desc": "隆熹晋升平台",
+				// 	"title": "隆熹晋升平台"
+				// }
+				// //https://ks.igxys.com/h5/
+				// if(this.userinfo.user_id !== undefined) {
+				// 	showDate.link = 'https://ks.igxys.com/h5/' + '?recommend=' + this.userinfo.user_id
+				// }
+				// WeixinJSBridge.invoke('shareTimeline', showDate);
+			},
 			// 获取审核详情
 			async getSh() {
 				let res = await this.$myHttp.get({
@@ -185,6 +263,10 @@
 				if (res.code == 1) {
 					// this.navList = res.data.data
 					console.log(res)
+					this.auth = res.data.auth
+					// #ifdef H5
+					this.auth = 0
+					// #endif
 				}
 			},
 			getUpdate() {
@@ -458,7 +540,8 @@
 
 	.kaoshi-head-banner img {
 		width: 100%;
-		height: 140px;
+		/* height: 140px; */
+		height: 45vw;
 		border-radius: 10px;
 	}
 
@@ -467,7 +550,7 @@
 	}
 
 	.kaoshi-head-banner .swiper {
-		height: 140px !important;
+		height: 45vw !important;
 	}
 
 	/* 首页通知 */

+ 15 - 9
pages/my/index.vue

@@ -80,10 +80,10 @@
 		</view>
 		<uni-list>
 			<view @tap="navTo('/pages/my/invitation')">
-				<uni-list-item title="邀请海报" :thumb="static_media.img09" showArrow></uni-list-item>
+				<uni-list-item title="推广邀请" :thumb="static_media.img09" showArrow></uni-list-item>
 			</view>
 			<view @tap="navTo('/pages/my/team')">
-				<uni-list-item title="我的推广" :thumb="static_media.img09" showArrow></uni-list-item>
+				<uni-list-item title="我的推广" :thumb="static_media.img10" showArrow></uni-list-item>
 			</view>
 			<view @tap="navTo('/pages/my/yj')">
 				<uni-list-item title="我的佣金" :thumb="static_media.img02" showArrow></uni-list-item>
@@ -120,9 +120,9 @@
 			</button>
 			<!-- #endif -->
 		</uni-list>
-		<view class="" @click="goSm">
-			少吗
-		</view>
+		<!-- <view class="" @click="scanCode">
+			扫一扫
+		</view> -->
 		<authVip v-if="showAuthVip" @hideAuthVip="showAuthVip = false"></authVip>
 		
 	</view>
@@ -159,6 +159,7 @@
 					img07: '/static/img/myicon7.png',
 					img08: '/static/img/myicon8.png',
 					img09: '/static/img/myicon9.png',
+					img10: '/static/img/myicon10.png',
 					kong: this.$myConfig.localMedia + '/static/img/txk.png'
 				}
 			}
@@ -175,12 +176,17 @@
 			}
 		},
 		methods: {
-			goSm() {
-				wx.scanCode({
+			scanCode() {
+				var self = this;
+				// #ifdef MP || APP
+				uni.scanCode({
+					scanType: ["qrCode", "barCode"],
 					success(res) {
-						console.log(res)
-					}
+						console.log('res',res)
+					},
+					fail(res) {},
 				})
+				// #endif
 			},
 			async getUserInfo() {
 				let res = await this.$myHttp.post({

+ 95 - 11
pages/my/invitation.vue

@@ -5,33 +5,46 @@
 			<tki-qrcode :cid="cid" ref="qrcode" :val="val" :size="size" :unit="unit" :background="background"
 				:foreground="foreground" :pdground="pdground" :icon="icon" :iconSize="iconSize" :lv="lv" :onval="onval"
 				:showLoading="showLoading" :loadMake="loadMake" :usingComponents="usingComponents" @result="qrR" />
+			
 			<!-- #endif -->
 		</view>
-		<view class="" :style="{'height': height*1/2 + 'px'}">
+		<view class="" :style="{'height': height*1/2/2 + 'px'}">
 		</view>
 		<!-- #ifdef H5 -->
-		<canvas :style="{ width:  '600rpx', height: '1221rpx',}" canvas-id="myCanvas" id="myCanvas" class="hb"></canvas>
+		<canvas :style="{ width:  canvasW + 'px',height: canvasH + 'px',}" canvas-id="myCanvas" id="myCanvas" class="qrimg"></canvas>
+		<image :style="{'display': 'block', width:  '600rpx', height: '1221rpx',margin: 'auto'}" :src="shareQrcodeUrl" mode="" id="saveImg"  class="hb"></image>
 		<!-- #endif -->
 		<!-- #ifdef MP -->
-		<canvas :style="{ width:  '600rpx', height: '1221rpx',}" canvas-id="myCanvas" id="myCanvas" class="hb"></canvas>
+		<canvas :style="{ width:  canvasW + 'px', height: canvasH + 'px',}" canvas-id="myCanvas" id="myCanvas" class="hb"></canvas>
 		<!-- #endif -->
 		<view class="scrop">
 
 		</view>
-		<view class="btm-btn" v-if="fina">
-			<!-- <view class="btn" @click="comfirm">
+		<!-- #ifdef MP -->
+		<view v-if="fina" class="bottom-btn" @click="saveShareQrcode">
+			保存分享海报
+		</view>
+		<!-- #endif -->
+		<!-- #ifdef H5 -->
+		<view v-if="fina" class="bottom-btn">
+			长按图片保存到相册
+		</view>
+		<!-- <view class="btm-btn" v-if="fina">
+			<view class="btn" @click="comfirm">
 				<image src="../../static/icon/fzlj.png" mode=""></image>
 				<view class="">
 					复制邀请链接
 				</view>
-			</view> -->
-			<!-- <view class="btn" @click="saveShareQrcode">
+			</view>
+			<view class="btn" @click="savePic">
 				<image src="../../static/icon/fxhb.png" mode=""></image>
 				<view class="">
 					保存分享海报
 				</view>
-			</view> -->
-		</view>
+			</view>
+		</view> -->
+		<!-- #endif -->
+		
 	</view>
 </template>
 
@@ -112,6 +125,29 @@
 			});
 		},
 		methods: {
+			downLoad() {
+			        const url = this.shareQrcodeUrl;//你要下载的图片地址
+			         var xhr = new XMLHttpRequest();
+			         xhr.open('get', url, true);
+			         xhr.responseType = 'blob';
+			         xhr.onload = ()=>{
+			           if (xhr.status === 200) {
+			             console.log(xhr)
+			             var blobUrl = new Blob([xhr.response]);
+			             const link = document.createElement('a');
+			             link.style.display = 'none';
+			             var urlObject = window.URL.createObjectURL(blobUrl);
+			             link.href = urlObject;
+			             link.download = url;
+			             document.body.appendChild(link);
+			             link.click();
+			             document.body.removeChild(link);
+			           }
+			         }
+			         xhr.send();
+			         this.showDownImage = false;
+			        this.closePreviewImage();
+			      },
 			async getYqhb() {
 				//yqhb
 				let res = await this.$myHttp.post({
@@ -127,7 +163,7 @@
 			getBaseInfo() {
 				console.log('开始')
 				let that = this
-				this.val = 'https://ks.igxys.com/h5/pages/auth/login/index?form_type=1&recommend=' + that.userinfo.user_id
+				this.val = 'https://ks.dctring.com/h5/?recommend=' + that.userinfo.user_id
 			},
 			uniCopy(content) {
 				/**
@@ -198,6 +234,7 @@
 				// console.log(this['ewmImg' + letter].path, letter)
 				// this.canvasW = this.SystemInfo.windowWidth; // 画布宽度
 				that.ratio = this.SystemInfo.windowWidth / 750;
+				console.log(that.ratio,'that.ratio')
 				that.canvasW = 600 * that.ratio;
 				that.canvasH = 1221 * that.ratio;
 				that.ewmW = 240 * that.ratio;
@@ -221,8 +258,15 @@
 						ctx.fillRect(0, 0, that.canvasW, that.canvasH) // fillRect(x,y,宽度,高度)
 
 						// 绘制商品主图,二维码
+						// #ifdef MP
 						ctx.drawImage('/' + that.goodsImg.path, 0, 0, that.canvasW, that
 							.canvasH) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度)
+						// #endif
+						// #ifdef H5
+						ctx.drawImage(that.goodsImg.path, 0, 0, that.canvasW, that
+							.canvasH) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度)
+						// #endif
+						
 						ctx.drawImage(that.ewmImg.path, 183 * that.ratio, 320 * that.ratio,
 							that.ewmW, that.ewmW) // drawImage(图片路径,x,y,绘制图像的宽度,绘制图像的高度,二维码的宽,高)
 
@@ -266,11 +310,12 @@
 						    const [err, res] = await uni.canvasToTempFilePath({
 						      canvasId: "myCanvas",
 						    });
-						    // that.shareQrcodeUrl = res.tempFilePath;
+						    that.shareQrcodeUrl = res.tempFilePath;
 						let ad = await that.getImageInfo(res.tempFilePath);
 							console.log(ad)
 							console.log('结束')
 						    clearTimeout(a);
+							that.fina = true
 							that.$forceUpdate()
 						  }, 250);
 						})());
@@ -303,6 +348,31 @@
 					});
 				})
 			},
+			savePic(Url){
+				
+				// let Url = this.shareQrcodeUrl
+			    let img = document.getElementById("saveImg")
+			    Url = img.src; //图片路径,也可以传值进来
+			    let triggerEvent = "touchstart"; //指定下载方式
+			    let blob=new Blob([''], {type:'application/octet-stream'}); //二进制大型对象blob
+			    let url = URL.createObjectURL(blob); //创建一个字符串路径空位
+			    let a = document.createElement('a'); //创建一个 a 标签
+			    a.href = Url;  //把路径赋到a标签的href上
+			    a.download = Url.replace(/(.*\/)*([^.]+.*)/ig,"$2").split("?")[0]; 
+			    let e = new MouseEvent('click', ( true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null));  
+			    a.dispatchEvent(e);
+			    //释放一个已经存在的路径(有创建createObjectURL就要释放revokeObjectURL)
+			    URL.revokeObjectURL(url);  
+			    /* 
+				//这段好像并不影响,所以我不用,注释掉
+				var imgs = document.getElementsByTagName("img");
+				for(var i = 0,o;o = imgs[i];i++){
+					o.addEventListener(triggerEvent,function(){
+						var newurl = this.getAttribute("src");
+						saveAs(newurl);
+					},false);
+				} */
+			},
 			//保存图片
 			saveShareQrcode() {
 				console.log(this.shareQrcodeUrl)
@@ -359,6 +429,7 @@
 	}
 
 	.hb {
+		display: block;
 		margin: auto;
 	}
 
@@ -405,4 +476,17 @@
 			}
 		}
 	}
+	.bottom-btn {
+		// background-color: #fff;
+		display: block;
+		width: 600rpx;
+		height: 80rpx;
+		background-color: #4d9af6;
+		color: #fff;
+		line-height: 80rpx;
+		margin: 30rpx auto;
+		text-align: center;
+		border-radius: 40rpx;
+		font-size: 28rpx;
+	}
 </style>

+ 2 - 2
pages/my/team.vue

@@ -17,8 +17,8 @@
 		<!--#endif-->
 		<view class="kemulist" v-if="myexchange.length > 0">
 			<view class="kemubox" v-for="(item,index) in myexchange">
-				<view class="kemutitle">{{item.subject_name}}</view>
-				<view class="kemutime">到期时间:{{$myUtils.$common.formatDate(item.end_time * 1000,"Y年M月D日 h:m:s")}}</view>
+				<view class="kemutitle">{{item.nickname}}</view>
+				<view class="kemutime">{{$myUtils.$common.formatDate(item.jointime * 1000,"Y年M月D日 h:m:s")}}</view>
 			</view>
 		</view>
 		<view class="nokemu" v-else>

+ 346 - 0
pages/my/tx.vue

@@ -0,0 +1,346 @@
+<template>
+	<view class="content">
+		<!-- <uni-notice-bar single="true" text="实际到账98%"></uni-notice-bar> -->
+		<view class="content-money">
+			<view class="flex ">
+				<view class="buttom">
+					<view class="icon">{{ money }}</view>
+					<text class="text">可提现佣金</text>
+				</view>
+			</view>
+		</view>
+
+		<view class="row-box">
+			<view class="title">提现金额</view>
+			<view class="row">
+				<text class="tit">¥</text>
+				<input class="input" type="number" v-model="withdrawal" placeholder="请输入提现金额"
+					placeholder-class="placeholder" />
+				<view class="buttom" @click="withdrawal = money">全部提现</view>
+			</view>
+		</view>
+		<template v-if="auth != 1">
+			<view class="row b-b">
+				<text class="tit">银行卡号</text>
+				<input class="input" type="text" v-model="bankInfo.account" placeholder="请输入银行卡号"
+					placeholder-class="placeholder" />
+			</view>
+			<view class="row b-b">
+				<text class="tit">姓名</text>
+				<input class="input" type="text" v-model="bankInfo.full_name" placeholder="请输入姓名"
+					placeholder-class="placeholder" />
+			</view>
+			<view class="row b-b">
+				<text class="tit">所属银行</text>
+				<input class="input" type="text" v-model="bankInfo.bank" placeholder="请输入所属银行"
+					placeholder-class="placeholder" />
+			</view>
+			<view class="row b-b">
+				<text class="tit">所属支行</text>
+				<input class="input" type="text" v-model="bankInfo.subbranch" placeholder="请输入所属支行"
+					placeholder-class="placeholder" />
+			</view>
+		</template>
+		<button class="add-btn up" @click="confirm">提交申请</button>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+
+	export default {
+		data() {
+			return {
+				auth: 1,
+				loading: false,
+				bankInfo: {
+					account: '',
+					full_name: '',
+					bank: '',
+					subbranch: ''
+				},
+				weixin_no: '',
+				type: 'bank', //提现方式
+				money: '0.00', //可提现金额
+				freeze: '0.0', //冻结金额
+				withdrawal: '', //提现金额
+				minPrice: '', //最少提现金额
+				aliData: {},
+				weixin: {},
+				alipay_code: '',
+				alipay_name: '',
+				bank_code: '',
+				bank_people: '',
+				bank_name: '',
+				bank_belonging: '',
+				jftype: 0,
+			};
+		},
+		onLoad(options) {
+			this.loadData();
+			this.getSh()
+		},
+		onShow() {
+			// this.dataUp()
+		},
+		methods: {
+			async getSh() {
+				let res = await this.$myHttp.get({
+					url: this.$myHttp.urlMap.sh,
+					data: {},
+					needLogin: false,
+				})
+				if (res.code == 1) {
+					// this.navList = res.data.data
+					console.log(res)
+					this.auth = res.data.auth
+					// #ifdef H5
+					this.auth = 0
+					// #endif
+				}
+			},
+			dataUp() {
+				this.loadData();
+			},
+			// 加载余额信息
+			async loadData() {
+				let res = await this.$myHttp.post({
+					url: this.$myHttp.urlMap.userInfo,
+					needLogin: true
+				})
+				if (res.code == 1) {
+					this.user_info = res.data
+					this.money = res.data.brokerage
+				}
+				this.bankInfo = uni.getStorageSync('bankInfo') || {
+					account: '',
+					full_name: '',
+					bank: '',
+					subbranch: ''
+				}
+			},
+			// 跳转
+			navTo(url) {
+				uni.navigateTo({
+					url: url
+				});
+			},
+			// 切换选中对象
+			tabRadio(e) {
+				this.type = e.detail.value;
+			},
+			// 提交
+			async confirm() {
+				let that = this
+				//
+				// api/yexam/user/cash
+				if(!this.withdrawal) {
+					return uni.showToast({
+						icon: 'none',
+						title: '请输入提现金额'
+					});
+				}
+				if(!this.bankInfo.account) {
+					return uni.showToast({
+						icon: 'none',
+						title: '请输入银行卡号'
+					});
+				}
+				if(!this.bankInfo.full_name) {
+					return uni.showToast({
+						icon: 'none',
+						title: '请输入姓名'
+					});
+				}
+				if(!this.bankInfo.bank) {
+					return uni.showToast({
+						icon: 'none',
+						title: '请输入所属银行'
+					});
+				}
+				if(!this.bankInfo.subbranch) {
+					return uni.showToast({
+						icon: 'none',
+						title: '请输入所属支行'
+					});
+				}
+				
+				if(that.loading) {
+					return
+				}
+				that.loading = true
+				let res = await this.$myHttp.post({
+					url: 'api/yexam/user/cash',
+					needLogin: true,
+					data: {
+						account: that.bankInfo.account,
+						full_name: that.bankInfo.full_name,
+						bank: that.bankInfo.bank,
+						subbranch: that.bankInfo.subbranch,
+						number: that.withdrawal
+					}
+				})
+				if (res.code == 1) {
+					// this.user_info = res.data
+					// this.money = res.data.brokerage
+					that.withdrawal = 0
+					uni.showToast({
+						icon: 'success',
+						title: '提交成功'
+					});
+					uni.setStorageSync('bankInfo',that.bankInfo)
+					that.dataUp()
+					that.loading = false
+				}
+			}
+		}
+	};
+</script>
+
+<style lang="scss">
+	page {
+		height: 100%;
+	}
+
+	.content-money {
+		padding: 30rpx 0;
+		background: #ffffff;
+	}
+
+	.flex {
+		background-color: #ffffff;
+		text-align: center;
+		margin: 0 30rpx;
+
+
+		.buttom {
+			font-size: 32rpx;
+		}
+
+		.interval {
+			width: 2px;
+			height: 60rpx;
+			background-color: #eeeeee;
+		}
+
+		.icon {
+			background-size: 100%;
+			font-size: 42rpx;
+			color: #000;
+			font-weight: bold;
+			background-repeat: no-repeat;
+			background-position: center;
+		}
+
+		.text {
+			color: #000;
+		}
+	}
+
+	.row-box {
+		margin-top: 30rpx;
+		padding: 20rpx 30rpx;
+		background: #fff;
+
+		.title {
+			font-size: 26rpx;
+			color: #000;
+		}
+
+		.row {
+			display: flex;
+			align-items: center;
+			position: relative;
+			height: 80rpx;
+
+			.tit {
+				flex-shrink: 0;
+				width: 40rpx;
+				font-size: 30rpx;
+				color: #000;
+			}
+
+			.input {
+				flex: 1;
+				font-size: 30rpx;
+				color: #000;
+			}
+
+			.iconlocation {
+				font-size: 36rpx;
+				color: #000;
+			}
+
+			.buttom {
+				color: #3db4f5;
+				font-size: 24rpx;
+			}
+		}
+	}
+
+	.add-btn {
+		&.modified {
+			// color: #ffffff;
+			border: 1px solid #3db4f5;
+			// background-color: #fff;
+			color: #fff;
+			background-color: #fff;
+		}
+
+		&.up {
+			background: #3db4f5;
+			color: #fff;
+		}
+
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 690rpx;
+		height: 80rpx;
+		margin: 0 auto;
+		margin-top: 30rpx;
+		font-size: 26rpx;
+		border-radius: 10rpx;
+	}
+
+
+	/deep/ .uni-radio-input {
+		width: 45rpx;
+		height: 45rpx;
+	}
+
+	.row {
+		display: flex;
+		align-items: center;
+		position: relative;
+		padding: 0 30upx;
+		height: 110upx;
+		background: #fff;
+
+		.tit {
+			flex-shrink: 0;
+			width: 250upx;
+			font-size: 30upx;
+			color: #000;
+		}
+
+		.input {
+			flex: 1;
+			font-size: 30upx;
+			color: #000;
+		}
+
+		.iconlocation {
+			font-size: 36upx;
+			color: #000;
+		}
+	}
+
+	.tip {
+		padding: 20rpx;
+		color: #fd3b39;
+	}
+</style>

+ 296 - 291
pages/my/yj.vue

@@ -1,29 +1,52 @@
 <template>
 	<view class="content">
+		<view class="top-info">
+			<view class="tit">
+				总佣金
+			</view>
+			<view class="flex" style="padding: 50rpx 0 40rpx 20rpx;">
+				<view class="price">
+					{{user_info.brokerage}}
+				</view>
+				<view class="tx" @click="goTx">
+					提现
+				</view>
+			</view>
+		</view>
 		<view class="navbar">
-			<view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
+			<view v-for="(item, index) in navList" :key="index" class="nav-item"
+				:class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
 		</view>
-		<swiper :current="tabCurrentIndex" :style="{ height: maxheight }" class="swiper-box" duration="300" @change="changeTab">
+		<swiper :current="tabCurrentIndex" :style="{ height: maxheight }" class="swiper-box" duration="300"
+			@change="changeTab">
 			<swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
 				<scroll-view scroll-y="true" class="list-scroll-content" @scrolltolower="loadData">
 					<!-- 空白页 -->
-					<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
-
 					<!-- 订单列表 -->
-					<view class="order-item flex" v-for="(item, index) in tabItem.orderList" :key="index">
+					<view class="order-item flex" v-if="tabItem.orderList.length > 0"
+						v-for="(item, index) in tabItem.orderList" :key="index">
 						<view class="title-box">
-							<view class="title">
-								<text>{{ item.title }}</text>
+							<view class="title" v-if="tabCurrentIndex == 0">
+								<text>{{ item.nickname }}(id:{{ item.user_id }})开通{{item.subject_name}},支付¥{{item.pay_price}}</text>
+							</view>
+							<view class="title" v-if="tabCurrentIndex == 1">
+								<text>提现至{{item.account}}({{item.status == 0?'待审核':(item.status == 1? '已通过': '已拒绝')}})</text>
 							</view>
-							<view class="time">
-								<text>{{ item.add_time }}</text>
+							<view class="time" v-if="tabCurrentIndex == 0">
+								<text>{{ item.pay_time_text }}</text>
+							</view>
+							<view class="" v-else>
+								{{$myUtils.$common.formatDate(item.createtime * 1000,"Y-M-D h:m:s")}}
 							</view>
 						</view>
 						<view class="money">
-							<text>{{ (item.pm == 0 ? '-' : '+') + item.number }}</text>
+							<text>{{tabCurrentIndex == 0? ('+' + item.recommend_price):('-' + item.number)}}</text>
 						</view>
 					</view>
-					
+					<view class="nokemu" v-if="tabItem.orderList.length == 0">
+						<image src="../../static/img/mescroll-empty.png" mode="aspectFit" class="nokemuimg"></image>
+						<view class="nokemutitle">暂无数据</view>
+					</view>
 				</scroll-view>
 			</swiper-item>
 		</swiper>
@@ -31,328 +54,310 @@
 </template>
 
 <script>
-import { mapState, mapMutations } from 'vuex';
-export default {
-	onReady(res) {
-		var _this = this;
-		uni.getSystemInfo({
-			success: resu => {
-				const query = uni.createSelectorQuery();
-				query.select('.swiper-box').boundingClientRect();
-				query.exec(function(res) {
-					_this.maxheight = resu.windowHeight - res[0].top + 'px';
-					console.log('打印页面的剩余高度', _this.maxheight);
-				});
-			},
-			fail: res => {}
-		});
-	},
-	data() {
-		return {
-			userInfo: {},
-			// 头部图高度
-			maxheight: '',
-			tabCurrentIndex: 0,
-			sr: '',
-			zc: '',
-			navList: [
-				{
-					state: 2,
-					text: '收入',
-					loadingType: 'more',
-					orderList: [],
-					page: 1, //当前页面
-					limit: 10 //每次信息条数
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+	export default {
+		onReady(res) {
+			var _this = this;
+			uni.getSystemInfo({
+				success: resu => {
+					const query = uni.createSelectorQuery();
+					query.select('.swiper-box').boundingClientRect();
+					query.exec(function(res) {
+						_this.maxheight = resu.windowHeight - res[0].top + 'px';
+						console.log('打印页面的剩余高度', _this.maxheight);
+					});
 				},
-				{
-					state: 1,
-					text: '支出',
-					loadingType: 'more',
-					orderList: [],
-					page: 1, //当前页面
-					limit: 10 //每次信息条数
-				}
-			],
-			money: ''
-		};
-	},
-	onLoad(options) {},
-	onShow() {
-		this.getUserInfo();
-		this.loadData();
-		//获取用户余额
-		// userBalance({}).then(({ data }) => {
-		// 	this.money = data.commissionCount;
-		// });
-	},
-	methods: {
-		...mapMutations('user', ['setUserInfo']),
-		navto(e) {
-			uni.navigateTo({
-				url: e
-			});
-		},
-		getUserInfo() {
-			getUser({}).then(({ data }) => {
-				this.userInfo = data
+				fail: res => {}
 			});
 		},
-		async loadData(source) {
-			const obj = this;
-			//这里时将订单挂载到tab列表下
-			let index = this.tabCurrentIndex;
-			let navItem = this.navList[index];
-			let state = navItem.state ;
-			if (source === 'tabChange' && navItem.loaded === true) {
-				//tab切换只有第一次需要加载数据
-				return;
-			}
-			if (navItem.loadingType === 'loading') {
-				//防止重复加载
-				return;
-			}
-			//修改当前对象状态为加载中
-			navItem.loadingType = 'loading';
-
-			
+		data() {
+			return {
+				user_info: {},
+				// 头部图高度
+				maxheight: '',
+				tabCurrentIndex: 0,
+				sr: '',
+				zc: '',
+				navList: [{
+						state: 2,
+						text: '收入',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页面
+						limit: 20 //每次信息条数
+					},
+					{
+						state: 1,
+						text: '支出',
+						loadingType: 'more',
+						orderList: [],
+						page: 1, //当前页面
+						limit: 20 //每次信息条数
+					}
+				],
+				money: ''
+			};
 		},
-		//swiper 切换
-		changeTab(e) {
-			this.tabCurrentIndex = e.target.current;
-			this.loadData('tabChange');
+		onLoad(options) {},
+		onShow() {
+			this.getUserInfo();
+			this.loadData();
+			//获取用户余额
+			// userBalance({}).then(({ data }) => {
+			// 	this.money = data.commissionCount;
+			// });
 		},
-		//顶部tab点击
-		tabClick(index) {
-			this.tabCurrentIndex = index;
-		},
-		toBack() {
-			uni.navigateBack();
+		methods: {
+			goTx() {
+				uni.navigateTo({
+					url: '/pages/my/tx'
+				})
+			},
+			async getUserInfo() {
+				let res = await this.$myHttp.post({
+					url: this.$myHttp.urlMap.userInfo,
+					needLogin: true
+				})
+				if (res.code == 1) {
+					this.user_info = res.data
+				}
+			},
+			async loadData(source) {
+				const that = this;
+				//这里时将订单挂载到tab列表下
+				let index = this.tabCurrentIndex;
+				let navItem = this.navList[index];
+				if (source === 'tabChange') {
+					//tab切换只有第一次需要加载数据
+					navItem.page = 1
+					navItem.orderList = []
+					navItem.loadingType = 'more'
+				}
+				if (navItem.loadingType == 'loading' || navItem.loadingType == 'noMore') {
+					//防止重复加载
+					return;
+				}
+				//修改当前对象状态为加载中
+				navItem.loadingType = 'loading';
+				let url;
+				if (index == 0) {
+					url = 'api/yexam/user/recommend_order'
+				} else {
+					url = 'api/yexam/user/cash_lst'
+				}
+				let res = await this.$myHttp.post({
+					url: url,
+					needLogin: true,
+					data: {
+						page: navItem.page,
+						limit: navItem.limit
+					}
+				})
+				if (res.code == 1) {
+					// this.user_info = res.data
+					// console.log(res)
+					let arr = res.data.data
+					navItem.orderList = navItem.orderList.concat(arr)
+					if (arr.length == navItem.limit) {
+						navItem.loadingType = 'more'
+						navItem.page++
+					} else {
+						navItem.loadingType = 'noMore'
+					}
+				}
+
+
+			},
+			//swiper 切换
+			changeTab(e) {
+				this.tabCurrentIndex = e.target.current;
+				this.loadData('tabChange');
+			},
+			//顶部tab点击
+			tabClick(index) {
+				this.tabCurrentIndex = index;
+			},
 		}
-	}
-};
+	};
 </script>
 
 <style lang="scss">
-	.flex {
-		display: flex;
-	}
-page {
-	background: #f2f5f4;
-	height: 100%;
-}
-.status_bar {
-	height: var(--status-bar-height);
-	width: 100%;
-}
-.content-money {
-	position: relative;
-	height: 480rpx;
-	.content-bg {
-		
-		width: 750rpx;
-		height: 100%;
-		// height: 480rpx;
-	}
-	.body-title {
-		height: 80rpx;
-		text-align: center;
-		font-size: 35rpx;
-		position: relative;
-		.header {
-			position: absolute;
-			left: 0;
-			top: 0;
-			width: 100%;
-			font-size: 36rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #fffeff;
-			height: 80rpx;
-			font-size: 36rpx;
-			font-weight: 700;
-			z-index: 9;
-			display: flex;
-			justify-content: center;
-			align-items: center;
+	.top-info {
+		background-color: #3db4f5;
+		color: #fff;
+		padding: 30rpx;
+
+		.tit {
+			font-size: 26rpx;
+			font-weight: 400;
 		}
-		.goback-box {
-			position: absolute;
-			left: 18rpx;
-			top: 0;
-			height: 80rpx;
-			display: flex;
-			align-items: center;
+
+		.price {
+			font-size: 76rpx;
+			font-weight: bold;
+			color: #FFFFFF;
 		}
 
-		.goback {
-			z-index: 100;
-			width: 34rpx;
-			height: 34rpx;
+		.tx {
+			font-size: 32rpx;
+			font-family: 500;
 		}
 	}
-}
 
-.money-box {
-	position: relative;
-	z-index: 2;
-	padding-top: 70rpx;
-	color: #ffffff;
-	text-align: center;
-	.money {
-		font-size: 72rpx;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #ffffff;
+	.nokemu {
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
 	}
-	.text {
-		font-size: 30rpx;
+
+	.nokemuimg {
+		width: 150px;
+		height: 150px;
+		margin-top: 30px;
 	}
-}
-.moneybtn-box {
-	display: flex;
-	justify-content: space-between;
-	position: relative;
-	z-index: 2;
-	color: #ffffff;
-	padding: 20rpx 50rpx;
-	font-size: 30rpx;
-	font-family: PingFang SC;
-	font-weight: bold;
-	color: #ffffff;
-}
 
-.navbar {
-	margin-top: 25rpx;
-	display: flex;
-	height: 40px;
-	padding: 0 5px;
-	background: #fff;
-	box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
-	position: relative;
-	z-index: 10;
+	.nokemutitle {
+		margin-top: 10px;
+		font-size: 12px;
+		color: gray;
+	}
 
-	.nav-item {
-		flex: 1;
+	.flex {
 		display: flex;
-		justify-content: center;
+		justify-content: space-between;
 		align-items: center;
+	}
+
+	page {
+		background: #f2f5f4;
 		height: 100%;
-		font-size: 15px;
-		// color: $font-color-dark;
+	}
+
+	.status_bar {
+		height: var(--status-bar-height);
+		width: 100%;
+	}
+
+
+	.navbar {
+		display: flex;
+		height: 40px;
+		padding: 0 5px;
+		background: #fff;
+		box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
 		position: relative;
+		z-index: 10;
 
-		&.current {
-			color: #000;
-			font-weight: bold;
+		.nav-item {
+			flex: 1;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			height: 100%;
+			font-size: 15px;
+			// color: $font-color-dark;
+			position: relative;
 
-			&:after {
-				content: '';
-				position: absolute;
-				left: 50%;
-				bottom: 0;
-				transform: translateX(-50%);
-				width: 44px;
-				height: 0;
-				border-bottom: 2px solid #FF4C4C;
+			&.current {
+				color: #000;
+				font-weight: bold;
+
+				&:after {
+					content: '';
+					position: absolute;
+					left: 50%;
+					bottom: 0;
+					transform: translateX(-50%);
+					width: 44px;
+					height: 0;
+					border-bottom: 2px solid #3db4f5;
+				}
 			}
 		}
 	}
-}
 
-//列表
+	//列表
 
-.swiper-box {
-	.order-item {
-		padding: 20rpx 30rpx;
-		line-height: 1.5;
+	.swiper-box {
+		.order-item {
+			padding: 20rpx 30rpx;
+			line-height: 1.5;
 
-		.title-box {
-			.title {
-				// font-size: $font-lg;
-				// color: $font-color-base;
-			}
+			.title-box {
+				.title {
+					// font-size: $font-lg;
+					// color: $font-color-base;
+				}
 
-			.time {
-				// font-size: $font-base;
-				// color: $font-color-light;
+				.time {
+					// font-size: $font-base;
+					// color: $font-color-light;
+				}
 			}
-		}
 
-		.money {
-			// color: rgba(239, 58, 85, 1);
-			// font-size: $font-lg;
+			.money {
+				flex-shrink: 0;
+				padding-left: 20rpx;
+				// color: rgba(239, 58, 85, 1);
+				// font-size: $font-lg;
+			}
 		}
 	}
-}
-.info-box {
-	width: 670rpx;
-	height: 186rpx;
-	background: #ffffff;
-	box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
-	border-radius: 20rpx;
-	margin: -100rpx auto 0;
-	position: relative;
-	z-index: 2;
-	.info-item {
-		width: 50%;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		line-height: 1;
-		.info-font {
-			font-size: 30rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #999999;
+
+	.info-box {
+		width: 670rpx;
+		height: 186rpx;
+		background: #ffffff;
+		box-shadow: 0px 0px 20rpx 0px rgba(50, 50, 52, 0.06);
+		border-radius: 20rpx;
+		margin: -100rpx auto 0;
+		position: relative;
+		z-index: 2;
+
+		.info-item {
+			width: 50%;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			line-height: 1;
+
+			.info-font {
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #999999;
+			}
+
+			.info-num {
+				margin-top: 30rpx;
+				font-size: 30rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #181818;
+			}
 		}
-		.info-num {
-			margin-top: 30rpx;
-			font-size: 30rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #181818;
+
+		.shu {
+			width: 2rpx;
+			height: 74rpx;
+			background: #dcdfe6;
 		}
 	}
-	.shu {
-		width: 2rpx;
-		height: 74rpx;
-		background: #dcdfe6;
-	}
-}
 
-.list-scroll-content {
-	background-color: #ffffff;
-	height: 100%;
-}
-
-.content {
-	height: 100%;
-
-	.empty-content {
+	.list-scroll-content {
 		background-color: #ffffff;
+		height: 100%;
 	}
-}
 
-.btm-wrap {
-	height: 140rpx;
-	width: 750rpx;
-	position: fixed;
-	bottom: 0;
-	left: 0;
-	background-color: #fff;
+	.content {
+		height: 100%;
 
-	.btn {
-		width: 674rpx;
-		height: 88rpx;
-		line-height: 88rpx;
-		margin: auto;
-		background: linear-gradient(-22deg, #9a5e19, #9a5e19);
-		border-radius: 44rpx;
-		text-align: center;
-		font-size: 36rpx;
-		font-family: PingFang SC;
-		font-weight: 500;
-		color: #ffffff;
+		.empty-content {
+			background-color: #ffffff;
+		}
 	}
-}
-</style>
+</style>

+ 18 - 6
pages/questionBank/index.vue

@@ -121,15 +121,27 @@
 		onShow() {
 			this.get_tiku_list();
 			this.get_zhenti_list();
-		},
-		onLoad() {
 			// #ifdef MP-WEIXIN
-			wx.showShareMenu({
-				withShareTicket: true,
-				menus: ["shareAppMessage", "shareTimeline"]
-			})
+			if (this.userinfo.user_id !== undefined) {
+				this.share.path = 'pages/index/index?scene=' + this.userinfo.user_id
+				console.log(this.userinfo,'this.userinfo')
+				wx.showShareMenu({
+					withShareTicket: true,
+					menus: ["shareAppMessage"]
+				})
+			}else {
+				wx.hideShareMenu()
+			}
 			// #endif
 		},
+		onLoad() {
+			// // #ifdef MP-WEIXIN
+			// wx.showShareMenu({
+			// 	withShareTicket: true,
+			// 	menus: ["shareAppMessage", "shareTimeline"]
+			// })
+			// // #endif
+		},
 		computed: {
 			...mapState(['subject', 'subjectVip', 'userinfo']),
 			static_media() {

+ 61 - 32
pages/questionBank/questionBankAnswer/index.vue

@@ -59,7 +59,8 @@
 					class="questionBankAnswer-contentbtnbox"></question-pre-next>
 			</view>
 			<view v-if="current_timu.type == 5" class="jdttishi">温馨提示:简答题不记入错题,默认为正确</view>
-			<question-answer ref="questionAnswer" v-if="current_timu && current_timu.answers && show_beiti || copy_post_status[current_timu.id]"
+			<question-answer ref="questionAnswer"
+				v-if="current_timu && current_timu.answers && show_beiti || copy_post_status[current_timu.id]"
 				:timu_order="timu_order" :show_beiti="show_beiti" :current_timu="current_timu"
 				:copy_post_answer_right="copy_post_answer_right" :timu_list="timu_list"></question-answer>
 			<view style="height: 50px;"></view>
@@ -68,7 +69,9 @@
 			<question-fav class="questionBankAnswer-bottom-flex" :current_timu="current_timu" @collect_opt="collect_opt"
 				:type="type"></question-fav>
 			<question-note class="questionBankAnswer-bottom-flex" :current_timu="current_timu"></question-note>
+			<question-liuyan class="questionBankAnswer-bottom-flex" :current_timu="current_timu"></question-liuyan>
 			<question-jiucuo class="questionBankAnswer-bottom-flex" :current_timu="current_timu"></question-jiucuo>
+			
 			<question-answer-sheet class="questionBankAnswer-bottom-flex"
 				@show_choice_timu_list="show_choice_timu_list = true"></question-answer-sheet>
 		</view>
@@ -163,6 +166,7 @@
 			}
 			// 答题开始时间
 			this.start_time = new Date().getTime();
+			
 		},
 		onReady() {
 			uni.setNavigationBarTitle({
@@ -171,10 +175,10 @@
 		},
 		methods: {
 			async init() {
-				const info = await this.$myUserLogin.getUnitVipInfo(this.type,this.id);
-				if(info.is_vip == 0 || info.owned_vip == 1){
+				const info = await this.$myUserLogin.getUnitVipInfo(this.type, this.id);
+				if (info.is_vip == 0 || info.owned_vip == 1) {
 					this.get_timu_list();
-				}else{
+				} else {
 					//需要vip但还不是vip
 					uni.showToast({
 						title: '暂无权限',
@@ -360,7 +364,7 @@
 					this.timu_list = res.data.card;
 					this.total_num = this.timu_list.length;
 					this.timu_order = res.data.position
-					
+
 					this.isChangeTimu = false
 					if (res.data.curr_question != []) {
 						let timu = this.set_right_flg(res.data.curr_question);
@@ -459,7 +463,7 @@
 			},
 			// 设置正确答案的标记
 			set_right_flg(timu) {
-				if (timu.type <=3) {
+				if (timu.type <= 3) {
 					timu.post_status = 0;
 					if (timu.answers) {
 						for (let i = 0, leng = timu.answers.length; i < leng; i++) {
@@ -551,30 +555,30 @@
 				if (timu.type == 1 || timu.type == 3) {
 					let index = timu.answers.findIndex(item => item.answer_code == timu.my_answer)
 					// this.$nextTick(() => {
-						if (this.copy_user_answer[timu.id]) {
-							for (let i = 0, leng = this.copy_user_answer[timu.id].length; i <
-								leng; i++) {
-								this.copy_user_answer[timu.id].splice(i, 1, {
-									...this.copy_user_answer[timu.id][i],
-									active: false,
-									error_flg: false
-								})
-							}
-							if (timu.right_answer.toString().toLowerCase().replace(/\s/g, '').indexOf(
-									timu.my_answer.toString().toLowerCase().replace(/\s/g, '')) === -1) {
-								this.copy_user_answer[timu.id].splice(index, 1, {
-									...this.copy_user_answer[timu.id][index],
-									active: true,
-									error_flg: true
-								})
-							} else {
-								this.copy_user_answer[timu.id].splice(index, 1, {
-									...this.copy_user_answer[timu.id][index],
-									active: true,
-									error_flg: false
-								})
-							}
+					if (this.copy_user_answer[timu.id]) {
+						for (let i = 0, leng = this.copy_user_answer[timu.id].length; i <
+							leng; i++) {
+							this.copy_user_answer[timu.id].splice(i, 1, {
+								...this.copy_user_answer[timu.id][i],
+								active: false,
+								error_flg: false
+							})
+						}
+						if (timu.right_answer.toString().toLowerCase().replace(/\s/g, '').indexOf(
+								timu.my_answer.toString().toLowerCase().replace(/\s/g, '')) === -1) {
+							this.copy_user_answer[timu.id].splice(index, 1, {
+								...this.copy_user_answer[timu.id][index],
+								active: true,
+								error_flg: true
+							})
+						} else {
+							this.copy_user_answer[timu.id].splice(index, 1, {
+								...this.copy_user_answer[timu.id][index],
+								active: true,
+								error_flg: false
+							})
 						}
+					}
 					// });
 				} else if (timu.type == 2) {
 					// 如果是多选。执行以下处理
@@ -643,7 +647,7 @@
 			setMyAnswer() {
 				if (this.show_beiti || this.copy_post_status[this.current_timu.id]) {
 					// this.$nextTick(() => {
-						this.$refs.questionAnswer.my_answer(this.copy_user_answer)
+					this.$refs.questionAnswer.my_answer(this.copy_user_answer)
 					// })
 				}
 			},
@@ -763,6 +767,31 @@
 	};
 </script>
 
-<style>
+<style lang="scss">
 	@import "~@/static/css/tiku.css";
-</style>
+
+	.go-liuyan {
+		display: flex;
+		padding: 20rpx 0;
+
+		.liuyan-inp {
+			display: block;
+			font-size: 28rpx;
+			height: 50rpx;
+			line-height: 50rpx;
+			background-color: #f7f7f7;
+			flex-grow: 1;
+			border-radius: 8rpx;
+			padding-left: 10rpx;
+		}
+
+		.but {
+			background-color: #3c7bfc;
+			padding: 10rpx 15rpx;
+			border-radius: 10rpx;
+			color: #fff;
+			font-size: 24rpx;
+			margin-left: 20rpx;
+		}
+	}
+</style>

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
plugin/jweixin-module/index.js


BIN
static/icon/fxhb.png


BIN
static/icon/fzlj.png


BIN
static/icon/liuyan.png


BIN
static/img/myicon10.png


BIN
static/img/sharebase.jpg


Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác