Explorar el Código

潜山服务卡

zouling hace 4 semanas
padre
commit
b1be6824b9
Se han modificado 100 ficheros con 4654 adiciones y 0 borrados
  1. 8 0
      .gitignore
  2. 16 0
      qianshancard_wx/.hbuilderx/launch.json
  3. 42 0
      qianshancard_wx/App.vue
  4. 167 0
      qianshancard_wx/components/navbar/navbar.vue
  5. 181 0
      qianshancard_wx/components/tabbar/tabbar.vue
  6. 20 0
      qianshancard_wx/index.html
  7. 36 0
      qianshancard_wx/main.js
  8. 72 0
      qianshancard_wx/manifest.json
  9. 13 0
      qianshancard_wx/mine/pages/card/card.vue
  10. 95 0
      qianshancard_wx/pages.json
  11. 179 0
      qianshancard_wx/pages/code/code.vue
  12. 48 0
      qianshancard_wx/pages/index/card.vue
  13. 200 0
      qianshancard_wx/pages/index/index.vue
  14. 66 0
      qianshancard_wx/pages/index/indexs.vue
  15. 334 0
      qianshancard_wx/pages/login/login.vue
  16. 136 0
      qianshancard_wx/pages/login/updatpaw.vue
  17. 149 0
      qianshancard_wx/pages/mine/mine.vue
  18. BIN
      qianshancard_wx/static/image/bg.png
  19. BIN
      qianshancard_wx/static/image/cardbg (10).png
  20. BIN
      qianshancard_wx/static/image/cardbg (2).png
  21. BIN
      qianshancard_wx/static/image/cardbg (3).png
  22. BIN
      qianshancard_wx/static/image/cardbg (4).png
  23. BIN
      qianshancard_wx/static/image/cardbg (5).png
  24. BIN
      qianshancard_wx/static/image/cardbg (6).png
  25. BIN
      qianshancard_wx/static/image/cardbg (7).png
  26. BIN
      qianshancard_wx/static/image/cardbg (8).png
  27. BIN
      qianshancard_wx/static/image/cardbg (9).png
  28. BIN
      qianshancard_wx/static/image/cardbg.png
  29. BIN
      qianshancard_wx/static/image/head.png
  30. BIN
      qianshancard_wx/static/image/icon_zt_back.png
  31. BIN
      qianshancard_wx/static/image/lbg.png
  32. BIN
      qianshancard_wx/static/image/lista.png
  33. BIN
      qianshancard_wx/static/image/loginm.png
  34. BIN
      qianshancard_wx/static/image/loginz.png
  35. BIN
      qianshancard_wx/static/image/mbg.png
  36. BIN
      qianshancard_wx/static/image/minebg.png
  37. BIN
      qianshancard_wx/static/image/mlista.png
  38. BIN
      qianshancard_wx/static/image/mlistb.png
  39. BIN
      qianshancard_wx/static/image/mlistc.png
  40. BIN
      qianshancard_wx/static/image/mlistd.png
  41. BIN
      qianshancard_wx/static/image/mliste.png
  42. BIN
      qianshancard_wx/static/image/mlistf.png
  43. BIN
      qianshancard_wx/static/image/mlistg.png
  44. BIN
      qianshancard_wx/static/image/mtit.png
  45. BIN
      qianshancard_wx/static/image/rimg.png
  46. BIN
      qianshancard_wx/static/image/swipera.png
  47. BIN
      qianshancard_wx/static/image/topa.png
  48. BIN
      qianshancard_wx/static/image/topb.png
  49. BIN
      qianshancard_wx/static/image/topc.png
  50. BIN
      qianshancard_wx/static/table/tab1.png
  51. BIN
      qianshancard_wx/static/table/tab1_pre.png
  52. BIN
      qianshancard_wx/static/table/tab2.png
  53. BIN
      qianshancard_wx/static/table/tab2_pre.png
  54. BIN
      qianshancard_wx/static/table/tab_code.png
  55. 78 0
      qianshancard_wx/uni.scss
  56. 198 0
      qianshancard_wx/util/api.js
  57. 24 0
      qianshancard_wx/util/url.js
  58. 16 0
      qianshancardshang_wx/.hbuilderx/launch.json
  59. 42 0
      qianshancardshang_wx/App.vue
  60. 167 0
      qianshancardshang_wx/components/navbar/navbar.vue
  61. 181 0
      qianshancardshang_wx/components/tabbar/tabbar.vue
  62. 20 0
      qianshancardshang_wx/index.html
  63. 36 0
      qianshancardshang_wx/main.js
  64. 72 0
      qianshancardshang_wx/manifest.json
  65. 82 0
      qianshancardshang_wx/pages.json
  66. 176 0
      qianshancardshang_wx/pages/code/code.vue
  67. 106 0
      qianshancardshang_wx/pages/index/guidedetail.vue
  68. 142 0
      qianshancardshang_wx/pages/index/index.vue
  69. 66 0
      qianshancardshang_wx/pages/index/indexs.vue
  70. 479 0
      qianshancardshang_wx/pages/index/record.vue
  71. 174 0
      qianshancardshang_wx/pages/index/scan.vue
  72. 52 0
      qianshancardshang_wx/pages/index/success.vue
  73. 192 0
      qianshancardshang_wx/pages/index/wufa.vue
  74. 334 0
      qianshancardshang_wx/pages/login/login.vue
  75. 136 0
      qianshancardshang_wx/pages/login/updatpaw.vue
  76. 119 0
      qianshancardshang_wx/pages/mine/mine.vue
  77. BIN
      qianshancardshang_wx/static/image/bg.png
  78. BIN
      qianshancardshang_wx/static/image/del.png
  79. BIN
      qianshancardshang_wx/static/image/head.png
  80. BIN
      qianshancardshang_wx/static/image/hicon.png
  81. BIN
      qianshancardshang_wx/static/image/icon_zt_back.png
  82. BIN
      qianshancardshang_wx/static/image/lbg.png
  83. BIN
      qianshancardshang_wx/static/image/lista.png
  84. BIN
      qianshancardshang_wx/static/image/loginm.png
  85. BIN
      qianshancardshang_wx/static/image/loginz.png
  86. BIN
      qianshancardshang_wx/static/image/mbg.png
  87. BIN
      qianshancardshang_wx/static/image/minebg.png
  88. BIN
      qianshancardshang_wx/static/image/mlista.png
  89. BIN
      qianshancardshang_wx/static/image/mlistb.png
  90. BIN
      qianshancardshang_wx/static/image/mlistc.png
  91. BIN
      qianshancardshang_wx/static/image/mlistd.png
  92. BIN
      qianshancardshang_wx/static/image/mliste.png
  93. BIN
      qianshancardshang_wx/static/image/mlistf.png
  94. BIN
      qianshancardshang_wx/static/image/mlistg.png
  95. BIN
      qianshancardshang_wx/static/image/mtit.png
  96. BIN
      qianshancardshang_wx/static/image/pic_sjhp_bg_hxcz.png
  97. BIN
      qianshancardshang_wx/static/image/rimg.png
  98. BIN
      qianshancardshang_wx/static/image/search.png
  99. BIN
      qianshancardshang_wx/static/image/submit.png
  100. BIN
      qianshancardshang_wx/static/image/swipera.png

+ 8 - 0
.gitignore

@@ -0,0 +1,8 @@
+unpackage/
+/api/api.js
+/manifest.json
+/mp-weixin
+/unpackage
+
+.DS_Store
+node_modules/

+ 16 - 0
qianshancard_wx/.hbuilderx/launch.json

@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"default" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"mp-weixin" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 42 - 0
qianshancard_wx/App.vue

@@ -0,0 +1,42 @@
+<script>
+	export default {
+		onLaunch: function() {
+			console.log('App Launch')
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		}
+	}
+</script>
+
+<style lang="scss">
+	/*每个页面公共css */
+	.swiper .uni-swiper-wrapper .uni-swiper-dot{
+		width:6rpx;height:6rpx;border-radius: 50%;
+		}
+	.swiper .uni-swiper-wrapper .uni-swiper-dot-active{
+		width: 18rpx;height: 6rpx;border-radius: 4rpx;
+	}
+	// wx
+	.swiper .wx-swiper-wrapper .wx-swiper-dot{
+		width:6rpx;height:6rpx;border-radius: 50%;
+		}
+	.swiper .wx-swiper-wrapper .wx-swiper-dot-active{
+		width: 18rpx;height: 6rpx;border-radius: 4rpx;
+	}
+	.flex{display: flex;}
+	.flexc{display: flex;align-items: center;}
+	.flexdc{flex-direction: column;}
+	.flex1{flex: 1;}
+	.flex0{flex: 0 0 auto;}
+	.f12{font-size: 24rpx;}
+	.f13{font-size: 26rpx;}
+	.c0{color: #000000;}
+	.w33{width: 33%;}
+	.mlr16{margin-left: 32rpx;margin-right: 32rpx;}
+	.mbt5{margin-top: 10rpx;}
+	.lh18{line-height: 36rpx;}
+</style>

+ 167 - 0
qianshancard_wx/components/navbar/navbar.vue

@@ -0,0 +1,167 @@
+<template>
+	<view class="ua__navbar">
+		<view class="ua__navbar-wrap" :class="{'custom': custom, 'fixed': fixed || transparent}"
+			:style="{'height': customBarH + 'px', 'padding-top': (custom ? statusBarH : 0) + 'px', 'background': bgcolor, 'color': color, 'z-index': zIndex}">
+			<!-- //左侧 (返回) -->
+			<view class="action navbar-action__left" v-if="back && back!='false'" @click="onBack">
+				<template v-if="$slots.back">
+					<slot name="back" />
+				</template>
+				<template v-else>
+					<view class="navbar-back"><image src="@/static/image/icon_zt_back.png"></image></view>
+					
+				</template>
+				<slot name="backText" />
+			</view>
+			<slot name="left" />
+
+			<!-- //标题 -->
+			<view v-if="!search" class="navbar-title" :class="{'center': center}">
+				<template v-if="$slots.title">
+					<slot name="title" />
+				</template>
+				<template v-else><text :style="{'color': color}">{{title}}</text></template>
+			</view>
+
+			<!-- //搜索框 -->
+			<view v-if="search" class="action navbar-action__search">
+				<slot name="search" />
+			</view>
+
+			<!-- //右侧 -->
+			<view class="action navbar-action__right">
+				<slot name="right" />
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			// 是否采用自定义导航模式
+			custom: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 是否返回
+			back: {
+				type: [Boolean, String],
+				default: true
+			},
+			// 标题
+			title: {
+				type: String,
+				default: ''
+			},
+			// 标题颜色
+			color: {
+				type: String,
+				default: '#353535'
+			},
+			// 背景色
+			bgcolor: {
+				type: String,
+				default: '#fff'
+			},
+			// 标题是否居中
+			center: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 搜索框
+			search: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 是否固定导航
+			fixed: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 是否背景透明
+			transparent: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 设置层叠
+			zIndex: {
+				type: [Number, String],
+				default: '2022'
+			},
+		},
+		data() {
+			return {
+				// 全局设置状态栏和导航栏高度
+				statusBarH: 0,
+				customBarH: 0,
+			}
+		},
+		mounted() {
+			// console.log(this.bgcolor)
+			var that = this;
+			// console.log(that.$http._GET.customBarH)
+			// console.log(that.$http._GET.statusBarH)
+			if(that.$http._GET.customBarH!=0){
+				that.statusBarH = that.$http._GET.statusBarH
+				// 状态栏
+				that.customBarH = that.$http._GET.customBarH
+			}else{
+			uni.getSystemInfo({
+				success(e) {
+					// console.log(e)
+					// 获取手机状态栏高度
+					let statusBar = e.statusBarHeight
+					let customBar
+
+					// #ifndef MP
+					customBar = statusBar + (e.platform == 'android' ? 50 : 45)
+					// #endif
+
+					// #ifdef MP-WEIXIN
+					// 获取胶囊按钮的布局位置信息
+					let menu = wx.getMenuButtonBoundingClientRect()
+					// 导航栏高度 = 胶囊下距离 + 胶囊上距离 - 状态栏高度
+					customBar = menu.bottom + menu.top - statusBar
+					// #endif
+
+					// #ifdef MP-ALIPAY
+					customBar = statusBar + e.titleBarHeight
+					// #endif
+					// console.log(statusBar,customBar)
+					// 导航栏
+					that.statusBarH = statusBar
+					// 状态栏
+					that.customBarH = that.custom ? customBar : customBar - statusBar
+					that.$http._GET.customBarH=that.customBarH;
+					that.$http._GET.statusBarH=that.statusBarH;
+					that.$emit('getTop',that.customBarH)
+				},
+
+			})
+			}
+		},
+		methods: {
+			onBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.ua__navbar-wrap{box-sizing: border-box;display: flex;align-items: center;}
+	.ua__navbar-wrap.fixed{position: fixed;left: 0;top: 0;right: 0;}
+	.navbar-title.center {
+		text-align: center;
+		flex: 1;
+	}
+	.navbar-back{flex: 0 0 auto;display: flex;align-items: center;justify-content: center;
+		// padding: 0 20rpx;
+		width: 88rpx;height: 88rpx;
+		image{width: 18rpx;height: 34rpx;}
+	
+	}
+</style>

+ 181 - 0
qianshancard_wx/components/tabbar/tabbar.vue

@@ -0,0 +1,181 @@
+<template>
+    <view>
+<!-- 		<view>
+			
+		</view> -->
+		<view style="height: 150rpx;"></view>
+        <view class="tabbar-container" :class="isIpx?'IpxBot':''">
+			<view class="tabbar-containers">
+				<view class="tabbar-item" v-for="(item,index) in tabList" :class="[item.centerItem ? 'center-item' : '']"
+				    @click="changeItem(item)" :key="index">
+				    <view class="item-top">
+				        <image :src="tabId==item.id?item.selectIcon:item.icon" mode=""></image>
+				    </view>
+				    <view class="item-bottom" :class="[tabId==item.id ? 'item-active' : '']">
+				        <text>{{item.text}}</text>
+				    </view>
+				</view>
+			</view>
+           
+        </view>
+    </view>
+</template>
+
+<script>
+    export default {
+        props: {
+            currentPage: {
+                type: Number,
+                default: 0
+            }
+        },
+        data() {
+            return {
+                //适配IPhoneX
+                isIpx: false, 
+                //底部Tab
+                tabId: 0,
+                tabList: [{
+                    id: 0,
+                    path: "/pages/index/index",
+                    icon: "/static/table/tab1.png",
+                    selectIcon: "/static/table/tab1_pre.png",
+                    text: "首页",
+                    centerItem: false
+                }, {
+                    id: 1,
+                    path: "/pages/code/code",
+                    icon: "/static/table/tab_code.png",
+                    selectIcon: "/static/table/tab_code.png",
+                    text: "",
+                    centerItem: true
+                }, {
+                    id: 2,
+                    path: "/pages/mine/mine",
+                    icon: "/static/table/tab2.png",
+                    selectIcon: "/static/table/tab2_pre.png",
+                    text: "我的",
+                    centerItem: false
+                }],
+            };
+        },
+        mounted() {
+            this.tabId = this.currentPage;
+            //隐藏原生tab
+            uni.hideTabBar();
+        },
+        created() {
+            // 判断为 iPhone X 给予底部距离
+            let that = this
+            uni.getSystemInfo({
+                success: function(res) {
+                    if (res.model.indexOf('iPhone X') !== -1) {
+                        that.isIpx = true;
+                    }
+                }
+            })
+        },
+        methods: {
+            // tab 切换
+            changeItem(item) {
+                if (item.id == 1) {
+					uni.navigateTo({
+						url:item.path
+					})
+                    console.log('点击中间' + '快速');
+                } else {
+                    uni.switchTab({
+                        url: item.path,
+                    });
+                }
+            },
+
+        }
+    }
+</script>
+<style scoped>
+    view {
+        padding: 0;
+        margin: 0;
+        box-sizing: border-box;
+    }
+
+    .tabbar-container {
+        position: fixed;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+		background-color: #FFFFFF;
+    }
+	.tabbar-containers {
+	   
+		height: 134rpx;
+		box-sizing: border-box;
+	    /* height: 100rpx; */
+	    /* box-shadow: 0 0 5px #999; */
+		box-shadow: 0px -6px 11px 0px rgba(215, 215, 215, 0.4);
+	    display: flex;
+	    align-items: center;
+	    /* padding: 24rpx 0; */
+	    color: #999999;
+	 
+	}
+
+    .tabbar-container .tabbar-item {
+        width: 33.33%;
+        /* height: 100rpx; */
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+        text-align: center;
+    }
+
+    .tabbar-container .item-active {
+        color: #343434;
+    }
+
+    .tabbar-container .center-item {
+        display: block;
+        position: relative;
+    }
+
+    .tabbar-container .tabbar-item .item-top {
+        width: 46rpx;
+        height: 48rpx;
+		margin-bottom: 10rpx;
+        /* padding: 5rpx; */
+    }
+
+    .tabbar-container .center-item .item-top {
+        flex-shrink: 0;
+        width: 138rpx;
+        height: 136rpx;
+       position: absolute;
+        bottom:calc(50% - 40rpx);
+        left: calc(50% - 69rpx);
+        border-radius: 50%;
+        /* background-color: #FFFFFF; */
+		/* box-shadow: 0px -6px 11px 0px rgba(215, 215, 215, 0.4); */
+    }
+
+    .tabbar-container .tabbar-item .item-top image {
+        width: 100%;
+        height: 100%;
+    }
+
+    .tabbar-container .tabbar-item .item-bottom {
+        font-size: 26rpx;
+        width: 100%;
+    }
+
+    .tabbar-container .center-item .item-bottom {
+        position: absolute;
+        bottom: 2rpx;
+    }
+
+    /* 适配iPhone X */
+    .IpxBot {
+        padding-bottom: 30rpx !important;
+    }
+</style>

+ 20 - 0
qianshancard_wx/index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+</html>

+ 36 - 0
qianshancard_wx/main.js

@@ -0,0 +1,36 @@
+
+import Vue from 'vue'
+import App from './App'
+
+
+import https from './util/api.js'
+
+Vue.config.productionTip = false
+
+/* 使用uView组件库 */
+// import uView from "uview-ui";
+// Vue.use(uView);
+
+App.mpType = 'app'
+const app = new Vue({
+    ...App
+})
+app.$mount()
+
+import NavBar from "@/components/navbar/navbar.vue"
+Vue.component('navbar',NavBar)
+Vue.prototype.$http=https;
+// // #ifndef VUE3
+
+
+// // #endif
+
+// // #ifdef VUE3
+// import { createSSRApp } from 'vue'
+// export function createApp() {
+//   const app = createSSRApp(App)
+//   return {
+//     app
+//   }
+// }
+// // #endif

+ 72 - 0
qianshancard_wx/manifest.json

@@ -0,0 +1,72 @@
+{
+    "name" : "qianshancard_wx",
+    "appid" : "__UNI__DB565AD",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {},
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {}
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "wxfc6b1fc520c96f95",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "2"
+}

+ 13 - 0
qianshancard_wx/mine/pages/card/card.vue

@@ -0,0 +1,13 @@
+<template>
+    <view class="card">
+	 </view>
+</template>
+
+<script>
+    export default {
+        
+    };
+</script>
+<style scoped lang="scss">
+
+</style>

+ 95 - 0
qianshancard_wx/pages.json

@@ -0,0 +1,95 @@
+{
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "首页",
+				"navigationBarTextStyle": "white",
+				"navigationStyle":"custom"
+			}
+		},
+		{
+			"path": "pages/index/card",
+			"style": {
+				"navigationBarTitleText": "我的卡片临时",
+				"navigationBarTextStyle": "white",
+				"navigationStyle":"custom"
+			}
+		},
+		{
+			"path": "pages/mine/mine",
+			"style": {
+				"navigationBarTitleText": "我的",
+				"navigationBarTextStyle": "white",
+				"navigationStyle":"custom"
+				
+			}
+		},
+		
+		{
+			"path": "pages/login/updatpaw",
+			"style": {
+				"navigationStyle":"custom"
+			}
+		},
+		
+		
+		{
+			"path": "pages/login/login",
+			"style": {
+				"navigationBarTitleText": "登录",
+				"navigationBarTextStyle": "black",
+				"navigationStyle":"custom"
+			}
+		},
+		{
+			"path": "pages/code/code",
+			"style": {
+				"navigationBarTitleText": "二维码出示",
+				"navigationStyle":"custom"
+				// "navigationBarBackgroundColor": "#009FE8",
+				// "navigationBarTextStyle": "white"
+				
+			}
+		}	
+	],
+	"subPackages": [
+		{
+			"root": "mine",
+			"pages": [
+				{
+						"path": "pages/card/card",
+						"style": {
+							"navigationBarTitleText": "我的卡片",
+							"navigationBarTextStyle": "white",
+							"navigationStyle":"custom"
+						}
+					}
+			]
+		}
+	],
+	"tabBar":{
+		"color": "#AAAAAA",
+		    "selectedColor": "#343434",
+		    "borderStyle": "black",
+		    "backgroundColor": "#ffffff",
+		    "list": [{
+		        "pagePath": "pages/index/index"
+		    },
+			{
+		        "pagePath": "pages/mine/mine"
+		    }]
+	},
+	"preloadRule":{
+		"pages/index/index":{
+			"network": "all",
+			"packages": ["mine"]
+		}
+	},
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "uni-app",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8"
+	}
+}

+ 179 - 0
qianshancard_wx/pages/code/code.vue

@@ -0,0 +1,179 @@
+<template>
+	<view class="sub" :style="'padding-top:'+padtop+'px'">
+		<navbar :back="false" title="扫码核销" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop" back="true"/>
+		
+<!-- 		<div class="jhyyes">
+			<img src="/static/images/sm.png" alt="" class="img">
+		</div>
+		<view class="naver" @click="smit">
+			扫码核销
+		</view> -->
+	</view>
+</template>
+
+<script>
+	import url from "@/util/url";
+	export default {
+		data() {
+			return {
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'linear-gradient(90deg, #A00517, #E93030)',
+			};
+		},
+		onLoad() {
+			this.scanAction()
+		},
+		onShow() {
+			
+			// this.uehg = 1
+			// this.scanAction()
+			// console.log(34)
+			
+		},
+		onHide() {
+			
+			// this.uehg = 2
+			// console.log(344)
+			
+		},
+		methods:{
+			getTop(e){
+				this.padtop=e
+			},
+			smit(){
+				this.scanAction()
+			},
+			
+			   //扫码功能
+			scanAction() {
+				var that=this;
+				uni.scanCode({
+					onlyFromCamera: true,
+					scanType: ['qrCode', 'barCode'],
+					success: function (red) {
+						// 最好?id=1&name=测试
+						// console.log(res,9)
+						console.log(red,999)
+						
+						return
+						let result=red.result;
+						if (typeof result == 'string') {
+							    try {
+							        var obj=JSON.parse(decodeURIComponent(result));
+							        if(typeof obj == 'object' && obj ){
+										console.log(7)
+							        }else{
+										console.log(9)
+										uni.showToast({
+											title:'扫码查询失败,请检查二维码是否正确',
+											icon:"none"
+										})
+										uni.navigateBack({
+											delta:1
+										})
+							            return ;
+							        }
+							
+							    } catch(e) {
+							       uni.navigateBack({
+							       	delta:1
+							       })
+								   uni.showToast({
+								   	title:'扫码查询失败,请检查二维码是否正确',
+								   	icon:"none"
+								   })
+							       return
+							    }
+							}
+						var res=JSON.parse(decodeURIComponent(red.result))
+						// console.log(res)
+						// return
+						if(!res.menuId|| !res.phone||!res.idCard){
+							uni.navigateBack({
+								delta:1
+							})
+							uni.showToast({
+								title:'扫码查询失败,请检查二维码是否正确',
+								icon:"none"
+							})
+							return
+						}
+						// var now=new Date().getTime()
+						// var oldnow=res.time;
+						// if(oldnow > now) {
+						//     console.log("二维码在有效期内");
+						// } else {
+						// 	uni.showToast({
+						// 		title:'二维码已过期,请重新生成',
+						// 		icon:"none"
+						// 	})
+						// 	return
+						// }
+						var businessId=uni.getStorageSync('businessId')
+						var params={
+							"businessId": businessId,
+							"policyId": res.menuId,
+							"creditPhone": res.phone,
+							"idCard": res.idCard,
+						}
+						that.$http.post('system/record',params).then(red=>{
+							if(red.code == 200 ) {
+								uni.redirectTo({
+									url:"/pages/index/success"
+								})
+							}else{
+								uni.navigateBack({
+									delta:1
+								})
+								uni.showToast({
+									title: red.msg,
+									duration: 1000,
+									icon: 'none'
+								});
+								
+							} 
+						})
+						// console.log(res)
+						// console.log('条码类型:' + res.scanType);
+						// console.log('条码内容:' + res.result);
+					},
+					fail:function(e){
+						console.log(e)
+						if (e && e.errMsg && e.errMsg.indexOf('scanCode:fail cancel') != -1) {
+						    return;
+						}
+						uni.showToast({
+							title:'扫码失败',
+							icon:"none"
+						})
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.sub{box-sizing: border-box;width: 100%;min-height: 100vh;}
+	.jhyyes{
+		display: flex;
+		justify-content: center;
+		margin-top: 200upx;
+	}
+	.img{
+		width: 258upx;
+		height: 251upx;
+		// margin:  auto;
+		// margin-left: 50%;
+		// transform: translateX(-50%);
+	}
+	
+	
+	.naver{
+		width: 416rpx;height:84rpx;width: 208px;
+		height: 42px;
+		background: linear-gradient(90deg, #A00517, #E93030);
+		border-radius: 21px;display: flex;align-items: center;justify-content: center;font-size: 30rpx;color: #ffffff;margin:150rpx auto 0;
+		}
+
+</style>

+ 48 - 0
qianshancard_wx/pages/index/card.vue

@@ -0,0 +1,48 @@
+<template>
+    <view class="card">
+		<!-- 头部 -->
+		<navbar :back="true" title="我的卡片" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop"/>
+		<image :src="bgimg" class="cardbg"></image>
+		
+	 </view>
+</template>
+
+<script>
+    export default {
+        data() {
+            return {
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'transparent',
+				bgimg:require('@/static/image/cardbg.png'),
+				headimg:require('@/static/image/head.png'),
+				// mtitimg:require('@/static/image/mtit.png'),
+				rimg:require("@/static/image/rimg.png"),
+				// lista:require("@/static/image/mlista.png"),
+				// listb:require("@/static/image/mlistb.png"),
+				// listc:require("@/static/image/mlistc.png"),
+				// listd:require("@/static/image/mlistd.png"),
+				// liste:require("@/static/image/mliste.png"),
+				// listf:require("@/static/image/mlistf.png"),
+				// listg:require("@/static/image/mlistg.png"),
+            };
+        },
+        methods: {
+			getTop(e){
+				this.padtop=e;
+			},
+		},
+		onPageScroll(res) {
+			var scrolltop=res.scrollTop;
+			if(scrolltop>0){
+				this.backgroundColor='linear-gradient(60deg, #1b1b1d, #322c26,#1b1b1d)'
+			}else{
+				this.backgroundColor='transparent'
+			}
+		 },
+    };
+</script>
+<style scoped lang="scss">
+	.card{min-height: 100vh;background: #ffffff;overflow: auto;
+		.cardbg{width: 100%;height:660rpx;}
+	}
+</style>

+ 200 - 0
qianshancard_wx/pages/index/index.vue

@@ -0,0 +1,200 @@
+<template>
+    <view class="home" >
+		<!-- 头部 -->
+		<navbar :back="false" title="首页" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop"/>
+		<image :src="bgimg" class="homebg"></image>
+		<view class="hometop">
+			<swiper class="swiper" circular :indicator-active-color="activecolor" :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
+				:duration="duration">
+				<swiper-item>
+					<image :src="swpimga" class="swiperimg"></image>
+				</swiper-item>
+				<swiper-item>
+					<image :src="swpimga" class="swiperimg"></image>
+				</swiper-item>
+				<swiper-item>
+					<image :src="swpimga" class="swiperimg"></image>
+				</swiper-item>
+			</swiper>
+		</view>
+		<view class="htlists">
+			<view class="flexc flexdc w33">
+				<image :src="topimga" class="htlisti"></image>
+				<view class="f13 c0 ">招商政策</view>
+			</view>
+			<view class="flexc flexdc w33">
+				<image :src="topimgb" class="htlisti"></image>
+				<view class="f13 c0 ">使用指南</view>
+			</view>
+			<view class="flexc flexdc w33">
+				<image :src="topimgc" class="htlisti"></image>
+				<view class="f13 c0 ">权益内容</view>
+			</view>
+		</view>
+		<view class="hgbox">
+			<view class="flex1 ">
+				<view class="hgboxtit">权益管理</view>
+				<view class="hgboxtxt">可对拥有权益进行人员分配</view>
+			</view>
+			<view class="flex0 hgboxrtit">去管理</view>
+		</view>
+		<view class="hmlists">
+			<view class="hmtop">
+				<view class="hmtoptit">我的权益</view>
+				<view class="hmtoptxt">
+					权益具体说明
+					<image :src="rimg"></image>
+				</view>
+			</view>
+			<view class="hmlist">
+				<view class="hmlistt">
+					<view class="hmlista">
+						<image :src="mbgimg" class="hmlistai"></image>
+						<view class="hmlistat">投资服务</view>
+					</view>
+					<view class="hmlistr">可享用</view>
+				</view>
+				<view class="hmlistb">
+					<view class="flex1 mbt5">
+						<view class="f13 c0 lh18">在我市投资过程中问题可直接向与乡镇反馈</view>
+						<view class="f13 c0 lh18">市政府政务大厅相关业务实行代办服务</view>
+						<view class="hmline"></view>
+					</view>
+					<image :src="lista" class="hmlistbr"></image>
+				</view>
+			</view>
+			<view class="hmlist">
+				<view class="hmlistt">
+					<view class="hmlista">
+						<image :src="mbgimg" class="hmlistai"></image>
+						<view class="hmlistat">子女入学</view>
+					</view>
+					<view class="hmlistr">可享用</view>
+				</view>
+				<view class="hmlistb">
+					<view class="flex1 mbt5">
+						<view class="f13 c0 lh18">优先就近安排子女义务教育阶段学校就读</view>
+						<view class="f13 c0 lh18">优先安排子女转入城区省示范高中就读</view>
+						<view class="hmline"></view> 
+					</view>
+					<image :src="lista" class="hmlistbr"></image>
+				</view>
+			</view>
+			<view class="hmlist">
+				<view class="hmlistt">
+					<view class="hmlista">
+						<image :src="mbgimg" class="hmlistai"></image>
+						<view class="hmlistat">医疗保障</view>
+					</view>
+					<view class="hmlistr">可享用</view>
+				</view>
+				<view class="hmlistb">
+					<view class="flex1 mbt5">
+						<view class="f13 c0 lh18">每年享受医院的免费健康体检</view>
+						<view class="f13 c0 lh18">提供免费核酸检测并开通绿色优先通道</view>
+						<view class="hmline"></view>
+					</view>
+					<image :src="lista" class="hmlistbr"></image>
+				</view>
+			</view>
+		</view>
+    <!-- 底部 导航栏  currentPage 当前页面ID -->
+        <tab-bar :currentPage="0"></tab-bar>
+    </view>
+</template>
+
+<script>
+	import url from "@/util/url";
+	let {host} = url
+    //导入组件
+    import tabBar from '@/components/tabbar/tabbar.vue'
+    export default {
+        data() {
+            return {
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'transparent',
+				bgimg:require('@/static/image/bg.png'),
+				swpimga:require("@/static/image/swipera.png"),
+				indicatorDots: true,
+				autoplay: false,
+				activecolor:'#ffffff',
+				interval: 2000,
+				duration: 500,
+				topimga:require("@/static/image/topa.png"),
+				topimgb:require("@/static/image/topb.png"),
+				topimgc:require("@/static/image/topc.png"),
+				rimg:require("@/static/image/rimg.png"),
+				mbgimg:require("@/static/image/mbg.png"),
+				lista:require("@/static/image/lista.png"),
+            };
+        },
+        components:{
+            tabBar
+        },
+        methods: {
+			getTop(e){
+				this.padtop=e;
+			},
+			// 监听滚动
+			
+		},
+		onPageScroll(res) {
+			var scrolltop=res.scrollTop;
+			if(scrolltop>0){
+				this.backgroundColor='linear-gradient(60deg, #6A6BF1, #CB4BFA)'
+			}else{
+				this.backgroundColor='transparent'
+			}
+		 },
+    };
+</script>
+<style scoped lang="scss">
+
+	.home{min-height: 100vh;background: #FFFFFF;overflow: auto;
+		.homebg{width: 100%;height: 376rpx;}
+		.hometop{margin-top:-208rpx;}
+		.swiper{height: 260rpx;margin: 0 34rpx 28rpx;
+			.swiperimg{width: 100%;height: 100%;}
+		}
+		.htlists{margin-bottom: 20rpx;display: flex;padding: 0 10rpx 32rpx;
+			.htlisti{width: 146rpx;height: 146rpx;margin-bottom: 12rpx;}
+		}
+		.hgbox{margin:0rpx 32rpx 16rpx;background: #1B1B1D;border-radius: 14rpx;padding: 20rpx 20rpx 20rpx 16rpx;display: flex;align-items: center;justify-content: space-between;min-height: 128rpx;box-sizing: border-box;
+			.hgboxtit{font-size: 34rpx;font-weight: bold;color: #C1A76B;margin-bottom: 8rpx;}
+			.hgboxtxt{font-size: 24rpx;color: #B7AC93;}
+			.hgboxrtit{width: 136rpx;height: 48rpx;background: linear-gradient(-89deg, #C6A36D, #E8D18A);border-radius: 24rpx;font-size: 26rpx;color: #FFFFFF;text-align: center;line-height: 48rpx;}
+		
+		}
+	}
+		
+		
+		.hmlists{padding:0 32rpx;
+			.hmtop{padding: 28rpx 0;display: flex;align-items: center;justify-content: space-between;
+				.hmtoptit{font-size: 34rpx;font-weight: bold;color: #3F3F3F;position: relative;line-height: 48rpx;
+				&:after{width:38rpx;height: 6rpx;background: #B461F8;border-radius:2rpx;position: absolute;content: "";left: 50%;margin-left: -19rpx;bottom: -12rpx;border-radius: 2rpx;}
+				}
+				.hmtoptxt{
+					font-size: 26rpx;color: #666666;
+					display: flex;align-items: center;
+					image{width: 16rpx;height: 28rpx;margin-left: 18rpx;}
+				}
+			}
+			.hmlist{width: 100%;min-height: 188rpx;background: #F4F4F4;
+border-radius: 14rpx;padding: 0 22rpx 14rpx 14rpx;box-sizing: border-box;margin-bottom: 20rpx;
+				.hmlistt{
+					display: flex;justify-content: space-between;margin-bottom: 8rpx;
+					.hmlista{position: relative;width: 112rpx;height: 48rpx;
+						.hmlistai{width: 112rpx;height: 48rpx;}
+						.hmlistat{font-size: 22rpx;font-weight: bold;color: #FFFFFF;line-height: 40rpx;text-align: center;position: absolute;left: 0;top: 0;right: 0;bottom: 0;}
+						
+					}
+					.hmlistr{min-width: 70rpx;height: 26rpx;background: rgba(124, 198, 35, 0.3);border-radius: 12rpx;text-align: center;line-height: 26rpx;font-size: 16rpx;color: #21C050;padding: 0 10rpx;margin: 10rpx 10rpx 0 0 ;}
+				}
+				.hmlistb{
+					display: flex;justify-content: space-between;
+					.hmlistbr{margin-left: 16rpx;width: 140rpx;height: 102rpx;flex: 0 0 auto;}
+					.hmline{width: 22rpx;height: 2rpx;background: #C5C5C5;margin-top: 16rpx;}
+				}	
+}
+		}
+</style>

+ 66 - 0
qianshancard_wx/pages/index/indexs.vue

@@ -0,0 +1,66 @@
+<template>
+    <view class="home">
+		<image :src="bgimg" class="homebg"></image>
+		<view  class="homebox" :style="'padding-top:'+padtop+'px'">
+			<!-- 头部 -->
+			<navbar :back="false" title="首页" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop"/>
+			<view class="homeboxa">
+				<div>22</div>
+				<view style="background-color: #000;width: 100%;height: 100vh;">
+</view>
+			
+				
+			</view>
+		</view>
+		
+		
+    <!-- 底部 导航栏  currentPage 当前页面ID -->
+        <tab-bar :currentPage="0"></tab-bar>
+    </view>
+</template>
+
+<script>
+	import url from "@/util/url";
+	let {host} = url
+    //导入组件
+    import tabBar from '@/components/tabbar/tabbar.vue'
+    export default {
+        data() {
+            return {
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'transparent',
+				bgimg:require('@/static/image/bg.png'),
+				
+            };
+        },
+        components:{
+            tabBar
+        },
+        methods: {
+			getTop(e){
+				this.padtop=e;
+			},
+			// 监听滚动
+			
+		},
+		// onPageScroll(res) {
+		// 	var scrolltop=res.scrollTop;
+		// 	if(scrolltop>0){
+		// 		this.backgroundColor='linear-gradient(90deg, #A00517, #E93030)'
+		// 	}else{
+		// 		this.backgroundColor='transparent'
+		// 	}
+		// 	console.log("页面滚动了",res.scrollTop)
+
+		//  },
+    };
+</script>
+<style scoped lang="scss">
+	.home{height: 100vh;background: #f5f5f5;position: relative;
+		.homebg{width: 100%;height: 376rpx;}
+		.homebox{position: absolute;left: 0;right: 0;top: 0;bottom: 0;box-sizing: border-box;max-height: 100vh;display: flex;flex-direction: column;
+			.homeboxa{flex: 1;overflow: scroll;}
+		
+		}
+	}
+</style>

+ 334 - 0
qianshancard_wx/pages/login/login.vue

@@ -0,0 +1,334 @@
+<template>
+	<view class="login" >
+		<image :src="bgimg" class="loginbg"></image>
+		<view :style="'padding-top:'+padtop+'px'">
+			<navbar :back="false" :bgcolor="backgroundColor" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop" />
+			
+			<view class="login_tit">
+				<view class="login_tita">登录</view>
+				<view class="login_txt">欢迎使用潜商服务卡~</view>
+				
+			</view>
+			
+			<view style="padding-bottom: 56rpx;">
+				<view class="login_i">
+					<image :src="zimg"></image>
+					<input  placeholder="请输入账号" v-model="formData.username"/>
+				</view>
+				<view class="login_i">
+					<image :src="mimg" style="width: 30rpx;height: 38rpx;margin-right: 26rpx;"></image>
+					<input  placeholder="请输入密码" type="password" v-model="formData.password"/>
+				</view>
+			</view>
+			<view class="login_btn btn1" @click="passwordlogin">账号登录</view>
+			<button  type="primary" class="login_btn btn2" open-type="getUserInfo" @getuserinfo="getuserinfo">
+				<text class="btn-txt">快速登录</text>
+			</button>
+
+			<!-- 显示弹窗 -->
+			<div class="box_hei" @click="btn" v-if="box_status">
+				<div  @click.stop="btns" class="hei_box">
+					<div class="box_top">
+						<div class="box_title">
+							<div>
+								潜山信惠 申请使用
+							</div>
+						</div>
+						<div class="box_nameq">你的手机号码</div>
+					</div>
+					<!-- <div class="boxs"></div> -->
+					<div class="box_btns">
+						<div @click="btn" class="box_btn box_btn1">拒绝</div>
+						<button class="box_btn box_btn2" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">允许</button>
+					</div>
+				</div>
+			</div>
+		</view>
+		
+		
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor:'transparent',
+				zimg:require("@/static/image/loginz.png"),
+				mimg:require("@/static/image/loginm.png"),
+				bgimg:require("@/static/image/lbg.png"),
+				formData: {
+					username: '',
+					password: ''
+				},
+				box_status: false,
+				userId:''
+			}
+		},
+		onLoad() {
+			uni.clearStorage()
+		},
+		methods:{
+			getTop(e){
+				this.padtop=e
+			},
+			btns() {
+				
+			},
+			btn() {
+				this.box_status = false
+			},
+			// 手机号登录
+			passwordlogin() {
+				if(!this.formData.username){
+					uni.showToast({
+						title: "请输入账号",
+						duration: 1000,
+						icon: 'none'
+					});
+					return
+				}
+				if(!this.formData.password){
+					uni.showToast({
+						title: "请输入密码",
+						duration: 1000,
+						icon: 'none'
+					});
+					return
+				}
+				// this.$http.post('boman-auth/login', this.formData).then(res=>{
+				this.$http.post('loginApp', this.formData).then(res=>{
+					if(res.code == 200 ) {
+						this.userId=res.userId;
+						uni.setStorageSync('token', res.token)
+						uni.setStorageSync('userId', res.userId)
+						uni.setStorageSync('businessId',res.settledMerchants.businessId)
+						uni.setStorageSync('phone', res.settledMerchants.businessPhone)
+						 setTimeout(function(){
+						 	uni.switchTab({
+						 	    url: '/pages/index/index',
+						 	});
+						 },1000)
+						// this.getUserInfoes();
+						// uni.switchTab({
+						//     url: '/pages/index/index',
+						// });
+					} else{
+						uni.showToast({
+							title: res.msg,
+							duration: 1000,
+							icon: 'none'
+						});
+					}
+				})
+			},
+			// 快捷登录
+			async getPhoneNumber(e){
+				console.log(e)
+				const {iv,encryptedData} = e.detail
+				console.log(iv,encryptedData)
+				let res = await this.$http.uniApi({events: uni.login})
+						if(res.code) {
+							// console.log(res,9876)
+							this.$http.post("applet/login",{
+								iv: iv,
+								encryptedData: encryptedData,
+								code : res.code,
+								// mode:this.mode,
+								// userInfo:this.userInfo
+							}).then(red => {
+								// console.log(red)
+								if(red.code == 200){
+									// console.log(JSON.parse(red.data).phoneNumber,9999)
+									this.box_status = false;
+									this.userId=red.data.userId;
+									uni.setStorageSync('token', red.data.access_token)
+									uni.setStorageSync('userId', red.data.userId)
+									uni.setStorageSync('businessId',red.data.settledMerchants.businessId)
+									uni.setStorageSync('phone', red.data.settledMerchants.businessPhone)
+									// this.getUserInfoes();
+									uni.switchTab({
+									    url: '/pages/index/index',
+									});
+									// uni.navigateTo({
+									// 	url: '/pages/index/index'
+									// })
+								}else{
+									uni.showToast({
+										title: red.msg,
+										duration: 1000,
+										icon: 'none'
+									});
+								}
+							})
+						}
+			},
+			// 个人信息
+			getUserInfoes() {
+				this.$http.get('system/user/'+this.userId).then(res=>{
+					// console.log(JSON.stringify(res))
+					if(res.code == 200 ) {
+						uni.setStorageSync('phone', res.data.phonenumber)   
+						 setTimeout(function(){
+						 	uni.switchTab({
+						 	    url: '/pages/index/index',
+						 	});
+						 },1000)
+					} 
+				})
+			},
+			async getuserinfo(e) {
+				console.log(e,9999)
+				const {nickName, avatarUrl, ...userInfo} = e.detail.userInfo
+				// uni.navigateTo({
+				// 	url: `login_phone?nickName=${nickName}&avatarUrl=${avatarUrl}`
+				// })
+				try{
+					let res = await this.$http.uniApi({events: uni.login})
+					if(res.code) {
+						// console.log(res)
+						// console.log(res.code)
+						// console.log(nickName)
+						// console.log(avatarUrl)
+						this.avatarUrl = avatarUrl
+						this.nickName = nickName
+						this.code = res.code
+						this.userInfo =e.detail.userInfo
+						uni.setStorageSync('userInfo', e.detail.userInfo)
+						// this.bindUserinfo({code: res.code, nickName, avatarUrl})
+						this.box_status=true
+					}
+				} catch(e){
+					//TODO handle the exception
+				}
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.loginbg{width: 342rpx;height:  382rpx;position: absolute;right: 0;top: 0;z-index: -1;}
+	.login{height: 100vh; width: 100%;box-sizing: border-box;padding: 0 74rpx;position: relative;}
+	.login_tit{padding-top: 100rpx;margin-bottom: 150rpx;
+		.login_tita{font-size: 48rpx;font-weight: bold;color: #2F2F2F;}
+		.login_txt{font-size: 30rpx;color: #666666;font-weight: 400;margin-top: 12rpx;}
+	}
+	.login_i{
+		display: flex;align-items: center;height:90rpx;padding: 0 32rpx;border-radius: 48rpx;margin-bottom: 28rpx;background: rgba(244, 244, 244, .6);
+		image{
+			width: 36rpx;height: 34rpx;margin-right: 20rpx;
+		}
+		input{
+			font-size: 28rpx;color: #000000;
+		}
+	}
+	.login_btn{width: 100%;height: 90rpx;display: flex;align-items: center;justify-content: center;font-size: 30rpx;border-radius: 48rpx;
+	&.btn1{background: #A04CFF;color: #ffffff;margin-bottom: 28rpx;}
+	&.btn2{border: 1px solid #A04CFF;color: #A04CFF;background: #fff;}
+	}
+	
+	// 快捷登录弹窗
+	.box_hei{
+		width: 100%;
+		height: 100%;
+		background: rgba(0,0,0,.8);
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 3;
+		.hei_box{
+			background: #fff;
+			border-radius:22upx 22upx 0 0;
+			height: 440upx;
+			padding: 52upx 28upx 104upx;
+			position: absolute;
+			bottom:0;
+			width: 100%;
+			box-sizing: border-box;
+			.box_top{
+				padding: 0 18upx 62upx;
+				.box_title{
+					display: flex;
+					justify-content: space-between;
+					font-size: 30upx;
+					margin-bottom: 30upx;
+					div{
+						display: flex;
+						align-items: center;
+						color: #333333;
+					}
+					.img{
+						margin-right: 14upx;
+						width: 180upx;
+						height: 48upx;
+					}
+					.imgs{
+						width: 40upx;
+						height: 40upx;
+					}
+				}
+				.box_nameq{
+					color: #333333;
+					font-size: 44upx;
+					font-weight: bold;
+				}
+			}
+			.box_phone{
+				height: 106upx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				font-size: 28upx;
+				color: #A6A6A6;
+				border-bottom: 1upx solid #EBEBEB;
+				border-top: 1upx solid #EBEBEB;
+				div{
+					display: flex;
+					align-items: center;
+				}
+				.img{
+					width: 26upx;
+					height: 22upx;
+				}
+				span{
+					color: #333333;
+					font-size: 32upx;
+					padding-right: 18upx;
+					font-weight: bold;
+				}
+			}
+			.box_qita{
+				height: 106upx;
+				font-size: 28upx;
+				color: #7CA4FC;
+				line-height: 106upx;
+			}
+			.boxs{
+				height: 50upx;
+			}
+			.box_btns{
+				margin-top: 10upx;
+				display: flex;
+				justify-content: space-between;
+				.box_btn{
+					width: 324upx;
+					height: 82upx;
+					font-size: 32upx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					border-radius: 4upx;
+				}
+				.box_btn1{
+					background: #F3F3F3;
+					color: #33B925;
+				}
+				.box_btn2{
+					background: #37962B;
+					color: #FFFFFF;
+				}
+			}
+		}
+	}
+</style>

+ 136 - 0
qianshancard_wx/pages/login/updatpaw.vue

@@ -0,0 +1,136 @@
+<template>
+	<view class="updat" :style="'padding-top:'+padtop+'px'">
+		<!-- 头部 -->
+		<navbar :back="false" title="修改密码" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"
+			:custom='true' @getTop="getTop" back="true" />
+		<view>
+			<view class="updatb">
+				<view class="updatba">新密码</view>
+				<input placeholder="请输入新密码" v-model="newpassword" class="updatbi" />
+			</view>
+			<view class="updatb">
+				<view class="updatba">再次确认密码</view>
+				<input placeholder="请再次输入新密码" v-model="password" class="updatbi" />
+			</view>
+		</view>
+		<view class="login_btn btn1" @click="getSureFn">确认修改</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				padtop: this.$http._GET.customBarH||0,
+				backgroundColor: 'linear-gradient(60deg, #6A6BF1, #CB4BFA)',
+				newpassword: '',
+				password: '',
+			}
+		},
+		onLoad(e) {
+			this.userName=e.userName
+		},
+		methods: {
+			getTop(e) {
+				this.padtop = e
+			},
+			getSureFn() {
+				if(!this.newpassword||!this.password){
+					uni.showToast({
+						title:"请输入完整",
+						icon:'none'
+					})
+					return
+				}
+				if(this.newpassword.length<6){
+					uni.showToast({
+						title: '请输入至少六位数密码',
+						icon: 'none'
+					})
+					return
+				}
+				if (this.newpassword != this.password) {
+					uni.showToast({
+						title: '两次密码输入不同,请修改',
+						icon: 'none'
+					})
+					return
+				}
+				var userId = uni.getStorageSync('userId')
+				var params={
+					userId:userId,
+					password:this.password,
+					userName:this.userName
+				}
+				this.$http.post('system/user/updatePwd',params).then(res=>{
+					if(res.code == 200 ) {
+						uni.showToast({
+							title:"修改成功,请重新登录",
+							duration: 1000,
+							icon: 'none'
+						})
+						setTimeout(function(){
+							uni.removeStorageSync("userId")
+							uni.removeStorageSync("token")
+							uni.reLaunch({
+								url:"/pages/login/login"
+							})
+						},1000)
+						
+					}else{
+						uni.showToast({
+							title: res.msg,
+							duration: 1000,
+							icon: 'none'
+						});
+					} 
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.updat {
+		padding: 0 32rpx;
+		min-height: 100vh;
+		box-sizing: border-box;
+		background: #ffffff;
+	}
+
+	.updatb {
+		min-height: 100rpx;
+		display: flex;
+		align-items: center;
+		padding: 18rpx 0;
+		border-bottom: 2rpx solid #f5f5f5;
+		box-sizing: border-box;
+	}
+
+	.updatba {
+		font-size: 28rpx;
+		font-weight: bold;
+		color: #000000;
+		flex: 0 0 auto;
+	}
+
+	.updatbi {
+		flex: 1;
+		text-align: right;
+		font-size: 28rpx;
+		color: #000;
+	}
+
+	.login_btn {
+		width: 100%;
+		height: 90rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: 30rpx;
+		border-radius: 48rpx;
+		background: #A04CFF;
+		color: #ffffff;
+		margin-top: 120rpx;
+	}
+</style>

+ 149 - 0
qianshancard_wx/pages/mine/mine.vue

@@ -0,0 +1,149 @@
+<template>
+    <view class="mine">
+		<!-- 头部 -->
+		<navbar :back="false" title="我的" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop"/>
+		<image :src="bgimg" class="minebg"></image>
+		<view class="minebox">
+			<view class="minetop flexc"  @click="getCard">
+				<image :src="headimg" class="minetopa flex0"></image>
+				<view class="flex1">
+					<view class="minetopt">李明鑫</view>
+					<view class="minetoptx">
+						<image :src="mtitimg"></image>
+						潜商服务金卡
+					</view>
+				</view>
+				<view class="minetoptr flex0">
+						我的卡片<image :src="rimg"></image>
+				</view>	
+			</view>
+			<view class="minelists">
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="lista" mode="aspectFit" style="width: 40rpx;"></image>
+					</view>
+					<view class="minelistit">权益管理</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="listb" mode="aspectFit" style="width: 40rpx;height: 40rpx;"></image>
+					</view>
+					<view class="minelistit">人员管理</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="listc" mode="aspectFit" style="height: 40rpx;"></image>
+					</view>
+					<view class="minelistit">使用记录</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="listd" mode="aspectFit" style="height: 40rpx;"></image>
+					</view>
+					<view class="minelistit">添加记录</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="liste" mode="aspectFit"></image>
+					</view>
+					<view class="minelistit">招商政策</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="listf" mode="aspectFit"></image>
+					</view>
+					<view class="minelistit">使用指南</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="listg" mode="aspectFit"></image>
+					</view>
+					<view class="minelistit">修改密码</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+			</view>
+		</view>
+    <!-- 底部 导航栏  currentPage 当前页面ID -->
+        <tab-bar :currentPage="2"></tab-bar>
+    </view>
+</template>
+
+<script>
+    //导入组件
+    import tabBar from '@/components/tabbar/tabbar.vue'
+    export default {
+        data() {
+            return {
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'transparent',
+				bgimg:require('@/static/image/minebg.png'),
+				headimg:require('@/static/image/head.png'),
+				mtitimg:require('@/static/image/mtit.png'),
+				rimg:require("@/static/image/rimg.png"),
+				lista:require("@/static/image/mlista.png"),
+				listb:require("@/static/image/mlistb.png"),
+				listc:require("@/static/image/mlistc.png"),
+				listd:require("@/static/image/mlistd.png"),
+				liste:require("@/static/image/mliste.png"),
+				listf:require("@/static/image/mlistf.png"),
+				listg:require("@/static/image/mlistg.png"),
+            };
+        },
+        components:{
+            tabBar
+        },
+        methods: {
+			getTop(e){
+				this.padtop=e;
+			},
+			getCard(){
+				this.$http.routePage("/mine/pages/card/card",'nav')
+			}
+		},
+		onPageScroll(res) {
+			var scrolltop=res.scrollTop;
+			if(scrolltop>0){
+				this.backgroundColor='linear-gradient(60deg, #6A6BF1, #CB4BFA)'
+			}else{
+				this.backgroundColor='transparent'
+			}
+		 },
+    };
+</script>
+<style scoped lang="scss">
+	.mine{min-height: 100vh;background: #f5f5f5;overflow: auto;
+		.minebg{width: 100%;height: 296rpx;}
+		.minebox{
+			padding: 0 34rpx;margin-top: -128rpx;box-sizing: border-box;overflow: hidden;position: relative;
+			.minetop{width: 684rpx;min-height: 166rpx;
+background: #FFFFFF;box-shadow: 4rpx 6rpx 6rpx 0px rgba(91,91,91,0.2);border-radius: 10rpx;margin-bottom: 20rpx;padding: 28rpx 30rpx 24rpx;box-sizing: border-box;margin-bottom: 20rpx;
+				.minetopa{width: 112rpx;height: 114rpx;margin-right: 30rpx;border-radius: 50%;}
+				.minetopt{font-size: 30rpx;font-weight: bold;color: #000000;margin-bottom: 8rpx;}
+				.minetoptx{font-size: 26rpx;color: #666666;display: flex;align-items: center;
+					image{width: 16rpx;height: 26rpx;margin-right: 12rpx;flex: 0 0 auto;}
+				}
+				.minetoptr{font-size: 28rpx;color: #000000;display: flex;align-items: center;
+					image{width: 16rpx;height: 28rpx;margin-left: 18rpx;flex: 0 0 auto;}
+				}
+			}
+			.minelists{width: 100%;border-radius: 10rpx;background-color: #FFFFFF;padding: 4rpx 32rpx;box-sizing: border-box;
+				.minelist{display: flex;align-items: center;padding: 30rpx 0;
+					.minelista{width: 42rpx;height: 42rpx;display: flex;align-items: center;justify-content: center;margin-right: 24rpx;flex: 0 0 auto;
+						image{max-width: 100%;max-height: 100%;}
+					}
+					.minelistit{font-size: 28rpx;color: #000000;flex: 1;}
+					.minelistr{width: 16rpx;height: 28rpx;margin-left: 18rpx;flex: 0 0 auto;}
+				}
+			}
+			
+		
+		
+		}
+	}
+</style>

BIN
qianshancard_wx/static/image/bg.png


BIN
qianshancard_wx/static/image/cardbg (10).png


BIN
qianshancard_wx/static/image/cardbg (2).png


BIN
qianshancard_wx/static/image/cardbg (3).png


BIN
qianshancard_wx/static/image/cardbg (4).png


BIN
qianshancard_wx/static/image/cardbg (5).png


BIN
qianshancard_wx/static/image/cardbg (6).png


BIN
qianshancard_wx/static/image/cardbg (7).png


BIN
qianshancard_wx/static/image/cardbg (8).png


BIN
qianshancard_wx/static/image/cardbg (9).png


BIN
qianshancard_wx/static/image/cardbg.png


BIN
qianshancard_wx/static/image/head.png


BIN
qianshancard_wx/static/image/icon_zt_back.png


BIN
qianshancard_wx/static/image/lbg.png


BIN
qianshancard_wx/static/image/lista.png


BIN
qianshancard_wx/static/image/loginm.png


BIN
qianshancard_wx/static/image/loginz.png


BIN
qianshancard_wx/static/image/mbg.png


BIN
qianshancard_wx/static/image/minebg.png


BIN
qianshancard_wx/static/image/mlista.png


BIN
qianshancard_wx/static/image/mlistb.png


BIN
qianshancard_wx/static/image/mlistc.png


BIN
qianshancard_wx/static/image/mlistd.png


BIN
qianshancard_wx/static/image/mliste.png


BIN
qianshancard_wx/static/image/mlistf.png


BIN
qianshancard_wx/static/image/mlistg.png


BIN
qianshancard_wx/static/image/mtit.png


BIN
qianshancard_wx/static/image/rimg.png


BIN
qianshancard_wx/static/image/swipera.png


BIN
qianshancard_wx/static/image/topa.png


BIN
qianshancard_wx/static/image/topb.png


BIN
qianshancard_wx/static/image/topc.png


BIN
qianshancard_wx/static/table/tab1.png


BIN
qianshancard_wx/static/table/tab1_pre.png


BIN
qianshancard_wx/static/table/tab2.png


BIN
qianshancard_wx/static/table/tab2_pre.png


BIN
qianshancard_wx/static/table/tab_code.png


+ 78 - 0
qianshancard_wx/uni.scss

@@ -0,0 +1,78 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 引入uView基础样式 */
+// @import 'uview-ui/theme.scss';
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;

+ 198 - 0
qianshancard_wx/util/api.js

@@ -0,0 +1,198 @@
+let Promises = Promise
+import url from "@/util/url";
+let {host} = url
+var _GET=null;
+Promises.prototype.finally = function(callback) {
+	let P = this.constructor
+	return this.then(
+		value => P.resolve(callback()).then(() => value),
+		reason => P.resolve(callback()).then(() => {
+			throw reason
+		}))
+}
+
+class Https {
+	_GET=_GET||{
+		'customBarH':0,//高度
+		"statusBarH":0
+		
+	}
+	request(url, method, data,loading) {
+		var loading=loading||false
+		if(!loading){
+			uni.showLoading({
+				title: '加载中'
+			})
+		}
+		
+		var token = uni.getStorageSync('token')
+		// var token = "df057579-73c8-4bdd-8312-f64db8efd699"
+		return new Promises((resolve, reject) => {
+			uni.request({
+				// // #ifdef H5
+				// url:'/apid'+url,
+				// // #endif
+
+				url: host + '/' + url, //
+				method: method,
+				data: data,
+				header: {
+					// application/json
+					'content-type': 'application/json', // 默认值
+					'Authorization': token || ''
+				},
+				success: function(res) {
+					// console.log(res.data.code,98765)
+					if(!loading){
+						uni.hideLoading()
+					}
+					
+					if (res.statusCode == 401) {
+						uni.navigateTo({
+							url: '/pages/load/roles'
+						})
+					}else if(res.data.code == '00040000'){
+						uni.showToast({
+							title: res.data.message,
+							duration: 1000,
+							icon: 'none'
+						});
+					}else if(res.code == 1002){
+						uni.navigateTo({
+							url: '/pages/load/roles'
+						})
+					}else if(res.data.code == 1002){
+						uni.navigateTo({
+							url: '/pages/load/roles'
+						})
+					}else if(res.data.code == 401){
+						uni.clearStorage()
+						uni.reLaunch({
+							url: '/pages/login/login'
+						})
+					}else if(res.code == 401){
+						uni.navigateTo({
+							url: '/pages/load/roles'
+						})
+					}
+					else{
+						resolve(res.data)
+					}
+				},
+				fail: function(error) {
+					uni.hideLoading()
+					reject(error)
+				}
+			})
+		})
+	}
+	upLoad(params) {
+		console.log(params)
+		var token = uni.getStorageSync('token')
+		let urls = ''
+		return new Promises((resolve, reject) => {
+			console.log(params.data)
+			uni.uploadFile({
+				url: url + '/common/upload', 
+				filePath: params.path,
+				data: params,
+				header: {
+					'content-type': 'multipart/form-data',
+					'Authorization': token
+				},
+				formData: {
+					'token': token
+				},
+				name: params.name || 'file',
+				success: function(res) {
+					console.log(res.data,9875)
+					urls = JSON.parse(res.data); 
+					let urliu = urls.url
+					console.log(urliu)
+					let url = urls.url
+					resolve(url)
+				},
+				fail: function(error) {
+					reject(error)
+				}
+			})
+		})
+	}
+	upDown(params) {
+		console.log(params)
+		var token = uni.getStorageSync('token')
+		return new Promises((resolve, reject) => {
+			uni.uploadFile({
+				url: host + '/common/download', // 
+				header: {
+					'Authorization': token
+				},
+				filePath: params.path,
+				name: params.name || 'img',
+				success: function(res) {
+					console.log(res,4)
+					resolve(res.data)
+				},
+				fail: function(error) {
+					reject(error)
+				}
+			})
+		})
+	}
+	get(url, data) {
+		return this.request(url, 'GET', data)
+	}
+	dele(url, data) {
+		return this.request(url, 'delete', data)
+	}
+	post(url, data,loading) {
+		return this.request(url, 'POST', data,loading)
+	}
+	put(url, data) {
+		return this.request(url, 'put', data)
+	}
+	uniApi(params, data) {
+		return new Promises((resolve, reject) => {
+			params.events({
+				...data,
+				success(res) {
+					resolve(res)
+				},
+				fail(err) {
+					reject(err)
+				}
+			})
+		})
+	}
+	routePage(url,type){
+		switch (type){
+			case 'nav':
+			 uni.navigateTo({
+				 url:url
+			 })
+			break;
+			case 'redirect':
+			 uni.redirectTo({
+			 	url:url
+			 })
+			break;
+			case 'reLaunch':
+			 uni.reLaunch({
+			 	url:url
+			 })
+			break;
+			case 'navback':
+			 uni.navigateBack({
+			 	url:url
+			 })
+			break;
+			default:
+			break;
+		}
+	}
+}
+
+const https = new Https()
+
+export default https
+  

+ 24 - 0
qianshancard_wx/util/url.js

@@ -0,0 +1,24 @@
+
+ // const host = 'http://cb.vaiwan.com:8082'
+// const host = 'https://yxxy.qs163.cn/prod-api'
+//潜山校园 /api
+// const host = 'https://qsxyakm.qs163.cn/prod-api'
+// 线上
+ // const host = 'https://qsdj.qs163.cn/prod-api'
+ // const imgDomain = 'https://qsdj.qs163.cn'
+ 
+
+ // const host = 'http://192.168.101.110:8090'
+ // const imgDomain = 'http://192.168.101.110:8090'
+ 
+ // const host = 'http://192.168.101.110:8090'
+  // 汤
+// const host = 'http://192.168.101.11:9000'   
+//  const imgDomain = 'http://192.168.101.11:9000'
+// 叶
+ const host = 'http://192.168.101.168:9000'
+  const imgDomain = 'http://192.168.101.168:9000'
+ export default {
+	 host,
+	 imgDomain
+ }

+ 16 - 0
qianshancardshang_wx/.hbuilderx/launch.json

@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+  // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+    "version": "0.0",
+    "configurations": [{
+     	"default" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"mp-weixin" : 
+     	{
+     		"launchtype" : "local"
+     	},
+     	"type" : "uniCloud"
+     }
+    ]
+}

+ 42 - 0
qianshancardshang_wx/App.vue

@@ -0,0 +1,42 @@
+<script>
+	export default {
+		onLaunch: function() {
+			console.log('App Launch')
+		},
+		onShow: function() {
+			console.log('App Show')
+		},
+		onHide: function() {
+			console.log('App Hide')
+		}
+	}
+</script>
+
+<style lang="scss">
+	/*每个页面公共css */
+	.swiper .uni-swiper-wrapper .uni-swiper-dot{
+		width:6rpx;height:6rpx;border-radius: 50%;
+		}
+	.swiper .uni-swiper-wrapper .uni-swiper-dot-active{
+		width: 18rpx;height: 6rpx;border-radius: 4rpx;
+	}
+	// wx
+	.swiper .wx-swiper-wrapper .wx-swiper-dot{
+		width:6rpx;height:6rpx;border-radius: 50%;
+		}
+	.swiper .wx-swiper-wrapper .wx-swiper-dot-active{
+		width: 18rpx;height: 6rpx;border-radius: 4rpx;
+	}
+	.flex{display: flex;}
+	.flexc{display: flex;align-items: center;}
+	.flexdc{flex-direction: column;}
+	.flex1{flex: 1;}
+	.flex0{flex: 0 0 auto;}
+	.f12{font-size: 24rpx;}
+	.f13{font-size: 26rpx;}
+	.c0{color: #000000;}
+	.w33{width: 33%;}
+	.mlr16{margin-left: 32rpx;margin-right: 32rpx;}
+	.mbt5{margin-top: 10rpx;}
+	.lh18{line-height: 36rpx;}
+</style>

+ 167 - 0
qianshancardshang_wx/components/navbar/navbar.vue

@@ -0,0 +1,167 @@
+<template>
+	<view class="ua__navbar">
+		<view class="ua__navbar-wrap" :class="{'custom': custom, 'fixed': fixed || transparent}"
+			:style="{'height': customBarH + 'px', 'padding-top': (custom ? statusBarH : 0) + 'px', 'background': bgcolor, 'color': color, 'z-index': zIndex}">
+			<!-- //左侧 (返回) -->
+			<view class="action navbar-action__left" v-if="back && back!='false'" @click="onBack">
+				<template v-if="$slots.back">
+					<slot name="back" />
+				</template>
+				<template v-else>
+					<view class="navbar-back"><image src="@/static/image/icon_zt_back.png"></image></view>
+					
+				</template>
+				<slot name="backText" />
+			</view>
+			<slot name="left" />
+
+			<!-- //标题 -->
+			<view v-if="!search" class="navbar-title" :class="{'center': center}">
+				<template v-if="$slots.title">
+					<slot name="title" />
+				</template>
+				<template v-else><text :style="{'color': color}">{{title}}</text></template>
+			</view>
+
+			<!-- //搜索框 -->
+			<view v-if="search" class="action navbar-action__search">
+				<slot name="search" />
+			</view>
+
+			<!-- //右侧 -->
+			<view class="action navbar-action__right">
+				<slot name="right" />
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		props: {
+			// 是否采用自定义导航模式
+			custom: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 是否返回
+			back: {
+				type: [Boolean, String],
+				default: true
+			},
+			// 标题
+			title: {
+				type: String,
+				default: ''
+			},
+			// 标题颜色
+			color: {
+				type: String,
+				default: '#353535'
+			},
+			// 背景色
+			bgcolor: {
+				type: String,
+				default: '#fff'
+			},
+			// 标题是否居中
+			center: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 搜索框
+			search: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 是否固定导航
+			fixed: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 是否背景透明
+			transparent: {
+				type: [Boolean, String],
+				default: false
+			},
+			// 设置层叠
+			zIndex: {
+				type: [Number, String],
+				default: '2022'
+			},
+		},
+		data() {
+			return {
+				// 全局设置状态栏和导航栏高度
+				statusBarH: 0,
+				customBarH: 0,
+			}
+		},
+		mounted() {
+			// console.log(this.bgcolor)
+			var that = this;
+			// console.log(that.$http._GET.customBarH)
+			// console.log(that.$http._GET.statusBarH)
+			if(that.$http._GET.customBarH!=0){
+				that.statusBarH = that.$http._GET.statusBarH
+				// 状态栏
+				that.customBarH = that.$http._GET.customBarH
+			}else{
+			uni.getSystemInfo({
+				success(e) {
+					// console.log(e)
+					// 获取手机状态栏高度
+					let statusBar = e.statusBarHeight
+					let customBar
+
+					// #ifndef MP
+					customBar = statusBar + (e.platform == 'android' ? 50 : 45)
+					// #endif
+
+					// #ifdef MP-WEIXIN
+					// 获取胶囊按钮的布局位置信息
+					let menu = wx.getMenuButtonBoundingClientRect()
+					// 导航栏高度 = 胶囊下距离 + 胶囊上距离 - 状态栏高度
+					customBar = menu.bottom + menu.top - statusBar
+					// #endif
+
+					// #ifdef MP-ALIPAY
+					customBar = statusBar + e.titleBarHeight
+					// #endif
+					// console.log(statusBar,customBar)
+					// 导航栏
+					that.statusBarH = statusBar
+					// 状态栏
+					that.customBarH = that.custom ? customBar : customBar - statusBar
+					that.$http._GET.customBarH=that.customBarH;
+					that.$http._GET.statusBarH=that.statusBarH;
+					that.$emit('getTop',that.customBarH)
+				},
+
+			})
+			}
+		},
+		methods: {
+			onBack() {
+				uni.navigateBack({
+					delta: 1
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.ua__navbar-wrap{box-sizing: border-box;display: flex;align-items: center;}
+	.ua__navbar-wrap.fixed{position: fixed;left: 0;top: 0;right: 0;}
+	.navbar-title.center {
+		text-align: center;
+		flex: 1;
+	}
+	.navbar-back{flex: 0 0 auto;display: flex;align-items: center;justify-content: center;
+		// padding: 0 20rpx;
+		width: 88rpx;height: 88rpx;
+		image{width: 18rpx;height: 34rpx;}
+	
+	}
+</style>

+ 181 - 0
qianshancardshang_wx/components/tabbar/tabbar.vue

@@ -0,0 +1,181 @@
+<template>
+    <view>
+<!-- 		<view>
+			
+		</view> -->
+		<view style="height: 150rpx;"></view>
+        <view class="tabbar-container" :class="isIpx?'IpxBot':''">
+			<view class="tabbar-containers">
+				<view class="tabbar-item" v-for="(item,index) in tabList" :class="[item.centerItem ? 'center-item' : '']"
+				    @click="changeItem(item)" :key="index">
+				    <view class="item-top">
+				        <image :src="tabId==item.id?item.selectIcon:item.icon" mode=""></image>
+				    </view>
+				    <view class="item-bottom" :class="[tabId==item.id ? 'item-active' : '']">
+				        <text>{{item.text}}</text>
+				    </view>
+				</view>
+			</view>
+           
+        </view>
+    </view>
+</template>
+
+<script>
+    export default {
+        props: {
+            currentPage: {
+                type: Number,
+                default: 0
+            }
+        },
+        data() {
+            return {
+                //适配IPhoneX
+                isIpx: false, 
+                //底部Tab
+                tabId: 0,
+                tabList: [{
+                    id: 0,
+                    path: "/pages/index/index",
+                    icon: "/static/table/tab1.png",
+                    selectIcon: "/static/table/tab1_pre.png",
+                    text: "首页",
+                    centerItem: false
+                }, {
+                    id: 1,
+                    path: "/pages/code/code",
+                    icon: "/static/table/tab_code.png",
+                    selectIcon: "/static/table/tab_code.png",
+                    text: "",
+                    centerItem: true
+                }, {
+                    id: 2,
+                    path: "/pages/mine/mine",
+                    icon: "/static/table/tab2.png",
+                    selectIcon: "/static/table/tab2_pre.png",
+                    text: "我的",
+                    centerItem: false
+                }],
+            };
+        },
+        mounted() {
+            this.tabId = this.currentPage;
+            //隐藏原生tab
+            uni.hideTabBar();
+        },
+        created() {
+            // 判断为 iPhone X 给予底部距离
+            let that = this
+            uni.getSystemInfo({
+                success: function(res) {
+                    if (res.model.indexOf('iPhone X') !== -1) {
+                        that.isIpx = true;
+                    }
+                }
+            })
+        },
+        methods: {
+            // tab 切换
+            changeItem(item) {
+                if (item.id == 1) {
+					uni.navigateTo({
+						url:item.path
+					})
+                    console.log('点击中间' + '快速');
+                } else {
+                    uni.switchTab({
+                        url: item.path,
+                    });
+                }
+            },
+
+        }
+    }
+</script>
+<style scoped>
+    view {
+        padding: 0;
+        margin: 0;
+        box-sizing: border-box;
+    }
+
+    .tabbar-container {
+        position: fixed;
+        bottom: 0;
+        left: 0;
+        width: 100%;
+		background-color: #FFFFFF;
+    }
+	.tabbar-containers {
+	   
+		height: 134rpx;
+		box-sizing: border-box;
+	    /* height: 100rpx; */
+	    /* box-shadow: 0 0 5px #999; */
+		box-shadow: 0px -6px 11px 0px rgba(215, 215, 215, 0.4);
+	    display: flex;
+	    align-items: center;
+	    /* padding: 24rpx 0; */
+	    color: #999999;
+	 
+	}
+
+    .tabbar-container .tabbar-item {
+        width: 33.33%;
+        /* height: 100rpx; */
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+        text-align: center;
+    }
+
+    .tabbar-container .item-active {
+        color: #343434;
+    }
+
+    .tabbar-container .center-item {
+        display: block;
+        position: relative;
+    }
+
+    .tabbar-container .tabbar-item .item-top {
+        width: 46rpx;
+        height: 48rpx;
+		margin-bottom: 10rpx;
+        /* padding: 5rpx; */
+    }
+
+    .tabbar-container .center-item .item-top {
+        flex-shrink: 0;
+        width: 138rpx;
+        height: 136rpx;
+       position: absolute;
+        bottom:calc(50% - 40rpx);
+        left: calc(50% - 69rpx);
+        border-radius: 50%;
+        /* background-color: #FFFFFF; */
+		/* box-shadow: 0px -6px 11px 0px rgba(215, 215, 215, 0.4); */
+    }
+
+    .tabbar-container .tabbar-item .item-top image {
+        width: 100%;
+        height: 100%;
+    }
+
+    .tabbar-container .tabbar-item .item-bottom {
+        font-size: 26rpx;
+        width: 100%;
+    }
+
+    .tabbar-container .center-item .item-bottom {
+        position: absolute;
+        bottom: 2rpx;
+    }
+
+    /* 适配iPhone X */
+    .IpxBot {
+        padding-bottom: 30rpx !important;
+    }
+</style>

+ 20 - 0
qianshancardshang_wx/index.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html lang="en">
+  <head>
+    <meta charset="UTF-8" />
+    <script>
+      var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
+        CSS.supports('top: constant(a)'))
+      document.write(
+        '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
+        (coverSupport ? ', viewport-fit=cover' : '') + '" />')
+    </script>
+    <title></title>
+    <!--preload-links-->
+    <!--app-context-->
+  </head>
+  <body>
+    <div id="app"><!--app-html--></div>
+    <script type="module" src="/main.js"></script>
+  </body>
+</html>

+ 36 - 0
qianshancardshang_wx/main.js

@@ -0,0 +1,36 @@
+
+import Vue from 'vue'
+import App from './App'
+
+
+import https from './util/api.js'
+
+Vue.config.productionTip = false
+
+/* 使用uView组件库 */
+// import uView from "uview-ui";
+// Vue.use(uView);
+
+App.mpType = 'app'
+const app = new Vue({
+    ...App
+})
+app.$mount()
+
+import NavBar from "@/components/navbar/navbar.vue"
+Vue.component('navbar',NavBar)
+Vue.prototype.$http=https;
+// // #ifndef VUE3
+
+
+// // #endif
+
+// // #ifdef VUE3
+// import { createSSRApp } from 'vue'
+// export function createApp() {
+//   const app = createSSRApp(App)
+//   return {
+//     app
+//   }
+// }
+// // #endif

+ 72 - 0
qianshancardshang_wx/manifest.json

@@ -0,0 +1,72 @@
+{
+    "name" : "qianshancardshang_wx",
+    "appid" : "__UNI__6566E00",
+    "description" : "",
+    "versionName" : "1.0.0",
+    "versionCode" : "100",
+    "transformPx" : false,
+    /* 5+App特有相关 */
+    "app-plus" : {
+        "usingComponents" : true,
+        "nvueStyleCompiler" : "uni-app",
+        "compilerVersion" : 3,
+        "splashscreen" : {
+            "alwaysShowBeforeRender" : true,
+            "waiting" : true,
+            "autoclose" : true,
+            "delay" : 0
+        },
+        /* 模块配置 */
+        "modules" : {},
+        /* 应用发布信息 */
+        "distribute" : {
+            /* android打包配置 */
+            "android" : {
+                "permissions" : [
+                    "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
+                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
+                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",
+                    "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
+                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
+                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
+                    "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
+                    "<uses-feature android:name=\"android.hardware.camera\"/>",
+                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
+                ]
+            },
+            /* ios打包配置 */
+            "ios" : {},
+            /* SDK配置 */
+            "sdkConfigs" : {}
+        }
+    },
+    /* 快应用特有相关 */
+    "quickapp" : {},
+    /* 小程序特有相关 */
+    "mp-weixin" : {
+        "appid" : "wxfc6b1fc520c96f95",
+        "setting" : {
+            "urlCheck" : false
+        },
+        "usingComponents" : true
+    },
+    "mp-alipay" : {
+        "usingComponents" : true
+    },
+    "mp-baidu" : {
+        "usingComponents" : true
+    },
+    "mp-toutiao" : {
+        "usingComponents" : true
+    },
+    "uniStatistics" : {
+        "enable" : false
+    },
+    "vueVersion" : "2"
+}

+ 82 - 0
qianshancardshang_wx/pages.json

@@ -0,0 +1,82 @@
+{
+	"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+		{
+			"path": "pages/index/success",
+			"style": {
+				"navigationBarTitleText": "核销成功",
+				"navigationBarTextStyle": "black",
+				"navigationBarBackgroundColor": "#ffffff"
+			}
+		},
+		{
+			"path": "pages/index/record",
+			"style": {
+				"navigationBarTitleText": "核销记录",
+				"navigationBarTextStyle": "black",
+				"navigationBarBackgroundColor": "#ffffff"
+			}
+		},
+		{
+			"path": "pages/index/index",
+			"style": {
+				"navigationBarTitleText": "首页",
+				"navigationBarTextStyle": "white",
+				"navigationStyle":"custom"
+			}
+		},
+		{
+			"path": "pages/login/login",
+			"style": {
+				"navigationBarTitleText": "登录",
+				"navigationBarTextStyle": "black",
+				"navigationStyle":"custom"
+			}
+		},
+		{
+			"path": "pages/login/updatpaw",
+			"style": {
+				"navigationStyle":"custom"
+			}
+		},
+		{
+			"path": "pages/mine/mine",
+			"style": {
+				"navigationBarTitleText": "我的",
+				"navigationBarTextStyle": "white",
+				"navigationStyle":"custom"
+				
+			}
+		},
+		
+		
+		{
+			"path": "pages/code/code",
+			"style": {
+				"navigationBarTitleText": "二维码出示",
+				"navigationStyle":"custom"
+				// "navigationBarBackgroundColor": "#009FE8",
+				// "navigationBarTextStyle": "white"
+				
+			}
+		}
+		
+	],
+	"tabBar":{
+		"color": "#AAAAAA",
+		    "selectedColor": "#343434",
+		    "borderStyle": "black",
+		    "backgroundColor": "#ffffff",
+		    "list": [{
+		        "pagePath": "pages/index/index"
+		    },
+			{
+		        "pagePath": "pages/mine/mine"
+		    }]
+	},
+	"globalStyle": {
+		"navigationBarTextStyle": "black",
+		"navigationBarTitleText": "uni-app",
+		"navigationBarBackgroundColor": "#F8F8F8",
+		"backgroundColor": "#F8F8F8"
+	}
+}

+ 176 - 0
qianshancardshang_wx/pages/code/code.vue

@@ -0,0 +1,176 @@
+<template>
+	<view class="sub" :style="'padding-top:'+padtop+'px'">
+		<navbar :back="false" title="扫码核销" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop" back="true"/>
+		
+<!-- 		<div class="jhyyes">
+			<img src="/static/images/sm.png" alt="" class="img">
+		</div>
+		<view class="naver" @click="smit">
+			扫码核销
+		</view> -->
+	</view>
+</template>
+
+<script>
+	import url from "@/util/url";
+	export default {
+		data() {
+			return {
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'linear-gradient(90deg, #A00517, #E93030)',
+			};
+		},
+		onLoad() {
+			this.scanAction()
+		},
+		onShow() {
+			
+			// this.uehg = 1
+			// this.scanAction()
+			// console.log(34)
+			
+		},
+		onHide() {
+			
+			// this.uehg = 2
+			// console.log(344)
+			
+		},
+		methods:{
+			getTop(e){
+				this.padtop=e
+			},
+			smit(){
+				this.scanAction()
+			},
+			
+			   //扫码功能
+			scanAction() {
+				var that=this;
+				uni.scanCode({
+					onlyFromCamera: true,
+					scanType: ['qrCode', 'barCode'],
+					success: function (red) {
+						// 最好?id=1&name=测试
+						// console.log(res,9)
+						let result=red.result;
+						if (typeof result == 'string') {
+							    try {
+							        var obj=JSON.parse(decodeURIComponent(result));
+							        if(typeof obj == 'object' && obj ){
+										console.log(7)
+							        }else{
+										console.log(9)
+										uni.showToast({
+											title:'扫码查询失败,请检查二维码是否正确',
+											icon:"none"
+										})
+										uni.navigateBack({
+											delta:1
+										})
+							            return ;
+							        }
+							
+							    } catch(e) {
+							       uni.navigateBack({
+							       	delta:1
+							       })
+								   uni.showToast({
+								   	title:'扫码查询失败,请检查二维码是否正确',
+								   	icon:"none"
+								   })
+							       return
+							    }
+							}
+						var res=JSON.parse(decodeURIComponent(red.result))
+						// console.log(res)
+						// return
+						if(!res.menuId|| !res.phone||!res.idCard){
+							uni.navigateBack({
+								delta:1
+							})
+							uni.showToast({
+								title:'扫码查询失败,请检查二维码是否正确',
+								icon:"none"
+							})
+							return
+						}
+						// var now=new Date().getTime()
+						// var oldnow=res.time;
+						// if(oldnow > now) {
+						//     console.log("二维码在有效期内");
+						// } else {
+						// 	uni.showToast({
+						// 		title:'二维码已过期,请重新生成',
+						// 		icon:"none"
+						// 	})
+						// 	return
+						// }
+						var businessId=uni.getStorageSync('businessId')
+						var params={
+							"businessId": businessId,
+							"policyId": res.menuId,
+							"creditPhone": res.phone,
+							"idCard": res.idCard,
+						}
+						that.$http.post('system/record',params).then(red=>{
+							if(red.code == 200 ) {
+								uni.redirectTo({
+									url:"/pages/index/success"
+								})
+							}else{
+								uni.navigateBack({
+									delta:1
+								})
+								uni.showToast({
+									title: red.msg,
+									duration: 1000,
+									icon: 'none'
+								});
+								
+							} 
+						})
+						// console.log(res)
+						// console.log('条码类型:' + res.scanType);
+						// console.log('条码内容:' + res.result);
+					},
+					fail:function(e){
+						console.log(e)
+						if (e && e.errMsg && e.errMsg.indexOf('scanCode:fail cancel') != -1) {
+						    return;
+						}
+						uni.showToast({
+							title:'扫码失败',
+							icon:"none"
+						})
+					}
+				});
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	.sub{box-sizing: border-box;width: 100%;min-height: 100vh;}
+	.jhyyes{
+		display: flex;
+		justify-content: center;
+		margin-top: 200upx;
+	}
+	.img{
+		width: 258upx;
+		height: 251upx;
+		// margin:  auto;
+		// margin-left: 50%;
+		// transform: translateX(-50%);
+	}
+	
+	
+	.naver{
+		width: 416rpx;height:84rpx;width: 208px;
+		height: 42px;
+		background: linear-gradient(90deg, #A00517, #E93030);
+		border-radius: 21px;display: flex;align-items: center;justify-content: center;font-size: 30rpx;color: #ffffff;margin:150rpx auto 0;
+		}
+
+</style>

+ 106 - 0
qianshancardshang_wx/pages/index/guidedetail.vue

@@ -0,0 +1,106 @@
+<template>
+	<view class="sub" :style="'padding-top:'+padtop+'px'">
+		<navbar :back="false" :title="title" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop" back="true"/>
+		<!-- 头部 使用指南-->
+		<view class="gpd" v-if="type=='use'">
+			<view class="guidtit" v-if="usedetail.useTitle">
+				{{usedetail.useTitle}}
+			</view>
+			<view class="guidtime" v-if="usedetail.createTime">{{usedetail.createTime}}</view>
+			<rich-text v-if="useContent" :nodes="useContent"></rich-text>
+		</view>
+		
+		<!-- 正常福利 -->
+		<view class="gpd" v-else>
+			<view class="guidtit" v-if="detail.welfareTitle">
+				{{detail.welfareTitle}}
+			</view>
+			<view class="guidtime" v-if="detail.createTime">{{detail.createTime}}</view>
+			<rich-text v-if="welfareContent" :nodes="welfareContent"></rich-text>
+		</view>
+	</view>
+</template>
+
+<script>
+	import url from "@/util/url";
+	let {imgDomain} = url
+	export default{
+		data(){
+			return{
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'linear-gradient(90deg, #A00517, #E93030)',
+				string:'',
+				title:'使用指南',
+				usedetail:{},
+				detail:{},
+				type:'use',
+				useContent:'',
+				welfareContent:'',
+			}
+		},
+		onLoad(e) {
+			this.type=e.type
+			if(e.type=='use'){
+				this.title='使用指南'
+				this.getDatauseFn()
+			}else{
+				this.title='优惠福利'
+				this.getDataFn()
+			}
+			
+		},
+		methods:{
+			getTop(e){
+				this.padtop=e
+			},
+			getDatauseFn(){
+				var that=this;
+				that.$http.get("system/use/new").then(res => {
+					if (res.code == 200) {
+						// /profile/upload/2022/07/14/微信截图_20220711151232_20220714145922A003.png
+						if(res.data.useContent){
+							var t='<img style="max-width: 100%;" src="'+imgDomain;
+							var newhtml=res.data.useContent.replace(/\<img src="/gi, t);
+							that.useContent=newhtml;
+						}
+						that.usedetail=res.data
+					} else {
+						uni.showToast({
+							title: res.msg,
+							duration: 1000,
+							icon: 'none'
+						});
+				
+					}
+				})
+			},
+			getDataFn(){
+				var that=this;
+				that.$http.get("system/welfare/new").then(res => {
+					if (res.code == 200) {
+						if(res.data.welfareContent){
+							var t='<img style="max-width: 100%;" src="'+imgDomain;
+							var newhtml=res.data.welfareContent.replace(/\<img src="/gi, t);
+							that.welfareContent=newhtml;
+						}
+						that.detail=res.data
+					} else {
+						uni.showToast({
+							title: res.msg,
+							duration: 1000,
+							icon: 'none'
+						});
+				
+					}
+				})
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.sub{box-sizing: border-box;width: 100%;min-height: 100vh;}
+	.gpd{padding:30rpx 26rpx;}
+	.guidtit{font-size: 30rpx;font-weight: bold;color: #222222;margin-bottom: 32rpx;}
+	.guidtime{font-size: 20rpx;color: #676767;margin-bottom: 60rpx;}
+</style>

+ 142 - 0
qianshancardshang_wx/pages/index/index.vue

@@ -0,0 +1,142 @@
+<template>
+    <view class="home" >
+		<!-- 头部 -->
+		<navbar :back="false" title="首页" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop"/>
+		<image :src="bgimg" class="homebg"></image>
+		<view class="hometop">
+			<swiper class="swiper" circular :indicator-active-color="activecolor" :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
+				:duration="duration">
+				<swiper-item>
+					<image :src="swpimga" class="swiperimg"></image>
+				</swiper-item>
+				<swiper-item>
+					<image :src="swpimga" class="swiperimg"></image>
+				</swiper-item>
+				<swiper-item>
+					<image :src="swpimga" class="swiperimg"></image>
+				</swiper-item>
+			</swiper>
+		</view>
+		
+		<view class="flexcj  mainus">
+			<view class="mainuse flex" @click="getUse">
+				<view class="mainusea">
+					<view class="mainuseb">使用指南</view>
+					<view class="mainusec overtwo">查看使用指南了 解核销操作方法</view>
+				</view>
+				<image :src="znimg" class="mainused flex0"></image>
+			</view>
+			<view class="mainuse flex" @click="getRecord">
+				<view class="mainusea">
+					<view class="mainuseb">核销记录</view>
+					<view class="mainusec overtwo">查看核销记录了 解核销记录信息</view>
+				</view>
+				<image :src="znhimg" class="mainused flex0" style="height: 82rpx;"></image>
+			</view>
+		</view>
+		<view class="hgbox">
+			<view class="flex1">
+				<view class="hgboxtit">核销操作</view>
+				<view class="hgboxtxt">扫描用户出示的二维码即可实现核销</view>
+			</view>
+			<image :src="rimg" class="flex0"></image>
+		</view>
+    <!-- 底部 导航栏  currentPage 当前页面ID -->
+        <tab-bar :currentPage="0"></tab-bar>
+    </view>
+</template>
+
+<script>
+	import url from "@/util/url";
+	let {host} = url
+    //导入组件
+    import tabBar from '@/components/tabbar/tabbar.vue'
+    export default {
+        data() {
+            return {
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'transparent',
+				bgimg:require('@/static/image/bg.png'),
+				swpimga:require("@/static/image/swipera.png"),
+				indicatorDots: true,
+				autoplay: false,
+				activecolor:'#ffffff',
+				interval: 2000,
+				duration: 500,
+				rimg:require("@/static/image/wrimg.png"),
+				znimg: require('static/image/use.png'),
+				znhimg: require('static/image/hicon.png'),
+            };
+        },
+        components:{
+            tabBar
+        },
+        methods: {
+			getTop(e){
+				this.padtop=e;
+			},
+			checkLogin() {
+				var token = uni.getStorageSync('token')
+				// var token = "df057579-73c8-4bdd-8312-f64db8efd699"
+				if (token == undefined || token == '') {
+					uni.reLaunch({
+						url: '/pages/login/login'
+					})
+					return false
+				}
+				return true
+			},
+			getRecord(){
+				// 判断是否能核销
+				this.$http.routePage('/pages/index/record','nav')
+				// if (!this.checkLogin()) {
+				// 	return
+				// }
+				// var businessId=uni.getStorageSync('businessId')
+				// if(businessId&&businessId=='-1'){
+				// 	uni.showToast({
+				// 		title:'暂无核销记录',
+				// 		icon:"none"
+				// 	})
+				// }else{
+				// 	this.$http.routePage('/pages/index/record','nav')
+				// }
+				
+			},
+		},
+		onPageScroll(res) {
+			var scrolltop=res.scrollTop;
+			if(scrolltop>0){
+				this.backgroundColor='linear-gradient(60deg, #6A6BF1, #CB4BFA)'
+			}else{
+				this.backgroundColor='transparent'
+			}
+		 },
+    };
+</script>
+<style scoped lang="scss">
+
+	.home{min-height: 100vh;background: #FFFFFF;overflow: auto;
+		.homebg{width: 100%;height: 376rpx;}
+		.hometop{margin-top:-208rpx;}
+		.swiper{height: 260rpx;margin: 0 34rpx 28rpx;
+			.swiperimg{width: 100%;height: 100%;}
+		}
+		.hgbox{margin:0rpx 32rpx 16rpx;background:linear-gradient(60deg,  #a254da,#606efe);;border-radius: 14rpx;padding: 28rpx 32rpx 24rpx 36rpx;display: flex;align-items: center;justify-content: space-between;min-height: 128rpx;box-sizing: border-box;
+			.hgboxtit{font-size: 34rpx;font-weight: bold;color: #FFFFFF;margin-bottom: 8rpx;}
+			.hgboxtxt{font-size: 24rpx;color: #CBB8E8;}
+			image{width: 16rpx;height: 28rpx;margin-left: 12rpx;}
+		
+		}
+	}
+	.flexcj{display: flex;align-items: center;justify-content: space-between;}
+	.overtwo{word-break: break-all;text-overflow: ellipsis;overflow: hidden;display: -webkit-box;-webkit-line-clamp: 2;-webkit-box-orient: vertical;white-space: normal;}
+	.mainus{
+		margin:0rpx 32rpx 28rpx;
+	}
+	.mainuse{min-height: 170rpx;background: #F8F8F8;border-radius: 6rpx;padding: 30rpx 18rpx 30rpx 26rpx;box-sizing: border-box;width: 328rpx;}
+	.mainuseb{font-size: 22rpx;font-weight: bold;position: relative;margin-bottom: 20rpx;color: #A04CFF;}
+	.mainuseb::after{width: 22rpx;height: 2rpx;background: #E1E1E1;content: "";position: absolute;left: 0;bottom: -15rpx;}
+	.mainusec{font-size: 24rpx;color: #3F3F3F;}
+	.mainused{width: 84rpx;height: 76rpx;margin-top: 16rpx;margin-left: 28rpx;}
+</style>

+ 66 - 0
qianshancardshang_wx/pages/index/indexs.vue

@@ -0,0 +1,66 @@
+<template>
+    <view class="home">
+		<image :src="bgimg" class="homebg"></image>
+		<view  class="homebox" :style="'padding-top:'+padtop+'px'">
+			<!-- 头部 -->
+			<navbar :back="false" title="首页" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop"/>
+			<view class="homeboxa">
+				<div>22</div>
+				<view style="background-color: #000;width: 100%;height: 100vh;">
+</view>
+			
+				
+			</view>
+		</view>
+		
+		
+    <!-- 底部 导航栏  currentPage 当前页面ID -->
+        <tab-bar :currentPage="0"></tab-bar>
+    </view>
+</template>
+
+<script>
+	import url from "@/util/url";
+	let {host} = url
+    //导入组件
+    import tabBar from '@/components/tabbar/tabbar.vue'
+    export default {
+        data() {
+            return {
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'transparent',
+				bgimg:require('@/static/image/bg.png'),
+				
+            };
+        },
+        components:{
+            tabBar
+        },
+        methods: {
+			getTop(e){
+				this.padtop=e;
+			},
+			// 监听滚动
+			
+		},
+		// onPageScroll(res) {
+		// 	var scrolltop=res.scrollTop;
+		// 	if(scrolltop>0){
+		// 		this.backgroundColor='linear-gradient(90deg, #A00517, #E93030)'
+		// 	}else{
+		// 		this.backgroundColor='transparent'
+		// 	}
+		// 	console.log("页面滚动了",res.scrollTop)
+
+		//  },
+    };
+</script>
+<style scoped lang="scss">
+	.home{height: 100vh;background: #f5f5f5;position: relative;
+		.homebg{width: 100%;height: 376rpx;}
+		.homebox{position: absolute;left: 0;right: 0;top: 0;bottom: 0;box-sizing: border-box;max-height: 100vh;display: flex;flex-direction: column;
+			.homeboxa{flex: 1;overflow: scroll;}
+		
+		}
+	}
+</style>

+ 479 - 0
qianshancardshang_wx/pages/index/record.vue

@@ -0,0 +1,479 @@
+<template>
+	<view class="index">
+		<view class="sous_sear">
+			<view class="sous_box" @click="getSearch">
+				<image :src="searimg" class="sous_img"></image>
+				<input  placeholder="请输入姓名或时间查询" class="sous_input" disabled/>
+			</view>
+		</view>
+		<p style="height: 20rpx; background-color: #f2f2f2;"></p>
+		<view class="tab">
+			<!-- //表格 -->
+			<view class="exele">
+
+				<view class="box">
+					<table @change="change">
+						<tr class="tr_one">
+							<th style="width: 120rpx; text-align: center;">姓名</th>
+							<th style="width:230rpx; text-align: center;">手机号码</th>
+							<th style="width: 120rpx; text-align: center;">等级</th>
+							<th style="width: 230rpx; text-align: center;">核销时间</th>
+						</tr>
+						<scroll-view scroll-y class="scroll-view" upper-threshold="40" lower-threshold="40" @scrolltolower="bot_btn" :style="'max-height: calc(100vh - 210rpx - '+padtop+'px);'">
+							<tr v-for="(item,index) in list" :key="index" :class=" [index%2  ==0 ? 'two_tr two_trtwo':'two_tr']" @click="chakn(item)">
+								<td style="width: 120rpx; text-align: center;" >{{item.creditName==null?'暂无信息':item.creditName}}</td>
+								<td style="width: 280rpx; text-align: center;" >{{item.creditPhone==null?'暂无信息':item.creditPhone}}</td>
+								<td style="width: 120rpx; text-align: center;" >{{item.recordLevel==null?'暂无信息':item.recordLevel}}</td>
+								<td style="width: 230rpx; text-align: center;" >{{item.createTime==null?'暂无信息':item.createTime}}</td>
+								<!-- <td style="width: 50rpx; color: #32B16C;" @click.stop="goDetail(item)">查看</td> -->
+							</tr>
+							<div class="shax" v-if="list.length>0">
+								{{wtdt}}
+							</div>
+							<div class="zanwu " v-else><span>暂无数据</span></div>
+						</scroll-view>
+						
+					</table>
+				</view>
+
+			</view>
+		</view>
+
+		
+		<!-- 弹窗 -->
+		<!-- 搜索弹窗 -->
+		<view class='bgbox' v-if="searchflag"></view>
+		<view class="sfixed" v-if="searchflag">
+			<view class="sfixed_tit">筛选查询</view>
+			<image :src="closeimg" class="sfixed_clo" @click="getSearClose"></image>
+			<view class="sfixed_box">		
+				<input placeholder="请输入姓名进行查询" class="sfixed_inp" type="text" value="" v-model="creditName"/>
+				<view class="sfixed_line"></view>
+				<view class="sfixed_flex">
+					<view class="sfixed_a">筛选条件</view>
+					<view class="sfixed_ar" @click="getClearFn">重置</view>
+				</view>
+				<view class="address">
+					<view class="addtita">核销年份</view>
+					<view class="addressa">
+						<picker mode="date" fields="year" :value="recordYear" :start="startDate" :end="endDate" @change="bindDateChange">
+						<view class="addsa" :style="recordYear?'':'color:#aaaaaa'">{{recordYear?recordYear:'选择核销年份'}}</view>
+						
+					</picker>
+					<image :src="rimg" class="addsimg"></image>
+					</view>
+				</view>
+				<view class="address">
+					<view class="addtita">核销日期</view>
+					<view class="addressa">
+						<picker mode="date" :value="createTime" @change="bindDateChangeTime">
+						<view class="addsa" :style="createTime?'':'color:#aaaaaa'">{{createTime?createTime:'选择核销日期'}}</view>
+						
+					</picker>
+					<image :src="rimg" class="addsimg"></image>
+					</view>
+					<!-- <view class="addressa">
+						<view class="addsa" style="color:#AAAAAA;">选择核销日期</view>
+						<image :src="rimg" class="addsimg"></image>
+					</view> -->
+				</view>
+				<!-- <view class="address">
+					<view class="addtita">核销等级</view>
+					<view class="addressa">
+						<picker  :value="levelval" :range="levellist" range-key='label' @change="bindDateChangeLevel">
+							<view class="addsa" :style="recordLevel?'':'color:#aaaaaa'">{{recordLevel?recordLevel:'选择核销等级'}}</view>
+							
+						</picker> -->
+						<!-- <view class="addsa" style="color:#AAAAAA;">选择核销等级</view> -->
+					<!-- 	<image :src="rimg" class="addsimg"></image>
+					</view>
+				</view> -->
+			</view>
+			<view class="sfixed_btn" @click="Seach">查询</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			 // const currentDate = this.getDate({
+			 //            format: true
+			 //        })
+			return {
+				searimg:require("@/static/image/search.png"),
+				closeimg:require("@/static/image/del.png"),
+				searchflag:false,
+				rimg:require('@/static/image/rimg.png'),
+				//列表数据
+				list: [],
+				params: { //上拉刷新
+					pageNum: 1,
+					pageSize:20,
+					recordYear:"",
+					createTime:'',
+					recordLevel:'',
+					businessId:'',
+				},
+				haveMore: true,
+				wtdt: '上拉加载更多',
+				listShow: true, //判断是否有数据 true 有
+
+				creditName:null,//姓名
+				recordYear:'',//核销年份
+				createTime:'',//核销日期
+				recordLevel:"",//核销等级
+				levellist: [],//核销等级
+				levelval:0,
+				businessId:'',
+			};
+		},
+		onShow() {
+			return
+			let type = uni.getStorageSync('token')
+			if (!type) {
+				uni.reLaunch({
+					url: '/pages/login/login'
+				})
+			}
+		},
+		 // computed: {
+		 //        startDate() {
+		 //            return this.getDate('start');
+		 //        },
+		 //        endDate() {
+		 //            return this.getDate('end');
+		 //        }
+		 //    },
+		onLoad(option) {
+			uni.$on('refreshData',(data) => {
+
+				this.params.pageNum = 1;
+				this.list = []
+				// 修改 获取列表的
+				// 获取统计
+				this.lists(this.params)
+			})
+			this.businessId = uni.getStorageSync('businessId');
+			this.params.businessId=uni.getStorageSync('businessId');
+			 // this.getTownsFn();
+			 this.params.pageNum = 1
+			 this.list = []
+			 // 修改 获取列表的
+			 // this.lists(this.params)
+			 // 获取字典值
+			 // this.getStatelist()
+		},
+		beforeDestroy() {
+			uni.$off("refreshData")
+		},
+		created() {
+
+		},
+		methods: {
+			bindDateChange: function(e) {
+			    this.recordYear = e.detail.value
+			},
+			bindDateChangeTime(e){
+				this.createTime = e.detail.value
+				if(this.recordYear){
+					var d=e.detail.value.split('-')
+					this.recordYear=d[0]
+				}
+			},
+			bindDateChangeLevel(e){
+				var idx=e.detail.value
+				this.levelval = idx;
+				this.recordLevel=this.levellist[idx].value
+			},
+			// getDate(type) {
+			//             const date = new Date();
+			//             let year = date.getFullYear();
+			//             let month = date.getMonth() + 1;
+			//             let day = date.getDate();
+			
+			//             if (type === 'start') {
+			//                 year = year - 60;
+			//             } else if (type === 'end') {
+			//                 year = year + 2;
+			//             }
+			//             month = month > 9 ? month : '0' + month;
+			//             day = day > 9 ? day : '0' + day;
+			//             // return `${year}-${month}-${day}`;
+			//             return `${year}`;
+			//         },
+
+			
+			// 字典值
+			getStatelist(){
+				var that=this;
+				// 旧字典值
+				this.$http.get("system/dict/data/type/credit_level").then(res => {
+					if (res.code == 200) {
+						that.levellist = res.data.map(v => {
+							return {
+								label: v.dictLabel,
+								value: v.dictValue
+							}
+						})
+					} else {
+						uni.showToast({
+							title: res.msg,
+							duration: 1000,
+							icon: 'none'
+						});
+				
+					}
+				})
+			},
+			getSearch(){
+				this.recordYear=this.params.recordYear||"";
+				this.createTime=this.params.createTime||"";
+				this.recordLevel=this.params.recordLevel||"";
+				this.creditName=this.params.creditName||"";
+				this.searchflag=true;
+			},
+			getSearClose(){
+				this.searchflag=false
+			},
+			getClose(){
+				this.houseflag=false;
+				this.delfalg=false;
+			},
+			getClearFn(){
+				this.recordYear='';
+				this.createTime='';
+				this.recordLevel='';
+				this.creditName='';
+			},
+			lists(params) {
+				this.$http.get("system/record/list", params).then(res => {
+					//停止下拉加载
+					uni.hideNavigationBarLoading()
+					uni.stopPullDownRefresh()
+					if (res.code == 200) {
+						if (res.rows.length < params.pageSize) {
+							this.listShow = false
+							this.haveMore = false
+							this.wtdt='到底了~';
+						} else {
+							var num=parseInt(res.rows.length)+parseInt(params.pageSize)*parseInt(params.pageNum-1)
+							if(num<res.total){
+								this.listShow = true
+								this.haveMore = true
+								this.wtdt='上拉加载更多'
+							}else{
+								this.listShow = false
+								this.haveMore = false
+								this.wtdt='到底了~';
+							}	
+						}
+						if(params.pageNum==1){
+							this.list = res.rows
+						}else{
+							this.list = this.list.concat(res.rows) 
+						}
+					} else {
+						uni.showToast({
+							title: res.msg,
+							duration: 1000,
+							icon: 'none'
+						});
+				
+				
+					}
+				})
+			},
+			//刷新
+			bot_btn() {
+				if (this.haveMore) {
+					this.params.pageNum++
+					this.lists(this.params)
+				}
+			},
+
+			//搜索
+			Seach() {
+				this.list = [];
+				this.searchflag=false;
+				this.params={
+					pageNum:1,
+					pageSize: 20,
+					recordYear:this.recordYear,
+					createTime:this.createTime,
+					recordLevel:this.recordLevel,
+					creditName:this.creditName,
+					businessId:this.businessId,
+				}
+				this.list = [];
+				this.lists(this.params)
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	
+	// 新的
+	.sous_sear{
+		padding: 18rpx 34rpx;background: #FFFFFF;
+		.sous_box{width: 100%;height: 72rpx;
+background: #F2F2F2;
+border-radius: 36rpx;display: flex;align-items: center;padding: 0 34rpx;box-sizing: border-box;
+			.sous_img{width: 32rpx;height: 34rpx;margin-right: 18rpx;flex: 0 0 auto;}
+			.sous_input{font-size: 30rpx;color: #AAAAAA;flex: 1;}
+		}
+	}
+	//tab
+	.tab {
+		.tabs {
+			.one_tab {
+				color: #1678FF !important;
+	
+			}
+	
+			.one_tabqie {
+				border-bottom: 8rpx solid #1678FF;
+	
+			}
+		}
+	}
+	
+	// 搜索条件width: 562rpx;
+	.bgbox{position: fixed;left: 0;right: 0;top: 0;bottom: 0;z-index: 3;
+	background: rgba(0,0,0,0.5);}
+		.sfixed{min-height: 768rpx;background: #FFFFFF;border-radius: 14rpx;padding: 40rpx 34rpx;box-sizing: border-box;position: fixed;left: 60rpx;right: 60rpx;top: 50%;transform: translateY(-50%);
+		z-index: 100;max-height: calc(100vh - 280rpx);overflow-y: auto;
+			.sfixed_tit{font-size: 28rpx;font-weight: bold;color: #343434;line-height: 44rpx;text-align: center;}
+			.sfixed_clo{width: 34rpx;height: 34rpx;position: absolute;right: 34rpx;top: 44rpx;}
+			.sfixed_box{
+				padding-top: 20rpx;
+				.sfixed_inp{width: 100%;height: 76rpx;background:#F2F2F2;padding: 0 34rpx;box-sizing: border-box;font-size: 28rpx;color: #333333;margin-top: 30rpx;}
+				.sfixed_line{width: 62rpx;height: 6rpx;background: #A04CFF;margin: 38rpx auto 32rpx;}
+				.sfixed_flex{display: flex;align-items: center;justify-content: space-between;
+					.sfixed_a{font-size: 26rpx;font-weight: bold;color: #666666;}
+					.sfixed_ar{font-size: 26rpx;font-weight: bold;color: #DF0024;}
+				}
+			}
+			.sfixed_btn{width: 100%;height: 76rpx;background: #A04CFF;
+border-radius: 38rpx;font-size: 28rpx;font-weight: bold;
+	color: #FFFFFF;text-align: center;line-height: 76rpx;margin-top: 62rpx;}
+			
+		}
+	.address{
+			display: flex;align-items: center;
+			margin-top: 38rpx;
+			.addtita{flex: 0 0 auto;font-size: 28rpx;font-weight: bold;
+	color: #343434;}
+			.addressa{
+				flex: 1;
+				display: flex;align-items: center;justify-content: flex-end;
+				overflow: hidden;
+				.addsa{font-size: 26rpx;color: #333333;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;
+				flex: 1;text-align: right;
+				}
+				.addsimg{width: 16rpx;height: 24rpx;margin-left: 10rpx;flex: 0 0 auto;}
+
+			}
+			
+			.addclear{color: #EA2929;font-size: 26rpx;flex: 0 0 auto;height: 60rpx;line-height: 60rpx;width: 128rpx;text-align:center}
+		}
+	//暂无数据
+	.zanwu {
+		text-align: center;
+		padding-top: 20rpx;
+	
+		span {
+			font-size: 24rpx;
+		}
+	}
+	.shax {
+		// height: 83rpx;
+		font-size: 25rpx;
+		color: #666;
+		text-align: center;
+	}
+	// .scroll-view {
+	// 	max-height: calc(100vh - 401rpx);
+	// }
+	// 新的
+	
+	.index {
+		// padding-top: 33rpx;
+		max-height: 100vh;
+		box-sizing: border-box;
+		//表格
+		.exele {
+			.box {
+				table{border-spacing: 0rpx;}
+				.tr_one {
+					display: flex;
+					// padding: 0 20rpx;
+					box-sizing: border-box;
+					justify-content: space-between;
+					th {
+						font-size: 24rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #000000;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+						line-height: 78rpx;
+						height: 78rpx;
+					}
+				}
+
+				.two_tr {
+					display: flex;
+					// padding: 0 20rpx;
+					box-sizing: border-box;
+					justify-content: space-between;
+
+					td {
+						font-size: 24rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #343434;
+						
+						min-height: 82rpx;
+						padding: 20rpx 0;
+						box-sizing: border-box;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+
+					}
+
+					// .tdse {
+					// 	color: #E60012 !important;
+					// }
+					// .apply_span_xl{
+					// 	color: #32B16C !important;
+					// }
+					// .apply_span_xltwo{
+					// 	color: #ffa200 !important;
+					// }
+					// .apply_span_xlfive{
+					// 	color: #4c4b4b !important;
+					// }
+					// .apply_span_xlthreo{
+					// 	color: #f00404 !important;
+					// }
+					// .apply_span_xlforu{
+					// 	color: #aaaaaa !important;
+					// }
+					// .coiu {
+					// 	color: #EC1717;
+					// }
+				}
+
+				.two_trtwo {
+					background-color: #F2F2F2;
+				}
+			}
+
+		}
+	}
+</style>
+

+ 174 - 0
qianshancardshang_wx/pages/index/scan.vue

@@ -0,0 +1,174 @@
+<template>
+	<view class="index" :style="'padding-top:'+padtop+'px'">
+		<!-- 头部 -->
+		<navbar :back="false" title="扫码登录" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop" back="true"/>
+		<!-- <view class="naver" @click="smit">
+			扫码登录
+		</view> -->
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				//潜山
+				qians:'',
+				uehg:1,
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'linear-gradient(90deg, #A00517, #E93030)',
+			};
+		},
+		onLoad() {
+			// this.uehg = 1
+			this.scanAction()
+		},
+		onShow() {
+			// this.uehg = 1
+			// this.scanAction()
+		},
+		onHide() {
+			// this.uehg = 2
+		},
+		methods:{
+			getTop(e){
+				this.padtop=e
+			},
+			// smit(){
+			// 	this.scanAction()
+			// },
+			   //扫码功能
+			scanAction() {
+				// if(this.uehg == 1){
+					const app = getApp();
+					wx.scanCode({
+					  onlyFromCamera: true,
+					  scanType: ['qrCode', 'barCode'],
+					     //结果处理
+					  success: res => this.dealScanCode(res.result),
+					  fail: (e) => {
+					      if (e && e.errMsg && e.errMsg.indexOf('scanCode:fail cancel') != -1) {
+					          return;
+					      }
+					      wx.showToast({ title: '扫码失败', icon: 'none', })
+					  }
+					});
+				// }else{
+				// 	return
+				// }
+				
+			},
+			 // 判断连接
+			 dealScanCode(result) {
+				 const app = getApp();
+				 console.log(result,123)
+			   let str = result
+			   // https://qsfy.qs163.cn/
+			   // this.qians = str.includes('https://qsfy.qs163.cn/prod-api/auth/scanCode')
+			  
+			   this.qians = str.includes('https://qsdj.qs163.cn/prod-api/scanCode/confirm')
+			   // console.log(str.includes('https://qsfy.qs163.cn/prod-api/auth/scanCode'))
+			   // 潜山
+			   // this.qians = str.includes('https://qsxyakm.qs163.cn/prod-api/applet/scanQr')
+			   // /、岳西 https://yxxy.qs163.cn   https://qsfy.qs163.cn
+			   
+			   if(this.qians){
+				   console.log(123098)
+				   // wx.navigateTo({
+				   //   url: '/pages/addvacfrom/wufa?code=' + this.qians
+				   // })
+				   uni.request({
+				   	url:  result,
+				   	data:{
+				   		// pid:this.companyId
+				   	},
+				    success: function(res) {
+				    	console.log(res.data)
+				   		if(res.data.code==200){
+				   			wx.navigateTo({
+				   			  url: '/pages/index/wufa?code=' + res.data.data
+				   			})
+				   			// console.log(3456)
+				   		}else {
+				   			wx.navigateBack({
+				   			  delta: 1 //想要返回的层级
+				   			})
+				   			 wx.showToast({ title: res.data.msg, icon: 'none', duration: 2000})
+				   		}
+				    	
+				    },
+				   });
+			   }else{ 
+				  wx.navigateBack({
+				    delta: 1 //想要返回的层级
+				  })
+				   uni.showToast({ title: '请扫描正确的二维码', icon: 'none', duration: 3000}) 
+				   
+			   }
+			   
+			   // let index = str.indexOf("/");
+			   // console.log(index)
+			   // let id = str.substring('/');
+			   // console.log(id)
+			   // this.bindAccount(result)
+			   // app.log("scan:" + result)
+			   // if (!result || !result.lastIndexOf) {
+			   //     wx.showToast({ title: '二维码错误', icon: 'none', duration: 2000 })
+			   //    return;
+			   //  }
+			
+			    // 具体的连接处理
+			      // if (result.lastIndexOf('synthetical=') != -1) {
+			      //  bindAccount(result);
+			      //  return;
+			      // }
+			  
+			 //无效的二维码
+			  // wx.showToast({ title: '二维码错误', icon: 'none', duration: 2000 })
+			 },
+			  //处理连接
+			     bindAccount(param){
+			     // 截取字符串
+			     let groupNum = getUrlParam(param, 'chatID')
+			    let groupType = getUrlParam(param, 'type');
+			    },
+			 
+			    // 提供外部的接口
+			     // module.exports = {
+			     //  scanAction,
+			     //  dealScanCode,
+			     //  getUrlParam
+			     // }
+				  // 正则表达式截取字符串的方法
+				    getUrlParam(url, name) {
+				        // 正则筛选地址栏
+				        let reg = new RegExp("(^|&|/?|//)" + name + "=([^&]*)(&|$)");
+				       // 匹配目标参数
+				      let result = url.substr(1).match(reg);
+					  console.log(result)
+				      //返回参数值
+				       // return result ? decodeURIComponent(result[2]) : null;
+				   }
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	.naver{
+		width: 85%;
+		height: 90upx;
+		font-size: 31upx;
+		font-family: PingFang SC;
+		font-weight: 400;
+		color: #FFFFFF;
+		line-height: 90upx;	
+		background-color: #1678FF;
+		margin-left: 50%;
+		transform: translateX(-50%);
+		border-radius: 14upx;
+		text-align: center;
+		margin-top: 250upx;
+		}
+
+</style>

+ 52 - 0
qianshancardshang_wx/pages/index/success.vue

@@ -0,0 +1,52 @@
+<template>
+	<view class="sub">
+		<!-- 头部 -->
+		<view class="pt28">
+			<image :src="subimg" class="sub_img"></image>
+			<view class="sub_tit">{{codetit}}</view>
+			<!-- <view class="sub_txt">当前二维码已核销 可点击按钮继续核销</view> -->
+			<view class="flexc sub_btn">
+				<view class="sub_home sub_btns" @click="getHome">返回首页</view>
+				<view class="sub_back sub_btns" @click="getCodeFn">继续核销</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				subimg:require("@/static/image/submit.png"),
+				codetit:"核销成功"
+			}
+		},
+		methods:{
+			getCodeFn(){
+				var that=this;
+				uni.redirectTo({
+					url:'/pages/code/code'
+				})
+			},
+			getHome(){
+				uni.switchTab({
+					url:"/pages/index/index"
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.sub{box-sizing: border-box;width: 100%;min-height: 100vh;padding: 0 78rpx;}
+	.sub_img{width: 224rpx;height: 256rpx;display: block;margin:0 auto 32rpx;}
+	.sub_tit{font-size: 30rpx;font-weight: bold;
+color: #000000;text-align: center;}
+.sub_txt{font-size: 26rpx;color: #666666;text-align: center;width: 260rpx;margin: 20rpx auto 0rpx;}
+.sub_btn{display: flex;align-items: center;justify-content: space-between;margin-top: 178rpx;}
+.sub_btns{width: 262rpx;height:84rpx;box-sizing: border-box;display: flex;align-items: center;justify-content: center;font-size: 30rpx;border-radius: 42rpx;}
+	.sub_home{color: #666666;border: 2rpx solid #666666;}
+	.sub_back{background: #A04CFF;color: #ffffff;}
+	.pt28{padding-top: 94rpx;}
+	
+</style>

+ 192 - 0
qianshancardshang_wx/pages/index/wufa.vue

@@ -0,0 +1,192 @@
+<template>
+	<view class="index" :style="'padding-top:'+padtop+'px'">
+		<!-- 头部 -->
+		<navbar :back="false" title="扫码登录" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"
+			:custom='true' @getTop="getTop" back="true" />
+		<view class="header">
+			<img :src="subimg" alt="" class="img">
+			<span class="sapn">扫码成功</span>
+			<view class="sub_txt">请确认授权登录</view>
+		</view>
+		<view class="naver" @click="smit">
+			授权登录
+		</view>
+	</view>
+</template>
+
+<script>
+	import url from "@/util/url";
+	let {
+		host
+	} = url
+	export default {
+		data() {
+			return {
+				type: 0, //判断是否是登录页面跳转的
+				telephone: '',
+				subimg: require("@/static/images/submit.png"),
+				padtop: this.$http._GET.customBarH || 0,
+				backgroundColor: 'linear-gradient(90deg, #A00517, #E93030)',
+			};
+		},
+		onLoad(e) {
+			console.log(e)
+			this.type = e.code
+			// this.telephone = 15855353281
+			this.telephone = uni.getStorageSync('phone')
+		},
+		onUnload() {
+			uni.switchTab({
+				url: '/pages/tab/about_we',
+			})
+		},
+
+		methods: {
+			getTop(e) {
+				this.padtop = e
+			},
+			smit() {
+				var _this = this
+				let object = {
+					"uuid": _this.type,
+					"phone": _this.telephone,
+					// cardType:'ID_CARD',
+				};
+				uni.request({
+					url: host + '/scanCode/phoneScanLogin', 
+					method: 'POST',
+					data: JSON.stringify(object),
+					header: {
+						'Content-Type': 'application/json',
+					},
+					success: function(res) {
+						console.log(res)
+						if (res.data.code == "200") {
+							uni.showToast({
+								title: '登录成功',
+								duration: 1000,
+								icon: 'none'
+							});
+							setTimeout(() => {
+								uni.navigateBack({
+									delta: 2
+								})
+							}, 1000)
+						} else {
+							uni.showToast({
+								title: res.msg,
+								duration: 1000,
+								icon: 'none'
+							});
+						}
+					},
+					fail: function(error) {
+						uni.showToast({
+							title: error.msg,
+							duration: 1000,
+							icon: 'none'
+						});
+					}
+				})
+				// console.log(object)
+				// this.$http.post("scanCode/phoneScanLogin",JSON.stringify(object),true).then(res => {
+				// 	console.log(res)
+				// 	if(res.code=="200"){
+				// 		uni.showToast({
+				// 			title: '登录成功',
+				// 			duration: 1000,
+				// 			icon: 'none'
+				// 		});
+				// 		setTimeout(() => {
+				// 			uni.navigateBack({
+				// 				delta:2
+				// 			})
+				// 		},1000)
+				// 	}else {
+				// 		uni.showToast({
+				// 			title: res.msg,
+				// 			duration: 1000,
+				// 			icon: 'none'
+				// 		});
+				// 	}
+				// })
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.index {
+		height: 100vh;
+
+		// background-color: #dbebf8;
+		.header {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			padding-top: 132upx;
+			box-sizing: border-box;
+
+			.img {
+				width: 238rpx;
+				height: 256rpx;
+				display: block;
+				margin: 0 auto 56rpx;
+				// width: 400upx;
+			}
+
+			span {
+				font-size: 35upx;
+				color: #666;
+				width: 414upx;
+				text-align: center;
+				line-height: 50upx;
+
+			}
+
+			.sapn {
+				font-size: 42upx;
+				color: #333;
+				// width: 414upx;
+				font-weight: 700;
+				text-align: center;
+				line-height: 50upx;
+				margin-bottom: 15upx;
+
+			}
+
+			.sapnteo {
+				font-size: 28upx;
+				color: #666;
+				// width: 414upx;
+				// font-weight: 700;
+				text-align: center;
+				line-height: 50upx;
+			}
+		}
+
+	}
+
+	.sub_txt {
+		font-size: 26rpx;
+		color: #666666;
+		text-align: center;
+		width: 260rpx;
+		margin: 0 auto 90rpx;
+	}
+
+	.naver {
+		width: 416rpx;
+		height: 84rpx;
+		width: 416rpx;
+		height: 84rpx;
+		background: linear-gradient(90deg, #A00517, #E93030);
+		border-radius: 42rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: 30rpx;
+		color: #ffffff;
+		margin: 0 auto 0;
+	}
+</style>

+ 334 - 0
qianshancardshang_wx/pages/login/login.vue

@@ -0,0 +1,334 @@
+<template>
+	<view class="login" >
+		<image :src="bgimg" class="loginbg"></image>
+		<view :style="'padding-top:'+padtop+'px'">
+			<navbar :back="false" :bgcolor="backgroundColor" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop" />
+			
+			<view class="login_tit">
+				<view class="login_tita">登录</view>
+				<view class="login_txt">欢迎使用潜商服务卡商家端~</view>
+				
+			</view>
+			
+			<view style="padding-bottom: 56rpx;">
+				<view class="login_i">
+					<image :src="zimg"></image>
+					<input  placeholder="请输入账号" v-model="formData.username"/>
+				</view>
+				<view class="login_i">
+					<image :src="mimg" style="width: 30rpx;height: 38rpx;margin-right: 26rpx;"></image>
+					<input  placeholder="请输入密码" type="password" v-model="formData.password"/>
+				</view>
+			</view>
+			<view class="login_btn btn1" @click="passwordlogin">账号登录</view>
+			<button  type="primary" class="login_btn btn2" open-type="getUserInfo" @getuserinfo="getuserinfo">
+				<text class="btn-txt">快速登录</text>
+			</button>
+
+			<!-- 显示弹窗 -->
+			<div class="box_hei" @click="btn" v-if="box_status">
+				<div  @click.stop="btns" class="hei_box">
+					<div class="box_top">
+						<div class="box_title">
+							<div>
+								潜山信惠 申请使用
+							</div>
+						</div>
+						<div class="box_nameq">你的手机号码</div>
+					</div>
+					<!-- <div class="boxs"></div> -->
+					<div class="box_btns">
+						<div @click="btn" class="box_btn box_btn1">拒绝</div>
+						<button class="box_btn box_btn2" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">允许</button>
+					</div>
+				</div>
+			</div>
+		</view>
+		
+		
+	</view>
+</template>
+
+<script>
+	export default{
+		data(){
+			return{
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor:'transparent',
+				zimg:require("@/static/image/loginz.png"),
+				mimg:require("@/static/image/loginm.png"),
+				bgimg:require("@/static/image/lbg.png"),
+				formData: {
+					username: '',
+					password: ''
+				},
+				box_status: false,
+				userId:''
+			}
+		},
+		onLoad() {
+			uni.clearStorage()
+		},
+		methods:{
+			getTop(e){
+				this.padtop=e
+			},
+			btns() {
+				
+			},
+			btn() {
+				this.box_status = false
+			},
+			// 手机号登录
+			passwordlogin() {
+				if(!this.formData.username){
+					uni.showToast({
+						title: "请输入账号",
+						duration: 1000,
+						icon: 'none'
+					});
+					return
+				}
+				if(!this.formData.password){
+					uni.showToast({
+						title: "请输入密码",
+						duration: 1000,
+						icon: 'none'
+					});
+					return
+				}
+				// this.$http.post('boman-auth/login', this.formData).then(res=>{
+				this.$http.post('loginApp', this.formData).then(res=>{
+					if(res.code == 200 ) {
+						this.userId=res.userId;
+						uni.setStorageSync('token', res.token)
+						uni.setStorageSync('userId', res.userId)
+						uni.setStorageSync('businessId',res.settledMerchants.businessId)
+						uni.setStorageSync('phone', res.settledMerchants.businessPhone)
+						 setTimeout(function(){
+						 	uni.switchTab({
+						 	    url: '/pages/index/index',
+						 	});
+						 },1000)
+						// this.getUserInfoes();
+						// uni.switchTab({
+						//     url: '/pages/index/index',
+						// });
+					} else{
+						uni.showToast({
+							title: res.msg,
+							duration: 1000,
+							icon: 'none'
+						});
+					}
+				})
+			},
+			// 快捷登录
+			async getPhoneNumber(e){
+				console.log(e)
+				const {iv,encryptedData} = e.detail
+				console.log(iv,encryptedData)
+				let res = await this.$http.uniApi({events: uni.login})
+						if(res.code) {
+							// console.log(res,9876)
+							this.$http.post("applet/login",{
+								iv: iv,
+								encryptedData: encryptedData,
+								code : res.code,
+								// mode:this.mode,
+								// userInfo:this.userInfo
+							}).then(red => {
+								// console.log(red)
+								if(red.code == 200){
+									// console.log(JSON.parse(red.data).phoneNumber,9999)
+									this.box_status = false;
+									this.userId=red.data.userId;
+									uni.setStorageSync('token', red.data.access_token)
+									uni.setStorageSync('userId', red.data.userId)
+									uni.setStorageSync('businessId',red.data.settledMerchants.businessId)
+									uni.setStorageSync('phone', red.data.settledMerchants.businessPhone)
+									// this.getUserInfoes();
+									uni.switchTab({
+									    url: '/pages/index/index',
+									});
+									// uni.navigateTo({
+									// 	url: '/pages/index/index'
+									// })
+								}else{
+									uni.showToast({
+										title: red.msg,
+										duration: 1000,
+										icon: 'none'
+									});
+								}
+							})
+						}
+			},
+			// 个人信息
+			getUserInfoes() {
+				this.$http.get('system/user/'+this.userId).then(res=>{
+					// console.log(JSON.stringify(res))
+					if(res.code == 200 ) {
+						uni.setStorageSync('phone', res.data.phonenumber)   
+						 setTimeout(function(){
+						 	uni.switchTab({
+						 	    url: '/pages/index/index',
+						 	});
+						 },1000)
+					} 
+				})
+			},
+			async getuserinfo(e) {
+				console.log(e,9999)
+				const {nickName, avatarUrl, ...userInfo} = e.detail.userInfo
+				// uni.navigateTo({
+				// 	url: `login_phone?nickName=${nickName}&avatarUrl=${avatarUrl}`
+				// })
+				try{
+					let res = await this.$http.uniApi({events: uni.login})
+					if(res.code) {
+						// console.log(res)
+						// console.log(res.code)
+						// console.log(nickName)
+						// console.log(avatarUrl)
+						this.avatarUrl = avatarUrl
+						this.nickName = nickName
+						this.code = res.code
+						this.userInfo =e.detail.userInfo
+						uni.setStorageSync('userInfo', e.detail.userInfo)
+						// this.bindUserinfo({code: res.code, nickName, avatarUrl})
+						this.box_status=true
+					}
+				} catch(e){
+					//TODO handle the exception
+				}
+			},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.loginbg{width: 342rpx;height:  382rpx;position: absolute;right: 0;top: 0;z-index: -1;}
+	.login{height: 100vh; width: 100%;box-sizing: border-box;padding: 0 74rpx;position: relative;}
+	.login_tit{padding-top: 100rpx;margin-bottom: 150rpx;
+		.login_tita{font-size: 48rpx;font-weight: bold;color: #2F2F2F;}
+		.login_txt{font-size: 30rpx;color: #666666;font-weight: 400;margin-top: 12rpx;}
+	}
+	.login_i{
+		display: flex;align-items: center;height:90rpx;padding: 0 32rpx;border-radius: 48rpx;margin-bottom: 28rpx;background: rgba(244, 244, 244, .6);
+		image{
+			width: 36rpx;height: 34rpx;margin-right: 20rpx;
+		}
+		input{
+			font-size: 28rpx;color: #000000;
+		}
+	}
+	.login_btn{width: 100%;height: 90rpx;display: flex;align-items: center;justify-content: center;font-size: 30rpx;border-radius: 48rpx;
+	&.btn1{background: #A04CFF;color: #ffffff;margin-bottom: 28rpx;}
+	&.btn2{border: 1px solid #A04CFF;color: #A04CFF;background: #fff;}
+	}
+	
+	// 快捷登录弹窗
+	.box_hei{
+		width: 100%;
+		height: 100%;
+		background: rgba(0,0,0,.8);
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 3;
+		.hei_box{
+			background: #fff;
+			border-radius:22upx 22upx 0 0;
+			height: 440upx;
+			padding: 52upx 28upx 104upx;
+			position: absolute;
+			bottom:0;
+			width: 100%;
+			box-sizing: border-box;
+			.box_top{
+				padding: 0 18upx 62upx;
+				.box_title{
+					display: flex;
+					justify-content: space-between;
+					font-size: 30upx;
+					margin-bottom: 30upx;
+					div{
+						display: flex;
+						align-items: center;
+						color: #333333;
+					}
+					.img{
+						margin-right: 14upx;
+						width: 180upx;
+						height: 48upx;
+					}
+					.imgs{
+						width: 40upx;
+						height: 40upx;
+					}
+				}
+				.box_nameq{
+					color: #333333;
+					font-size: 44upx;
+					font-weight: bold;
+				}
+			}
+			.box_phone{
+				height: 106upx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				font-size: 28upx;
+				color: #A6A6A6;
+				border-bottom: 1upx solid #EBEBEB;
+				border-top: 1upx solid #EBEBEB;
+				div{
+					display: flex;
+					align-items: center;
+				}
+				.img{
+					width: 26upx;
+					height: 22upx;
+				}
+				span{
+					color: #333333;
+					font-size: 32upx;
+					padding-right: 18upx;
+					font-weight: bold;
+				}
+			}
+			.box_qita{
+				height: 106upx;
+				font-size: 28upx;
+				color: #7CA4FC;
+				line-height: 106upx;
+			}
+			.boxs{
+				height: 50upx;
+			}
+			.box_btns{
+				margin-top: 10upx;
+				display: flex;
+				justify-content: space-between;
+				.box_btn{
+					width: 324upx;
+					height: 82upx;
+					font-size: 32upx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					border-radius: 4upx;
+				}
+				.box_btn1{
+					background: #F3F3F3;
+					color: #33B925;
+				}
+				.box_btn2{
+					background: #37962B;
+					color: #FFFFFF;
+				}
+			}
+		}
+	}
+</style>

+ 136 - 0
qianshancardshang_wx/pages/login/updatpaw.vue

@@ -0,0 +1,136 @@
+<template>
+	<view class="updat" :style="'padding-top:'+padtop+'px'">
+		<!-- 头部 -->
+		<navbar :back="false" title="修改密码" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"
+			:custom='true' @getTop="getTop" back="true" />
+		<view>
+			<view class="updatb">
+				<view class="updatba">新密码</view>
+				<input placeholder="请输入新密码" v-model="newpassword" class="updatbi" />
+			</view>
+			<view class="updatb">
+				<view class="updatba">再次确认密码</view>
+				<input placeholder="请再次输入新密码" v-model="password" class="updatbi" />
+			</view>
+		</view>
+		<view class="login_btn btn1" @click="getSureFn">确认修改</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				padtop: this.$http._GET.customBarH||0,
+				backgroundColor: 'linear-gradient(60deg, #6A6BF1, #CB4BFA)',
+				newpassword: '',
+				password: '',
+			}
+		},
+		onLoad(e) {
+			this.userName=e.userName
+		},
+		methods: {
+			getTop(e) {
+				this.padtop = e
+			},
+			getSureFn() {
+				if(!this.newpassword||!this.password){
+					uni.showToast({
+						title:"请输入完整",
+						icon:'none'
+					})
+					return
+				}
+				if(this.newpassword.length<6){
+					uni.showToast({
+						title: '请输入至少六位数密码',
+						icon: 'none'
+					})
+					return
+				}
+				if (this.newpassword != this.password) {
+					uni.showToast({
+						title: '两次密码输入不同,请修改',
+						icon: 'none'
+					})
+					return
+				}
+				var userId = uni.getStorageSync('userId')
+				var params={
+					userId:userId,
+					password:this.password,
+					userName:this.userName
+				}
+				this.$http.post('system/user/updatePwd',params).then(res=>{
+					if(res.code == 200 ) {
+						uni.showToast({
+							title:"修改成功,请重新登录",
+							duration: 1000,
+							icon: 'none'
+						})
+						setTimeout(function(){
+							uni.removeStorageSync("userId")
+							uni.removeStorageSync("token")
+							uni.reLaunch({
+								url:"/pages/login/login"
+							})
+						},1000)
+						
+					}else{
+						uni.showToast({
+							title: res.msg,
+							duration: 1000,
+							icon: 'none'
+						});
+					} 
+				})
+			}
+		}
+	}
+</script>
+
+<style scoped>
+	.updat {
+		padding: 0 32rpx;
+		min-height: 100vh;
+		box-sizing: border-box;
+		background: #ffffff;
+	}
+
+	.updatb {
+		min-height: 100rpx;
+		display: flex;
+		align-items: center;
+		padding: 18rpx 0;
+		border-bottom: 2rpx solid #f5f5f5;
+		box-sizing: border-box;
+	}
+
+	.updatba {
+		font-size: 28rpx;
+		font-weight: bold;
+		color: #000000;
+		flex: 0 0 auto;
+	}
+
+	.updatbi {
+		flex: 1;
+		text-align: right;
+		font-size: 28rpx;
+		color: #000;
+	}
+
+	.login_btn {
+		width: 100%;
+		height: 90rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: 30rpx;
+		border-radius: 48rpx;
+		background: #A04CFF;
+		color: #ffffff;
+		margin-top: 120rpx;
+	}
+</style>

+ 119 - 0
qianshancardshang_wx/pages/mine/mine.vue

@@ -0,0 +1,119 @@
+<template>
+    <view class="mine">
+		<!-- 头部 -->
+		<navbar :back="false" title="我的" :bgcolor="backgroundColor" color="#fff" fixed zIndex="1010" :center="true"	:custom='true' @getTop="getTop"/>
+		<image :src="bgimg" class="minebg"></image>
+		<view class="minebox">
+			<view class="minetop flexc">
+				<image :src="headimg" class="minetopa flex0"></image>
+				<view class="flex1">
+					<view class="minetopt">蒋小华</view>
+					<view class="minetoptx">
+						<image :src="mtitimg"></image>
+						天柱山风景区
+					</view>
+				</view>
+				<!-- <view class="minetoptr flex0">
+						我的卡片<image :src="rimg"></image>
+				</view>	 -->
+			</view>
+			<view class="minelists">
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="listd" mode="aspectFit" style="height: 40rpx;"></image>
+					</view>
+					<view class="minelistit">核销记录</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="listf" mode="aspectFit"></image>
+					</view>
+					<view class="minelistit">使用指南</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+				<view class="minelist">
+					<view class="minelista">
+						<image :src="listg" mode="aspectFit"></image>
+					</view>
+					<view class="minelistit">修改密码</view>
+					<image :src="rimg" class="minelistr"></image>
+				</view>
+			</view>
+		</view>
+    <!-- 底部 导航栏  currentPage 当前页面ID -->
+        <tab-bar :currentPage="2"></tab-bar>
+    </view>
+</template>
+
+<script>
+    //导入组件
+    import tabBar from '@/components/tabbar/tabbar.vue'
+    export default {
+        data() {
+            return {
+				padtop:this.$http._GET.customBarH||0,
+				backgroundColor: 'transparent',
+				bgimg:require('@/static/image/minebg.png'),
+				headimg:require('@/static/image/head.png'),
+				mtitimg:require('@/static/image/mtit.png'),
+				rimg:require("@/static/image/rimg.png"),
+				lista:require("@/static/image/mlista.png"),
+				listb:require("@/static/image/mlistb.png"),
+				listc:require("@/static/image/mlistc.png"),
+				listd:require("@/static/image/mlistd.png"),
+				liste:require("@/static/image/mliste.png"),
+				listf:require("@/static/image/mlistf.png"),
+				listg:require("@/static/image/mlistg.png"),
+            };
+        },
+        components:{
+            tabBar
+        },
+        methods: {
+			getTop(e){
+				this.padtop=e;
+			},
+			
+		},
+		onPageScroll(res) {
+			var scrolltop=res.scrollTop;
+			if(scrolltop>0){
+				this.backgroundColor='linear-gradient(60deg, #6A6BF1, #CB4BFA)'
+			}else{
+				this.backgroundColor='transparent'
+			}
+		 },
+    };
+</script>
+<style scoped lang="scss">
+	.mine{min-height: 100vh;background: #f5f5f5;overflow: auto;
+		.minebg{width: 100%;height: 296rpx;}
+		.minebox{
+			padding: 0 34rpx;margin-top: -128rpx;box-sizing: border-box;overflow: hidden;position: relative;
+			.minetop{width: 684rpx;min-height: 166rpx;
+background: #FFFFFF;box-shadow: 4rpx 6rpx 6rpx 0px rgba(91,91,91,0.2);border-radius: 10rpx;margin-bottom: 20rpx;padding: 28rpx 30rpx 24rpx;box-sizing: border-box;margin-bottom: 20rpx;
+				.minetopa{width: 112rpx;height: 114rpx;margin-right: 30rpx;border-radius: 50%;}
+				.minetopt{font-size: 30rpx;font-weight: bold;color: #000000;margin-bottom: 8rpx;}
+				.minetoptx{font-size: 26rpx;color: #666666;display: flex;align-items: center;
+					image{width: 16rpx;height: 26rpx;margin-right: 12rpx;flex: 0 0 auto;}
+				}
+				.minetoptr{font-size: 28rpx;color: #000000;display: flex;align-items: center;
+					image{width: 16rpx;height: 28rpx;margin-left: 18rpx;flex: 0 0 auto;}
+				}
+			}
+			.minelists{width: 100%;border-radius: 10rpx;background-color: #FFFFFF;padding: 4rpx 32rpx;box-sizing: border-box;
+				.minelist{display: flex;align-items: center;padding: 30rpx 0;
+					.minelista{width: 42rpx;height: 42rpx;display: flex;align-items: center;justify-content: center;margin-right: 24rpx;flex: 0 0 auto;
+						image{max-width: 100%;max-height: 100%;}
+					}
+					.minelistit{font-size: 28rpx;color: #000000;flex: 1;}
+					.minelistr{width: 16rpx;height: 28rpx;margin-left: 18rpx;flex: 0 0 auto;}
+				}
+			}
+			
+		
+		
+		}
+	}
+</style>

BIN
qianshancardshang_wx/static/image/bg.png


BIN
qianshancardshang_wx/static/image/del.png


BIN
qianshancardshang_wx/static/image/head.png


BIN
qianshancardshang_wx/static/image/hicon.png


BIN
qianshancardshang_wx/static/image/icon_zt_back.png


BIN
qianshancardshang_wx/static/image/lbg.png


BIN
qianshancardshang_wx/static/image/lista.png


BIN
qianshancardshang_wx/static/image/loginm.png


BIN
qianshancardshang_wx/static/image/loginz.png


BIN
qianshancardshang_wx/static/image/mbg.png


BIN
qianshancardshang_wx/static/image/minebg.png


BIN
qianshancardshang_wx/static/image/mlista.png


BIN
qianshancardshang_wx/static/image/mlistb.png


BIN
qianshancardshang_wx/static/image/mlistc.png


BIN
qianshancardshang_wx/static/image/mlistd.png


BIN
qianshancardshang_wx/static/image/mliste.png


BIN
qianshancardshang_wx/static/image/mlistf.png


BIN
qianshancardshang_wx/static/image/mlistg.png


BIN
qianshancardshang_wx/static/image/mtit.png


BIN
qianshancardshang_wx/static/image/pic_sjhp_bg_hxcz.png


BIN
qianshancardshang_wx/static/image/rimg.png


BIN
qianshancardshang_wx/static/image/search.png


BIN
qianshancardshang_wx/static/image/submit.png


BIN
qianshancardshang_wx/static/image/swipera.png


Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio